Add the tag `hide` or the tag `outlines` to any tiddler to keep it from appearing in the 'simple transclude' view of the references from other tiddlers. Tiddlers with either tag will appear here.
<<list-search
"[!is[system]tag[outlines]] [!is[system]tag[hide]] +[sort[title]]"
"search"
"$:/temp/list-search-example"
"$:/core/ui/ListItemTemplate"
placeholder:"" >>
Tag tiddlers with the tag `sources` if they are book chapters, articles, or webpages. They will appear here and will also appear as references below the tiddlers linked to from them.
<<list-search
"[!is[system]tag[sources]sort[title]]"
"search"
"$:/temp/list-search-example"
"$:/core/ui/ListItemTemplate"
placeholder:"" >>
/*
Viz.js 2.0.0 (Graphviz 2.40.1, Emscripten 1.37.36)
*/
(function(global) {
var Module = function(Module) {
Module = Module || {};
var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename)}return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){process["exit"](1)}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}Module["setWindowTitle"]=(function(title){document.title=title})}Module["print"]=typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null;Module["printErr"]=typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||Module["print"];Module.print=Module["print"];Module.printErr=Module["printErr"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){stackRestore(stack)}return ret}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];type=singleType||types[i];if(type===0){i++;continue}if(type=="i64")type="i32";setValue(ret+i,curr,type);if(previousType!==type){typeSize=getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var PAGE_SIZE=16384;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")");if(Module["buffer"]){buffer=Module["buffer"]}else{{buffer=new ArrayBuffer(TOTAL_MEMORY)}Module["buffer"]=buffer}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw"Runtime error: expected the system to be little-endian!";function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var ASM_CONSTS=[(function($0,$1){var path=Pointer_stringify($0);var data=Pointer_stringify($1);FS.createPath("/",PATH.dirname(path));FS.writeFile(PATH.join("/",path),data)})];function _emscripten_asm_const_iii(code,a0,a1){return ASM_CONSTS[code](a0,a1)}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+176352;__ATINIT__.push();memoryInitializer="data:application/octet-stream;base64,AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkACEAAAAAAAAAAAAAAAABBAWC8AAAgAAAABAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICWQAAAAAAAgJZABJDDAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkAAAAAAAABSQAAgAwIAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABCQAAAAAAAAEJAAAAAAAAgg0AAAAAAAMCIQAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAAEJAAAAAAAAAQkAAAAAAACCDQAAAAAAAwIhAAAAAAAAAUkAAAAAAAABSQACwwQAAAAAAAAAAAAAAEED4NQAAkwAAAAEAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAEAACAAAAAAAAAAAAABBAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAALDBAAAAAAAAAAAAAAAAANQ5AAAQAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQEAgPgMAAAAAAAAAAAAAEEDcOgAAegAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAQAAAAAAAAABAAAAAAAAAAAAAAAAAPA/AQAAAAAAAAACAAAAAAAAAAAAAAAAAPA/AgAAAAAAAAADAAAAAAAAAAAAAAAAAOA/AwAAAAAAAAAEAAAAAAAAAAAAAAAAAPA/BAAAAAAAAAAFAAAAAAAAADMzMzMzM/M/BQAAAAAAAAAGAAAAAAAAAJqZmZmZmek/BgAAAAAAAAAHAAAAAAAAAAAAAAAAAPA/BwAAAAAAAAAIAAAAAAAAAAAAAAAAAOA/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAzMzMzMzPTvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAACARkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAACamZmZmZnZvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMzMzM+M/AAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAAAAAAAAAAB7FK5H4XrkvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiRSAAABAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAACAZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAACAZkCamZmZmZnZvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAAAAAACAZkB7FK5H4XrkvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAACARkAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAABAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAQAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAAABAAAAAAAAAAAAAAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/WKg1zTtO1T8ldQKaCBvaPwAAAAAAAOA/AAAAAAAA4D8s1JrmHafqP2recYqO5Og/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/AAAAAAAA4D9d3EYDeAviPwAAAAAAANA/WKg1zTtO1T8AAAAAAADQP9O84xQdydE/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D/TvOMUHcnRP9O84xQdydE/XdxGA3gL4j9d3EYDeAviP13cRgN4C+I/DXGsi9to3D9kXdxGA3jtP9JvXwfOGec/EHo2qz5X5T8QejarPlflP9JvXwfOGec/eAskKH6M4z+1FfvL7snhP9JvXwfOGec/0m9fB84Z5z9YqDXNO07VP4iFWtO849g/0m9fB84Z5z94CyQofozjP8RCrWnecew/0m9fB84Z5z/Sb18HzhnnP7UV+8vuyeE/0m9fB84Z5z8QejarPlflP7UV+8vuyeE/eAskKH6M4z/Sb18HzhnnP9JvXwfOGec/hjjWxW007j/Sb18HzhnnP9JvXwfOGec/eAskKH6M4z9YqDXNO07VP9O84xQdydE/WKg1zTtO1T+mCkYldQLePwAAAAAAAOA/WKg1zTtO1T8NcayL22jcPwAAAAAAAOA/DXGsi9to3D8AAAAAAADgPw1xrIvbaNw/WKg1zTtO1T8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T/TvOMUHcnRPwAAAAAAAOA/07zjFB3J0T9q3nGKjuToPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/WKg1zTtO1T+IhVrTvOPYP9O84xQdydE/AAAAAAAA4D8AAAAAAADgP9JvXwfOGec/AAAAAAAA4D8AAAAAAADgPw1xrIvbaNw/9GxWfa623j8RNjy9UpbJP/RsVn2utt4/OwFNhA1P4T8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP1ioNc07TtU/AAAAAAAA4D8AAAAAAADgPz7o2az6XMU/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D+Cc0aU9gbHPw1xrIvbaNw/AAAAAAAA4D9YqDXNO07VP1ioNc07TtU/tRX7y+7J4T+1FfvL7snhPwAAAAAAANA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA0D8AAAAAAADQPwfwFkhQ/Nw/orQ3+MJk1j9YqDXNO07VPw1xrIvbaNw/DXGsi9to3D8AAAAAAADgPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADQPw1xrIvbaNw/AAAAAAAA0D9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/AAAAAAAA0D9YqDXNO07VP1ioNc07TtU/AAAAAAAA0D9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T8AAAAAAADwPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/xEKtad5x7D8AAAAAAADQP3/ZPXlYqNE/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D94CyQofozjP9JvXwfOGec/xEKtad5x7D8T8kHPZtXTPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8QejarPlflPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP9O84xQdydE/AAAAAAAA0D8AAAAAAADQP9O84xQdydE/AAAAAAAA4D/Sb18HzhnnPwAAAAAAAOA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8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AQAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAQAAAAFAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABgAAAAEAAAABAAAABwAAAAgAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAEAAAABAAAACwAAAAEAAAAMAAAAAQAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAATAAAAEwAAABMAAAATAAAAFwAAABgAAAAZAAAAEwAAABoAAAAbAAAAHAAAAB0AAAATAAAAEwAAABMAAAATAAAAEwAAAAEAAAAeAAAAAQAAAAEAAAATAAAAAQAAAB8AAAAgAAAAIQAAACIAAAAjAAAAEwAAACQAAAAlAAAAJgAAABMAAAATAAAAEwAAABMAAAAnAAAAKAAAACkAAAATAAAAKgAAACsAAAAsAAAALQAAABMAAAATAAAAEwAAABMAAAATAAAAAQAAAAEAAAABAAAAAQAAAAEAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAC4AAAATAAAAEwAAABMAAAAvAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAA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Na8BACLQ///ZL/8APq8BABla5eXElP8AR68BAHJ4wmbCpf8AUK8BAAub/PyNYv8AWa8BAJxNy42gy/8AYq8BAORm5+eKw/8Aa68BADqb2KbYVP8AdK8BACLQ///ZL/8Afa8BABla5eXElP8Ahq8BAAAAs7Ozs/8Aj68BAHhU043Tx/8Ama8BANNSvbyAvf8ApK8BACpM////s/8Arq8BAK8l2r662v8AuK8BAASL+/uAcv8Awq8BAJBk04Cx0/8AzK8BABac/f20Yv8A1q8BADqG3rPeaf8A4K8BAOkv/PzN5f8A6q8BAAAA2dnZ2f8A9K8BAHhU043Tx/8A/q8BANNSvbyAvf8ACbABAE0p68zrxf8AFLABACpM////s/8AHrABAK8l2r662v8AKLABAASL+/uAcv8AMrABAJBk04Cx0/8APLABABac/f20Yv8ARrABADqG3rPeaf8AULABAOkv/PzN5f8AWrABAAAA2dnZ2f8AZLABAHhU043Tx/8AbrABANNSvbyAvf8AebABAE0p68zrxf8AhLABACWQ///tb/8Aj7ABACpM////s/8AmbABAK8l2r662v8Ao7ABAASL+/uAcv8ArbABAJBk04Cx0/8At7ABABac/f20Yv8AwbABADqG3rPeaf8Ay7ABAOkv/PzN5f8A1bABAAAA2dnZ2f8A37ABAHhU043Tx/8A6LABACpM////s/8A8bABAK8l2r662v8A+rABAHhU043Tx/8AA7EBACpM////s/8ADLEBAK8l2r662v8AFbEBAASL+/uAcv8AHrEBAHhU043Tx/8AJ7EBACpM////s/8AMLEBAK8l2r662v8AObEBAASL+/uAcv8AQrEBAJBk04Cx0/8AS7EBAHhU043Tx/8AVLEBACpM////s/8AXbEBAK8l2r662v8AZrEBAASL+/uAcv8Ab7EBAJBk04Cx0/8AeLEBABac/f20Yv8AgbEBAHhU043Tx/8AirEBACpM////s/8Ak7EBAK8l2r662v8AnLEBAASL+/uAcv8ApbEBAJBk04Cx0/8ArrEBABac/f20Yv8At7EBADqG3rPeaf8AwLEBAHhU043Tx/8AybEBACpM////s/8A0rEBAK8l2r662v8A27EBAASL+/uAcv8A5LEBAJBk04Cx0/8A7bEBABac/f20Yv8A9rEBADqG3rPeaf8A/7EBAOkv/PzN5f8ACLIBAHhU043Tx/8AEbIBACpM////s/8AGrIBAK8l2r662v8AI7IBAASL+/uAcv8ALLIBAJBk04Cx0/8ANbIBABac/f20Yv8APrIBADqG3rPeaf8AR7IBAOkv/PzN5f8AULIBAAAA2dnZ2f8AWbIBAO39np4BQv8AZ7IBALGCol5Pov8AdrIBAPq01dU+T/8AhLIBAAq49PRtQ/8AkrIBABSd/f2uYf8AoLIBAB9z/v7gi/8ArrIBADFg9eb1mP8AvLIBAE9B3avdpP8AyrIBAHJ4wmbCpf8A2LIBAI+7vTKIvf8A5rIBAO39np4BQv8A9LIBAI+7vTKIvf8AA7MBALGCol5Pov8AErMBAPq01dU+T/8AILMBAAq49PRtQ/8ALrMBABSd/f2uYf8APLMBAB9z/v7gi/8ASrMBACpA////v/8AWLMBADFg9eb1mP8AZrMBAE9B3avdpP8AdLMBAHJ4wmbCpf8AgrMBAA2k/PyNWf8Aj7MBACpA////v/8AnLMBAFFN1ZnVlP8AqbMBAP7h19cZHP8AtrMBABSd/f2uYf8Aw7MBAE9B3avdpP8A0LMBAI/EuiuDuv8A3bMBAP7h19cZHP8A6rMBABSd/f2uYf8A97MBACpA////v/8ABLQBAE9B3avdpP8AEbQBAI/EuiuDuv8AHrQBAPq01dU+T/8AK7QBAA2k/PyNWf8AOLQBAB9z/v7gi/8ARbQBADFg9eb1mP8AUrQBAFFN1ZnVlP8AX7QBAI+7vTKIvf8AbLQBAPq01dU+T/8AebQBAA2k/PyNWf8AhrQBAB9z/v7gi/8Ak7QBACpA////v/8AoLQBADFg9eb1mP8ArbQBAFFN1ZnVlP8AurQBAI+7vTKIvf8Ax7QBAPq01dU+T/8A1LQBAAq49PRtQ/8A4bQBABSd/f2uYf8A7rQBAB9z/v7gi/8A+7QBADFg9eb1mP8ACLUBAE9B3avdpP8AFbUBAHJ4wmbCpf8AIrUBAI+7vTKIvf8AL7UBAPq01dU+T/8APLUBAAq49PRtQ/8ASbUBABSd/f2uYf8AVrUBAB9z/v7gi/8AY7UBACpA////v/8AcLUBADFg9eb1mP8AfbUBAE9B3avdpP8AirUBAHJ4wmbCpf8Al7UBAI+7vTKIvf8ApLUBAJMP//D4//8As7UBABgj+vrr1/8AxbUBAH///wD///8Az7UBAHGA/3//1P8A37UBAH8P//D///8A6rUBACoa9fX13P8A9bUBABc6///kxP8AAbYBAAAAAAAAAP8ADLYBABkx///rzf8AILYBAKr//wAA//8AKrYBAMDO4oor4v8AOrYBAAC+paUqKv8ARbYBABdj3t64h/8AVLYBAIBnoF+eoP8AY7YBAD///3//AP8Ac7YBABHa0tJpHv8AgrYBAAuv//9/UP8AjbYBAJqT7WSV7f8AobYBACEi///43P8Ar7YBAPbn3NwUPP8AvLYBAH///wD///8AxrYBAKr/iwAAi/8A1LYBAH//iwCLi/8A4rYBAB7vuLiGC/8A9bYBAAAAqampqf8AA7cBAFX/ZABkAP8AErcBAAAAqampqf8AILcBACduvb23a/8AL7cBANT/i4sAi/8AQLcBADqOa1VrL/8AVLcBABf///+MAP8AZLcBAMbAzJkyzP8AdLcBAAD/i4sAAP8AgbcBAAp56emWev8AkbcBAFU9vI+8j/8Ao7cBAK+Pi0g9i/8AtrcBAH9nTy9PT/8AybcBAH9nTy9PT/8A3LcBAID/0QDO0f8A77cBAMf/05QA0/8A/7cBAOjr//8Uk/8ADbgBAIr//wC///8AHrgBAAAAaWlpaf8AK7gBAAAAaWlpaf8AOLgBAJTh/x6Q//8ASLgBAADOsrIiIv8AV7gBABwP///68P8AaLgBAFXAiyKLIv8AebgBANT///8A//8AhrgBAAAA3Nzc3P8AlbgBAKoH//j4//8ApbgBACP////XAP8Ar7gBAB7Z2tqlIP8AvrgBAAAAgICAgP8AyLgBAFX/gACAAP8A07gBADvQ/63/L/8A5LgBAAAAgICAgP8A7rgBAFUP//D/8P8A/LgBAOmW//9ptP8ACbkBAACMzc1cXP8AGLkBAML/gksAgv8AJLkBACoP////8P8AL7kBACZq8PDmjP8AOrkBAKoU+ubm+v8ASLkBAPAP///w9f8AW7kBAED//Hz8AP8AarkBACYx///6zf8AfLkBAIk/5q3Y5v8Ai7kBAAB38PCAgP8Am7kBAH8f/+D///8AqrkBACoo+vr60v8AxLkBAAAA09PT0/8A07kBAFVk7pDukP8A47kBAAAA09PT0/8A8rkBAPhJ//+2wf8AAboBAAyE//+gev8AEroBAH3RsiCyqv8AJboBAI91+ofO+v8AN7oBAJQ4mXeImf8AS7oBAJQ4mXeImf8AX7oBAJc03rDE3v8Ac7oBACof////4P8AhLoBAFX//wD/AP8AjroBAFXAzTLNMv8AnboBABUU+vrw5v8AqLoBANT///8A//8AtboBAAD/gIAAAP8AwboBAHGAzWbNqv8A17oBAKr/zQAAzf8A57oBAMyY07pV0/8A+boBALd825Nw2/8AC7sBAGepszyzcf8AH7sBALCP7nto7v8ANLsBAG//+gD6mv8AS7sBAH2n0UjRzP8AYLsBAOTkx8cVhf8AdbsBAKrGcBkZcP8Ah7sBAGoJ//X/+v8AlrsBAAQe///k4f8ApbsBABpJ///ktf8As7sBABlR///erf8AxLsBAKr/gAAAgP8AzrsBABsX/f315v8A27sBACr/gICAAP8A5rsBADjAjmuOI/8A9bsBABv///+lAP8AAbwBAAv///9FAP8AELwBANZ72tpw1v8AHLwBACZI7u7oqv8AL7wBAFVk+5j7mP8APrwBAH9D7q/u7v8AUbwBAPF829twk/8AZLwBABop///v1f8AdLwBABRG///auf8Ag7wBABSwzc2FP/8AjbwBAPc////Ay/8Al7wBANRG3d2g3f8AobwBAIQ75rDg5v8AsbwBANT/gIAAgP8AvbwBAAD///8AAP8AxrwBAAA9vLyPj/8A1bwBAJ+14UFp4f8A5LwBABHci4tFE/8A9bwBAASK+vqAcv8AAb0BABOa9PSkYP8AEb0BAGeqiy6LV/8AH70BABEQ///17v8ALb0BAA23oKBSLf8AOb0BAAAAwMDAwP8ARb0BAIts64fO6/8AUr0BAK+PzWpazf8AYb0BAJQ4kHCAkP8AcL0BAJQ4kHCAkP8Af70BAAAF///6+v8Aib0BAGr//wD/f/8Amr0BAJKbtEaCtP8Aqb0BABhU0tK0jP8Asr0BAH//gACAgP8AvL0BANQd2Ni/2P8Ayb0BAAa4//9jR/8A1b0BAHu24EDg0P8A5L0BANRz7u6C7v8A8L0BABtE9fXes/8A+70BAAAA//////8ABr4BAAAA9fX19f8AFr4BACr/////AP8AIr4BADjAzZrNMv8AM74BAC1D/Pf8uf8APL4BAERb3a3djv8ARb4BAGKyozGjVP8ATr4BACoy////zP8AV74BAD5V5sLmmf8A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CQAhACEAIQAVABwAAQAUABQAFAAUABQAFAAUAAgABAAFABsAAgAXABsAIAAfAB4AHQAJABMAAAAVABIAFQADAAcAFQAVABQAFAAUABQAFAAUABQAFAAIAAQABQAFAAYAGwAaABgAGQAgAAcAFQAUABQAFAAUABQAFAALABQADQAUAAwAFAAUABQADgAUABQAFAAQABQADwAUABEAAAAAAAAArgAuAC8AMwA1ADAANwCqANsA2wDbANsAAAA9AIcANwA3ANsA2wAAACgANQAuADIALwBiAAAAAABHAAAAAADbAFEAAADbANsA2wAAANsAhABVANsAggDbAAAAgQDbAAAAPgBCAEEASABEAFIAWwAAAAAAXgBfANsAAADbANsA2wAAAAAAewBJAFcAUgBaAFoAXQAAAF8AAABfAAAAZQBdAF8AAABdAG4AagAAAGkAAABuAAAA2wCTAJoAoQCoAKsAcACxALgAvwDGAM0A0wAAAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAMABAAHAAMABAAFAAUABgAGAAgABwAHABEAFgASABEAEgAIAAgADwAPABcADwAYAA8AGQAaABoAHgAWADQAHgAFADIABgAiACIAMwAXABgANQAZABoAGgAqADYAKgA0ADcAMgBFADsAPAAzADsAPABGADUARwBIAEwANgAiAEkASgA3AEUATgBQAGIAUQBSAFQARgBHAFUASABMAFYASQBKAFgAWgBOAEQAUABRAFIAVAA4AC8ALABVACkAVgAbABAAWABaAF0AXQBdAF0AXQBdAF0AXgBeAF4AXgBeAF4AXgBfAF8AXwBfAF8AXwBfAGAACQBgAGAAYABgAGAAYQBhAGMAAgBjAGMAYwBjAGMAZAAAAGQAAABkAGQAZABlAAAAZQBlAGUAZQBlAGYAZgAAAGYAZgBmAGYAZwAAAGcAZwBnAGcAaAAAAGgAaABoAGgAaABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAAAXAABAF0AXQBeAF4AXwBfAFwAXABcAFwAXABgAFwAXABcAGEAXABcAGIAYgBiAGIAYgBiAGIAYwBkAGUAZgBmAFwAXABnAFwAXABcAGAAXABcAGEAXABhAFwAaABhAFwAYgBiAGIAYgBiAGIAYgBiAGMAZABlAGUAXABmAFwAXABcAGcAaABhAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgAAAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAAACgALAAwADQAOAAoADwAQABEAEgATAAoAFAAVABUAFQAWABcAFQAYABUAFQAZABUAFQAVABoAFQAVAAoAFQAVABUAFgAXABgAFQAVABkAFQAVABUAGgAVABUAFQAVABsADAAMACQAHgAeACAAIQAgACEAJAAlACYALQAyAC8ALgAqACUAJgAoACkAMwAqADQAKwA1ADYANwA8ADIARwA9ACIARQAiAD8AQABGADMANABIADUANgA3AC8ASQAqAEcASgBFAEwAXAA8AEYAXAA9AE0ASABOAE8AUgBJAEEAUABRAEoATABTAFQAMQBVAFYAVwBNAE4AWABPAFIAWQBQAFEAWgBbAFMARABUAFUAVgBXAEsARAAsAFgALABZADgALABaAFsAHQAdAB0AHQAdAB0AHQAfAB8AHwAfAB8AHwAfACMAIwAjACMAIwAjACMAJwBcACcAJwAnACcAJwAwADAAOQAcADkAOQA5ADkAOQA6AFwAOgBcADoAOgA6ADsAXAA7ADsAOwA7ADsAPgA+AFwAPgA+AD4APgBCAFwAQgBCAEIAQgBDAFwAQwBDAEMAQwBDAAkAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwACACu/9EACgCu/67/CwCu/67/rv+u/67/rv+u/67/BQDRAK7/0QDRANEA0QDRANEA0QDRAK7/+/+u/w4A7P+u/67/rv+u/9EA0QDRANEA0QANACUADABCABAAUAATAG0AewAUAJgADwCmAMMArv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/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aXQAJSUlJVBhZ2VPcmllbnRhdGlvbjogJXMKADw8IC9QYWdlU2l6ZSBbJWQgJWRdID4+IHNldHBhZ2VkZXZpY2UKACVkICVkICVkIGJlZ2lucGFnZQoAZ3NhdmUKJWQgJWQgJWQgJWQgYm94cHJpbSBjbGlwIG5ld3BhdGgKACVnICVnIHNldF9zY2FsZSAlZCByb3RhdGUgJWcgJWcgdHJhbnNsYXRlCgBjYW52YXMgc2l6ZSAoJWQsJWQpIGV4Y2VlZHMgUERGIGxpbWl0ICglZCkKCShzdWdnZXN0IHNldHRpbmcgYSBib3VuZGluZyBib3ggc2l6ZSwgc2VlIGRvdCgxKSkKAFsgL0Nyb3BCb3ggWyVkICVkICVkICVkXSAvUEFHRVMgcGRmbWFyawoAJWQgJWQgc2V0bGF5ZXIKACUlJSVUaXRsZTogJXMKACUlUGFnZXM6IChhdGVuZCkKACUlUGFnZXM6IDEKACUlQm91bmRpbmdCb3g6IChhdGVuZCkKACUlJSVCb3VuZGluZ0JveDogJWQgJWQgJWQgJWQKACUlRW5kQ29tbWVudHMKc2F2ZQoAc2V0dXBMYXRpbjEKAFsge0NhdGFsb2d9IDw8IC9VUkkgPDwgL0Jhc2UgJXMgPj4gPj4KL1BVVCBwZGZtYXJrCgAlJUJlZ2luUHJvbG9nAC9Eb3REaWN0IDIwMCBkaWN0IGRlZgBEb3REaWN0IGJlZ2luAC9zZXR1cExhdGluMSB7AG1hcmsAL0VuY29kaW5nVmVjdG9yIDI1NiBhcnJheSBkZWYAIEVuY29kaW5nVmVjdG9yIDAASVNPTGF0aW4xRW5jb2RpbmcgMCAyNTUgZ2V0aW50ZXJ2YWwgcHV0aW50ZXJ2YWwARW5jb2RpbmdWZWN0b3IgNDUgL2h5cGhlbiBwdXQAJSBTZXQgdXAgSVNPIExhdGluIDEgY2hhcmFjdGVyIGVuY29kaW5nAC9zdGFybmV0SVNPIHsAICAgICAgICBkdXAgZHVwIGZpbmRmb250IGR1cCBsZW5ndGggZGljdCBiZWdpbgAgICAgICAgIHsgMSBpbmRleCAvRklEIG5lIHsgZGVmIH17IHBvcCBwb3AgfSBpZmVsc2UAICAgICAgICB9IGZvcmFsbAAgICAgICAgIC9FbmNvZGluZyBFbmNvZGluZ1ZlY3RvciBkZWYAICAgICAgICBjdXJyZW50ZGljdCBlbmQgZGVmaW5lZm9udAB9IGRlZgAvVGltZXMtUm9tYW4gc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUl0YWxpYyBzdGFybmV0SVNPIGRlZgAvVGltZXMtQm9sZCBzdGFybmV0SVNPIGRlZgAvVGltZXMtQm9sZEl0YWxpYyBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhIHN0YXJuZXRJU08gZGVmAC9IZWx2ZXRpY2EtT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhLUJvbGQgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYS1Cb2xkT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvQ291cmllciBzdGFybmV0SVNPIGRlZgAvQ291cmllci1PYmxpcXVlIHN0YXJuZXRJU08gZGVmAC9Db3VyaWVyLUJvbGQgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXItQm9sZE9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAY2xlYXJ0b21hcmsAfSBiaW5kIGRlZgAlJUJlZ2luUmVzb3VyY2U6IHByb2NzZXQgZ3JhcGh2aXogMCAwAC9jb29yZC1mb250LWZhbWlseSAvVGltZXMtUm9tYW4gZGVmAC9kZWZhdWx0LWZvbnQtZmFtaWx5IC9UaW1lcy1Sb21hbiBkZWYAL2Nvb3JkZm9udCBjb29yZC1mb250LWZhbWlseSBmaW5kZm9udCA4IHNjYWxlZm9udCBkZWYAL0ludlNjYWxlRmFjdG9yIDEuMCBkZWYAL3NldF9zY2FsZSB7ACAgICAgICBkdXAgMSBleGNoIGRpdiAvSW52U2NhbGVGYWN0b3IgZXhjaCBkZWYAICAgICAgIHNjYWxlACUgc3R5bGVzAC9zb2xpZCB7IFtdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9kYXNoZWQgeyBbOSBJbnZTY2FsZUZhY3RvciBtdWwgZHVwIF0gMCBzZXRkYXNoIH0gYmluZCBkZWYAL2RvdHRlZCB7IFsxIEludlNjYWxlRmFjdG9yIG11bCA2IEludlNjYWxlRmFjdG9yIG11bF0gMCBzZXRkYXNoIH0gYmluZCBkZWYAL2ludmlzIHsvZmlsbCB7bmV3cGF0aH0gZGVmIC9zdHJva2Uge25ld3BhdGh9IGRlZiAvc2hvdyB7cG9wIG5ld3BhdGh9IGRlZn0gYmluZCBkZWYAL2JvbGQgeyAyIHNldGxpbmV3aWR0aCB9IGJpbmQgZGVmAC9maWxsZWQgeyB9IGJpbmQgZGVmAC91bmZpbGxlZCB7IH0gYmluZCBkZWYAL3JvdW5kZWQgeyB9IGJpbmQgZGVmAC9kaWFnb25hbHMgeyB9IGJpbmQgZGVmAC90YXBlcmVkIHsgfSBiaW5kIGRlZgAlIGhvb2tzIGZvciBzZXR0aW5nIGNvbG9yIAAvbm9kZWNvbG9yIHsgc2V0aHNiY29sb3IgfSBiaW5kIGRlZgAvZWRnZWNvbG9yIHsgc2V0aHNiY29sb3IgfSBiaW5kIGRlZgAvZ3JhcGhjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL25vcGNvbG9yIHtwb3AgcG9wIHBvcH0gYmluZCBkZWYAL2JlZ2lucGFnZSB7CSUgaSBqIG5wYWdlcwAJL25wYWdlcyBleGNoIGRlZgAJL2ogZXhjaCBkZWYACS9pIGV4Y2ggZGVmAAkvc3RyIDEwIHN0cmluZyBkZWYACW5wYWdlcyAxIGd0IHsACQlnc2F2ZQAJCQljb29yZGZvbnQgc2V0Zm9udAAJCQkwIDAgbW92ZXRvAAkJCShcKCkgc2hvdyBpIHN0ciBjdnMgc2hvdyAoLCkgc2hvdyBqIHN0ciBjdnMgc2hvdyAoXCkpIHNob3cACQlncmVzdG9yZQAJfSBpZgAvc2V0X2ZvbnQgewAJZmluZGZvbnQgZXhjaAAJc2NhbGVmb250IHNldGZvbnQAJSBkcmF3IHRleHQgZml0dGVkIHRvIGl0cyBleHBlY3RlZCB3aWR0aAAvYWxpZ25lZHRleHQgewkJCSUgd2lkdGggdGV4dAAJL3RleHQgZXhjaCBkZWYACS93aWR0aCBleGNoIGRlZgAJZ3NhdmUACQl3aWR0aCAwIGd0IHsACQkJW10gMCBzZXRkYXNoAAkJCXRleHQgc3RyaW5nd2lkdGggcG9wIHdpZHRoIGV4Y2ggc3ViIHRleHQgbGVuZ3RoIGRpdiAwIHRleHQgYXNob3cACQl9IGlmAAlncmVzdG9yZQAvYm94cHJpbSB7CQkJCSUgeGNvcm5lciB5Y29ybmVyIHhzaXplIHlzaXplAAkJNCAyIHJvbGwACQltb3ZldG8ACQkyIGNvcHkACQlleGNoIDAgcmxpbmV0bwAJCTAgZXhjaCBybGluZXRvAAkJcG9wIG5lZyAwIHJsaW5ldG8ACQljbG9zZXBhdGgAL2VsbGlwc2VfcGF0aCB7AAkvcnkgZXhjaCBkZWYACS9yeCBleGNoIGRlZgAJL3kgZXhjaCBkZWYACS94IGV4Y2ggZGVmAAltYXRyaXggY3VycmVudG1hdHJpeAAJbmV3cGF0aAAJeCB5IHRyYW5zbGF0ZQAJcnggcnkgc2NhbGUACTAgMCAxIDAgMzYwIGFyYwAJc2V0bWF0cml4AC9lbmRwYWdlIHsgc2hvd3BhZ2UgfSBiaW5kIGRlZgAvc2hvd3BhZ2UgeyB9IGRlZgAvbGF5ZXJjb2xvcnNlcQAJWwklIGxheWVyIGNvbG9yIHNlcXVlbmNlIC0gZGFya2VzdCB0byBsaWdodGVzdAAJCVswIDAgMF0ACQlbLjIgLjggLjhdAAkJWy40IC44IC44XQAJCVsuNiAuOCAuOF0ACQlbLjggLjggLjhdAAldAGRlZgAvbGF5ZXJsZW4gbGF5ZXJjb2xvcnNlcSBsZW5ndGggZGVmAC9zZXRsYXllciB7L21heGxheWVyIGV4Y2ggZGVmIC9jdXJsYXllciBleGNoIGRlZgAJbGF5ZXJjb2xvcnNlcSBjdXJsYXllciAxIHN1YiBsYXllcmxlbiBtb2QgZ2V0AAlhbG9hZCBwb3Agc2V0aHNiY29sb3IACS9ub2RlY29sb3Ige25vcGNvbG9yfSBkZWYACS9lZGdlY29sb3Ige25vcGNvbG9yfSBkZWYACS9ncmFwaGNvbG9yIHtub3Bjb2xvcn0gZGVmAC9vbmxheWVyIHsgY3VybGF5ZXIgbmUge2ludmlzfSBpZiB9IGRlZgAvb25sYXllcnMgewAJL215dXBwZXIgZXhjaCBkZWYACS9teWxvd2VyIGV4Y2ggZGVmAAljdXJsYXllciBteWxvd2VyIGx0AAljdXJsYXllciBteXVwcGVyIGd0AAlvcgAJe2ludmlzfSBpZgAvY3VybGF5ZXIgMCBkZWYAJSVFbmRSZXNvdXJjZQAlJUVuZFByb2xvZwAlJUJlZ2luU2V0dXAAMTQgZGVmYXVsdC1mb250LWZhbWlseSBzZXRfZm9udAAlIC9hcnJvd2xlbmd0aCAxMCBkZWYAJSAvYXJyb3d3aWR0aCA1IGRlZgAlIG1ha2Ugc3VyZSBwZGZtYXJrIGlzIGhhcm1sZXNzIGZvciBQUy1pbnRlcnByZXRlcnMgb3RoZXIgdGhhbiBEaXN0aWxsZXIAL3BkZm1hcmsgd2hlcmUge3BvcH0ge3VzZXJkaWN0IC9wZGZtYXJrIC9jbGVhcnRvbWFyayBsb2FkIHB1dH0gaWZlbHNlACUgbWFrZSAnPDwnIGFuZCAnPj4nIHNhZmUgb24gUFMgTGV2ZWwgMSBkZXZpY2VzAC9sYW5ndWFnZWxldmVsIHdoZXJlIHtwb3AgbGFuZ3VhZ2VsZXZlbH17MX0gaWZlbHNlADIgbHQgewAgICAgdXNlcmRpY3QgKDw8KSBjdm4gKFspIGN2biBsb2FkIHB1dAAgICAgdXNlcmRpY3QgKD4+KSBjdm4gKFspIGN2biBsb2FkIHB1dAB9IGlmACUlRW5kU2V0dXAAJSVUcmFpbGVyCgAlJSUlUGFnZXM6ICVkCgBlbmQKcmVzdG9yZQoAJSVFT0YKACUhUFMtQWRvYmUtMy4wACBFUFNGLTMuMAoAJSUlJUNyZWF0b3I6ICVzIHZlcnNpb24gJXMgKCVzKQoAcHMyOnBzADwhLS0gADxwb2x5bGluZQAgcG9pbnRzPSIAIi8+CgAgZmlsbD0iAHVybCgjbF8lZCkAdXJsKCNyXyVkKQAiIGZpbGwtb3BhY2l0eT0iJWYAIiBzdHJva2U9IgAiIHN0cm9rZS13aWR0aD0iACIgc3Ryb2tlLWRhc2hhcnJheT0iJXMANSwyADEsNQAiIHN0cm9rZS1vcGFjaXR5PSIlZgBndnJlbmRlcl9jb3JlX3N2Zy5jAHN2Z19wcmludF9jb2xvcgA8cGF0aAAgaWQ9IgBfcCIgACBkPSIAJWMAPGRlZnM+CjxyYWRpYWxHcmFkaWVudCBpZD0icl8lZCIgY3g9IjUwJSUiIGN5PSI1MCUlIiByPSI3NSUlIiBmeD0iJWQlJSIgZnk9IiVkJSUiPgoAPHN0b3Agb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjoAO3N0b3Atb3BhY2l0eToAMS4AOyIvPgoAPHN0b3Agb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjoAOyIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8L2RlZnM+CgA8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJsXyVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgAHgxPSIAIiB5MT0iACIgeDI9IgAiIHkyPSIAIiA+CgA8c3RvcCBvZmZzZXQ9IiUuMDNmIiBzdHlsZT0ic3RvcC1jb2xvcjoAOyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+CgA8cG9seWdvbgA8ZWxsaXBzZQAgY3g9IgAiIGN5PSIAIiByeD0iACIgcnk9IgA8dGV4dAAgdGV4dC1hbmNob3I9InN0YXJ0IgAgdGV4dC1hbmNob3I9ImVuZCIAIHRleHQtYW5jaG9yPSJtaWRkbGUiACB4PSIAIiB5PSIAIGZvbnQtZmFtaWx5PSIlcwAsJXMAIGZvbnQtd2VpZ2h0PSIlcyIAIGZvbnQtc3RyZXRjaD0iJXMiACBmb250LXN0eWxlPSIlcyIAIGZvbnQtZmFtaWx5PSIlcyIAIGZvbnQtd2VpZ2h0PSJib2xkIgAgZm9udC1zdHlsZT0iaXRhbGljIgAgdGV4dC1kZWNvcmF0aW9uPSIAJXNvdmVybGluZQAlc2xpbmUtdGhyb3VnaAAgYmFzZWxpbmUtc2hpZnQ9InN1cGVyIgAgYmFzZWxpbmUtc2hpZnQ9InN1YiIAIGZvbnQtc2l6ZT0iJS4yZiIAIGZpbGw9IiVzIgAgZmlsbD0iIyUwMnglMDJ4JTAyeCIAc3ZnX3RleHRzcGFuAD4APHRleHRQYXRoIHhsaW5rOmhyZWY9IiMlc19wIiBzdGFydE9mZnNldD0iNTAlJSI+ADx0c3BhbiB4PSIwIiBkeT0iACI+ADwvdHNwYW4+PC90ZXh0UGF0aD4APC90ZXh0PgoAPC9nPgoAPGcAIGlkPSJhXwAgeGxpbms6aHJlZj0iACB4bGluazp0aXRsZT0iACB0YXJnZXQ9IgA8dGl0bGU+ADwvdGl0bGU+CgA8ZyBpZD0iAF8lcwAiIGNsYXNzPSIlcwBjbGFzcwAgdHJhbnNmb3JtPSJzY2FsZSgAKSByb3RhdGUoJWQpIHRyYW5zbGF0ZSgAKSI+CgA8L3N2Zz4KADwhLS0AIFBhZ2VzOiAlZCAtLT4KADxzdmcgd2lkdGg9IiVkcHQiIGhlaWdodD0iJWRwdCIKACB2aWV3Qm94PSIlLjJmICUuMmYgJS4yZiAlLjJmIgAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PgoAc3R5bGVzaGVldAA8P3htbC1zdHlsZXNoZWV0IGhyZWY9IgAiIHR5cGU9InRleHQvY3NzIj8+CgA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iCgAgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CgA8IS0tIEdlbmVyYXRlZCBieSAAZGFya2JsdWUAZGFya2N5YW4AZGFya2dyYXkAZGFya2dyZXkAZGFya21hZ2VudGEAZGFya3JlZABsaWdodGdyZWVuACMgACBjcmVhdGUgbGluZSAAIC1maWxsIAAgLWRhc2ggNQAgLWRhc2ggMgBndnJlbmRlcl9jb3JlX3RrLmMAdGtnZW5fcHJpbnRfdGFncwBncmFwaCBsYWJlbAAgLXRhZ3MgeyVkJXMlcH0AdGtnZW5fcHJpbnRfY29sb3IAJGMAIC13aWR0aCAAIC1zbW9vdGggYmV6aWVyIAAgY3JlYXRlIHBvbHlnb24gACAtb3V0bGluZSAAIGNyZWF0ZSBvdmFsIAAgY3JlYXRlIHRleHQgACAtdGV4dCB7AH0AIC1mb250IHsAICVkfQAgLWFuY2hvciB3ACAtYW5jaG9yIGUAIwAgVGl0bGU6IAAgUGFnZXM6ICVkCgAjIEdlbmVyYXRlZCBieSAAKQoAdGsAdGs6dGsAICAgICAgPCEtLSAAIC0tPgoARXJyb3IgZHVyaW5nIGNvbnZlcnNpb24gdG8gIlVURi04Ii4gIFF1aXRpbmcuCgAgPHY6c2hhcGUgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyAAIHdpZHRoOiAlZDsgaGVpZ2h0OiAlZCIgZmlsbGVkPSJmYWxzZSI+ADx2OnBhdGggdj0iACBtIAAlLjBmLCUuMGYgACBsIAAgZSAAIi8+ADwvdjpzaGFwZT4KADx2OnN0cm9rZSBjb2xvcj0iACIgd2VpZ2h0PSIlLjBmcHQAIiBkYXNoc3R5bGU9ImRhc2gAIiBkYXNoc3R5bGU9ImRvdAAiIC8+ACMlMDJ4JTAyeCUwMngAZ3ZyZW5kZXJfY29yZV92bWwuYwB2bWxfcHJpbnRfY29sb3IAIHdpZHRoOiAlZDsgaGVpZ2h0OiAlZCIAID4APHY6cGF0aCAgdj0iAC8+PC92OnNoYXBlPgoAbSAAJXMlLjBmLCUuMGYgAGMgACBmaWxsZWQ9InRydWUiIGZpbGxjb2xvcj0iACIgACBmaWxsZWQ9ImZhbHNlIiAAJS4wZiAlLjBmIABsIAB4IGUgIi8+ACAgPHY6b3ZhbCBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7ACBsZWZ0OiAlLjJmOyB0b3A6ICUuMmY7ACB3aWR0aDogJS4yZjsgaGVpZ2h0OiAlLjJmIgA8L3Y6b3ZhbD4KADx2OnJlY3Qgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyAAIHN0cm9rZWQ9ImZhbHNlIiBmaWxsZWQ9ImZhbHNlIj4KADx2OnRleHRib3ggaW5zZXQ9IjAsMCwwLDAiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdi10ZXh0LXdyYXBwaW5nOidmYWxzZSc7cGFkZGluZzonMCc7AGZvbnQtZmFtaWx5OiAnJXMnOwBmb250LXdlaWdodDogJXM7AGZvbnQtc3RyZXRjaDogJXM7AGZvbnQtc3R5bGU6ICVzOwAgZm9udC1zaXplOiAlLjJmcHQ7AGNvbG9yOiVzOwBjb2xvcjojJTAyeCUwMnglMDJ4OwB2bWxfdGV4dHNwYW4AIj48Y2VudGVyPgA8L2NlbnRlcj48L3Y6dGV4dGJveD4KADwvdjpyZWN0PgoAPC9hPgoAPGEAIGhyZWY9IiVzIgAgdGl0bGU9IiVzIgAgdGFyZ2V0PSIlcyIAPgoAPC92Omdyb3VwPgoAPC9ESVY+CgA8RElWIGlkPSdfVk1MMl8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTt2aXNpYmlsaXR5OmhpZGRlbiI+CgA8IS0tIGluc2VydCBhbnkgb3RoZXIgaHRtbCBjb250ZW50IGhlcmUgLS0+CgA8RElWIGlkPSdfbm90Vk1MMV8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgoAPCEtLSB0aGlzIHNob3VsZCBvbmx5IGRpc3BsYXkgb24gTk9OLUlFIGJyb3dzZXJzIC0tPgoAPEgyPlNvcnJ5LCB0aGlzIGRpYWdyYW0gd2lsbCBvbmx5IGRpc3BsYXkgY29ycmVjdGx5IG9uIEludGVybmV0IEV4cGxvcmVyIDUgKGFuZCB1cCkgYnJvd3NlcnMuPC9IMj4KADxESVYgaWQ9J19ub3RWTUwyXycgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyI+CgA8IS0tIGluc2VydCBhbnkgb3RoZXIgTk9OLUlFIGh0bWwgY29udGVudCBoZXJlIC0tPgoAPC9CT0RZPgo8L0hUTUw+CgA8SEVBRD4APE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgoAPFRJVExFPgA8L1RJVExFPgA8IS0tIFBhZ2VzOiAlZCAtLT4KACAgIDxTQ1JJUFQgTEFOR1VBR0U9J0phdmFzY3JpcHQnPgoAICAgZnVuY3Rpb24gYnJvd3NlcmNoZWNrKCkKACAgIHsKACAgICAgIHZhciB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50CgAgICAgICB2YXIgbXNpZSA9IHVhLmluZGV4T2YgKCAnTVNJRSAnICkKACAgICAgIHZhciBpZXZlcnM7CgAgICAgICB2YXIgaXRlbTsKACAgICAgIHZhciBWTUx5ZXM9bmV3IEFycmF5KCdfVk1MMV8nLCdfVk1MMl8nKTsKACAgICAgIHZhciBWTUxubz1uZXcgQXJyYXkoJ19ub3RWTUwxXycsJ19ub3RWTUwyXycpOwoAICAgICAgaWYgKCBtc2llID4gMCApeyAgICAgIC8vIElmIEludGVybmV0IEV4cGxvcmVyLCByZXR1cm4gdmVyc2lvbiBudW1iZXIKACAgICAgICAgIGlldmVycz0gcGFyc2VJbnQgKHVhLnN1YnN0cmluZyAobXNpZSs1LCB1YS5pbmRl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bGUgMTAwMDAKfQovL21pc3QKZm9nIHsgZm9nX3R5cGUgMgogICAgZGlzdGFuY2UgNTAKICAgIGNvbG9yIHJnYiA8MS4wMCwgMS4wMCwgMS4wMD4gKiAwLjc1CiAgICBmb2dfb2Zmc2V0IDAuMTAKICAgIGZvZ19hbHQgMS41MAogICAgdHVyYnVsZW5jZSAxLjc1Cn0KLy9nbmQKcGxhbmUgeyA8MC4wMCwgMS4wMCwgMC4wMD4sIDAKICAgIHRleHR1cmUgewogICAgICAgIHBpZ21lbnR7IGNvbG9yIHJnYiA8MC4yNSwgMC40NSwgMC4wMD4gfQogICAgICAgIG5vcm1hbCB7IGJ1bXBzIDAuNzUgc2NhbGUgMC4wMSB9CiAgICAgICAgZmluaXNoIHsgcGhvbmcgMC4xMCB9CiAgICB9Cn0KAGxpZ2h0X3NvdXJjZSB7IDwxNTAwLDMwMDAsLTI1MDA+IGNvbG9yIFdoaXRlIH0KACN2ZXJzaW9uIDMuNjsKAGdsb2JhbF9zZXR0aW5ncyB7IGFzc3VtZWRfZ2FtbWEgMS4wIH0KACNkZWZhdWx0IHsgZmluaXNoIHsgYW1iaWVudCAwLjEgZGlmZnVzZSAwLjkgfSB9CgAjaW5jbHVkZSAiY29sb3JzLmluYyIKI2luY2x1ZGUgInRleHR1cmVzLmluYyIKI2luY2x1ZGUgInNoYXBlcy5pbmMiCgAjZGVjbGFyZSAlcyA9ICVzOwoAQmxhY2sAV2hpdGUAYmFrZXJzY2hvYwBicmFzcwBicmlnaHRnb2xkAGJyb256ZQBicm9uemUyAGNsZWFyAGNvb2xjb3BwZXIAY29wcGVyAGRhcmticm93bgBkYXJrcHVycGxlAGRhcmt0YW4AZGFya3dvb2QAZGtncmVlbmNvcHBlcgBkdXN0eXJvc2UAZmVsZHNwYXIAZmxlc2gAZ3JheTA1AGdyZWVuY29wcGVyAGh1bnRlcnNncmVlbgBsaWdodF9wdXJwbGUAbGlnaHR3b29kAG1hbmRhcmlub3JhbmdlAG1lZGl1bWZvcmVzdGdyZWVuAG1lZGl1bWdvbGRlbnJvZABtZWRpdW13b29kAG1lZF9wdXJwbGUAbWljYQBuZW9uYmx1ZQBuZW9ucGluawBuZXdtaWRuaWdodGJsdWUAbmV3dGFuAG9sZGdvbGQAcXVhcnR6AHJpY2hibHVlAHNjYXJsZXQAc2VtaVN3ZWV0Q2hvYwBzaWx2ZXIAc3BpY3lwaW5rAHN1bW1lcnNreQB2ZXJ5ZGFya2Jyb3duAHZlcnlfbGlnaHRfcHVycGxlAHBvdgBwb3Y6cG92ACVzICVzCgAuXCIgACAlZCAlZAAgJXMKACAlZABmaWxsIABlbGxpcHNlIGF0dHJzJWQgJXN3aWQgJS41ZiBodCAlLjVmIGF0ICglLjVmLCUuNWYpOwoALmZ0ICVzCgAucHMgJWQqXG4oU0Z1LyUuMGZ1CgAiJXMiIGF0ICglLjVmLCUuNWYpOwoAJTAzbwAlcyVzIGlzIG5vdCBhIHRyb2ZmIGZvbnQKAGRvdCBwaWMgcGx1Z2luOiAAUgBdCi5QRQoALlBTICUuNWYgJS41ZgoAJXMgdG8gY2hhbmdlIGRyYXdpbmcgc2l6ZSwgbXVsdGlwbHkgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb24gdGhlIC5QUyBsaW5lIGFib3ZlIGFuZCB0aGUgbnVtYmVyIG9uIHRoZSB0d28gbGluZXMgYmVsb3cgKHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcikgYnkgYSBzY2FsZSBmYWN0b3IKAC5uciBTRiAlLjBmCnNjYWxldGhpY2tuZXNzID0gJS4wZgoAJXMgZG9uJ3QgY2hhbmdlIGFueXRoaW5nIGJlbG93IHRoaXMgbGluZSBpbiB0aGlzIGRyYXdpbmcKACVzIG5vbi1mYXRhbCBydW4tdGltZSBwaWMgdmVyc2lvbiBkZXRlcm1pbmF0aW9uLCB2ZXJzaW9uIDIKAGJveHJhZD0yLjAgJXMgd2lsbCBiZSByZXNldCB0byAwLjAgYnkgZ3BpYyBvbmx5CgBzY2FsZT0xLjAgJXMgcmVxdWlyZWQgZm9yIGNvbXBhcmlzb25zCgAlcyBib3hyYWQgaXMgbm93IDAuMCBpbiBncGljLCBlbHNlIGl0IHJlbWFpbnMgMi4wCgAlcyBkYXNod2lkIGlzIDAuMSBpbiAxMHRoIEVkaXRpb24sIDAuMDUgaW4gRFdCIDIgYW5kIGluIGdwaWMKACVzIGZpbGx2YWwgaXMgMC4zIGluIDEwdGggRWRpdGlvbiAoZmlsbCAwIG1lYW5zIGJsYWNrKSwgMC41IGluIGdwaWMgKGZpbGwgMCBtZWFucyB3aGl0ZSksIHVuZGVmaW5lZCBpbiBEV0IgMgoAJXMgZmlsbCBoYXMgbm8gbWVhbmluZyBpbiBEV0IgMiwgZ3BpYyBjYW4gdXNlIGZpbGwgb3IgZmlsbGVkLCAxMHRoIEVkaXRpb24gdXNlcyBmaWxsIG9ubHkKACVzIERXQiAyIGRvZXNuJ3QgdXNlIGZpbGwgYW5kIGRvZXNuJ3QgZGVmaW5lIGZpbGx2YWwKACVzIHJlc2V0IHdvcmtzIGluIGdwaWMgYW5kIDEwdGggZWRpdGlvbiwgYnV0IGlzbid0IGRlZmluZWQgaW4gRFdCIDIKACVzIERXQiAyIGNvbXBhdGliaWxpdHkgZGVmaW5pdGlvbnMKAGlmIGJveHJhZCA+IDEuMCAmJiBkYXNod2lkIDwgMC4wNzUgdGhlbiBYCglmaWxsdmFsID0gMTsKCWRlZmluZSBmaWxsIFkgWTsKCWRlZmluZSBzb2xpZCBZIFk7CglkZWZpbmUgcmVzZXQgWSBzY2FsZT0xLjAgWTsKWAoAcmVzZXQgJXMgc2V0IHRvIGtub3duIHN0YXRlCgAlcyBHTlUgcGljIHZzLiAxMHRoIEVkaXRpb24gZFwoZSd0ZW50ZQoAaWYgZmlsbHZhbCA+IDAuNCB0aGVuIFgKCWRlZmluZSBzZXRmaWxsdmFsIFkgZmlsbHZhbCA9IDEgLSBZOwoJZGVmaW5lIGJvbGQgWSB0aGlja25lc3MgMiBZOwoACSVzIGlmIHlvdSB1c2UgZ3BpYyBhbmQgaXQgYmFyZnMgb24gZW5jb3VudGVyaW5nICJzb2xpZCIsCgAJJXMJaW5zdGFsbCBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgZ3BpYyBvciBzd2l0Y2ggdG8gRFdCIG9yIDEwdGggRWRpdGlvbiBwaWM7CgAJJXMJc29ycnksIHRoZSBncm9mZiBmb2xrcyBjaGFuZ2VkIGdwaWM7IHNlbmQgYW55IGNvbXBsYWludCB0byB0aGVtOwoAWCBlbHNlIFoKCWRlZmluZSBzZXRmaWxsdmFsIFkgZmlsbHZhbCA9IFk7CglkZWZpbmUgYm9sZCBZIFk7CglkZWZpbmUgZmlsbGVkIFkgZmlsbCBZOwpaCgAlcyBhcnJvd2hlYWQgaGFzIG5vIG1lYW5pbmcgaW4gRFdCIDIsIGFycm93aGVhZCA9IDcgbWFrZXMgZmlsbGVkIGFycm93aGVhZHMgaW4gZ3BpYyBhbmQgaW4gMTB0aCBFZGl0aW9uCgAlcyBhcnJvd2hlYWQgaXMgdW5kZWZpbmVkIGluIERXQiAyLCBpbml0aWFsbHkgMSBpbiBncGljLCAyIGluIDEwdGggRWRpdGlvbgoAYXJyb3doZWFkID0gNyAlcyBub3QgdXNlZCBieSBncmFwaHZpegoAJXMgR05VIHBpYyBzdXBwb3J0cyBhIGJveHJhZCB2YXJpYWJsZSB0byBkcmF3IGJveGVzIHdpdGggcm91bmRlZCBjb3JuZXJzOyBEV0IgYW5kIDEwdGggRWQuIGRvIG5vdAoAYm94cmFkID0gMCAlcyBubyByb3VuZGVkIGNvcm5lcnMgaW4gZ3JhcGh2aXoKACVzIEdOVSBwaWMgc3VwcG9ydHMgYSBsaW5ldGhpY2sgdmFyaWFibGUgdG8gc2V0IGxpbmUgdGhpY2tuZXNzOyBEV0IgYW5kIDEwdGggRWQuIGRvIG5vdAoAbGluZXRoaWNrID0gMDsgb2xkbGluZXRoaWNrID0gbGluZXRoaWNrCgAlcyAuUFMgdy9vIGFyZ3MgY2F1c2VzIEdOVSBwaWMgdG8gc2NhbGUgZHJhd2luZyB0byBmaXQgOC41eDExIHBhcGVyOyBEV0IgZG9lcyBub3QKACVzIG1heHBzaHQgYW5kIG1heHBzd2lkIGhhdmUgbm8gbWVhbmluZyBpbiBEV0IgMi4wLCBzZXQgcGFnZSBib3VuZGFyaWVzIGluIGdwaWMgYW5kIGluIDEwdGggRWRpdGlvbgoAJXMgbWF4cHNodCBhbmQgbWF4cHN3aWQgYXJlIHByZWRlZmluZWQgdG8gMTEuMCBhbmQgOC41IGluIGdwaWMKAG1heHBzaHQgPSAlZgptYXhwc3dpZCA9ICVmCgBEb3Q6IFsKAGRlZmluZSBhdHRyczAgJSUgJSU7IGRlZmluZSB1bmZpbGxlZCAlJSAlJTsgZGVmaW5lIHJvdW5kZWQgJSUgJSU7IGRlZmluZSBkaWFnb25hbHMgJSUgJSUKACVzJXMgdW5zdXBwb3J0ZWQKAHJvdGF0aW9uACVzIHJlc3RvcmUgcG9pbnQgc2l6ZSBhbmQgZm9udAoucHMgXG4oLlMKLmZ0IFxuKERGCgAlcyBDcmVhdG9yOiAlcyB2ZXJzaW9uICVzICglcykKACVzIFRpdGxlOiAlcwoAJXMgc2F2ZSBwb2ludCBzaXplIGFuZCBmb250Ci5uciAuUyBcbigucwoubnIgREYgXG4oLmYKAHBpYwBwaWM6cGljAHBuZzpzdmcAZ2lmOnN2ZwBqcGVnOnN2ZwBqcGU6c3ZnAGpwZzpzdmcAcG5nOmZpZwBnaWY6ZmlnAGpwZWc6ZmlnAGpwZTpmaWcAanBnOmZpZwBwbmc6dnJtbABnaWY6dnJtbABqcGVnOnZybWwAanBlOnZybWwAanBnOnZybWwAZXBzOnBzAHBzOnBzAChsaWIpOnBzAHBuZzptYXAAZ2lmOm1hcABqcGVnOm1hcABqcGU6bWFwAGpwZzptYXAAcHM6bWFwAGVwczptYXAAc3ZnOm1hcABwbmc6ZG90AGdpZjpkb3QAanBlZzpkb3QAanBlOmRvdABqcGc6ZG90AHBzOmRvdABlcHM6ZG90AHN2Zzpkb3QAcG5nOnhkb3QAZ2lmOnhkb3QAanBlZzp4ZG90AGpwZTp4ZG90AGpwZzp4ZG90AHBzOnhkb3QAZXBzOnhkb3QAc3ZnOnhkb3QAc3ZnOnN2ZwBwbmc6dm1sAGdpZjp2bWwAanBlZzp2bWwAanBlOnZtbABqcGc6dm1sAGdpZjp0awBpbWFnZSBjcmVhdGUgcGhvdG8gInBob3RvXyVzIiAtZmlsZSAiJXMiCgAkYyBjcmVhdGUgaW1hZ2UgJS4yZiAlLjJmIC1pbWFnZSAicGhvdG9fJXMiCgA8djppbWFnZSBzcmM9IiVzIiBzdHlsZT0iIHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDolLjJmOyBoZWlnaHQ6JS4yZjsgbGVmdDolLjJmIDsgdG9wOiUuMmYiACAvPgoAZ3Zsb2FkaW1hZ2VfY29yZS5jAGNvcmVfbG9hZGltYWdlX3BzbGliAFsgACVnICVnIABdICAlZCB0cnVlICVzCgBdICAlZCBmYWxzZSAlcwoAY29yZV9sb2FkaW1hZ2VfcHMAZ3NhdmUgJWcgJWcgdHJhbnNsYXRlIG5ld3BhdGgKAHVzZXJfc2hhcGVfJWQKAGdyZXN0b3JlCgBjb3JlX2xvYWRpbWFnZV92cm1sAFNoYXBlIHsKACAgYXBwZWFyYW5jZSBBcHBlYXJhbmNlIHsKACAgICBtYXRlcmlhbCBNYXRlcmlhbCB7CgAgICAgICBhbWJpZW50SW50ZW5zaXR5IDAuMzMKACAgICAgICAgZGlmZnVzZUNvbG9yIDEgMSAxCgAgICAgfQoAICAgIHRleHR1cmUgSW1hZ2VUZXh0dXJlIHsgdXJsICIlcyIgfQoAICB9CgBjb3JlX2xvYWRpbWFnZV9maWcAJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJS4xZiAlZCAlZCAlZCAlZCAlZCAlZAogJWQgJXMKACAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZAoAY29yZV9sb2FkaW1hZ2Vfc3ZnADxpbWFnZSB4bGluazpocmVmPSIAIiB3aWR0aD0iJWdweCIgaGVpZ2h0PSIlZ3B4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4PSIlZyIgeT0iJWciACB0cmFuc2Zvcm09InJvdGF0ZSglZCAlZyAlZykiACIgd2lkdGg9IiVncHgiIGhlaWdodD0iJWdweCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4gbWVldCIgeD0iJWciIHk9IiVnIgAvPgoAZG90X2xheW91dABwaGFzZQBkb3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYXNwZWN0IGF0dHJpYnV0ZSBmb3IgZGlzY29ubmVjdGVkIGdyYXBocyBvciBncmFwaHMgd2l0aCBjbHVzdGVycwoAY29tcG91bmQAdiA9PSBuAGRvdGluaXQuYwByZW1vdmVfZnJvbV9yYW5rAG9yZGVyAGVkZ2UgbGFiZWxzIHdpdGggc3BsaW5lcz1jdXJ2ZWQgbm90IHN1cHBvcnRlZCBpbiBkb3QgLSB1c2UgeGxhYmVscwoARURfbGFiZWwoZmUpAGRvdHNwbGluZXMuYwBfZG90X3NwbGluZXMAZmxhdCBlZGdlIGJldHdlZW4gYWRqYWNlbnQgbm9kZXMgb25lIG9mIHdoaWNoIGhhcyBhIHJlY29yZCBzaGFwZSAtIHJlcGxhY2UgcmVjb3JkcyB3aXRoIEhUTUwtbGlrZSBsYWJlbHMKACAgRWRnZSAlcyAlcyAlcwoAeHh4ADEwMDAwAHslc30AYXV4ZwBsYWJlbF9mbG9hdABmaXhlZAAobCA9IEVEX2xhYmVsKGZlKSkAc2V0RWRnZUxhYmVsUG9zAGUgIT0gTlVMTABmYXN0Z3IuYwBkZWxldGVfZmFzdF9lZGdlAG4gIT0gTkRfbmV4dChuKQBmYXN0X25vZGUAdSAhPSB2AGZhc3Rfbm9kZWFwcABORF9uZXh0KHYpID09IE5VTEwAZmluZF9mYXN0X25vZGUoZywgbikAZGVsZXRlX2Zhc3Rfbm9kZQBkZWxldGVfZmxhdF9lZGdlAG1lcmdlX29uZXdheSBnbGl0Y2gKAG1lcmdlX29uZXdheQBzYWZlX2RlbGV0ZV9mYXN0X2VkZ2UAbGcAaW5mbwBjb21wAGNudCA9PSBzegBtaW5jcm9zcy5jAGZpeExhYmVsT3JkZXIAcmVtaW5jcm9zcwBtaW5jcm9zcyAlczogJWQgY3Jvc3NpbmdzLCAlLjJmIHNlY3MuCgB2AG5laWdoYm9yAChydiA9PSAwKSB8fCAoTkRfb3JkZXIocnYpLU5EX29yZGVyKHYpKSpkaXIgPiAwAGNvbnN0cmFpbmluZ19mbGF0X2VkZ2UoZyx2LGUpID09IEZBTFNFAGZsYXRfcmVvcmRlcgBORF9yYW5rKHYpID09IHIAcG9zdG9yZGVyAGZsYXRpbmRleChhZ2hlYWQoZSkpIDwgTS0+bnJvd3MAZmxhdF9zZWFyY2gAZmxhdGluZGV4KGFndGFpbChlKSkgPCBNLT5uY29scwBvdXQAb3JkZXJpbmcgJyVzJyBub3QgcmVjb2duaXplZC4KAG9yZGVyaW5nICclcycgbm90IHJlY29nbml6ZWQgZm9yIG5vZGUgJyVzJy4KAG1lcmdlMjogZ3JhcGggJXMsIHJhbmsgJWQgaGFzIG9ubHkgJWQgPCAlZCBub2RlcwoAbWluY3Jvc3M6IHBhc3MgJWQgaXRlciAlZCB0cnlpbmcgJWQgY3VyX2Nyb3NzICVkIGJlc3RfY3Jvc3MgJWQKAE5EX29yZGVyKHYpIDwgTkRfb3JkZXIodykAYmFsYW5jZQB0cmFuc3Bvc2Vfc3RlcABzdXJwcmlzZQoAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiAlcyAlcyByYW5rICVkIGkgPSAlZCBhbiA9IDAKAEdEX3JhbmsoZylbcl0ubiA8PSBHRF9yYW5rKGcpW3JdLmFuAGluc3RhbGxfaW5fcmFuawBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6IE5EX29yZGVyKCVzKSBbJWRdID4gR0RfcmFuayhSb290KVslZF0uYW4gWyVkXQoAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiByYW5rICVkIG5vdCBpbiByYW5rIHJhbmdlIFslZCwlZF0KAGluc3RhbGxfaW5fcmFuaywgbGluZSAlZDogR0RfcmFuayhnKVslZF0udiArIE5EX29yZGVyKCVzKSBbJWRdID4gR0RfcmFuayhnKVslZF0uYXYgKyBHRF9yYW5rKFJvb3QpWyVkXS5hbiBbJWRdCgBfbmV3X3JhbmsAbWNsaW1pdAByYW5rKGcsIDIsIG5zaXRlcjIoZykpID09IDAAcG9zaXRpb24uYwBkb3RfcG9zaXRpb24AQVI9JTAuNGxmCSBBcmVhPSAlMC40bGYJAER1bW15PSVkCgBHb2luZyB0byBhcHBseSBhbm90aGVyIGV4cGFuc2lvbi4KAG5leHQjaXRlcj0lZAoAaHAAY29ubmVjdEdyYXBoAEVkZ2UgbGVuZ3RoICVmIGxhcmdlciB0aGFuIG1heGltdW0gJXUgYWxsb3dlZC4KQ2hlY2sgZm9yIG92ZXJ3aWRlIG5vZGUocykuCgBuc2xpbWl0AGNvbnRhaW5fbm9kZXMgY2x1c3QgJXMgcmFuayAlZCBtaXNzaW5nIG5vZGUKAG5zbGltaXQxAG5ld3JhbmsATWF4cmFuayA9ICVkLCBtaW5yYW5rID0gJWQKAGxlYWRlciAhPSBOVUxMAHJhbmsuYwBjbHVzdGVyX2xlYWRlcgAoTkRfVUZfc2l6ZShuKSA8PSAxKSB8fCAobiA9PSBsZWFkZXIpAGFnaGVhZChlKSA9PSBVRl9maW5kKGFnaGVhZChlKSkAbWlubWF4X2VkZ2VzAGFndGFpbChlKSA9PSBVRl9maW5kKGFndGFpbChlKSkAcmFuawBzYW1lAG1pbgBzb3VyY2UAbWF4AHNpbmsAbGV2ZWwgYXNzaWdubWVudCBjb25zdHJhaW50cwBsZXZlbCBncmFwaCByZWMAf3Jvb3QAf3RvcAB/Ym90AGNvbXBhY3QAX3dlYWtfJWQAcmFua2luZzogZmFpbHVyZSB0byBjcmVhdGUgc3Ryb25nIGNvbnN0cmFpbnQgZWRnZSBiZXR3ZWVuIG5vZGVzICVzIGFuZCAlcwoAJXMgaGFzIHVucmVjb2duaXplZCByYW5rPSVzAGxldmVsIGVkZ2UgcmVjAGxldmVsIG5vZGUgcmVjAHNhbWVoZWFkAHNhbWV0YWlsAHRvbyBtYW55ICg+ICVkKSBzYW1le2hlYWQsdGFpbH0gZ3JvdXBzIGZvciBub2RlICVzCgBjb21iaUFSID0gJWxmCgAlbGYsJWQAdGhlIGFzcGVjdCBhdHRyaWJ1dGUgaGFzIGJlZW4gZGlzYWJsZWQgZHVlIHRvIGltcGxlbWVudGF0aW9uIGZsYXdzIC0gYXR0cmlidXRlIGlnbm9yZWQuCgBFRF90b192aXJ0KGUpID09IE5VTEwAY2xhc3MyLmMAbWVyZ2VfY2hhaW4ARURfdG9fdmlydChvcmlnKSA9PSBOVUxMAG1ha2VfY2hhaW4ARURfdG9fdmlydChvcmlnKSAhPSBOVUxMAE5EX3JhbmsoZnJvbSkgPCBORF9yYW5rKHRvKQBjbHVzdGVyLmMAbWFwX3BhdGgAJXMgd2FzIGFscmVhZHkgaW4gYSByYW5rc2V0LCBkZWxldGVkIGZyb20gY2x1c3RlciAlcwoAbGhlYWQAbHRhaWwAJXMgLT4gJXM6IHNwbGluZSBzaXplID4gMSBub3Qgc3VwcG9ydGVkCgAlcyAtPiAlczogaGVhZCBub3QgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAJXMgLT4gJXM6IHRhaWwgaXMgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAYmV6LT5zZmxhZwBjb21wb3VuZC5jAG1ha2VDb21wb3VuZEVkZ2UAYmV6LT5lZmxhZwAlcyAtPiAlczogdGFpbCBub3QgaW5zaWRlIHRhaWwgY2x1c3RlciAlcwoAJXMgLT4gJXM6IGhlYWQgaXMgaW5zaWRlIHRhaWwgY2x1c3RlciAlcwoAc2VnbWVudCBbJXMsJXNdIGRvZXMgbm90IGludGVyc2VjdCBib3ggbGw9JXMsdXI9JXMKAGJveEludGVyc2VjdGYAKCUuNWcsJS41ZykAY2x1c3RlciBuYW1lZCAlcyBub3QgZm91bmQKAGNvbmNlbnRyYXRlPXRydWUgbWF5IG5vdCB3b3JrIGNvcnJlY3RseS4KAHJlYnVpbHRkX3ZsaXN0czogcmFuayBsZWFkICVzIG5vdCBpbiBvcmRlciAlZCBvZiByYW5rICVkCgBkZWdlbmVyYXRlIGNvbmNlbnRyYXRlZCByYW5rICVzLCVkCgBORF9pbihyaWdodCkuc2l6ZSArIE5EX291dChyaWdodCkuc2l6ZSA9PSAwAGNvbmMuYwBtZXJnZXZpcnR1YWwAZG90OiBPdXQgb2YgbWVtb3J5CgBORF9vdXQodikuc2l6ZSA9PSAyAGZsYXQuYwBzZXRib3VuZHMAR0RfbWlucmFuayhnKSA9PSAwAGFib21pbmF0aW9uAEVycm9yAFdhcm5pbmcAJXM6IAB1c2Vyb3V0OiBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5CgBfQUdfc3RyZGF0YQBfQUdfZGF0YWRpY3QAYWdkaWN0b2Y6IHVua25vd24ga2luZCAlZAoAJWMlbGQAbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQBhZ2RlbGV0ZSBvbiB3cm9uZyBncmFwaABfQUdfcGVuZGluZwBhZ3JlY29yZF9jYWxsYmFjayBvZiBhIGJhZCBvYmplY3QAcGVuZCBkaWN0b2YgYSBiYWQgb2JqZWN0AG1vdmUgdG8gZnJvbnQgbG9jayBpbmNvbnNpc3RlbmN5AFxcAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tbm8gYWN0aW9uIGZvdW5kACVzCgBmYXRhbCBmbGV4IHNjYW5uZXIgaW50ZXJuYWwgZXJyb3ItLWVuZCBvZiBidWZmZXIgbWlzc2VkAGZhdGFsIGVycm9yIC0gc2Nhbm5lciBpbnB1dCBidWZmZXIgb3ZlcmZsb3cAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIGFhZ19nZXRfbmV4dF9idWZmZXIoKQBpbnB1dABzeW50YXggYW1iaWd1aXR5IC0gYmFkbHkgZGVsaW1pdGVkIG51bWJlciAnACcgaW4gbGluZSAlZCBvZiAAIHNwbGl0cyBpbnRvIHR3byB0b2tlbnMKACVzAGxpbmUAJWQgJTFbIl0lbgBvdXQgb2YgZHluYW1p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a01vZGVJbmZvAGFycmF5AGFzcGVjdAAlZgBwYWNrIGluZm86CgAgIG1vZGUgICAlcwoAICBhc3BlY3QgJWYKACAgc2l6ZSAgICVkCgAgIGZsYWdzICAlZAoAdW5kZWZpbmVkAHBhY2sAQXJyb3cgdHlwZSAiJXMiIHVua25vd24gLSBpZ25vcmluZwoAbm9ybWFsAGNyb3cAdGVlAGRvdABpbnYAdmVlAHBlbgBtcHR5AGN1cnZlAGljdXJ2ZQBsAGhhbGYAaW52ZW1wdHkAX2JhY2tncm91bmQAX2RyYXdfAENvdWxkIG5vdCBwYXJzZSAiX2JhY2tncm91bmQiIGF0dHJpYnV0ZSBpbiBncmFwaCAlcwoAICAiJXMiCgBubyBtZW1vcnkgZnJvbSB6bWFsbG9jKCkKAG9iagBlbWl0LmMAcG9wX29ial9zdGF0ZQBjbHVzdAAlbGQAcGFnZSVkLCVkXwBUb3RhbCBzaXplID4gMSBpbiAiJXMiIGNvbG9yIHNwZWMgAElsbGVnYWwgbGVuZ3RoIHZhbHVlIGluICIlcyIgY29sb3IgYXR0cmlidXRlIABjb2xvcnNjaGVtZQBlbWl0X2VkZ2VfbGFiZWwAJXMtJXMAZm9yd2FyZABiYWNrACAtPiAAIC0tIABpbiBlZGdlICVzJXMlcwoAbGFiZWxhbGlnbmVkAGVkZ2VocmVmAGVkZ2VVUkwAbGFiZWxocmVmAGxhYmVsVVJMAHRhaWxocmVmAHRhaWxVUkwAaGVhZGhyZWYAaGVhZFVSTAB0YXJnZXQAZWRnZXRhcmdldABsYWJlbHRhcmdldAB0YWlsdGFyZ2V0AGhlYWR0YXJnZXQAZWRnZXRvb2x0aXAAbGFiZWx0b29sdGlwAHRhaWx0b29sdGlwAGhlYWR0b29sdGlwAAFuZXN0aW5nIG5vdCBhbGxvd2VkIGluIHN0eWxlOiAlcwoAdW5tYXRjaGVkICcpJyBpbiBzdHlsZTogJXMKAHRydW5jYXRpbmcgc3R5bGUgJyVzJwoAdW5tYXRjaGVkICcoJyBpbiBzdHlsZTogJXMKAGFsbABiZ2NvbG9yAGluIGNsdXN0ZXIgJXMKAE1vcmUgdGhhbiAyIGNvbG9ycyBzcGVjaWZpZWQgZm9yIGEgZ3JhZGllbnQgLSBpZ25vcmluZyByZW1haW5pbmcKAGdyYWRpZW50IHBlbiBjb2xvcnMgbm90IHlldCBzdXBwb3J0ZWQuCgBJbWFnZXMgdW5zdXBwb3J0ZWQgaW4gImJhY2tncm91bmQiIGF0dHJpYnV0ZQoAbGF5ZXJzIG5vdCBzdXBwb3J0ZWQgaW4gJXMgb3V0cHV0CgBMYXlvdXQgd2FzIG5vdCBkb25lLiAgTWlzc2luZyBsYXlvdXQgcGx1Z2lucz8gCgBndlJlbmRlckpvYnMgJXM6ICUuMmYgc2Vjcy4KAGxheW91dCB3YXMgbm90IGRvbmUKAHJlbmRlcmVyIGZvciAlcyBpcyB1bmF2YWlsYWJsZQoAcGFnZWRpcj0lcyBpZ25vcmVkCgB2aWV3cG9ydAAlbGYsJWxmLCVsZiwnJVteJ10nACVsZiwlbGYsJWxmLCVbXixdJXMAJWxmLCVsZiwlbGYsJWxmLCVsZgBvdXRwdXRvcmRlcgBvZGVzZmlyc3QAZGdlc2ZpcnN0AGxheWVycwBsYXllcnNlbGVjdABUaGUgbGF5ZXJzZWxlY3QgYXR0cmlidXRlICIlcyIgZG9lcyBub3QgbWF0Y2ggYW55IGxheWVyIHNwZWNpZmVkIGJ5IHRoZSBsYXllcnMgYXR0cmlidXRlIC0gaWdub3JlZC4KAGxheWVyc2VwADoJIABsYXllcmxpc3RzZXAALABUaGUgY2hhcmFjdGVyICclYycgYXBwZWFycyBpbiBib3RoIHRoZSBsYXllcnNlcCBhbmQgbGF5ZXJsaXN0c2VwIGF0dHJpYnV0ZXMgLSBsYXllcmxpc3RzZXAgaWdub3JlZC4KAHBhZABCTABwYWdlZGlyAHNvbGlkAABzZXRsaW5ld2lkdGgAMQAAc3BsLT5zaXplID4gMABpbml0X3NwbGluZXNfYmIAYnouc2l6ZSA+IDAAYmV6aWVyX2JiAGJ6LnNpemUgJSAzID09IDEAbGFiZWwAJWxmAGZvbnRwYXRoAERPVEZPTlRQQVRIAEdERk9OVFBBVEgAaW1hZ2VwYXRoAHF1YW50dW0AcmFua2RpcgBMUgBCVABSTABub2Rlc2VwAHJhbmtzZXAAZXF1YWxseQBzaG93Ym94ZXMAZm9udG5hbWVzAHNpemUAcGFnZQBjZW50ZXIAcm90YXRlAG9yaWVudGF0aW9uAGxhbmRzY2FwZQBjbHVzdGVycmFuawBjb25jZW50cmF0ZQBkcGkAcmVzb2x1dGlvbgBvcmRlcmluZwBncmFkaWVudGFuZ2xlAGZpbGxjb2xvcgBzdHlsZQBmb250c2l6ZQBmb250bmFtZQBmb250Y29sb3IAeGxhYmVsAHBlbndpZHRoAHNpZGVzAHBlcmlwaGVyaWVzAHNrZXcAZGlzdG9ydGlvbgBmaXhlZHNpemUAbm9qdXN0aWZ5AGxheWVyAGdyb3VwAGNvbW1lbnQAdmVydGljZXMAegB3ZWlnaHQAbGFiZWxmbG9hdABkaXIAYXJyb3doZWFkAGFycm93dGFpbABoZWFkbGFiZWwAdGFpbGxhYmVsAGxhYmVsZm9udHNpemUAbGFiZWxmb250bmFtZQBsYWJlbGZvbnRjb2xvcgBsYWJlbGRpc3RhbmNlAGxhYmVsYW5nbGUAbWlubGVuAGRlY29yYXRlAGFycm93c2l6ZQBjb25zdHJhaW50AHRhaWxjbGlwAGhlYWRjbGlwAGlkAGxhYmVsanVzdABsb2NhbABnbG9iYWwAJWxmLCVsZiVjACVsZiVjAHJhdGlvAGF1dG8AY29tcHJlc3MAZXhwYW5kAGZpbGwAZ2QAcHMAc3ZnAGNoYXJzZXQAdXRmLTgAbGF0aW4tMQBsYXRpbjEAbDEASVNPLTg4NTktMQBJU09fODg1OS0xAElTTzg4NTktMQBJU08tSVItMTAwAGJpZy01AGJpZzUAdXRmOABVbnN1cHBvcnRlZCBjaGFyc2V0ICIlcyIgLSBhc3N1bWluZyB1dGYtOAoAaW4gbGFiZWwgb2YgZ3JhcGggJXMKAGluIGxhYmVsIG9mIG5vZGUgJXMKAGluIGxhYmVsIG9mIGVkZ2UgJXMgJXMgJXMKAGtpbmQgPT0gTFRfTk9ORQBsYWJlbHMuYwBtYWtlX2xhYmVsAFxMAFxHAFxFAFxIAFxUACYjMTM7ACYjMTA7ACZxdW90OwAmIzE2MDsAJmFtcDsAJmd0OwAmIzM5OwAmIzQ1OwAmbHQ7ACVzICVkIG5vZGVzICVkIGVkZ2VzIG1heGl0ZXI9JWQgYmFsYW5jZT0lZAoAbmV0d29yayBzaW1wbGV4OiAAJWQgACVzJWQgbm9kZXMgJWQgZWRnZXMgJWQgaXRlciAlLjJmIHNlYwoAdXBkYXRlOiBtaXNtYXRjaGVkIGxjYSBpbiB0cmVldXBkYXRlcwoAVHJlZV9lZGdlLnNpemUgPT0gTl9ub2RlcyAtIDEAbnMuYwBmZWFzaWJsZV90cmVlACFUUkVFX0VER0UoZSkAbWVyZ2VfdHJlZXMAKHIwLT5oZWFwX2luZGV4ID4gLTEpIHx8IChyMS0+aGVhcF9pbmRleCA+IC0xKQBTVHNldFVuaW9uAHItPmhlYXBfaW5kZXggPj0gMABhZGRfdHJlZV9lZGdlOiBtaXNzaW5nIHRyZWUgZWRnZQoAYWRkX3RyZWVfZWRnZTogZW1wdHkgb3V0ZWRnZSBsaXN0CgBhZGRfdHJlZV9lZGdlOiBlbXB0eSBpbmVkZ2UgbGlzdAoAdHJvdWJsZSBpbiBpbml0X3JhbmsKAAklcyAlZAoAc2VhcmNoc2l6ZQBncmFwaCAAIABub2RlIABzdG9wCgAlLjVnAHBvcwByZWN0cwB4bHAAbHAAaGVhZF9scAB0YWlsX2xwAGx3aWR0aABsaGVpZ2h0AGJiACUuNWcsJS41ZywlLjVnACwlLjVnACUuNWcsJS41ZwBzYW1wbGVwb2ludHMAJS41ZyAlLjVnAHMsJS41ZywlLjVnIABlLCUuNWcsJS41ZyAAJS41ZywlLjVnLCUuNWcsJS41ZwAlLjJmACUuNWcsJS41ZywlLjVnLCUuNWcgAC9wYXRoYm94IHsKICAgIC9YIGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC94IGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL3kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAL3BhdGhib3ggewogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC9YIGV4Y2ggJS41ZyBzdWIgZGVmCiAgICAveSBleGNoICUuNWcgc3ViIGRlZgogICAgL3ggZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQogfSBkZWYKL2RiZ3N0YXJ0IHsgZ3NhdmUgJS41ZyAlLjVnIHRyYW5zbGF0ZSB9IGRlZgovYXJyb3dsZW5ndGggMTAgZGVmCi9hcnJvd3dpZHRoIGFycm93bGVuZ3RoIDIgZGl2IGRlZgovYXJyb3doZWFkIHsKICAgIGdzYXZlCiAgICByb3RhdGUKICAgIGN1cnJlbnRwb2ludAogICAgbmV3cGF0aAogICAgbW92ZXRvCiAgICBhcnJvd2xlbmd0aCBhcnJvd3dpZHRoIDIgZGl2IHJsaW5ldG8KICAgIDAgYXJyb3d3aWR0aCBuZWcgcmxpbmV0bwogICAgY2xvc2VwYXRoIGZpbGwKICAgIGdyZXN0b3JlCn0gYmluZCBkZWYKL21ha2VhcnJvdyB7CiAgICBjdXJyZW50cG9pbnQgZXhjaCBwb3Agc3ViIGV4Y2ggY3VycmVudHBvaW50IHBvcCBzdWIgYXRhbgogICAgYXJyb3doZWFkCn0gYmluZCBkZWYKL3BvaW50IHsgICAgbmV3cGF0aCAgICAyIDAgMzYwIGFyYyBmaWxsfSBkZWYvbWFrZXZlYyB7CiAgICAvWSBleGNoIGRlZgogICAgL1ggZXhjaCBkZWYKICAgIC95IGV4Y2ggZGVmCiAgICAveCBleGNoIGRlZgogICAgbmV3cGF0aCB4IHkgbW92ZXRvCiAgICBYIFkgbGluZXRvIHN0cm9rZQogICAgWCBZIG1vdmV0bwogICAgeCB5IG1ha2VhcnJvdwp9IGRlZgoAbG9zdCAlcyAlcyBlZGdlCgBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGxhYmVsICVzAG5vIHBvc2l0aW9uIGZvciBlZGdlIHdpdGggdGFpbCBsYWJlbCAlcwBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGhlYWQgbGFiZWwgJXMAbm8gcG9zaXRpb24gZm9yIGVkZ2Ugd2l0aCB4bGFiZWwgJXMAZm9yY2VsYWJlbHMAJWQgb3V0IG9mICVkIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb3V0IG9mICVkIGV4dGVyaW9yIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb2JqcyAlZCB4bGFiZWxzIGZvcmNlPSVkIGJiPSglLjAyZiwlLjAyZikgKCUuMDJmLCUuMDJmKQoAb2JqZWN0cwoAIFslZF0gKCUuMDJmLCUuMDJmKSAoJS4wMmYsJS4wMmYpICVwICIlcyIKAHhsYWJlbHMKACBbJWRdICVwIHNldCAlZCAoJS4wMmYsJS4wMmYpICglLjAyZiwlLjAyZikgJXMKAHNoYXBlZmlsZSBub3Qgc2V0IG9yIG5vdCBmb3VuZCBmb3IgZXBzZiBub2RlICVzCgBjb3VsZG4ndCBvcGVuIGVwc2YgZmlsZSAlcwoAJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAByZWFkAEJvdW5kaW5nQm94IG5vdCBmb3VuZCBpbiBlcHNmIGZpbGUgJXMKAGNhbid0IGZpbmQgbGlicmFyeSBmaWxlICVzCgBjYW4ndCBvcGVuIGxpYnJhcnkgZmlsZSAlcwoARU9GAEJFR0lOAEVORABUUkFJTEVSAC91c2VyX3NoYXBlXyVkIHsKACUlQmVnaW5Eb2N1bWVudDoKACUlRW5kRG9jdW1lbnQKAH0gYmluZCBkZWYKAFVURi04IGlucHV0IHVzZXMgbm9uLUxhdGluMSBjaGFyYWN0ZXJzIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgUG9zdFNjcmlwdCBkcml2ZXIKAGNhbm5vdCByZS1hbGxvY2F0ZSBwcwoAcm91dGVzcGxpbmVzaW5pdDogY2Fubm90IGFsbG9jYXRlIHBzCgByb3V0ZXNwbGluZXM6ICVkIGVkZ2VzLCAlZCBib3hlcyAlLjJmIHNlYwoAaW4gcm91dGVzcGxpbmVzLCBjYW5ub3QgZmluZCBOT1JNQUwgZWRnZQoAaW4gcm91dGVzcGxpbmVzLCBpbGxlZ2FsIHZhbHVlcyBvZiBwcmV2ICVkIGFuZCBuZXh0ICVkLCBsaW5lICVkCgBpbiByb3V0ZXNwbGluZXMsIGVkZ2UgaXMgYSBsb29wIGF0ICVzCgBpbiByb3V0ZXNwbGluZXMsIFBzaG9ydGVzdHBhdGggZmFpbGVkCgBpbiByb3V0ZXNwbGluZXMsIFByb3V0ZXNwbGluZSBmYWlsZWQKAFVuYWJsZSB0byByZWNsYWltIGJveCBzcGFjZSBpbiBzcGxpbmUgcm91dGluZyBmb3IgZWRnZSAiJXMiIC0+ICIlcyIuIFNvbWV0aGluZyBpcyBwcm9iYWJseSBzZXJpb3VzbHkgd3JvbmcuCgBpbiBjaGVja3BhdGgsIGJveCAwIGhhcyBMTCBjb29yZCA+IFVSIGNvb3JkCgBpbiBjaGVja3BhdGgsIGJveCAlZCBoYXMgTEwgY29vcmQgPiBVUiBjb29yZAoAaW4gY2hlY2twYXRoLCBib3hlcyAlZCBhbmQgJWQgZG9uJ3QgdG91Y2gKAGluIGNoZWNrcGF0aCwgc3RhcnQgcG9ydCBub3QgaW4gZmlyc3QgYm94CgBpbiBjaGVja3BhdGgsIGVuZCBwb3J0IG5vdCBpbiBsYXN0IGJveAoAJWQgYm94ZXM6CgAlZCAoJS41ZywgJS41ZyksICglLjVnLCAlLjVnKQoAY29uc3RyYWluZWQAbm90IGNvbnN0cmFpbmVkAHN0YXJ0IHBvcnQ6ICglLjVnLCAlLjVnKSwgdGFuZ2VudCBhbmdsZTogJS41ZywgJXMKAGVuZCBwb3J0OiAoJS41ZywgJS41ZyksIHRhbmdlbnQgYW5nbGU6ICUuNWcsICVzCgBzaWRlcyA9PSA0AHNoYXBlcy5jAHJvdW5kX2Nvcm5lcnMAYmFkIGxhYmVsIGZvcm1hdCAlcwoAXE4AbWFyZ2luACVsZiwlbGYAcmVndWxhcgBjdXN0b20Ac2hhcGVmaWxlADxuaWw+AE5vIG9yIGltcHJvcGVyIHNoYXBlZmlsZT0iJXMiIGZvciBub2RlICIlcyIKAE5vIG9yIGltcHJvcGVyIGltYWdlPSIlcyIgZm9yIG5vZGUgIiVzIgoAbGFiZWxsb2MAc2hhcGUAbm9kZSAnJXMnLCBncmFwaCAnJXMnIHNpemUgdG9vIHNtYWxsIGZvciBsYWJlbAoAZXBzZgB1c2luZyAlcyBmb3IgdW5rbm93biBzaGFwZSAlcwoAYm94AHBvbHlnb24Ab3ZhbABjaXJjbGUAcG9pbnQAZWdnAHRyaWFuZ2xlAHBsYWludGV4dABwbGFpbgBkaWFtb25kAHRyYXBleml1bQBwYXJhbGxlbG9ncmFtAGhvdXNlAHBlbnRhZ29uAGhleGFnb24Ac2VwdGFnb24Ab2N0YWdvbgBub3RlAHRhYgBmb2xkZXIAYm94M2QAY29tcG9uZW50AGN5bGluZGVyAHJlY3QAcmVjdGFuZ2xlAHNxdWFyZQBkb3VibGVjaXJjbGUAZG91Ymxlb2N0YWdvbgB0cmlwbGVvY3RhZ29uAGludnRyaWFuZ2xlAGludnRyYXBleml1bQBpbnZob3VzZQB1bmRlcmxpbmUATWRpYW1vbmQATXNxdWFyZQBNY2lyY2xlAHByb21vdGVyAGNkcwB0ZXJtaW5hdG9yAHV0cgBpbnN1bGF0b3IAcmlib3NpdGUAcm5hc3RhYgBwcm90ZWFzZXNpdGUAcHJvdGVpbnN0YWIAcHJpbWVyc2l0ZQByZXN0cmljdGlvbnNpdGUAZml2ZXBvdmVyaGFuZwB0aHJlZXBvdmVyaGFuZwBub3ZlcmhhbmcAYXNzZW1ibHkAc2lnbmF0dXJlAHJwcm9tb3RlcgBsYXJyb3cAcmFycm93AGxwcm9tb3RlcgByZWNvcmQATXJlY29yZABzdGFyACM4MDgwODAAI2ZjZmNmYwAjMzAzMDMwACNlOGU4ZTgAI2UwZTBlMAAjZjBmMGYwACMxMDEwMTAAI2Y4ZjhmOABpbiBub2RlICVzCgByb3VuZGVkAGRpYWdvbmFscwByYWRpYWwAc3RyaXBlZAB3ZWRnZWQAXwBub2RlICVzLCBwb3J0ICVzLCB1bnJlY29nbml6ZWQgY29tcGFzcyBwb2ludCAnJXMnIC0gaWdub3JlZAoAbm9kZSAlcywgcG9ydCAlcyB1bnJlY29nbml6ZWQKACUuNWcgJS41ZyB0cmFuc2xhdGUgbmV3cGF0aCB1c2VyX3NoYXBlXyVkCgBpbnZpcwAAZmlsbGVkAABzAGUAdwBzcGxpbmVzLmMAYmVnaW5wYXRoAFAtPmVuZC50aGV0YSA8IDIgKiBNX1BJAGVuZHBhdGgAbWFrZVNlbGZFZGdlAGdldHNwbGluZXBvaW50czogbm8gc3BsaW5lIHBvaW50cyBhdmFpbGFibGUgZm9yIGVkZ2UgKCVzLCVzKQoAcG9seWxpbmVNaWRwb2ludABzcGFuLT5mb250AHRleHRzcGFuLmMAdGV4dHNwYW5fc2l6ZQBmb250LT5uYW1lAGZvbnRuYW1lOiAiJXMiIHJlc29sdmVkIHRvOiAlcwoAZm9udG5hbWU6IHVuYWJsZSB0byByZXNvbHZlICIlcyIKAGNvdXIAYXJpYWwAaGVsdmV0aWNhAFtpbnRlcm5hbCB0aW1lc10AW2ludGVybmFsIGNvdXJpZXJdAFtpbnRlcm5hbCBhcmlhbF0AQXZhbnRHYXJkZS1Cb29rAFVSVyBHb3RoaWMgTABib29rAHNhbnMtU2VyaWYAQXZhbnRHYXJkZS1Cb29rT2JsaXF1ZQBvYmxpcXVlAGl0YWxpYwBBdmFudEdhcmRlLURlbWkAZGVtaQBBdmFudEdhcmRlLURlbWlPYmxpcXVlAEJvb2ttYW4tRGVtaQBVUlcgQm9va21hbiBMAHNlcmlmAEJvb2ttYW4tRGVtaUl0YWxpYwBCb29rbWFuLUxpZ2h0AGxpZ2h0AEJvb2ttYW4tTGlnaHRJdGFsaWMAQ291cmllcgBtb25vc3BhY2UAQ291cmllci1Cb2xkAENvdXJpZXItQm9sZE9ibGlxdWUAQ291cmllci1PYmxpcXVlAEhlbHZldGljYQBIZWx2ZXRpY2EtQm9sZABIZWx2ZXRpY2EtQm9sZE9ibGlxdWUASGVsdmV0aWNhLU5hcnJvdwBjb25kZW5zZWQASGVsdmV0aWNhLU5hcnJvdy1Cb2xkAEhlbHZldGljYS1OYXJyb3ctQm9sZE9ibGlxdWUASGVsdmV0aWNhLU5hcnJvdy1PYmxpcXVlAEhlbHZldGljYS1PYmxpcXVlAE5ld0NlbnR1cnlTY2hsYmstQm9sZABDZW50dXJ5IFNjaG9vbGJvb2sgTABOZXdDZW50dXJ5U2NobGJrLUJvbGRJdGFsaWMATmV3Q2VudHVyeVNjaGxiay1JdGFsaWMATmV3Q2VudHVyeVNjaGxiay1Sb21hbgByb21hbgBQYWxhdGluby1Cb2xkAFBhbGF0aW5vIExpbm90eXBlAFBhbGF0aW5vLUJvbGRJdGFsaWMAUGFsYXRpbm8tSXRhbGljAFBhbGF0aW5vLVJvbWFuAFN5bWJvbABmYW50YXN5AFRpbWVzLUJvbGQAVGltZXMAVGltZXMtQm9sZEl0YWxpYwBUaW1lcy1JdGFsaWMAWmFwZkNoYW5jZXJ5LU1lZGl1bUl0YWxpYwBVUlcgQ2hhbmNlcnkgTABtZWRpdW0AWmFwZkRpbmdiYXRzAERpbmdiYXRzAG5vAHRydWUAeWVzAHV0aWxzLmMAdSA9PSBVRl9maW5kKHUpAFVGX3NldG5hbWUAAWZpbGUgbG9hZGluZyBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBjb250YWlucyBTRVJWRVJfTkFNRT0iJXMiCmFuZCB0aGUgR1ZfRklMRV9QQVRIIHZhcmlhYmxlIGlzIHVuc2V0IG9yIGVtcHR5LgoAUGF0aCBwcm92aWRlZCB0byBmaWxlOiAiJXMiIGhhcyBiZWVuIGlnbm9yZWQgYmVjYXVzZSBmaWxlcyBhcmUgb25seSBwZXJtaXR0ZWQgdG8gYmUgbG9hZGVkIGZyb20gdGhlIGRpcmVjdG9yaWVzIGluICIlcyIgd2hlbiBydW5uaW5nIGluIGFuIGh0dHAgc2VydmVyLgoAJXMlcyVzAC8AOgBlbGxpcHNlAFRpbWVzLVJvbWFuAGNsdXN0ZXIAX19jbHVzdGVybm9kZXMAVHdvIGNsdXN0ZXJzIG5hbWVkICVzIC0gdGhlIHNlY29uZCB3aWxsIGJlIGlnbm9yZWQKAG1hcE4AQUVsaWcAQWFjdXRlAEFjaXJjAEFncmF2ZQBBbHBoYQBBcmluZwBBdGlsZGUAQXVtbABCZXRhAENjZWRpbABDaGkARGFnZ2VyAERlbHRhAEVUSABFYWN1dGUARWNpcmMARWdyYXZlAEVwc2lsb24ARXRhAEV1bWwAR2FtbWEASWFjdXRlAEljaXJjAElncmF2ZQBJb3RhAEl1bWwAS2FwcGEATGFtYmRhAE11AE50aWxkZQBOdQBPRWxpZwBPYWN1dGUAT2NpcmMAT2dyYXZlAE9tZWdhAE9taWNyb24AT3NsYXNoAE90aWxkZQBPdW1sAFBoaQBQaQBQcmltZQBQc2kAUmhvAFNjYXJvbgBTaWdtYQBUSE9STgBUYXUAVGhldGEAVWFjdXRlAFVjaXJjAFVncmF2ZQBVcHNpbG9uAFV1bWwAWGkAWWFjdXRlAFl1bWwAWmV0YQBhYWN1dGUAYWNpcmMAYWN1dGUAYWVsaWcAYWdyYXZlAGFsZWZzeW0AYWxwaGEAYW1wAGFuZABhbmcAYXJpbmcAYXN5bXAAYXRpbGRlAGF1bWwAYmRxdW8AYmV0YQBicnZiYXIAYnVsbABjYXAAY2NlZGlsAGNlZGlsAGNlbnQAY2hpAGNpcmMAY2x1YnMAY29uZwBjb3B5AGNyYXJyAGN1cABjdXJyZW4AZEFycgBkYWdnZXIAZGFycgBkZWcAZGVsdGEAZGlhbXMAZGl2aWRlAGVhY3V0ZQBlY2lyYwBlZ3JhdmUAZW1wdHkAZW1zcABlbnNwAGVwc2lsb24AZXF1aXYAZXRhAGV0aABldW1sAGV1cm8AZXhpc3QAZm5vZgBmb3JhbGwAZnJhYzEyAGZyYWMxNABmcmFjMzQAZnJhc2wAZ2FtbWEAZ2UAZ3QAaEFycgBoYXJyAGhlYXJ0cwBoZWxsaXAAaWFjdXRlAGljaXJjAGlleGNsAGlncmF2ZQBpbWFnZQBpbmZpbgBpbnQAaW90YQBpcXVlc3QAaXNpbgBpdW1sAGthcHBhAGxBcnIAbGFtYmRhAGxhbmcAbGFxdW8AbGFycgBsY2VpbABsZHF1bwBsZQBsZmxvb3IAbG93YXN0AGxvegBscm0AbHNhcXVvAGxzcXVvAGx0AG1hY3IAbWRhc2gAbWljcm8AbWlkZG90AG11AG5hYmxhAG5ic3AAbmRhc2gAbmUAbmkAbm90AG5vdGluAG5zdWIAbnRpbGRlAG51AG9hY3V0ZQBvY2lyYwBvZWxpZwBvZ3JhdmUAb2xpbmUAb21lZ2EAb21pY3JvbgBvcGx1cwBvcgBvcmRmAG9yZG0Ab3NsYXNoAG90aWxkZQBvdGltZXMAb3VtbABwYXJhAHBhcnQAcGVybWlsAHBlcnAAcGhpAHBpAHBpdgBwbHVzbW4AcG91bmQAcHJpbWUAcHJvZABwcm9wAHBzaQBxdW90AHJBcnIAcmFkaWMAcmFuZwByYXF1bwByYXJyAHJjZWlsAHJkcXVvAHJlYWwAcmVnAHJmbG9vcgByaG8AcmxtAHJzYXF1bwByc3F1bwBzYnF1bwBzY2Fyb24Ac2RvdABzZWN0AHNoeQBzaWdtYQBzaWdtYWYAc2ltAHNwYWRlcwBzdWIAc3ViZQBzdW0Ac3VwAHN1cDEAc3VwMgBzdXAzAHN1cGUAc3psaWcAdGF1AHRoZXJlNAB0aGV0YQB0aGV0YXN5bQB0aGluc3AAdGhvcm4AdGlsZGUAdGltZXMAdHJhZGUAdUFycgB1YWN1dGUAdWFycgB1Y2lyYwB1Z3JhdmUAdW1sAHVwc2loAHVwc2lsb24AdXVtbAB3ZWllcnAAeGkAeWFjdXRlAHllbgB5dW1sAHpldGEAendqAHp3bmoAVVRGOCBjb2RlcyA+IDQgYnl0ZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIChncmFwaCAlcykgLSB0cmVhdGVkIGFzIExhdGluLTEuIFBlcmhhcHMgIi1HY2hhcnNldD1sYXRpbjEiIGlzIG5lZWRlZD8KAEludmFsaWQgJWQtYnl0ZSBVVEY4IGZvdW5kIGluIGlucHV0IG9mIGdyYXBoICVzIC0gdHJlYXRlZCBhcyBMYXRpbi0xLiBQZXJoYXBzICItR2NoYXJzZXQ9bGF0aW4xIiBpcyBuZWVkZWQ/CgBiei5zaXplAG92ZXJsYXBfYmV6aWVyAHVydmVkAG9tcG91bmQAYWxzZQBpbmUAb25lAG8AcnRobwBvbHlsaW5lAHBsaW5lAHJ1ZQBlcwBVbmtub3duICJzcGxpbmVzIiB2YWx1ZTogIiVzIiAtIGlnbm9yZWQKAHNwbGluZXMAb2RiAE9ydGhvZ29uYWwgZWRnZXMgZG8gbm90IGN1cnJlbnRseSBoYW5kbGUgZWRnZSBsYWJlbHMuIFRyeSB1c2luZyB4bGFiZWxzLgoAb3J0aG8gJXMgJXMKAGNoYW5pAG9ydGhvLmMAY2hhblNlYXJjaABjcAAlJSFQUy1BZG9iZS0yLjAKJSUlJUJvdW5kaW5nQm94OiAoYXRlbmQpCi9wb2ludCB7CiAgL1kgZXhjaCBkZWYKICAvWCBleGNoIGRlZgogIG5ld3BhdGgKICBYIFkgMyAwIDM2MCBhcmMgZmlsbAp9IGRlZgovY2VsbCB7CiAgL1kgZXhjaCBkZWYKICAvWCBleGNoIGRlZgogIC95IGV4Y2ggZGVmCiAgL3ggZXhjaCBkZWYKICBuZXdwYXRoCiAgeCB5IG1vdmV0bwogIHggWSBsaW5ldG8KICBYIFkgbGluZXRvCiAgWCB5IGxpbmV0bwogIGNsb3NlcGF0aCBzdHJva2UKfSBkZWYKL25vZGUgewogL3UgZXhjaCBkZWYKIC9yIGV4Y2ggZGVmCiAvZCBleGNoIGRlZgogL2wgZXhjaCBkZWYKIG5ld3BhdGggbCBkIG1vdmV0bwogciBkIGxpbmV0byByIHUgbGluZXRvIGwgdSBsaW5ldG8KIGNsb3NlcGF0aCBmaWxsCn0gZGVmCgoAJWQgJWQgdHJhbnNsYXRlCgAwLjggMC44IDAuOCBzZXRyZ2Jjb2xvcgoAc2hvd3BhZ2UKJSUlJVRyYWlsZXIKJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoAbmV3cGF0aCAlZCAlZCBtb3ZldG8KACVkICVkIGxpbmV0bwoAJWQgJWQgbGluZXRvIHN0cm9rZQoAY2hhbm5lbCAlZCAoJWYsJWYpCgAgLT4KACAgICAgACgoJWYsJWYpLCglZiwlZikpICVzICVzAEJfUklHSFQAQl9ET1dOAEJfTEVGVABCX1VQAEJfTk9ERQBzZWcAbmV4dF9zZWcAZGVjaWRlX3BvaW50AGluY29tcGFyYWJsZSBzZWdtZW50cyAhISAtLSBBYm9ydGluZwoAczEtPmNvbW1fY29vcmQ9PXMyLT5jb21tX2Nvb3JkAGlzX3BhcmFsbGVsAGdyYXBoIEcgewoAIG5vZGVbc2hhcGU9cG9pbnRdCgAgICVkIFtwb3M9IiVkLCVkIl0KACAgJWQgLS0gJWRbbGVuPSIlZiJdCgB9CgBjb2xvciAlcwAlcyBpcyBub3QgYSBrbm93biBjb2xvci4KAGVycm9yIGluIGNvbHhsYXRlKCkKAHNvbGlkAGludmlzaWJsZQBib2xkAHNldGxpbmV3aWR0aABmaWxsZWQAdW5maWxsZWQAdGFwZXJlZABndnJlbmRlcl9zZXRfc3R5bGU6IHVuc3VwcG9ydGVkIHN0eWxlICVzIC0gaWdub3JpbmcKAGd2cmVuZGVyLmMAZ3ZyZW5kZXJfdXNlcnNoYXBlAG5hbWUAbmFtZVswXQB3aWR0aABoZWlnaHQAYm90aABqb2IAZ3Zsb2FkaW1hZ2UuYwBndmxvYWRpbWFnZQB1cwB1cy0+bmFtZQB1cy0+bmFtZVswXQBObyBsb2FkaW1hZ2UgcGx1Z2luIGZvciAiJXMiCgBRAExlZnQAS1BfTGVmdABSaWdodABLUF9SaWdodABVcABLUF9VcABEb3duAEtQX0Rvd24AcGx1cwBLUF9BZGQAbWludXMAS1BfU3VidHJhY3QARgB0b29sdGlwAGVkZ2UAdGFpbHBvcnQAaGVhZHBvcnQAa2V5AGhyZWYAVVJMAG5vZGUAZGlncmFwaABncmFwaABzdWJncmFwaABfTFRYX2xpYnJhcnkAdGV4dGxheW91dABvYmpwLT5sYmwAeGxhYmVscy5jAHhsYWRqdXN0AHhsaW50ZXJzZWN0aW9ucwBscCAhPSBjbHAAZ2V0aW50cnN4aQBvYmpwMS0+c3oueCA9PSAwICYmIG9ianAxLT5zei55ID09IDAAbGJsZW5jbG9zaW5nAHZwAHhsaGR4dW5sb2FkAHNpemU9PWZyZWVkAHJlY3QuYm91bmRhcnlbMl0gPCBJTlRfTUFYAG9ianBscG1rcwByZWN0LmJvdW5kYXJ5WzNdIDwgSU5UX01BWABvdXQgb2YgbWVtb3J5CgAjJTJ4JTJ4JTJ4JTJ4ACVsZiVsZiVsZgAvYWNjZW50My8xAC9hY2NlbnQzLzIAL2FjY2VudDMvMwAvYWNjZW50NC8xAC9hY2NlbnQ0LzIAL2FjY2VudDQvMwAvYWNjZW50NC80AC9hY2NlbnQ1LzEAL2FjY2VudDUvMgAvYWNjZW50NS8zAC9hY2NlbnQ1LzQAL2FjY2VudDUvNQAvYWNjZW50Ni8xAC9hY2NlbnQ2LzIAL2FjY2VudDYvMwAvYWNjZW50Ni80AC9hY2NlbnQ2LzUAL2FjY2VudDYvNgAvYWNjZW50Ny8xAC9hY2NlbnQ3LzIAL2FjY2VudDcvMwAvYWNjZW50Ny80AC9hY2NlbnQ3LzUAL2FjY2VudDcvNgAvYWNjZW50Ny83AC9hY2NlbnQ4LzEAL2FjY2VudDgvMgAvYWNjZW50OC8zAC9hY2NlbnQ4LzQAL2FjY2VudDgvNQAvYWNjZW50OC82AC9hY2NlbnQ4LzcAL2FjY2VudDgvOAAvYmx1ZXMzLzEAL2JsdWVzMy8yAC9ibHVlczMvMwAvYmx1ZXM0LzEAL2JsdWVzNC8yAC9ibHVlczQvMwAvYmx1ZXM0LzQAL2JsdWVzNS8xAC9ibHVlczUvMgAvYmx1ZXM1LzMAL2JsdWVzNS80AC9ibHVlczUvNQAvYmx1ZXM2LzEAL2JsdWVzNi8yAC9ibHVlczYvMwAvYmx1ZXM2LzQAL2JsdWVzNi81AC9ibHVlczYvNgAvYmx1ZXM3LzEAL2JsdWVzNy8yAC9ibHVlczcvMwAvYmx1ZXM3LzQAL2JsdWVzNy81AC9ibHVlczcvNgAvYmx1ZXM3LzcAL2JsdWVzOC8xAC9ibHVlczgvMgAvYmx1ZXM4LzMAL2JsdWVzOC80AC9ibHVlczgvNQAvYmx1ZXM4LzYAL2JsdWVzOC83AC9ibHVlczgvOAAvYmx1ZXM5LzEAL2JsdWVzOS8yAC9ibHVlczkvMwAvYmx1ZXM5LzQAL2JsdWVzOS81AC9ibHVlczkvNgAvYmx1ZXM5LzcAL2JsdWVzOS84AC9ibHVlczkvOQAvYnJiZzEwLzEAL2JyYmcxMC8xMAAvYnJiZzEwLzIAL2JyYmcxMC8zAC9icmJnMTAvNAAvYnJiZzEwLzUAL2JyYmcxMC82AC9icmJnMTAvNwAvYnJiZzEwLzgAL2JyYmcxMC85AC9icmJnMTEvMQAvYnJiZzExLzEwAC9icmJnMTEvMTEAL2JyYmcxMS8yAC9icmJnMTEvMwAvYnJiZzExLzQAL2JyYmcxMS81AC9icmJnMTEvNgAvYnJiZzExLzcAL2JyYmcxMS84AC9icmJnMTEvOQAvYnJiZzMvMQAvYnJiZzMvMgAvYnJiZzMvMwAvYnJiZzQvMQAvYnJiZzQvMgAvYnJiZzQvMwAvYnJiZzQvNAAvYnJiZzUvMQAvYnJiZzUvMgAvYnJiZzUvMwAvYnJiZzUvNAAvYnJiZzUvNQAvYnJiZzYvMQAvYnJiZzYvMgAvYnJiZzYvMwAvYnJiZzYvNAAvYnJiZzYvNQAvYnJiZzYvNgAvYnJiZzcvMQAvYnJiZzcvMgAvYnJiZzcvMwAvYnJiZzcvNAAvYnJiZzcvNQAvYnJiZzcvNgAvYnJiZzcvNwAvYnJiZzgvMQAvYnJiZzgvMgAvYnJiZzgvMwAvYnJiZzgvNAAvYnJiZzgvNQAvYnJiZzgvNgAvYnJiZzgvNwAvYnJiZzgvOAAvYnJiZzkvMQAvYnJiZzkvMgAvYnJiZzkvMwAvYnJiZzkvNAAvYnJiZzkvNQAvYnJiZzkvNgAvYnJiZzkvNwAvYnJiZzkvOAAvYnJiZzkvOQAvYnVnbjMvMQAvYnVnbjMvMgAvYnVnbjMvMwAvYnVnbjQvMQAvYnVnbjQvMgAvYnVnbjQvMwAvYnVnbjQvNAAvYnVnbjUvMQAvYnVnbjUvMgAvYnVnbjUvMwAvYnVnbjUvNAAvYnVnbjUvNQAvYnVnbjYvMQAvYnVnbjYvMgAvYnVnbjYvMwAvYnVnbjYvNAAvYnVnbjYvNQAvYnVnbjYvNgAvYnVnbjcvMQAvYnVnbjcvMgAvYnVnbjcvMwAvYnVnbjcvNAAvYnVnbjcvNQAvYnVnbjcvNgAvYnVnbjcvNwAvYnVnbjgvMQAvYnVnbjgvMgAvYnVnbjgvMwAvYnVnbjgvNAAvYnVnbjgvNQAvYnVnbjgvNgAvYnVnbjgvNwAvYnVnbjgvOAAvYnVnbjkvMQAvYnVnbjkvMgAvYnVnbjkvMwAvYnVnbjkvNAAvYnVnbjkvNQAvYnVnbjkvNgAvYnVnbjkvNwAvYnVnbjkvOAAvYnVnbjkvOQAvYnVwdTMvMQAvYnVwdTMvMgAvYnVwdTMvMwAvYnVwdTQvMQAvYnVwdTQvMgAvYnVwdTQvMwAvYnVwdTQvNAAvYnVwdTUvMQAvYnVwdTUvMgAvYnVwdTUvMwAvYnVwdTUvNAAvYnVwdTUvNQAvYnVwdTYvMQAvYnVwdTYvMgAvYnVwdTYvMwAvYnVwdTYvNAAvYnVwdTYvNQAvYnVwdTYvNgAvYnVwdTcvMQAvYnVwdTcvMgAvYnVwdTcvMwAvYnVwdTcvNAAvYnVwdTcvNQAvYnVwdTcvNgAvYnVwdTcvNwAvYnVwdTgvMQAvYnVwdTgvMgAvYnVwdTgvMwAvYnVwdTgvNAAvYnVwdTgvNQAvYnVwdTgvNgAvYnVwdTgvNwAvYnVwdTgvOAAvYnVwdTkvMQAvYnVwdTkvMgAvYnVwdTkvMwAvYnVwdTkvNAAvYnVwdTkvNQAvYnVwdTkvNgAvYnVwdTkvNwAvYnVwdTkvOAAvYnVwdTkvOQAvZGFyazIzLzEAL2RhcmsyMy8yAC9kYXJrMjMvMwAvZGFyazI0LzEAL2RhcmsyNC8yAC9kYXJrMjQvMwAvZGFyazI0LzQAL2RhcmsyNS8xAC9kYXJrMjUvMgAvZGFyazI1LzMAL2RhcmsyNS80AC9kYXJrMjUvNQAvZGFyazI2LzEAL2RhcmsyNi8yAC9kYXJrMjYvMwAvZGFyazI2LzQAL2RhcmsyNi81AC9kYXJrMjYvNgAvZGFyazI3LzEAL2RhcmsyNy8yAC9kYXJrMjcvMwAvZGFyazI3LzQAL2RhcmsyNy81AC9kYXJrMjcvNgAvZGFyazI3LzcAL2RhcmsyOC8xAC9kYXJrMjgvMgAvZGFyazI4LzMAL2RhcmsyOC80AC9kYXJrMjgvNQAvZGFyazI4LzYAL2RhcmsyOC83AC9kYXJrMjgvOAAvZ25idTMvMQAvZ25idTMvMgAvZ25idTMvMwAvZ25idTQvMQAvZ25idTQvMgAvZ25idTQvMwAvZ25idTQvNAAvZ25idTUvMQAvZ25idTUvMgAvZ25idTUvMwAvZ25idTUvNAAvZ25idTUvNQAvZ25idTYvMQAvZ25idTYvMgAvZ25idTYvMwAvZ25idTYvNAAvZ25idTYvNQAvZ25idTYvNgAvZ25idTcvMQAvZ25idTcvMgAvZ25idTcvMwAvZ25idTcvNAAvZ25idTcvNQAvZ25idTcvNgAvZ25idTcvNwAvZ25idTgvMQAvZ25idTgvMgAvZ25idTgvMwAvZ25idTgvNAAvZ25idTgvNQAvZ25idTgvNgAvZ25idTgvNwAvZ25idTgvOAAvZ25idTkvMQAvZ25idTkvMgAvZ25idTkvMwAvZ25idTkvNAAvZ25idTkvNQAvZ25idTkvNgAvZ25idTkvNwAvZ25idTkvOAAvZ25idTkvOQAvZ3JlZW5zMy8xAC9ncmVlbnMzLzIAL2dyZWVuczMvMwAvZ3JlZW5zNC8xAC9ncmVlbnM0LzIAL2dyZWVuczQvMwAvZ3JlZW5zNC80AC9ncmVlbnM1LzEAL2dyZWVuczUvMgAvZ3JlZW5zNS8zAC9ncmVlbnM1LzQAL2dyZWVuczUvNQAvZ3JlZW5zNi8xAC9ncmVlbnM2LzIAL2dyZWVuczYvMwAvZ3JlZW5zNi80AC9ncmVlbnM2LzUAL2dyZWVuczYvNgAvZ3JlZW5zNy8xAC9ncmVlbnM3LzIAL2dyZWVuczcvMwAvZ3JlZW5zNy80AC9ncmVlbnM3LzUAL2dyZWVuczcvNgAvZ3JlZW5zNy83AC9ncmVlbnM4LzEAL2dyZWVuczgvMgAvZ3JlZW5zOC8zAC9ncmVlbnM4LzQAL2dyZWVuczgvNQAvZ3JlZW5zOC82AC9ncmVlbnM4LzcAL2dyZWVuczgvOAAvZ3JlZW5zOS8xAC9ncmVlbnM5LzIAL2dyZWVuczkvMwAvZ3JlZW5zOS80AC9ncmVlbnM5LzUAL2dyZWVuczkvNgAvZ3JlZW5zOS83AC9ncmVlbnM5LzgAL2dyZWVuczkvOQAvZ3JleXMzLzEAL2dyZXlzMy8yAC9ncmV5czMvMwAvZ3JleXM0LzEAL2dyZXlzNC8yAC9ncmV5czQvMwAvZ3JleXM0LzQAL2dyZXlzNS8xAC9ncmV5czUvMgAvZ3JleXM1LzMAL2dyZXlzNS80AC9ncmV5czUvNQAvZ3JleXM2LzEAL2dyZXlzNi8yAC9ncmV5czYvMwAvZ3JleXM2LzQAL2dyZXlzNi81AC9ncmV5czYvNgAvZ3JleXM3LzEAL2dyZXlzNy8yAC9ncmV5czcvMwAvZ3JleXM3LzQAL2dyZXlzNy81AC9ncmV5czcvNgAvZ3JleXM3LzcAL2dyZXlzOC8xAC9ncmV5czgvMgAvZ3JleXM4LzMAL2dyZXlzOC80AC9ncmV5czgvNQAvZ3JleXM4LzYAL2dyZXlzOC83AC9ncmV5czgvOAAvZ3JleXM5LzEAL2dyZXlzOS8yAC9ncmV5czkvMwAvZ3JleXM5LzQAL2dyZXlzOS81AC9ncmV5czkvNgAvZ3JleXM5LzcAL2dyZXlzOS84AC9ncmV5czkvOQAvb3JhbmdlczMvMQAvb3JhbmdlczMvMgAvb3JhbmdlczMvMwAvb3JhbmdlczQvMQAvb3JhbmdlczQvMgAvb3JhbmdlczQvMwAvb3JhbmdlczQvNAAvb3JhbmdlczUvMQAvb3JhbmdlczUvMgAvb3JhbmdlczUvMwAvb3JhbmdlczUvNAAvb3JhbmdlczUvNQAvb3JhbmdlczYvMQAvb3JhbmdlczYvMgAvb3JhbmdlczYvMwAvb3JhbmdlczYvNAAvb3JhbmdlczYvNQAvb3JhbmdlczYvNgAvb3JhbmdlczcvMQAvb3JhbmdlczcvMgAvb3JhbmdlczcvMwAvb3JhbmdlczcvNAAvb3JhbmdlczcvNQAvb3JhbmdlczcvNgAvb3JhbmdlczcvNwAvb3JhbmdlczgvMQAvb3JhbmdlczgvMgAvb3JhbmdlczgvMwAvb3JhbmdlczgvNAAvb3JhbmdlczgvNQAvb3JhbmdlczgvNgAvb3JhbmdlczgvNwAvb3JhbmdlczgvOAAvb3JhbmdlczkvMQAvb3JhbmdlczkvMgAvb3JhbmdlczkvMwAvb3JhbmdlczkvNAAvb3JhbmdlczkvNQAvb3JhbmdlczkvNgAvb3JhbmdlczkvNwAvb3JhbmdlczkvOAAvb3JhbmdlczkvOQAvb3JyZDMvMQAvb3JyZDMvMgAvb3JyZDMvMwAvb3JyZDQvMQAvb3JyZDQvMgAvb3JyZDQvMwAvb3JyZDQvNAAvb3JyZDUvMQAvb3JyZDUvMgAvb3JyZDUvMwAvb3JyZDUvNAAvb3JyZDUvNQAvb3JyZDYvMQAvb3JyZDYvMgAvb3JyZDYvMwAvb3JyZDYvNAAvb3JyZDYvNQAvb3JyZDYvNgAvb3JyZDcvMQAvb3JyZDcvMgAvb3JyZDcvMwAvb3JyZDcvNAAvb3JyZDcvNQAvb3JyZDcvNgAvb3JyZDcvNwAvb3JyZDgvMQAvb3JyZDgvMgAvb3JyZDgvMwAvb3JyZDgvNAAvb3JyZDgvNQAvb3JyZDgvNgAvb3JyZDgvNwAvb3JyZDgvOAAvb3JyZDkvMQAvb3JyZDkvMgAvb3JyZDkvMwAvb3JyZDkvNAAvb3JyZDkvNQAvb3JyZDkvNgAvb3JyZDkvNwAvb3JyZDkvOAAvb3JyZDkvOQAvcGFpcmVkMTAvMQAvcGFpcmVkMTAvMTAAL3BhaXJlZDEwLzIAL3BhaXJlZDEwLzMAL3BhaXJlZDEwLzQAL3BhaXJlZDEwLzUAL3BhaXJlZDEwLzYAL3BhaXJlZDEwLzcAL3BhaXJlZDEwLzgAL3BhaXJlZDEwLzkAL3BhaXJlZDExLzEAL3BhaXJlZDExLzEwAC9wYWlyZWQxMS8xMQAvcGFpcmVkMTEvMgAvcGFpcmVkMTEvMwAvcGFpcmVkMTEvNAAvcGFpcmVkMTEvNQAvcGFpcmVkMTEvNgAvcGFpcmVkMTEvNwAvcGFpcmVkMTEvOAAvcGFpcmVkMTEvOQAvcGFpcmVkMTIvMQAvcGFpcmVkMTIvMTAAL3BhaXJlZDEyLzExAC9wYWlyZWQxMi8xMgAvcGFpcmVkMTIvMgAvcGFpcmVkMTIvMwAvcGFpcmVkMTIvNAAvcGFpcmVkMTIvNQAvcGFpcmVkMTIvNgAvcGFpcmVkMTIvNwAvcGFpcmVkMTIvOAAvcGFpcmVkMTIvOQAvcGFpcmVkMy8xAC9wYWlyZWQzLzIAL3BhaXJlZDMvMwAvcGFpcmVkNC8xAC9wYWlyZWQ0LzIAL3BhaXJlZDQvMwAvcGFpcmVkNC80AC9wYWlyZWQ1LzEAL3BhaXJlZDUvMgAvcGFpcmVkNS8zAC9wYWlyZWQ1LzQAL3BhaXJlZDUvNQAvcGFpcmVkNi8xAC9wYWlyZWQ2LzIAL3BhaXJlZDYvMwAvcGFpcmVkNi80AC9wYWlyZWQ2LzUAL3BhaXJlZDYvNgAvcGFpcmVkNy8xAC9wYWlyZWQ3LzIAL3BhaXJlZDcvMwAvcGFpcmVkNy80AC9wYWlyZWQ3LzUAL3BhaXJlZDcvNgAvcGFpcmVkNy83AC9wYWlyZWQ4LzEAL3BhaXJlZDgvMgAvcGFpcmVkOC8zAC9wYWlyZWQ4LzQAL3BhaXJlZDgvNQAvcGFpcmVkOC82AC9wYWlyZWQ4LzcAL3BhaXJlZDgvOAAvcGFpcmVkOS8xAC9wYWlyZWQ5LzIAL3BhaXJlZDkvMwAvcGFpcmVkOS80AC9wYWlyZWQ5LzUAL3BhaXJlZDkvNgAvcGFpcmVkOS83AC9wYWlyZWQ5LzgAL3BhaXJlZDkvOQAvcGFzdGVsMTMvMQAvcGFzdGVsMTMvMgAvcGFzdGVsMTMvMwAvcGFzdGVsMTQvMQAvcGFzdGVsMTQvMgAvcGFzdGVsMTQvMwAvcGFzdGVsMTQvNAAvcGFzdGVsMTUvMQAvcGFzdGVsMTUvMgAvcGFzdGVsMTUvMwAvcGFzdGVsMTUvNAAvcGFzdGVsMTUvNQAvcGFzdGVsMTYvMQAvcGFzdGVsMTYvMgAvcGFzdGVsMTYvMwAvcGFzdGVsMTYvNAAvcGFzdGVsMTYvNQAvcGFzdGVsMTYvNgAvcGFzdGVsMTcvMQAvcGFzdGVsMTcvMgAvcGFzdGVsMTcvMwAvcGFzdGVsMTcvNAAvcGFzdGVsMTcvNQAvcGFzdGVsMTcvNgAvcGFzdGVsMTcvNwAvcGFzdGVsMTgvMQAvcGFzdGVsMTgvMgAvcGFzdGVsMTgvMwAvcGFzdGVsMTgvNAAvcGFzdGVsMTgvNQAvcGFzdGVsMTgvNgAvcGFzdGVsMTgvNwAvcGFzdGVsMTgvOAAvcGFzdGVsMTkvMQAvcGFzdGVsMTkvMgAvcGFzdGVsMTkvMwAvcGFzdGVsMTkvNAAvcGFzdGVsMTkvNQAvcGFzdGVsMTkvNgAvcGFzdGVsMTkvNwAvcGFzdGVsMTkvOAAvcGFzdGVsMTkvOQAvcGFzdGVsMjMvMQAvcGFzdGVsMjMvMgAvcGFzdGVsMjMvMwAvcGFzdGVsMjQvMQAvcGFzdGVsMjQvMgAvcGFzdGVsMjQvMwAvcGFzdGVsMjQvNAAvcGFzdGVsMjUvMQAvcGFzdGVsMjUvMgAvcGFzdGVsMjUvMwAvcGFzdGVsMjUvNAAvcGFzdGVsMjUvNQAvcGFzdGVsMjYvMQAvcGFzdGVsMjYvMgAvcGFzdGVsMjYvMwAvcGFzdGVsMjYvNAAvcGFzdGVsMjYvNQAvcGFzdGVsMjYvNgAvcGFzdGVsMjcvMQAvcGFzdGVsMjcvMgAvcGFzdGVsMjcvMwAvcGFzdGVsMjcvNAAvcGFzdGVsMjcvNQAvcGFzdGVsMjcvNgAvcGFzdGVsMjcvNwAvcGFzdGVsMjgvMQAvcGFzdGVsMjgvMgAvcGFzdGVsMjgvMwAvcGFzdGVsMjgvNAAvcGFzdGVsMjgvNQAvcGFzdGVsMjgvNgAvcGFzdGVsMjgvNwAvcGFzdGVsMjgvOAAvcGl5ZzEwLzEAL3BpeWcxMC8xMAAvcGl5ZzEwLzIAL3BpeWcxMC8zAC9waXlnMTAvNAAvcGl5ZzEwLzUAL3BpeWcxMC82AC9waXlnMTAvNwAvcGl5ZzEwLzgAL3BpeWcxMC85AC9waXlnMTEvMQAvcGl5ZzExLzEwAC9waXlnMTEvMTEAL3BpeWcxMS8yAC9waXlnMTEvMwAvcGl5ZzExLzQAL3BpeWcxMS81AC9waXlnMTEvNgAvcGl5ZzExLzcAL3BpeWcxMS84AC9waXlnMTEvOQAvcGl5ZzMvMQAvcGl5ZzMvMgAvcGl5ZzMvMwAvcGl5ZzQvMQAvcGl5ZzQvMgAvcGl5ZzQvMwAvcGl5ZzQvNAAvcGl5ZzUvMQAvcGl5ZzUvMgAvcGl5ZzUvMwAvcGl5ZzUvNAAvcGl5ZzUvNQAvcGl5ZzYvMQAvcGl5ZzYvMgAvcGl5ZzYvMwAvcGl5ZzYvNAAvcGl5ZzYvNQAvcGl5ZzYvNgAvcGl5ZzcvMQAvcGl5ZzcvMgAvcGl5ZzcvMwAvcGl5ZzcvNAAvcGl5ZzcvNQAvcGl5ZzcvNgAvcGl5ZzcvNwAvcGl5ZzgvMQAvcGl5ZzgvMgAvcGl5ZzgvMwAvcGl5ZzgvNAAvcGl5ZzgvNQAvcGl5ZzgvNgAvcGl5ZzgvNwAvcGl5ZzgvOAAvcGl5ZzkvMQAvcGl5ZzkvMgAvcGl5ZzkvMwAvcGl5ZzkvNAAvcGl5ZzkvNQAvcGl5ZzkvNgAvcGl5ZzkvNwAvcGl5ZzkvOAAvcGl5ZzkvOQAvcHJnbjEwLzEAL3ByZ24xMC8xMAAvcHJnbjEwLzIAL3ByZ24xMC8zAC9wcmduMTAvNAAvcHJnbjEwLzUAL3ByZ24xMC82AC9wcmduMTAvNwAvcHJnbjEwLzgAL3ByZ24xMC85AC9wcmduMTEvMQAvcHJnbjExLzEwAC9wcmduMTEvMTEAL3ByZ24xMS8yAC9wcmduMTEvMwAvcHJnbjExLzQAL3ByZ24xMS81AC9wcmduMTEvNgAvcHJnbjExLzcAL3ByZ24xMS84AC9wcmduMTEvOQAvcHJnbjMvMQAvcHJnbjMvMgAvcHJnbjMvMwAvcHJnbjQvMQAvcHJnbjQvMgAvcHJnbjQvMwAvcHJnbjQvNAAvcHJnbjUvMQAvcHJnbjUvMgAvcHJnbjUvMwAvcHJnbjUvNAAvcHJnbjUvNQAvcHJnbjYvMQAvcHJnbjYvMgAvcHJnbjYvMwAvcHJnbjYvNAAvcHJnbjYvNQAvcHJnbjYvNgAvcHJnbjcvMQAvcHJnbjcvMgAvcHJnbjcvMwAvcHJnbjcvNAAvcHJnbjcvNQAvcHJnbjcvNgAvcHJnbjcvNwAvcHJnbjgvMQAvcHJnbjgvMgAvcHJnbjgvMwAvcHJnbjgvNAAvcHJnbjgvNQAvcHJnbjgvNgAvcHJnbjgvNwAvcHJnbjgvOAAvcHJnbjkvMQAvcHJnbjkvMgAvcHJnbjkvMwAvcHJnbjkvNAAvcHJnbjkvNQAvcHJnbjkvNgAvcHJnbjkvNwAvcHJnbjkvOAAvcHJnbjkvOQAvcHVidTMvMQAvcHVidTMvMgAvcHVidTMvMwAvcHVidTQvMQAvcHVidTQvMgAvcHVidTQvMwAvcHVidTQvNAAvcHVidTUvMQAvcHVidTUvMgAvcHVidTUvMwAvcHVidTUvNAAvcHVidTUvNQAvcHVidTYvMQAvcHVidTYvMgAvcHVidTYvMwAvcHVidTYvNAAvcHVidTYvNQAvcHVidTYvNgAvcHVidTcvMQAvcHVidTcvMgAvcHVidTcvMwAvcHVidTcvNAAvcHVidTcvNQAvcHVidTcvNgAvcHVidTcvNwAvcHVidTgvMQAvcHVidTgvMgAvcHVidTgvMwAvcHVidTgvNAAvcHVidTgvNQAvcHVidTgvNgAvcHVidTgvNwAvcHVidTgvOAAvcHVidTkvMQAvcHVidTkvMgAvcHVidTkvMwAvcHVidTkvNAAvcHVidTkvNQAvcHVidTkvNgAvcHVidTkvNwAvcHVidTkvOAAvcHVidTkvOQAvcHVidWduMy8xAC9wdWJ1Z24zLzIAL3B1YnVnbjMvMwAvcHVidWduNC8xAC9wdWJ1Z240LzIAL3B1YnVnbjQvMwAvcHVidWduNC80AC9wdWJ1Z241LzEAL3B1YnVnbjUvMgAvcHVidWduNS8zAC9wdWJ1Z241LzQAL3B1YnVnbjUvNQAvcHVidWduNi8xAC9wdWJ1Z242LzIAL3B1YnVnbjYvMwAvcHVidWduNi80AC9wdWJ1Z242LzUAL3B1YnVnbjYvNgAvcHVidWduNy8xAC9wdWJ1Z243LzIAL3B1YnVnbjcvMwAvcHVidWduNy80AC9wdWJ1Z243LzUAL3B1YnVnbjcvNgAvcHVidWduNy83AC9wdWJ1Z244LzEAL3B1YnVnbjgvMgAvcHVidWduOC8zAC9wdWJ1Z244LzQAL3B1YnVnbjgvNQAvcHVidWduOC82AC9wdWJ1Z244LzcAL3B1YnVnbjgvOAAvcHVidWduOS8xAC9wdWJ1Z245LzIAL3B1YnVnbjkvMwAvcHVidWduOS80AC9wdWJ1Z245LzUAL3B1YnVnbjkvNgAvcHVidWduOS83AC9wdWJ1Z245LzgAL3B1YnVnbjkvOQAvcHVvcjEwLzEAL3B1b3IxMC8xMAAvcHVvcjEwLzIAL3B1b3IxMC8zAC9wdW9yMTAvNAAvcHVvcjEwLzUAL3B1b3IxMC82AC9wdW9yMTAvNwAvcHVvcjEwLzgAL3B1b3IxMC85AC9wdW9yMTEvMQAvcHVvcjExLzEwAC9wdW9yMTEvMTEAL3B1b3IxMS8yAC9wdW9yMTEvMwAvcHVvcjExLzQAL3B1b3IxMS81AC9wdW9yMTEvNgAvcHVvcjExLzcAL3B1b3IxMS84AC9wdW9yMTEvOQAvcHVvcjMvMQAvcHVvcjMvMgAvcHVvcjMvMwAvcHVvcjQvMQAvcHVvcjQvMgAvcHVvcjQvMwAvcHVvcjQvNAAvcHVvcjUvMQAvcHVvcjUvMgAvcHVvcjUvMwAvcHVvcjUvNAAvcHVvcjUvNQAvcHVvcjYvMQAvcHVvcjYvMgAvcHVvcjYvMwAvcHVvcjYvNAAvcHVvcjYvNQAvcHVvcjYvNgAvcHVvcjcvMQAvcHVvcjcvMgAvcHVvcjcvMwAvcHVvcjcvNAAvcHVvcjcvNQAvcHVvcjcvNgAvcHVvcjcvNwAvcHVvcjgvMQAvcHVvcjgvMgAvcHVvcjgvMwAvcHVvcjgvNAAvcHVvcjgvNQAvcHVvcjgvNgAvcHVvcjgvNwAvcHVvcjgvOAAvcHVvcjkvMQAvcHVvcjkvMgAvcHVvcjkvMwAvcHVvcjkvNAAvcHVvcjkvNQAvcHVvcjkvNgAvcHVvcjkvNwAvcHVvcjkvOAAvcHVvcjkvOQAvcHVyZDMvMQAvcHVyZDMvMgAvcHVyZDMvMwAvcHVyZDQvMQAvcHVyZDQvMgAvcHVyZDQvMwAvcHVyZDQvNAAvcHVyZDUvMQAvcHVyZDUvMgAvcHVyZDUvMwAvcHVyZDUvNAAvcHVyZDUvNQAvcHVyZDYvMQAvcHVyZDYvMgAvcHVyZDYvMwAvcHVyZDYvNAAvcHVyZDYvNQAvcHVyZDYvNgAvcHVyZDcvMQAvcHVyZDcvMgAvcHVyZDcvMwAvcHVyZDcvNAAvcHVyZDcvNQAvcHVyZDcvNgAvcHVyZDcvNwAvcHVyZDgvMQAvcHVyZDgvMgAvcHVyZDgvMwAvcHVyZDgvNAAvcHVyZDgvNQAvcHVyZDgvNgAvcHVyZDgvNwAvcHVyZDgvOAAvcHVyZDkvMQAvcHVyZDkvMgAvcHVyZDkvMwAvcHVyZDkvNAAvcHVyZDkvNQAvcHVyZDkvNgAvcHVyZDkvNwAvcHVyZDkvOAAvcHVyZDkvOQAvcHVycGxlczMvMQAvcHVycGxlczMvMgAvcHVycGxlczMvMwAvcHVycGxlczQvMQAvcHVycGxlczQvMgAvcHVycGxlczQvMwAvcHVycGxlczQvNAAvcHVycGxlczUvMQAvcHVycGxlczUvMgAvcHVycGxlczUvMwAvcHVycGxlczUvNAAvcHVycGxlczUvNQAvcHVycGxlczYvMQAvcHVycGxlczYvMgAvcHVycGxlczYvMwAvcHVycGxlczYvNAAvcHVycGxlczYvNQAvcHVycGxlczYvNgAvcHVycGxlczcvMQAvcHVycGxlczcvMgAvcHVycGxlczcvMwAvcHVycGxlczcvNAAvcHVycGxlczcvNQAvcHVycGxlczcvNgAvcHVycGxlczcvNwAvcHVycGxlczgvMQAvcHVycGxlczgvMgAvcHVycGxlczgvMwAvcHVycGxlczgvNAAvcHVycGxlczgvNQAvcHVycGxlczgvNgAvcHVycGxlczgvNwAvcHVycGxlczgvOAAvcHVycGxlczkvMQAvcHVycGxlczkvMgAvcHVycGxlczkvMwAvcHVycGxlczkvNAAvcHVycGxlczkvNQAvcHVycGxlczkvNgAvcHVycGxlczkvNwAvcHVycGxlczkvOAAvcHVycGxlczkvOQAvcmRidTEwLzEAL3JkYnUxMC8xMAAvcmRidTEwLzIAL3JkYnUxMC8zAC9yZGJ1MTAvNAAvcmRidTEwLzUAL3JkYnUxMC82AC9yZGJ1MTAvNwAvcmRidTEwLzgAL3JkYnUxMC85AC9yZGJ1MTEvMQAvcmRidTExLzEwAC9yZGJ1MTEvMTEAL3JkYnUxMS8yAC9yZGJ1MTEvMwAvcmRidTExLzQAL3JkYnUxMS81AC9yZGJ1MTEvNgAvcmRidTExLzcAL3JkYnUxMS84AC9yZGJ1MTEvOQAvcmRidTMvMQAvcmRidTMvMgAvcmRidTMvMwAvcmRidTQvMQAvcmRidTQvMgAvcmRidTQvMwAvcmRidTQvNAAvcmRidTUvMQAvcmRidTUvMgAvcmRidTUvMwAvcmRidTUvNAAvcmRidTUvNQAvcmRidTYvMQAvcmRidTYvMgAvcmRidTYvMwAvcmRidTYvNAAvcmRidTYvNQAvcmRidTYvNgAvcmRidTcvMQAvcmRidTcvMgAvcmRidTcvMwAvcmRidTcvNAAvcmRidTcvNQAvcmRidTcvNgAvcmRidTcvNwAvcmRidTgvMQAvcmRidTgvMgAvcmRidTgvMwAvcmRidTgvNAAvcmRidTgvNQAvcmRidTgvNgAvcmRidTgvNwAvcmRidTgvOAAvcmRidTkvMQAvcmRidTkvMgAvcmRidTkvMwAvcmRidTkvNAAvcmRidTkvNQAvcmRidTkvNgAvcmRidTkvNwAvcmRidTkvOAAvcmRidTkvOQAvcmRneTEwLzEAL3JkZ3kxMC8xMAAvcmRneTEwLzIAL3JkZ3kxMC8zAC9yZGd5MTAvNAAvcmRneTEwLzUAL3JkZ3kxMC82AC9yZGd5MTAvNwAvcmRneTEwLzgAL3JkZ3kxMC85AC9yZGd5MTEvMQAvcmRneTExLzEwAC9yZGd5MTEvMTEAL3JkZ3kxMS8yAC9yZGd5MTEvMwAvcmRneTExLzQAL3JkZ3kxMS81AC9yZGd5MTEvNgAvcmRneTExLzcAL3JkZ3kxMS84AC9yZGd5MTEvOQAvcmRneTMvMQAvcmRneTMvMgAvcmRneTMvMwAvcmRneTQvMQAvcmRneTQvMgAvcmRneTQvMwAvcmRneTQvNAAvcmRneTUvMQAvcmRneTUvMgAvcmRneTUvMwAvcmRneTUvNAAvcmRneTUvNQAvcmRneTYvMQAvcmRneTYvMgAvcmRneTYvMwAvcmRneTYvNAAvcmRneTYvNQAvcmRneTYvNgAvcmRneTcvMQAvcmRneTcvMgAvcmRneTcvMwAvcmRneTcvNAAvcmRneTcvNQAvcmRneTcvNgAvcmRneTcvNwAvcmRneTgvMQAvcmRneTgvMgAvcmRneTgvMwAvcmRneTgvNAAvcmRneTgvNQAvcmRneTgvNgAvcmRneTgvNwAvcmRneTgvOAAvcmRneTkvMQAvcmRneTkvMgAvcmRneTkvMwAvcmRneTkvNAAvcmRneTkvNQAvcmRneTkvNgAvcmRneTkvNwAvcmRneTkvOAAvcmRneTkvOQAvcmRwdTMvMQAvcmRwdTMvMgAvcmRwdTMvMwAvcmRwdTQvMQAvcmRwdTQvMgAvcmRwdTQvMwAvcmRwdTQvNAAvcmRwdTUvMQAvcmRwdTUvMgAvcmRwdTUvMwAvcmRwdTUvNAAvcmRwdTUvNQAvcmRwdTYvMQAvcmRwdTYvMgAvcmRwdTYvMwAvcmRwdTYvNAAvcmRwdTYvNQAvcmRwdTYvNgAvcmRwdTcvMQAvcmRwdTcvMgAvcmRwdTcvMwAvcmRwdTcvNAAvcmRwdTcvNQAvcmRwdTcvNgAvcmRwdTcvNwAvcmRwdTgvMQAvcmRwdTgvMgAvcmRwdTgvMwAvcmRwdTgvNAAvcmRwdTgvNQAvcmRwdTgvNgAvcmRwdTgvNwAvcmRwdTgvOAAvcmRwdTkvMQAvcmRwdTkvMgAvcmRwdTkvMwAvcmRwdTkvNAAvcmRwdTkvNQAvcmRwdTkvNgAvcmRwdTkvNwAvcmRwdTkvOAAvcmRwdTkvOQAvcmR5bGJ1MTAvMQAvcmR5bGJ1MTAvMTAAL3JkeWxidTEwLzIAL3JkeWxidTEwLzMAL3JkeWxidTEwLzQAL3JkeWxidTEwLzUAL3JkeWxidTEwLzYAL3JkeWxidTEwLzcAL3JkeWxidTEwLzgAL3JkeWxidTEwLzkAL3JkeWxidTExLzEAL3JkeWxidTExLzEwAC9yZHlsYnUxMS8xMQAvcmR5bGJ1MTEvMgAvcmR5bGJ1MTEvMwAvcmR5bGJ1MTEvNAAvcmR5bGJ1MTEvNQAvcmR5bGJ1MTEvNgAvcmR5bGJ1MTEvNwAvcmR5bGJ1MTEvOAAvcmR5bGJ1MTEvOQAvcmR5bGJ1My8xAC9yZHlsYnUzLzIAL3JkeWxidTMvMwAvcmR5bGJ1NC8xAC9yZHlsYnU0LzIAL3JkeWxidTQvMwAvcmR5bGJ1NC80AC9yZHlsYnU1LzEAL3JkeWxidTUvMgAvcmR5bGJ1NS8zAC9yZHlsYnU1LzQAL3JkeWxidTUvNQAvcmR5bGJ1Ni8xAC9yZHlsYnU2LzIAL3JkeWxidTYvMwAvcmR5bGJ1Ni80AC9yZHlsYnU2LzUAL3JkeWxidTYvNgAvcmR5bGJ1Ny8xAC9yZHlsYnU3LzIAL3JkeWxidTcvMwAvcmR5bGJ1Ny80AC9yZHlsYnU3LzUAL3JkeWxidTcvNgAvcmR5bGJ1Ny83AC9yZHlsYnU4LzEAL3JkeWxidTgvMgAvcmR5bGJ1OC8zAC9yZHlsYnU4LzQAL3JkeWxidTgvNQAvcmR5bGJ1OC82AC9yZHlsYnU4LzcAL3JkeWxidTgvOAAvcmR5bGJ1OS8xAC9yZHlsYnU5LzIAL3JkeWxidTkvMwAvcmR5bGJ1OS80AC9yZHlsYnU5LzUAL3JkeWxidTkvNgAvcmR5bGJ1OS83AC9yZHlsYnU5LzgAL3JkeWxidTkvOQAvcmR5bGduMTAvMQAvcmR5bGduMTAvMTAAL3JkeWxnbjEwLzIAL3JkeWxnbjEwLzMAL3JkeWxnbjEwLzQAL3JkeWxnbjEwLzUAL3JkeWxnbjEwLzYAL3JkeWxnbjEwLzcAL3JkeWxnbjEwLzgAL3JkeWxnbjEwLzkAL3JkeWxnbjExLzEAL3JkeWxnbjExLzEwAC9yZHlsZ24xMS8xMQAvcmR5bGduMTEvMgAvcmR5bGduMTEvMwAvcmR5bGduMTEvNAAvcmR5bGduMTEvNQAvcmR5bGduMTEvNgAvcmR5bGduMTEvNwAvcmR5bGduMTEvOAAvcmR5bGduMTEvOQAvcmR5bGduMy8xAC9yZHlsZ24zLzIAL3JkeWxnbjMvMwAvcmR5bGduNC8xAC9yZHlsZ240LzIAL3JkeWxnbjQvMwAvcmR5bGduNC80AC9yZHlsZ241LzEAL3JkeWxnbjUvMgAvcmR5bGduNS8zAC9yZHlsZ241LzQAL3JkeWxnbjUvNQAvcmR5bGduNi8xAC9yZHlsZ242LzIAL3JkeWxnbjYvMwAvcmR5bGduNi80AC9yZHlsZ242LzUAL3JkeWxnbjYvNgAvcmR5bGduNy8xAC9yZHlsZ243LzIAL3JkeWxnbjcvMwAvcmR5bGduNy80AC9yZHlsZ243LzUAL3JkeWxnbjcvNgAvcmR5bGduNy83AC9yZHlsZ244LzEAL3JkeWxnbjgvMgAvcmR5bGduOC8zAC9yZHlsZ244LzQAL3JkeWxnbjgvNQAvcmR5bGduOC82AC9yZHlsZ244LzcAL3JkeWxnbjgvOAAvcmR5bGduOS8xAC9yZHlsZ245LzIAL3JkeWxnbjkvMwAvcmR5bGduOS80AC9yZHlsZ245LzUAL3JkeWxnbjkvNgAvcmR5bGduOS83AC9yZHlsZ245LzgAL3JkeWxnbjkvOQAvcmVkczMvMQAvcmVkczMvMgAvcmVkczMvMwAvcmVkczQvMQAvcmVkczQvMgAvcmVkczQvMwAvcmVkczQvNAAvcmVkczUvMQAvcmVkczUvMgAvcmVkczUvMwAvcmVkczUvNAAvcmVkczUvNQAvcmVkczYvMQAvcmVkczYvMgAvcmVkczYvMwAvcmVkczYvNAAvcmVkczYvNQAvcmVkczYvNgAvcmVkczcvMQAvcmVkczcvMgAvcmVkczcvMwAvcmVkczcvNAAvcmVkczcvNQAvcmVkczcvNgAvcmVkczcvNwAvcmVkczgvMQAvcmVkczgvMgAvcmVkczgvMwAvcmVkczgvNAAvcmVkczgvNQAvcmVkczgvNgAvcmVkczgvNwAvcmVkczgvOAAvcmVkczkvMQAvcmVkczkvMgAvcmVkczkvMwAvcmVkczkvNAAvcmVkczkvNQAvcmVkczkvNgAvcmVkczkvNwAvcmVkczkvOAAvcmVkczkvOQAvc2V0MTMvMQAvc2V0MTMvMgAvc2V0MTMvMwAvc2V0MTQvMQAvc2V0MTQvMgAvc2V0MTQvMwAvc2V0MTQvNAAvc2V0MTUvMQAvc2V0MTUvMgAvc2V0MTUvMwAvc2V0MTUvNAAvc2V0MTUvNQAvc2V0MTYvMQAvc2V0MTYvMgAvc2V0MTYvMwAvc2V0MTYvNAAvc2V0MTYvNQAvc2V0MTYvNgAvc2V0MTcvMQAvc2V0MTcvMgAvc2V0MTcvMwAvc2V0MTcvNAAvc2V0MTcvNQAvc2V0MTcvNgAvc2V0MTcvNwAvc2V0MTgvMQAvc2V0MTgvMgAvc2V0MTgvMwAvc2V0MTgvNAAvc2V0MTgvNQAvc2V0MTgvNgAvc2V0MTgvNwAvc2V0MTgvOAAvc2V0MTkvMQAvc2V0MTkvMgAvc2V0MTkvMwAvc2V0MTkvNAAvc2V0MTkvNQAvc2V0MTkvNgAvc2V0MTkvNwAvc2V0MTkvOAAvc2V0MTkvOQAvc2V0MjMvMQAvc2V0MjMvMgAvc2V0MjMvMwAvc2V0MjQvMQAvc2V0MjQvMgAvc2V0MjQvMwAvc2V0MjQvNAAvc2V0MjUvMQAvc2V0MjUvMgAvc2V0MjUvMwAvc2V0MjUvNAAvc2V0MjUvNQAvc2V0MjYvMQAvc2V0MjYvMgAvc2V0MjYvMwAvc2V0MjYvNAAvc2V0MjYvNQAvc2V0MjYvNgAvc2V0MjcvMQAvc2V0MjcvMgAvc2V0MjcvMwAvc2V0MjcvNAAvc2V0MjcvNQAvc2V0MjcvNgAvc2V0MjcvNwAvc2V0MjgvMQAvc2V0MjgvMgAvc2V0MjgvMwAvc2V0MjgvNAAvc2V0MjgvNQAvc2V0MjgvNgAvc2V0MjgvNwAvc2V0MjgvOAAvc2V0MzEwLzEAL3NldDMxMC8xMAAvc2V0MzEwLzIAL3NldDMxMC8zAC9zZXQzMTAvNAAvc2V0MzEwLzUAL3NldDMxMC82AC9zZXQzMTAvNwAvc2V0MzEwLzgAL3NldDMxMC85AC9zZXQzMTEvMQAvc2V0MzExLzEwAC9zZXQzMTEvMTEAL3NldDMxMS8yAC9zZXQzMTEvMwAvc2V0MzExLzQAL3NldDMxMS81AC9zZXQzMTEvNgAvc2V0MzExLzcAL3NldDMxMS84AC9zZXQzMTEvOQAvc2V0MzEyLzEAL3NldDMxMi8xMAAvc2V0MzEyLzExAC9zZXQzMTIvMTIAL3NldDMxMi8yAC9zZXQzMTIvMwAvc2V0MzEyLzQAL3NldDMxMi81AC9zZXQzMTIvNgAvc2V0MzEyLzcAL3NldDMxMi84AC9zZXQzMTIvOQAvc2V0MzMvMQAvc2V0MzMvMgAvc2V0MzMvMwAvc2V0MzQvMQAvc2V0MzQvMgAvc2V0MzQvMwAvc2V0MzQvNAAvc2V0MzUvMQAvc2V0MzUvMgAvc2V0MzUvMwAvc2V0MzUvNAAvc2V0MzUvNQAvc2V0MzYvMQAvc2V0MzYvMgAvc2V0MzYvMwAvc2V0MzYvNAAvc2V0MzYvNQAvc2V0MzYvNgAvc2V0MzcvMQAvc2V0MzcvMgAvc2V0MzcvMwAvc2V0MzcvNAAvc2V0MzcvNQAvc2V0MzcvNgAvc2V0MzcvNwAvc2V0MzgvMQAvc2V0MzgvMgAvc2V0MzgvMwAvc2V0MzgvNAAvc2V0MzgvNQAvc2V0MzgvNgAvc2V0MzgvNwAvc2V0MzgvOAAvc2V0MzkvMQAvc2V0MzkvMgAvc2V0MzkvMwAvc2V0MzkvNAAvc2V0MzkvNQAvc2V0MzkvNgAvc2V0MzkvNwAvc2V0MzkvOAAvc2V0MzkvOQAvc3BlY3RyYWwxMC8xAC9zcGVjdHJhbDEwLzEwAC9zcGVjdHJhbDEwLzIAL3NwZWN0cmFsMTAvMwAvc3BlY3RyYWwxMC80AC9zcGVjdHJhbDEwLzUAL3NwZWN0cmFsMTAvNgAvc3BlY3RyYWwxMC83AC9zcGVjdHJhbDEwLzgAL3NwZWN0cmFsMTAvOQAvc3BlY3RyYWwxMS8xAC9zcGVjdHJhbDExLzEwAC9zcGVjdHJhbDExLzExAC9zcGVjdHJhbDExLzIAL3NwZWN0cmFsMTEvMwAvc3BlY3RyYWwxMS80AC9zcGVjdHJhbDExLzUAL3NwZWN0cmFsMTEvNgAvc3BlY3RyYWwxMS83AC9zcGVjdHJhbDExLzgAL3NwZWN0cmFsMTEvOQAvc3BlY3RyYWwzLzEAL3NwZWN0cmFsMy8yAC9zcGVjdHJhbDMvMwAvc3BlY3RyYWw0LzEAL3NwZWN0cmFsNC8yAC9zcGVjdHJhbDQvMwAvc3BlY3RyYWw0LzQAL3NwZWN0cmFsNS8xAC9zcGVjdHJhbDUvMgAvc3BlY3RyYWw1LzMAL3NwZWN0cmFsNS80AC9zcGVjdHJhbDUvNQAvc3BlY3RyYWw2LzEAL3NwZWN0cmFsNi8yAC9zcGVjdHJhbDYvMwAvc3BlY3RyYWw2LzQAL3NwZWN0cmFsNi81AC9zcGVjdHJhbDYvNgAvc3BlY3RyYWw3LzEAL3NwZWN0cmFsNy8yAC9zcGVjdHJhbDcvMwAvc3BlY3RyYWw3LzQAL3NwZWN0cmFsNy81AC9zcGVjdHJhbDcvNgAvc3BlY3RyYWw3LzcAL3NwZWN0cmFsOC8xAC9zcGVjdHJhbDgvMgAvc3BlY3RyYWw4LzMAL3NwZWN0cmFsOC80AC9zcGVjdHJhbDgvNQAvc3BlY3RyYWw4LzYAL3NwZWN0cmFsOC83AC9zcGVjdHJhbDgvOAAvc3BlY3RyYWw5LzEAL3NwZWN0cmFsOS8yAC9zcGVjdHJhbDkvMwAvc3BlY3RyYWw5LzQAL3NwZWN0cmFsOS81AC9zcGVjdHJhbDkvNgAvc3BlY3RyYWw5LzcAL3NwZWN0cmFsOS84AC9zcGVjdHJhbDkvOQAvc3ZnL2FsaWNlYmx1ZQAvc3ZnL2FudGlxdWV3aGl0ZQAvc3ZnL2FxdWEAL3N2Zy9hcXVhbWFyaW5lAC9zdmcvYXp1cmUAL3N2Zy9iZWlnZQAvc3ZnL2Jpc3F1ZQAvc3ZnL2JsYWNrAC9zdmcvYmxhbmNoZWRhbG1vbmQAL3N2Zy9ibHVlAC9zdmcvYmx1ZXZpb2xldAAvc3ZnL2Jyb3duAC9zdmcvYnVybHl3b29kAC9zdmcvY2FkZXRibHVlAC9zdmcvY2hhcnRyZXVzZQAvc3ZnL2Nob2NvbGF0ZQAvc3ZnL2NvcmFsAC9zdmcvY29ybmZsb3dlcmJsdWUAL3N2Zy9jb3Juc2lsawAvc3ZnL2NyaW1zb24AL3N2Zy9jeWFuAC9zdmcvZGFya2JsdWUAL3N2Zy9kYXJrY3lhbgAvc3ZnL2Rhcmtnb2xkZW5yb2QAL3N2Zy9kYXJrZ3JheQAvc3ZnL2RhcmtncmVlbgAvc3ZnL2RhcmtncmV5AC9zdmcvZGFya2toYWtpAC9zdmcvZGFya21hZ2VudGEAL3N2Zy9kYXJrb2xpdmVncmVlbgAvc3ZnL2RhcmtvcmFuZ2UAL3N2Zy9kYXJrb3JjaGlkAC9zdmcvZGFya3JlZAAvc3ZnL2RhcmtzYWxtb24AL3N2Zy9kYXJrc2VhZ3JlZW4AL3N2Zy9kYXJrc2xhdGVibHVlAC9zdmcvZGFya3NsYXRlZ3JheQAvc3ZnL2RhcmtzbGF0ZWdyZXkAL3N2Zy9kYXJrdHVycXVvaXNlAC9zdmcvZGFya3Zpb2xldAAvc3ZnL2RlZXBwaW5rAC9zdmcvZGVlcHNreWJsdWUAL3N2Zy9kaW1ncmF5AC9zdmcvZGltZ3JleQAvc3ZnL2RvZGdlcmJsdWUAL3N2Zy9maXJlYnJpY2sAL3N2Zy9mbG9yYWx3aGl0ZQAvc3ZnL2ZvcmVzdGdyZWVuAC9zdmcvZnVjaHNpYQAvc3ZnL2dhaW5zYm9ybwAvc3ZnL2dob3N0d2hpdGUAL3N2Zy9nb2xkAC9zdmcvZ29sZGVucm9kAC9zdmcvZ3JheQAvc3ZnL2dyZWVuAC9zdmcvZ3JlZW55ZWxsb3cAL3N2Zy9ncmV5AC9zdmcvaG9uZXlkZXcAL3N2Zy9ob3RwaW5rAC9zdmcvaW5kaWFucmVkAC9zdmcvaW5kaWdvAC9zdmcvaXZvcnkAL3N2Zy9raGFraQAvc3ZnL2xhdmVuZGVyAC9zdmcvbGF2ZW5kZXJibHVzaAAvc3ZnL2xhd25ncmVlbgAvc3ZnL2xlbW9uY2hpZmZvbgAvc3ZnL2xpZ2h0Ymx1ZQAvc3ZnL2xpZ2h0Y29yYWwAL3N2Zy9saWdodGN5YW4AL3N2Zy9saWdodGdvbGRlbnJvZHllbGxvdwAvc3ZnL2xpZ2h0Z3JheQAvc3ZnL2xpZ2h0Z3JlZW4AL3N2Zy9saWdodGdyZXkAL3N2Zy9saWdodHBpbmsAL3N2Zy9saWdodHNhbG1vbgAvc3ZnL2xpZ2h0c2VhZ3JlZW4AL3N2Zy9saWdodHNreWJsdWUAL3N2Zy9saWdodHNsYXRlZ3JheQAvc3ZnL2xpZ2h0c2xhdGVncmV5AC9zdmcvbGlnaHRzdGVlbGJsdWUAL3N2Zy9saWdodHllbGxvdwAvc3ZnL2xpbWUAL3N2Zy9saW1lZ3JlZW4AL3N2Zy9saW5lbgAvc3ZnL21hZ2VudGEAL3N2Zy9tYXJvb24AL3N2Zy9tZWRpdW1hcXVhbWFyaW5lAC9zdmcvbWVkaXVtYmx1ZQAvc3ZnL21lZGl1bW9yY2hpZAAvc3ZnL21lZGl1bXB1cnBsZQAvc3ZnL21lZGl1bXNlYWdyZWVuAC9zdmcvbWVkaXVtc2xhdGVibHVlAC9zdmcvbWVkaXVtc3ByaW5nZ3JlZW4AL3N2Zy9tZWRpdW10dXJxdW9pc2UAL3N2Zy9tZWRpdW12aW9sZXRyZWQAL3N2Zy9taWRuaWdodGJsdWUAL3N2Zy9taW50Y3JlYW0AL3N2Zy9taXN0eXJvc2UAL3N2Zy9tb2NjYXNpbgAvc3ZnL25hdmFqb3doaXRlAC9zdmcvbmF2eQAvc3ZnL29sZGxhY2UAL3N2Zy9vbGl2ZQAvc3ZnL29saXZlZHJhYgAvc3ZnL29yYW5nZQAvc3ZnL29yYW5nZXJlZAAvc3ZnL29yY2hpZAAvc3ZnL3BhbGVnb2xkZW5yb2QAL3N2Zy9wYWxlZ3JlZW4AL3N2Zy9wYWxldHVycXVvaXNlAC9zdmcvcGFsZXZpb2xldHJlZAAvc3ZnL3BhcGF5YXdoaXAAL3N2Zy9wZWFjaHB1ZmYAL3N2Zy9wZXJ1AC9zdmcvcGluawAvc3ZnL3BsdW0AL3N2Zy9wb3dkZXJibHVlAC9zdmcvcHVycGxlAC9zdmcvcmVkAC9zdmcvcm9zeWJyb3duAC9zdmcvcm95YWxibHVlAC9zdmcvc2FkZGxlYnJvd24AL3N2Zy9zYWxtb24AL3N2Zy9zYW5keWJyb3duAC9zdmcvc2VhZ3JlZW4AL3N2Zy9zZWFzaGVsbAAvc3ZnL3NpZW5uYQAvc3ZnL3NpbHZlcgAvc3ZnL3NreWJsdWUAL3N2Zy9zbGF0ZWJsdWUAL3N2Zy9zbGF0ZWdyYXkAL3N2Zy9zbGF0ZWdyZXkAL3N2Zy9zbm93AC9zdmcvc3ByaW5nZ3JlZW4AL3N2Zy9zdGVlbGJsdWUAL3N2Zy90YW4AL3N2Zy90ZWFsAC9zdmcvdGhpc3RsZQAvc3ZnL3RvbWF0bwAvc3ZnL3R1cnF1b2lzZQAvc3ZnL3Zpb2xldAAvc3ZnL3doZWF0AC9zdmcvd2hpdGUAL3N2Zy93aGl0ZXNtb2tlAC9zdmcveWVsbG93AC9zdmcveWVsbG93Z3JlZW4AL3lsZ24zLzEAL3lsZ24zLzIAL3lsZ24zLzMAL3lsZ240LzEAL3lsZ240LzIAL3lsZ240LzMAL3lsZ240LzQAL3lsZ241LzEAL3lsZ241LzIAL3lsZ241LzMAL3lsZ241LzQAL3lsZ241LzUAL3lsZ242LzEAL3lsZ242LzIAL3lsZ242LzMAL3lsZ242LzQAL3lsZ242LzUAL3lsZ242LzYAL3lsZ243LzEAL3lsZ243LzIAL3lsZ243LzMAL3lsZ243LzQAL3lsZ243LzUAL3lsZ243LzYAL3lsZ243LzcAL3lsZ244LzEAL3lsZ244LzIAL3lsZ244LzMAL3lsZ244LzQAL3lsZ244LzUAL3lsZ244LzYAL3lsZ244LzcAL3lsZ244LzgAL3lsZ245LzEAL3lsZ245LzIAL3lsZ245LzMAL3lsZ245LzQAL3lsZ245LzUAL3lsZ245LzYAL3lsZ245LzcAL3lsZ245LzgAL3lsZ245LzkAL3lsZ25idTMvMQAveWxnbmJ1My8yAC95bGduYnUzLzMAL3lsZ25idTQvMQAveWxnbmJ1NC8yAC95bGduYnU0LzMAL3lsZ25idTQvNAAveWxnbmJ1NS8xAC95bGduYnU1LzIAL3lsZ25idTUvMwAveWxnbmJ1NS80AC95bGduYnU1LzUAL3lsZ25idTYvMQAveWxnbmJ1Ni8yAC95bGduYnU2LzMAL3lsZ25idTYvNAAveWxnbmJ1Ni81AC95bGduYnU2LzYAL3lsZ25idTcvMQAveWxnbmJ1Ny8yAC95bGduYnU3LzMAL3lsZ25idTcvNAAveWxnbmJ1Ny81AC95bGduYnU3LzYAL3lsZ25idTcvNwAveWxnbmJ1OC8xAC95bGduYnU4LzIAL3lsZ25idTgvMwAveWxnbmJ1OC80AC95bGduYnU4LzUAL3lsZ25idTgvNgAveWxnbmJ1OC83AC95bGduYnU4LzgAL3lsZ25idTkvMQAveWxnbmJ1OS8yAC95bGduYnU5LzMAL3lsZ25idTkvNAAveWxnbmJ1OS81AC95bGduYnU5LzYAL3lsZ25idTkvNwAveWxnbmJ1OS84AC95bGduYnU5LzkAL3lsb3JicjMvMQAveWxvcmJyMy8yAC95bG9yYnIzLzMAL3lsb3JicjQvMQAveWxvcmJyNC8yAC95bG9yYnI0LzMAL3lsb3JicjQvNAAveWxvcmJyNS8xAC95bG9yYnI1LzIAL3lsb3JicjUvMwAveWxvcmJyNS80AC95bG9yYnI1LzUAL3lsb3JicjYvMQAveWxvcmJyNi8yAC95bG9yYnI2LzMAL3lsb3JicjYvNAAveWxvcmJyNi81AC95bG9yYnI2LzYAL3lsb3JicjcvMQAveWxvcmJyNy8yAC95bG9yYnI3LzMAL3lsb3JicjcvNAAveWxvcmJyNy81AC95bG9yYnI3LzYAL3lsb3JicjcvNwAveWxvcmJyOC8xAC95bG9yYnI4LzIAL3lsb3JicjgvMwAveWxvcmJyOC80AC95bG9yYnI4LzUAL3lsb3JicjgvNgAveWxvcmJyOC83AC95bG9yYnI4LzgAL3lsb3JicjkvMQAveWxvcmJyOS8yAC95bG9yYnI5LzMAL3lsb3JicjkvNAAveWxvcmJyOS81AC95bG9yYnI5LzYAL3lsb3JicjkvNwAveWxvcmJyOS84AC95bG9yYnI5LzkAL3lsb3JyZDMvMQAveWxvcnJkMy8yAC95bG9ycmQzLzMAL3lsb3JyZDQvMQAveWxvcnJkNC8yAC95bG9ycmQ0LzMAL3lsb3JyZDQvNAAveWxvcnJkNS8xAC95bG9ycmQ1LzIAL3lsb3JyZDUvMwAveWxvcnJkNS80AC95bG9ycmQ1LzUAL3lsb3JyZDYvMQAveWxvcnJkNi8yAC95bG9ycmQ2LzMAL3lsb3JyZDYvNAAveWxvcnJkNi81AC95bG9ycmQ2LzYAL3lsb3JyZDcvMQAveWxvcnJkNy8yAC95bG9ycmQ3LzMAL3lsb3JyZDcvNAAveWxvcnJkNy81AC95bG9ycmQ3LzYAL3lsb3JyZDcvNwAveWxvcnJkOC8xAC95bG9ycmQ4LzIAL3lsb3JyZDgvMwAveWxvcnJkOC80AC95bG9ycmQ4LzUAL3lsb3JyZDgvNgAveWxvcnJkOC83AC95bG9ycmQ4LzgAL3lsb3JyZDkvMQAveWxvcnJkOS8yAC95bG9ycmQ5LzMAL3lsb3JyZDkvNAAveWxvcnJkOS81AC95bG9ycmQ5LzYAL3lsb3JyZDkvNwAveWxvcnJkOS84AC95bG9ycmQ5LzkAYWxpY2VibHVlAGFudGlxdWV3aGl0ZQBhbnRpcXVld2hpdGUxAGFudGlxdWV3aGl0ZTIAYW50aXF1ZXdoaXRlMwBhbnRpcXVld2hpdGU0AGFxdWFtYXJpbmUAYXF1YW1hcmluZTEAYXF1YW1hcmluZTIAYXF1YW1hcmluZTMAYXF1YW1hcmluZTQAYXp1cmUAYXp1cmUxAGF6dXJlMgBhenVyZTMAYXp1cmU0AGJlaWdlAGJpc3F1ZQBiaXNxdWUxAGJpc3F1ZTIAYmlzcXVlMwBiaXNxdWU0AGJsYW5jaGVkYWxtb25kAGJsdWUAYmx1ZTEAYmx1ZTIAYmx1ZTMAYmx1ZTQAYmx1ZXZpb2xldABicm93bgBicm93bjEAYnJvd24yAGJyb3duMwBicm93bjQAYnVybHl3b29kAGJ1cmx5d29vZDEAYnVybHl3b29kMgBidXJseXdvb2QzAGJ1cmx5d29vZDQAY2FkZXRibHVlAGNhZGV0Ymx1ZTEAY2FkZXRibHVlMgBjYWRldGJsdWUzAGNhZGV0Ymx1ZTQAY2hhcnRyZXVzZQBjaGFydHJldXNlMQBjaGFydHJldXNlMgBjaGFydHJldXNlMwBjaGFydHJldXNlNABjaG9jb2xhdGUAY2hvY29sYXRlMQBjaG9jb2xhdGUyAGNob2NvbGF0ZTMAY2hvY29sYXRlNABjb3JhbABjb3JhbDEAY29yYWwyAGNvcmFsMwBjb3JhbDQAY29ybmZsb3dlcmJsdWUAY29ybnNpbGsAY29ybnNpbGsxAGNvcm5zaWxrMgBjb3Juc2lsazMAY29ybnNpbGs0AGNyaW1zb24AY3lhbgBjeWFuMQBjeWFuMgBjeWFuMwBjeWFuNABkYXJrZ29sZGVucm9kAGRhcmtnb2xkZW5yb2QxAGRhcmtnb2xkZW5yb2QyAGRhcmtnb2xkZW5yb2QzAGRhcmtnb2xkZW5yb2Q0AGRhcmtncmVlbgBkYXJra2hha2kAZGFya29saXZlZ3JlZW4AZGFya29saXZlZ3JlZW4xAGRhcmtvbGl2ZWdyZWVuMgBkYXJrb2xpdmVncmVlbjMAZGFya29saXZlZ3JlZW40AGRhcmtvcmFuZ2UAZGFya29yYW5nZTEAZGFya29yYW5nZTIAZGFya29yYW5nZTMAZGFya29yYW5nZTQAZGFya29yY2hpZABkYXJrb3JjaGlkMQBkYXJrb3JjaGlkMgBkYXJrb3JjaGlkMwBkYXJrb3JjaGlkNABkYXJrc2FsbW9uAGRhcmtzZWFncmVlbgBkYXJrc2VhZ3JlZW4xAGRhcmtzZWFncmVlbjIAZGFya3NlYWdyZWVuMwBkYXJrc2VhZ3JlZW40AGRhcmtzbGF0ZWJsdWUAZGFya3NsYXRlZ3JheQBkYXJrc2xhdGVncmF5MQBkYXJrc2xhdGVncmF5MgBkYXJrc2xhdGVncmF5MwBkYXJrc2xhdGVncmF5NABkYXJrc2xhdGVncmV5AGRhcmt0dXJxdW9pc2UAZGFya3Zpb2xldABkZWVwcGluawBkZWVwcGluazEAZGVlcHBpbmsyAGRlZXBwaW5rMwBkZWVwcGluazQAZGVlcHNreWJsdWUAZGVlcHNreWJsdWUxAGRlZXBza3libHVlMgBkZWVwc2t5Ymx1ZTMAZGVlcHNreWJsdWU0AGRpbWdyYXkAZGltZ3JleQBkb2RnZXJibHVlAGRvZGdlcmJsdWUxAGRvZGdlcmJsdWUyAGRvZGdlcmJsdWUzAGRvZGdlcmJsdWU0AGZpcmVicmljawBmaXJlYnJpY2sxAGZpcmVicmljazIAZmlyZWJyaWNrMwBmaXJlYnJpY2s0AGZsb3JhbHdoaXRlAGZvcmVzdGdyZWVuAGdhaW5zYm9ybwBnaG9zdHdoaXRlAGdvbGQAZ29sZDEAZ29sZDIAZ29sZDMAZ29sZDQAZ29sZGVucm9kAGdvbGRlbnJvZDEAZ29sZGVucm9kMgBnb2xkZW5yb2QzAGdvbGRlbnJvZDQAZ3JheQBncmF5MABncmF5MQBncmF5MTAAZ3JheTEwMABncmF5MTEAZ3JheTEyAGdyYXkxMwBncmF5MTQAZ3JheTE1AGdyYXkxNgBncmF5MTcAZ3JheTE4AGdyYXkxOQBncmF5MgBncmF5MjAAZ3JheTIxAGdyYXkyMgBncmF5MjMAZ3JheTI0AGdyYXkyNQBncmF5MjYAZ3JheTI3AGdyYXkyOABncmF5MjkAZ3JheTMAZ3JheTMwAGdyYXkzMQBncmF5MzIAZ3JheTMzAGdyYXkzNABncmF5MzUAZ3JheTM2AGdyYXkzNwBncmF5MzgAZ3JheTM5AGdyYXk0AGdyYXk0MABncmF5NDEAZ3JheTQyAGdyYXk0MwBncmF5NDQAZ3JheTQ1AGdyYXk0NgBncmF5NDcAZ3JheTQ4AGdyYXk0OQBncmF5NQBncmF5NTAAZ3JheTUxAGdyYXk1MgBncmF5NTMAZ3JheTU0AGdyYXk1NQBncmF5NTYAZ3JheTU3AGdyYXk1OABncmF5NTkAZ3JheTYAZ3JheTYwAGdyYXk2MQBncmF5NjIAZ3JheTYzAGdyYXk2NABncmF5NjUAZ3JheTY2AGdyYXk2NwBncmF5NjgAZ3JheTY5AGdyYXk3AGdyYXk3MABncmF5NzEAZ3JheTcyAGdyYXk3MwBncmF5NzQAZ3JheTc1AGdyYXk3NgBncmF5NzcAZ3JheTc4AGdyYXk3OQBncmF5OABncmF5ODAAZ3JheTgxAGdyYXk4MgBncmF5ODMAZ3JheTg0AGdyYXk4NQBncmF5ODYAZ3JheTg3AGdyYXk4OABncmF5ODkAZ3JheTkAZ3JheTkwAGdyYXk5MQBncmF5OTIAZ3JheTkzAGdyYXk5NABncmF5OTUAZ3JheTk2AGdyYXk5NwBncmF5OTgAZ3JheTk5AGdyZWVuAGdyZWVuMQBncmVlbjIAZ3JlZW4zAGdyZWVuNABncmVlbnllbGxvdwBncmV5AGdyZXkwAGdyZXkxAGdyZXkxMABncmV5MTAwAGdyZXkxMQBncmV5MTIAZ3JleTEzAGdyZXkxNABncmV5MTUAZ3JleTE2AGdyZXkxNwBncmV5MTgAZ3JleTE5AGdyZXkyAGdyZXkyMABncmV5MjEAZ3JleTIyAGdyZXkyMwBncmV5MjQAZ3JleTI1AGdyZXkyNgBncmV5MjcAZ3JleTI4AGdyZXkyOQBncmV5MwBncmV5MzAAZ3JleTMxAGdyZXkzMgBncmV5MzMAZ3JleTM0AGdyZXkzNQBncmV5MzYAZ3JleTM3AGdyZXkzOABncmV5MzkAZ3JleTQAZ3JleTQwAGdyZXk0MQBncmV5NDIAZ3JleTQzAGdyZXk0NABncmV5NDUAZ3JleTQ2AGdyZXk0NwBncmV5NDgAZ3JleTQ5AGdyZXk1AGdyZXk1MABncmV5NTEAZ3JleTUyAGdyZXk1MwBncmV5NTQAZ3JleTU1AGdyZXk1NgBncmV5NTcAZ3JleTU4AGdyZXk1OQBncmV5NgBncmV5NjAAZ3JleTYxAGdyZXk2MgBncmV5NjMAZ3JleTY0AGdyZXk2NQBncmV5NjYAZ3JleTY3AGdyZXk2OABncmV5NjkAZ3JleTcAZ3JleTcwAGdyZXk3MQBncmV5NzIAZ3JleTczAGdyZXk3NABncmV5NzUAZ3JleTc2AGdyZXk3NwBncmV5NzgAZ3JleTc5AGdyZXk4AGdyZXk4MABncmV5ODEAZ3JleTgyAGdyZXk4MwBncmV5ODQAZ3JleTg1AGdyZXk4NgBncmV5ODcAZ3JleTg4AGdyZXk4OQBncmV5OQBncmV5OTAAZ3JleTkxAGdyZXk5MgBncmV5OTMAZ3JleTk0AGdyZXk5NQBncmV5OTYAZ3JleTk3AGdyZXk5OABncmV5OTkAaG9uZXlkZXcAaG9uZXlkZXcxAGhvbmV5ZGV3MgBob25leWRldzMAaG9uZXlkZXc0AGhvdHBpbmsAaG90cGluazEAaG90cGluazIAaG90cGluazMAaG90cGluazQAaW5kaWFucmVkAGluZGlhbnJlZDEAaW5kaWFucmVkMgBpbmRpYW5yZWQzAGluZGlhbnJlZDQAaW5kaWdvAGludmlzAGl2b3J5AGl2b3J5MQBpdm9yeTIAaXZvcnkzAGl2b3J5NABraGFraQBraGFraTEAa2hha2kyAGtoYWtpMwBraGFraTQAbGF2ZW5kZXIAbGF2ZW5kZXJibHVzaABsYXZlbmRlcmJsdXNoMQBsYXZlbmRlcmJsdXNoMgBsYXZlbmRlcmJsdXNoMwBsYXZlbmRlcmJsdXNoNABsYXduZ3JlZW4AbGVtb25jaGlmZm9uAGxlbW9uY2hpZmZvbjEAbGVtb25jaGlmZm9uMgBsZW1vbmNoaWZmb24zAGxlbW9uY2hpZmZvbjQAbGlnaHRibHVlAGxpZ2h0Ymx1ZTEAbGlnaHRibHVlMgBsaWdodGJsdWUzAGxpZ2h0Ymx1ZTQAbGlnaHRjb3JhbABsaWdodGN5YW4AbGlnaHRjeWFuMQBsaWdodGN5YW4yAGxpZ2h0Y3lhbjMAbGlnaHRjeWFuNABsaWdodGdvbGRlbnJvZABsaWdodGdvbGRlbnJvZDEAbGlnaHRnb2xkZW5yb2QyAGxpZ2h0Z29sZGVucm9kMwBsaWdodGdvbGRlbnJvZDQAbGlnaHRnb2xkZW5yb2R5ZWxsb3cAbGlnaHRncmF5AGxpZ2h0Z3JleQBsaWdodHBpbmsAbGlnaHRwaW5rMQBsaWdodHBpbmsyAGxpZ2h0cGluazMAbGlnaHRwaW5rNABsaWdodHNhbG1vbgBsaWdodHNhbG1vbjEAbGlnaHRzYWxtb24yAGxpZ2h0c2FsbW9uMwBsaWdodHNhbG1vbjQAbGlnaHRzZWFncmVlbgBsaWdodHNreWJsdWUAbGlnaHRza3libHVlMQBsaWdodHNreWJsdWUyAGxpZ2h0c2t5Ymx1ZTMAbGlnaHRza3libHVlNABsaWdodHNsYXRlYmx1ZQBsaWdodHNsYXRlZ3JheQBsaWdodHNsYXRlZ3JleQBsaWdodHN0ZWVsYmx1ZQBsaWdodHN0ZWVsYmx1ZTEAbGlnaHRzdGVlbGJsdWUyAGxpZ2h0c3RlZWxibHVlMwBsaWdodHN0ZWVsYmx1ZTQAbGlnaHR5ZWxsb3cAbGlnaHR5ZWxsb3cxAGxpZ2h0eWVsbG93MgBsaWdodHllbGxvdzMAbGlnaHR5ZWxsb3c0AGxpbWVncmVlbgBsaW5lbgBtYWdlbnRhAG1hZ2VudGExAG1hZ2VudGEyAG1hZ2VudGEzAG1hZ2VudGE0AG1hcm9vbgBtYXJvb24xAG1hcm9vbjIAbWFyb29uMwBtYXJvb240AG1lZGl1bWFxdWFtYXJpbmUAbWVkaXVtYmx1ZQBtZWRpdW1vcmNoaWQAbWVkaXVtb3JjaGlkMQBtZWRpdW1vcmNoaWQyAG1lZGl1bW9yY2hpZDMAbWVkaXVtb3JjaGlkNABtZWRpdW1wdXJwbGUAbWVkaXVtcHVycGxlMQBtZWRpdW1wdXJwbGUyAG1lZGl1bXB1cnBsZTMAbWVkaXVtcHVycGxlNABtZWRpdW1zZWFncmVlbgBtZWRpdW1zbGF0ZWJsdWUAbWVkaXVtc3ByaW5nZ3JlZW4AbWVkaXVtdHVycXVvaXNlAG1lZGl1bXZpb2xldHJlZABtaWRuaWdodGJsdWUAbWludGNyZWFtAG1pc3R5cm9zZQBtaXN0eXJvc2UxAG1pc3R5cm9zZTIAbWlzdHlyb3NlMwBtaXN0eXJvc2U0AG1vY2Nhc2luAG5hdmFqb3doaXRlAG5hdmFqb3doaXRlMQBuYXZham93aGl0ZTIAbmF2YWpvd2hpdGUzAG5hdmFqb3doaXRlNABuYXZ5AG5hdnlibHVlAG5vbmUAb2xkbGFjZQBvbGl2ZWRyYWIAb2xpdmVkcmFiMQBvbGl2ZWRyYWIyAG9saXZlZHJhYjMAb2xpdmVkcmFiNABvcmFuZ2UAb3JhbmdlMQBvcmFuZ2UyAG9yYW5nZTMAb3JhbmdlNABvcmFuZ2VyZWQAb3JhbmdlcmVkMQBvcmFuZ2VyZWQyAG9yYW5nZXJlZDMAb3JhbmdlcmVkNABvcmNoaWQAb3JjaGlkMQBvcmNoaWQyAG9yY2hpZDMAb3JjaGlkNABwYWxlZ29sZGVucm9kAHBhbGVncmVlbgBwYWxlZ3JlZW4xAHBhbGVncmVlbjIAcGFsZWdyZWVuMwBwYWxlZ3JlZW40AHBhbGV0dXJxdW9pc2UAcGFsZXR1cnF1b2lzZTEAcGFsZXR1cnF1b2lzZTIAcGFsZXR1cnF1b2lzZTMAcGFsZXR1cnF1b2lzZTQAcGFsZXZpb2xldHJlZABwYWxldmlvbGV0cmVkMQBwYWxldmlvbGV0cmVkMgBwYWxldmlvbGV0cmVkMwBwYWxldmlvbGV0cmVkNABwYXBheWF3aGlwAHBlYWNocHVmZgBwZWFjaHB1ZmYxAHBlYWNocHVmZjIAcGVhY2hwdWZmMwBwZWFjaHB1ZmY0AHBlcnUAcGluawBwaW5rMQBwaW5rMgBwaW5rMwBwaW5rNABwbHVtAHBsdW0xAHBsdW0yAHBsdW0zAHBsdW00AHBvd2RlcmJsdWUAcHVycGxlAHB1cnBsZTEAcHVycGxlMgBwdXJwbGUzAHB1cnBsZTQAcmVkAHJlZDEAcmVkMgByZWQzAHJlZDQAcm9zeWJyb3duAHJvc3licm93bjEAcm9zeWJyb3duMgByb3N5YnJvd24zAHJvc3licm93bjQAcm95YWxibHVlAHJveWFsYmx1ZTEAcm95YWxibHVlMgByb3lhbGJsdWUzAHJveWFsYmx1ZTQAc2FkZGxlYnJvd24Ac2FsbW9uAHNhbG1vbjEAc2FsbW9uMgBzYWxtb24zAHNhbG1vbjQAc2FuZHlicm93bgBzZWFncmVlbgBzZWFncmVlbjEAc2VhZ3JlZW4yAHNlYWdyZWVuMwBzZWFncmVlbjQAc2Vhc2hlbGwAc2Vhc2hlbGwxAHNlYXNoZWxsMgBzZWFzaGVsbDMAc2Vhc2hlbGw0AHNpZW5uYQBzaWVubmExAHNpZW5uYTIAc2llbm5hMwBzaWVubmE0AHNreWJsdWUAc2t5Ymx1ZTEAc2t5Ymx1ZTIAc2t5Ymx1ZTMAc2t5Ymx1ZTQAc2xhdGVibHVlAHNsYXRlYmx1ZTEAc2xhdGVibHVlMgBzbGF0ZWJsdWUzAHNsYXRlYmx1ZTQAc2xhdGVncmF5AHNsYXRlZ3JheTEAc2xhdGVncmF5MgBzbGF0ZWdyYXkzAHNsYXRlZ3JheTQAc2xhdGVncmV5AHNub3cAc25vdzEAc25vdzIAc25vdzMAc25vdzQAc3ByaW5nZ3JlZW4Ac3ByaW5nZ3JlZW4xAHNwcmluZ2dyZWVuMgBzcHJpbmdncmVlbjMAc3ByaW5nZ3JlZW40AHN0ZWVsYmx1ZQBzdGVlbGJsdWUxAHN0ZWVsYmx1ZTIAc3RlZWxibHVlMwBzdGVlbGJsdWU0AHRhbgB0YW4xAHRhbjIAdGFuMwB0YW40AHRoaXN0bGUAdGhpc3RsZTEAdGhpc3RsZTIAdGhpc3RsZTMAdGhpc3RsZTQAdG9tYXRvAHRvbWF0bzEAdG9tYXRvMgB0b21hdG8zAHRvbWF0bzQAdHVycXVvaXNlAHR1cnF1b2lzZTEAdHVycXVvaXNlMgB0dXJxdW9pc2UzAHR1cnF1b2lzZTQAdmlvbGV0AHZpb2xldHJlZAB2aW9sZXRyZWQxAHZpb2xldHJlZDIAdmlvbGV0cmVkMwB2aW9sZXRyZWQ0AHdoZWF0AHdoZWF0MQB3aGVhdDIAd2hlYXQzAHdoZWF0NAB3aGl0ZQB3aGl0ZXNtb2tlAHllbGxvdwB5ZWxsb3cxAHllbGxvdzIAeWVsbG93MwB5ZWxsb3c0AHllbGxvd2dyZWVuAGxhY2sAaGl0ZQBpZ2h0Z3JleQBYMTEvAC8lcy8lcwBpbWFnZXNjYWxlAGZhbHNlAGJsYWNrAGRvdHRlZABkYXNoZWQAY3AtPnNyYwBodG1sdGFibGUuYwBlbWl0X2h0bWxfaW1nAGNwLT5zcmNbMF0AdHJhbnNwYXJlbnQAXyVkACVkADEAMgAzADQANQA2ADcAOAA5ADEwADExADEyADEzADE0ADE1ADE2ADE3ADE4ADE5ADIwAEFnbm9kZWluZm9fdABBZ2VkZ2VpbmZvX3QAcm93ZwBjb2xnAEFncmFwaGluZm9fdAA8VEFCTEU+AGRlbHggPj0gMABwb3NfaHRtbF90YmwAZGVseSA+PSAwAHRhYmxlIHNpemUgdG9vIHNtYWxsIGZvciBjb250ZW50CgBmaXhlZCB0YWJsZSBzaXplIHdpdGggdW5zcGVjaWZpZWQgd2lkdGggb3IgaGVpZ2h0CgBjZWxsIHNpemUgdG9vIHNtYWxsIGZvciBjb250ZW50CgBmaXhlZCBjZWxsIHNpemUgd2l0aCB1bnNwZWNpZmllZCB3aWR0aCBvciBoZWlnaHQKAE5vIG9yIGltcHJvcGVyIGltYWdlIGZpbGU9IiVzIgoAcGVuY29sb3IAY29sb3IALT4ALS0AZlBRLmMAUFFjaGVjawBIZWFwIG92ZXJmbG93CgAlIVBTLUFkb2JlLTIuMAovbm9kZSB7CiAgL1kgZXhjaCBkZWYKICAvWCBleGNoIGRlZgogIC95IGV4Y2ggZGVmCiAgL3ggZXhjaCBkZWYKICBuZXdwYXRoCiAgeCB5IG1vdmV0bwogIHggWSBsaW5ldG8KICBYIFkgbGluZXRvCiAgWCB5IGxpbmV0bwogIGNsb3NlcGF0aCBmaWxsCn0gZGVmCi9jZWxsIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAc2hvd3BhZ2UKAGZhaWxlZCBhdCBub2RlICVkWzBdCgBucC0+Y2VsbHNbMF0AbWF6ZS5jAGNoa1NncmFwaABmYWlsZWQgYXQgbm9kZSAlZFsxXQoAbnAtPmNlbGxzWzFdAGRpdGVtcwBmaW5kU1ZlcnQAJSUlJVBhZ2U6IDEgMQolJSUlUGFnZUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoAJWYgJWYgdHJhbnNsYXRlCgAwIDAgMSBzZXRyZ2Jjb2xvcgoAJWYgJWYgJWYgJWYgbm9kZQoAMCAwIDAgc2V0cmdiY29sb3IKACVmICVmICVmICVmIGNlbGwKADEgMCAwIHNldHJnYmNvbG9yCgB1bmV4cGVjdGVkIGNhc2UgaW4gbG9jYXRlX2VuZHBvaW50CgAwAHRyYXBlem9pZC5jAGxvY2F0ZV9lbmRwb2ludABhZGRfc2VnbWVudDogZXJyb3IKAG5ld25vZGU6IFF1ZXJ5LXRhYmxlIG92ZXJmbG93CgBuZXdub2RlAG5ld3RyYXA6IFRyYXBlem9pZC10YWJsZSBvdmVyZmxvdyAlZAoAbmV3dHJhcABpbmRleC5jAFJUcmVlU2VhcmNoAG4tPmxldmVsID49IDAAUlRyZWVJbnNlcnQAbGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSAoKm4pLT5sZXZlbAByLT5ib3VuZGFyeVtpXSA8PSByLT5ib3VuZGFyeVtOVU1ESU1TICsgaV0AciAmJiBuICYmIG5ldwBSVHJlZUluc2VydDIAbGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSBuLT5sZXZlbABGQUxTRQBub2RlLmMATm9kZUNvdmVyAHIgJiYgbgBQaWNrQnJhbmNoAEFkZEJyYW5jaABpIDwgTk9ERUNBUkQAbmV3AG4gJiYgaSA+PSAwICYmIGkgPCBOT0RFQ0FSRABEaXNjb25CcmFuY2gAcgByZWN0YW5nbGUuYwBSZWN0QXJlYQByICYmIHJyAENvbWJpbmVSZWN0AHIgJiYgcwBPdmVybGFwAG4Ac3BsaXQucS5jAFNwbGl0Tm9kZQBiAG4tPmNvdW50ICsgKCpubiktPmNvdW50ID09IE5PREVDQVJEICsgMQBMb2FkTm9kZXMAcQBwAHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5wYXJ0aXRpb25baV0gPT0gMCB8fCBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0ucGFydGl0aW9uW2ldID09IDEAcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzBdICsgcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzFdID09IE5PREVDQVJEICsgMQBNZXRob2RaZXJvAHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5jb3VudFswXSA+PSBydHAtPk1pbkZpbGwgJiYgcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzFdID49IHJ0cC0+TWluRmlsbAAhcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLnRha2VuW2ldAENsYXNzaWZ5AEdldEJyYW5jaGVzAG4tPmJyYW5jaFtpXS5jaGlsZAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKAICAgICAhAMWQEAH1AIAwcSExRXFhcIC2kMHwoFDA4pESsPLRAvMCAyBjQ1GxwdHgsMISIjJCUmJygMGBkXBAobHBogKgohIiMkJSYnKAwKDlMKLFgxWFhYWFhYDBscDy5YMyEiIyQlJicoGxz/U///ISIjJCUmJygM//8F////CRT//////wwbHP8QFRYhIiMkJSYnKBsc/////yEiIyQlJicoDP8SExQRFhf///////8MGxz///8SISIjJCUmJygbHP////8hIiMkJSYnKAz///////8T////////DBsc/////yEiIyQlJicoGxz/////ISIjJCUmJygSExQVFhcYGf///////////yMkJSYnGxITFBYXIjZoAR84ViEgAhsbG14bGzc5cDbSwk8EPCJHIj8iRCIiWCJlIiIFBl9gOQQHCAkKCwwNDgRmZ11qbQUGb1g7cQcICQoLDA0OBHI8W3M+YUYbEhMUFhcEBQY/QWJJBwgJCgsMDQ4FBgBcAAAHCAkKCwwNDgQAAE8AAABTQgAAAAAABAUGAERUVQcICQoLDA0OBQYAAAAABwgJCgsMDQ4EACosLkcxMwAAAAAAAAQFBgAAAEoHCAkKCwwNDgUGAAAAAAcICQoLDA0OBAAAAAAAAEwAAAAAAAAEBQYAAAAABwgJCgsMDQ4FBgAAAAAHCAkKCwwNDikrLS8wMjQ1AAAAAAAAAAAAKSstMDIABC8AJCMAEhQWGhweIBgABQcvLy8ALy8AAAkIKAAAASICBgAAAAAACAAAAAAAAAAAAAAAAAAlAyYTCikVCyoXDi0ZERsMKx0NLB8PIRAAMwAwAC9DADEALwA1LidCMkEAOjgAPDRFADYAQAAAPwBENzs5PQACAwMBAQIBAQEDAwMDAwMDAwEBAQEBAQEBAQEBAQEBAQECAQECAAYBAwMDAwMBAAECAwAEAQIDAAQABAAEAAMCAQIBAgFTeW50YXggZXJyb3I6IG5vbi1zcGFjZSBzdHJpbmcgdXNlZCBiZWZvcmUgPFRBQkxFPgBTeW50YXggZXJyb3I6IG5vbi1zcGFjZSBzdHJpbmcgdXNlZCBhZnRlciA8L1RBQkxFPgAAKSoqKissLC0tLS0tLS0tLS0uLzAxMjM0NTY3ODk6Ozw9Pj4/P0FAQkJCQkJCQ0NERERGRUdHR0lISkhLSExITU1OTk9P/wMPEBEjOiQ9JUAVQyZFJ0gYSxlNGigcTh0eUFFSWVpsa25jZFdpc3ludGF4IGVycm9yAG1lbW9yeSBleGhhdXN0ZWQAJXMgaW4gbGluZSAlZCAKAE5vdCBidWlsdCB3aXRoIGxpYmV4cGF0LiBUYWJsZSBmb3JtYXR0aW5nIGlzIG5vdCBhdmFpbGFibGUuCgByb3V0ZS5jAGxpYnBhdGgvJXM6JWQ6ICVzCgBzaG9ydGVzdC5jAHNvdXJjZSBwb2ludCBub3QgaW4gYW55IHRyaWFuZ2xlAGRlc3RpbmF0aW9uIHBvaW50IG5vdCBpbiBhbnkgdHJpYW5nbGUAY2Fubm90IGZpbmQgdHJpYW5nbGUgcGF0aABjYW5ub3QgbWFsbG9jIG9wcwBjYW5ub3QgcmVhbGxvYyBvcHMAdHJpYW5ndWxhdGlvbiBmYWlsZWQAY2Fubm90IG1hbGxvYyB0cmlzAGNhbm5vdCByZWFsbG9jIHRyaXMAY2Fubm90IG1hbGxvYyBkcS5wbmxzAGNhbm5vdCByZWFsbG9jIGRxLnBubHMAY2Fubm90IG1hbGxvYyBwbmxzAGNhbm5vdCBtYWxsb2MgcG5scHMAY2Fubm90IHJlYWxsb2MgcG5scwBjYW5ub3QgcmVhbGxvYyBwbmxwcwBUISIZDQECAxFLHAwQBAsdEh4naG5vcHFiIAUGDxMUFRoIFgcoJBcYCQoOGx8lI4OCfSYqKzw9Pj9DR0pNWFlaW1xdXl9gYWNkZWZnaWprbHJzdHl6e3wASWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AABIQExQVFhcYGRobHB0eHyAhEBAiIxAkJSYnKCkqKxAsLS4RLzARETEREREyMzQ1Njc4OREQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQOhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQOxA8PT4/QEEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQQhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQQxAQRBBFRkcQSBBJEBAQEEpLTE0QEE4QT1AQEBAQURAQEBAQEBAQEBAQEBBSEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBTEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQVFVWVxAQWFkQEBAQEBAQEBAQEBAQEBAQEBAQEBAQWhBbXF1eX2BhYhAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAD+/wD8AQAA+AEAAHgAAAAA//vf+wAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAD8/+Cv/////////////9///////yBAsAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAD8AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAAAACG/v///wBASQAAAAAAGADf/wDIAAAAAAAAAAEAPAAAAAAAAAAAAAAAABDgAR4AYP+/AAAAAAAA/wcAAAAAAAAAAAAAAAAAAAAAAAAA+M8DAAAAAwAg/38AAABOAAAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAEAAgHgAwAAEAAAAAAAAAABAAIAAAAAD8DwAAAAAAAAAQACAAAAAAAAAAAAAAAAAAEAAgAAAAAAMAAAAAAAAAABAAIAAAAAD9AAAAAAAAAAAAACAAAAAA/wcAAAAAAAAAAAAgAAAAAAD/AAAAAAAAABAAIAAAAAAAAAAAAAAAAAAAACAAAAAAPwIAAAAAAAAAAAAEAAAAABAAAAAAAACAAIDA3wAMAAAAAAAAAAAAAAAAAB8AAAAAAAD+////APz//wAAAAAAAAAA/AAAAAAAAMD/3/8HAAAAAAAAAAAAAIAGAPwAABg+AACAvwDMAAAAAAAAAAAAAAAIAAAAAAAAAAAAAABg////HwAA/wMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABAAAYAAAAAAAAAAAAOAAAAAAQAAAAcAAAAAAAAAAAAAAAAAAAADAAAP5/LwAA/wP/fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOMQAAAAAAAAAAAAAAAAAAAAAAAMT/////AAAAwAAAAAAAAAAAAQDgnwAAAAB/PwAAAAAAAAAAAAAAAAAAAAAQABAAAPz///8fAAAAAAAMAAAAAAAAQAAM8AAAAAAAAMD4AAAAAAAAAMAAAAAAAAAAAP8A////IRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////38AAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAD4ADgAOAAYID4/////P//////fx/88X//fwAA////AwAA/////wEAewPQwa9CAAwfvP//AAAAAAAC//////////////////////////////////////////////////////////8PAP////9/AAAA/wcAAP////////////8/AAAAAAAA/P///v////////////////////////////////////////////////////8f/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADghwP+AAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAD//////3//DwAAAAAAAAAA////+/////////////8PAP//////////////////////////////////PwAAAP8PHv///wH8weAAAAAAAAAAAAAAAB4BAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD/////DwAAAP///3////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAD///////9/AAAAAAAAwADgAAAAAAAAAAAAAACAD3AAAAAAAAAAAAAAAAAAAP8A//9/AAMAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAABECAAAAA//AwAAAAAAAPAAAAAAAAAAAAAQwAAA//8DBwAAAAAA+AAAAAAIgAAAAAAAAAAAAAAIAP8/AMAAAAAAAAAAAAAAAAAAAADwAACACwAAAAAAAACAAgAAwAAAQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA/P8DAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw////A38A//////f/fw8AAAAAAAAAAAAAAAAAAAAAAID+/wD8AQAA+AEAAPg/AAAAAAAAAAAAAAAAAAAAf38AMIf//////4//AAAAAAAA4P//B/8PAAAAAAAA//////8/AAAAAA8AAAAAAAAAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAAAAAAAAAAAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwI8AAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIf/AP8BAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAP/z/PwAAAAMAAAAAAAD+AwAAAAAAAAAAAAAAAAAYAA8AAAAAAAAAAAAAAAAAAADhAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAHAAAAAAAAAAAAAAAAAP///////////////////////////////////////z8A/////3/+////////////////////////////PwAAAAD//////////z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////9/AP//AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAACAAAAAgAACAAAAAgAACAAAAAgAAAAAIAAAACAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA//////8P////////////////DwD/f/5//v/+/wAAAAD/B////3//////////D///////BwAAAAAAAAAAwP///wcA//////8H/wEDAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEAv///////////H///DwD/////3wcAAP//AQD/////////f/3/////////////////////////////Hv////////8/DwD///8AAAAAAAAAAAAAAAAAAAAAAAD4///////////h/wAAAAAAAP//////////PwAAAAAAAAD//////////////////w8AAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAEhETFBUWFxgZGhscHR4fICERIiMkESUmJygpKissES0uLxAQMBAQEBAQEBAxMjMQNDUQEBERERERERERERERERERERERERERERERERE2ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERNxERERE4ETk6Ozw9PhERERERERERERERERERERERERERERERERERERERERERERERERERERERERE/EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEUBBEUJDREVGR0hJEBAQSktMTU4QEBBPUBAQEBBREBAQEBAQEBAQERERUlMQEBAQEBAQEBAQEBERERFUEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERFVEBAQEFYQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQVxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQWFlaWxAQEBAQEBAQEBAQEBAQEBAQEBAQEBBcEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////AAAAAAAAAAD+//8H/v//BwAAAAAABCAE//9/////f//////////////////////////////////D/wMAH1AAAAAAAAAAAAAAIAAAAAAA3zxA1///+////////////7///////////////////////wP8/////////////////////////wD+////fwL+/////wAAAAAA/7+2AP///wcHAAAA/wf//////////v/D////////////////7x/+4f+fAAD///////8A4P///////////////wMA//////8HMAT////8/x8AAP///wEAAAAAAAAAAP0fAAAAAAAA8AP/f//////////v/9/h/8///v7un/n///3F459ZgLDP/wMA7of5///9bcOHGQJewP8/AO6/+////e3jvxsBAM//AADun/n///3t458ZwLDP/wIA7Mc91hjH/8PHHYEAwP8AAO7f/f///e/j3x1gA8//AADs3/3///3v498dYEDP/wYA7N/9/////+ffXYAAz/8A/Oz/f/z///svf4Bf/wAADAD+/////3//Bz8g/wMAAAAAliXw/q7s/ztfIP/zAAAAAAEAAAD/AwAA//7///8f/v8D///+////HwAAAAAAAAAA////////f/n/A///58H//39A/zP/////vyD///////f///////////89fz3//////z3/////PX89/3//////////Pf//////////hwAAAAD//wAA/////////////x8A/v//////////////////////////////////////////////////////////n////v//B////////////8cBAP/fDwD//w8A//8PAP/fDQD////////P//8BgBD/AwAAAAD/A///////////////AP//////B///////////PwD///8f/w//AcD/////Px8A//////8P////A/8DAAAAAP///w//////////f/7/HwD/A/8DgAAAAAAAAAAAAAAA////////7//vD/8DAAAAAP//////8////////7//AwD///////8/AP/j//////8/AAAAAAAAAAAAAAAAAN5vAP///////////////////////////////wAAAAAAAAAA//8/P/////8/P/+q////P////////99f3B/PD/8f3B8AAAAAAAAAAAAAAAAAAAKAAAD/HwAAAAAAAAAAAAAAAIT8Lz5Qvf/z4EMAAP//////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMD///////8DAAD//////3///////3//////////////////////H3gMAP////+/IP////////+AAAD//38Af39/f39/f3//////AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA/gM+H/7///////////9/4P7/////////////9+D/////P/7/////////////fwAA////BwAAAAAAAP///////////////////////////////z8AAAAAAAAAAAD/////////////////////////////////HwAAAAAAAP//////////////////////HwAAAAAAAAAA//////8//x////8PAAD//////3/wj////4D/////////////AAAAAID//P///////////////3kPAP8HAAAAAAAAAAAA/7v3////AAAA////////DwD//////////w8A/wMAAPwI//////8H/////wcA////H/////////f/AID/AwAAAAD///////9/AP8//wP//38E/////////38FAAA4//88AH5+fgB/fwAAAAAAAAAAAAAAAAAAAAAAAP//////B/8D//////////////////////////8PAP//f/j//////w//////////////////P/////////////////8DAAAAAH8A+OD//X9f2/////////////////8DAAAA+P///////////////z8AAP///////////P///////wAAAAAA/w8AAAAAAAAAAAAAAAAAAN//////////////////////HwAA/wP+//8H/v//B8D/////////////f/z8/BwAAAAA/+///3///7f/P/8/AAAAAP///////////////////wcAAAAAAAAAAP///////x8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8f////////AQAAAAAA////fwAA////BwAAAAAAAP///z//////D/8+AAAAAAD/////////////////////////P/8DAAAAAAAAAAAAAD/9/////7+R//8/AAAAAAAAAAAAAAAAAAAAAAAAAAAA//8/AP///wMAAAAAAAAAAP/////////AAAAAAAAAAABv8O/+//8PAAAAAAD///8fAAAAAAAAAAAAAAAAAAAAAP///////z8A//8/AP//BwAAAAAAAAAAAAAAAAAAAAAA////////////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////z8AAADA/wAA/P///////wEAAP///wH/A////////8f/AAAAAAAAAAD//////////x4A/wMAAAAAAAAAAAAAAAAAAAAAAAAAAP///////z8A/wMAAAAAAAD/////////////////fwAAAAAAAAAAAAAAAAAAAAAAAP///////////////wcAAAAAAAAAAAAAAAAAAAAAAAAA//////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////HwD//////38AAPj/AAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////3///////////32Te/+vv/////////7/n39////97X/z9//////////////////////////////////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3z////////+////+W/vcKhOqWqpb3917/+/8P7vv/DwAAAAAAAAAATENfQUxMAExDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTAExBTkcAQy5VVEYtOABQT1NJWABNVVNMX0xPQ1BBVEgAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAETCQsLAAAJBgsAAAsABhEAAAAREREAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAANAAAABA0AAAAACQ4AAAAAAA4AAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAASEhIAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAKAAAAAAoAAAAACQsAAAAAAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAtKyAgIDBYMHgAKG51bGwpAC0wWCswWCAwWC0weCsweCAweABpbmYASU5GAE5BTgAwMTIzNDU2Nzg5QUJDREVGLgBhbG51bQBhbHBoYQBibGFuawBjbnRybABkaWdpdABncmFwaABsb3dlcgBwcmludABwdW5jdABzcGFjZQB1cHBlcgB4ZGlnaXQAQy5VVEYtOAAAAAAAAAAAAEMAL3Byb2Mvc2VsZi9mZC8AcndhAGluZmluaXR5AG5hbgAJAAoADQAMAAcAGwBbWzphbG51bTpdX10AW15bOmFsbnVtOl1fXQBbWzpzcGFjZTpdXQBbXls6c3BhY2U6XV0AW1s6ZGlnaXQ6XV0AW15bOmRpZ2l0Ol1dAC90bXAvdG1wZmlsZV9YWFhYWFgAdys=";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"])}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!=="undefined"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(){return _clock_gettime.apply(null,arguments)}function ___lock(){}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")})};var TTY={ttys:[],init:(function(){}),shutdown:(function(){}),register:(function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)}),stream_ops:{open:(function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}stream.tty=tty;stream.seekable=false}),close:(function(stream){stream.tty.ops.flush(stream.tty)}),flush:(function(stream){stream.tty.ops.flush(stream.tty)}),read:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})},default_tty_ops:{get_char:(function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!="win32";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync("/dev/stdin","r");usingDevice=true}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(usingDevice){fs.closeSync(fd)}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents}),getFileDataAsTypedArray:(function(node){if(!node.contents)return new Uint8Array;if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)}),expandFileStorage:(function(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)}),resizeFileStorage:(function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize}),node_ops:{getattr:(function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}}),lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]}),mknod:(function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}),rename:(function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir}),unlink:(function(parent,name){delete parent.contents[name]}),rmdir:(function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete parent.contents[name]}),readdir:(function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node}),readlink:(function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return node.link})},stream_ops:{read:(function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size}),write:(function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}),allocate:(function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)}buffer.set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!=="undefined")return indexedDB;var ret=null;if(typeof window==="object")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,"IDBFS used, but indexedDB not supported");return ret}),DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback("Unable to connect to IndexedDB")}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!=="."&&p!==".."}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:"local",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=(function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()})}catch(e){return callback(e)}}))}),loadLocalEntry:(function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error("node type not supported"))}}),storeLocalEntry:(function(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode)}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true})}else{return callback(new Error("node type not supported"))}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)}),removeLocalEntry:(function(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)}),loadRemoteEntry:(function(store,path,callback){var req=store.get(path);req.onsuccess=(function(event){callback(null,event.target.result)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),storeRemoteEntry:(function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),removeRemoteEntry:(function(store,path,callback){var req=store.delete(path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),reconcile:(function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach((function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join("/");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0)}parent=createdParents[curr]}return parent}function base(path){var parts=path.split("/");return parts[parts.length-1]}Array.prototype.forEach.call(mount.opts["files"]||[],(function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate)}));(mount.opts["blobs"]||[]).forEach((function(obj){WORKERFS.createNode(ensureParent(obj["name"]),base(obj["name"]),WORKERFS.FILE_MODE,0,obj["data"])}));(mount.opts["packages"]||[]).forEach((function(pack){pack["metadata"].files.forEach((function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack["blob"].slice(file.start,file.end))}))}));return root}),createNode:(function(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents}else{node.size=4096;node.contents={}}if(parent){parent.contents[name]=node}return node}),node_ops:{getattr:(function(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)}}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}}),lookup:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}),mknod:(function(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rename:(function(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),unlink:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rmdir:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readdir:(function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readlink:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)})},stream_ops:{read:(function(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e}}}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto")["randomBytes"](1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createSpecialDirectories:(function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:(function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},"/proc/self/fd")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)Object.defineProperty(this,"stack",{value:(new Error).stack,writable:true})};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}}),getMode:(function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}),joinPath:(function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);return path}),absolutePath:(function(relative,base){return PATH.resolve(base,relative)}),standardizePath:(function(path){return PATH.normalize(path)}),findObject:(function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{___setErrNo(ret.error);return null}}),analyzePath:(function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret}),createFolder:(function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)}),createPath:(function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current}),createFile:(function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)}),createDataFile:(function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node}),createDevice:(function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:(function(stream){stream.seekable=false}),close:(function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}}),read:(function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})});return FS.mkdev(path,mode,dev)}),createLink:(function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path)}),forceLoadFile:(function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(Module["read"]){try{obj.contents=intArrayFromString(Module["read"](obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}if(!success)___setErrNo(ERRNO_CODES.EIO);return success}),createLazyFile:(function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node}),createPreloadedFile:(function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach((function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,(function(){if(onerror)onerror();removeRunDependency(dep)}));handled=true}}));if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,(function(byteArray){processData(byteArray)}),onerror)}else{processData(url)}}),indexedDB:(function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}),DB_NAME:(function(){return"EM_FS_"+window.location.pathname}),DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror}),loadFilesFromDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror})};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:(function(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path}path=PATH.join2(dir,path)}return path}),doStat:(function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret}),doWritev:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.unlink(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___unlock(){}function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]=ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C.UTF-8";ENV["_"]=Module["thisProgram"];poolPtr=staticAlloc(TOTAL_ENV_SIZE);envPtr=staticAlloc(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i<strings.length;i++){var line=strings[i];writeAsciiToMemory(line,poolPtr);HEAP32[envPtr+i*ptrSize>>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}var _llvm_ceil_f64=Math_ceil;var _llvm_fabs_f64=Math_abs;var _llvm_floor_f64=Math_floor;var _llvm_pow_f64=Math_pow;var _llvm_sqrt_f64=Math_sqrt;function _llvm_trap(){abort("trap!")}function _longjmp(env,value){Module["setThrew"](env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var name=Pointer_stringify(envname);var val=Pointer_stringify(envval);if(name===""||name.indexOf("=")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)&&!overwrite)return 0;ENV[name]=val;___buildEnvironment(ENV);return 0}function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else if(typeof self==="object"&&self["performance"]&&typeof self["performance"]["now"]==="function"){_emscripten_get_now=(function(){return self["performance"]["now"]()})}else if(typeof performance==="object"&&typeof performance["now"]==="function"){_emscripten_get_now=(function(){return performance["now"]()})}else{_emscripten_get_now=Date.now}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:(function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output});function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE==="boolean"&&ENVIRONMENT_IS_NODE){var buf;try{buf=Buffer.from(s,"base64")}catch(_){buf=new Buffer(s,"base64")}return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength)}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error("Converting base64 string to bytes failed.")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}function invoke_d(index){try{return Module["dynCall_d"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_dddd(index,a1,a2,a3){try{return Module["dynCall_dddd"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_i(index){try{return Module["dynCall_i"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiddi(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiddi"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_d":invoke_d,"invoke_dddd":invoke_dddd,"invoke_i":invoke_i,"invoke_ii":invoke_ii,"invoke_iii":invoke_iii,"invoke_iiii":invoke_iiii,"invoke_iiiii":invoke_iiiii,"invoke_iiiiii":invoke_iiiiii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_v":invoke_v,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_viii":invoke_viii,"invoke_viiiddi":invoke_viiiddi,"invoke_viiii":invoke_viiii,"invoke_viiiii":invoke_viiiii,"invoke_viiiiii":invoke_viiiiii,"___assert_fail":___assert_fail,"___buildEnvironment":___buildEnvironment,"___clock_gettime":___clock_gettime,"___lock":___lock,"___map_file":___map_file,"___setErrNo":___setErrNo,"___syscall10":___syscall10,"___syscall140":___syscall140,"___syscall145":___syscall145,"___syscall146":___syscall146,"___syscall192":___syscall192,"___syscall195":___syscall195,"___syscall197":___syscall197,"___syscall221":___syscall221,"___syscall33":___syscall33,"___syscall5":___syscall5,"___syscall54":___syscall54,"___syscall6":___syscall6,"___syscall91":___syscall91,"___unlock":___unlock,"__exit":__exit,"_clock_gettime":_clock_gettime,"_emscripten_asm_const_iii":_emscripten_asm_const_iii,"_emscripten_get_now":_emscripten_get_now,"_emscripten_get_now_is_monotonic":_emscripten_get_now_is_monotonic,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_exit":_exit,"_getenv":_getenv,"_llvm_ceil_f64":_llvm_ceil_f64,"_llvm_fabs_f64":_llvm_fabs_f64,"_llvm_floor_f64":_llvm_floor_f64,"_llvm_pow_f64":_llvm_pow_f64,"_llvm_sqrt_f64":_llvm_sqrt_f64,"_llvm_trap":_llvm_trap,"_longjmp":_longjmp,"_setenv":_setenv,"_times":_times,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM
var asm=(/** @suppress {uselessCode} */ function(global,env,buffer) {
"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=env.cttz_i8|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0;var z=0;var A=global.Math.floor;var B=global.Math.abs;var C=global.Math.sqrt;var D=global.Math.pow;var E=global.Math.cos;var F=global.Math.sin;var G=global.Math.tan;var H=global.Math.acos;var I=global.Math.asin;var J=global.Math.atan;var K=global.Math.atan2;var L=global.Math.exp;var M=global.Math.log;var N=global.Math.ceil;var O=global.Math.imul;var P=global.Math.min;var Q=global.Math.max;var R=global.Math.clz32;var S=env.abort;var T=env.assert;var U=env.enlargeMemory;var V=env.getTotalMemory;var W=env.abortOnCannotGrowMemory;var X=env.invoke_d;var Y=env.invoke_dddd;var Z=env.invoke_i;var _=env.invoke_ii;var $=env.invoke_iii;var aa=env.invoke_iiii;var ba=env.invoke_iiiii;var ca=env.invoke_iiiiii;var da=env.invoke_iiiiiii;var ea=env.invoke_v;var fa=env.invoke_vi;var ga=env.invoke_vii;var ha=env.invoke_viii;var ia=env.invoke_viiiddi;var ja=env.invoke_viiii;var ka=env.invoke_viiiii;var la=env.invoke_viiiiii;var ma=env.___assert_fail;var na=env.___buildEnvironment;var oa=env.___clock_gettime;var pa=env.___lock;var qa=env.___map_file;var ra=env.___setErrNo;var sa=env.___syscall10;var ta=env.___syscall140;var ua=env.___syscall145;var va=env.___syscall146;var wa=env.___syscall192;var xa=env.___syscall195;var ya=env.___syscall197;var za=env.___syscall221;var Aa=env.___syscall33;var Ba=env.___syscall5;var Ca=env.___syscall54;var Da=env.___syscall6;var Ea=env.___syscall91;var Fa=env.___unlock;var Ga=env.__exit;var Ha=env._clock_gettime;var Ia=env._emscripten_asm_const_iii;var Ja=env._emscripten_get_now;var Ka=env._emscripten_get_now_is_monotonic;var La=env._emscripten_memcpy_big;var Ma=env._exit;var Na=env._getenv;var Oa=env._llvm_ceil_f64;var Pa=env._llvm_fabs_f64;var Qa=env._llvm_floor_f64;var Ra=env._llvm_pow_f64;var Sa=env._llvm_sqrt_f64;var Ta=env._llvm_trap;var Ua=env._longjmp;var Va=env._setenv;var Wa=env._times;var Xa=0.0;
// EMSCRIPTEN_START_FUNCS
function nb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function ob(){return l|0}function pb(a){a=a|0;l=a}function qb(a,b){a=a|0;b=b|0;l=a;m=b}function rb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function sb(a){a=a|0;z=a}function tb(){return z|0}function ub(a){a=a|0;c[41840]=a;return 0}function vb(){return c[41840]|0}function wb(a,b){a=a|0;b=b|0;Ia(0,a|0,b|0)|0;return}function xb(a){a=a|0;c[42183]=a;return}function yb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i+4|0;g=i;c[f>>2]=0;h=ks()|0;ps(h,10904);ps(h,17148);Zl(1)|0;Yl(16)|0;ep(1);while(1){a=Sn(a)|0;e=c[f>>2]|0;if(!a)break;if(!e){ls(h,a,d)|0;os(h,a,b,f,g)|0;hr(h,a)|0}ln(a)|0;a=174181}l=i;return e|0}function zb(a){a=a|0;var d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;f=c[(c[a+16>>2]|0)+8>>2]|0;a=a+64|0;switch(c[a>>2]|0){case 0:{vx(f);break}case 1:{if(b[(c[f+16>>2]|0)+136>>1]&1)nB(f);break}case 4:case 5:case 6:{sx(f,e,d);Cb(f,c[e>>2]|0,c[d>>2]|0,c[a>>2]|0);break}default:{}}l=g;return}function Ab(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[(c[a+16>>2]|0)+8>>2]|0;if(!(c[41841]|0)){c[41841]=c[4442];c[41842]=9;c[41843]=17}e=d+64|0;f=(c[e>>2]|0)+8|0;b=c[f>>2]|0;c[f>>2]=167364;switch(c[a+64>>2]|0){case 2:{ix(a,d,a,0);break}case 3:{ix(a,d,a,1);break}case 1:case 0:{if(!(c[a+152>>2]&134217728))_p(d,a)|0;break}case 6:case 5:case 4:{Bb(d);if(!(c[a+152>>2]&134217728))_p(d,a)|0;break}default:{}}c[(c[e>>2]|0)+8>>2]=b;return}function Bb(b){b=b|0;var d=0,e=0;d=c[41845]|0;if((d|0)!=(c[41844]|0)){e=c[c[41876]>>2]|0;if(!e){e=tB(b,0,84827,174181)|0;c[c[41876]>>2]=e;d=c[41845]|0}if(d>>>0>=(c[41846]|0)>>>0){dm(167376,1)|0;d=c[41845]|0}a[d>>0]=0;d=c[41844]|0;c[41845]=d;Cm(b,e,d)|0}if(c[(c[b+16>>2]|0)+12>>2]|0){e=c[(c[41876]|0)+4>>2]|0;d=c[41861]|0;if(d>>>0>=(c[41862]|0)>>>0){dm(167440,1)|0;d=c[41861]|0}a[d>>0]=0;d=c[41860]|0;c[41861]=d;Cm(b,e,d)|0}Lm(b,59577,c[(c[41876]|0)+8236>>2]|0,174181)|0;d=0;while(1){if((d|0)==8)break;gm(167376+(d<<4)|0);d=d+1|0}_I(c[41876]|0);h[1]=1.0;h[5]=1.0;c[41877]=0;c[41881]=0;return}function Cb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=ZI(8240)|0;c[41876]=i;a:do switch(g|0){case 6:{b[i+8232>>1]=14;g=59593;break}case 5:{b[i+8232>>1]=12;g=59597;break}default:{g=Im(d,59577)|0;if((g|0?a[g>>0]|0:0)?(h=Db(g)|0,(h&65535)>10):0){i=c[41876]|0;b[i+8232>>1]=h;break a}g=Db(59589)|0;i=c[41876]|0;b[i+8232>>1]=g;g=59589}}while(0);c[i+8236>>2]=g;j=d+16|0;g=c[j>>2]|0;if(!(c[g+180>>2]|0))h=0;else{h=tB(d,0,84827,174181)|0;i=c[41876]|0;g=c[j>>2]|0}c[i>>2]=h;if(!(a[g+113>>0]&8))g=0;else g=tB(d,0,59601,174181)|0;c[(c[41876]|0)+4>>2]=g;i=tB(d,1,84827,174181)|0;c[(c[41876]|0)+8>>2]=i;i=tB(d,1,59601,174181)|0;c[(c[41876]|0)+12>>2]=i;i=tB(d,2,84827,174181)|0;g=c[41876]|0;c[g+16>>2]=i;if(!f)h=0;else{h=tB(d,2,59609,174181)|0;g=c[41876]|0}c[g+20>>2]=h;if(!e)h=0;else{h=tB(d,2,59617,174181)|0;g=c[41876]|0}c[g+24>>2]=h;h=a[(c[j>>2]|0)+113>>0]|0;if(!(h&33))i=0;else{i=tB(d,2,59601,174181)|0;g=c[41876]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+28>>2]=i;if(!(h&2))i=0;else{i=tB(d,2,59625,174181)|0;g=c[41876]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+32>>2]=i;if(!(h&4))h=0;else{h=tB(d,2,59634,174181)|0;g=c[41876]|0}c[g+36>>2]=h;g=0;while(1){if((g|0)==8)break;cm(167376+(g<<4)|0,1024,(c[41876]|0)+40+(g<<10)|0);g=g+1|0}return}function Db(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;g=j+8|0;f=0;d=b;a:while(1){do{e=d;d=d+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a}while(((e<<24>>24)+-48|0)>>>0>=10);if((f|0)>=1023){i=7;break}a[g+f>>0]=e;f=f+1|0}if((i|0)==7){c[h>>2]=b;_l(0,59643,h)|0}a[g+f>>0]=0;i=(rM(g)|0)&65535;l=j;return i|0}function Eb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;d=c[c[41876]>>2]|0;b=c[41849]|0;if(b>>>0>=(c[41850]|0)>>>0){dm(167392,1)|0;b=c[41849]|0}a[b>>0]=0;b=c[41848]|0;c[41849]=b;Cm(e,d,b)|0;if(c[(c[e+16>>2]|0)+12>>2]|0){d=c[(c[41876]|0)+4>>2]|0;b=c[41865]|0;if(b>>>0>=(c[41866]|0)>>>0){dm(167456,1)|0;b=c[41865]|0}a[b>>0]=0;b=c[41864]|0;c[41865]=b;Cm(e,d,b)|0}h[2]=1.0;h[6]=1.0;c[41878]=0;c[41882]=0;return}function Fb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[41849]|0;if((c[41848]|0)!=(b|0)){d=c[(c[41876]|0)+8>>2]|0;if(b>>>0>=(c[41850]|0)>>>0){dm(167392,1)|0;b=c[41849]|0}a[b>>0]=0;b=c[41848]|0;c[41849]=b;Cm(e,d,b)|0}b=c[41865]|0;if((c[41864]|0)!=(b|0)){d=c[(c[41876]|0)+12>>2]|0;if(b>>>0>=(c[41866]|0)>>>0){dm(167456,1)|0;b=c[41865]|0}a[b>>0]=0;b=c[41864]|0;c[41865]=b;Cm(e,d,b)|0}h[9]=1.0;h[11]=1.0;c[41885]=0;c[41887]=0;return}function Gb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[41849]|0;if((c[41848]|0)!=(b|0)){d=c[(c[41876]|0)+16>>2]|0;if(b>>>0>=(c[41850]|0)>>>0){dm(167392,1)|0;b=c[41849]|0}a[b>>0]=0;b=c[41848]|0;c[41849]=b;Cm(e,d,b)|0}b=c[41853]|0;if((c[41852]|0)!=(b|0)){d=c[(c[41876]|0)+24>>2]|0;if(b>>>0>=(c[41854]|0)>>>0){dm(167408,1)|0;b=c[41853]|0}a[b>>0]=0;b=c[41852]|0;c[41853]=b;Cm(e,d,b)|0}b=c[41857]|0;if((c[41856]|0)!=(b|0)){d=c[(c[41876]|0)+20>>2]|0;if(b>>>0>=(c[41858]|0)>>>0){dm(167424,1)|0;b=c[41857]|0}a[b>>0]=0;b=c[41856]|0;c[41857]=b;Cm(e,d,b)|0}b=c[41865]|0;if((c[41864]|0)!=(b|0)){d=c[(c[41876]|0)+28>>2]|0;if(b>>>0>=(c[41866]|0)>>>0){dm(167456,1)|0;b=c[41865]|0}a[b>>0]=0;b=c[41864]|0;c[41865]=b;Cm(e,d,b)|0}b=c[41869]|0;if((c[41868]|0)!=(b|0)){d=c[(c[41876]|0)+36>>2]|0;if(b>>>0>=(c[41870]|0)>>>0){dm(167472,1)|0;b=c[41869]|0}a[b>>0]=0;b=c[41868]|0;c[41869]=b;Cm(e,d,b)|0}b=c[41873]|0;if((c[41872]|0)!=(b|0)){d=c[(c[41876]|0)+32>>2]|0;if(b>>>0>=(c[41874]|0)>>>0){dm(167488,1)|0;b=c[41873]|0}a[b>>0]=0;b=c[41872]|0;c[41873]=b;Cm(e,d,b)|0}h[10]=1.0;h[12]=1.0;h[3]=1.0;h[4]=1.0;h[7]=1.0;h[8]=1.0;c[41886]=0;c[41888]=0;c[41879]=0;c[41880]=0;c[41883]=0;c[41884]=0;return}function Hb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1056|0;j=t+16|0;s=t+8|0;r=t;k=t+32|0;o=c[(c[d+16>>2]|0)+12>>2]|0;p=c[11344+(o<<2)>>2]|0;fm(p,59746)|0;g=f+4|0;Qb(k,+h[(c[g>>2]|0)+16>>3]);fm(p,k)|0;Tb(d,174181,c[c[g>>2]>>2]|0);Nb(d);q=a[f+48>>0]|0;q=q<<24>>24==108?-1:q<<24>>24==114&1;g=c[g>>2]|0;if(!g)g=0;else g=c[g+24>>2]&127;i=b[(c[41876]|0)+8232>>1]|0;if((i&65535)>14?(m=c[11392+((i&65535)+-15<<2)>>2]&g,n=167508+(o<<2)|0,(c[n>>2]|0)!=(m|0)):0){c[r>>2]=m;pL(k,59749,r)|0;fm(p,k)|0;c[n>>2]=m}r=e+8|0;h[r>>3]=+h[r>>3]+ +h[f+24>>3];fm(p,59755)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];Pb(p,j);c[s>>2]=q;pL(k,87254,s)|0;fm(p,k)|0;Qb(k,+h[f+32>>3]);fm(p,k)|0;Tb(d,174181,c[f>>2]|0);l=t;return}function Ib(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+1040|0;f=i;g=i+16|0;e=c[(c[a+16>>2]|0)+12>>2]|0;Mb(a);Nb(a);if(!d){a=c[11344+(e<<2)>>2]|0;fm(a,59743)|0}else{if((d|1|0)==3)Vb(a,d,b,2);else Wb(a);a=c[11344+(e<<2)>>2]|0;fm(a,59740)|0};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];Pb(a,f);Qb(g,+h[b+16>>3]-+h[b>>3]);fm(a,g)|0;Qb(g,+h[b+24>>3]-+h[b+8>>3]);fm(a,g)|0;l=i;return}function Jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Mb(a);Nb(a);if(!d)Ob(a,112,b,c);else{if((d|1|0)==3)Vb(a,d,b,c);else Wb(a);Ob(a,80,b,c)}return}function Kb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Mb(a);Nb(a);if(!f)Ob(a,66,b,c);else{if((f|1|0)==3)Vb(a,f,b,c);else Wb(a);Ob(a,98,b,c)}return}function Lb(a,b,c){a=a|0;b=b|0;c=c|0;Mb(a);Nb(a);Ob(a,76,b,c);return}function Mb(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1184|0;i=n;f=n+24|0;m=n+8|0;cm(m,1024,n+152|0);j=b+16|0;d=c[j>>2]|0;g=+h[d+152>>3];e=8+(c[d+12>>2]<<3)|0;if(g!=+h[e>>3]){h[e>>3]=g;fm(m,59706)|0;h[i>>3]=+h[(c[j>>2]|0)+152>>3];pL(f,59720,i)|0;Rb(f,0);fm(m,f)|0;f=m+4|0;d=c[f>>2]|0;e=m+8|0;if(d>>>0>=(c[e>>2]|0)>>>0){dm(m,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=41;d=c[f>>2]|0;if(d>>>0>=(c[e>>2]|0)>>>0){dm(m,1)|0;d=c[f>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[f>>2]=d;Tb(b,59725,d);d=c[j>>2]|0}d=c[d+160>>2]|0;if(d|0){j=m+4|0;k=m+8|0;a:while(1){i=d+4|0;d=c[d>>2]|0;if(!d)break;switch(a[d>>0]|0){case 102:{if(!(xJ(d,95923)|0)){d=i;continue a}break}case 98:{if(!(xJ(d,95905)|0)){d=i;continue a}break}case 115:{if(!(xJ(d,95910)|0)){d=i;continue a}break}default:{}}fm(m,d)|0;do{f=d;d=d+1|0}while((a[f>>0]|0)!=0);if(a[d>>0]|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=40;f=0;while(1){if(!(a[d>>0]|0))break;if(f|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=44}fm(m,d)|0;do{e=d;d=d+1|0}while((a[e>>0]|0)!=0);f=f+1|0}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=41}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;d=c[j>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[j>>2]=d;Tb(b,59725,d);d=i}gm(m)}l=n;return}function Nb(a){a=a|0;Sb((c[a+16>>2]|0)+16|0);Tb(a,68667,173882);return}function Ob(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;j=k;i=k+16|0;h=c[11344+(c[(c[b+16>>2]|0)+12>>2]<<2)>>2]|0;g=h+4|0;b=c[g>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){dm(h,1)|0;b=c[g>>2]|0}c[g>>2]=b+1;a[b>>0]=d;c[j>>2]=f;pL(i,59670,j)|0;fm(h,i)|0;b=0;while(1){if((b|0)>=(f|0))break;i=e+(b<<4)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];Pb(h,j);b=b+1|0}l=k;return}function Pb(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+1024|0;d=c;Qb(d,+h[b>>3]);fm(a,d)|0;Qb(d,+hx(+h[b+8>>3]));fm(a,d)|0;l=c;return}function Qb(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+16|0;d=c;h[d>>3]=b>-1.0e-08&b<1.0e-08?0.0:b;pL(a,59675,d)|0;Rb(a,1);l=c;return}function Rb(b,c){b=b|0;c=c|0;var d=0,e=0;d=WJ(b,46)|0;if(!d){if(c|0){d=b+(rJ(b)|0)|0;e=10}}else{while(1){b=d+1|0;if(!(a[b>>0]|0))break;else d=b}a:while(1){switch(a[d>>0]|0){case 46:{e=5;break a}case 48:break;default:{e=6;break a}}a[d>>0]=0;d=d+-1|0}if((e|0)==5)a[d>>0]=0;else if((e|0)==6)d=d+1|0;if(c|0)e=10}if((e|0)==10){a[d>>0]=32;a[d+1>>0]=0}return}function Sb(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j;e=a[b+3>>0]|0;f=d[b>>0]|0;g=d[b+1>>0]|0;b=d[b+2>>0]|0;if(e<<24>>24==-1){c[h>>2]=f;c[h+4>>2]=g;c[h+8>>2]=b;pL(173882,68547,h)|0}else{c[i>>2]=f;c[i+4>>2]=g;c[i+8>>2]=b;c[i+12>>2]=e&255;pL(173882,59688,i)|0}l=j;return}function Tb(a,b,d){a=a|0;b=b|0;d=d|0;Ub(c[11344+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0,b,d);return}function Ub(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+1040|0;h=f;g=f+8|0;i=rJ(e)|0;c[h>>2]=d;c[h+4>>2]=i;pL(g,59681,h)|0;fm(b,g)|0;fm(b,e)|0;e=b+4|0;d=c[e>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){dm(b,1)|0;d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=32;l=f;return}function Vb(b,d,f,i){b=b|0;d=d|0;f=f|0;i=i|0;var j=0.0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+1120|0;t=x+64|0;w=x+80|0;k=x+32|0;r=x+16|0;s=x;u=c[b+16>>2]|0;j=+(c[u+136>>2]|0)*.017453292519943295;if((e[(c[41876]|0)+8232>>1]|0)<14)Wb(b);else{cm(w,1024,x+96|0);v=(d|0)==2;if(v){JB(f,k,i,j,2);f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){dm(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=91;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];Pb(w,t);s=k+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];Pb(w,t)}else{JB(f,k,i,0.0,3);q=+h[k+24>>3];o=+h[k>>3];if(j==0.0){n=+h[k+8>>3];p=q*.25;j=n;m=o}else{p=q*.25;y=p;m=+E(+j)*y+o;n=+h[k+8>>3];j=+F(+j)*y+n}h[r>>3]=m;h[r+8>>3]=j;h[s>>3]=o;h[s+8>>3]=n;f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){dm(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=40;c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];Pb(w,t);Xb(w,p);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];Pb(w,t);Xb(w,q)}fm(w,59731)|0;d=u+140|0;j=+g[d>>2];f=u+56|0;if(j>0.0){Yb(w,j,f);Yb(w,+g[d>>2],u+96|0)}else{Yb(w,0.0,f);Yb(w,1.0,u+96|0)}hm(w)|0;k=w+4|0;d=c[k>>2]|0;i=w+8|0;f=d>>>0>=(c[i>>2]|0)>>>0;if(v){if(f){dm(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=93}else{if(f){dm(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=41}d=c[k>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){dm(w,1)|0;d=c[k>>2]|0}a[d>>0]=0;v=c[w>>2]|0;c[k>>2]=v;Tb(b,59728,v);gm(w)}l=x;return}function Wb(a){a=a|0;Sb((c[a+16>>2]|0)+56|0);Tb(a,59728,173882);return}function Xb(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+1024|0;d=c;Qb(d,b);fm(a,d)|0;l=c;return}function Yb(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;h[f>>3]=b;pL(e,59734,f)|0;Rb(e,1);Sb(c);Ub(a,e,173882);l=d;return}function Zb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0;e=l;l=l+1040|0;i=e;f=e+16|0;g=c[11344+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0;fm(g,59843)|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];Pb(g,i);Qb(f,+h[d+16>>3]-+h[d>>3]);fm(g,f)|0;Qb(f,+h[d+24>>3]-+h[d+8>>3]);fm(g,f)|0;Tb(a,174181,c[b+8>>2]|0);l=e;return}function _b(a){a=a|0;var b=0;switch(c[a+64>>2]|0){case 0:{b=yr(c[a>>2]|0)|0;ms(b,c[(c[a+16>>2]|0)+8>>2]|0,60630,0)|0;zr(b);break}case 1:{vx(c[(c[a>>2]|0)+168>>2]|0);break}default:{}}return}function $b(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;e=c[(c[b+16>>2]|0)+8>>2]|0;if(!(c[41889]|0)){c[41889]=c[4442];c[41890]=9;c[41891]=17}c[(c[e+64>>2]|0)+8>>2]=167556;ac(e,1);c[d>>2]=0;a[d+4>>0]=(a[(c[e+16>>2]|0)+115>>0]|0)==1&1;g=c[b+64>>2]|0;a[d+5>>0]=((g|0)==0|(g|0)==3)&1;a[d+6>>0]=0;bc(e,b,1,d);l=f;return}function ac(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=Jp(a)|0;while(1){if(!d)break;ac(d,0);d=Kp(d)|0}a:do if(b|0){b=co(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Pm(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Rm(a,d)|0}b=eo(a,b)|0}}while(0);return}function bc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q+8|0;o=q;n=(d|0)!=0;if(n){m=Ql(11764,c[4345]|0)|0;So(a,1,86799,12,0);So(a,2,86799,12,0);So(a,0,86799,-12,0);f=cc(a,0,m)|0;j=co(a)|0;i=0;g=0;while(1){if(!j)break;if(!(VJ(Dn(j)|0,93039,7)|0)){k=g;g=dc(m,Dn(j)|0)|0}else{k=g+1|0;g=g+f|0}c[(Lo(j,86799,0)|0)+8>>2]=g;h=Pm(a,j)|0;g=i;while(1){if(!h)break;c[(Lo(h,86799,0)|0)+8>>2]=g;h=Rm(a,h)|0;g=g+1|0}j=eo(a,j)|0;i=g;g=k}Kl(m)|0}else f=0;m=c[e>>2]|0;c[e>>2]=m+1;ec(b,m);mr(b,82337)|0;fc(a,b,d,e);gc(a,b,e);mr(b,82308)|0;ec(b,c[e>>2]|0);if(n){c[o>>2]=f;sr(b,59846,o)}else{c[p>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,59866,p)}ic(a,b,d,hc(a,b,d,e)|0,e);jc(a,b,d,e);mr(b,134901)|0;p=(c[e>>2]|0)+-1|0;c[e>>2]=p;ec(b,p);if(n)mr(b,95830)|0;else mr(b,68190)|0;l=q;return}function cc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((so(a)|0)!=(a|0)){e=b+1|0;c[(Lo(a,86799,0)|0)+8>>2]=b;if(!(VJ(Dn(a)|0,93039,7)|0)){b=Dn(a)|0;vc(d,b,c[(Lo(a,86799,0)|0)+8>>2]|0);b=e}else b=e}e=Jp(a)|0;while(1){if(!e)break;a=cc(e,b,d)|0;e=Kp(e)|0;b=a}return b|0}function dc(a,b){a=a|0;b=b|0;a=bb[c[a>>2]&31](a,b,512)|0;if(!a)a=-1;else a=c[a+12>>2]|0;return a|0}function ec(a,b){a=a|0;b=b|0;while(1){if((b|0)<=0)break;mr(a,60598)|0;b=b+-1|0}return}function fc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;i=h;j=Dn(a)|0;ec(b,c[e>>2]|0);c[i>>2]=mc(j,e)|0;sr(b,59954,i);if(d|0){mr(b,82308)|0;ec(b,c[e>>2]|0);j=(qn(a)|0)!=0;c[f>>2]=j?92685:122100;sr(b,60568,f);ec(b,c[e>>2]|0);j=(sn(a)|0)!=0;c[g>>2]=j?92685:122100;sr(b,60585,g)}l=h;return}function gc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;i=so(b)|0;j=c[b>>2]&3;f=Dm(i,j,0)|0;a:do if(f|0){k=e+5|0;while(1){if(!f)break a;g=Jm(b,f)|0;do if(g|0){h=f+8|0;if(!(a[g>>0]|0)){g=c[h>>2]|0;if((a[g>>0]|0)!=108)break;if(xJ(g,86240)|0)break}mr(d,82308)|0;ec(d,c[e>>2]|0);c[m>>2]=mc(c[h>>2]|0,e)|0;sr(d,60004,m);if(a[k>>0]|0?oc(c[h>>2]|0)|0:0){pc(Jm(b,f)|0,d,e);break}c[n>>2]=mc(Jm(b,f)|0,e)|0;sr(d,60011,n)}while(0);f=Dm(i,j,f)|0}}while(0);l=o;return}function hc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=Jp(a)|0;if(f){mr(b,82308)|0;g=c[e>>2]|0;c[e>>2]=g+1;ec(b,g);g=(d|0)!=0;if(g){mr(b,59928)|0;a=0;d=f}else{mr(b,59988)|0;ec(b,c[e>>2]|0);a=0;d=f}while(1){if(!d)break;if(!a)a=1;else mr(b,82308)|0;if(g)nc(d,b,e);else{c[h>>2]=c[(Lo(d,86799,0)|0)+8>>2];sr(b,122187,h)}d=Kp(d)|0}if(g)a=1;else{c[e>>2]=(c[e>>2]|0)+-1;mr(b,134901)|0;ec(b,c[e>>2]|0);mr(b,82303)|0;a=1}}else a=0;l=i;return a|0}function ic(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=co(a)|0;if(!g){if((d|0)!=0&(e|0)!=0){c[f>>2]=(c[f>>2]|0)+-1;mr(b,134901)|0;ec(b,c[f>>2]|0);mr(b,82303)|0}}else{mr(b,82308)|0;h=(d|0)!=0;if(h)if(!e){e=c[f>>2]|0;c[f>>2]=e+1;ec(b,e);mr(b,59928)|0;e=0}else e=0;else{e=c[f>>2]|0;c[f>>2]=e+1;ec(b,e);mr(b,59942)|0;ec(b,c[f>>2]|0);e=0}while(1){if(!g)break;if(VJ(Dn(g)|0,93039,7)|0){do if(e)if(h){mr(b,82308)|0;break}else{mr(b,86030)|0;break}else e=1;while(0);lc(g,b,d,f)}g=eo(a,g)|0}c[f>>2]=(c[f>>2]|0)+-1;mr(b,134901)|0;ec(b,c[f>>2]|0);mr(b,82303)|0}return}function jc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=co(a)|0;a:do if(f|0){while(1){if(!f)break a;if(Pm(a,f)|0)break;f=eo(a,f)|0}mr(b,82308)|0;i=c[e>>2]|0;c[e>>2]=i+1;ec(b,i);mr(b,59878)|0;i=(d|0)!=0;if(i)g=0;else{ec(b,c[e>>2]|0);g=0}while(1){if(!f)break;h=Pm(a,f)|0;while(1){if(!h)break;do if(g)if(i){mr(b,82308)|0;break}else{mr(b,86030)|0;break}else g=1;while(0);kc(h,b,d,e);h=Rm(a,h)|0}f=eo(a,f)|0}c[e>>2]=(c[e>>2]|0)+-1;mr(b,134901)|0;ec(b,c[e>>2]|0);mr(b,82303)|0}while(0);return}function kc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;h=j+16|0;g=j+8|0;f=j;if(!d){c[i>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,122187,i)}else{i=c[e>>2]|0;c[e>>2]=i+1;ec(b,i);mr(b,82337)|0;ec(b,c[e>>2]|0);c[f>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,59890,f);ec(b,c[e>>2]|0);c[g>>2]=c[(Lo(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0,86799,0)|0)+8>>2];sr(b,59904,g);ec(b,c[e>>2]|0);c[h>>2]=c[(Lo(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0,86799,0)|0)+8>>2];sr(b,59917,h);gc(a,b,e);mr(b,134901)|0;i=(c[e>>2]|0)+-1|0;c[e>>2]=i;ec(b,i);mr(b,68190)|0}l=j;return}function lc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i+16|0;g=i+8|0;f=i;if(!d){c[h>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,122187,h)}else{h=c[e>>2]|0;c[e>>2]=h+1;ec(b,h);mr(b,82337)|0;ec(b,c[e>>2]|0);c[f>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,59890,f);ec(b,c[e>>2]|0);c[g>>2]=mc(Dn(a)|0,e)|0;sr(b,59954,g);gc(a,b,e);mr(b,134901)|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;ec(b,h);mr(b,68190)|0}l=i;return}function mc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;if(a[g>>0]|0)b=yB(b)|0;if(!(c[41892]|0)){cm(167568,1024,0);e=b}else e=b;a:while(1){f=a[e>>0]|0;switch(f<<24>>24){case 0:break a;case 34:{fm(167568,59967)|0;break}case 92:{fm(167568,81579)|0;break}case 47:{fm(167568,59970)|0;break}case 8:{fm(167568,59973)|0;break}case 12:{fm(167568,59976)|0;break}case 10:{fm(167568,59979)|0;break}case 13:{fm(167568,59982)|0;break}case 9:{fm(167568,59985)|0;break}default:{d=c[41893]|0;if(d>>>0>=(c[41894]|0)>>>0){dm(167568,1)|0;d=c[41893]|0}c[41893]=d+1;a[d>>0]=f}}e=e+1|0}d=c[41893]|0;if(d>>>0>=(c[41894]|0)>>>0){dm(167568,1)|0;d=c[41893]|0}a[d>>0]=0;d=c[41892]|0;c[41893]=d;if(a[g>>0]|0)_I(b);return d|0}function nc(a,b,c){a=a|0;b=b|0;c=c|0;bc(a,b,0,c);a=Jp(a)|0;while(1){if(!a)break;mr(b,82308)|0;nc(a,b,c);a=Kp(a)|0}return}function oc(b){b=b|0;var c=0;c=b+1|0;a:do if((a[b>>0]|0)==95){b=(a[c>>0]|0)+-100<<24>>24;switch(((b&255)>>>2|b<<6&255)<<24>>24){case 0:{if(!(xJ(c,60525)|0)){b=1;break a}break}case 2:{if(!(xJ(c,60531)|0)){b=1;break a}break}case 1:{if(!(xJ(c,60538)|0)){b=1;break a}return (xJ(c,60552)|0)==0|0}case 4:{if(!(xJ(c,60545)|0)){b=1;break a}b=(xJ(c,60560)|0)==0&1;break a}default:{b=0;break a}}b=0}else b=0;while(0);return b|0}function pc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;do if(b|0?a[b>>0]|0:0){h=wt(b)|0;if(!h){c[f>>2]=b;_l(0,60016,f)|0;break}mr(d,134901)|0;g=c[e>>2]|0;c[e>>2]=g+1;ec(d,g);mr(d,60043)|0;g=h+8|0;b=0;f=0;while(1){if((f|0)>=(c[h>>2]|0))break;if(!b)b=1;else mr(d,82308)|0;qc((c[g>>2]|0)+(f*80|0)|0,d,e);f=f+1|0}c[e>>2]=(c[e>>2]|0)+-1;mr(d,134901)|0;ec(d,c[e>>2]|0);mr(d,82303)|0;xt(h)}while(0);l=i;return}function qc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;A=l;l=l+240|0;y=A+224|0;x=A+216|0;w=A+208|0;v=A+200|0;u=A+192|0;t=A+184|0;s=A+176|0;r=A+152|0;q=A+136|0;p=A+128|0;o=A+112|0;n=A+104|0;m=A+96|0;k=A+88|0;j=A+72|0;i=A+48|0;z=A+40|0;g=A+8|0;f=A;e=c[d>>2]|0;c[d>>2]=e+1;ec(b,e);mr(b,82337)|0;ec(b,c[d>>2]|0);e=c[a>>2]|0;a:do switch(e|0){case 1:case 0:{c[f>>2]=(e|0)==0?69:101;sr(b,60046,f);ec(b,c[d>>2]|0);D=+h[a+16>>3];C=+h[a+24>>3];B=+h[a+32>>3];h[g>>3]=+h[a+8>>3];h[g+8>>3]=D;h[g+16>>3]=C;h[g+24>>3]=B;sr(b,60059,g);break}case 3:case 2:{c[z>>2]=(e|0)==2?80:112;sr(b,60046,z);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 5:case 4:{c[i>>2]=(e|0)==4?66:98;sr(b,60046,i);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 6:{sr(b,60094,A+56|0);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 7:{sr(b,60106,A+64|0);ec(b,c[d>>2]|0);D=+h[a+16>>3];h[j>>3]=+h[a+8>>3];h[j+8>>3]=D;sr(b,60118,j);ec(b,c[d>>2]|0);z=c[a+24>>2]|0;c[k>>2]=(z|0)==0?108:(z|0)==1?99:114;sr(b,60140,k);ec(b,c[d>>2]|0);h[m>>3]=+h[a+32>>3];sr(b,60156,m);ec(b,c[d>>2]|0);c[n>>2]=mc(c[a+40>>2]|0,d)|0;sr(b,60173,n);break}case 9:case 8:{c[o>>2]=(e|0)==8?67:99;sr(b,60046,o);ec(b,c[d>>2]|0);sr(b,60187,A+120|0);ec(b,c[d>>2]|0);c[p>>2]=mc(c[a+8>>2]|0,d)|0;sr(b,60204,p);break}case 13:case 14:{c[q>>2]=(e|0)==13?67:99;sr(b,60046,q);ec(b,c[d>>2]|0);switch(c[a+8>>2]|0){case 0:{sr(b,60187,A+144|0);ec(b,c[d>>2]|0);c[r>>2]=mc(c[a+16>>2]|0,d)|0;sr(b,60204,r);break a}case 1:{sr(b,60219,A+160|0);ec(b,c[d>>2]|0);sc(b,a+16|0,d);break a}default:{sr(b,60238,A+168|0);ec(b,c[d>>2]|0);tc(b,a+16|0,d);break a}}}case 10:{sr(b,60257,s);ec(b,c[d>>2]|0);h[t>>3]=+h[a+8>>3];sr(b,60269,t);ec(b,c[d>>2]|0);c[u>>2]=mc(c[a+16>>2]|0,d)|0;sr(b,60285,u);break}case 11:{sr(b,60299,v);ec(b,c[d>>2]|0);c[w>>2]=mc(c[a+8>>2]|0,d)|0;sr(b,60311,w);break}case 15:{sr(b,60326,x);ec(b,c[d>>2]|0);c[y>>2]=c[a+8>>2];sr(b,60338,y);break}default:{}}while(0);z=(c[d>>2]|0)+-1|0;c[d>>2]=z;ec(b,z);mr(b,68190)|0;l=A;return}function rc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;j=l;l=l+48|0;i=j+32|0;g=j+16|0;f=j+8|0;e=c[b>>2]|0;d=c[b+4>>2]|0;sr(a,60499,j);b=0;while(1){if((b|0)>=(e|0))break;if((b|0)>0)sr(a,86030,f);k=+h[d+(b*24|0)+8>>3];h[g>>3]=+h[d+(b*24|0)>>3];h[g+8>>3]=k;sr(a,60511,g);b=b+1|0}sr(a,60452,i);l=j;return}function sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0;e=l;l=l+32|0;f=e+16|0;i=e;ec(a,c[d>>2]|0);g=+h[b+8>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=g;sr(a,60455,i);ec(a,c[d>>2]|0);g=+h[b+24>>3];h[f>>3]=+h[b+16>>3];h[f+8>>3]=g;sr(a,60477,f);ec(a,c[d>>2]|0);uc(a,c[b+32>>2]|0,c[b+36>>2]|0,d);l=e;return}function tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0;e=l;l=l+48|0;f=e+24|0;j=e;ec(a,c[d>>2]|0);g=+h[b+8>>3];i=+h[b+16>>3];h[j>>3]=+h[b>>3];h[j+8>>3]=g;h[j+16>>3]=i;sr(a,60354,j);ec(a,c[d>>2]|0);i=+h[b+32>>3];g=+h[b+40>>3];h[f>>3]=+h[b+24>>3];h[f+8>>3]=i;h[f+16>>3]=g;sr(a,60382,f);ec(a,c[d>>2]|0);uc(a,c[b+48>>2]|0,c[b+52>>2]|0,d);l=e;return}function uc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+48|0;k=m+32|0;j=m+16|0;i=m+8|0;sr(a,60410,m);f=0;while(1){if((f|0)>=(b|0))break;if((f|0)>0)sr(a,86030,i);o=+g[d+(f<<3)>>2];n=mc(c[d+(f<<3)+4>>2]|0,e)|0;h[j>>3]=o;c[j+8>>2]=n;sr(a,60421,j);f=f+1|0}sr(a,60452,k);l=m;return}function vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=bb[c[a>>2]&31](a,b,512)|0;if(e){if((c[e+12>>2]|0)!=(d|0)){c[f>>2]=b;_l(0,60601,f)|0}}else{f=$I(1,16)|0;c[f+8>>2]=GL(b)|0;c[f+12>>2]=d;bb[c[a>>2]&31](a,f,1)|0}l=g;return}function wc(a,b,d){a=a|0;b=b|0;d=d|0;_I(c[b+8>>2]|0);_I(b);return}function xc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;mr(a,61456)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;sr(a,61466,g);c[e>>2]=Dn(c[f+8>>2]|0)|0;sr(a,61501,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;sr(a,61514,d);mr(a,61527)|0;mr(a,61537)|0;mr(a,61545)|0;mr(a,61553)|0;mr(a,61561)|0;mr(a,61569)|0;mr(a,61577)|0;mr(a,61581)|0;mr(a,61586)|0;l=b;return}function yc(a){a=a|0;mr(a,61437)|0;return}function zc(a){a=a|0;c[41896]=2;return}function Ac(a){a=a|0;c[41896]=1;return}function Bc(a){a=a|0;c[41896]=2;return}function Cc(a){a=a|0;c[41896]=0;return}function Dc(a){a=a|0;c[41896]=2;return}function Ec(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;p=l;l=l+80|0;o=p;m=c[(c[b+16>>2]|0)+16>>2]|0;n=c[41896]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;j=c[e>>2]|0;k=g*.3333333333333333*+((rJ(j)|0)>>>0);f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;s=a[e+48>>0]|0;r=+h[d>>3];q=+h[d+8>>3];e=Oc(j)|0;c[o>>2]=4;c[o+4>>2]=s<<24>>24==108?0:s<<24>>24==114?2:1;c[o+8>>2]=m;c[o+12>>2]=n;c[o+16>>2]=0;c[o+20>>2]=f;h[o+24>>3]=g;h[o+32>>3]=i;c[o+40>>2]=6;h[o+48>>3]=g;h[o+56>>3]=k;c[o+64>>2]=~~(r+(r>=0.0?.5:-.5));c[o+68>>2]=~~(q+(q+-72.0>=0.0?-71.5:-72.5));c[o+72>>2]=e;sr(b,61382,o);l=p;return}function Fc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12652+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(xJ(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(Nc(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;sr(b,61325,j);k=10}break}default:ma(123205,60722,163,60753)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function Gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[41896]|0;Lc(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));sr(a,61260,f);l=e;return}function Hc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[41896]|0;Lc(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;sr(a,61164,g);Mc(a,b,d,1);l=f;return}function Ic(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;i=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;f=a+16|0;e=c[f>>2]|0;q=~~+h[e+152>>3];r=c[e+16>>2]|0;s=c[41896]|0;if((d|0)<=3)ma(60715,60722,360,60742);t=ZI((d*140|0)+140|0)|0;Lc(e,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[f>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[i>>2]=~~(E+(E>=0.0?.5:-.5));c[i+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(pL(t,73932,i)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;PA(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(pL(e,73932,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;sr(a,61215,A);c[z>>2]=t;sr(a,73939,z);_I(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;sr(a,73944,B);e=e+1|0}mr(a,134901)|0;l=C;return}function Jc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[41896]|0;Lc(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;sr(a,61164,f);Mc(a,b,d,0);l=e;return}function Kc(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;sr(a,61158,e);l=d;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function Mc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));sr(a,73932,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));sr(a,73932,i)}mr(a,134901)|0;l=j;return}function Nc(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[41897]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[170804+(g<<1)>>1]|0)-d|0;n=(b[171316+(g<<1)>>1]|0)-e|0;j=(b[171828+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[41897]=k+1;if((k|0)==256)g=i;else{b[170804+(g<<1)>>1]=d;b[171316+(g<<1)>>1]=e;b[171828+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function Oc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41898]|0;if(!d){c[41899]=64;d=ZI(64)|0;c[41898]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41899]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41899]=d;d=aJ(c[41898]|0,d)|0;c[41898]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;pL(d+1|0,74057,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41898]|0}function Pc(b){b=b|0;var d=0,e=0,f=0;e=c[b+16>>2]|0;switch(c[b+64>>2]|0){case 0:{mr(b,61053)|0;d=e+208|0;e=c[d>>2]|0;if(e|0?a[e>>0]|0:0){mr(b,61067)|0;mr(b,rw(c[d>>2]|0)|0)|0;mr(b,134901)|0}break}case 1:{d=e+208|0;f=c[d>>2]|0;if(f|0?a[f>>0]|0:0){mr(b,61067)|0;mr(b,rw(c[d>>2]|0)|0)|0;mr(b,87638)|0;mr(b,rw(Dn(c[e+8>>2]|0)|0)|0)|0;mr(b,134901)|0}break}case 3:{f=rw(Dn(c[e+8>>2]|0)|0)|0;mr(b,61076)|0;mr(b,f)|0;mr(b,61086)|0;mr(b,f)|0;mr(b,61041)|0;break}default:{}}return}function Qc(a){a=a|0;var b=0;b=c[a+16>>2]|0;switch(c[a+64>>2]|0){case 2:{Sc(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);break}case 3:{Sc(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);mr(a,61045)|0;break}default:{}}return}function Rc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+16>>2]|0;Sc(a,c[g+264>>2]|0,c[g+272>>2]|0,c[g+268>>2]|0,b,d,e,f);return}function Sc(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=l;l=l+128|0;x=y+120|0;u=y+112|0;t=y+96|0;s=y+80|0;r=y+56|0;w=y+48|0;q=y+40|0;v=y+24|0;p=y;a:do if((e|0)!=0&(f|0)!=0){m=f+10|0;if((c[41900]|0)<(f|0)){c[41900]=m;o=aJ(c[41901]|0,m<<3)|0;c[41901]=o}else o=c[41901]|0;m=0;while(1){if((m|0)>=(f|0))break;z=+h[e+(m<<4)>>3];c[o+(m<<3)>>2]=~~(z+(z>=0.0?.5:-.5));z=+h[e+(m<<4)+8>>3];c[o+(m<<3)+4>>2]=~~(z+(z>=0.0?.5:-.5));m=m+1|0}n=b+64|0;m=c[n>>2]|0;e=(g|0)!=0;if(e&(m|0)==0){if(!(a[g>>0]|0))break;switch(d|0){case 0:{v=c[o>>2]|0;w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[p>>2]=g;c[p+4>>2]=v;c[p+8>>2]=w;c[p+12>>2]=x;c[p+16>>2]=f;sr(b,60787,p);break a}case 1:{w=c[o>>2]|0;x=c[o+4>>2]|0;f=(c[o+8>>2]|0)-w|0;c[v>>2]=g;c[v+4>>2]=w;c[v+8>>2]=x;c[v+12>>2]=f;sr(b,60808,v);break a}case 2:{c[q>>2]=g;sr(b,60828,q);m=0;while(1){if((m|0)>=(f|0))break;v=c[41901]|0;x=c[v+(m<<3)+4>>2]|0;c[w>>2]=c[v+(m<<3)>>2];c[w+4>>2]=x;sr(b,60836,w);m=m+1|0}mr(b,134901)|0;break a}default:ma(123205,60843,63,60863)}}if(e&(m|0)==1){if(!(a[g>>0]|0))break;if(!d){w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=w;c[r+8>>2]=x;c[r+12>>2]=f;c[r+16>>2]=g;c[r+20>>2]=i;sr(b,60880,r);break}else ma(123205,60843,75,60863)}if((m&-2|0)==2){switch(d|0){case 1:{mr(b,60913)|0;break}case 0:{mr(b,60934)|0;break}case 2:{mr(b,60953)|0;break}default:ma(123205,60843,91,60863)}if(k|0?a[k>>0]|0:0){mr(b,66433)|0;mr(b,uw(k)|0)|0;mr(b,83714)|0}if(e?a[g>>0]|0:0){mr(b,60972)|0;mr(b,uw(g)|0)|0;mr(b,83714)|0}if(j|0?a[j>>0]|0:0){mr(b,67392)|0;mr(b,rw(j)|0)|0;mr(b,83714)|0}if(i|0?a[i>>0]|0:0){mr(b,60980)|0;mr(b,rw(i)|0)|0;mr(b,83714)|0}mr(b,60989)|0;mr(b,60997)|0;b:do switch(d|0){case 1:{f=c[41901]|0;w=c[f>>2]|0;x=c[f+4>>2]|0;f=(c[f+8>>2]|0)-w|0;c[s>>2]=w;c[s+4>>2]=x;c[s+8>>2]=f;sr(b,61007,s);break}case 0:{v=c[41901]|0;w=c[v+12>>2]|0;x=c[v+8>>2]|0;f=c[v+4>>2]|0;c[t>>2]=c[v>>2];c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=f;sr(b,61016,t);break}case 2:{w=c[41901]|0;m=c[w+4>>2]|0;c[u>>2]=c[w>>2];c[u+4>>2]=m;sr(b,61028,u);m=1;while(1){if((m|0)>=(f|0))break b;v=c[41901]|0;w=c[v+(m<<3)+4>>2]|0;c[x>>2]=c[v+(m<<3)>>2];c[x+4>>2]=w;sr(b,61034,x);m=m+1|0}}default:{}}while(0);if((c[n>>2]|0)==3){mr(b,66257)|0;break}else{mr(b,61041)|0;break}}}while(0);l=y;return}function Tc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;mr(a,61456)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;sr(a,61466,g);c[e>>2]=Dn(c[f+8>>2]|0)|0;sr(a,61501,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;sr(a,61514,d);mr(a,61527)|0;mr(a,61537)|0;mr(a,61545)|0;mr(a,61553)|0;mr(a,61561)|0;mr(a,61569)|0;mr(a,61577)|0;mr(a,61581)|0;mr(a,61586)|0;l=b;return}function Uc(a){a=a|0;mr(a,61437)|0;return}function Vc(a){a=a|0;c[41902]=2;return}function Wc(a){a=a|0;c[41902]=1;return}function Xc(a){a=a|0;c[41902]=2;return}function Yc(a){a=a|0;c[41902]=0;return}function Zc(a){a=a|0;c[41902]=2;return}function _c(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0;n=l;l=l+80|0;m=n;j=c[(c[b+16>>2]|0)+16>>2]|0;k=c[41902]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;q=a[e+48>>0]|0;p=+h[d>>3];o=+h[d+8>>3];e=id(c[e>>2]|0)|0;c[m>>2]=4;c[m+4>>2]=q<<24>>24==108?0:q<<24>>24==114?2:1;c[m+8>>2]=j;c[m+12>>2]=k;c[m+16>>2]=0;c[m+20>>2]=f;h[m+24>>3]=g;h[m+32>>3]=i;c[m+40>>2]=4;h[m+48>>3]=0.0;h[m+56>>3]=0.0;c[m+64>>2]=~~(p+(p>=0.0?.5:-.5));c[m+68>>2]=~~(o+(o>=0.0?.5:-.5));c[m+72>>2]=e;sr(b,61382,m);l=n;return}function $c(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12652+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(xJ(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(hd(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;sr(b,61325,j);k=10}break}case 0:{f=0;k=10;break}default:ma(123205,61346,168,61365)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[41902]|0;fd(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));sr(a,61260,f);l=e;return}function bd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[41902]|0;fd(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;sr(a,61164,g);gd(a,b,d,1);l=f;return}function cd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;f=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;e=a+16|0;p=c[e>>2]|0;q=~~+h[p+152>>3];r=c[p+16>>2]|0;s=c[41902]|0;t=ZI((d*140|0)+140|0)|0;fd(p,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[e>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[f>>2]=~~(E+(E>=0.0?.5:-.5));c[f+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(pL(t,73932,f)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;PA(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(pL(e,73932,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;sr(a,61215,A);c[z>>2]=t;sr(a,73939,z);_I(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;sr(a,73944,B);e=e+1|0}mr(a,134901)|0;l=C;return}function dd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[41902]|0;fd(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;sr(a,61164,f);gd(a,b,d,0);l=e;return}function ed(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;sr(a,61158,e);l=d;return}function fd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function gd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));sr(a,73932,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));sr(a,73932,i)}mr(a,134901)|0;l=j;return}function hd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[41903]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[172340+(g<<1)>>1]|0)-d|0;n=(b[172852+(g<<1)>>1]|0)-e|0;j=(b[173364+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[41903]=k+1;if((k|0)==256)g=i;else{b[172340+(g<<1)>>1]=d;b[172852+(g<<1)>>1]=e;b[173364+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function id(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41904]|0;if(!d){c[41905]=64;d=ZI(64)|0;c[41904]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41905]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41905]=d;d=aJ(c[41904]|0,d)|0;c[41904]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;pL(d+1|0,74057,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41904]|0}function jd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=l;l=l+16|0;b=d;mr(a,66165)|0;if((c[a+64>>2]|0)==2)mr(a,66180)|0;else mr(a,134901)|0;g=c[c[a+12>>2]>>2]|0;f=c[g+4>>2]|0;e=c[g+8>>2]|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;c[b+8>>2]=e;sr(a,66191,b);l=d;return}function kd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+8|0;e=g;mr(a,66119)|0;d=a+64|0;b=a+12|0;if((c[d>>2]|0)!=2){c[e>>2]=c[(c[b>>2]|0)+28>>2];sr(a,66130,e)}if((c[(c[b>>2]|0)+20>>2]|0)==0?(c[d>>2]|0)!=2:0){b=c[a+476>>2]|0;d=c[a+480>>2]|0;e=c[a+484>>2]|0;c[f>>2]=c[a+472>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=e;sr(a,62499,f)}mr(a,66145)|0;mr(a,66158)|0;l=g;return}function ld(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+32|0;j=k+24|0;f=k+8|0;i=k;g=c[b+16>>2]|0;a[173892]=0;e=b+12|0;h=g+8|0;if(!(c[(c[e>>2]|0)+28>>2]|0)){c[i>>2]=Dn(c[h>>2]|0)|0;sr(b,62430,i);d=b+64|0;if((c[d>>2]|0)==2)mr(b,62463)|0;else mr(b,62445)|0;do if(!(c[(c[e>>2]|0)+20>>2]|0))if((c[d>>2]|0)==2){n=c[b+460>>2]|0;m=c[b+464>>2]|0;d=c[b+468>>2]|0;c[f>>2]=c[b+456>>2];c[f+4>>2]=n;c[f+8>>2]=m;c[f+12>>2]=d;sr(b,62499,f);break}else{mr(b,62475)|0;break}while(0);mr(b,62529)|0;ey(b,c[(c[e>>2]|0)+24>>2]|0,12928);gy(b);d=c[(c[e>>2]|0)+20>>2]|0;if(d|0){c[i>>2]=c[d>>2];c[i+4>>2]=0;ey(b,0,i)}}c[41906]=(a[(c[(c[h>>2]|0)+16>>2]|0)+115>>0]|0)==1?1:-1;if(!(a[173892]|0)){mr(b,62549)|0;a[173892]=1}d=c[g+208>>2]|0;if(d|0){c[j>>2]=hy(d,c[41906]|0)|0;sr(b,62562,j)}l=k;return}function md(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=l;l=l+16|0;f=b;c[f>>2]=d;c[f+4>>2]=e;sr(a,62414,f);l=b;return}function nd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0;s=l;l=l+144|0;r=s+128|0;q=s+112|0;p=s+72|0;o=s+56|0;n=s+40|0;m=s+32|0;e=s+24|0;b=s+8|0;d=s;f=c[a+456>>2]|0;j=c[a+460>>2]|0;g=c[a+464>>2]|0;i=c[a+468>>2]|0;k=a+12|0;t=(c[(c[k>>2]|0)+28>>2]|0)+1|0;c[d>>2]=t;c[d+4>>2]=t;sr(a,62041,d);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[b>>2]=f;c[b+4>>2]=j;c[b+8>>2]=g;c[b+12>>2]=i;sr(a,62058,b)}d=a+360|0;c[e>>2]=c[d>>2]|0?62092:62102;sr(a,62111,e);b=a+64|0;if((c[b>>2]|0)==1){c[m>>2]=g;c[m+4>>2]=i;sr(a,62136,m)}m=c[a+200>>2]|0;t=c[a+204>>2]|0;c[n>>2]=c[a+196>>2];c[n+4>>2]=m;c[n+8>>2]=t;sr(a,62175,n);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[o>>2]=f;c[o+4>>2]=j;c[o+8>>2]=g-f;c[o+12>>2]=i-j;sr(a,62195,o)}w=+h[a+496>>3];t=c[d>>2]|0;v=+h[a+504>>3];u=+h[a+512>>3];h[p>>3]=+h[a+488>>3];h[p+8>>3]=w;c[p+16>>2]=t;h[p+24>>3]=v;h[p+32>>3]=u;sr(a,62235,p);if((c[b>>2]|0)==1){if((g|0)>14399|(i|0)>14399){t=c[(c[k>>2]|0)+16>>2]|0;c[q>>2]=g;c[q+4>>2]=i;c[q+8>>2]=14400;hb[t&31](62278,q)}c[r>>2]=f;c[r+4>>2]=j;c[r+8>>2]=g;c[r+12>>2]=i;sr(a,62373,r)}l=s;return}function od(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=a+12|0;if(c[(c[b>>2]|0)+20>>2]|0){mr(a,61965)|0;ey(a,0,(c[(c[b>>2]|0)+20>>2]|0)+4|0)}mr(a,61982)|0;mr(a,62009)|0;c[d>>2]=c[(c[b>>2]|0)+28>>2];sr(a,62024,d);l=e;return}function pd(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;sr(a,61958,d);mr(a,61951)|0;l=b;return}function qd(a){a=a|0;mr(a,77394)|0;return}function rd(a){a=a|0;mr(a,61951)|0;return}function sd(a){a=a|0;mr(a,77394)|0;return}function td(a){a=a|0;mr(a,61951)|0;return}function ud(a){a=a|0;mr(a,77394)|0;return}function vd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=l;l=l+16|0;d=e;if(b|0?(g=(c[a+16>>2]|0)+272|0,c[g>>2]|0):0){mr(a,61847)|0;wr(a,c[g>>2]|0,2);mr(a,61858)|0;c[d>>2]=hy(b,c[41906]|0)|0;sr(a,61862,d)}l=e;return}function wd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+8|0;k=m;f=c[b+16>>2]|0;if(!(+h[f+40>>3]<.5)){Dd(b,f+16|0);i=e+4|0;tr(b,+h[(c[i>>2]|0)+16>>3]);c[j>>2]=c[c[i>>2]>>2];sr(b,61806,j);i=hy(c[e>>2]|0,c[41906]|0)|0;switch(a[e+48>>0]|0){case 114:{n=e+32|0;f=n;g=+h[n>>3];break}case 108:{f=e+32|0;g=0.0;break}default:{n=e+32|0;f=n;g=+h[n>>3]*.5}}h[d>>3]=+h[d>>3]-g;n=d+8|0;h[n>>3]=+h[n>>3]+ +h[e+24>>3];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];vr(b,j);mr(b,61821)|0;tr(b,+h[f>>3]);c[k>>2]=i;sr(b,61830,k)}l=m;return}function xd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+32|0;f=g;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];h[f+16>>3]=+h[b+16>>3]-+h[b>>3];h[f+24>>3]=+h[b+24>>3]-+h[b+8>>3];b=a+16|0;if(d|0?(e=c[b>>2]|0,+h[e+80>>3]>.5):0){Dd(a,e+56|0);wr(a,f,2);mr(a,61764)|0}if(+h[(c[b>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[b>>2]|0)+16|0);wr(a,f,2);mr(a,61784)|0}l=g;return}function yd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+16|0;i=j;g=a+16|0;if(e|0?(f=c[g>>2]|0,+h[f+80>>3]>.5):0){Dd(a,f+56|0);mr(a,61685)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];vr(a,i);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;f=b+(e<<4)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];vr(a,i);mr(a,61703)|0;e=e+1|0}mr(a,61730)|0}if(+h[(c[g>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[g>>2]|0)+16|0);mr(a,61685)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];vr(a,i);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;g=b+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];vr(a,i);mr(a,61703)|0;e=e+1|0}mr(a,61746)|0}l=j;return}function zd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0;k=l;l=l+16|0;f=k;i=a+16|0;if(g|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Dd(a,j+56|0);mr(a,61685)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];vr(a,f);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;wr(a,b+(e<<4)|0,3);mr(a,61720)|0;e=e+3|0}mr(a,61730)|0}if(+h[(c[i>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[i>>2]|0)+16|0);mr(a,61685)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];vr(a,f);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;wr(a,b+(e<<4)|0,3);mr(a,61720)|0;e=e+3|0}mr(a,61712)|0}l=k;return}function Ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;g=l;l=l+16|0;f=g;e=a+16|0;if(+h[(c[e>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[e>>2]|0)+16|0);mr(a,61685)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];vr(a,f);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;i=b+(e<<4)|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];vr(a,f);mr(a,61703)|0;e=e+1|0}mr(a,61712)|0}l=g;return}function Bd(a,b){a=a|0;b=b|0;mr(a,61682)|0;mr(a,b)|0;mr(a,134901)|0;return}function Cd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;g=n+16|0;m=n+8|0;k=n;i=a+16|0;if(f|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Dd(a,j+56|0);mr(a,77289)|0;wr(a,d,e);mr(a,87638)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];vr(a,g);c[k>>2]=e;c[k+4>>2]=b;sr(a,61599,k)}if(+h[(c[i>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[i>>2]|0)+16|0);mr(a,77289)|0;wr(a,d,e);mr(a,87638)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];vr(a,g);c[m>>2]=e;c[m+4>>2]=b;sr(a,61615,m)}l=n;return}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=l;l=l+32|0;e=f;if(b|0){switch(c[(c[a+16>>2]|0)+4>>2]|0){case 1:case 0:{d=96286;break}case 2:{d=96273;break}case 3:{d=96237;break}default:d=61651}i=+h[b+8>>3];g=+h[b+16>>3];h[e>>3]=+h[b>>3];h[e+8>>3]=i;h[e+16>>3]=g;c[e+24>>2]=d;sr(a,61658,e)}l=f;return}function Ed(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;g=b+16|0;i=c[g>>2]|0;d=c[i+160>>2]|0;tr(b,+h[i+152>>3]);mr(b,61632)|0;while(1){if(!d)break;i=d+4|0;f=c[d>>2]|0;if(!f)break;if(!(xJ(f,95910)|0)){d=i;continue}else e=f;while(1){d=e+1|0;if(!(a[e>>0]|0))break;else e=d}a:while(1){if(!(a[d>>0]|0))break;c[j>>2]=d;sr(b,61647,j);while(1){e=d+1|0;if(!(a[d>>0]|0)){d=e;continue a}else d=e}}if(!(xJ(f,119127)|0))h[(c[g>>2]|0)+152>>3]=0.0;c[k>>2]=f;sr(b,81633,k);d=i}l=m;return}function Fd(b){b=b|0;var d=0;mr(b,67671)|0;d=Im(c[(c[b>>2]|0)+168>>2]|0,67727)|0;if(d|0?a[d>>0]|0:0){mr(b,67738)|0;mr(b,d)|0;mr(b,67762)|0}mr(b,67783)|0;mr(b,67831)|0;mr(b,67885)|0;d=b+12|0;mr(b,rw(c[c[c[d>>2]>>2]>>2]|0)|0)|0;mr(b,71014)|0;mr(b,rw(c[(c[c[d>>2]>>2]|0)+4>>2]|0)|0)|0;mr(b,71024)|0;mr(b,rw(c[(c[c[d>>2]>>2]|0)+8>>2]|0)|0)|0;mr(b,68267)|0;mr(b,68291)|0;return}function Gd(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;i=l;l=l+48|0;g=i+16|0;f=i+8|0;e=i;d=c[b+16>>2]|0;mr(b,67506)|0;d=d+8|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){mr(b,68230)|0;mr(b,rw(Dn(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;sr(b,67511,e);e=c[b+452>>2]|0;c[f>>2]=c[b+448>>2];c[f+4>>2]=e;sr(b,67527,f);m=+h[b+392>>3];k=+h[b+400>>3];j=+h[b+408>>3];h[g>>3]=+h[b+384>>3];h[g+8>>3]=m;h[g+16>>3]=k;h[g+24>>3]=j;sr(b,67560,g);mr(b,67591)|0;mr(b,67627)|0;mr(b,69221)|0;l=i;return}function Hd(a){a=a|0;mr(a,67498)|0;return}function Id(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;de(a,b,0,86583,c[(c[a+16>>2]|0)+8>>2]|0);mr(a,69221)|0;return}function Jd(a){a=a|0;mr(a,67346)|0;return}function Kd(b){b=b|0;var d=0,e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=c[b+16>>2]|0;d=g+8|0;de(b,c[g+212>>2]|0,0,96286,c[d>>2]|0);mr(b,67450)|0;tr(b,+h[b+488>>3]);mr(b,87638)|0;tr(b,+h[b+496>>3]);c[f>>2]=0-(c[b+360>>2]|0);sr(b,67469,f);tr(b,+h[b+504>>3]);mr(b,87638)|0;tr(b,-+h[b+512>>3]);mr(b,67493)|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){mr(b,67402)|0;mr(b,rw(Dn(c[d>>2]|0)|0)|0)|0;mr(b,67410)|0}l=e;return}function Ld(a){a=a|0;mr(a,67346)|0;return}function Md(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;de(a,c[d+212>>2]|0,0,93039,c[b>>2]|0);mr(a,69221)|0;mr(a,67402)|0;mr(a,rw(Dn(c[b>>2]|0)|0)|0)|0;mr(a,67410)|0;return}function Nd(a){a=a|0;mr(a,67346)|0;return}function Od(a){a=a|0;var b=0,d=0,e=0;d=c[a+16>>2]|0;b=c[a+160>>2]|0;if((b|0)>1)b=c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0;else b=0;e=d+8|0;de(a,c[d+212>>2]|0,b,96273,c[e>>2]|0);mr(a,69221)|0;mr(a,67402)|0;mr(a,rw(Dn(c[e>>2]|0)|0)|0)|0;mr(a,67410)|0;return}function Pd(a){a=a|0;mr(a,67346)|0;return}function Qd(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;de(a,c[d+212>>2]|0,0,96237,c[b>>2]|0);mr(a,69221)|0;mr(a,67402)|0;b=qw(87129,c[b>>2]|0)|0;mr(a,rw(b)|0)|0;_I(b);mr(a,67410)|0;return}function Rd(a){a=a|0;mr(a,67346)|0;return}function Sd(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;mr(b,67352)|0;if(f|0){mr(b,67355)|0;mr(b,rw(f)|0)|0;mr(b,83714)|0}mr(b,67245)|0;mr(b,69182)|0;if(c|0?a[c>>0]|0:0){mr(b,67363)|0;mr(b,c)|0;mr(b,83714)|0}if(d|0?a[d>>0]|0:0){mr(b,67377)|0;mr(b,sw(d,1)|0)|0;mr(b,83714)|0}if(e|0?a[e>>0]|0:0){mr(b,67392)|0;mr(b,rw(e)|0)|0;mr(b,83714)|0}mr(b,69221)|0;return}function Td(a){a=a|0;mr(a,69176)|0;mr(a,67346)|0;return}function Ud(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+176|0;L=M+160|0;K=M+152|0;F=M+136|0;J=M+128|0;E=M+120|0;D=M+112|0;C=M+104|0;B=M+96|0;A=M+88|0;y=M+80|0;w=M+72|0;v=M+64|0;u=M+56|0;t=M+48|0;i=M+40|0;q=M+32|0;s=M+24|0;r=M+16|0;p=M+8|0;o=M;I=c[e+16>>2]|0;mr(e,66877)|0;switch(a[g+48>>0]|0){case 108:{mr(e,66883)|0;break}case 114:{mr(e,66904)|0;break}default:mr(e,66923)|0}H=f+8|0;G=+h[H>>3]+ +h[g+24>>3];h[H>>3]=G;H=I+260|0;if(!(b[H>>1]&512)){mr(e,66945)|0;tr(e,+h[f>>3]);mr(e,66950)|0;tr(e,-G);mr(e,83714)|0}x=g+4|0;f=c[x>>2]|0;n=c[f+8>>2]|0;if(n){switch(c[(c[(c[(c[e>>2]|0)+168>>2]|0)+16>>2]|0)+244>>2]|0){case 1:{m=n;f=n+16|0;i=n+8|0;break}case 2:{m=n+24|0;f=n+32|0;i=n+28|0;break}default:{m=n+4|0;f=n+16|0;i=n+8|0}}j=c[f>>2]|0;f=c[i>>2]|0;k=c[n+12>>2]|0;c[o>>2]=c[m>>2];sr(e,66956,o);i=c[n+24>>2]|0;if(i|0){c[p>>2]=i;sr(e,66973,p)}mr(e,83714)|0;if(f|0){c[r>>2]=f;sr(e,66977,r)}if(k|0){c[s>>2]=k;sr(e,66995,s)}if(!j)j=0;else{c[q>>2]=j;sr(e,67014,q)}}else{c[i>>2]=c[f>>2];sr(e,67031,i);j=0;f=0}i=c[x>>2]|0;if(i|0?(z=c[i+24>>2]|0,z&127|0):0){if(!((f|0)!=0|(z&1|0)==0))sr(e,67049,t);if(!((j|0)!=0|(z&2|0)==0))sr(e,67069,u);if(z&100|0){sr(e,67090,v);if(!(z&4))f=0;else{sr(e,91030,w);f=1}if(z&64){c[y>>2]=f|0?86030:174181;sr(e,67109,y);f=1}if(z&32|0){c[A>>2]=f|0?86030:174181;sr(e,67120,A)}sr(e,83714,B)}if(z&8|0)sr(e,67135,C);if(z&16|0)sr(e,67159,D)}h[E>>3]=+h[(c[x>>2]|0)+16>>3];sr(e,67181,E);f=I+16|0;switch(c[I+48>>2]|0){case 5:{f=c[f>>2]|0;if(iK(f,122106)|0){c[J>>2]=f;sr(e,67199,J)}break}case 1:{E=d[f+1>>0]|0;J=d[f+2>>0]|0;c[F>>2]=d[f>>0];c[F+4>>2]=E;c[F+8>>2]=J;sr(e,67210,F);break}default:ma(123205,66391,486,67232)}mr(e,67245)|0;if(b[H>>1]&512){c[K>>2]=rw(c[I+212>>2]|0)|0;sr(e,67247,K);mr(e,67296)|0;tr(e,-G);mr(e,67314)|0}mr(e,sw(c[g>>2]|0,1)|0)|0;if(b[H>>1]&512)sr(e,67317,L);mr(e,67337)|0;l=M;return}function Vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 2:{d=ae(a,b,2)|0;break}case 3:{d=be(a)|0;break}default:d=0}mr(a,66841)|0;_d(a,c,d);mr(a,66850)|0;tr(a,+h[b>>3]);mr(a,66856)|0;c=b+8|0;tr(a,-+h[c>>3]);mr(a,66863)|0;tr(a,+h[b+16>>3]-+h[b>>3]);mr(a,66870)|0;tr(a,+h[b+24>>3]-+h[c>>3]);mr(a,66257)|0;return}function Wd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;switch(d|0){case 2:{e=ae(a,b,c)|0;break}case 3:{e=be(a)|0;break}default:e=0}mr(a,66832)|0;_d(a,d,e);mr(a,66247)|0;e=0;while(1){if((e|0)>=(c|0))break;tr(a,+h[b+(e<<4)>>3]);mr(a,86030)|0;tr(a,-+h[b+(e<<4)+8>>3]);mr(a,87638)|0;e=e+1|0}tr(a,+h[b>>3]);mr(a,86030)|0;tr(a,-+h[b+8>>3]);mr(a,66257)|0;return}function Xd(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=c[a+16>>2]|0;switch(h|0){case 2:{f=ae(a,d,e)|0;break}case 3:{f=be(a)|0;break}default:f=0}mr(a,66427)|0;if(b[g+260>>1]&512){mr(a,66433)|0;mr(a,rw(c[g+212>>2]|0)|0)|0;mr(a,66439)|0}_d(a,h,f);mr(a,66444)|0;ce(a,d,e);mr(a,66257)|0;return}function Yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;mr(a,66237)|0;_d(a,0,0);mr(a,66247)|0;d=0;while(1){if((d|0)>=(c|0))break;tr(a,+h[b+(d<<4)>>3]);mr(a,86030)|0;tr(a,-+h[b+(d<<4)+8>>3]);mr(a,87638)|0;d=d+1|0}mr(a,66257)|0;return}function Zd(a,b){a=a|0;b=b|0;mr(a,66231)|0;mr(a,rw(b)|0)|0;mr(a,68291)|0;return}function _d(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+96|0;k=q+48|0;p=q+40|0;n=q+32|0;o=q+24|0;j=q+16|0;g=q+8|0;f=q;m=c[b+16>>2]|0;mr(b,66262)|0;a:do switch(d|0){case 2:{c[f>>2]=e;sr(b,66270,f);break}case 3:{c[g>>2]=e;sr(b,66281,g);break}case 0:{mr(b,120501)|0;break}default:{d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:break a;default:{}}h[j>>3]=+(d&255)*.00392156862745098;sr(b,66292,j)}}}while(0);mr(b,66311)|0;e=m+16|0;f=k;g=e;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);d=m+152|0;if(+h[d>>3]!=1.0){mr(b,66322)|0;tr(b,+h[d>>3])}switch(c[m+144>>2]|0){case 1:{c[o>>2]=66362;sr(b,66339,o);break}case 2:{c[n>>2]=66366;sr(b,66339,n);break}default:{}}b:do if((c[m+48>>2]|0)==1){d=a[e+3>>0]|0;switch(d<<24>>24){case -1:case 0:break b;default:{}}h[p>>3]=+(d&255)*.00392156862745098;sr(b,66370,p)}while(0);mr(b,83714)|0;l=q;return}function $d(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{mr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){mr(b,122171)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;sr(b,68547,f);break a}default:ma(123205,66391,117,66411)}while(0);l=g;return}function ae(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;o=t+64|0;r=t+56|0;n=t+48|0;m=t+40|0;i=t+32|0;k=t;q=c[41908]|0;c[41908]=q+1;p=c[b+16>>2]|0;f=+(c[p+136>>2]|0)*.017453292519943295;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;JB(d,k,e,f,0);c[o>>2]=q;sr(b,66664,o);mr(b,66729)|0;tr(b,+h[k>>3]);mr(b,66734)|0;tr(b,+h[k+8>>3]);mr(b,66741)|0;tr(b,+h[k+16>>3]);mr(b,66748)|0;tr(b,+h[k+24>>3]);mr(b,66755)|0;k=p+140|0;f=+g[k>>2];if(f>0.0){h[i>>3]=f+-.001;sr(b,66760,i)}else mr(b,66536)|0;d=p+56|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));$d(b,o);mr(b,66572)|0;a:do if((c[p+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=7;break a}default:{}}h[m>>3]=+(d&255)*.00392156862745098;sr(b,84631,m)}else s=7;while(0);if((s|0)==7)mr(b,66587)|0;mr(b,66590)|0;f=+g[k>>2];if(f>0.0){h[n>>3]=f;sr(b,66760,n)}else mr(b,66596)|0;d=p+96|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));$d(b,o);mr(b,66572)|0;b:do if((c[p+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=14;break b}default:{}}h[r>>3]=+(d&255)*.00392156862745098;sr(b,84631,r)}else s=14;while(0);if((s|0)==14)mr(b,66587)|0;mr(b,66800)|0;l=t;return q|0}function be(b){b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;k=q+16|0;o=q+8|0;j=q;n=c[41907]|0;c[41907]=n+1;m=c[b+16>>2]|0;r=+(c[m+136>>2]|0)*.017453292519943295;e=r;if(r==0.0){f=50;d=50}else{f=~~((+E(+e)+1.0)*50.0);d=~~((1.0-+F(+e))*50.0)}c[k>>2]=n;c[k+4>>2]=f;c[k+8>>2]=d;sr(b,66452,k);mr(b,66536)|0;d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);mr(b,66572)|0;a:do if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=6;break a}default:{}}h[j>>3]=+(d&255)*.00392156862745098;sr(b,84631,j)}else p=6;while(0);if((p|0)==6)mr(b,66587)|0;mr(b,66590)|0;mr(b,66596)|0;d=m+96|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);mr(b,66572)|0;b:do if((c[m+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=10;break b}default:{}}h[o>>3]=+(d&255)*.00392156862745098;sr(b,84631,o)}else p=10;while(0);if((p|0)==10)mr(b,66587)|0;mr(b,66632)|0;l=q;return n|0}function ce(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+16|0;g=i;e=77;f=0;while(1){if((f|0)>=(d|0))break;c[g>>2]=e;sr(a,66449,g);tr(a,+h[b+(f<<4)>>3]);mr(a,86030)|0;tr(a,-+h[b+(f<<4)+8>>3]);e=(f|0)==0?67:32;f=f+1|0}l=i;return}function de(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;mr(b,67420)|0;mr(b,rw(d)|0)|0;if(e|0){c[h>>2]=rw(e)|0;sr(b,67428,h)}c[i>>2]=f;sr(b,67432,i);d=Im(g,67444)|0;if(d|0?a[d>>0]|0:0){mr(b,87638)|0;mr(b,rw(d)|0)|0}mr(b,83714)|0;l=j;return}function ee(a){a=a|0;var b=0;mr(a,68251)|0;b=a+12|0;mr(a,oe(c[c[c[b>>2]>>2]>>2]|0)|0)|0;mr(a,71014)|0;mr(a,oe(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;mr(a,71024)|0;mr(a,oe(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;mr(a,68267)|0;return}function fe(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b+16>>2]|0;mr(b,68228)|0;d=d+8|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){mr(b,68230)|0;mr(b,oe(Dn(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;sr(b,68239,e);c[41909]=0;l=f;return}function ge(a){a=a|0;c[41909]=1;return}function he(a){a=a|0;c[41909]=-1;return}function ie(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;i=n+8|0;m=n;f=c[b+16>>2]|0;if(c[f+144>>2]|0?(k=e+4|0,j=~~(+h[b+352>>3]*+h[(c[k>>2]|0)+16>>3]),j|0):0){pe(b);mr(b,68167)|0;g=d+8|0;h[g>>3]=+h[g>>3]-+(j|0)*.55;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];vr(b,i);mr(b,68181)|0;mr(b,c[e>>2]|0)|0;mr(b,68190)|0;mr(b,67988)|0;g=i;d=f+16|0;f=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(f|0));qe(b,i);mr(b,68192)|0;i=c[k>>2]|0;k=c[i+8>>2]|0;k=c[((k|0)==0?i:k+4|0)>>2]|0;mr(b,83714)|0;mr(b,k)|0;mr(b,83714)|0;c[m>>2]=j;sr(b,68201,m);switch(a[e+48>>0]|0){case 108:{mr(b,68206)|0;break}case 114:{mr(b,68217)|0;break}default:{}}re(b);mr(b,134901)|0}l=n;return}function je(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){n=+h[b>>3];m=+h[b+24>>3];e=b+8|0;k=+h[e>>3];h[b>>3]=n-+h[b+16>>3]+n;h[e>>3]=k-m+k;pe(a);mr(a,68153)|0;wr(a,b,2);mr(a,67988)|0;do if(!d)if(!(c[41909]|0)){mr(a,82272)|0;break}else{mr(a,121990)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f)}while(0);if((c[41909]|0)==1)c[41909]=0;mr(a,68099)|0;tr(a,+h[g+152>>3]);mr(a,68142)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f);b=c[i>>2]|0;if((b|0)==1){mr(a,67996)|0;b=c[i>>2]|0}if((b|0)==2)mr(a,68005)|0;re(a);mr(a,134901)|0}l=j;return}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){pe(a);mr(a,68125)|0;wr(a,b,d);mr(a,67988)|0;do if(!e)if(!(c[41909]|0)){mr(a,82272)|0;break}else{mr(a,121990)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f)}while(0);if((c[41909]|0)==1)c[41909]=0;mr(a,68099)|0;tr(a,+h[g+152>>3]);mr(a,68142)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f);b=c[i>>2]|0;if((b|0)==1){mr(a,67996)|0;b=c[i>>2]|0}if((b|0)==2)mr(a,68005)|0;re(a);mr(a,134901)|0}l=j;return}function le(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m;j=c[a+16>>2]|0;k=j+144|0;if(c[k>>2]|0){pe(a);mr(a,67974)|0;wr(a,b,d);mr(a,67988)|0;e=i;f=j+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));qe(a,i);mr(a,68099)|0;tr(a,+h[j+152>>3]);e=c[k>>2]|0;if((e|0)==1){mr(a,67996)|0;e=c[k>>2]|0}if((e|0)==2)mr(a,68005)|0;mr(a,68108)|0;re(a);mr(a,134901)|0}l=m;return}function me(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;g=i;e=c[a+16>>2]|0;h=e+144|0;if(c[h>>2]|0){pe(a);mr(a,67974)|0;wr(a,b,d);mr(a,67988)|0;f=g;b=e+16|0;d=f+40|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));qe(a,g);b=c[h>>2]|0;if((b|0)==1){mr(a,67996)|0;b=c[h>>2]|0}if((b|0)==2)mr(a,68005)|0;re(a);mr(a,134901)|0}l=i;return}function ne(a,b){a=a|0;b=b|0;mr(a,67971)|0;mr(a,oe(b)|0)|0;mr(a,134901)|0;return}function oe(a){a=a|0;return a|0}function pe(b){b=b|0;if(!(a[b+144>>0]|0))mr(b,68096)|0;else mr(b,c[b+148>>2]|0)|0;return}function qe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{mr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){mr(b,82272)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;sr(b,68547,f);break a}default:ma(123205,68014,49,68078)}while(0);l=g;return}function re(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[a+16>>2]|0;switch(c[f+12>>2]|0){case 8:{b=1;d=96273;e=f+8|0;break}case 10:{b=0;d=96273;e=f+8|0;break}case 3:case 2:case 9:{b=1;d=96237;e=f+8|0;break}case 7:case 6:case 11:{b=0;d=96237;e=f+8|0;break}case 0:{b=1;d=96286;e=f+8|0;break}case 4:{b=0;d=68050;e=f+8|0;break}case 1:{b=1;d=96286;e=f+8|0;break}case 5:{b=0;d=96286;e=f+8|0;break}default:ma(123205,68014,106,68033)}f=c[(c[e>>2]|0)+8>>2]|0;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=f;sr(a,68062,g);l=h;return}function se(a){a=a|0;var b=0;mr(a,70986)|0;mr(a,70994)|0;b=a+12|0;mr(a,De(c[c[c[b>>2]>>2]>>2]|0)|0)|0;mr(a,71014)|0;mr(a,De(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;mr(a,71024)|0;mr(a,De(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;mr(a,71027)|0;return}function te(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;d=c[b+16>>2]|0;c[41913]=~~(+h[b+232>>3]-+h[b+216>>3]);c[41912]=~~(+h[b+224>>3]-+h[b+208>>3]);mr(b,69673)|0;mr(b,69680)|0;d=Dn(c[d+8>>2]|0)|0;if(a[d>>0]|0){mr(b,69749)|0;mr(b,De(d)|0)|0;mr(b,69757)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;sr(b,69766,e);mr(b,69786)|0;mr(b,69821)|0;mr(b,69849)|0;mr(b,69855)|0;mr(b,69898)|0;mr(b,69939)|0;mr(b,69958)|0;mr(b,69975)|0;mr(b,70023)|0;mr(b,70076)|0;mr(b,70152)|0;mr(b,70228)|0;mr(b,70237)|0;mr(b,70260)|0;mr(b,70287)|0;mr(b,70340)|0;mr(b,70362)|0;mr(b,70407)|0;mr(b,70419)|0;mr(b,70429)|0;mr(b,70455)|0;mr(b,70340)|0;mr(b,70507)|0;mr(b,70407)|0;mr(b,70419)|0;mr(b,70551)|0;mr(b,70260)|0;mr(b,70287)|0;mr(b,70340)|0;mr(b,70507)|0;mr(b,70407)|0;mr(b,70419)|0;mr(b,70429)|0;mr(b,70455)|0;mr(b,70340)|0;mr(b,70362)|0;mr(b,70407)|0;mr(b,70419)|0;mr(b,70564)|0;mr(b,70572)|0;mr(b,70578)|0;mr(b,70592)|0;mr(b,70600)|0;mr(b,70633)|0;e=(c[41913]|0)+10|0;c[f>>2]=c[41912];c[f+4>>2]=e;sr(b,70710,f);mr(b,70740)|0;mr(b,70749)|0;mr(b,70807)|0;mr(b,70817)|0;mr(b,70882)|0;f=c[41913]|0;c[g>>2]=c[41912];c[g+4>>2]=f;sr(b,70919,g);g=c[41913]|0;c[i>>2]=c[41912];c[i+4>>2]=g;sr(b,70947,i);l=j;return}function ue(a){a=a|0;mr(a,69224)|0;mr(a,69236)|0;mr(a,69244)|0;mr(a,69307)|0;mr(a,69236)|0;mr(a,69352)|0;mr(a,69401)|0;mr(a,69455)|0;mr(a,69236)|0;mr(a,69555)|0;mr(a,69604)|0;mr(a,69236)|0;mr(a,69656)|0;return}function ve(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j+8|0;g=j;mr(b,69182)|0;if(d|0?a[d>>0]|0:0){c[g>>2]=De(d)|0;sr(b,69185,g)}if(e|0?a[e>>0]|0:0){c[h>>2]=De(e)|0;sr(b,69196,h)}if(f|0?a[f>>0]|0:0){c[i>>2]=De(f)|0;sr(b,69208,i)}mr(b,69221)|0;l=j;return}function we(a){a=a|0;mr(a,69176)|0;return}function xe(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=l;l=l+112|0;y=A+96|0;z=A+88|0;w=A+80|0;q=A+72|0;v=A+64|0;t=A+56|0;s=A+48|0;r=A+40|0;p=A+24|0;o=A+8|0;n=A;x=c[b+16>>2]|0;switch(a[f+48>>0]|0){case 108:{j=+h[e>>3];m=+h[f+32>>3];break}case 114:{m=+h[f+32>>3];j=+h[e>>3]-m;break}default:{m=+h[f+32>>3];j=+h[e>>3]-m*.5}}g=f+40|0;i=+h[g>>3];u=f+4|0;k=+h[(c[u>>2]|0)+16>>3];if(i<k){i=k*1.1+1.0;h[g>>3]=i}B=j+-8.0;k=+((c[41913]|0)>>>0)-+h[e+8>>3]-i+k*.2+(k<12.0?1.4:2.0);sr(b,68838,n);h[o>>3]=B;h[o+8>>3]=k;sr(b,68775,o);h[p>>3]=j+8.0+m-B;h[p+8>>3]=i;sr(b,68799,p);mr(b,68873)|0;mr(b,68907)|0;g=c[u>>2]|0;e=c[g+8>>2]|0;if(e){c[r>>2]=c[e+4>>2];sr(b,68997,r);g=c[e+8>>2]|0;if(g|0){c[s>>2]=g;sr(b,69016,s)}g=c[e+12>>2]|0;if(g|0){c[t>>2]=g;sr(b,69033,t)}g=c[e+16>>2]|0;if(g|0){c[v>>2]=g;sr(b,69051,v)}}else{c[q>>2]=c[g>>2];sr(b,68997,q)}h[w>>3]=+h[(c[u>>2]|0)+16>>3];sr(b,69067,w);g=x+16|0;switch(c[x+48>>2]|0){case 5:{g=c[g>>2]|0;if(iK(g,122106)|0){c[z>>2]=g;sr(b,69087,z)}break}case 1:{x=d[g+1>>0]|0;z=d[g+2>>0]|0;c[y>>2]=d[g>>0];c[y+4>>2]=x;c[y+8>>2]=z;sr(b,69097,y);break}default:ma(123205,68561,438,69118)}mr(b,69131)|0;mr(b,De(c[f>>2]|0)|0)|0;mr(b,69142)|0;mr(b,69165)|0;l=A;return}function ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;e=l;l=l+32|0;f=e+16|0;j=e;mr(a,68739)|0;m=+h[b>>3];i=+h[b+16>>3]-m;k=+h[b+24>>3];g=k-+h[b+8>>3];k=+((c[41913]|0)>>>0)-k;h[j>>3]=m-i;h[j+8>>3]=k;sr(a,68775,j);h[f>>3]=i*2.0;h[f+8>>3]=g*2.0;sr(a,68799,f);He(a,d);mr(a,68621)|0;Fe(a);mr(a,68827)|0;l=e;return}function ze(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+24|0;j=m+8|0;g=m;mr(a,68344)|0;n=c[41913]|0;c[g>>2]=c[41912];c[g+4>>2]=n;sr(a,68597,g);He(a,e);mr(a,68621)|0;Fe(a);mr(a,68624)|0;g=d+-1|0;e=0;while(1){if((e|0)>=(d|0))break;i=+h[b+(e<<4)>>3];f=+((c[41913]|0)>>>0)-+h[b+(e<<4)+8>>3];if(!e){mr(a,68651)|0;h[j>>3]=i;h[j+8>>3]=f;sr(a,68717,j);mr(a,68728)|0}else{h[k>>3]=i;h[k+8>>3]=f;sr(a,68717,k)}if((e|0)==(g|0))mr(a,68731)|0;e=e+1|0}mr(a,68460)|0;l=m;return}function Ae(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;f=l;l=l+16|0;e=f;mr(a,68344)|0;h=c[41913]|0;c[e>>2]=c[41912];c[e+4>>2]=h;sr(a,68597,e);He(a,g);mr(a,68621)|0;Fe(a);mr(a,68624)|0;Ie(a,b,d);mr(a,68637)|0;l=f;return}function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0.0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;f=k;mr(a,68344)|0;g=c[41913]|0;c[f>>2]=c[41912];c[f+4>>2]=g;sr(a,68381,f);mr(a,68421)|0;f=d+-1|0;g=b+8|0;e=0;while(1){if((e|0)>=(d|0))break;if(!e){mr(a,68433)|0;m=+((c[41913]|0)>>>0)-+h[g>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=m;sr(a,68437,i);mr(a,68448)|0}else{m=+((c[41913]|0)>>>0)-+h[b+(e<<4)+8>>3];h[j>>3]=+h[b+(e<<4)>>3];h[j+8>>3]=m;sr(a,68437,j)}if((e|0)==(f|0))mr(a,68452)|0;e=e+1|0}mr(a,68456)|0;Fe(a);mr(a,68460)|0;l=k;return}function Ce(a,b){a=a|0;b=b|0;mr(a,68279)|0;mr(a,De(b)|0)|0;mr(a,68291)|0;return}function De(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;e=u;d=c[41910]|0;if(!d){c[41911]=64;d=ww(64)|0;c[41910]=d}s=e+15|0;r=e+14|0;g=0;q=0;o=0;e=0;f=0;a:while(1){n=(o|0)!=0;k=g;p=b;j=e;b:while(1){if(!p){t=32;break a}e=a[p>>0]|0;if(!(e<<24>>24)){t=32;break a}b=c[41911]|0;if((q|0)>(b+-8|0)){d=b<<1;c[41911]=d;d=yw(c[41910]|0,d)|0;c[41910]=d;d=d+q|0;e=a[p>>0]|0}switch(e<<24>>24){case 60:{e=4;b=87187;t=26;break b}case 62:{e=4;b=87170;t=27;break b}case 38:{t=10;break b}case 45:{e=5;b=87181;i=j;break b}default:{}}if(n&e<<24>>24==32){t=12;break}switch(e<<24>>24){case 34:{e=6;b=87150;t=26;break b}case 39:{e=5;b=87175;t=27;break b}default:{}}if(e<<24>>24<0){i=127;b=0}else{e=1;b=p;t=26;break}while(1){g=i&255;h=e&255;if(g>>>0>=h>>>0)break;e=i&h&255;i=g>>>1;b=b+1|0}if((b|0)<=1){g=ON(j|0,f|0,6)|0;g=HN(g|0,z|0,e&255|0,0)|0;f=z;m=k+-1|0;if((k|0)>1){b=m;e=g}else{t=21;break}}else{b=b+-1|0;e=e&255;f=0}k=b;p=p+1|0;j=e}if((t|0)==10){t=0;b=(Ee(p)|0)==0;e=b?5:1;b=b?87164:p;i=j}else if((t|0)==12){t=0;b=(a[o>>0]|0)==32;e=b?6:1;b=b?87157:p;i=j}else if((t|0)==21){t=0;a[s>>0]=59;e=3;h=r;i=g;j=f;while(1){b=MN(i|0,j|0,10,0)|0;g=h+-1|0;a[h>>0]=b|48;b=i;i=LN(i|0,j|0,10,0)|0;f=j;j=z;o=e;e=e+1|0;if((o|0)>11){t=23;break a}if(!(f>>>0>0|(f|0)==0&b>>>0>9))break;else h=g}b=h+-2|0;a[g>>0]=35;a[b>>0]=38;k=m;f=j}else if((t|0)==26){t=0;i=j}else if((t|0)==27){t=0;i=j}h=d+e|0;g=e;while(1){if(!g)break;a[d>>0]=a[b>>0]|0;g=g+-1|0;b=b+1|0;d=d+1|0}g=k;b=p+1|0;q=e+q|0;o=p;d=h;e=i}if((t|0)==23){XL(68297,46,1,c[13918]|0)|0;Ma(1)}else if((t|0)==32){a[d>>0]=0;l=u;return c[41910]|0}return 0}function Ee(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function Fe(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;d=k+8|0;j=k;i=c[a+16>>2]|0;mr(a,68472)|0;e=d;f=i+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Ge(a,d);b=+h[i+152>>3];if(b!=1.0){h[j>>3]=b;sr(a,68490,j)}switch(c[i+144>>2]|0){case 1:{mr(a,68507)|0;break}case 2:{mr(a,68525)|0;break}default:{}}mr(a,68542)|0;l=k;return}function Ge(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{mr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){mr(b,120501)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;sr(b,68547,f);break a}default:ma(123205,68561,94,68581)}while(0);l=g;return}function He(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;if(!b)mr(a,68700)|0;else{d=c[a+16>>2]|0;mr(a,68670)|0;b=f;d=d+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ge(a,f);mr(a,68697)|0}l=g;return}function Ie(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+32|0;g=i;e=68651;f=0;while(1){if((f|0)>=(d|0))break;k=+h[b+(f<<4)>>3];j=+((c[41913]|0)>>>0)-+h[b+(f<<4)+8>>3];c[g>>2]=e;h[g+8>>3]=k;h[g+16>>3]=j;sr(a,68654,g);e=(f|0)==0?68667:174181;f=f+1|0}mr(a,83714)|0;l=i;return}function Je(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+8|0;e=b;mr(a,73284)|0;mr(a,73299)|0;mr(a,73338)|0;mr(a,73387)|0;c[e>>2]=122106;c[e+4>>2]=73475;sr(a,73456,e);c[d>>2]=121990;c[d+4>>2]=73481;sr(a,73456,d);l=b;return}function Ke(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;b=l;l=l+64|0;d=b+8|0;j=b;c[j>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;sr(a,72237,j);i=+h[a+368>>3]*.5*+h[a+488>>3];g=+h[a+376>>3]*.5*+h[a+496>>3];f=+J(+(i*2.0000000949949026e-03))*180.0*.6366197723675814;e=+J(+(g*2.0000000949949026e-03))*180.0*.6366197723675814;h[d>>3]=i;h[d+8>>3]=g;h[d+16>>3]=-500.0;h[d+24>>3]=i;h[d+32>>3]=g;h[d+40>>3]=0.0;h[d+48>>3]=(f>e?f:e)*1.2;sr(a,72259,d);mr(a,72406)|0;mr(a,73236)|0;l=b;return}function Le(a){a=a|0;mr(a,72220)|0;return}function Me(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0;f=l;l=l+16|0;h=f;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=e;sr(a,72190,h);g[41914]=+(O(d,-10)|0);l=f;return}function Ne(a){a=a|0;mr(a,72173)|0;return}function Oe(a){a=a|0;mr(a,72155)|0;return}function Pe(a){a=a|0;mr(a,72139)|0;return}function Qe(a){a=a|0;mr(a,72118)|0;g[41914]=+g[41914]+-2.0;return}function Re(a){a=a|0;mr(a,72099)|0;return}function Se(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;sr(a,72077,d);l=b;return}function Te(a){a=a|0;mr(a,72061)|0;return}function Ue(a){a=a|0;mr(a,72043)|0;g[41914]=+g[41914]+-5.0;return}function Ve(a){a=a|0;mr(a,72027)|0;g[41914]=+g[41914]+5.0;return}function We(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;r=l;l=l+144|0;o=r+104|0;q=r+56|0;m=r+32|0;j=r+24|0;n=r;p=e+4|0;i=c[p>>2]|0;f=+h[i+16>>3];i=c[i>>2]|0;c[n>>2]=c[e>>2];h[n+8>>3]=f;c[n+16>>2]=i;sr(b,71873,n);g[41915]=+g[41914]+-9.0;switch(a[e+48>>0]|0){case 108:{f=+h[d>>3];break}case 114:{i=d;f=+h[d>>3]-+h[e+32>>3];k=5;break}default:{i=d;f=+h[d>>3]-+h[e+32>>3]*.5;k=5}}if((k|0)==5)h[i>>3]=f;u=+h[b+488>>3];t=(+h[b+504>>3]+f)*u;s=(+h[b+512>>3]+ +h[d+8>>3])*+h[b+496>>3];h[j>>3]=+h[(c[p>>2]|0)+16>>3]*u;n=af(b,71925,j)|0;f=+(c[b+360>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=f;i=af(b,71142,m)|0;f=+g[41915];h[o>>3]=t;h[o+8>>3]=s;h[o+16>>3]=f;d=af(b,71174,o)|0;j=o;k=(c[b+16>>2]|0)+16|0;m=j+40|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(m|0));o=bf(b,o,0.0)|0;e=c[e>>2]|0;c[q>>2]=c[c[p>>2]>>2];h[q+8>>3]=.25;h[q+16>>3]=0.0;c[q+24>>2]=e;c[q+28>>2]=72012;c[q+32>>2]=n;c[q+36>>2]=i;c[q+40>>2]=d;c[q+44>>2]=o;q=af(b,71937,q)|0;mr(b,q)|0;_I(q);_I(i);_I(o);_I(d);_I(n);l=r;return}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=l;l=l+240|0;x=z+192|0;y=z+152|0;t=z+128|0;r=z+104|0;o=z+80|0;n=z+48|0;e=z+24|0;m=z;mr(a,71750)|0;g[41915]=+g[41914]+-6.0;i=+h[b>>3];j=+h[a+488>>3];p=(+h[a+504>>3]+i)*j;A=+h[b+8>>3];k=+h[a+496>>3];q=(+h[a+512>>3]+A)*k;j=(+h[b+16>>3]-i)*j;k=(+h[b+24>>3]-A)*k;s=a+16|0;A=k+j;i=+h[(c[s>>2]|0)+152>>3]/A*2.5;h[m>>3]=j;h[m+8>>3]=A*.25;h[m+16>>3]=k;b=af(a,71110,m)|0;m=a+360|0;A=+(c[m>>2]|0);h[e>>3]=90.0;h[e+8>>3]=0.0;h[e+16>>3]=A;e=af(a,71142,e)|0;A=+g[41915];h[x>>3]=p;h[x+8>>3]=q;h[x+16>>3]=A;f=af(a,71174,x)|0;u=x;v=(c[s>>2]|0)+16|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=bf(a,x,0.0)|0;h[n>>3]=1.0;h[n+8>>3]=i;c[n+16>>2]=b;c[n+20>>2]=e;c[n+24>>2]=f;c[n+28>>2]=v;w=af(a,71765,n)|0;mr(a,w)|0;_I(b);_I(e);_I(f);_I(v);_I(w);if(d|0){h[o>>3]=j;h[o+8>>3]=k;h[o+16>>3]=1.0;f=af(a,71110,o)|0;A=+(c[m>>2]|0);h[r>>3]=0.0;h[r+8>>3]=0.0;h[r+16>>3]=A;e=af(a,71142,r)|0;A=+g[41915];h[t>>3]=p;h[t+8>>3]=q;h[t+16>>3]=A;b=af(a,71174,t)|0;u=x;v=(c[s>>2]|0)+56|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));x=bf(a,x,0.0)|0;h[y>>3]=0.0;h[y+8>>3]=0.0;h[y+16>>3]=0.0;c[y+24>>2]=f;c[y+28>>2]=e;c[y+32>>2]=b;c[y+36>>2]=x;y=af(a,71811,y)|0;mr(a,y)|0;_I(f);_I(e);_I(b);_I(x);_I(y)}l=z;return}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0.0;K=l;l=l+336|0;B=K+296|0;J=K+288|0;I=K+272|0;H=K+264|0;G=K+240|0;D=K+232|0;A=K+208|0;z=K+184|0;w=K+160|0;v=K+152|0;u=K+136|0;t=K+128|0;s=K+96|0;r=K+88|0;q=K+56|0;f=K+48|0;m=K+24|0;k=K;mr(a,71615)|0;g[41915]=+g[41914]+-2.0;o=a+488|0;p=a+496|0;L=+h[p>>3];h[k>>3]=+h[o>>3];h[k+8>>3]=L;h[k+16>>3]=1.0;k=af(a,71110,k)|0;y=a+360|0;L=+(c[y>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=L;m=af(a,71142,m)|0;L=+g[41915]+-2.0;h[B>>3]=0.0;h[B+8>>3]=0.0;h[B+16>>3]=L;n=af(a,71174,B)|0;C=a+16|0;i=B;j=(c[C>>2]|0)+16|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=bf(a,B,0.0)|0;c[f>>2]=71237;c[f+4>>2]=d+1;E=a+504|0;F=a+512|0;i=0;f=af(a,71206,f)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];L=+h[(c[C>>2]|0)+152>>3];h[q>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[q+8>>3]=N;h[q+16>>3]=0.0;h[q+24>>3]=L;M=af(a,71251,q)|0;c[r>>2]=f;c[r+4>>2]=M;x=af(a,71280,r)|0;_I(M);_I(f);i=i+1|0;f=x}L=+h[F>>3]+ +h[b+8>>3];N=+h[(c[C>>2]|0)+152>>3];h[s>>3]=+h[E>>3]+ +h[b>>3];h[s+8>>3]=L;h[s+16>>3]=0.0;h[s+24>>3]=N;x=af(a,71251,s)|0;c[t>>2]=f;c[t+4>>2]=x;M=af(a,71280,t)|0;_I(x);_I(f);c[u>>2]=k;c[u+4>>2]=m;c[u+8>>2]=n;c[u+12>>2]=j;x=af(a,71630,u)|0;c[v>>2]=M;c[v+4>>2]=x;M=af(a,71335,v)|0;_I(x);mr(a,M)|0;_I(k);_I(m);_I(n);_I(j);_I(M);if(e|0){N=+h[p>>3];h[w>>3]=+h[o>>3];h[w+8>>3]=N;h[w+16>>3]=1.0;n=af(a,71110,w)|0;N=+(c[y>>2]|0);h[z>>3]=0.0;h[z+8>>3]=0.0;h[z+16>>3]=N;m=af(a,71142,z)|0;N=+g[41915]+-2.0;h[A>>3]=0.0;h[A+8>>3]=0.0;h[A+16>>3]=N;k=af(a,71174,A)|0;i=B;j=(c[C>>2]|0)+56|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=bf(a,B,.25)|0;c[D>>2]=d;i=0;f=af(a,71675,D)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];h[G>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[G+8>>3]=N;h[G+16>>3]=0.0;D=af(a,71690,G)|0;c[H>>2]=f;c[H+4>>2]=D;M=af(a,71712,H)|0;_I(D);_I(f);i=i+1|0;f=M}c[I>>2]=n;c[I+4>>2]=m;c[I+8>>2]=k;c[I+12>>2]=j;I=af(a,71722,I)|0;c[J>>2]=f;c[J+4>>2]=I;M=af(a,71335,J)|0;_I(I);mr(a,M)|0;_I(n);_I(m);_I(k);_I(j);_I(M)}l=K;return}function Ze(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=l;l=l+208|0;e=B+160|0;A=B+152|0;z=B+136|0;y=B+128|0;x=B+96|0;w=B+88|0;v=B+56|0;k=B+48|0;s=B+24|0;r=B;mr(a,71542)|0;g[41915]=+g[41914]+-4.0;C=+h[a+496>>3];h[r>>3]=+h[a+488>>3];h[r+8>>3]=C;h[r+16>>3]=1.0;r=af(a,71110,r)|0;C=+(c[a+360>>2]|0);h[s>>3]=0.0;h[s+8>>3]=0.0;h[s+16>>3]=C;s=af(a,71142,s)|0;C=+g[41915]+-2.0;h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=C;t=af(a,71174,e)|0;u=a+16|0;f=e;i=(c[u>>2]|0)+56|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));n=bf(a,e,0.0)|0;c[k>>2]=71556;c[k+4>>2]=d+2;o=a+504|0;p=a+512|0;q=d+-1|0;m=0;e=af(a,71206,k)|0;while(1){if((m|0)>=(d|0))break;f=b+(m<<4)|0;i=b+(m<<4)+8|0;D=+h[p>>3]+ +h[i>>3];C=+h[(c[u>>2]|0)+152>>3];h[v>>3]=+h[o>>3]+ +h[f>>3];h[v+8>>3]=D;h[v+16>>3]=0.0;h[v+24>>3]=C;k=af(a,71251,v)|0;c[w>>2]=e;c[w+4>>2]=k;j=af(a,71280,w)|0;_I(k);_I(e);if((m|0)==0|(m|0)==(q|0)){C=+h[p>>3]+ +h[i>>3];D=+h[(c[u>>2]|0)+152>>3];h[x>>3]=+h[o>>3]+ +h[f>>3];h[x+8>>3]=C;h[x+16>>3]=0.0;h[x+24>>3]=D;k=af(a,71251,x)|0;c[y>>2]=j;c[y+4>>2]=k;e=af(a,71280,y)|0;_I(k);_I(j)}else e=j;m=m+1|0}c[z>>2]=r;c[z+4>>2]=s;c[z+8>>2]=t;c[z+12>>2]=n;b=af(a,71565,z)|0;c[A>>2]=e;c[A+4>>2]=b;d=af(a,71335,A)|0;_I(b);mr(a,d)|0;_I(r);_I(s);_I(t);_I(n);_I(d);l=B;return}function _e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0;v=l;l=l+160|0;e=v+120|0;u=v+112|0;t=v+96|0;s=v+88|0;r=v+56|0;m=v+48|0;n=v+24|0;q=v;mr(a,71094)|0;g[41915]=+g[41914]+-6.0;w=+h[a+496>>3];h[q>>3]=+h[a+488>>3];h[q+8>>3]=w;h[q+16>>3]=1.0;q=af(a,71110,q)|0;w=+(c[a+360>>2]|0);h[n>>3]=0.0;h[n+8>>3]=0.0;h[n+16>>3]=w;n=af(a,71142,n)|0;w=+g[41915];h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=w;o=af(a,71174,e)|0;p=a+16|0;f=e;i=(c[p>>2]|0)+16|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));i=bf(a,e,0.0)|0;c[m>>2]=71237;c[m+4>>2]=d;j=a+504|0;k=a+512|0;f=0;e=af(a,71206,m)|0;while(1){if((f|0)>=(d|0))break;y=+h[k>>3]+ +h[b+(f<<4)+8>>3];w=+h[(c[p>>2]|0)+152>>3];h[r>>3]=+h[j>>3]+ +h[b+(f<<4)>>3];h[r+8>>3]=y;h[r+16>>3]=0.0;h[r+24>>3]=w;x=af(a,71251,r)|0;c[s>>2]=e;c[s+4>>2]=x;m=af(a,71280,s)|0;_I(x);_I(e);f=f+1|0;e=m}c[t>>2]=q;c[t+4>>2]=n;c[t+8>>2]=o;c[t+12>>2]=i;t=af(a,71289,t)|0;c[u>>2]=e;c[u+4>>2]=t;x=af(a,71335,u)|0;_I(t);mr(a,x)|0;_I(q);_I(n);_I(o);_I(i);_I(x);l=v;return}function $e(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;sr(a,71075,e);l=d;return}function af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;h=i;e=i+24|0;f=i+8|0;c[f>>2]=d;g=LK(e,1024,b,f)|0;do if((g|0)>=0)if((g|0)>1023){a=ZI(g+1|0)|0;c[f>>2]=d;qL(a,b,f)|0;break}else{a=GL(e)|0;break}else{a=c[(c[a+12>>2]|0)+16>>2]|0;c[h>>2]=yJ(c[(jJ()|0)>>2]|0)|0;hb[a&31](71520,h);a=GL(174181)|0}while(0);l=i;return a|0}function bf(a,b,e){a=a|0;b=b|0;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+112|0;o=q+104|0;j=q+96|0;i=q+64|0;n=q+48|0;p=q+32|0;m=q+16|0;k=q;g=c[b+32>>2]|0;a:do switch(g|0){case 5:{f=c[b>>2]|0;if(!(xJ(f,121094)|0)){c[k>>2]=71357;h[k+8>>3]=e;f=af(a,71340,k)|0;break a}if(!(xJ(f,118224)|0)){c[m>>2]=71361;h[m+8>>3]=e;f=af(a,71340,m)|0;break a}if(!(xJ(f,116223)|0)){c[p>>2]=71367;h[p+8>>3]=e;f=af(a,71340,p)|0;break a}else{c[n>>2]=f;h[n+8>>3]=e;f=af(a,71340,n)|0;break a}}case 1:{s=+(d[b+1>>0]|0)*.00390625;r=+(d[b+2>>0]|0)*.00390625;h[i>>3]=+(d[b>>0]|0)*.00390625;h[i+8>>3]=s;h[i+16>>3]=r;h[i+24>>3]=e;f=af(a,71372,i)|0;break}default:{p=c[13918]|0;n=c[b>>2]|0;c[j>>2]=g;c[j+4>>2]=n;zL(p,71411,j)|0;ma(123205,71461,436,71481)}}while(0);c[o>>2]=f;p=af(a,71498,o)|0;_I(f);l=q;return p|0}function cf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;h=c[c[a+12>>2]>>2]|0;j=c[h>>2]|0;i=c[h+4>>2]|0;h=c[h+8>>2]|0;c[g>>2]=73927;c[g+4>>2]=j;c[g+8>>2]=i;c[g+12>>2]=h;sr(a,76546,g);f=Dn(c[f+8>>2]|0)|0;c[e>>2]=73927;c[e+4>>2]=f;sr(a,76578,e);c[d>>2]=73927;sr(a,76592,d);l=b;return}function df(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=73927;sr(a,76494,d);l=b;return}function ef(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+304|0;V=W+296|0;U=W+288|0;T=W+272|0;R=W+264|0;Q=W+256|0;P=W+248|0;O=W+240|0;N=W+232|0;M=W+224|0;L=W+216|0;K=W+208|0;J=W+200|0;I=W+192|0;H=W+184|0;G=W+176|0;F=W+168|0;E=W+160|0;C=W+152|0;A=W+144|0;z=W+136|0;y=W+128|0;x=W+120|0;w=W+112|0;v=W+104|0;u=W+96|0;t=W+88|0;s=W+80|0;r=W+72|0;q=W+64|0;p=W+56|0;o=W+48|0;S=W+40|0;B=W+24|0;n=W+16|0;m=W;g=c[a+456>>2]|0;i=c[a+460>>2]|0;j=c[a+464>>2]|0;k=c[a+468>>2]|0;f=a+360|0;a:do if(c[4007]|0){switch(c[f>>2]|0){case 90:case 0:break a;default:{}}rf();c[4007]=0}while(0);e=(+(k|0)-+(i|0))*.013888888888888888;b=(+(j|0)-+(g|0))*.013888888888888888;k=(c[f>>2]|0)==90;d=k?e:b;e=k?b:e;h[m>>3]=d;h[m+8>>3]=e;sr(a,74114,m);c[n>>2]=73927;sr(a,74129,n);if(d>0.0){b=+FJ(d);h[16877]=b;b=b+3.0-+(~~b|0)}else b=3.0;b=+D(10.0,+b);h[16877]=b;h[B>>3]=b;h[B+8>>3]=b;sr(a,74298,B);c[S>>2]=73927;sr(a,74333,S);c[o>>2]=73927;sr(a,74391,o);c[p>>2]=73927;sr(a,74451,p);c[q>>2]=73927;sr(a,74500,q);c[r>>2]=73927;sr(a,74539,r);c[s>>2]=73927;sr(a,74590,s);c[t>>2]=73927;sr(a,74652,t);c[u>>2]=73927;sr(a,74762,u);c[v>>2]=73927;sr(a,74853,v);c[w>>2]=73927;sr(a,74907,w);c[x>>2]=73927;sr(a,74976,x);sr(a,75012,y);c[z>>2]=73927;sr(a,75137,z);c[A>>2]=73927;sr(a,75166,A);sr(a,75206,C);c[E>>2]=73927;sr(a,75299,E);c[F>>2]=73927;sr(a,75358,F);c[G>>2]=73927;sr(a,75439,G);sr(a,75509,H);c[I>>2]=73927;sr(a,75598,I);c[J>>2]=73927;sr(a,75703,J);c[K>>2]=73927;sr(a,75779,K);c[L>>2]=73927;sr(a,75818,L);c[M>>2]=73927;sr(a,75917,M);c[N>>2]=73927;sr(a,75963,N);sr(a,76052,O);c[P>>2]=73927;sr(a,76093,P);c[Q>>2]=73927;sr(a,76176,Q);c[R>>2]=73927;sr(a,76277,R);h[T>>3]=e;h[T+8>>3]=d;sr(a,76341,T);sr(a,76369,U);sr(a,76377,V);l=W;return}function ff(a){a=a|0;var b=0;b=l;l=l+16|0;sr(a,74107,b);l=b;return}function gf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;q=r+24|0;p=r+8|0;o=r;switch(a[e+48>>0]|0){case 108:{k=d;i=+h[e+32>>3];j=+h[d>>3];break}case 114:{i=+h[e+32>>3];g=i;f=5;break}default:{i=+h[e+32>>3];g=i*.5;f=5}}if((f|0)==5){j=+h[d>>3]-g;h[d>>3]=j;k=d}m=e+4|0;f=c[m>>2]|0;g=+h[f+16>>3];d=d+8|0;n=+h[d>>3]+g*.004629629629629629;h[d>>3]=n;i=j+i*.006944444444444444;h[k>>3]=i;f=c[f>>2]|0;do if(f){d=c[41916]|0;if(d|0?(xJ(d,f)|0)==0:0)break;c[o>>2]=pf(f)|0;sr(b,74006,o);o=c[m>>2]|0;c[41916]=c[o>>2];g=+h[o+16>>3]}while(0);f=~~g;f=(f|0)>1?f:1;if((f|0)!=(c[41917]|0)){j=+h[16877];c[p>>2]=f;h[p+8>>3]=j;sr(b,74014,p);c[41917]=f}c[q>>2]=qf(c[e>>2]|0)|0;h[q+8>>3]=i;h[q+16>>3]=n;sr(b,74035,q);l=r;return}function hf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[b>>3];k=(+h[b+16>>3]-i)*.027777777777777776;g=+h[b+8>>3];j=(+h[b+24>>3]-g)*.027777777777777776;c[f>>2]=1;c[f+4>>2]=d|0?73948:174181;h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i*.013888888888888888;h[f+32>>3]=g*.013888888888888888;sr(a,73954,f);l=e;return}function jf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=l;l=l+16|0;nf(c[a+16>>2]|0,e+8|0,e);of(a,b,d,1);l=e;return}function kf(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0;t=l;l=l+128|0;s=t+112|0;q=t+104|0;p=t+96|0;e=t+88|0;n=t+16|0;o=t;k=c[a+16>>2]|0;j=ZI((d*140|0)+140|0)|0;nf(k,t+116|0,t+80|0);v=+h[b>>3];k=n+48|0;h[k>>3]=v;u=+h[b+8>>3];h[n+56>>3]=u;c[e>>2]=~~(v+(v>=0.0?.5:-.5));c[e+4>>2]=~~(u+(u>=0.0?.5:-.5));i=o+8|0;e=j+(pL(j,73932,e)|0)|0;r=1;g=0;while(1){m=g+3|0;if((m|0)>=(d|0))break;c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];f=1;while(1){if((f|0)==4){f=1;break}w=f+g|0;h[n+(f<<4)>>3]=+h[b+(w<<4)>>3];h[n+(f<<4)+8>>3]=+h[b+(w<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;PA(o,n,3,+(f|0)*.16666666666666666,0,0);u=+h[o>>3];v=+h[i>>3];c[p>>2]=~~(u+(u>=0.0?.5:-.5));c[p+4>>2]=~~(v+(v>=0.0?.5:-.5));f=f+1|0;e=e+(pL(e,73932,p)|0)|0}r=r+6|0;g=m}c[q>>2]=j;sr(a,73939,q);_I(j);f=r+-1|0;e=0;while(1){if((e|0)>=(r|0))break;c[s>>2]=((e|0)%(f|0)|0|0)!=0&1;sr(a,73944,s);e=e+1|0}mr(a,134901)|0;l=t;return}function lf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=l;l=l+16|0;nf(c[a+16>>2]|0,e+8|0,e);of(a,b,d,0);l=e;return}function mf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=73927;c[e+4>>2]=b;sr(a,73920,e);l=d;return}function nf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function of(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));sr(a,73932,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));sr(a,73932,i)}mr(a,134901)|0;l=j;return}function pf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;a:while(1){d=15756;while(1){e=c[d+4>>2]|0;if(!e)break;if(!(xJ(e,b)|0)){g=6;break a}d=d+8|0}c[f>>2]=74088;c[f+4>>2]=b;_l(1,74062,f)|0;d=HL(b,45)|0;if(!d){d=74105;break}a[d>>0]=0}l=h;return d|0}function qf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41918]|0;if(!d){c[41919]=64;d=ZI(64)|0;c[41918]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41919]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41919]=d;d=aJ(c[41918]|0,d)|0;c[41918]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;pL(d+1|0,74057,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41918]|0}function rf(){var a=0,b=0;a=l;l=l+16|0;b=a;c[b>>2]=74088;c[b+4>>2]=76485;_l(0,76467,b)|0;l=a;return}function sf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;e=l;l=l+32|0;f=e+8|0;j=e;b=b+8|0;k=c[b>>2]|0;c[j>>2]=k;c[j+4>>2]=k;sr(a,77065,j);i=(+h[d>>3]+ +h[d+16>>3])*.5;g=(+h[d+8>>3]+ +h[d+24>>3])*.5;c[f>>2]=c[b>>2];h[f+8>>3]=i;h[f+16>>3]=g;sr(a,77107,f);l=e;return}function tf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[d>>3];k=+h[d+16>>3]-i;g=+h[d+24>>3];j=g-+h[d+8>>3];g=+(~~(+h[a+232>>3]-+h[a+216>>3])>>>0)-g;c[f>>2]=c[b+8>>2];h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i;h[f+32>>3]=g;sr(a,77152,f);mr(a,77244)|0;l=e;return}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function vf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+160|0;s=t+152|0;r=t+136|0;q=t+120|0;k=t+112|0;n=t+104|0;m=t+88|0;j=t+72|0;i=t+64|0;o=t;if(!a)ma(96061,77249,212,77268);if(!b)ma(96091,77249,213,77268);p=b+8|0;if(!(c[p>>2]|0))ma(96094,77249,214,77268);if(c[b+52>>2]|0){c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];b=o+32|0;d=d+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];f=+h[o>>3];h[o+16>>3]=f;h[o+24>>3]=+h[o+40>>3];h[o+48>>3]=+h[b>>3];g=+h[o+8>>3];h[o+56>>3]=g;if(e<<24>>24){sr(a,77289,i);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[j>>3]=+h[o+(b<<4)>>3];h[j+8>>3]=u;sr(a,77292,j);b=b+1|0}h[m>>3]=f;h[m+8>>3]=g;sr(a,77292,m);m=c[p>>2]|0;c[n>>2]=4;c[n+4>>2]=m;sr(a,77299,n)}sr(a,77289,k);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[q>>3]=+h[o+(b<<4)>>3];h[q+8>>3]=u;sr(a,77292,q);b=b+1|0}h[r>>3]=f;h[r+8>>3]=g;sr(a,77292,r);r=c[p>>2]|0;c[s>>2]=4;c[s+4>>2]=r;sr(a,77314,s)}l=t;return}function wf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+112|0;n=o+24|0;m=o+16|0;k=o;i=o+28|0;if(!b)ma(96061,77249,153,77330);if(!d)ma(96091,77249,154,77330);if(!(c[d+8>>2]|0))ma(96094,77249,155,77330);j=d+52|0;if(c[j>>2]|0){f=d+60|0;g=c[f>>2]|0;if((g|0)==84)g=18;else{gb[g&127](d);c[j>>2]=0;c[f>>2]=0;c[d+56>>2]=0;g=10}}else g=10;do if((g|0)==10){if(!((Mr(d)|0)<<24>>24))break;f=zN(c[d+20>>2]|0)|0;if((c[d+24>>2]&-2|0)==6){_L(f,i)|0;i=c[i+36>>2]|0;c[d+56>>2]=i;f=pJ(0,i,1,1,f,0)|0;c[j>>2]=f;a[d+16>>0]=1}else f=c[j>>2]|0;if(f|0)c[d+60>>2]=84;Nr(d);if(c[j>>2]|0)g=18}while(0);if((g|0)==18){p=+h[e+8>>3]-+(c[d+36>>2]|0);h[k>>3]=+h[e>>3]-+(c[d+32>>2]|0);h[k+8>>3]=p;sr(b,77348,k);if(!(a[d+16>>0]|0)){c[m>>2]=c[d+12>>2];sr(b,77379,m)}else fy(b,d);sr(b,77394,n)}l=o;return}function xf(a){a=a|0;nJ(c[a+52>>2]|0,c[a+56>>2]|0)|0;return}function yf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+80|0;f=g+48|0;if(!a)ma(96061,77249,121,77404);e=c[a+16>>2]|0;if(!e)ma(84921,77249,123,77404);if(!b)ma(96091,77249,124,77404);d=b+8|0;if(!(c[d>>2]|0))ma(96094,77249,125,77404);if(!(c[e+8>>2]|0))ma(123690,77249,128,77404);else{sr(a,77424,g);sr(a,77433,g+8|0);sr(a,77460,g+16|0);sr(a,77485,g+24|0);sr(a,77514,g+32|0);sr(a,77542,g+40|0);c[f>>2]=c[d>>2];sr(a,77549,f);sr(a,77588,g+56|0);sr(a,95830,g+64|0);l=g;return}}function zf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0;i=l;l=l+128|0;g=i+80|0;f=i;if(!a)ma(96061,77249,97,77593);if(!b)ma(96091,77249,98,77593);e=c[b+8>>2]|0;if(!e)ma(96094,77249,99,77593);else{m=+h[d>>3];j=~~(m+(m>=0.0?.5:-.5));m=+h[d+8>>3];b=~~(m+(m>=0.0?.5:-.5));m=+h[d+16>>3];k=~~(m+(m>=0.0?.5:-.5));m=+h[d+24>>3];d=~~(m+(m>=0.0?.5:-.5));c[f>>2]=2;c[f+4>>2]=5;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=-1;c[f+24>>2]=1;c[f+28>>2]=-1;c[f+32>>2]=0;h[f+40>>3]=0.0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=5;c[f+72>>2]=0;c[f+76>>2]=e;sr(a,77612,f);c[g>>2]=j;c[g+4>>2]=b;c[g+8>>2]=j;c[g+12>>2]=d;c[g+16>>2]=k;c[g+20>>2]=d;c[g+24>>2]=k;c[g+28>>2]=b;c[g+32>>2]=j;c[g+36>>2]=b;sr(a,77670,g);l=i;return}}function Af(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;o=l;l=l+96|0;n=o+56|0;m=o+32|0;k=o;i=+h[d>>3];j=+h[d+16>>3]-i;f=+h[d+24>>3];g=f-+h[d+8>>3];if(!a)ma(96061,77249,53,77702);if(!b)ma(96091,77249,54,77702);e=b+8|0;if(!(c[e>>2]|0))ma(96094,77249,55,77702);mr(a,77721)|0;mr(a,c[e>>2]|0)|0;e=a+360|0;f=-f;if(!(c[e>>2]|0)){h[n>>3]=j;h[n+8>>3]=g;h[n+16>>3]=i;h[n+24>>3]=f;sr(a,77850,n)}else{h[k>>3]=g;h[k+8>>3]=j;h[k+16>>3]=i;h[k+24>>3]=f;sr(a,77741,k);c[m>>2]=c[e>>2];h[m+8>>3]=i;h[m+16>>3]=f;sr(a,77820,m)}mr(a,77929)|0;l=o;return}function Bf(a){a=a|0;var b=0,c=0;b=co(a)|0;while(1){if(!b)break;Cf(b);b=eo(a,b)|0}c=co(a)|0;while(1){if(!c)break;b=Pm(a,c)|0;while(1){if(!b)break;Df(b);b=Rm(a,b)|0}c=eo(a,c)|0}return}function Cf(a){a=a|0;var b=0,d=0;No(a,122241,304,1)|0;WA(a);KB(a,c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&1);a=a+16|0;c[(c[a>>2]|0)+176>>2]=0;b=vw(20)|0;d=c[a>>2]|0;c[d+172>>2]=b;c[d+184>>2]=0;d=vw(20)|0;b=c[a>>2]|0;c[b+180>>2]=d;c[b+200>>2]=0;b=vw(12)|0;d=c[a>>2]|0;c[d+196>>2]=b;c[d+192>>2]=0;d=vw(12)|0;b=c[a>>2]|0;c[b+188>>2]=d;c[b+208>>2]=0;b=vw(12)|0;a=c[a>>2]|0;c[a+204>>2]=b;c[a+216>>2]=1;return}function Df(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;No(d,122254,176,1)|0;XA(d)|0;h=DA(d,c[42218]|0,1,0)|0;g=d+16|0;c[(c[g>>2]|0)+156>>2]=h;h=FA(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,c[42212]|0,174181)|0;i=FA(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,c[42212]|0,174181)|0;e=c[g>>2]|0;f=e+154|0;b[f>>1]=1;b[e+168>>1]=1;if((h|0)==(i|0)&(a[h>>0]|0)!=0){b[f>>1]=1e3;i=e+156|0;c[i>>2]=(c[i>>2]|0)*100}if(zk(d)|0){i=c[g>>2]|0;b[i+154>>1]=0;c[i+156>>2]=0}i=(DA(d,c[42231]|0,0,0)|0)&255;a[(c[g>>2]|0)+152>>0]=i;i=(DA(d,c[42219]|0,1,0)|0)&65535;b[(c[g>>2]|0)+170>>1]=i;return}function Ef(a){a=a|0;var b=0,d=0;Ff(c[(c[a+16>>2]|0)+192>>2]|0);d=co(a)|0;while(1){if(!d)break;b=Pm(a,d)|0;while(1){if(!b)break;rB(b);b=Rm(a,b)|0}Gf(d);d=eo(a,d)|0}Hf(a);return}function Ff(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){if(!b)break;f=b+16|0;g=c[(c[f>>2]|0)+164>>2]|0;If(b);d=c[f>>2]|0;if((a[d+156>>0]|0)!=1){b=g;continue}e=c[d+180>>2]|0;if(e){_I(e);d=c[f>>2]|0}e=c[d+172>>2]|0;if(e){_I(e);d=c[f>>2]|0}_I(d);_I(b);b=g}return}function Gf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+172>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+180>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+188>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+196>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+204>>2]|0;if(d){_I(d);b=c[e>>2]|0}ow(c[b+104>>2]|0);ow(c[(c[e>>2]|0)+108>>2]|0);b=c[(c[e>>2]|0)+8>>2]|0;if(b|0)gb[c[(c[b+4>>2]|0)+4>>2]&127](a);Po(a,122241)|0;return}function Hf(a){a=a|0;var d=0,e=0,f=0;d=Jp(a)|0;while(1){if(!d)break;Hf(d);d=Kp(d)|0}if(No(a,122277,0,1)|0){f=a+16|0;d=c[f>>2]|0;e=c[d+184>>2]|0;if(e){_I(e);d=c[f>>2]|0}e=c[d+268>>2]|0;if(e){_I(e);d=c[f>>2]|0}e=c[d+216>>2]|0;if(e){_I(e);d=c[f>>2]|0}do if(c[d+196>>2]|0){e=b[d+236>>1]|0;while(1){if((e|0)>(b[d+238>>1]|0))break;_I(c[(c[d+196>>2]|0)+(e<<6)+12>>2]|0);e=e+1|0;d=c[f>>2]|0}e=c[d+196>>2]|0;if((b[d+236>>1]|0)==-1){_I(e+-64|0);break}else{_I(e);break}}while(0);if((so(a)|0)!=(a|0)){ow(c[(c[f>>2]|0)+12>>2]|0);Po(a,122277)|0}}return}function If(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+176>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[d+172>>2]|0)+(a<<2)>>2]|0;Xg(b);_I(c[b+16>>2]|0);_I(b);b=a;d=c[e>>2]|0}b=c[d+184>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[(c[e>>2]|0)+180>>2]|0)+(a<<2)>>2]|0;Xg(b);_I(c[b+16>>2]|0);_I(b);b=a}return}function Jf(a){a=a|0;if(mn(a)|0)Kf(a);$x(a);return}function Kf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+48|0;g=h+32|0;f=h;b=et(a,-1,8)|0;d=ft(a,0,f)|0;dt(a,2,8,f)|0;d=(d|0)==0;e=(b|0)<0;if(e&d)Lf(a);else{if(d)c[f+16>>2]=3;else b=e?8:b;c[f+8>>2]=b;c[f+20>>2]=0;e=Bs(a,g,0)|0;b=c[g>>2]|0;do if((b|0)==1){Lf(a);b=0}else{if(c[(c[(c[a+16>>2]|0)+8>>2]|0)+84>>2]|0){Lf(a);b=0;break}c[f+12>>2]=1;d=0;while(1){if((d|0)>=(b|0))break;b=c[e+(d<<2)>>2]|0;Mf(b,a);Lf(b);d=d+1|0;b=c[g>>2]|0}Nf(a);ct(c[g>>2]|0,e,a,f)|0;Of(a);Pf(c[g>>2]|0,e,a);b=0}while(0);while(1){if((b|0)>=(c[g>>2]|0))break;f=e+(b<<2)|0;_I(c[(c[(c[f>>2]|0)+16>>2]|0)+8>>2]|0);Hf(c[f>>2]|0);qo(a,c[f>>2]|0)|0;b=b+1|0}_I(e)}l=h;return}function Lf(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+40|0;e=m;i=DA(a,ym(a,0,77944,0)|0,-1,1)|0;IB(a,10);d=yk(a,e)|0;Rf(a,a);Bf(a);f=(i|0)==1;g=e+32|0;h=(i|0)==2;i=(i|0)==3;j=e+28|0;e=e+24|0;while(1){kj(a,d);if(f){d=3;break}if(c[g>>2]|0){_l(0,77950,k)|0;c[e>>2]=0;d=0}uh(a,(d|0)!=0&1);if(h){d=7;break}xi(a,d);if(i){d=9;break}n=(c[j>>2]|0)+-1|0;c[j>>2]=n;if(!((n|0)!=0&(c[e>>2]|0)!=0)){d=11;break}}if((d|0)==3)Sf(a,1);else if((d|0)==7)Sf(a,2);else if((d|0)==9)Sf(a,2);else if((d|0)==11){if(b[(c[a+16>>2]|0)+136>>1]&16)Tf(a);ek(a);Xf(a);if((IA(Im(a,78041)|0)|0)<<24>>24)_k(a)}l=m;return}function Mf(b,d){b=b|0;d=d|0;var e=0,f=0;No(b,122277,280,1)|0;e=vw(96)|0;b=c[b+16>>2]|0;c[b+8>>2]=e;d=c[d+16>>2]|0;f=c[d+8>>2]|0;h[e>>3]=+h[f>>3];h[e+24>>3]=+h[f+24>>3];c[b+144>>2]=c[d+144>>2];a[b+115>>0]=a[d+115>>0]|0;c[b+116>>2]=c[d+116>>2];c[b+248>>2]=c[d+248>>2];c[b+252>>2]=c[d+252>>2];c[b+244>>2]=c[d+244>>2];return}function Nf(a){a=a|0;var b=0,d=0,e=0;b=vw((mn(a)|0)<<4)|0;d=co(a)|0;while(1){if(!d)break;e=c[d+16>>2]|0;c[e+132>>2]=b;h[b>>3]=+h[e+16>>3]*.013888888888888888;h[b+8>>3]=+h[e+24>>3]*.013888888888888888;b=b+16|0;d=eo(a,d)|0}return}function Of(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[(c[(co(a)|0)+16>>2]|0)+132>>2]|0;b=e;d=co(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;c[f+132>>2]=0;h[f+16>>3]=+h[b>>3]*72.0;h[f+24>>3]=+h[b+8>>3]*72.0;b=b+16|0;d=eo(a,d)|0}_I(e);return}function Pf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;f=0;while(1){if((e|0)>=(a|0))break;i=(c[(c[(c[b+(e<<2)>>2]|0)+16>>2]|0)+180>>2]|0)+f|0;e=e+1|0;f=i}i=d+16|0;c[(c[i>>2]|0)+180>>2]=f;g=vw((f<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=g;g=0;e=1;while(1){if((g|0)>=(a|0))break;h=(c[b+(g<<2)>>2]|0)+16|0;f=1;while(1){d=c[h>>2]|0;if((f|0)>(c[d+180>>2]|0))break;d=As(c[(c[d+184>>2]|0)+(f<<2)>>2]|0)|0;c[(c[(c[i>>2]|0)+184>>2]|0)+(e<<2)>>2]=d;Qf(c[(c[(c[h>>2]|0)+184>>2]|0)+(f<<2)>>2]|0,d);f=f+1|0;e=e+1|0}g=g+1|0}return}function Qf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;No(d,122277,280,1)|0;g=d+16|0;d=(c[g>>2]|0)+16|0;f=b+16|0;b=(c[f>>2]|0)+16|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];b=c[f>>2]|0;d=c[g>>2]|0;a[d+275>>0]=a[b+275>>0]|0;d=d+48|0;b=b+48|0;e=d+64|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));b=c[(c[f>>2]|0)+180>>2]|0;c[(c[g>>2]|0)+180>>2]=b;d=vw((b<<2)+4|0)|0;c[(c[g>>2]|0)+184>>2]=d;d=1;while(1){e=c[f>>2]|0;if((d|0)>(b|0))break;e=As(c[(c[e+184>>2]|0)+(d<<2)>>2]|0)|0;c[(c[(c[g>>2]|0)+184>>2]|0)+(d<<2)>>2]=e;Qf(c[(c[(c[f>>2]|0)+184>>2]|0)+(d<<2)>>2]|0,e);d=d+1|0}f=e+12|0;c[(c[g>>2]|0)+12>>2]=c[f>>2];c[f>>2]=0;return}function Rf(a,b){a=a|0;b=b|0;if((so(a)|0)!=(a|0))No(a,122277,280,1)|0;if((a|0)==(b|0))c[(c[(so(a)|0)+16>>2]|0)+188>>2]=a;a=Jp(a)|0;while(1){if(!a)break;Rf(a,b);a=Kp(a)|0}return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1040|0;k=m+8|0;j=m;e=m+16|0;f=ym(a,1,80018,174181)|0;g=ym(a,1,78084,174181)|0;h=(b|0)>0;d=(b|0)==1;b=co(a)|0;while(1){if(!b)break;if(h?(i=b+16|0,c[j>>2]=c[(c[i>>2]|0)+232>>2],pL(e,122187,j)|0,Cm(b,f,e)|0,!d):0){c[k>>2]=c[(c[i>>2]|0)+236>>2];pL(e,122187,k)|0;Cm(b,g,e)|0}b=eo(a,b)|0}l=m;return}function Tf(a){a=a|0;var b=0,c=0,d=0;c=Ip(a,79522,0)|0;if(c|0){b=co(c)|0;while(1){if(!b)break;d=eo(c,b)|0;dh(a,b);Uf(a,b);Gf(b);po(a,b)|0;b=d}Mp(a,c)|0}return}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=c[(c[b+16>>2]|0)+232>>2]|0;i=a+16|0;a=c[(c[i>>2]|0)+196>>2]|0;d=c[a+(j<<6)>>2]|0;h=a+(j<<6)+4|0;g=0;e=0;while(1){if((e|0)>=(d|0)){f=7;break}f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if((f|0)==(b|0)){f=4;break}else g=f}if((f|0)==4){while(1){if((e|0)>=(d|0))break;f=c[a+(j<<6)+4>>2]|0;c[f+(e+-1<<2)>>2]=c[f+(e<<2)>>2];f=c[(c[i>>2]|0)+196>>2]|0;e=e+1|0;d=c[f+(j<<6)>>2]|0;a=f;f=4}c[a+(j<<6)>>2]=d+-1}else if((f|0)==7?(g|0)!=(b|0):0)ma(78050,78057,248,78067);return}function Vf(a){a=a|0;return c[(c[(so(a)|0)+16>>2]|0)+188>>2]|0}function Wf(b,c){b=b|0;c=c|0;var d=0;d=a[b+28>>0]|0;if(a[c+28>>0]|0)if(d<<24>>24){d=~~(+h[b>>3]-+h[c>>3]);if(!d)d=~~(+h[b+8>>3]-+h[c+8>>3])}else d=-1;else d=d<<24>>24!=0&1;return d|0}function Xf(a){a=a|0;Yf(a,1);return}function Yf(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0;Z=l;l=l+656|0;O=Z+592|0;N=Z+552|0;f=Z+544|0;T=Z+96|0;U=Z;Y=Z+632|0;V=d+16|0;X=b[(c[V>>2]|0)+136>>1]&14;P=X&65535;Q=T+16|0;c[Q>>2]=Z+368;R=U+16|0;c[R>>2]=Z+192;do if(X<<16>>16){S=X<<16>>16==4;do if(S){Zf(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1))A=9;else{_l(0,78090,f)|0;A=9}}else if(X<<16>>16==8){Zf(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)){LB(d,0);n=0;m=0;k=0;break}else{_f(d);LB(d,1);n=0;m=0;k=0;break}}else A=9;while(0);if((A|0)==9){Yk(d);if(ly()|0)break;W=vw(96)|0;K=c[(c[V>>2]|0)+248>>2]|0;c[Y+8>>2]=(K|0)/4|0;c[Y+12>>2]=K;k=vw(512)|0;F=Y+4|0;c[F>>2]=0;c[Y>>2]=0;j=c[V>>2]|0;C=b[j+236>>1]|0;D=0;L=0;M=k;E=k;m=k;n=k;o=k;H=0;I=0;a:while(1){if((C|0)>(b[j+238>>1]|0))break;p=c[j+196>>2]|0;i=c[p+(C<<6)>>2]|0;G=i+D|0;g=c[p+(C<<6)+4>>2]|0;f=c[g>>2]|0;if(!f)f=H;else{_=+(H|0);f=c[f+16>>2]|0;y=+h[f+16>>3]-+h[f+88>>3];f=~~(y>_?_:y)}if((i|0)!=0?(J=c[g+(i+-1<<2)>>2]|0,(J|0)!=0):0){y=+(I|0);g=c[J+16>>2]|0;_=+h[g+96>>3]+ +h[g+16>>3];g=~~(_<y?y:_)}else g=I;B=f+-16|0;z=g+16|0;x=0;t=L;r=M;q=j;u=E;v=m;g=k;f=p;while(1){if((x|0)>=(i|0))break;k=c[(c[f+(C<<6)+4>>2]|0)+(x<<2)>>2]|0;w=k+16|0;f=c[w>>2]|0;i=c[f+112>>2]|0;if(i){i=i+16|0;j=c[(c[i>>2]|0)+96>>2]|0;if(!j){A=21;break a}s=j+56|0;f=f+16|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];a[(c[(c[i>>2]|0)+96>>2]|0)+81>>0]=1;f=c[w>>2]|0}if((a[f+156>>0]|0)!=0?($a[c[17228>>2]&31](k)|0)<<24>>24==0:0){q=t;f=r;j=u;k=v;i=o}else{s=0;q=t;j=u;k=v;A=25}b:do if((A|0)==25){while(1){A=0;p=c[w>>2]|0;i=c[(c[p+180>>2]|0)+(s<<2)>>2]|0;if(!i)break;switch(a[(c[i+16>>2]|0)+112>>0]|0){case 6:case 4:{f=q;i=r;break}default:{$f(i,1,16,64);f=q+1|0;c[r+(q<<2)>>2]=i;if(!(f&127)){g=yw(g,(q<<2)+516|0)|0;i=g;j=g;k=g;n=g;o=g}else i=r}}s=s+1|0;q=f;r=i;A=25}f=c[p+188>>2]|0;c:do if(!f)i=o;else{s=0;i=o;while(1){f=c[f+(s<<2)>>2]|0;if(!f)break c;$f(f,2,0,128);o=q+1|0;c[r+(q<<2)>>2]=f;if(!(o&127)){g=yw(i,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=r;p=c[w>>2]|0;s=s+1|0;q=o;r=f;f=c[p+188>>2]|0}}while(0);f=c[p+204>>2]|0;if(!f)f=r;else{if(!(a[p+156>>0]|0)){v=p+96|0;_=+h[v>>3];s=p+240|0;h[v>>3]=+h[s>>3];h[s>>3]=_;s=0;p=r}else{s=0;p=r}while(1){f=c[f+(s<<2)>>2]|0;if(!f){f=p;break b}$f(f,0,0,128);o=q+1|0;c[p+(q<<2)>>2]=f;if(!(o&127)){g=yw(n,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=p;s=s+1|0;q=o;p=f;f=c[(c[w>>2]|0)+204>>2]|0}}}while(0);u=c[V>>2]|0;w=c[u+196>>2]|0;x=x+1|0;t=q;r=f;q=u;u=j;v=k;o=i;i=c[w+(C<<6)>>2]|0;f=w}C=C+1|0;D=G;L=t;M=r;E=u;j=q;m=v;k=g;H=B;I=z}if((A|0)==21)ma(78158,78171,313,78184);c[Y>>2]=H;c[F>>2]=I;rL(E,L,4,10);c[W+84>>2]=vw((D<<5)+11520|0)|0;c[Y+16>>2]=vw(C<<5)|0;d:do if(X<<16>>16==2){f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break d;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){bg(g);f=c[i>>2]|0}f=f+164|0}}while(0);z=U+48|0;A=U+-48|0;B=T+48|0;C=T+-48|0;y=+(K|0);x=0;e:while(1){if((x|0)>=(L|0))break;v=M+(x<<2)|0;r=c[v>>2]|0;s=cg(r)|0;t=r+16|0;g=c[t>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:r;f=g;g=c[g+16>>2]|0}else f=r;i=f+16|0;if(c[g+164>>2]&32){g=c[Q>>2]|0;TN(g|0,c[i>>2]|0,176)|0;n=T;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[Q>>2]=g;o=c[f>>2]&3;n=c[T>>2]&3;c[((n|0)==3?T:B)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?T:C)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f;f=T}q=f+16|0;w=1;f=x;while(1){u=f+1|0;if((u|0)>=(L|0))break;j=M+(u<<2)|0;f=c[j>>2]|0;if((s|0)!=(cg(f)|0))break;if(!(a[(c[t>>2]|0)+113>>0]|0)){k=f+16|0;g=c[k>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:f;f=g;g=c[g+16>>2]|0}i=f+16|0;if(c[g+164>>2]&32){g=c[R>>2]|0;TN(g|0,c[i>>2]|0,176)|0;n=U;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[R>>2]=g;o=c[f>>2]&3;n=c[U>>2]&3;c[((n|0)==3?U:z)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?U:A)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f}i=c[q>>2]|0;f=g+16|0;n=N;o=i+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(Wf(N,O)|0)break;f=g+56|0;n=N;o=i+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(Wf(N,O)|0)break;K=c[t>>2]|0;if((c[K+164>>2]&15|0)==2?(c[K+96>>2]|0)!=(c[(c[k>>2]|0)+96>>2]|0):0)break;if(c[(c[(c[j>>2]|0)+16>>2]|0)+164>>2]&64|0)break}w=w+1|0;f=u}if(S){if((w|0)==1)f=O;else f=vw(w<<2)|0;c[f>>2]=cg(c[v>>2]|0)|0;g=1;while(1){if((g|0)>=(w|0))break;c[f+(g<<2)>>2]=c[v+(g<<2)>>2];g=g+1|0}uy(d,f,w,P,17224);if((w|0)>1)_I(f);x=u;continue}f=c[r>>2]&3;K=c[((f|0)==3?r:r+48|0)+40>>2]|0;f=c[((f|0)==2?r:r+-48|0)+40>>2]|0;g=c[K+16>>2]|0;i=c[g+232>>2]|0;if((K|0)!=(f|0))if((i|0)==(c[(c[f+16>>2]|0)+232>>2]|0)){dg(d,Y,W,M,x,w,P);x=u;continue}else{eg(d,Y,W,M,x,w,P);x=u;continue}f=c[V>>2]|0;do if((i|0)==(b[f+238>>1]|0))if((i|0)>0){f=~~(+h[(c[(c[c[(c[f+196>>2]|0)+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[g+24>>3]);break}else{f=~~+h[g+80>>3];break}else if((i|0)==(b[f+236>>1]|0)){f=~~(+h[g+24>>3]-+h[(c[(c[c[(c[f+196>>2]|0)+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);break}else{f=c[f+196>>2]|0;_=+h[g+24>>3];K=~~(+h[(c[(c[c[f+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-_);f=~~(_-+h[(c[(c[c[f+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);f=(K|0)<(f|0)?K:f;break}while(0);Rz(W,M,x,w,y,+((f|0)/2|0|0),17224);f=0;while(1){if((f|0)>=(w|0)){x=u;continue e}g=c[(c[(c[M+(f+x<<2)>>2]|0)+16>>2]|0)+96>>2]|0;if(g|0)bB(d,g);f=f+1|0}}f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){bg(g);bB(d,c[(c[i>>2]|0)+104>>2]|0);f=c[i>>2]|0}f=f+164|0}if(!e){n=W;k=W}else{fg(d);n=W;k=W}}f:do if((c[42241]|0)!=0|(c[42242]|0)!=0?(c[42247]|0)!=0|(c[42246]|0)!=0:0){j=co(d)|0;while(1){if(!j)break f;g:do if(c[42241]|0){f=Sm(d,j)|0;while(1){if(!f)break g;g=f+-48|0;i=(c[f>>2]&3|0)==2?f:g;if(c[(c[i+16>>2]|0)+100>>2]|0){Zz(i,1)|0;bB(d,c[(c[((c[f>>2]&3|0)==2?f:g)+16>>2]|0)+100>>2]|0)}f=Tm(d,f)|0}}while(0);h:do if(c[42242]|0){f=Pm(d,j)|0;while(1){if(!f)break h;g=f+16|0;if(c[(c[g>>2]|0)+104>>2]|0?Zz(f,0)|0:0)bB(d,c[(c[g>>2]|0)+104>>2]|0);f=Rm(d,f)|0}}while(0);j=eo(d,j)|0}}while(0);switch(X&15){case 4:case 8:break;default:{_I(m);_I(c[n+84>>2]|0);_I(k);_I(c[Y+16>>2]|0);my()}}c[42181]=1;c[42182]=1}while(0);l=Z;return}function Zf(a){a=a|0;var b=0,d=0,e=0.0,f=0;b=co(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;if(c[d+204>>2]|0){f=d+96|0;e=+h[f>>3];d=d+240|0;h[f>>3]=+h[d>>3];h[d>>3]=e}b=eo(a,b)|0}return}function _f(b){b=b|0;var d=0,e=0,f=0,g=0;d=(c[b+16>>2]|0)+192|0;a:while(1){f=c[d>>2]|0;if(!f){d=12;break}g=f+16|0;d=c[g>>2]|0;do if((a[d+156>>0]|0)==1){e=c[d+112>>2]|0;if(!e){e=c[d+104>>2]|0;if(!e)break;bg(f);d=e}else{e=c[(c[e+16>>2]|0)+96>>2]|0;if(!e){d=6;break a}f=e+56|0;d=d+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];a[e+81>>0]=1;d=e}bB(b,d);d=c[g>>2]|0}while(0);d=d+164|0}if((d|0)==6)ma(78358,78171,234,78377);else if((d|0)==12)return}function $f(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;do if(!d){g=c[b>>2]&3;d=c[((g|0)==3?b:b+48|0)+40>>2]|0;g=c[((g|0)==2?b:b+-48|0)+40>>2]|0;if((d|0)!=(g|0)){d=(c[(c[d+16>>2]|0)+232>>2]|0)==(c[(c[g+16>>2]|0)+232>>2]|0)?2:1;break}d=c[b+16>>2]|0;if(!(a[d+44>>0]|0))d=(a[d+84>>0]|0)==0?8:4;else d=4}while(0);a:do if(!e)switch(d|0){case 1:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)?16:32;break a}case 2:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)?16:32;break a}default:{e=16;break a}}while(0);c[(c[b+16>>2]|0)+164>>2]=d|f|e;return}function ag(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+624|0;z=D+584|0;y=D+544|0;s=D+368|0;e=D+192|0;t=D+96|0;v=D;u=t+16|0;c[u>>2]=s;w=v+16|0;c[w>>2]=e;C=c[b>>2]|0;B=c[d>>2]|0;x=C+16|0;q=c[x>>2]|0;d=c[q+164>>2]|0;f=d&15;A=B+16|0;b=c[A>>2]|0;g=c[b+164>>2]&15;do if((g|0)==(f|0)){p=cg(C)|0;r=cg(B)|0;n=c[p>>2]|0;g=n&3;f=c[(c[((g|0)==3?p:p+48|0)+40>>2]|0)+16>>2]|0;g=c[(c[((g|0)==2?p:p+-48|0)+40>>2]|0)+16>>2]|0;i=(c[f+232>>2]|0)-(c[g+232>>2]|0)|0;o=c[r>>2]|0;m=o&3;k=c[(c[((m|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0;m=c[(c[((m|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0;j=(c[k+232>>2]|0)-(c[m+232>>2]|0)|0;i=(i|0)>-1?i:0-i|0;j=(j|0)>-1?j:0-j|0;if((i|0)!=(j|0)){b=i-j|0;break}g=~~(+h[f+16>>3]-+h[g+16>>3]);g=(g|0)>-1?g:0-g|0;f=~~(+h[k+16>>3]-+h[m+16>>3]);f=(f|0)>-1?f:0-f|0;if((g|0)!=(f|0)){b=g-f|0;break}g=n>>>4;f=o>>>4;if((g|0)!=(f|0)){b=g-f|0;break}if(!(a[q+44>>0]|0)){d=(a[q+84>>0]|0)==0?p:C;g=d;d=c[(c[d+16>>2]|0)+164>>2]|0}else g=C;f=g+16|0;if(d&32){TN(s|0,c[f>>2]|0,176)|0;i=t;j=g;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[u>>2]=s;j=c[g>>2]&3;i=c[t>>2]&3;c[((i|0)==3?t:t+48|0)+40>>2]=c[((j|0)==2?g:g+-48|0)+40>>2];c[((i|0)==2?t:t+-48|0)+40>>2]=c[((j|0)==3?g:g+48|0)+40>>2];i=s+16|0;j=(c[f>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=s+56|0;j=(c[f>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[s+112>>0]=1;c[s+116>>2]=g;g=t;b=c[A>>2]|0}if(!(a[b+44>>0]|0)){b=(a[b+84>>0]|0)==0?r:B;f=b;b=c[b+16>>2]|0}else f=B;d=f+16|0;if(!(c[b+164>>2]&32))e=b;else{TN(e|0,c[d>>2]|0,176)|0;i=v;j=f;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[w>>2]=e;j=c[f>>2]&3;i=c[v>>2]&3;c[((i|0)==3?v:v+48|0)+40>>2]=c[((j|0)==2?f:f+-48|0)+40>>2];c[((i|0)==2?v:v+-48|0)+40>>2]=c[((j|0)==3?f:f+48|0)+40>>2];i=e+16|0;j=(c[d>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=e+56|0;j=(c[d>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[e+112>>0]=1;c[e+116>>2]=f}d=c[g+16>>2]|0;b=e+16|0;i=y;j=d+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=Wf(y,z)|0;if(!b){b=e+56|0;i=y;j=d+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=Wf(y,z)|0;if(!b){d=c[(c[x>>2]|0)+164>>2]&192;b=c[(c[A>>2]|0)+164>>2]&192;if((d|0)==(b|0)){b=((c[C>>2]|0)>>>4)-((c[B>>2]|0)>>>4)|0;break}else{b=d-b|0;break}}}}else b=g-f|0;while(0);l=D;return b|0}function bg(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=b+16|0;d=c[f>>2]|0;if(c[d+176>>2]|0){d=c[d+180>>2]|0;while(1){d=(c[d>>2]|0)+16|0;e=c[d>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}e=c[e+96>>2]|0;g=+h[e+24>>3];i=+h[e+32>>3];e=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=c[f>>2]|0;f=c[(c[d>>2]|0)+96>>2]|0;h[f+56>>3]=(e?i:g)*.5+ +h[b+16>>3];h[f+64>>3]=+h[b+24>>3];a[f+81>>0]=1}return}function cg(a){a=a|0;var b=0,d=0;while(1){b=c[a+16>>2]|0;d=c[b+172>>2]|0;if(!d)break;else a=d}while(1){b=c[b+116>>2]|0;if(!b)break;a=b;b=c[b+16>>2]|0}return a|0}function dg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;B=l;l=l+1712|0;x=B+1664|0;s=B+1488|0;t=B+1392|0;A=B+1696|0;y=B+696|0;z=B;p=t+16|0;c[p>>2]=s;q=c[f+(g<<2)>>2]|0;r=q+16|0;k=c[r>>2]|0;u=a[k+113>>0]|0;if(c[k+164>>2]&32){TN(s|0,k|0,176)|0;k=t;n=q;o=k+48|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));c[p>>2]=s;k=c[t>>2]&3;c[((k|0)==3?t:t+48|0)+40>>2]=c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2];c[((k|0)==2?t:t+-48|0)+40>>2]=c[((c[q>>2]&3|0)==3?q:q+48|0)+40>>2];k=s+16|0;n=(c[r>>2]|0)+56|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));k=s+56|0;n=(c[r>>2]|0)+16|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));a[s+112>>0]=1;c[s+116>>2]=q;q=t}k=1;while(1){if((k|0)>=(i|0)){w=6;break}if(!(a[(c[(c[f+(k+g<<2)>>2]|0)+16>>2]|0)+113>>0]|0))k=k+1|0;else{w=7;break}}a:do if((w|0)==6)if(!(u<<24>>24)){k=c[q+16>>2]|0;if(c[k+96>>2]|0){Dg(b,d,e,q,j);break}if((j|0)==2){A=c[q>>2]&3;Eg(c[((A|0)==3?q:q+48|0)+40>>2]|0,c[((A|0)==2?q:q+-48|0)+40>>2]|0,f,g,i,2);break}t=a[k+49>>0]|0;u=a[k+89>>0]|0;if(!(t<<24>>24==1&u<<24>>24!=4)?!(t<<24>>24!=4&u<<24>>24==1):0){p=c[q>>2]&3;o=c[((p|0)==3?q:q+48|0)+40>>2]|0;p=c[((p|0)==2?q:q+-48|0)+40>>2]|0;k=c[o+16>>2]|0;n=c[k+232>>2]|0;if((n|0)>0){u=c[(c[b+16>>2]|0)+196>>2]|0;t=n+~(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1)|0;m=+h[(c[(c[c[u+(t<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[u+(t<<6)+16>>3]-+h[k+24>>3]-+h[u+(n<<6)+24>>3]}else m=+(c[(c[b+16>>2]|0)+252>>2]|0);C=+(i+1|0);v=+(c[d+12>>2]|0)/C;m=m/C;Gg(b,d,e,o,q,y,1);Gg(b,d,e,p,q,z,0);s=y+52|0;t=z+52|0;p=(j|0)==10;q=e+80|0;k=0;while(1){if((k|0)>=(i|0))break a;r=c[f+(k+g<<2)>>2]|0;o=c[s>>2]|0;n=o+-1|0;G=+h[y+56+(n<<5)>>3];F=+h[y+56+(n<<5)+16>>3];E=+h[y+56+(n<<5)+24>>3];h[16878]=G;h[16879]=E;k=k+1|0;C=+(k|0);D=v*C;h[16880]=F+D;C=E+m*C;h[16881]=C;h[16882]=G;h[16883]=C;n=(c[t>>2]|0)+-1|0;G=+h[z+56+(n<<5)+16>>3];h[16884]=G;h[16885]=C+m;E=+h[z+56+(n<<5)>>3];F=+h[z+56+(n<<5)+24>>3];h[16888]=G;h[16887]=F;h[16886]=E-D;h[16889]=C;n=0;while(1){if((n|0)>=(o|0)){n=0;break}o=y+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];Lz(e,x);n=n+1|0;o=c[s>>2]|0}while(1){if((n|0)==3)break;j=135024+(n<<5)|0;c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];c[x+16>>2]=c[j+16>>2];c[x+20>>2]=c[j+20>>2];c[x+24>>2]=c[j+24>>2];c[x+28>>2]=c[j+28>>2];Lz(e,x);n=n+1|0}o=c[t>>2]|0;while(1){n=o+-1|0;if((o|0)<=0)break;o=z+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];Lz(e,x);o=n}if(p)n=ny(e,A)|0;else n=ty(e,A)|0;o=c[A>>2]|0;if(!o)break a;Jz(r,c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0,n,o,17224);c[q>>2]=0}}Fg(b,d,e,f,g,i,q,(j|0)==10&1)}else w=7;while(0);if((w|0)==7)Cg(b,f,g,i,q,j);l=B;return}function eg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ba=l;l=l+2576|0;S=ba+2528|0;_=ba+2568|0;k=ba+2352|0;n=ba+2176|0;t=ba+1904|0;Y=ba+1808|0;$=ba+1712|0;T=ba+1016|0;U=ba+320|0;V=ba+256|0;X=ba+2564|0;Z=ba+2560|0;z=ba+288|0;A=ba+224|0;L=ba+192|0;M=ba+160|0;N=ba+128|0;P=ba+96|0;Q=ba+64|0;R=ba+32|0;W=ba;s=t+16|0;c[s>>2]=k;o=Y+16|0;c[o>>2]=n;aa=$+16|0;c[aa>>2]=ba+2e3;if(!(c[41920]|0)){c[41920]=ww(32e3)|0;c[41921]=ww(32e3)|0;c[41922]=2e3;c[41923]=2e3}u=c[f+(g<<2)>>2]|0;K=c[u>>2]&3;p=u+48|0;q=u+-48|0;K=(c[(c[(c[((K|0)==3?u:p)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((K|0)==2?u:q)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;r=u+16|0;if((((K|0)>-1?K:0-K|0)|0)<=1){k=c[r>>2]|0;if(!(c[k+164>>2]&32)){K=u;n=0}else{n=c[s>>2]|0;TN(n|0,k|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=n;w=c[t>>2]&3;c[((w|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?t:t+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[s>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;n=0;J=12}}else{TN(k|0,c[r>>2]|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));w=t+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=k;k=c[r>>2]|0;if(!(c[k+164>>2]&32)){TN(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=Y+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}else{n=c[o>>2]|0;TN(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;w=c[Y>>2]&3;c[((w|0)==3?Y:Y+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?Y:Y+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[o>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=u;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];w=(c[s>>2]|0)+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}k=cg(u)|0;while(1){n=c[(c[k+16>>2]|0)+172>>2]|0;if(!n)break;else k=n}c[((o&3|0)==2?t:t+-48|0)+40>>2]=c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2];k=c[s>>2]|0;a[k+84>>0]=0;a[k+112>>0]=1;n=k+56|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=1;J=12}if((J|0)==12){c[k+116>>2]=u;K=t}H=(j|0)==2;if(H?(v=ig(b,K,c[41920]|0,_)|0,c[Z>>2]=v,(v|0)!=0):0)J=63;else J=15;a:do if((J|0)==15){G=(j|0)==10;c[Z>>2]=0;o=c[K>>2]&3;k=c[((o|0)==3?K:K+48|0)+40>>2]|0;o=c[((o|0)==2?K:K+-48|0)+40>>2]|0;c[_>>2]=o;jg(z,b,d,k,0,K);c[T>>2]=c[z>>2];c[T+4>>2]=c[z+4>>2];c[T+8>>2]=c[z+8>>2];c[T+12>>2]=c[z+12>>2];c[T+16>>2]=c[z+16>>2];c[T+20>>2]=c[z+20>>2];c[T+24>>2]=c[z+24>>2];c[T+28>>2]=c[z+28>>2];c[V>>2]=c[z>>2];c[V+4>>2]=c[z+4>>2];c[V+8>>2]=c[z+8>>2];c[V+12>>2]=c[z+12>>2];c[V+16>>2]=c[z+16>>2];c[V+20>>2]=c[z+20>>2];Mz(e,K,1,T,kg(k)|0);B=T+52|0;I=(c[B>>2]|0)+-1|0;D=V+24|0;h[D>>3]=+h[T+56+(I<<5)+24>>3];E=V+8|0;h[E>>3]=+h[T+56+(I<<5)+8>>3];I=c[k+16>>2]|0;F=b+16|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];lg(A,S,1,m);c[V>>2]=c[A>>2];c[V+4>>2]=c[A+4>>2];c[V+8>>2]=c[A+8>>2];c[V+12>>2]=c[A+12>>2];c[V+16>>2]=c[A+16>>2];c[V+20>>2]=c[A+20>>2];c[V+24>>2]=c[A+24>>2];c[V+28>>2]=c[A+28>>2];A=V+16|0;if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){I=c[B>>2]|0;c[B>>2]=I+1;I=T+56+(I<<5)|0;c[I>>2]=c[V>>2];c[I+4>>2]=c[V+4>>2];c[I+8>>2]=c[V+8>>2];c[I+12>>2]=c[V+12>>2];c[I+16>>2]=c[V+16>>2];c[I+20>>2]=c[V+20>>2];c[I+24>>2]=c[V+24>>2];c[I+28>>2]=c[V+28>>2]}w=b+60|0;C=U+52|0;x=e+56|0;y=e+69|0;j=e+16|0;z=e+29|0;I=K;q=0;r=-1;b:while(1){s=k;t=0;k=0;u=I;while(1){p=o;v=o;if((a[(c[p+16>>2]|0)+156>>0]|0)!=1)break b;if(($a[c[17228>>2]&31](p)|0)<<24>>24)break b;o=t|1;ca=135024+(t<<5)|0;mg(L,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[ca>>2]=c[L>>2];c[ca+4>>2]=c[L+4>>2];c[ca+8>>2]=c[L+8>>2];c[ca+12>>2]=c[L+12>>2];c[ca+16>>2]=c[L+16>>2];c[ca+20>>2]=c[L+20>>2];c[ca+24>>2]=c[L+24>>2];c[ca+28>>2]=c[L+28>>2];if(!k){q=ng(p)|0;k=(q|0)<((a[(c[(c[w>>2]|0)+16>>2]|0)+113>>0]<<1&2)+3&255|0);q=k?q:q+-2|0;r=k?r:1;k=(k^1)&1}if(!((k|0)==0|(r|0)>0))break;ca=135024+(o<<5)|0;jg(M,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[ca>>2]=c[M>>2];c[ca+4>>2]=c[M+4>>2];c[ca+8>>2]=c[M+8>>2];c[ca+12>>2]=c[M+12>>2];c[ca+16>>2]=c[M+16>>2];c[ca+20>>2]=c[M+20>>2];c[ca+24>>2]=c[M+24>>2];c[ca+28>>2]=c[M+28>>2];ca=c[c[(c[v+16>>2]|0)+180>>2]>>2]|0;o=c[ca>>2]&3;s=c[((o|0)==3?ca:ca+48|0)+40>>2]|0;o=c[((o|0)==2?ca:ca+-48|0)+40>>2]|0;c[_>>2]=o;t=t+2|0;r=r+-1|0;u=ca}jg(N,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[U>>2]=c[N>>2];c[U+4>>2]=c[N+4>>2];c[U+8>>2]=c[N+8>>2];c[U+12>>2]=c[N+12>>2];c[U+16>>2]=c[N+16>>2];c[U+20>>2]=c[N+20>>2];c[U+24>>2]=c[N+24>>2];c[U+28>>2]=c[N+28>>2];Pz(e,u,1,U,kg(c[((c[u>>2]&3|0)==2?u:u+-48|0)+40>>2]|0)|0);ca=U+56+((c[C>>2]|0)+-1<<5)|0;t=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[t+232>>2]<<6)+24>>3]+ +h[t+24>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];lg(V,S,4,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[x>>3]=1.5707963267948966;a[y>>0]=1;og(e,I,u,T,U,o);if(!G){k=ty(e,X)|0;o=c[X>>2]|0;if(H&(o|0)>4){ca=k+16|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];ca=k+32|0;o=k+(o+-1<<4)|0;c[ca>>2]=c[o>>2];c[ca+4>>2]=c[o+4>>2];c[ca+8>>2]=c[o+8>>2];c[ca+12>>2]=c[o+12>>2];UN(k+48|0,o|0,16)|0;c[X>>2]=4;o=4}else J=33}else{k=ny(e,X)|0;o=c[X>>2]|0;J=33}if((J|0)==33){J=0;if(!o)break a}u=c[Z>>2]|0;p=u+o|0;if((p|0)>(c[41922]|0)){c[41922]=p<<1;t=yw(c[41920]|0,p<<5)|0;c[41920]=t;o=c[X>>2]|0}else t=c[41920]|0;s=0;p=u;while(1){if((s|0)>=(o|0))break;ca=t+(p<<4)|0;u=k+(s<<4)|0;c[ca>>2]=c[u>>2];c[ca+4>>2]=c[u+4>>2];c[ca+8>>2]=c[u+8>>2];c[ca+12>>2]=c[u+12>>2];s=s+1|0;p=p+1|0}c[Z>>2]=p;o=pg(c[c[(c[v+16>>2]|0)+180>>2]>>2]|0,q,t,Z)|0;qg(I,e);p=c[o>>2]&3;k=c[((p|0)==3?o:o+48|0)+40>>2]|0;p=c[((p|0)==2?o:o+-48|0)+40>>2]|0;c[_>>2]=p;I=k+16|0;jg(P,b,d,k,c[c[(c[I>>2]|0)+172>>2]>>2]|0,o);c[T>>2]=c[P>>2];c[T+4>>2]=c[P+4>>2];c[T+8>>2]=c[P+8>>2];c[T+12>>2]=c[P+12>>2];c[T+16>>2]=c[P+16>>2];c[T+20>>2]=c[P+20>>2];c[T+24>>2]=c[P+24>>2];c[T+28>>2]=c[P+28>>2];Mz(e,o,1,T,kg(k)|0);ca=T+56+((c[B>>2]|0)+-1<<5)|0;I=c[I>>2]|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];lg(V,S,1,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[B>>2]|0;c[B>>2]=ca+1;ca=T+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[j>>3]=-1.5707963267948966;a[z>>0]=1;I=o;o=p}k=t|1;r=135024+(t<<5)|0;mg(Q,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[r>>2]=c[Q>>2];c[r+4>>2]=c[Q+4>>2];c[r+8>>2]=c[Q+8>>2];c[r+12>>2]=c[Q+12>>2];c[r+16>>2]=c[Q+16>>2];c[r+20>>2]=c[Q+20>>2];c[r+24>>2]=c[Q+24>>2];c[r+28>>2]=c[Q+28>>2];jg(R,b,d,p,u,0);c[U>>2]=c[R>>2];c[U+4>>2]=c[R+4>>2];c[U+8>>2]=c[R+8>>2];c[U+12>>2]=c[R+12>>2];c[U+16>>2]=c[R+16>>2];c[U+20>>2]=c[R+20>>2];c[U+24>>2]=c[R+24>>2];c[U+28>>2]=c[R+28>>2];c[V>>2]=c[R>>2];c[V+4>>2]=c[R+4>>2];c[V+8>>2]=c[R+8>>2];c[V+12>>2]=c[R+12>>2];c[V+16>>2]=c[R+16>>2];c[V+20>>2]=c[R+20>>2];c[V+24>>2]=c[R+24>>2];c[V+28>>2]=c[R+28>>2];r=(n|0)!=0;s=u+-48|0;Pz(e,r?Y:u,1,U,kg(c[((c[u>>2]&3|0)==2?u:s)+40>>2]|0)|0);ca=(c[C>>2]|0)+-1|0;h[D>>3]=+h[U+56+(ca<<5)+24>>3];h[E>>3]=+h[U+56+(ca<<5)+8>>3];ca=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[ca+232>>2]<<6)+24>>3]+ +h[ca+24>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];lg(W,S,4,m);c[V>>2]=c[W>>2];c[V+4>>2]=c[W+4>>2];c[V+8>>2]=c[W+8>>2];c[V+12>>2]=c[W+12>>2];c[V+16>>2]=c[W+16>>2];c[V+20>>2]=c[W+20>>2];c[V+24>>2]=c[W+24>>2];c[V+28>>2]=c[W+28>>2];if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}og(e,I,u,T,U,k);if(G)q=ny(e,X)|0;else q=ty(e,X)|0;k=c[X>>2]|0;if(!(H&(k|0)>4)){if(!k)break}else{ca=q+16|0;c[ca>>2]=c[q>>2];c[ca+4>>2]=c[q+4>>2];c[ca+8>>2]=c[q+8>>2];c[ca+12>>2]=c[q+12>>2];ca=q+32|0;k=q+(k+-1<<4)|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];UN(q+48|0,k|0,16)|0;c[X>>2]=4;k=4}o=c[Z>>2]|0;n=o+k|0;if((n|0)>(c[41922]|0)){c[41922]=n<<1;p=yw(c[41920]|0,n<<5)|0;c[41920]=p;k=c[X>>2]|0}else p=c[41920]|0;n=0;while(1){if((n|0)>=(k|0))break;ca=p+(o<<4)|0;X=q+(n<<4)|0;c[ca>>2]=c[X>>2];c[ca+4>>2]=c[X+4>>2];c[ca+8>>2]=c[X+8>>2];c[ca+12>>2]=c[X+12>>2];n=n+1|0;o=o+1|0}c[Z>>2]=o;qg(I,e);if(r)k=(c[Y>>2]&3|0)==2?Y:Y+-48|0;else k=(c[u>>2]&3|0)==2?u:s;c[_>>2]=c[k+40>>2];v=o;J=63}while(0);c:do if((J|0)==63){if((i|0)==1){Jz(K,c[_>>2]|0,c[41920]|0,v,17224);break}t=d+12|0;u=v+-1|0;m=+((O(c[t>>2]|0,i+-1|0)|0)/2|0|0);n=c[41920]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=n+(k<<4)|0;h[ca>>3]=+h[ca>>3]-m;k=k+1|0}k=c[41922]|0;if((k|0)>(c[41923]|0)){c[41923]=k;o=yw(c[41921]|0,k<<4)|0;c[41921]=o;n=c[41920]|0}else o=c[41921]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=o+(k<<4)|0;d=n+(k<<4)|0;c[ca>>2]=c[d>>2];c[ca+4>>2]=c[d+4>>2];c[ca+8>>2]=c[d+8>>2];c[ca+12>>2]=c[d+12>>2];k=k+1|0}Jz(K,c[_>>2]|0,o,v,17224);r=$+48|0;s=$+-48|0;q=1;while(1){if((q|0)>=(i|0))break c;o=c[f+(q+g<<2)>>2]|0;p=o+16|0;k=c[p>>2]|0;if(c[k+164>>2]&32){n=c[aa>>2]|0;TN(n|0,k|0,176)|0;w=$;x=o;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[aa>>2]=n;w=c[$>>2]&3;c[((w|0)==3?$:r)+40>>2]=c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2];c[((w|0)==2?$:s)+40>>2]=c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2];w=n+16|0;x=(c[p>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[aa>>2]|0;w=k+56|0;x=(c[p>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=o;o=$}p=c[41920]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=p+(k<<4)|0;h[ca>>3]=+h[ca>>3]+ +(c[t>>2]|0);k=k+1|0}n=c[41921]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=n+(k<<4)|0;_=p+(k<<4)|0;c[ca>>2]=c[_>>2];c[ca+4>>2]=c[_+4>>2];c[ca+8>>2]=c[_+8>>2];c[ca+12>>2]=c[_+12>>2];k=k+1|0}Jz(o,c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,n,v,17224);q=q+1|0}}while(0);l=ba;return}function fg(a){a=a|0;var b=0,d=0,e=0;b=co(a)|0;while(1){if(!b)break;d=Pm(a,b)|0;while(1){if(!d)break;if(($a[c[4306]&31](d)|0)<<24>>24?(e=c[(c[d+16>>2]|0)+8>>2]|0,e|0):0)gg(e);d=Rm(a,d)|0}b=eo(a,b)|0}return}function gg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[a+4>>2]|0;g=ww(f*48|0)|0;b=g;d=0;e=(c[a>>2]|0)+((f+-1|0)*48|0)|0;while(1){if((d|0)>=(f|0)){b=0;break}hg(e,b);b=b+48|0;d=d+1|0;e=e+-48|0}while(1){d=c[a>>2]|0;if((b|0)>=(f|0))break;_I(c[d+(b*48|0)>>2]|0);b=b+1|0}_I(d);c[a>>2]=g;return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;h=ww(g<<4)|0;d=h;e=0;f=(c[a>>2]|0)+(g+-1<<4)|0;while(1){if((e|0)>=(g|0))break;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];d=d+16|0;e=e+1|0;f=f+-16|0}c[b>>2]=h;c[b+4>>2]=g;c[b+8>>2]=c[a+12>>2];c[b+12>>2]=c[a+8>>2];h=b+16|0;g=a+32|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];h=b+32|0;g=a+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}function ig(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+96|0;q=x+80|0;s=x+64|0;r=x+48|0;u=x+32|0;v=x+16|0;w=x;m=d;while(1){t=m+16|0;g=c[t>>2]|0;if(!(a[g+112>>0]|0))break;m=c[g+116>>2]|0}g=c[m>>2]&3;o=c[((g|0)==2?m:m+-48|0)+40>>2]|0;g=c[((g|0)==3?m:m+48|0)+40>>2]|0;m=o+16|0;n=g+16|0;y=(c[(c[m>>2]|0)+232>>2]|0)-(c[(c[n>>2]|0)+232>>2]|0)|0;switch(((y|0)>-1?y:0-y|0)|0){case 1:{g=0;break}case 2:{if(!(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1))p=6;else g=0;break}default:p=6}do if((p|0)==6){if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(g|0)){c[f>>2]=o;y=(c[n>>2]|0)+16|0;p=(c[t>>2]|0)+16|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Ag(u,s,q);p=(c[m>>2]|0)+16|0;y=(c[t>>2]|0)+56|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Ag(v,s,q)}else{c[f>>2]=g;y=(c[m>>2]|0)+16|0;p=(c[t>>2]|0)+56|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Ag(u,s,q);p=(c[n>>2]|0)+16|0;y=(c[t>>2]|0)+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Ag(v,s,q)}g=c[(c[t>>2]|0)+96>>2]|0;if(!g){g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+48|0;y=e+32|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=4;break}j=+h[g+24>>3];i=+h[g+32>>3];p=(c[(c[(ro(o)|0)+16>>2]|0)+116>>2]&1|0)==0;k=p?i:j;y=(c[(c[t>>2]|0)+96>>2]|0)+56|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];y=(Bg(r,s,q)|0)==0;i=(p?j:i)*.5;j=+h[w>>3];if(y){h[w>>3]=j-i;y=w+8|0;h[y>>3]=+h[y>>3]+k*.5}else{h[w>>3]=j+i;y=w+8|0;h[y>>3]=+h[y>>3]-k*.5}g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+32|0;y=e+48|0;u=e+64|0;c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2];g=e+80|0;y=e+96|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=7}while(0);l=x;return g|0}function jg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0;q=c[f+16>>2]|0;p=+h[q+16>>3];j=p-+h[q+88>>3];m=j+-4.0;l=wg(d,f,g,i,-1)|0;if(!l){n=~~(j+(m>=0.0?-3.5:-4.5));k=c[e>>2]|0;k=(k|0)>(n|0)?n:k}else{k=xg(d,f,l)|0;do if(!k){n=c[l+16>>2]|0;j=+h[n+240>>3]+ +h[n+16>>3];if(!(a[n+156>>0]|0)){j=+(c[(c[d+16>>2]|0)+248>>2]|0)*.5+j;break}else{j=j+ +(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+32>>3]+ +(c[e+8>>2]|0);while(0);o=j<m?j:m;k=~~(o+(o>=0.0?.5:-.5))}o=+(k|0);n=(a[q+156>>0]|0)==1;if(n?(c[q+104>>2]|0)!=0:0)m=p+10.0;else m=p+4.0+ +h[q+96>>3];l=wg(d,f,g,i,1)|0;if(!l){f=~~(m+(m>=0.0?.5:-.5));k=c[e+4>>2]|0;k=(k|0)<(f|0)?f:k}else{k=xg(d,f,l)|0;do if(!k){f=c[l+16>>2]|0;j=+h[f+16>>3]-+h[f+88>>3];if(!(a[f+156>>0]|0)){j=j-+(c[(c[d+16>>2]|0)+248>>2]|0)*.5;break}else{j=j-+(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+16>>3]-+(c[e+8>>2]|0);while(0);m=j>m?j:m;k=~~(m+(m>=0.0?.5:-.5))}j=+(k|0);if(n?(c[q+104>>2]|0)!=0:0){j=j-+h[q+96>>3];if(j<o)j=p}p=+h[q+24>>3];d=c[(c[d+16>>2]|0)+196>>2]|0;q=c[q+232>>2]|0;m=p-+h[d+(q<<6)+16>>3];p=+h[d+(q<<6)+24>>3]+p;h[b>>3]=o;h[b+8>>3]=m;h[b+16>>3]=j;h[b+24>>3]=p;return}function kg(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)if((c[b+176>>2]|0)>1)b=1;else b=(c[b+184>>2]|0)>1&1;else b=0;return b|0}function lg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=l;l=l+32|0;f=g;switch(d|0){case 1:{vg(f,+h[b>>3],e,+h[b+16>>3],+h[b+8>>3]);break}case 4:{vg(f,+h[b>>3],+h[b+24>>3],+h[b+16>>3],e);break}default:{}}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2];c[a+16>>2]=c[f+16>>2];c[a+20>>2]=c[f+20>>2];c[a+24>>2]=c[f+24>>2];c[a+28>>2]=c[f+28>>2];l=g;return}function mg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0;l=c[b+16>>2]|0;k=l+(e<<5)|0;j=+h[k>>3];m=l+(e<<5)+8|0;g=+h[m>>3];n=l+(e<<5)+16|0;f=+h[n>>3];l=l+(e<<5)+24|0;i=+h[l>>3];if(j==f){d=c[(c[d+16>>2]|0)+196>>2]|0;o=e+1|0;j=+(c[b>>2]|0);g=+h[d+(o<<6)+24>>3]+ +h[(c[(c[c[d+(o<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];f=+(c[b+4>>2]|0);i=+h[(c[(c[c[d+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[d+(e<<6)+16>>3];h[k>>3]=j;h[m>>3]=g;h[n>>3]=f;h[l>>3]=i}h[a>>3]=j;h[a+8>>3]=g;h[a+16>>3]=f;h[a+24>>3]=i;return}function ng(b){b=b|0;var d=0,e=0;b=c[b+16>>2]|0;e=b+16|0;d=0;while(1){b=c[c[b+180>>2]>>2]|0;b=c[(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0;if((a[b+156>>0]|0)!=1)break;if((c[b+184>>2]|0)!=1)break;if((c[b+176>>2]|0)!=1)break;if(+h[b+16>>3]!=+h[e>>3])break;d=d+1|0}return d|0}function og(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=l;l=l+32|0;j=k;h=sg(b,-1)|0;b=sg(b,1)|0;if(!((h|0)!=0?!(_z(h)|0):0))i=3;do if((i|0)==3){if(b|0?(_z(b)|0)==0:0)break;h=tg(d,-1)|0;b=tg(d,1)|0;if(h|0?(_z(h)|0)==0:0)break;if(b|0?(_z(b)|0)==0:0)break;h=e+52|0;b=0;while(1){if((b|0)>=(c[h>>2]|0))break;d=e+56+(b<<5)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];Lz(a,j);b=b+1|0}h=c[a+80>>2]|0;i=g+-3|0;b=0;while(1){if((b|0)>=(g|0))break;e=135024+(b<<5)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[j+16>>2]=c[e+16>>2];c[j+20>>2]=c[e+20>>2];c[j+24>>2]=c[e+24>>2];c[j+28>>2]=c[e+28>>2];Lz(a,j);b=b+1|0}d=h+1|0;i=i+d|0;h=c[f+52>>2]|0;while(1){b=h+-1|0;if((h|0)<=0)break;h=f+56+(b<<5)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];Lz(a,j);h=b}ug(a,d,i)}while(0);l=k;return}function pg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[e>>2]|0;while(1){if(!b)break;a=c[c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;b=b+-1|0}c[e>>2]=f+1;g=d+(f<<4)|0;b=d+(f+-1<<4)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];f=c[e>>2]|0;c[e>>2]=f+1;f=d+(f<<4)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];f=d+(c[e>>2]<<4)|0;e=(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];return a|0}function qg(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0;m=d+84|0;l=d+80|0;e=0;d=b;a:while(1){j=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;k=j+16|0;if((a[(c[k>>2]|0)+156>>0]|0)!=1)break;if(($a[c[17228>>2]&31](j)|0)<<24>>24)break;d=c[l>>2]|0;while(1){if((e|0)>=(d|0))break a;if(!(+h[(c[m>>2]|0)+(e<<5)+8>>3]>+h[(c[k>>2]|0)+24>>3]))break;e=e+1|0}d=c[m>>2]|0;b=c[k>>2]|0;do if(!(+h[d+(e<<5)+24>>3]<+h[b+24>>3])){g=+h[d+(e<<5)>>3];i=~~g;f=+h[d+(e<<5)+16>>3];if(!(c[b+104>>2]|0)){rg(j,i,~~((f+g)*.5),~~f);break}else{rg(j,i,~~f,~~(+h[b+96>>3]+f));break}}while(0);d=c[c[(c[k>>2]|0)+180>>2]>>2]|0}return}function rg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+16>>2]|0;h[a+16>>3]=+(d|0);h[a+88>>3]=+(d-b|0);h[a+96>>3]=+(e-d|0);return}function sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180>>2]|0;h=((h|0)==2?a:a+-48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172>>2]|0;h=((h|0)==3?a:a+48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function ug(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0;l=a+84|0;i=b+-1|0;while(1){if((i|0)>(d|0))break;f=c[l>>2]|0;j=f+(i<<5)|0;e=+h[j>>3];if(!(i-b&1)){f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e>=m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}else{f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e+16.0>m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}i=i+1|0}k=(c[a+80>>2]|0)+-1|0;g=0;while(1){if((g|0)>=(k|0))break;i=c[l>>2]|0;f=i+(g<<5)|0;j=g+1|0;a=i+(j<<5)|0;if(!((g|0)<(b|0)|(g|0)>(d|0))?(g-b&1|0)==0:0){e=+h[f>>3]+16.0;f=i+(j<<5)+16|0;if(e>+h[f>>3])h[f>>3]=e;e=+h[i+(g<<5)+16>>3]+-16.0;if(!(e<+h[a>>3])){g=j;continue}h[a>>3]=e;g=j;continue}if(!((g|0)<(d|0)&(j|0)>=(b|0))){g=j;continue}if(j-b&1|0){g=j;continue}e=+h[i+(j<<5)+16>>3];if(+h[f>>3]+16.0>e)h[f>>3]=e+-16.0;f=i+(g<<5)+16|0;e=+h[a>>3];if(!(+h[f>>3]+-16.0<e)){g=j;continue}h[f>>3]=e+16.0;g=j}return}function vg(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function wg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[(c[b+16>>2]|0)+196>>2]|0;h=c[d+16>>2]|0;j=c[h+232>>2]|0;i=k+(j<<6)|0;j=k+(j<<6)+4|0;h=c[h+236>>2]|0;a:do{h=h+g|0;if((h|0)<=-1){b=0;break}if((h|0)>=(c[i>>2]|0)){b=0;break}b=c[(c[j>>2]|0)+(h<<2)>>2]|0;k=c[b+16>>2]|0;switch(a[k+156>>0]|0){case 0:break a;case 1:{if(c[k+104>>2]|0)break a;break}default:{}}}while((zg(b,d,e,f)|0)<<24>>24!=0);return b|0}function xg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){i=c[d+212>>2]|0;h=i}else{i=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[i>>2]&3;h=c[(c[(c[((g|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;i=c[(c[(c[((g|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0}d=c[e+16>>2]|0;if(!(a[d+156>>0]|0)){e=c[d+212>>2]|0;e=(e|0)==(b|0)?0:e;return ((e|0)==(h|0)|((e|0)==0|(e|0)==(i|0))?0:e)|0}f=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[f>>2]&3;d=c[(c[(c[((g|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if(!(!((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))?(yg(d,e)|0)!=0:0)){d=c[(c[(c[((g|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))d=0;else{e=(yg(d,e)|0)==0;return (e?0:d)|0}}return d|0}function yg(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;d=c[a+16>>2]|0;a=c[b+16>>2]|0;f=+h[a+16>>3];if((+h[d+16>>3]<=f?f<=+h[d+32>>3]:0)?(e=+h[a+24>>3],+h[d+24>>3]<=e):0)a=e<=+h[d+40>>3]&1;else a=0;return a|0}function zg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=c[b+16>>2]|0;j=(c[i+236>>2]|0)>(c[(c[d+16>>2]|0)+236>>2]|0);a:do if((c[i+184>>2]|0)==1){b:do if(f|0){h=0;b=c[c[i+180>>2]>>2]|0;while(1){if((h|0)>=2)break b;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((b|0)==(d|0))break b;g=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[g+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[g+184>>2]|0)!=1)break b;if(!(a[g+156>>0]|0))break b;if((c[b+184>>2]|0)!=1)break b;if(!(a[b+156>>0]|0))break b;h=h+1|0;f=c[c[b+180>>2]>>2]|0;b=c[c[g+180>>2]>>2]|0}}while(0);if(e|0?(c[i+176>>2]|0)==1:0){g=0;d=e;b=c[c[i+172>>2]>>2]|0;while(1){if((g|0)>=2){b=0;break a}b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((b|0)==(d|0)){b=0;break a}f=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[f+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[f+176>>2]|0)!=1){b=0;break a}if(!(a[f+156>>0]|0)){b=0;break a}if((c[b+176>>2]|0)!=1){b=0;break a}if(!(a[b+156>>0]|0)){b=0;break a}g=g+1|0;d=c[c[b+172>>2]>>2]|0;b=c[c[f+172>>2]>>2]|0}}else b=0}else b=0;while(0);return b|0}function Ag(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Bg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return (~~((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))|0)>0|0}function Cg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=l;l=l+256|0;D=R+232|0;C=R+216|0;P=R+88|0;O=R+80|0;K=R+64|0;L=R+200|0;M=R+184|0;N=R;E=R+168|0;F=R+152|0;G=R+136|0;H=R+120|0;I=R+104|0;B=c[g>>2]&3;J=c[((B|0)==3?g:g+48|0)+40>>2]|0;B=c[((B|0)==2?g:g+-48|0)+40>>2]|0;do if((By(J)|0)!=2?(By(B)|0)!=2:0){g=0;j=0;k=0;while(1){if((k|0)>=(f|0))break;A=c[(c[d+(k+e<<2)>>2]|0)+16>>2]|0;g=g+((c[A+96>>2]|0)!=0&1)|0;if(!((a[A+44>>0]|0)==0?(a[A+84>>0]|0)==0:0))j=1;k=k+1|0}if(!j)if(!g){Eg(J,B,d,e,f,i);break}else{Jg(J,B,d,e,f,i,g);break}y=vw(156)|0;z=Kg(b,y)|0;t=Ip(z,78320,1)|0;No(t,122277,280,1)|0;Km(t,80018,80032)|0;m=+h[(c[B+16>>2]|0)+16>>3];s=+h[(c[J+16>>2]|0)+16>>3];A=b+16|0;q=(c[(c[A>>2]|0)+116>>2]&1|0)==0;r=q?B:J;q=q?J:B;t=Lg(t,q)|0;u=Lg(z,r)|0;g=0;p=0;while(1){if((p|0)>=(f|0))break;j=d+(p+e<<2)|0;while(1){o=c[j>>2]|0;n=o+16|0;j=c[n>>2]|0;if(!(a[j+112>>0]|0))break;else j=j+116|0}if((c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)==(q|0))k=Mg(z,t,u,o)|0;else k=Mg(z,u,t,o)|0;j=c[n>>2]|0;c[j+120>>2]=k;if(!g)if((a[j+44>>0]|0)==0?(a[j+84>>0]|0)==0:0){c[(c[k+16>>2]|0)+120>>2]=o;g=k}else g=0;p=p+1|0}if(!g)x=an(z,t,u,0,1)|0;else x=g;Cm(x,c[42218]|0,78324)|0;g=z+16|0;n=c[g>>2]|0;c[n+144>>2]=c[(c[A>>2]|0)+144>>2];c[n+188>>2]=z;IB(z,i);Bf(z);kj(z,0);uh(z,0);xi(z,0);q=q+16|0;i=c[q>>2]|0;n=c[r+16>>2]|0;r=t+16|0;o=c[r>>2]|0;p=o+16|0;v=+(~~m|0);w=+(~~((+h[(c[u+16>>2]|0)+16>>3]+ +h[p>>3])*.5)|0);m=+(~~s|0);s=+(~~((+h[i+16>>3]-+h[i+96>>3]+ +h[n+16>>3]+ +h[n+88>>3])*.5)|0);n=o+24|0;g=(c[g>>2]|0)+192|0;while(1){j=c[g>>2]|0;if(!j)break;do if((j|0)!=(t|0)){g=c[j+16>>2]|0;k=g+24|0;if((j|0)==(u|0)){h[k>>3]=m;h[g+16>>3]=w;break}else{h[k>>3]=s;break}}else{h[n>>3]=v;h[p>>3]=w;g=o}while(0);g=g+164|0}ek(z);Yf(z,0);$x(z);k=c[q>>2]|0;g=c[r>>2]|0;if(!(c[(c[A>>2]|0)+116>>2]&1)){j=g+16|0;m=+h[k+24>>3]-+h[g+24>>3]}else{j=g+24|0;m=+h[g+16>>3]+ +h[k+24>>3]}h[K>>3]=+h[k+16>>3]-+h[j>>3];h[K+8>>3]=m;i=N+16|0;t=N+32|0;u=N+48|0;r=0;while(1){if((r|0)>=(f|0))break;g=d+(r+e<<2)|0;while(1){j=c[g>>2]|0;q=j+16|0;g=c[q>>2]|0;if(!(a[g+112>>0]|0))break;else g=g+116|0}o=c[g+120>>2]|0;p=o+16|0;g=c[p>>2]|0;if(!((o|0)==(x|0)&(c[g+120>>2]|0)==0)){n=c[c[g+8>>2]>>2]|0;o=n+4|0;j=Iz(j,c[o>>2]|0)|0;c[j+8>>2]=c[n+8>>2];g=j+16|0;k=n+16|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(L,C,D,S);c[g>>2]=c[L>>2];c[g+4>>2]=c[L+4>>2];c[g+8>>2]=c[L+8>>2];c[g+12>>2]=c[L+12>>2];c[j+12>>2]=c[n+12>>2];g=j+32|0;S=n+32|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(M,C,D,k);c[g>>2]=c[M>>2];c[g+4>>2]=c[M+4>>2];c[g+8>>2]=c[M+8>>2];c[g+12>>2]=c[M+12>>2];g=0;while(1){if((g|0)>=(c[o>>2]|0))break;k=(c[j>>2]|0)+(g<<4)|0;T=(c[n>>2]|0)+(g<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[T>>2];c[C+4>>2]=c[T+4>>2];c[C+8>>2]=c[T+8>>2];c[C+12>>2]=c[T+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(E,C,D,S);c[k>>2]=c[E>>2];c[k+4>>2]=c[E+4>>2];c[k+8>>2]=c[E+8>>2];c[k+12>>2]=c[E+12>>2];c[N>>2]=c[E>>2];c[N+4>>2]=c[E+4>>2];c[N+8>>2]=c[E+8>>2];c[N+12>>2]=c[E+12>>2];k=g+1|0;if((k|0)>=(c[o>>2]|0)){Q=48;break}S=(c[j>>2]|0)+(k<<4)|0;k=(c[n>>2]|0)+(k<<4)|0;T=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(F,C,D,T);c[S>>2]=c[F>>2];c[S+4>>2]=c[F+4>>2];c[S+8>>2]=c[F+8>>2];c[S+12>>2]=c[F+12>>2];c[i>>2]=c[F>>2];c[i+4>>2]=c[F+4>>2];c[i+8>>2]=c[F+8>>2];c[i+12>>2]=c[F+12>>2];S=g+2|0;T=(c[j>>2]|0)+(S<<4)|0;S=(c[n>>2]|0)+(S<<4)|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(G,C,D,k);c[T>>2]=c[G>>2];c[T+4>>2]=c[G+4>>2];c[T+8>>2]=c[G+8>>2];c[T+12>>2]=c[G+12>>2];c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];T=g+3|0;k=(c[n>>2]|0)+(T<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(H,C,D,S);c[u>>2]=c[H>>2];c[u+4>>2]=c[H+4>>2];c[u+8>>2]=c[H+8>>2];c[u+12>>2]=c[H+12>>2];eu((c[A>>2]|0)+16|0,N);g=T}if((Q|0)==48)Q=0;g=c[(c[q>>2]|0)+96>>2]|0;if(g|0){T=g+56|0;p=(c[(c[p>>2]|0)+96>>2]|0)+56|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[p>>2];c[C+4>>2]=c[p+4>>2];c[C+8>>2]=c[p+8>>2];c[C+12>>2]=c[p+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(I,C,D,S);c[T>>2]=c[I>>2];c[T+4>>2]=c[I+4>>2];c[T+8>>2]=c[I+8>>2];c[T+12>>2]=c[I+12>>2];T=c[(c[q>>2]|0)+96>>2]|0;a[T+81>>0]=1;bB(b,T)}}r=r+1|0}Og(z,y)}else Q=3;while(0);if((Q|0)==3?(c[41924]|0)==0:0){c[41924]=1;_l(0,78197,O)|0;Q=Dn(J)|0;S=(qn(b)|0)!=0;T=Dn(B)|0;c[P>>2]=Q;c[P+4>>2]=S?122546:122549;c[P+8>>2]=T;_l(3,78303,P)|0}l=R;return}function Dg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;z=l;l=l+1600|0;u=z+1552|0;n=z+1536|0;t=z+840|0;v=z+144|0;w=z+1584|0;j=z+32|0;s=z+16|0;o=z;q=c[f>>2]&3;p=c[((q|0)==3?f:f+48|0)+40>>2]|0;x=f+-48|0;q=c[((q|0)==2?f:x)+40>>2]|0;r=f+16|0;k=c[r>>2]|0;i=c[k+172>>2]|0;while(1){m=c[(c[i+16>>2]|0)+172>>2]|0;if(!m)break;else i=m}k=(c[k+96>>2]|0)+56|0;i=(c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)+16|0;m=(c[i>>2]|0)+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[r>>2]|0;a[(c[k+96>>2]|0)+81>>0]=1;if((g|0)!=2){k=c[i>>2]|0;C=+h[k+16>>3];E=C-+h[k+88>>3];C=+h[k+96>>3]+C;B=+h[k+24>>3];D=+h[k+80>>3]*.5+B;k=c[(c[b+16>>2]|0)+196>>2]|0;m=c[p+16>>2]|0;j=c[m+232>>2]|0;B=+(~~(+(~~(B-+h[k+(j<<6)+16>>3]-+h[m+24>>3]+ +h[k+(j<<6)+24>>3])|0)*.16666666666666666)|0);B=D-(B<5.0?5.0:B);Gg(b,d,e,p,f,t,1);Gg(b,d,e,q,f,v,0);j=t+52|0;k=c[j>>2]|0;m=k+-1|0;A=+h[t+56+(m<<5)>>3];h[16878]=A;h[16879]=+h[t+56+(m<<5)+24>>3];h[16880]=E;h[16881]=B;h[16882]=A;h[16883]=B;m=v+52|0;i=(c[m>>2]|0)+-1|0;A=+h[v+56+(i<<5)+16>>3];h[16884]=A;h[16885]=D;h[16886]=C;h[16889]=B;h[16887]=+h[v+56+(i<<5)+24>>3];h[16888]=A;i=0;while(1){if((i|0)>=(k|0)){i=0;break}k=t+56+(i<<5)|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];c[u+16>>2]=c[k+16>>2];c[u+20>>2]=c[k+20>>2];c[u+24>>2]=c[k+24>>2];c[u+28>>2]=c[k+28>>2];Lz(e,u);i=i+1|0;k=c[j>>2]|0}while(1){if((i|0)==3)break;t=135024+(i<<5)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];Lz(e,u);i=i+1|0}j=c[m>>2]|0;while(1){i=j+-1|0;if((j|0)<=0)break;j=v+56+(i<<5)|0;c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];c[u+16>>2]=c[j+16>>2];c[u+20>>2]=c[j+20>>2];c[u+24>>2]=c[j+24>>2];c[u+28>>2]=c[j+28>>2];Lz(e,u);j=i}if((g|0)==10)j=ny(e,w)|0;else j=ty(e,w)|0;i=c[w>>2]|0;if(i|0)y=17}else{i=(c[p+16>>2]|0)+16|0;v=k+16|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];Ag(s,n,u);v=(c[q+16>>2]|0)+16|0;i=(c[r>>2]|0)+56|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];c[u>>2]=c[i>>2];c[u+4>>2]=c[i+4>>2];c[u+8>>2]=c[i+8>>2];c[u+12>>2]=c[i+12>>2];Ag(o,n,u);i=c[(c[r>>2]|0)+96>>2]|0;D=+h[i+56>>3];E=+h[i+64>>3]-+h[i+32>>3]*.5;i=j+16|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];i=j+32|0;v=j+48|0;y=j+64|0;h[j+64>>3]=D;h[j+72>>3]=E;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[i>>2]=c[y>>2];c[i+4>>2]=c[y+4>>2];c[i+8>>2]=c[y+8>>2];c[i+12>>2]=c[y+12>>2];i=j+80|0;y=j+96|0;c[y>>2]=c[o>>2];c[y+4>>2]=c[o+4>>2];c[y+8>>2]=c[o+8>>2];c[y+12>>2]=c[o+12>>2];c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];c[w>>2]=7;i=7;y=17}if((y|0)==17)Jz(f,c[((c[f>>2]&3|0)==2?f:x)+40>>2]|0,j,i,17224);l=z;return}function Eg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=l;l=l+352|0;x=N+336|0;w=N+320|0;L=N+128|0;u=N+304|0;y=N+288|0;M=N+112|0;E=N+96|0;F=N+80|0;G=N+64|0;H=N+48|0;I=N+32|0;J=N+16|0;K=N;a=a+16|0;q=(c[a>>2]|0)+16|0;v=(c[d+(e<<2)>>2]|0)+16|0;s=(c[v>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[x>>2]=c[s>>2];c[x+4>>2]=c[s+4>>2];c[x+8>>2]=c[s+8>>2];c[x+12>>2]=c[s+12>>2];Ag(u,w,x);C=+h[u>>3];D=+h[u+8>>3];u=(c[b+16>>2]|0)+16|0;v=(c[v>>2]|0)+56|0;c[w>>2]=c[u>>2];c[w+4>>2]=c[u+4>>2];c[w+8>>2]=c[u+8>>2];c[w+12>>2]=c[u+12>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];Ag(y,w,x);A=+h[y>>3];B=+h[y+8>>3];if((f|0)>1){z=+h[(c[a>>2]|0)+80>>3];i=z*.5;z=z/+(f+-1|0)}else{i=0.0;z=0.0}p=(g|8|0)==10;m=L+8|0;q=L+16|0;r=(A+C*2.0)*.3333333333333333;s=L+32|0;t=(A*2.0+C)*.3333333333333333;n=L+24|0;u=L+48|0;v=L+64|0;w=L+80|0;x=L+96|0;y=L+112|0;k=L+128|0;o=L+136|0;i=D-i;b=0;while(1){if((b|0)>=(f|0))break;j=c[d+(b+e<<2)>>2]|0;h[L>>3]=C;h[m>>3]=D;if(p){Ig(M,r,i);c[q>>2]=c[M>>2];c[q+4>>2]=c[M+4>>2];c[q+8>>2]=c[M+8>>2];c[q+12>>2]=c[M+12>>2];Ig(E,t,i);c[s>>2]=c[E>>2];c[s+4>>2]=c[E+4>>2];c[s+8>>2]=c[E+8>>2];c[s+12>>2]=c[E+12>>2];a=4;g=3}else{h[q>>3]=C;h[n>>3]=D;Ig(F,r,i);c[s>>2]=c[F>>2];c[s+4>>2]=c[F+4>>2];c[s+8>>2]=c[F+8>>2];c[s+12>>2]=c[F+12>>2];Ig(G,r,i);c[u>>2]=c[G>>2];c[u+4>>2]=c[G+4>>2];c[u+8>>2]=c[G+8>>2];c[u+12>>2]=c[G+12>>2];Ig(H,r,i);c[v>>2]=c[H>>2];c[v+4>>2]=c[H+4>>2];c[v+8>>2]=c[H+8>>2];c[v+12>>2]=c[H+12>>2];Ig(I,t,i);c[w>>2]=c[I>>2];c[w+4>>2]=c[I+4>>2];c[w+8>>2]=c[I+8>>2];c[w+12>>2]=c[I+12>>2];Ig(J,t,i);c[x>>2]=c[J>>2];c[x+4>>2]=c[J+4>>2];c[x+8>>2]=c[J+8>>2];c[x+12>>2]=c[J+12>>2];Ig(K,t,i);c[y>>2]=c[K>>2];c[y+4>>2]=c[K+4>>2];c[y+8>>2]=c[K+8>>2];c[y+12>>2]=c[K+12>>2];h[k>>3]=A;h[o>>3]=B;a=10;g=9}h[L+(g<<4)>>3]=A;h[L+(g<<4)+8>>3]=B;Jz(j,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0,L,a,17224);i=i+z;b=b+1|0}l=N;return}function Fg(a,d,e,f,g,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;x=l;l=l+1440|0;t=x+1392|0;v=x+1424|0;w=x+696|0;u=x;r=c[j>>2]&3;q=c[((r|0)==3?j:j+48|0)+40>>2]|0;r=c[((r|0)==2?j:j+-48|0)+40>>2]|0;m=c[q+16>>2]|0;o=c[m+232>>2]|0;p=c[a+16>>2]|0;if((o|0)<(b[p+238>>1]|0)){y=c[p+196>>2]|0;p=o+1|0;n=+h[m+24>>3]-+h[y+(o<<6)+32>>3]-+h[(c[(c[c[y+(p<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[y+(p<<6)+40>>3]}else n=+(c[p+252>>2]|0);z=+(i+1|0);s=+(c[d+12>>2]|0)/z;n=n/z;Hg(a,d,e,q,j,w,1);Hg(a,d,e,r,j,u,0);r=w+52|0;j=u+52|0;a=(k|0)==0;d=e+80|0;m=0;while(1){if((m|0)>=(i|0))break;q=c[f+(m+g<<2)>>2]|0;p=c[r>>2]|0;o=p+-1|0;D=+h[w+56+(o<<5)>>3];B=+h[w+56+(o<<5)+8>>3];C=+h[w+56+(o<<5)+16>>3];h[16878]=D;h[16881]=B;m=m+1|0;z=+(m|0);A=s*z;h[16880]=C+A;z=B-n*z;h[16879]=z;h[16882]=D;h[16885]=z;o=(c[j>>2]|0)+-1|0;D=+h[u+56+(o<<5)+16>>3];h[16884]=D;h[16883]=z-n;B=+h[u+56+(o<<5)>>3];C=+h[u+56+(o<<5)+8>>3];h[16888]=D;h[16889]=C;h[16886]=B-A;h[16887]=z;o=0;while(1){if((o|0)>=(p|0)){o=0;break}p=w+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];Lz(e,t);o=o+1|0;p=c[r>>2]|0}while(1){if((o|0)==3)break;y=135024+(o<<5)|0;c[t>>2]=c[y>>2];c[t+4>>2]=c[y+4>>2];c[t+8>>2]=c[y+8>>2];c[t+12>>2]=c[y+12>>2];c[t+16>>2]=c[y+16>>2];c[t+20>>2]=c[y+20>>2];c[t+24>>2]=c[y+24>>2];c[t+28>>2]=c[y+28>>2];Lz(e,t);o=o+1|0}p=c[j>>2]|0;while(1){o=p+-1|0;if((p|0)<=0)break;p=u+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];Lz(e,t);p=o}if(a)o=ty(e,v)|0;else o=ny(e,v)|0;p=c[v>>2]|0;if(!p)break;Jz(q,c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0,o,p,17224);c[d>>2]=0}l=x;return}function Gg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;jg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=4;if(!(i<<24>>24))Pz(d,f,2,g,0);else Mz(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3]+ +h[e+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];lg(m,j,4,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Hg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;jg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=1;if(!(i<<24>>24))Pz(d,f,2,g,0);else Mz(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[e+24>>3]-+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];lg(m,j,1,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Ig(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Jg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0;Y=l;l=l+288|0;R=Y+256|0;Q=Y+240|0;P=Y+224|0;V=Y+280|0;W=Y+272|0;X=Y+32|0;S=Y+16|0;T=Y;m=Y+208|0;n=Y+192|0;o=c[e+(f<<2)>>2]|0;U=vw(g<<2)|0;k=0;while(1){if((k|0)>=(g|0))break;c[U+(k<<2)>>2]=c[e+(k+f<<2)>>2];k=k+1|0}rL(U,g,4,11);e=b+16|0;f=(c[e>>2]|0)+16|0;o=o+16|0;C=(c[o>>2]|0)+16|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[C>>2];c[R+4>>2]=c[C+4>>2];c[R+8>>2]=c[C+8>>2];c[R+12>>2]=c[C+12>>2];Ag(m,Q,R);c[S>>2]=c[m>>2];c[S+4>>2]=c[m+4>>2];c[S+8>>2]=c[m+8>>2];c[S+12>>2]=c[m+12>>2];C=d+16|0;f=(c[C>>2]|0)+16|0;o=(c[o>>2]|0)+56|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[o>>2];c[R+4>>2]=c[o+4>>2];c[R+8>>2]=c[o+8>>2];c[R+12>>2]=c[o+12>>2];Ag(n,Q,R);c[T>>2]=c[n>>2];c[T+4>>2]=c[n+4>>2];c[T+8>>2]=c[n+8>>2];c[T+12>>2]=c[n+12>>2];w=+h[(c[e>>2]|0)+96>>3]+ +h[S>>3];x=+h[T>>3]-+h[(c[C>>2]|0)+88>>3];u=x+w;v=u*.5;C=c[U>>2]|0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];o=X+16|0;c[o>>2]=c[S>>2];c[o+4>>2]=c[S+4>>2];c[o+8>>2]=c[S+8>>2];c[o+12>>2]=c[S+12>>2];e=X+32|0;c[e>>2]=c[T>>2];c[e+4>>2]=c[T+4>>2];c[e+8>>2]=c[T+8>>2];c[e+12>>2]=c[T+12>>2];f=X+48|0;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];Jz(C,c[((c[C>>2]&3|0)==2?C:C+-48|0)+40>>2]|0,X,4,17224);C=c[(c[C+16>>2]|0)+96>>2]|0;h[C+56>>3]=v;z=S+8|0;r=+h[z>>3];s=+h[C+32>>3];h[C+64>>3]=(s+6.0)*.5+r;a[C+81>>0]=1;r=r+3.0;B=+h[C+24>>3];A=(u-B)*.5;B=(B+u)*.5;C=X+24|0;D=X+40|0;E=X+56|0;F=X+64|0;G=T+8|0;H=X+72|0;I=X+80|0;J=X+88|0;K=X+96|0;L=X+104|0;M=X+112|0;N=X+120|0;O=V+4|0;n=(i|0)==6&1;q=0.0;p=0.0;s=s+r;m=1;while(1){if((m|0)>=(j|0)){y=6;break}d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];h[N>>3]=Z;s=+h[(c[(c[d+16>>2]|0)+96>>2]|0)+32>>3];t=Z+s*.5;s=Z+s}else{k=d+16|0;b=c[(c[k>>2]|0)+96>>2]|0;if((m|0)==1){p=+h[b+24>>3];q=(p+u)*.5;p=(u-p)*.5}r=r+-6.0-+h[b+32>>3];c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];t=r+-6.0;h[C>>3]=t;h[e>>3]=+h[T>>3];h[D>>3]=t;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=r;h[K>>3]=p;h[L>>3]=r;h[M>>3]=p;h[N>>3]=+h[z>>3];t=+h[(c[(c[k>>2]|0)+96>>2]|0)+32>>3]*.5+r}c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=jy(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break;i=c[(c[d+16>>2]|0)+96>>2]|0;h[i+56>>3]=v;h[i+64>>3]=t;a[i+81>>0]=1;Jz(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17224);m=m+1|0}a:do if((y|0)==6){v=(x+w*2.0)*.3333333333333333;u=(x*2.0+w)*.3333333333333333;while(1){if((m|0)>=(g|0))break;d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];s=Z;t=p;p=Z}else{y=(m|0)==1;t=y?v:p;q=y?u:q;p=r+-6.0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];r=r+-12.0;h[C>>3]=r;h[e>>3]=+h[T>>3];h[D>>3]=r;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=p;h[K>>3]=t;h[L>>3]=p;h[M>>3]=t;r=p;p=+h[z>>3]}h[N>>3]=p;c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=jy(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break a;Jz(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17224);m=m+1|0;p=t}_I(U)}while(0);l=Y;return}function Kg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0;g=l;l=l+16|0;f=g;j=(qn(b)|0)==0;j=j?17648:17640;a[f>>0]=a[j>>0]|0;a[f+1>>0]=a[j+1>>0]|0;a[f+2>>0]=a[j+2>>0]|0;a[f+3>>0]=a[j+3>>0]|0;f=gn(78335,f,0)|0;No(f,122277,280,1)|0;ym(f,0,80018,174181)|0;j=vw(96)|0;e=c[f+16>>2]|0;c[e+8>>2]=j;i=c[b+16>>2]|0;k=c[i+8>>2]|0;h[j>>3]=+h[k>>3];h[j+24>>3]=+h[k+24>>3];a[e+115>>0]=a[i+115>>0]|0;c[e+116>>2]=c[i+116>>2]&1^1;c[e+248>>2]=c[i+248>>2];c[e+252>>2]=c[i+252>>2];e=Dm(so(b)|0,1,0)|0;while(1){if(!e)break;ym(f,1,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=Dm(so(b)|0,1,e)|0}e=Dm(so(b)|0,2,0)|0;while(1){if(!e)break;ym(f,2,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=Dm(so(b)|0,2,e)|0}if(!(ym(f,2,96251,0)|0))ym(f,2,96251,174181)|0;if(!(ym(f,2,96242,0)|0))ym(f,2,96242,174181)|0;Pg(f,d);l=g;return f|0}function Lg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;a=no(a,Dn(b)|0,1)|0;No(a,122241,304,1)|0;Mm(b,a)|0;if((By(b)|0)==2){f=b+16|0;b=ww((rJ(c[c[(c[f>>2]|0)+104>>2]>>2]|0)|0)+3|0)|0;c[d>>2]=c[c[(c[f>>2]|0)+104>>2]>>2];pL(b,78330,d)|0;Km(a,86240,b)|0}l=e;return a|0}function Mg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=an(a,b,c,0,1)|0;No(c,122254,176,1)|0;Mm(d,c)|0;return c|0}function Ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i+16|0;f=i;if(e|0){j=+h[b>>3];e=b+8|0;h[b>>3]=+h[e>>3];h[e>>3]=-j};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];Ag(a,f,g);l=i;return}function Og(a,b){a=a|0;b=b|0;c[42233]=c[b>>2];c[42237]=c[b+4>>2];c[42238]=c[b+8>>2];c[42218]=c[b+12>>2];c[42219]=c[b+16>>2];c[42225]=c[b+20>>2];c[42224]=c[b+24>>2];c[42223]=c[b+28>>2];c[42249]=c[b+32>>2];c[42241]=c[b+36>>2];c[42226]=c[b+40>>2];c[42236]=c[b+44>>2];c[42245]=c[b+48>>2];c[42244]=c[b+52>>2];c[42243]=c[b+56>>2];c[42248]=c[b+60>>2];c[42242]=c[b+64>>2];c[42227]=c[b+68>>2];c[42189]=c[b+72>>2];c[42190]=c[b+76>>2];c[42191]=c[b+80>>2];c[42201]=c[b+84>>2];c[42194]=c[b+88>>2];c[42195]=c[b+92>>2];c[42196]=c[b+96>>2];c[42198]=c[b+100>>2];c[42199]=c[b+104>>2];c[42202]=c[b+108>>2];c[42205]=c[b+112>>2];c[42203]=c[b+116>>2];c[42204]=c[b+120>>2];c[42207]=c[b+124>>2];c[42206]=c[b+128>>2];c[42208]=c[b+132>>2];c[42209]=c[b+136>>2];c[42200]=c[b+140>>2];c[42212]=c[b+144>>2];c[42184]=c[b+148>>2];c[42181]=c[b+152>>2];_I(b);Ef(a);ln(a)|0;return}function Pg(a,b){a=a|0;b=b|0;c[b>>2]=c[42233];c[b+4>>2]=c[42237];c[b+8>>2]=c[42238];c[b+12>>2]=c[42218];c[b+16>>2]=c[42219];c[b+20>>2]=c[42225];c[b+24>>2]=c[42224];c[b+28>>2]=c[42223];c[b+32>>2]=c[42249];c[b+36>>2]=c[42241];c[b+40>>2]=c[42226];c[b+44>>2]=c[42236];c[b+48>>2]=c[42245];c[b+52>>2]=c[42244];c[b+56>>2]=c[42243];c[b+60>>2]=c[42248];c[b+64>>2]=c[42242];c[b+68>>2]=c[42227];c[b+72>>2]=c[42189];c[b+76>>2]=c[42190];c[b+80>>2]=c[42191];c[b+84>>2]=c[42201];c[b+88>>2]=c[42194];c[b+92>>2]=c[42195];c[b+96>>2]=c[42196];c[b+100>>2]=c[42198];c[b+104>>2]=c[42199];c[b+108>>2]=c[42202];c[b+112>>2]=c[42205];c[b+116>>2]=c[42203];c[b+120>>2]=c[42204];c[b+124>>2]=c[42207];c[b+128>>2]=c[42206];c[b+132>>2]=c[42208];c[b+136>>2]=c[42209];c[b+140>>2]=c[42200];c[b+144>>2]=c[42212];c[b+152>>2]=c[42181];c[b+148>>2]=c[42184];c[42233]=0;c[42237]=ym(a,2,80259,0)|0;c[42238]=ym(a,2,80268,0)|0;b=ym(a,2,86614,0)|0;c[42218]=b;if(!b)c[42218]=ym(a,2,86614,174181)|0;c[42219]=0;c[42225]=0;c[42224]=ym(a,2,86494,0)|0;c[42223]=ym(a,2,86485,0)|0;c[42249]=ym(a,2,86790,0)|0;c[42241]=0;c[42226]=ym(a,2,86240,0)|0;c[42236]=ym(a,2,78340,0)|0;c[42245]=0;c[42244]=ym(a,2,86690,0)|0;c[42243]=ym(a,2,86676,0)|0;c[42248]=ym(a,2,86781,0)|0;c[42242]=0;c[42227]=0;c[42189]=ym(a,1,96049,0)|0;c[42190]=ym(a,1,96043,0)|0;c[42191]=ym(a,1,90671,0)|0;c[42201]=0;c[42194]=ym(a,1,86485,0)|0;c[42195]=ym(a,1,86494,0)|0;c[42196]=0;c[42198]=ym(a,1,86240,0)|0;c[42199]=0;c[42202]=0;c[42205]=ym(a,1,86446,0)|0;c[42203]=ym(a,1,86529,0)|0;c[42204]=ym(a,1,86535,0)|0;c[42207]=ym(a,1,86547,0)|0;c[42206]=ym(a,1,86385,0)|0;c[42208]=ym(a,1,86552,0)|0;c[42209]=ym(a,1,78352,0)|0;c[42200]=0;c[42212]=0;c[42184]=ym(a,0,86446,0)|0;return}function Qg(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0;d=c[(c[(c[a>>2]|0)+16>>2]|0)+96>>2]|0;a=c[(c[(c[b>>2]|0)+16>>2]|0)+96>>2]|0;b=(a|0)!=0;if(d)if(b?(f=+h[d+24>>3],i=+h[d+32>>3],e=+h[a+24>>3],g=+h[a+32>>3],!(f>e)):0)if(!(f<e))if(i>g)a=-1;else a=i<g&1;else a=1;else a=-1;else a=b&1;return a|0}function Rg(a){a=a|0;var b=0,d=0,e=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;d=c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;e=c[d+232>>2]|0;a=c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;b=c[a+232>>2]|0;if((e|0)<=(b|0))if((e|0)<(b|0))a=1;else a=(c[d+236>>2]|0)<(c[a+236>>2]|0)&1;else a=0;return a|0}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+180|0;g=(c[b+16>>2]|0)+172|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=Tg(a,f,b,e)|0;l=d;return b|0}function Tg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[b+4>>2]|0;a:do if((f|0)>0?(g=c[e+4>>2]|0,(g|0)>0):0)if((f|0)<(g|0)){f=c[b>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)==(d|0))break;else e=e+1|0}}else{f=c[e>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)==(a|0))break;else e=e+1|0}}else b=0;while(0);return b|0}function Ug(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+188|0;g=(c[b+16>>2]|0)+196|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=Tg(a,f,b,e)|0;l=d;return b|0}function Vg(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+180>>2]|0;if(!b)b=ww((c[d+184>>2]<<2)+8|0)|0;else b=yw(b,(c[d+184>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+180>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;d=c[f+180>>2]|0;f=f+184|0;b=c[f>>2]|0;c[f>>2]=b+1;c[d+(b<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=a+-48|0;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=ww((c[b+176>>2]<<2)+8|0)|0;else b=yw(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;b=b+176|0;f=c[b>>2]|0;c[b>>2]=f+1;c[d+(f<<2)>>2]=a;f=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;return a|0}function Wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+4|0;f=c[e>>2]|0;d=0;while(1){if((d|0)>=(f|0))break;g=c[a>>2]|0;h=g+(d<<2)|0;if((c[h>>2]|0)==(b|0)){i=4;break}else d=d+1|0}if((i|0)==4){i=f+-1|0;c[e>>2]=i;c[h>>2]=c[g+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=0}return}function Xg(a){a=a|0;if(!a)ma(78393,78403,117,78412);else{Wg((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180|0,a);Wg((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172|0,a);return}}function Yg(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+204>>2]|0;if(!b)b=ww((c[d+208>>2]<<2)+8|0)|0;else b=yw(b,(c[d+208>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+204>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[f+204>>2]|0;f=f+208|0;d=c[f>>2]|0;c[f>>2]=d+1;c[b+(d<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+204>>2]|0)+(c[e+208>>2]<<2)>>2]=0;return}function Zg(a){a=a|0;_g(a,(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+204|0);return}function _g(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+4|0;e=c[h>>2]|0;f=c[b>>2]|0;d=0;while(1){if((d|0)>=(e|0)){g=4;break}if((c[f+(d<<2)>>2]|0)==(a|0))break;else d=d+1|0}if((g|0)==4){if(!f)d=ww((e<<2)+8|0)|0;else d=yw(f,(e<<2)+8|0)|0;c[b>>2]=d;f=c[h>>2]|0;g=f+1|0;c[h>>2]=g;c[d+(f<<2)>>2]=a;c[(c[b>>2]|0)+(g<<2)>>2]=0}return}function $g(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=vw(96)|0;g=n+48|0;c[g>>2]=c[g>>2]|3;c[n>>2]=c[n>>2]&-4|2;h=vw(176)|0;m=n+16|0;c[m>>2]=h;c[((c[n>>2]&3|0)==3?n:g)+40>>2]=d;j=n+-48|0;c[((c[n>>2]&3|0)==2?n:j)+40>>2]=e;a[h+112>>0]=1;if(!f){c[h+156>>2]=1;b[h+154>>1]=1;b[h+168>>1]=1;b[h+170>>1]=1}else{c[n>>2]=c[n>>2]&15|c[f>>2]&-16;c[g>>2]=c[g>>2]&15|c[f>>2]&-16;l=f+16|0;i=c[l>>2]|0;b[h+168>>1]=b[i+168>>1]|0;b[h+154>>1]=b[i+154>>1]|0;c[h+156>>2]=c[i+156>>2];b[h+170>>1]=b[i+170>>1]|0;d=c[((c[n>>2]&3|0)==3?n:g)+40>>2]|0;e=c[f>>2]&3;k=f+48|0;if((d|0)!=(c[((e|0)==3?f:k)+40>>2]|0)){g=f+-48|0;if((d|0)==(c[((e|0)==2?f:g)+40>>2]|0)){h=h+16|0;d=i+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=h+16|0;d=i+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));g=f+-48|0}d=c[((c[n>>2]&3|0)==2?n:j)+40>>2]|0;e=c[f>>2]&3;if((d|0)!=(c[((e|0)==2?f:g)+40>>2]|0)){if((d|0)==(c[((e|0)==3?f:k)+40>>2]|0)){h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}d=(c[l>>2]|0)+172|0;if(!(c[d>>2]|0))c[d>>2]=n;c[(c[m>>2]|0)+116>>2]=f}return n|0}function ah(a,b,c){a=a|0;b=b|0;c=c|0;return Vg($g(a,b,c)|0)|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;f=c[a>>2]|0;d=c[b+16>>2]|0;c[d+164>>2]=f;e=f;if(f|0)c[(c[e+16>>2]|0)+168>>2]=b;c[a>>2]=b;c[d+168>>2]=0;if((e|0)==(b|0))ma(78429,78403,215,78445);else return}function ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((a|0)==(b|0))ma(78455,78403,220,78462);f=c[b+16>>2]|0;d=f+164|0;if(c[d>>2]|0)ma(78475,78403,221,78462);e=(c[a+16>>2]|0)+164|0;c[d>>2]=c[e>>2];d=c[e>>2]|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=b;c[f+168>>2]=a;c[e>>2]=b;return}function dh(a,b){a=a|0;b=b|0;var d=0,e=0;if(!(eh(a,b)|0))ma(78494,78403,231,78515);b=c[b+16>>2]|0;d=c[b+164>>2]|0;e=d;b=b+168|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=c[b>>2];b=c[b>>2]|0;if(!b)c[(c[a+16>>2]|0)+192>>2]=e;else c[(c[b+16>>2]|0)+164>>2]=e;return}function eh(a,b){a=a|0;b=b|0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if((a|0)==0|(a|0)==(b|0))break;a=(c[a+16>>2]|0)+164|0}return a|0}function fh(b){b=b|0;var d=0,e=0,f=0,g=0;d=vw(64)|0;c[d>>2]=c[d>>2]&-4|1;e=d+16|0;c[e>>2]=vw(304)|0;c[d+24>>2]=so(b)|0;g=c[e>>2]|0;a[g+156>>0]=1;h[g+96>>3]=1.0;h[g+88>>3]=1.0;h[g+80>>3]=1.0;c[g+216>>2]=1;c[g+176>>2]=0;g=vw(20)|0;f=c[e>>2]|0;c[f+172>>2]=g;c[f+184>>2]=0;f=vw(20)|0;c[(c[e>>2]|0)+180>>2]=f;bh(b,d);b=(c[b+16>>2]|0)+232|0;c[b>>2]=(c[b>>2]|0)+1;return d|0}function gh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=d+48|0;e=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[e+188>>2]|0;if(!f)e=ww((c[e+192>>2]<<2)+8|0)|0;else e=yw(f,(c[e+192>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0)+188>>2]=e;h=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[h+188>>2]|0;h=h+192|0;e=c[h>>2]|0;c[h>>2]=e+1;c[f+(e<<2)>>2]=d;g=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;c[(c[g+188>>2]|0)+(c[g+192>>2]<<2)>>2]=0;g=d+-48|0;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;if(!f)e=ww((c[e+200>>2]<<2)+8|0)|0;else e=yw(f,(c[e+200>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+196>>2]=e;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;e=e+200|0;h=c[e>>2]|0;c[e>>2]=h+1;c[f+(h<<2)>>2]=d;h=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;c[(c[h+196>>2]|0)+(c[h+200>>2]<<2)>>2]=0;a[(c[b+16>>2]|0)+240>>0]=1;a[(c[(Vf(b)|0)+16>>2]|0)+240>>0]=1;return}function hh(a){a=a|0;var b=0,d=0;if(!a)ma(78393,78403,269,78532);b=c[(c[a+16>>2]|0)+116>>2]|0;if(b|0?(d=(c[b+16>>2]|0)+172|0,(c[d>>2]|0)==(a|0)):0)c[d>>2]=0;Wg((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+188|0,a);Wg((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+196|0,a);return}function ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=(c[a+16>>2]|0)+172|0;e=c[d>>2]|0;do if((e|0)!=(b|0))if(!e){c[d>>2]=b;jh(a,b);break}else ma(80440,78403,340,78570);else _l(0,78549,f)|0;while(0);l=f;return}function jh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0;f=(c[d+16>>2]|0)+170|0;i=c[a+16>>2]|0;a=b[i+170>>1]|0;if((e[f>>1]|0)<(a&65535))b[f>>1]=a;g=i+168|0;h=i+154|0;f=i+156|0;a=d;while(1){if(!a)break;d=c[a+16>>2]|0;i=d+168|0;b[i>>1]=(e[i>>1]|0)+(e[g>>1]|0);i=d+154|0;b[i>>1]=(e[i>>1]|0)+(e[h>>1]|0);i=d+156|0;c[i>>2]=(c[i>>2]|0)+(c[f>>2]|0);a=c[d+172>>2]|0}return}function kh(d){d=d|0;var e=0,f=0,g=0,h=0;f=d+16|0;e=c[(c[f>>2]|0)+172>>2]|0;a:while(1){if(!e)break;lh(e,d);h=c[e+16>>2]|0;g=c[h+172>>2]|0;if(!(b[h+168>>1]|0))mh(e);while(1){if((a[(c[e+16>>2]|0)+112>>0]|0)!=1){e=g;continue a}e=c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){e=g;continue a}if((c[e+184>>2]|0)!=1){e=g;continue a}e=c[c[e+180>>2]>>2]|0;lh(e,d)}}c[(c[f>>2]|0)+172>>2]=0;return}function lh(a,d){a=a|0;d=d|0;var f=0;f=c[d+16>>2]|0;d=c[a+16>>2]|0;a=d+168|0;b[a>>1]=(e[a>>1]|0)-(e[f+168>>1]|0);a=d+154|0;b[a>>1]=(e[a>>1]|0)-(e[f+154>>1]|0);d=d+156|0;c[d>>2]=(c[d>>2]|0)-(c[f+156>>2]|0);return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)ma(78393,78403,128,78583);g=a+48|0;d=0;while(1){b=c[a>>2]|0;e=(c[(c[((b&3|0)==3?a:g)+40>>2]|0)+16>>2]|0)+180|0;f=c[(c[e>>2]|0)+(d<<2)>>2]|0;if(!f)break;if((f|0)==(a|0))Wg(e,a);d=d+1|0}g=a+-48|0;f=0;while(1){d=(c[(c[((b&3|0)==2?a:g)+40>>2]|0)+16>>2]|0)+172|0;e=c[(c[d>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)==(a|0)){Wg(d,a);b=c[a>>2]|0}f=f+1|0}return}function nh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=l;l=l+1040|0;n=p+1032|0;o=p;m=p+8|0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;i=c[d+196>>2]|0;h=i+(j<<6)|0;i=i+(j<<6)+4|0;g=0;d=0;while(1){if((g|0)>=(c[h>>2]|0))break;e=c[(c[i>>2]|0)+(g<<2)>>2]|0;f=e+16|0;if(c[(c[f>>2]|0)+112>>2]|0){if(!d){a[n>>0]=a[17644]|0;a[n+1>>0]=a[17645]|0;a[n+2>>0]=a[17646]|0;a[n+3>>0]=a[17647]|0;d=gn(78605,n,0)|0}c[o>>2]=g;pL(m,122187,o)|0;t=no(d,m,1)|0;No(t,78608,24,1)|0;q=c[(c[f>>2]|0)+180>>2]|0;r=c[q>>2]|0;r=c[(c[(c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;q=c[q+4>>2]|0;q=c[(c[(c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;s=(r|0)>(q|0);f=c[t+16>>2]|0;c[f+12>>2]=s?q:r;c[f+16>>2]=s?r:q;c[f+20>>2]=e}g=g+1|0}if(d|0){if((mn(d)|0)>1)oh(d,h);ln(d)|0}j=j+1|0;d=c[k>>2]|0}l=p;return}function oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=0;h=co(a)|0;a:while(1){if(!h)break;i=eo(a,h)|0;j=h+16|0;g=i;while(1){if(!g){h=i;continue a}f=c[g+16>>2]|0;e=c[j>>2]|0;if((c[f+16>>2]|0)>(c[e+12>>2]|0)){if((c[e+16>>2]|0)<=(c[f+12>>2]|0))an(a,h,g,0,1)|0}else{an(a,g,h,0,1)|0;d=1}g=eo(a,g)|0}}do if(d|0){h=Ip(a,78613,1)|0;j=vw((mn(a)|0)<<2)|0;i=vw((mn(a)|0)<<2)|0;f=b+4|0;e=co(a)|0;b:while(1){if(!e){d=23;break}if((c[(c[e+16>>2]|0)+8>>2]|0)==0?on(a,e,1,1)|0:0){c:do if(ph(a,e,h,i)|0){g=mn(h)|0;if((qh(a,h,j)|0)!=(g|0)){d=17;break b}rL(i,g,4,12);d=0;while(1){if((d|0)>=(g|0))break c;b=i+(d<<2)|0;k=c[j+(d<<2)>>2]|0;c[(c[k+16>>2]|0)+236>>2]=c[b>>2];c[(c[f>>2]|0)+(c[b>>2]<<2)>>2]=k;d=d+1|0}}while(0);sh(h)}e=eo(a,e)|0}if((d|0)==17)ma(78618,78628,265,78639);else if((d|0)==23){_I(j);break}}while(0);return}function ph(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=c[b+16>>2]|0;c[h+8>>2]=1;h=c[(c[(c[h+20>>2]|0)+16>>2]|0)+236>>2]|0;c[e+((mn(d)|0)<<2)>>2]=h;io(d,b,1)|0;h=Pm(a,b)|0;f=0;while(1){if(!h)break;j=c[h>>2]&3;g=c[((j|0)==2?h:h+-48|0)+40>>2]|0;i=c[g+16>>2]|0;f=f+((c[(c[(c[i+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[(c[(c[((j|0)==3?h:h+48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[i+8>>2]|0))f=(ph(a,g,d,e)|0)+f|0;h=Rm(a,h)|0}h=Sm(a,b)|0;while(1){if(!h)break;i=c[h>>2]&3;g=c[((i|0)==3?h:h+48|0)+40>>2]|0;j=c[g+16>>2]|0;f=f+((c[(c[(c[(c[(c[((i|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[j+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[j+8>>2]|0))f=(ph(a,g,d,e)|0)+f|0;h=Tm(a,h)|0}return f|0}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=0;while(1){e=th(a,b)|0;if(!e)break;c[d+(f<<2)>>2]=c[(c[e+16>>2]|0)+20>>2];po(b,e)|0;e=Pm(a,e)|0;while(1){if(!e)break;g=Rm(a,e)|0;dn(a,e)|0;e=g}f=f+1|0}return f|0}function rh(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function sh(a){a=a|0;var b=0,c=0;b=co(a)|0;while(1){if(!b)break;c=eo(a,b)|0;po(a,b)|0;b=c}return}function th(a,b){a=a|0;b=b|0;var c=0;c=co(b)|0;while(1){if(!c){c=0;break}if(!(on(a,c,1,0)|0))break;c=eo(b,c)|0}return c|0}function uh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;vh(b);i=b+16|0;f=0;e=0;while(1){if((f|0)>=(c[(c[i>>2]|0)+220>>2]|0))break;wh(b,f);f=f+1|0;e=(xh(b,0,d)|0)+e|0}yh(b);h=1;while(1){f=c[i>>2]|0;g=c[f+180>>2]|0;if((h|0)>(g|0))break;g=(zh(c[(c[f+184>>2]|0)+(h<<2)>>2]|0,d)|0)+e|0;h=h+1|0;e=g}do if((g|0)>0){f=Im(b,78653)|0;if(f|0?(IA(f)|0)<<24>>24==0:0)break;Yk(b);a[173893]=1;e=xh(b,2,d)|0}while(0);Ah(b,e);return}function vh(d){d=d|0;var e=0;if(0)xA();a[173893]=0;c[41927]=d;e=((nn(Vf(d)|0)|0)<<2)+4|0;c[41926]=vw(e)|0;c[41925]=vw(e)|0;qi(d);e=d+16|0;if(b[(c[e>>2]|0)+136>>1]&16)ri(d);Fk(d);tl(d,1);si(d);Hh(d);e=c[e>>2]|0;c[41928]=b[e+236>>1];c[41929]=b[e+238>>1];return}function wh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;a=c[a+16>>2]|0;c[a+192>>2]=c[(c[a+216>>2]|0)+(d<<2)>>2];a:do if((d|0)>0){d=b[a+238>>1]|0;e=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(d|0))break a;f=c[e>>2]|0;g=f+(a<<6)+4|0;f=f+(a<<6)|0;c[g>>2]=(c[g>>2]|0)+(c[f>>2]<<2);c[f>>2]=0;a=a+1|0}}while(0);return}function xh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;n=o;if((b|0)>1){e=Xh(0)|0;Yh(a)}else e=2147483647;m=c[13918]|0;k=b;f=0;b=e;while(1){if((k|0)>=3)break;f=c[42180]|0;if((k|0)==2)if((e|0)>(b|0)){_h(a);e=b}else e=b;else{e=(f|0)<4?f:4;if((Vf(a)|0)==(a|0))Zh(a,k);if(!k)Ih(a);Jh(a);g=Xh(0)|0;if((g|0)>(b|0)){f=e;e=g}else{Yh(a);f=e;e=g;b=g}}g=0;j=0;while(1){if((j|0)>=(f|0))break;if(0){c[n>>2]=k;c[n+4>>2]=j;c[n+8>>2]=g;c[n+12>>2]=e;c[n+16>>2]=b;zL(m,79046,n)|0}i=g+1|0;if((e|0)==0|(g|0)>=(c[41930]|0))break;$h(a,j);e=Xh(0)|0;if((e|0)>(b|0))g=i;else{Yh(a);g=+h[20878]*+(b|0)>+(e|0)?0:i;b=e}j=j+1|0}if(!e){e=0;break}else k=k+1|0}if((e|0)>(b|0))_h(a);if((b|0)>0){ai(a,0);e=Xh(0)|0}else e=b;a:do if(d|0){b=0;while(1){if((b|0)>=(f|0))break a;bi(a);b=b+1|0}}while(0);l=o;return e|0}function yh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;Wh(a);k=a+16|0;d=c[k>>2]|0;m=c[13918]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;e=c[d+196>>2]|0;f=c[e+(j<<6)+8>>2]|0;c[e+(j<<6)>>2]=f;g=c[e+(j<<6)+12>>2]|0;c[e+(j<<6)+4>>2]=g;i=0;while(1){if((i|0)>=(f|0))break;h=c[g+(i<<2)>>2]|0;if(!h){o=6;break}c[(c[h+16>>2]|0)+236>>2]=i;i=i+1|0}if((o|0)==6){o=0;if(0){e=Dn(a)|0;d=c[(c[(c[k>>2]|0)+196>>2]|0)+(j<<6)>>2]|0;c[n>>2]=e;c[n+4>>2]=j;c[n+8>>2]=i;c[n+12>>2]=d;zL(m,78996,n)|0;d=c[k>>2]|0;e=c[d+196>>2]|0}c[e+(j<<6)>>2]=i}j=j+1|0}l=p;return}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;Sk(a);Hh(a);Ih(a);Jh(a);f=a+16|0;d=xh(a,2,b)|0;e=1;while(1){g=c[f>>2]|0;if((e|0)>(c[g+180>>2]|0))break;d=(zh(c[(c[g+184>>2]|0)+(e<<2)>>2]|0,b)|0)+d|0;e=e+1|0}Kh(a);return d|0}function Ah(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+16|0;p=q;f=c[41925]|0;if(f|0){_I(f);c[41925]=0}f=c[41926]|0;if(f|0){_I(f);c[41926]=0}o=d+16|0;f=1;while(1){g=c[o>>2]|0;if((f|0)>(c[g+180>>2]|0))break;Bh(c[(c[g+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0}n=b[g+236>>1]|0;f=g;while(1){if((n|0)>(b[f+238>>1]|0))break;else m=0;while(1){f=c[f+196>>2]|0;if((m|0)>=(c[f+(n<<6)>>2]|0))break;k=(c[(c[f+(n<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;f=c[k>>2]|0;c[f+236>>2]=m;f=c[f+188>>2]|0;a:do if(f|0){g=0;while(1){i=c[f+(g<<2)>>2]|0;if(!i)break a;j=i+16|0;if((a[(c[j>>2]|0)+112>>0]|0)==4){hh(i);_I(c[j>>2]|0);_I(i);g=g+-1|0;f=c[(c[k>>2]|0)+188>>2]|0}g=g+1|0}}while(0);m=m+1|0;f=c[o>>2]|0}Ch(c[f+(n<<6)+56>>2]|0);n=n+1|0;f=c[o>>2]|0}if(0){o=c[13918]|0;d=Dn(d)|0;r=+yA();c[p>>2]=d;c[p+4>>2]=e;h[p+8>>3]=r;zL(o,78664,p)|0}l=q;return}function Bh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+16|0;d=1;while(1){f=c[g>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Bh(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a:do if(c[f+268>>2]|0){e=b[f+236>>1]|0;d=f;while(1){if((e|0)>(b[d+238>>1]|0))break a;j=c[(c[d+268>>2]|0)+(e<<2)>>2]|0;i=Dh(a,j,-1)|0;j=Dh(a,j,1)|0;c[(c[(c[g>>2]|0)+268>>2]|0)+(e<<2)>>2]=i;k=c[(c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0;i=c[(c[i+16>>2]|0)+236>>2]|0;f=c[g>>2]|0;h=c[f+196>>2]|0;c[h+(e<<6)+4>>2]=k+(i<<2);c[h+(e<<6)>>2]=(c[(c[j+16>>2]|0)+236>>2]|0)+1-i;e=e+1|0;d=f}}while(0);return}function Ch(a){a=a|0;if(a|0){_I(c[a+8>>2]|0);_I(a)}return}function Dh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=b;while(1){b=Eh(b,c)|0;if(!b)break;if(Fh(a,b)|0){d=b;continue}e=(Gh(a,b)|0)==0;d=e?d:b}return d|0}function Eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a)ma(78703,78628,1023,78705);if((b|0)<0){a=c[a+16>>2]|0;e=c[a+236>>2]|0;if((e|0)>0){a=(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+-1|0;f=7}else g=0}else{a=c[a+16>>2]|0;e=c[a+236>>2]|0;a=(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+1|0;f=7}if((f|0)==7){a=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(a)if((O((c[(c[a+16>>2]|0)+236>>2]|0)-e|0,b)|0)>0)g=a;else ma(78714,78628,1029,78705);else g=0}return g|0}function Fh(b,d){b=b|0;d=d|0;if(!(a[(c[d+16>>2]|0)+156>>0]|0))b=(Bo(b,d)|0)!=0&1;else b=0;return b|0}function Gh(b,d){b=b|0;d=d|0;var e=0,f=0;d=c[d+16>>2]|0;if(((a[d+156>>0]|0)==1?(c[d+176>>2]|0)==1:0)?(c[d+184>>2]|0)==1:0){d=c[d+180>>2]|0;while(1){d=c[d>>2]|0;e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}if(Bo(b,d)|0)d=1;else f=7}else f=7;if((f|0)==7)d=0;return d|0}function Hh(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[42184]|0;a:do if((d|0)!=0|(c[42205]|0)!=0){d=FA(b,d,0)|0;if(d|0){switch(a[d>>0]|0){case 0:break a;case 111:{if(!(xJ(d,78916)|0)){Rh(b,1);break a}break}case 105:{if(!(xJ(d,83705)|0)){Rh(b,0);break a}break}default:{}}c[e>>2]=d;_l(1,78920,e)|0;break}d=Jp(b)|0;while(1){if(!d)break;if(!(Cj(d)|0))Hh(d);d=Kp(d)|0}if(c[42205]|0)Sh(b)}while(0);l=f;return}function Ih(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;e=c[k>>2]|0;j=b[e+236>>1]|0;while(1){if((j|0)>(b[e+238>>1]|0))break;else{f=0;i=0}while(1){g=c[e+196>>2]|0;h=c[g+(j<<6)>>2]|0;if((i|0)>=(h|0))break;g=c[(c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;a[g+158>>0]=0;a[g+157>>0]=0;c[g+284>>2]=i;if((f|0)==0&(c[g+192>>2]|0)>0){f=Ph(h,h)|0;e=c[k>>2]|0;c[(c[e+196>>2]|0)+(j<<6)+56>>2]=f;f=1}i=i+1|0}a:do if(f){i=0;f=h;while(1){if((i|0)>=(f|0))break a;h=c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0;if(!(a[(c[h+16>>2]|0)+157>>0]|0)){Qh(d,h);e=c[k>>2]|0;f=c[e+196>>2]|0;g=f;f=c[f+(j<<6)>>2]|0}i=i+1|0}}while(0);j=j+1|0}return}function Jh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=d+16|0;e=c[s>>2]|0;if(a[e+240>>0]|0){h=0;r=b[e+236>>1]|0;q=0;i=0;a:while(1){if((r|0)>(b[e+238>>1]|0))break;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if(!g){g=q;f=i}else{f=c[f+(r<<6)+4>>2]|0;o=c[(c[(c[f>>2]|0)+16>>2]|0)+236>>2]|0;e=0;while(1){if((e|0)>=(g|0))break;a[(c[(c[f+(e<<2)>>2]|0)+16>>2]|0)+157>>0]=0;e=e+1|0}e=(e<<2)+4|0;if(!h)p=ww(e)|0;else p=yw(i,e)|0;m=0;n=0;while(1){e=c[s>>2]|0;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if((g|0)<=(n|0))break;j=c[(c[f+(r<<6)+4>>2]|0)+(((c[e+116>>2]&1|0)==0?g+~n|0:n)<<2)>>2]|0;l=j+16|0;e=0;k=0;while(1){i=c[l>>2]|0;if((e|0)>=(c[i+200>>2]|0)){f=0;g=0;e=i;break}i=k+((Lh(d,c[(c[i+196>>2]|0)+(e<<2)>>2]|0)|0)!=0&1)|0;e=e+1|0;k=i}while(1){if((g|0)>=(c[e+192>>2]|0))break;i=f+((Lh(d,c[(c[e+188>>2]|0)+(g<<2)>>2]|0)|0)!=0&1)|0;f=i;g=g+1|0;e=c[l>>2]|0}if(f|k)if((k|0)==0&(a[e+157>>0]|0)==0)e=(Mh(d,j,p+(m<<2)|0,r)|0)+m|0;else e=m;else{c[p+(m<<2)>>2]=j;e=m+1|0}m=e;n=n+1|0}b:do if(m){c:do if(!(c[e+116>>2]&1)){f=p;e=p+(m<<2)|0;while(1){e=e+-4|0;if(f>>>0>=e>>>0){g=0;break c}n=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=n;f=f+4|0}}else g=0;while(0);while(1){e=c[s>>2]|0;i=c[e+196>>2]|0;f=c[i+(r<<6)>>2]|0;if((g|0)>=(f|0)){m=0;g=i;break}n=c[p+(g<<2)>>2]|0;c[(c[i+(r<<6)+4>>2]|0)+(g<<2)>>2]=n;c[(c[n+16>>2]|0)+236>>2]=g+o;g=g+1|0}while(1){if((m|0)>=(f|0))break b;l=(c[(c[g+(r<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;i=c[(c[l>>2]|0)+188>>2]|0;if(i){k=0;f=i;while(1){g=c[f+(k<<2)>>2]|0;e=c[s>>2]|0;if(!g)break;j=c[g>>2]&3;i=c[(c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=c[(c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;if(!(c[e+116>>2]&1))if((i|0)<(j|0))t=36;else e=k;else if((i|0)>(j|0))t=36;else e=k;if((t|0)==36){t=0;if(Lh(d,g)|0){t=37;break a}hh(g);Nh(d,g);e=k+-1|0;f=c[(c[l>>2]|0)+188>>2]|0}k=e+1|0}f=c[e+196>>2]|0;g=f;f=c[f+(r<<6)>>2]|0}m=m+1|0}}while(0);a[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(r<<6)+49>>0]=0;h=p;g=p;f=p}r=r+1|0;q=g;i=f}if((t|0)==37)ma(78762,78628,1561,78801);if(h|0)_I(q)}return}function Kh(a){a=a|0;var d=0,e=0;e=a+16|0;a=c[e>>2]|0;a:do if(c[a+268>>2]|0){d=b[a+236>>1]|0;while(1){if((d|0)>(b[a+238>>1]|0))break a;c[(c[a+268>>2]|0)+(d<<2)>>2]=c[c[(c[a+196>>2]|0)+(d<<6)+4>>2]>>2];d=d+1|0;a=c[e>>2]|0}}while(0);return}function Lh(a,b){a=a|0;b=b|0;if((c[(c[b+16>>2]|0)+156>>2]|0)!=0?(Oh(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)!=0:0)a=(Oh(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)!=0&1;else a=0;return a|0}function Mh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+16|0;g=c[l>>2]|0;a[g+157>>0]=1;a:do if((c[g+192>>2]|0)>0){h=0;j=0;while(1){i=c[(c[g+188>>2]|0)+(j<<2)>>2]|0;if(!i)break a;if((Lh(b,i)|0)!=0?(k=c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,(a[(c[k+16>>2]|0)+157>>0]|0)==0):0)h=(Mh(b,k,e+(h<<2)|0,f)|0)+h|0;j=j+1|0;g=c[l>>2]|0}}else h=0;while(0);if((c[g+232>>2]|0)==(f|0)){c[e+(h<<2)>>2]=d;return h+1|0}else ma(78814,78628,1490,78830);return 0}function Nh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=c[d>>2]&3;j=c[((i|0)==2?d:d+-48|0)+40>>2]|0;f=c[(c[j+16>>2]|0)+188>>2]|0;a:do if(!f){e=d+48|0;m=15}else{l=d+48|0;g=((i|0)==3?d:l)+40|0;e=0;while(1){h=c[f+(e<<2)>>2]|0;if(!h){e=l;m=15;break a}if((c[((c[h>>2]&3|0)==2?h:h+-48|0)+40>>2]|0)==(c[g>>2]|0))break;else e=e+1|0}ih(d,h);e=(c[d+16>>2]|0)+172|0;if(!(c[e>>2]|0))c[e>>2]=h;e=c[h+16>>2]|0;if((a[e+112>>0]|0)==4?(k=e+116|0,(c[k>>2]|0)==0):0)c[k>>2]=d;e=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;f=c[e+204>>2]|0;if(!f)e=ww((c[e+208>>2]<<2)+8|0)|0;else e=yw(f,(c[e+208>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0)+204>>2]=e;i=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;j=c[i+204>>2]|0;i=i+208|0;k=c[i>>2]|0;c[i>>2]=k+1;c[j+(k<<2)>>2]=d;d=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;c[(c[d+204>>2]|0)+(c[d+208>>2]<<2)>>2]=0}while(0);if((m|0)==15){m=$g(j,c[((i|0)==3?d:e)+40>>2]|0,d)|0;l=c[d+16>>2]|0;d=c[m+16>>2]|0;a[d+112>>0]=(a[l+112>>0]|0)==4?4:3;c[d+96>>2]=c[l+96>>2];gh(b,m)}return}function Oh(a,b){a=a|0;b=b|0;var c=0;c=Fh(a,b)|0;return Gh(a,b)|0|c|0}function Ph(a,b){a=a|0;b=b|0;var d=0;d=vw(12)|0;c[d>>2]=a;c[d+4>>2]=b;c[d+8>>2]=vw(O(b,a)|0)|0;return d|0}function Qh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=d+16|0;l=c[o>>2]|0;k=c[(c[(c[b+16>>2]|0)+196>>2]|0)+(c[l+232>>2]<<6)+56>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=(c[(c[(Vf(b)|0)+16>>2]|0)+180>>2]|0)>0;e=c[o>>2]|0;f=c[e+188>>2]|0;a:do if(f){m=k+4|0;n=k+8|0;d=0;b:while(1){j=c[f+(d<<2)>>2]|0;if(!j){p=e;break a}if(l){if((Bo(b,c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)|0)!=0?(Bo(b,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0)!=0:0)q=7}else q=7;do if((q|0)==7){q=0;h=j+16|0;if(c[(c[h>>2]|0)+156>>2]|0){e=c[j>>2]&3;g=j+-48|0;r=c[(c[((e|0)==2?j:g)+40>>2]|0)+16>>2]|0;i=c[r+284>>2]|0;f=(i|0)<(c[k>>2]|0);if((a[r+158>>0]|0)==1){if(!f){q=10;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=12;break b}a[(c[n>>2]|0)+((O(f,i)|0)+e)>>0]=1;hh(j);d=d+-1|0;if((a[(c[h>>2]|0)+112>>0]|0)==4)break;Nh(b,j);break}else{if(!f){q=16;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=18;break b}a[(c[n>>2]|0)+((O(f,e)|0)+i)>>0]=1;e=c[((c[j>>2]&3|0)==2?j:g)+40>>2]|0;if(a[(c[e+16>>2]|0)+157>>0]|0)break;Qh(b,e);break}}}while(0);f=c[o>>2]|0;d=d+1|0;e=f;f=c[f+188>>2]|0}if((q|0)==10)ma(78840,78628,1251,78872);else if((q|0)==12)ma(78884,78628,1252,78872);else if((q|0)==16)ma(78840,78628,1260,78872);else if((q|0)==18)ma(78884,78628,1261,78872)}else p=e;while(0);a[p+158>>0]=0;return}function Rh(a,b){a=a|0;b=b|0;var c=0;c=co(a)|0;while(1){if(!c)break;Th(a,c,b);c=eo(a,c)|0}return}function Sh(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=co(b)|0;while(1){if(!d)break;e=FA(d,c[42205]|0,0)|0;a:do if(e|0){switch(a[e>>0]|0){case 0:break a;case 111:{if(!(xJ(e,78916)|0)){Th(b,d,1);break a}break}case 105:{if(!(xJ(e,83705)|0)){Th(b,d,0);break a}break}default:{}}h=Dn(d)|0;c[f>>2]=e;c[f+4>>2]=h;_l(1,78951,f)|0}while(0);d=eo(b,d)|0}l=g;return}function Th(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[41926]|0;h=d+16|0;f=c[h>>2]|0;a:do if(!(c[f+212>>2]|0)){i=(e|0)!=0;b:do if(i){g=0;d=0;e=f;while(1){f=c[(c[e+180>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(Uh(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}else{g=0;d=0;e=f;while(1){f=c[(c[e+172>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(Uh(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}while(0);if((d|0)>=2){c[j+(d<<2)>>2]=0;rL(j,d,4,13);h=i?2:3;g=i?-1:1;f=1;while(1){d=c[j+(f<<2)>>2]|0;if(!d)break a;e=c[j+(f+-1<<2)>>2]|0;e=c[((c[e>>2]&3|0)==(h|0)?e:e+(g*48|0)|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==(h|0)?d:d+(g*48|0)|0)+40>>2]|0;if(Ug(e,d)|0)break a;i=$g(e,d,0)|0;a[(c[i+16>>2]|0)+112>>0]=4;gh(b,i);f=f+1|0}}}while(0);return}function Uh(a){a=a|0;var b=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;return (c[(c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)!=(c[(c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)|0}function Vh(a,b){a=a|0;b=b|0;return ((c[c[a>>2]>>2]|0)>>>4)-((c[c[b>>2]>>2]|0)>>>4)|0}function Wh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[a+16>>2]|0;g=f+220|0;h=c[g>>2]|0;if((h|0)>=2){i=f+216|0;a=0;e=0;while(1){if((e|0)>=(h|0))break;d=c[(c[i>>2]|0)+(e<<2)>>2]|0;if(a|0)c[(c[a+16>>2]|0)+164>>2]=d;j=c[d+16>>2]|0;c[j+168>>2]=a;a=d;d=j;while(1){d=c[d+164>>2]|0;if(!d)break;a=d;d=c[d+16>>2]|0}e=e+1|0}c[g>>2]=1;c[f+192>>2]=c[c[f+216>>2]>>2];b[f+236>>1]=c[41928];b[f+238>>1]=c[41929]}return}function Xh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[41927]|0;j=i+16|0;f=c[j>>2]|0;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>=(b[f+238>>1]|0))break;d=c[f+196>>2]|0;if(!(a[d+(h<<6)+49>>0]|0)){e=oi(i,h)|0;d=c[j>>2]|0;f=c[d+196>>2]|0;c[f+(h<<6)+52>>2]=e;a[f+(h<<6)+49>>0]=1}else{e=c[d+(h<<6)+52>>2]|0;d=f}g=e+g|0;h=h+1|0;f=d}return g|0}function Yh(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0;a=c[a+16>>2]|0;g=b[a+238>>1]|0;i=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(g|0))break;f=c[i>>2]|0;e=c[f+(a<<6)>>2]|0;f=f+(a<<6)+4|0;d=0;while(1){if((d|0)>=(e|0))break;j=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;h[j+16>>3]=+(c[j+236>>2]|0);d=d+1|0}a=a+1|0}return}function Zh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;m=r;n=d+16|0;o=zA(c[(c[n>>2]|0)+232>>2]|0)|0;j=c[n>>2]|0;f=j+192|0;g=f;while(1){g=c[g>>2]|0;if(!g)break;g=c[g+16>>2]|0;a[g+157>>0]=0;g=g+164|0}h=b[j+238>>1]|0;i=j+196|0;g=b[j+236>>1]|0;while(1){if((g|0)>(h|0))break;c[(c[i>>2]|0)+(g<<6)>>2]=0;g=g+1|0}i=(e|0)==0;while(1){g=c[f>>2]|0;if(!g)break;h=g+16|0;f=c[h>>2]|0;if((c[c[(i?f+172|0:f+180|0)>>2]>>2]|0)==0?(k=f+157|0,(a[k>>0]|0)==0):0){a[k>>0]=1;BA(o,g);while(1){f=CA(o)|0;if(!f)break;if((a[(c[f+16>>2]|0)+159>>0]|0)==7){Xk(d,f,e,o);continue}else{mi(d,f);ni(o,f,e);continue}}f=c[h>>2]|0}f=f+164|0}if(CA(o)|0)_l(1,79159,m)|0;f=c[n>>2]|0;j=b[f+236>>1]|0;while(1){if((j|0)>(b[f+238>>1]|0))break;a[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(j<<6)+49>>0]=0;if((c[f+116>>2]&1|0)!=0?(p=c[f+196>>2]|0,q=c[p+(j<<6)>>2]|0,(q|0)>0):0){g=c[p+(j<<6)+4>>2]|0;h=q+-1|0;i=(h|0)/2|0;f=0;while(1){if((f|0)>(i|0))break;gi(c[g+(f<<2)>>2]|0,c[g+(h-f<<2)>>2]|0);f=f+1|0}f=c[n>>2]|0}j=j+1|0}if((Vf(d)|0)==(d|0)?(Xh(0)|0)>0:0)ai(d,0);AA(o);l=r;return}function _h(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;d=c[n>>2]|0;f=b[d+236>>1]|0;e=b[d+238>>1]|0;l=e<<16>>16;m=d+196|0;g=f;while(1){if((g|0)>(l|0))break;k=c[m>>2]|0;j=c[k+(g<<6)>>2]|0;k=k+(g<<6)+4|0;i=0;while(1){if((i|0)>=(j|0))break;o=c[(c[(c[k>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;c[o+236>>2]=~~+h[o+16>>3];i=i+1|0}g=g+1|0}while(1){if((f|0)>(e<<16>>16|0))break;a[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(f<<6)+49>>0]=0;o=c[d+196>>2]|0;rL(c[o+(f<<6)+4>>2]|0,c[o+(f<<6)>>2]|0,4,14);o=c[n>>2]|0;f=f+1|0;e=b[o+238>>1]|0;d=o}return}function $h(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=((d|0)%4|0|0)<2&1;e=c[a+16>>2]|0;if(!(d&1)){d=b[e+236>>1]|0;f=1;e=b[e+238>>1]|0;d=(d<<16>>16<=(b[(c[(c[41927]|0)+16>>2]|0)+236>>1]|0)&1)+(d<<16>>16)|0}else{d=b[e+238>>1]|0;f=-1;e=b[e+236>>1]|0;d=((d<<16>>16>=(b[(c[(c[41927]|0)+16>>2]|0)+238>>1]|0))<<31>>31)+(d<<16>>16)|0}e=f+e|0;while(1){if((d|0)==(e|0))break;ji(a,d,g,(ii(a,d,d-f|0)|0)&255);d=d+f|0}ai(a,g^1);return}function ai(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;g=c[k>>2]|0;i=b[g+236>>1]|0;j=b[g+238>>1]|0;h=g+196|0;f=i<<16>>16;while(1){if((f|0)>(j|0)){h=i;break}a[(c[h>>2]|0)+(f<<6)+48>>0]=1;f=f+1|0}while(1){f=0;h=h<<16>>16;while(1){if((h|0)>(b[g+238>>1]|0))break;if(a[(c[g+196>>2]|0)+(h<<6)+48>>0]|0){f=(hi(d,h,e)|0)+f|0;g=c[k>>2]|0}h=h+1|0}if((f|0)<=0)break;h=b[g+236>>1]|0}return}function bi(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=d+16|0;e=c[o>>2]|0;n=b[e+238>>1]|0;a:while(1){if((n|0)<(b[e+236>>1]|0)){e=16;break}f=c[e+196>>2]|0;a[f+(n<<6)+48>>0]=0;p=(n|0)>0;q=n+1|0;g=0;b:while(1){l=(c[f+(n<<6)>>2]|0)+-1|0;m=f+(n<<6)+4|0;k=f+(q<<6)|0;while(1){if((g|0)>=(l|0))break b;j=c[m>>2]|0;i=c[j+(g<<2)>>2]|0;g=g+1|0;j=c[j+(g<<2)>>2]|0;if((c[(c[i+16>>2]|0)+236>>2]|0)>=(c[(c[j+16>>2]|0)+236>>2]|0)){e=7;break a}if(ci(d,i,j)|0)continue;if(p){f=di(i,j)|0;h=di(j,i)|0}else{f=0;h=0}if((c[k>>2]|0)>0){f=(ei(i,j)|0)+f|0;h=(ei(j,i)|0)+h|0}if((h|0)<=(f|0))break}fi(d,n,i,j);e=c[o>>2]|0;f=c[e+196>>2]|0}n=n+-1|0}if((e|0)==7)ma(79110,78628,721,79136);else if((e|0)==16)return}function ci(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+16>>2]|0;i=c[j+212>>2]|0;f=c[e+16>>2]|0;g=c[f+212>>2]|0;h=(i|0)!=(g|0);do if(!(a[173893]|0))if((g|0)==0|((i|0)==0|h^1))k=9;else{if((a[j+159>>0]|0)==7?(a[j+156>>0]|0)==1:0){b=0;break}if((a[f+159>>0]|0)==7?(a[f+156>>0]|0)==1:0){b=0;break}b=1}else if(h)b=1;else k=9;while(0);if((k|0)==9){f=c[b+16>>2]|0;b=c[(c[f+196>>2]|0)+(c[j+232>>2]<<6)+56>>2]|0;if(!b)b=0;else{j=(c[f+116>>2]&1|0)==0;k=O(c[b+4>>2]|0,c[(c[(j?d:e)+16>>2]|0)+284>>2]|0)|0;b=a[(c[b+8>>2]|0)+((c[(c[(j?e:d)+16>>2]|0)+284>>2]|0)+k)>>0]|0}}return b|0}function di(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+172>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+16|0;f=c[(c[l>>2]|0)+172>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+16>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ei(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+180>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+56|0;f=c[(c[l>>2]|0)+180>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+56>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function fi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=a[(c[e+16>>2]|0)+156>>0]|0;if(i<<24>>24!=(a[(c[f+16>>2]|0)+156>>0]|0)){j=b+16|0;l=c[(c[j>>2]|0)+196>>2]|0;k=c[l+(d<<6)>>2]|0;l=l+(d<<6)+4|0;b=0;g=0;h=0;while(1){if((b|0)>=(k|0))break;o=(a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)==0;b=b+1|0;g=g+(o&1)|0;h=h+((o^1)&1)|0}i=i<<24>>24==0;h=(g|0)<(h|0)?(i?e:f):i?f:e;i=0;b=0;while(1){if((b|0)>=(k|0))break;i=(c[(c[l>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}o=(a[(c[h+16>>2]|0)+156>>0]|0)==0&1;n=0;g=i;while(1){b=g+-1|0;if((g|0)<=0){m=0;b=i;break}if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){m=0;b=i;break}n=n+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;m=m+1|0}gi(e,f);j=c[(c[j>>2]|0)+196>>2]|0;k=c[j+(d<<6)>>2]|0;j=j+(d<<6)+4|0;b=0;while(1){if((b|0)>=(k|0)){h=0;g=i;break}i=(c[(c[j>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}while(1){b=g+-1|0;if((g|0)<=0){g=0;b=i;break}if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){g=0;b=i;break}h=h+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;g=g+1|0}d=h-g|0;o=n-m|0;if((((d|0)>-1?d:0-d|0)|0)>(((o|0)>-1?o:0-o|0)|0))gi(e,f)}return}function gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[a+16>>2]|0;e=c[f+232>>2]|0;f=f+236|0;d=c[f>>2]|0;g=b+16|0;h=c[(c[g>>2]|0)+236>>2]|0;c[f>>2]=h;f=(c[41927]|0)+16|0;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(h<<2)>>2]=a;c[(c[g>>2]|0)+236>>2]=d;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return}function hi(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=d+16|0;n=c[(c[q>>2]|0)+196>>2]|0;a[n+(e<<6)+48>>0]=0;r=(e|0)>0;s=e+1|0;o=(f|0)!=0;p=e+-1|0;g=0;i=0;f=n;a:while(1){l=(c[f+(e<<6)>>2]|0)+-1|0;m=f+(e<<6)+4|0;h=f+(s<<6)|0;n=g;while(1){if((n|0)>=(l|0)){f=17;break a}k=c[m>>2]|0;j=c[k+(n<<2)>>2]|0;n=n+1|0;k=c[k+(n<<2)>>2]|0;if((c[(c[j+16>>2]|0)+236>>2]|0)>=(c[(c[k+16>>2]|0)+236>>2]|0)){f=5;break a}if(ci(d,j,k)|0)continue;if(r){f=di(j,k)|0;g=di(k,j)|0}else{f=0;g=0}if((c[h>>2]|0)>0){f=(ei(j,k)|0)+f|0;g=(ei(k,j)|0)+g|0}if((f|0)>(g|0))break;if((f|0)==(g|0)&(o&(f|0)>0)){f=g;break}}gi(j,k);i=f-g+i|0;g=c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0;a[g+(e<<6)+49>>0]=0;h=c[q>>2]|0;f=c[h+196>>2]|0;a[f+(e<<6)+48>>0]=1;if((b[h+236>>1]|0)<(e|0)){a[g+(p<<6)+49>>0]=0;a[f+(p<<6)+48>>0]=1}if((b[h+238>>1]|0)<=(e|0)){g=n;continue}a[g+(s<<6)+49>>0]=0;a[f+(s<<6)+48>>0]=1;g=n}if((f|0)==5)ma(79110,78628,770,79144);else if((f|0)==17)return i|0;return 0}function ii(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[41925]|0;q=a+16|0;a=c[(c[q>>2]|0)+196>>2]|0;r=c[a+(e<<6)+4>>2]|0;n=(f|0)>(e|0);o=p+4|0;m=0;while(1){f=c[a+(e<<6)>>2]|0;if((m|0)>=(f|0)){a=0;j=0;break}l=(c[r+(m<<2)>>2]|0)+16|0;a=c[l>>2]|0;a:do if(n){k=c[a+180>>2]|0;a=0;j=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+88>>0];a=a+1|0}j=j+1|0}}else{k=c[a+172>>2]|0;j=0;a=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+48>>0];a=a+1|0}j=j+1|0}}while(0);b:do switch(a|0){case 0:{i=-1.0;break}case 1:{i=+(c[p>>2]|0);break}case 2:{i=+(((c[o>>2]|0)+(c[p>>2]|0)|0)/2|0|0);break}default:{rL(p,a,4,12);f=(a|0)/2|0;if(a&1|0){i=+(c[p+(f<<2)>>2]|0);break b}j=c[p+(f<<2)>>2]|0;g=(c[p+(a+-1<<2)>>2]|0)-j|0;a=c[p+(f+-1<<2)>>2]|0;f=a-(c[p>>2]|0)|0;if((f|0)==(g|0)){i=+((a+j|0)/2|0|0);break b}else{i=+(((O(f,j)|0)+(O(a,g)|0)|0)/(f+g|0)|0|0);break b}}}while(0);h[(c[l>>2]|0)+240>>3]=i;m=m+1|0;a=c[(c[q>>2]|0)+196>>2]|0}while(1){if((j|0)>=(f|0))break;g=c[r+(j<<2)>>2]|0;p=c[g+16>>2]|0;if((c[p+184>>2]|0)==0?(c[p+176>>2]|0)==0:0){a=(ki(g)|0|a&255)&255;f=c[(c[(c[q>>2]|0)+196>>2]|0)+(e<<6)>>2]|0}j=j+1|0}return a|0}function ji(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;o=c[(c[b+16>>2]|0)+196>>2]|0;s=c[o+(d<<6)+4>>2]|0;o=c[o+(d<<6)>>2]|0;q=(e|0)!=0;p=(f|e|0)==0;f=0;e=o;o=s+(o<<2)|0;while(1){n=e+-1|0;if((e|0)>0)e=s;else break;a:while(1){b:while(1){if(e>>>0>=o>>>0)break a;while(1){if(e>>>0>=o>>>0)break a;l=c[e>>2]|0;m=+h[(c[l+16>>2]|0)+240>>3];if(!(m<0.0))break;e=e+4|0}k=0;while(1){g=k<<24>>24==0;while(1){e=e+4|0;if(e>>>0>=o>>>0)break a;if(g){g=11;break}i=c[e>>2]|0;if(!(c[(c[i+16>>2]|0)+212>>2]|0)){g=13;break}}if((g|0)==11){i=c[e>>2]|0;j=i}else if((g|0)==13)j=i;if(ci(b,l,j)|0)continue b;g=c[i+16>>2]|0;if(+h[g+240>>3]>=0.0)break;k=(c[g+212>>2]|0)==0?k:1}g=~~m;k=~~+h[(c[i+16>>2]|0)+240>>3];if((g|0)>(k|0)|q&(g|0)==(k|0))break}gi(l,j);f=f+1|0}e=n;o=p?o+-4|0:o}if(f|0?(r=c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0,a[r+(d<<6)+49>>0]=0,(d|0)>0):0)a[r+(d+-1<<6)+49>>0]=0;return}function ki(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0;g=c[a+16>>2]|0;if((c[g+200>>2]|0)>0){f=c[g+196>>2]|0;a=c[f>>2]|0;a=c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0;d=1;while(1){e=c[f+(d<<2)>>2]|0;if(!e)break;e=c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;a=(c[(c[e+16>>2]|0)+236>>2]|0)>(c[(c[a+16>>2]|0)+236>>2]|0)?e:a;d=d+1|0}b=+h[(c[a+16>>2]|0)+240>>3];if(!(b>=0.0))a=1;else{h[g+240>>3]=b+1.0;a=0}}else if((c[g+192>>2]|0)>0){e=c[g+188>>2]|0;d=c[e>>2]|0;a=1;d=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;while(1){f=c[e+(a<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;a=a+1|0;d=(c[(c[f+16>>2]|0)+236>>2]|0)<(c[(c[d+16>>2]|0)+236>>2]|0)?f:d}b=+h[(c[d+16>>2]|0)+240>>3];if(b>0.0){h[g+240>>3]=b+-1.0;a=0}else a=1}else a=1;return a|0}function li(a,b){a=a|0;b=b|0;return (c[(c[(c[a>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[b>>2]|0)+16>>2]|0)+236>>2]|0)|0}function mi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+96|0;o=p+64|0;n=p+48|0;h=p+24|0;f=p;j=d+16|0;k=c[(c[j>>2]|0)+232>>2]|0;m=a+16|0;e=c[(c[m>>2]|0)+196>>2]|0;i=c[e+(k<<6)>>2]|0;do if((c[e+(k<<6)+8>>2]|0)>=1){c[(c[e+(k<<6)+4>>2]|0)+(i<<2)>>2]=d;c[(c[j>>2]|0)+236>>2]=i;a=c[m>>2]|0;f=c[a+196>>2]|0;e=f+(k<<6)|0;g=c[e>>2]|0;c[e>>2]=g+1;if((g|0)>=(c[f+(k<<6)+8>>2]|0))ma(79224,78628,1346,79260);g=c[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;if((i|0)>(g|0)){m=Dn(d)|0;n=c[(c[j>>2]|0)+236>>2]|0;o=c[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;c[h>>2]=1359;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=k;c[h+16>>2]=o;_l(1,79276,h)|0;break}e=b[a+236>>1]|0;a=b[a+238>>1]|0;if((k|0)<(e|0)|(k|0)>(a<<16>>16|0)){c[n>>2]=1364;c[n+4>>2]=k;c[n+8>>2]=e;c[n+12>>2]=a<<16>>16;_l(1,79349,n)|0;break}if(((c[f+(k<<6)+4>>2]|0)+(i<<2)|0)>>>0>((c[f+(k<<6)+12>>2]|0)+(g<<2)|0)>>>0){i=Dn(d)|0;n=c[(c[m>>2]|0)+196>>2]|0;m=(c[n+(k<<6)+4>>2]|0)+(c[(c[j>>2]|0)+236>>2]<<2)|0;n=(c[n+(k<<6)+12>>2]|0)+(c[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]<<2)|0;c[o>>2]=1370;c[o+4>>2]=k;c[o+8>>2]=i;c[o+12>>2]=m;c[o+16>>2]=k;c[o+20>>2]=k;c[o+24>>2]=n;_l(1,79410,o)|0}}else{n=Dn(a)|0;o=Dn(d)|0;c[f>>2]=1339;c[f+4>>2]=n;c[f+8>>2]=o;c[f+12>>2]=k;c[f+16>>2]=i;_l(1,79169,f)|0}while(0);l=p;return}function ni(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=d+16|0;a:do if(!e){g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+184>>2]|0))break a;d=c[(c[d+180>>2]|0)+(g<<2)>>2]|0;e=d+-48|0;f=(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;BA(b,c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)}g=g+1|0}}else{g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+176>>2]|0))break a;d=c[(c[d+172>>2]|0)+(g<<2)>>2]|0;e=d+48|0;f=(c[(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;BA(b,c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)}g=g+1|0}}while(0);return}function oi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;u=v;g=d+16|0;f=c[(c[g>>2]|0)+196>>2]|0;s=c[f+(e<<6)+4>>2]|0;t=e+1|0;d=c[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(t<<6)>>2]|0;if((c[41931]|0)>(d|0))q=c[41932]|0;else{d=d+1|0;c[41931]=d;f=c[41932]|0;if(!f)d=ww(d<<2)|0;else d=yw(f,d<<2)|0;c[41932]=d;f=c[(c[g>>2]|0)+196>>2]|0;q=d}r=f+(t<<6)|0;d=0;while(1){if((d|0)>=(c[r>>2]|0))break;c[q+(d<<2)>>2]=0;d=d+1|0}p=f+(e<<6)|0;o=0;h=0;d=0;j=q;while(1){k=c[p>>2]|0;if((o|0)>=(k|0))break;n=c[(c[(c[s+(o<<2)>>2]|0)+16>>2]|0)+180>>2]|0;a:do if((h|0)>0){m=0;while(1){g=c[n+(m<<2)>>2]|0;if(!g)break a;k=g+16|0;i=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;while(1){g=i+1|0;if((i|0)>=(h|0))break;i=g;d=(O(c[j+(g<<2)>>2]|0,b[(c[k>>2]|0)+154>>1]|0)|0)+d|0}m=m+1|0}}while(0);i=0;while(1){g=c[n+(i<<2)>>2]|0;if(!g)break;j=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;m=q+(j<<2)|0;c[m>>2]=(c[m>>2]|0)+(b[(c[g+16>>2]|0)+154>>1]|0);h=(j|0)>(h|0)?j:h;i=i+1|0;j=q}o=o+1|0}i=f+(e<<6)+4|0;h=0;while(1){if((h|0)>=(k|0))break;g=c[(c[(c[i>>2]|0)+(h<<2)>>2]|0)+16>>2]|0;if(a[g+145>>0]|0){e=g+180|0;c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];d=(pi(u,1)|0)+d|0}h=h+1|0}i=c[r>>2]|0;h=f+(t<<6)+4|0;g=0;while(1){if((g|0)>=(i|0))break;f=c[(c[(c[h>>2]|0)+(g<<2)>>2]|0)+16>>2]|0;if(a[f+145>>0]|0){t=f+172|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];d=(pi(u,-1)|0)+d|0}g=g+1|0}l=v;return d|0}function pi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=(d|0)<1;l=c[a>>2]|0;d=0;a=0;a:while(1){m=c[l+(d<<2)>>2]|0;if(!m)break;d=d+1|0;if(n){j=m+48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+56>>3]-+h[g+56>>3])*+((c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==3?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}else{j=m+-48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+16>>3]-+h[g+16>>3])*+((c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==2?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}}return a|0}function qi(a){a=a|0;var b=0.0,d=0.0;c[41930]=8;c[42180]=24;h[20878]=.995;a=Im(a,79532)|0;if(a|0?(b=+sM(a),b>0.0):0){d=b*+(c[41930]|0);c[41930]=~~(d>1.0?d:1.0);b=b*+(c[42180]|0);c[42180]=~~(b>1.0?b:1.0)}return}function ri(a){a=a|0;var d=0,e=0;e=(b[(c[a+16>>2]|0)+238>>1]|0)+2|0;d=vw(e<<2)|0;ti(a,d,e,0)|0;_I(d);return}
function Uq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(b|0)==2;d=(c[42039]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;e=d+4|0;f=c[e>>2]|0;if(!((g?(a[f>>0]|0)==(a[83089]|0):0)?!(xJ(f,83089)|0):0)){h=ym(c[c[42039]>>2]|0,b,f,0)|0;c[e>>2]=h;if(!h)c[e>>2]=ym(c[c[42039]>>2]|0,b,f,174181)|0;c[d>>2]=266;bp(c[42038]|0,f)|0}d=d+12|0}return}function Vq(a){a=a|0;Wq(c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;return}function Wq(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;switch(c[a>>2]|0){case 265:{Wq(c[a+4>>2]|0);break}case 266:case 267:{bp(c[42038]|0,c[a+8>>2]|0)|0;break}default:{}}Zn(c[42038]|0,a);a=b}return}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;f=h;g=h+8|0;d=rJ(a)|0;d=d+2+(rJ(b)|0)|0;if(d>>>0<1025)e=g;else e=ZI(d)|0;c[f>>2]=a;c[f+4>>2]=b;pL(e,83126,f)|0;d=$o(c[42038]|0,e)|0;bp(c[42038]|0,a)|0;bp(c[42038]|0,b)|0;if((e|0)!=(g|0))_I(e);l=h;return d|0}function Yq(a,b){a=a|0;b=b|0;return Sq(259,a,b)|0}function Zq(a){a=a|0;return Sq(265,a,0)|0}function _q(a){a=a|0;return Sq(262,a,0)|0}function $q(a){a=a|0;var b=0,d=0;b=(c[42039]|0)+24|0;while(1){b=c[b>>2]|0;if(!b)break;if((c[b>>2]|0)==266?(d=c[b+4>>2]|0,d|0):0)Cm(a,d,c[b+8>>2]|0)|0;b=b+12|0}return}function ar(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=d+4|0;a:do if((c[d>>2]|0)==262){d=c[f>>2]|0;f=co(d)|0;while(1){if(!f)break a;br(a,b,io(c[c[42039]>>2]|0,f,0)|0,0,e);f=eo(d,f)|0}}else while(1){f=c[f>>2]|0;if(!f)break a;d=io(c[c[42039]>>2]|0,c[f+4>>2]|0,0)|0;br(a,b,d,c[f+8>>2]|0,e);f=f+12|0}while(0);return}function br(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;d=an(c[c[42039]>>2]|0,a,d,f,1)|0;if(d|0){g=c[d>>2]&3;f=c[((g|0)==2?d:d+-48|0)+40>>2]|0;a=(f|0)==(a|0)?(c[((g|0)==3?d:d+48|0)+40>>2]|0)!=(f|0):0;cr(d,96242,a?e:b);cr(d,96251,a?b:e);$q(d)}return}function cr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=ym(c[c[42039]>>2]|0,2,b,0)|0;if(!e)e=ym(c[c[42039]>>2]|0,2,b,174181)|0;Cm(a,e,d)|0}return}function dr(a,b,d){a=a|0;b=b|0;d=d|0;c[42007]=b;c[42038]=a;c[41987]=0;a=d|0?d:17656;c[42041]=a;gp(a,b);Bq()|0;a=c[41987]|0;if(!a){Fp();a=c[41987]|0}return a|0}function er(a,b){a=a|0;b=b|0;return dr(0,a,b)|0}function fr(a,b){a=a|0;b=b|0;b=Jr(a,1,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+184>>2]=c[b+4>>2];c[a+172>>2]=c[b+12>>2];c[a+176>>2]=c[b>>2];c[a+180>>2]=c[b+16>>2];b=300}return b|0}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;No(b,122277,280,1)|0;g=b+16|0;c[(c[g>>2]|0)+144>>2]=a;if((so(b)|0)!=(b|0))c[(c[(so(b)|0)+16>>2]|0)+144>>2]=a;e=Im(b,83342)|0;d=a+172|0;if((e|0)!=0?(c[d>>2]=0,(fr(a,e)|0)==999):0){d=Kr(a,1,e)|0;c[f>>2]=e;c[f+4>>2]=d;_l(1,83869,f)|0;d=-1}else{e=c[d>>2]|0;if(!e)d=-1;else{Fv(1);dw(b,c[c[a+180>>2]>>2]&1);d=c[(c[g>>2]|0)+8>>2]|0;c[(c[(so(b)|0)+16>>2]|0)+8>>2]=d;Ez();d=c[e>>2]|0;if(d|0?(gb[d&127](b),h=c[e+4>>2]|0,h|0):0)c[(c[g>>2]|0)+148>>2]=h;Fv(0);d=0}}l=i;return d|0}function hr(a,b){a=a|0;b=b|0;var d=0,e=0;if(No(b,122277,0,1)|0){d=b+16|0;a=c[d>>2]|0;e=c[a+148>>2]|0;if(e){gb[e&127](b);a=c[d>>2]|0;c[a+148>>2]=0}if(c[a+8>>2]|0)iw(b)}return 0}function ir(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;d=c[b+76>>2]|0;f=c[b>>2]|0;if((d|0)!=0?(e=c[d>>2]|0,(e|0)!=0):0){gb[e&127](b);g=12}else g=4;do if((g|0)==4)if((c[b+40>>2]|0)==0?(h=b+36|0,(c[h>>2]|0)==0):0){if(a[f+13>>0]|0)jr(b);d=b+32|0;e=c[d>>2]|0;if(!e){c[h>>2]=c[13885];g=12;break}f=aM(e,91556)|0;c[h>>2]=f;if(!f){j=c[(c[b+12>>2]|0)+16>>2]|0;h=c[d>>2]|0;d=yJ(c[(jJ()|0)>>2]|0)|0;c[i>>2]=h;c[i+4>>2]=d;hb[j&31](83132,i);d=1}else g=12}else g=12;while(0);if((g|0)==12)if(!(c[b+152>>2]&1024))d=0;else{hb[c[(c[b+12>>2]|0)+16>>2]&31](83170,j);d=1}l=k;return d|0}function jr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+112|0;e=h;g=h+4|0;d=c[b+24>>2]|0;if(!d)a[g>>0]=0;else{c[e>>2]=d+1;pL(g,83188,e)|0}e=c[b+20>>2]|0;e=e|0?e:83192;d=rJ(e)|0;i=rJ(g)|0;f=b+52|0;i=d+1+i+(rJ(c[f>>2]|0)|0)|0;d=i+11|0;if((c[42042]|0)>>>0<(i+1|0)>>>0){c[42042]=d;d=aJ(c[42043]|0,d)|0;c[42043]=d}else d=c[42043]|0;xK(d,e)|0;IL(c[42043]|0,g)|0;d=c[42043]|0;d=d+(rJ(d)|0)|0;a[d>>0]=46;a[d+1>>0]=0;d=GL(c[f>>2]|0)|0;f=c[42043]|0;while(1){e=HL(d,58)|0;if(!e)break;IL(f,e+1|0)|0;i=c[42043]|0;g=i+(rJ(i)|0)|0;a[g>>0]=46;a[g+1>>0]=0;a[e>>0]=0;f=i}IL(f,d)|0;_I(d);c[b+32>>2]=c[42043];l=h;return}function kr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+8|0;f=h;if((b|0)!=0&(d|0)!=0){if(c[a+152>>2]&1024|0){hb[c[(c[a+12>>2]|0)+16>>2]&31](83170,f);Ma(1)}if((lr(a,b,d)|0)==(d|0))e=d;else{f=c[(c[a+12>>2]|0)+16>>2]|0;c[g>>2]=d;hb[f&31](83202,g);Ma(1)}}else e=0;l=h;return e|0}function lr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=c[(c[b>>2]|0)+104>>2]|0;do if(!f){j=b+40|0;h=c[j>>2]|0;if(!h){e=XL(d,1,e,c[b+36>>2]|0)|0;break}f=b+44|0;i=b+48|0;g=c[i>>2]|0;do if(((c[f>>2]|0)+-1-g|0)>>>0<e>>>0){g=e+4096+g&-4096;c[f>>2]=g;f=aJ(h,g)|0;c[j>>2]=f;if(!f){hb[c[(c[b+12>>2]|0)+16>>2]&31](83227,n);Ma(1)}else{k=f;m=c[i>>2]|0;break}}else{k=h;m=g}while(0);TN(k+m|0,d|0,e|0)|0;n=(c[i>>2]|0)+e|0;c[i>>2]=n;a[(c[j>>2]|0)+n>>0]=0}else e=bb[f&31](b,d,e)|0;while(0);l=o;return e|0}function mr(a,b){a=a|0;b=b|0;var c=0;c=rJ(b)|0;b=(kr(a,b,c)|0)==(c|0);return (b?1:-1)|0}function nr(b,c){b=b|0;c=c|0;var d=0,e=0;d=l;l=l+16|0;e=d;a[e>>0]=c;b=(kr(b,e,1)|0)==1;l=d;return (b?c:-1)|0}function or(b){b=b|0;var d=0;d=c[b+36>>2]|0;if(((d|0)!=0?(a[b+144>>0]|0)==0:0)?(c[(c[b>>2]|0)+104>>2]|0)==0:0)b=PL(d)|0;else b=0;return b|0}function pr(a){a=a|0;var b=0,d=0;b=c[a+76>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)gb[d&127](a);or(a)|0;return}function qr(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=c[a+76>>2]|0;if(c[a+152>>2]&1024|0){hb[c[(c[a+12>>2]|0)+16>>2]&31](83254,e);Ma(1)}if((d|0)!=0?(b=c[d+8>>2]|0,(b|0)!=0):0)gb[b&127](a);else{or(a)|0;rr(a)}l=e;return}function rr(b){b=b|0;var d=0,e=0,f=0;d=b+32|0;if((c[d>>2]|0?(e=b+36|0,f=c[e>>2]|0,(f|0)!=(c[13885]|0)):0)?(a[b+144>>0]|0)==0:0){if(f|0){LL(f)|0;c[e>>2]=0}c[d>>2]=0}return}function sr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;f=i;h=i+24|0;g=i+8|0;c[g>>2]=d;e=LK(h,1024,b,g)|0;if((e|0)>=0){if((e|0)>1023){e=ww(e+1|0)|0;c[g>>2]=d;f=e;e=qL(e,b,g)|0}else f=h;kr(a,f,e)|0;if((f|0)!=(h|0))_I(f)}else{c[f>>2]=yJ(c[(jJ()|0)>>2]|0)|0;_l(1,83271,f)|0}l=i;return}function tr(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=ur(e,b)|0;kr(a,f,c[e>>2]|0)|0;l=d;return}function ur(b,d){b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(d<-1.0e15))if(!(d>1.0e15)){d=d*1.0e4;f=~~((d<0.0?-.5:.5)+d);if(!f){f=123205;e=1}else{l=(f|0)<0;k=4;i=0;e=173948;f=l?0-f|0:f;while(1){if(!((f|0)!=0|(k|0)>0))break;g=(f|0)%10|0;j=(f|0)/10|0;h=e+-1|0;if((g|0)==0&i<<24>>24==0)f=0;else{a[h>>0]=g|48;f=1;e=h}if((k|0)==1)if(!(f<<24>>24))f=1;else{e=e+-1|0;a[e>>0]=46;f=1}k=k+-1|0;i=f;f=j}if(l){e=e+-1|0;a[e>>0]=45}f=e;e=173948-e|0}}else{f=83286;e=18}else{f=83285;e=19}c[b>>2]=e;return f|0}function vr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=ur(e,+h[b>>3])|0;kr(a,f,c[e>>2]|0)|0;kr(a,87638,1)|0;b=ur(e,+h[b+8>>3])|0;kr(a,b,c[e>>2]|0)|0;l=d;return}function wr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;e=0;while(1){h=b+(e<<4)|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];vr(a,f);e=e+1|0;if((e|0)>=(d|0))break;kr(a,87638,1)|0}l=g;return}function xr(a,b){a=a|0;b=b|0;var d=0;d=vw(392)|0;if(d|0){c[d>>2]=19212;c[d+16>>2]=22;c[d+32>>2]=a;c[d+36>>2]=b}return d|0}function yr(a){a=a|0;var b=0,d=0,e=0,f=0;b=vw(392)|0;d=b;e=a;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));f=b+60|0;e=a+60|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];f=b+80|0;e=a+80|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];return b|0}function zr(a){a=a|0;Gr(a);_I(a);return}function Ar(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[42044]|0;if(e){d=c[e+4>>2]|0;if(!d){d=vw(632)|0;c[(c[42044]|0)+4>>2]=d}}}else{d=vw(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[42044]=d;c[d+32>>2]=b;c[d>>2]=a;return}function Br(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[42045]|0;if(e){d=c[e+4>>2]|0;if(!d){d=vw(632)|0;c[(c[42045]|0)+4>>2]=d}}}else{d=vw(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[42045]=d;c[d+52>>2]=b;c[d>>2]=a;return (Jr(a,3,b)|0)!=0|0}function Cr(a){a=a|0;var b=0;b=c[a+160>>2]|0;c[a+164>>2]=b;return b|0}function Dr(a){a=a|0;var b=0,d=0,e=0;a=a+164|0;b=c[a>>2]|0;d=c[b+4>>2]|0;if(d|0?(e=d+52|0,(c[e>>2]|0)==0):0)c[e>>2]=c[b+52>>2];c[a>>2]=d;return d|0}function Er(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;f=b+10|0;if((c[e>>2]|0)>(b|0))a=c[a>>2]|0;else{c[e>>2]=f;f=yw(c[a>>2]|0,f<<2)|0;c[a>>2]=f;a=f}c[a+(b<<2)>>2]=d;return}function Fr(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)_I(b);c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;return}function Gr(a){a=a|0;var b=0,d=0,e=0;d=a+160|0;b=c[d>>2]|0;while(1){if(!b)break;e=c[b+4>>2]|0;Fr(b+604|0);Fr(b+592|0);_I(c[b+584>>2]|0);_I(c[b+588>>2]|0);_I(b);b=e}c[42045]=0;c[42044]=0;c[a+192>>2]=0;c[a+164>>2]=0;c[d>>2]=0;c[a+28>>2]=0;return}function Hr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;k=n+64|0;m=n;mL(k,e,63)|0;i=WJ(k,58)|0;if(i|0)a[i>>0]=0;b=b+60+(d<<2)|0;while(1){d=c[b>>2]|0;if(!d){d=b;b=0;break}mL(m,c[d+4>>2]|0,63)|0;d=WJ(m,58)|0;if(d|0)a[d>>0]=0;if((xJ(k,m)|0)<1){j=9;break}b=c[b>>2]|0}while(1){if((j|0)==9){d=b;b=c[b>>2]|0}if(!b)break;mL(m,c[b+4>>2]|0,63)|0;b=WJ(m,58)|0;if(b|0)a[b>>0]=0;if(xJ(k,m)|0)break;b=c[d>>2]|0;if((c[b+8>>2]|0)<=(f|0))break;j=9}m=ww(20)|0;c[m>>2]=c[d>>2];c[d>>2]=m;c[m+4>>2]=e;c[m+8>>2]=f;c[m+12>>2]=g;c[m+16>>2]=h;l=n;return 1}function Ir(a,b){a=a|0;b=b|0;b=l;l=l+16|0;_l(1,83366,b)|0;l=b;return 0}function Jr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+144|0;r=s;o=s+80|0;p=s+16|0;n=(d+-3|0)>>>0<2?0:d;mL(o,e,63)|0;e=WJ(o,58)|0;if(e){f=e+1|0;a[e>>0]=0;e=WJ(f,58)|0;if(!e)m=0;else{a[e>>0]=0;m=e+1|0}}else{m=0;f=0}i=(f|0)!=0;j=(m|0)==0;k=(n|0)==(d|0);h=b+60+(d<<2)|0;a:while(1){e=c[h>>2]|0;if(!e){e=0;break}mL(p,c[e+4>>2]|0,63)|0;e=WJ(p,58)|0;if(!e)e=0;else{a[e>>0]=0;e=e+1|0}do if(!(xJ(p,o)|0)){g=(e|0)!=0;if(i&g?xJ(e,f)|0:0)break;if(!j?xJ(m,c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]|0)|0:0)break;if(k|g^1){q=16;break a}if(Jr(b,n,e)|0){q=16;break a}}while(0);h=c[h>>2]|0}do if((q|0)==16){e=c[h>>2]|0;if(e){f=e+16|0;if((c[f>>2]|0)==0?(Ir(0,0)|0,(c[f>>2]|0)==0):0){e=0;break}if((c[b+8>>2]|0)>0){q=c[13918]|0;o=c[e+4>>2]|0;p=c[(c[e+12>>2]|0)+8>>2]|0;c[r>>2]=c[19224+(d<<2)>>2];c[r+4>>2]=o;c[r+8>>2]=p;zL(q,83397,r)|0}}else e=0}while(0);c[b+80+(d<<2)>>2]=e;l=s;return e|0}function Kr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!e)e=0;else{if(c[4811]|0){cm(168184,0,0);c[4811]=0}h=GL(e)|0;e=WJ(h,58)|0;if(e){a[e>>0]=0;f=b+60+(d<<2)|0;e=1;g=f;while(1){b=c[g>>2]|0;if(!b)break;d=GL(c[b+4>>2]|0)|0;b=WJ(d,58)|0;if(b|0)a[b>>0]=0;if(!((a[h>>0]|0)!=0?(iK(h,d)|0)!=0:0)){e=c[42047]|0;if(e>>>0>=(c[42048]|0)>>>0){dm(168184,1)|0;e=c[42047]|0}c[42047]=e+1;a[e>>0]=32;fm(168184,c[(c[g>>2]|0)+4>>2]|0)|0;e=c[42047]|0;if(e>>>0>=(c[42048]|0)>>>0){dm(168184,1)|0;e=c[42047]|0}c[42047]=e+1;a[e>>0]=58;fm(168184,c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)|0;e=0}_I(d);g=c[g>>2]|0}_I(h);if(e<<24>>24){g=0;i=19}}else{_I(h);g=0;f=b+60+(d<<2)|0;e=1;i=19}if((i|0)==19){while(1){b=c[f>>2]|0;if(!b)break;d=GL(c[b+4>>2]|0)|0;b=WJ(d,58)|0;if(b|0)a[b>>0]=0;if(!((g|0)!=0?(iK(g,d)|0)==0:0)){e=c[42047]|0;if(e>>>0>=(c[42048]|0)>>>0){dm(168184,1)|0;e=c[42047]|0}c[42047]=e+1;a[e>>0]=32;fm(168184,d)|0;e=0}g=d;f=c[f>>2]|0;i=19}if(e<<24>>24){e=174181;break}}e=c[42047]|0;if(e>>>0>=(c[42048]|0)>>>0){dm(168184,1)|0;e=c[42047]|0}a[e>>0]=0;e=c[42046]|0;c[42047]=e}while(0);return e|0}function Lr(b){b=b|0;var d=0;if(!b)ma(96030,83414,573,83428);if(!(a[b>>0]|0))ma(96035,83414,574,83428);d=c[42050]|0;if(!d)b=0;else b=bb[c[d>>2]&31](d,b,512)|0;return b|0}function Mr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;if(!b)ma(96091,83414,589,83445);g=b+8|0;e=c[g>>2]|0;if(!e)ma(96094,83414,590,83445);if(!(a[e>>0]|0))ma(96103,83414,591,83445);h=b+20|0;f=c[h>>2]|0;do if(!f){d=RA(e)|0;if(!d){c[i>>2]=c[g>>2];_l(0,83469,i)|0;d=0;break}i=aM(d,123632)|0;c[h>>2]=i;if(!i){c[j>>2]=yJ(c[(jJ()|0)>>2]|0)|0;c[j+4>>2]=d;_l(0,83494,j)|0;d=0;break}d=c[42051]|0;if((d|0)>49){a[b+17>>0]=1;d=1;break}else{c[42051]=d+1;d=1;break}}else{oM(f,0,0)|0;if(!(c[h>>2]|0))ma(83515,83414,614,83445);else d=1}while(0);l=k;return d|0}function Nr(b){b=b|0;var d=0,e=0;if(a[b+17>>0]|0?(d=b+20|0,e=c[d>>2]|0,e|0):0){LL(e)|0;c[d>>2]=0}return}function Or(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0;if(!b){e=-1;d=-1}else{e=c[b+48>>2]|0;f=+(e|0);if(!e){g=+h[d>>3];f=+h[d+8>>3]}else{h[d+8>>3]=f;h[d>>3]=f;g=f}e=~~(+((c[b+40>>2]|0)*72|0)/g);d=~~(+((c[b+44>>2]|0)*72|0)/f)}c[a>>2]=e;c[a+4>>2]=d;return}function Pr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;f=m+16|0;j=m;k=m+32|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){if((0==0?(g=c[42178]|0,(c[42052]|0)!=(g|0)):0)?(c[42052]=g,i=c[42050]|0,i|0):0){Kl(i)|0;c[42050]=0}n=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];n=!(n>=1.0)?96.0:n;h[j+8>>3]=n;h[j>>3]=n;d=Qr(e)|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];Or(k,d,f);d=c[k>>2]|0;f=c[k+4>>2]|0}else{d=-1;f=-1}c[b>>2]=d;c[b+4>>2]=f;l=m;return}function Qr(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(!a)ma(96030,83414,638,83521);if(!(c[42050]|0))c[42050]=Ql(19248,c[4353]|0)|0;b=Lr(a)|0;a:do if(!b){b=vw(64)|0;if(!b)b=0;else{d=b+8|0;c[d>>2]=$o(0,a)|0;if(!((Mr(b)|0)<<24>>24)){Rr(b);b=0;break}if(!(c[b+20>>2]|0))ma(83515,83414,653,83521);do switch(Sr(b)|0){case 0:{a=Py(c[d>>2]|0)|0;c[b+52>>2]=a;if(!a){c[e>>2]=c[d>>2];_l(0,83538,e)|0;Rr(b);b=0;break a}break}case 2:{Tr(b);break}case 3:{Ur(b);break}case 1:{Vr(b);break}case 4:{Wr(b);break}case 6:{Xr(b);break}case 11:{Yr(b);break}case 8:{Zr(b);break}case 5:{_r(b);break}case 12:{$r(b);break}default:{}}while(0);Nr(b);e=c[42050]|0;bb[c[e>>2]&31](e,b,1)|0}}else Nr(b);while(0);l=f;return b|0}function Rr(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(b|0)bp(0,b)|0;_I(a);return}function Sr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;f=j+200|0;g=j;h=a+20|0;b=c[h>>2]|0;a:do if((b|0)!=0?(wN(f,1,20,b)|0)==20:0){d=0;while(1){if(d>>>0>=10){i=13;break a}if(!(dL(f,c[19284+(d<<4)>>2]|0,c[19284+(d<<4)+4>>2]|0)|0))break;d=d+1|0}e=a+28|0;c[e>>2]=c[19284+(d<<4)+12>>2];b=c[19284+(d<<4)+8>>2]|0;a=a+24|0;c[a>>2]=b;switch(d|0){case 7:break;case 8:{if(dL(f+8|0,83754,4)|0)break a;c[e>>2]=83759;c[a>>2]=11;b=11;break a}default:break a}while(1){if(!(gL(g,200,c[h>>2]|0)|0)){i=11;break}if(!(dL(g,83749,4)|0)){i=8;break}}if((i|0)==8){c[e>>2]=86879;c[a>>2]=8;b=8;break}else if((i|0)==11){b=c[a>>2]|0;break}}else i=13;while(0);if((i|0)==13){c[a+28>>2]=83764;c[a+24>>2]=0;b=0}l=j;return b|0}function Tr(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,6,0)|0;if((is(c[e>>2]|0,2,b)|0)<<24>>24?(is(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function Ur(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,16,0)|0;if((as(c[e>>2]|0,4,b)|0)<<24>>24?(as(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function Vr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;b=h+12|0;d=h+8|0;e=h+4|0;f=h;c[a+48>>2]=0;g=a+20|0;oM(c[g>>2]|0,16,0)|0;if((((is(c[g>>2]|0,2,b)|0)<<24>>24?(is(c[g>>2]|0,2,d)|0)<<24>>24:0)?(is(c[g>>2]|0,2,e)|0)<<24>>24:0)?(is(c[g>>2]|0,2,f)|0)<<24>>24:0){c[a+40>>2]=c[b>>2]<<16|c[d>>2];c[a+44>>2]=c[e>>2]<<16|c[f>>2]}l=h;return}function Wr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+32|0;b=m+16|0;e=m+12|0;f=m+8|0;h=m+4|0;i=m;c[a+48>>2]=0;j=a+20|0;while(1){if(!((as(c[j>>2]|0,1,b)|0)<<24>>24))break;d=c[b>>2]|0;if((d|0)==255)continue;if(WJ(83737,d)|0)continue;if((d|0)==192){k=6;break}g=c[j>>2]|0;if((d|0)==194){k=11;break}if(!((as(g,2,e)|0)<<24>>24))break;oM(c[j>>2]|0,(c[e>>2]|0)+-2|0,1)|0}if((k|0)==6){if(((as(c[j>>2]|0,3,i)|0)<<24>>24?(as(c[j>>2]|0,2,f)|0)<<24>>24:0)?(as(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}}else if((((k|0)==11?(as(g,3,i)|0)<<24>>24:0)?(as(c[j>>2]|0,2,f)|0)<<24>>24:0)?(as(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}l=m;return}function Xr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1056|0;j=m;b=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;c[a+48>>2]=72;i=a+20|0;oM(c[i>>2]|0,0,0)|0;while(1){if(!(gL(b,1024,c[i>>2]|0)|0))break;d=hL(b,83722)|0;if(!d)continue;c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=g;c[j+12>>2]=h;if((cM(d,89345,j)|0)==4){k=5;break}}if((k|0)==5){j=c[e>>2]|0;c[a+32>>2]=j;k=c[f>>2]|0;c[a+36>>2]=k;c[a+40>>2]=(c[g>>2]|0)-j;c[a+44>>2]=(c[h>>2]|0)-k}l=m;return}function Yr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;b=g+4|0;d=g;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,15,0)|0;h=(BN(c[e>>2]|0)|0)==88;f=c[e>>2]|0;if(h){oM(f,24,0)|0;if((is(c[e>>2]|0,4,b)|0)<<24>>24?(is(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}else{oM(f,26,0)|0;if((is(c[e>>2]|0,2,b)|0)<<24>>24?(is(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}l=g;return}function Zr(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+352|0;C=F+80|0;B=F+72|0;E=F+64|0;D=F+56|0;A=F+48|0;d=F+40|0;s=F+32|0;t=F+24|0;u=F+16|0;v=F+8|0;w=F;x=F+328|0;y=F+128|0;z=F+96|0;if(!(c[42053]|0)){if(EM(168216,83607,1)|0){c[d>>2]=83607;_l(1,83634,d)|0}c[42053]=168216}m=b+20|0;oM(c[m>>2]|0,0,0)|0;n=z+12|0;o=z+20|0;p=z+8|0;q=z+16|0;r=z+4|0;d=0;g=0;f=0;e=0;a:while(1){if(!(gL(y,200,c[m>>2]|0)|0))break;if(g<<24>>24==0|d<<24>>24==0){i=y;k=e}else break;b:while(1){j=f;c:while(1){while(1){if(qN(168216,i,4,z,0)|0){f=j;e=k;continue a}a[i+(c[n>>2]|0)>>0]=0;a[i+(c[o>>2]|0)>>0]=0;e=i+(c[p>>2]|0)|0;f=i+(c[q>>2]|0)|0;i=i+((c[r>>2]|0)+1)|0;if(!(xJ(e,96043)|0))break;if(!(xJ(e,96049)|0))break c;if(xJ(e,83681)|0)continue;c[C>>2]=t;c[C+4>>2]=u;c[C+8>>2]=v;c[C+12>>2]=w;if((cM(f,83689,C)|0)==4)break b}c[A>>2]=s;c[A+4>>2]=x;if((cM(f,83671,A)|0)!=2){c[D>>2]=s;if((cM(f,86246,D)|0)==1){e=1;f=hs(+h[s>>3],83678)|0}else{e=g;f=j}}else{e=1;f=hs(+h[s>>3],x)|0}if(!(d<<24>>24)){d=0;g=e;j=f}else{g=e;e=k;continue a}}c[E>>2]=s;c[E+4>>2]=x;if((cM(f,83671,E)|0)!=2){c[B>>2]=s;if((cM(f,86246,B)|0)==1){d=1;e=hs(+h[s>>3],83678)|0}else e=k}else{d=1;e=hs(+h[s>>3],x)|0}if(!(g<<24>>24)){g=0;f=j;k=e}else{f=j;continue a}}d=1;g=1;f=~~(+h[v>>3]+1.0-+h[t>>3])>>>0;e=~~(+h[w>>3]+1.0-+h[u>>3])>>>0}c[b+48>>2]=0;c[b+40>>2]=f;c[b+44>>2]=e;l=F;return}function _r(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0;d=l;l=l+32|0;b=d;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,0,0)|0;if(!(bs(c[e>>2]|0,b)|0)){g=+h[b>>3];c[a+32>>2]=~~g;f=+h[b+8>>3];c[a+36>>2]=~~f;c[a+40>>2]=~~(+h[b+16>>3]-g);c[a+44>>2]=~~(+h[b+24>>3]-f)}l=d;return}function $r(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,6,0)|0;if((as(c[e>>2]|0,1,b)|0)<<24>>24?(as(c[e>>2]|0,1,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function as(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=BN(a)|0;if(KL(a)|0){e=0;break}c[d>>2]=c[d>>2]<<8|f;e=e+1|0}return e|0}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;d=h;e=h+16|0;while(1){if(!(gL(e,1024,a)|0)){a=1;break}f=hL(e,83597)|0;if(f|0){g=4;break}}if((g|0)==4){c[d+4>>2]=e;c[d>>2]=f+9;c[d+8>>2]=a;a=cs(d,b)|0}l=h;return a|0}function cs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+1024|0;f=g;ds(b);e=a[c[b>>2]>>0]|0;if(!(e<<24>>24))e=(es(b)|0)&255;else e=e<<24>>24;if((((e|0)==91?(c[b>>2]=(c[b>>2]|0)+1,fs(b,f),(gs(f,d)|0)==0):0)?(fs(b,f),(gs(f,d+8|0)|0)==0):0)?(fs(b,f),(gs(f,d+16|0)|0)==0):0){fs(b,f);e=(gs(f,d+24|0)|0)!=0&1}else e=1;l=g;return e|0}function ds(b){b=b|0;var d=0;d=c[b>>2]|0;while(1){d=a[d>>0]|0;if(!(d<<24>>24))d=(es(b)|0)&255;else d=d<<24>>24;if(!((d&255)<<24>>24))break;if(!(XJ(d&255)|0))break;d=(c[b>>2]|0)+1|0;c[b>>2]=d}return}function es(b){b=b|0;var d=0;d=b+4|0;if(!(gL(c[d>>2]|0,1024,c[b+8>>2]|0)|0))b=0;else{d=c[d>>2]|0;c[b>>2]=d;b=a[d>>0]|0}return b|0}function fs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;ds(b);e=0;f=c[b>>2]|0;while(1){f=a[f>>0]|0;if(!(f<<24>>24))g=(es(b)|0)&255;else g=f<<24>>24;f=g<<24>>24;if(!f)break;if(!((f|0)==46|(f+-48|0)>>>0<10))break;a[d+e>>0]=g;e=e+1|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;if((e|0)==1023){e=1023;break}}a[d+e>>0]=0;return}function gs(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=l;l=l+16|0;f=e;d=+tM(a,f);if((c[f>>2]|0)==(a|0))a=1;else{h[b>>3]=d;a=0}l=e;return a|0}function hs(a,b){a=+a;b=b|0;var c=0.0;do if(!(xJ(b,83705)|0)){a=a*72.0;c=a;a=a>=0.0?.5:-.5}else{if(!(xJ(b,83708)|0)){a=a*.75;c=a;a=a>=0.0?.5:-.5;break}if(!(xJ(b,83711)|0)){a=a*12.0;c=a;a=a>=0.0?.5:-.5;break}if(xJ(b,83678)|0?xJ(b,83714)|0:0)if(!(xJ(b,83716)|0)){a=a*28.346456664;c=a;a=a>=0.0?.5:-.5;break}else{b=(xJ(b,83719)|0)==0;c=a*2.8346456663999997;return (b?~~(c+(c>=0.0?.5:-.5)):0)|0}c=a>=0.0?.5:-.5}while(0);return ~~(a+c)|0}function is(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=BN(a)|0;if(KL(a)|0){e=0;break}c[d>>2]=c[d>>2]|f<<(e<<3);e=e+1|0}return e|0}function js(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+20>>2]|0;if(a|0)LL(a)|0;if(c[b+52>>2]|0?(e=c[b+60>>2]|0,e|0):0)gb[e&127](b);_I(b);return}function ks(){var a=0;ym(0,1,86240,90527)|0;a=xr(0,1)|0;sE(a,0);return a|0}function ls(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0;k=l;l=l+304|0;j=k+24|0;i=k+8|0;f=k;g=k+40|0;if((fr(b,e)|0)!=999)if((gr(b,d)|0)==-1)b=-1;else{b=c[d+16>>2]|0;e=b+16|0;if(!(a[(c[b+8>>2]|0)+81>>0]|0)){p=+h[e>>3];o=+h[b+24>>3];n=+h[b+32>>3];m=+h[b+40>>3];c[j>>2]=~~(p+(p>=0.0?.5:-.5));c[j+4>>2]=~~(o+(o>=0.0?.5:-.5));c[j+8>>2]=~~(n+(n>=0.0?.5:-.5));c[j+12>>2]=~~(m+(m>=0.0?.5:-.5));pL(g,83918,j)|0}else{m=+h[b+24>>3];n=+h[e>>3];o=+h[b+40>>3];p=+h[b+32>>3];c[i>>2]=~~(m+(m>=0.0?.5:-.5));c[i+4>>2]=~~(n+(n>=0.0?.5:-.5));c[i+8>>2]=~~(o+(o>=0.0?.5:-.5));c[i+12>>2]=~~(p+(p>=0.0?.5:-.5));pL(g,83918,i)|0}Lm(d,87705,g,174181)|0;b=0}else{b=Kr(b,1,e)|0;c[f>>2]=e;c[f+4>>2]=b;_l(1,83869,f)|0;b=-1}l=k;return b|0}function ms(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;Br(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=bD(b,c[b+52>>2]|0)|0;if((No(f,122277,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){bm(83930,g);b=-1}else h=5;if((h|0)==5){c[b+36>>2]=e;if(!e){h=b+152|0;c[h>>2]=c[h>>2]|134217728}h=Gv(a,f)|0;dD(b);Gr(a);b=h}l=i;return b|0}function ns(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;Br(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=bD(b,c[b+52>>2]|0)|0;if((No(f,122277,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){bm(83930,g);b=-1}else h=5;if((h|0)==5){Ar(a,e);h=Gv(a,f)|0;dD(b);qr(b);Gr(a);b=h}l=i;return b|0}function os(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m+8|0;g=m;b=c[b+60>>2]|0;Br(a,d)|0;j=c[a+164>>2]|0;c[j+56>>2]=bD(j,c[j+52>>2]|0)|0;if((No(b,122277,0,1)|0)!=0?(c[(c[b+16>>2]|0)+8>>2]|0)!=0:0)k=5;else if(!(c[j+152>>2]&67108864)){bm(83930,g);b=-1}else k=5;do if((k|0)==5){if(e|0?(i=ZI(4096)|0,c[e>>2]=i,i|0):0){g=j+40|0;c[g>>2]=i;c[j+44>>2]=4096;d=j+48|0;c[d>>2]=0;b=Gv(a,b)|0;dD(j);if(!b){c[e>>2]=c[g>>2];c[f>>2]=c[d>>2]}Gr(a);break}_l(1,83951,h)|0;b=-1}while(0);l=m;return b|0}function ps(a,b){a=a|0;b=b|0;qE(a,0,b);return}function qs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((a|0)!=0?(ys(a)|0)!=0:0))a=84007;e=rJ(a)|0;if((e|0)>=104){d=ww(e+25|0)|0;if(!d)d=0;else f=6}else f=6;if((f|0)==6){xK(d,a)|0;c[b>>2]=e}return d|0}function rs(a,b){a=a|0;b=b|0;io(b,a,1)|0;return}function ss(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=d;c[b+4>>2]=d+4096;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=e;c[a+16>>2]=f;return}function ts(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;ws(e,b);i=e+12|0;j=e+16|0;b=0;a:while(1){k=xs(e)|0;if(!k)break;b=b+1|0;f=c[i>>2]|0;if(f|0)hb[f&31](k,d);h=Um(a,k)|0;while(1){if(!h)continue a;g=c[h>>2]&3;f=c[((g|0)==3?h:h+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?h:h+-48|0)+40>>2]|0;if(!(ab[c[j>>2]&63](f,-1)|0))ws(e,f);h=Vm(a,h,k)|0}}return b|0}function us(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;vs(a);a=b}return}function vs(a){a=a|0;_I(c[a>>2]|0);_I(a);return}function ws(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;f=k;g=a+8|0;i=a+4|0;d=c[i>>2]|0;if((c[g>>2]|0)==(c[d+4>>2]|0)){d=c[d+12>>2]|0;do if(!d){e=ww(16)|0;if(!e){_l(1,83988,f)|0;Ua(168248,1)}c[e+8>>2]=c[i>>2];c[e+12>>2]=0;d=ww(4e6)|0;c[e>>2]=d;if(!d){_l(1,83988,j)|0;Ua(168248,1)}else{c[e+4>>2]=d+4e6;c[(c[i>>2]|0)+12>>2]=e;h=e;break}}else h=d;while(0);c[i>>2]=h;c[g>>2]=c[h>>2]}ab[c[a+16>>2]&63](b,1)|0;j=c[g>>2]|0;c[g>>2]=j+4;c[j>>2]=b;l=k;return}function xs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function ys(b){b=b|0;var c=0;a:while(1){c=b;b=b+1|0;c=a[c>>0]|0;switch(c<<24>>24){case 95:continue a;case 0:{b=1;break a}default:{}}if(!(gK(c&255)|0)){b=0;break}}return b|0}function zs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=0;f=co(a)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;if(io(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,0)|0){en(a,e,1)|0;d=d+1|0}e=Rm(b,e)|0}f=eo(a,f)|0}return d|0}function As(a){a=a|0;a=Lo(a,84012,0)|0;if(!a)ma(84017,84020,529,84029);else return c[a+8>>2]|0;return 0}function Bs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=l;l=l+4320|0;s=u+24|0;r=u+8|0;q=u;t=u+4184|0;p=u+4160|0;f=u+40|0;if(mn(b)|0){So(b,0,84038,-12,0);So(b,1,84050,16,0);o=qs(e,f,t)|0;k=Cs(b)|0;m=ww((mn(k)|0)<<2)|0;ss(p,u+4144|0,u+48|0,23,22);h=co(k)|0;n=p+16|0;i=o+(c[f>>2]|0)|0;j=c[13918]|0;e=0;while(1){if(!h)break;if(!(ab[c[n>>2]&63](h,-1)|0)){c[q>>2]=e;pL(i,84952,q)|0;v=Ip(k,o,1)|0;w=Ip(b,o,1)|0;No(w,84038,12,0)|0;a[(Lo(w,84038,0)|0)+8>>0]=1;f=ts(k,h,v,p)|0;Es(v,w);g=Fs(w)|0;Gs(b,w);c[m+(e<<2)>>2]=w;qo(k,v)|0;if(0){c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=g;zL(j,84062,r)|0}e=e+1|0}h=eo(k,h)|0}if(0){r=mn(b)|0;v=nn(b)|0;w=Dn(b)|0;c[s>>2]=r;c[s+4>>2]=v;c[s+8>>2]=e;c[s+12>>2]=w;zL(j,84092,s)|0}ln(k)|0;To(b,0,84038);To(b,1,84050);us(p);f=yw(m,e<<2)|0;if((o|0)!=(t|0))_I(o)}else{f=0;e=0}c[d>>2]=e;l=u;return f|0}function Cs(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a[h>>0]=a[17652]|0;a[h+1>>0]=a[17653]|0;a[h+2>>0]=a[17654]|0;a[h+3>>0]=a[17655]|0;h=gn(84139,h,0)|0;Js(h,b);d=co(b)|0;while(1){if(!d)break;if(!(c[(Lo(d,84050,0)|0)+12>>2]|0)){g=no(h,Dn(d)|0,1)|0;No(g,84050,16,1)|0;c[(c[g+16>>2]|0)+12>>2]=d;c[(Lo(d,84050,0)|0)+12>>2]=g}d=eo(b,d)|0}e=co(b)|0;while(1){if(!e)break;f=c[(Lo(e,84050,0)|0)+12>>2]|0;d=Pm(b,e)|0;while(1){if(!d)break;g=c[(Lo(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,84050,0)|0)+12>>2]|0;do if((g|0)!=(f|0))if(g>>>0>f>>>0){an(h,f,g,0,1)|0;break}else{an(h,g,f,0,1)|0;break}while(0);d=Rm(b,d)|0}e=eo(b,e)|0}l=i;return h|0}function Ds(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+8|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function Es(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=co(a)|0;while(1){if(!e)break;f=c[(c[e+16>>2]|0)+12>>2]|0;a:do if((c[f>>2]&3|0)==1)io(b,f,1)|0;else{d=co(f)|0;while(1){if(!d)break a;io(b,d,1)|0;d=eo(f,d)|0}}while(0);e=eo(a,e)|0}return}function Fs(a){a=a|0;return zs(a,c[a+60>>2]|0)|0}function Gs(a,b){a=a|0;b=b|0;Hs(a,b,0);return}function Hs(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=(d|0)==0;b=Jp(b)|0;while(1){if(!b)break;if((a[(Lo(b,84038,0)|0)+8>>0]|0)==0?(f=Is(b,c,d)|0,f|0):0){if(g)e=(VJ(Dn(b)|0,93039,7)|0)==0;else e=1;Hs(b,f,e&1)}b=Kp(b)|0}return}function Is(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=0;g=co(a)|0;while(1){if(!g)break;f=no(b,Dn(g)|0,0)|0;if(f){if(!e)e=Ip(b,Dn(a)|0,1)|0;io(e,f,1)|0}g=eo(a,g)|0}if((d|0)!=0&(e|0)==0)e=Ip(b,Dn(a)|0,1)|0;if(e|0?(zs(e,a)|0,Mm(a,e)|0,(VJ(Dn(e)|0,93039,7)|0)==0):0)c[(No(e,84012,12,0)|0)+8>>2]=a;return e|0}function Js(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;d=Jp(b)|0;e=c[13918]|0;while(1){if(!d)break;a:do if(!(VJ(Dn(d)|0,93039,7)|0)){f=no(a,Dn(d)|0,1)|0;No(f,84050,16,1)|0;c[(c[f+16>>2]|0)+12>>2]=d;b=co(d)|0;while(1){if(!b)break a;if(c[(Lo(b,84050,0)|0)+12>>2]|0){k=Dn(b)|0;j=Dn(d)|0;i=Dn(c[(Lo(b,84050,0)|0)+12>>2]|0)|0;c[g>>2]=k;c[g+4>>2]=j;c[g+8>>2]=i;zL(e,84142,g)|0}c[(Lo(b,84050,0)|0)+12>>2]=f;b=eo(d,b)|0}}else Js(a,d);while(0);d=Kp(d)|0}l=h;return}function Ks(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0;n=+h[a>>3];j=~~(n+(n>=0.0?.5:-.5));n=+h[a+8>>3];a=~~(n+(n>=0.0?.5:-.5));n=+h[b>>3];g=~~(n+(n>=0.0?.5:-.5));n=+h[b+8>>3];f=~~(n+(n>=0.0?.5:-.5));l=g-j|0;i=((l|0)>-1?l:0-l|0)<<1;l=l>>31|1;m=f-a|0;k=((m|0)>-1?m:0-m|0)<<1;m=m>>31|1;a:do if((i|0)>(k|0)){e=0-i|0;d=k-(i>>1)|0;b=j;while(1){Cx(c,b,a);if((b|0)==(g|0))break a;j=(d|0)>-1;d=d+k+(j?e:0)|0;b=b+l|0;a=(j?m:0)+a|0}}else{e=0-k|0;d=j;b=i-(k>>1)|0;while(1){Cx(c,d,a);if((a|0)==(f|0))break a;k=(b|0)>-1;d=(k?l:0)+d|0;b=b+i+(k?e:0)|0;a=a+m|0}}while(0);return}function Ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;j=n+4|0;do if((a|0)<1)d=0;else{f=e+16|0;if((c[f>>2]|0)>>>0<4){d=Ms(a,b,d,e)|0;break}m=ww(a<<5)|0;d=0;while(1){if((d|0)==(a|0))break;g=c[b+(d<<2)>>2]|0;dB(g);h=m+(d<<5)|0;g=(c[g+16>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];d=d+1|0}if((c[f>>2]|0)==4){h=e+28|0;a:do if(c[h>>2]&2|0){f=e+24|0;c[f>>2]=vw(a<<2)|0;d=0;while(1){if((d|0)==(a|0))break a;g=Im(c[b+(d<<2)>>2]|0,84209)|0;if(g|0?(c[k>>2]=j,g=(cM(g,122187,k)|0)>0,i=c[j>>2]|0,g&(i|0)>-1):0)c[(c[f>>2]|0)+(d<<2)>>2]=i;d=d+1|0}}while(0);d=Ns(a,m,e)|0;if(c[h>>2]&2)_I(c[e+24>>2]|0)}else d=0;_I(m)}while(0);l=n;return d|0}function Ms(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0;G=l;l=l+144|0;B=G+136|0;A=G+64|0;F=G+48|0;v=G+40|0;u=G;t=G+120|0;x=G+104|0;C=G+96|0;D=c[f+20>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;a:do if((b|0)>=1){o=(D|0)==0;E=c[13918]|0;p=t+4|0;q=t+8|0;r=t+12|0;y=x+4|0;w=x+8|0;z=x+12|0;n=0;g=0;while(1){if((n|0)==(b|0))break;s=c[d+(n<<2)>>2]|0;dB(s);if(!o?(a[D+n>>0]|0)!=0:0){m=c[s+16>>2]|0;H=+h[m+16>>3];i=~~(H+(H>=0.0?.5:-.5));c[t>>2]=i;H=+h[m+24>>3];j=~~(H+(H>=0.0?.5:-.5));c[p>>2]=j;H=+h[m+32>>3];k=~~(H+(H>=0.0?.5:-.5));c[q>>2]=k;H=+h[m+40>>3];m=~~(H+(H>=0.0?.5:-.5));c[r>>2]=m;if(!g){c[x>>2]=c[t>>2];c[x+4>>2]=c[t+4>>2];c[x+8>>2]=c[t+8>>2];c[x+12>>2]=c[t+12>>2]}else{c[x>>2]=c[((c[x>>2]|0)>(i|0)?t:x)>>2];c[y>>2]=c[((c[y>>2]|0)>(j|0)?t:x)+4>>2];c[w>>2]=c[((c[w>>2]|0)<(k|0)?t:x)+8>>2];c[z>>2]=c[((c[z>>2]|0)<(m|0)?t:x)+12>>2]}g=g+1|0}if(0>2){m=Dn(s)|0;s=c[s+16>>2]|0;K=+h[s+16>>3];J=+h[s+24>>3];I=+h[s+32>>3];H=+h[s+40>>3];c[u>>2]=m;h[u+8>>3]=K;h[u+16>>3]=J;h[u+24>>3]=I;h[u+32>>3]=H;zL(E,84276,u)|0}n=n+1|0}q=ww(b<<5)|0;g=0;while(1){if((g|0)==(b|0))break;u=q+(g<<5)|0;t=(c[(c[d+(g<<2)>>2]|0)+16>>2]|0)+16|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];g=g+1|0}o=f+8|0;p=Qs(b,q,c[o>>2]|0)|0;if(0){c[v>>2]=p;zL(E,84304,v)|0}if((p|0)>=1){n=(D|0)!=0;if(n){i=((c[w>>2]|0)+(c[x>>2]|0)|0)/2|0;g=((c[z>>2]|0)+(c[y>>2]|0)|0)/2|0}else{i=0;g=0}c[C+4>>2]=g;c[C>>2]=i;m=vw(b<<4)|0;k=f+16|0;g=0;while(1){if((g|0)>=(b|0))break;i=c[d+(g<<2)>>2]|0;j=m+(g<<4)|0;c[m+(g<<4)+12>>2]=g;if((c[k>>2]|0)==3){x=(c[i+16>>2]|0)+16|0;y=c[o>>2]|0;z=Dn(i)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];c[A+16>>2]=c[x+16>>2];c[A+20>>2]=c[x+20>>2];c[A+24>>2]=c[x+24>>2];c[A+28>>2]=c[x+28>>2];c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];Rs(A,j,p,y,B,z)}else{c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];Ss(e,i,j,p,f,B)}g=g+1|0}j=vw(b<<2)|0;g=0;while(1){if((g|0)>=(b|0))break;c[j+(g<<2)>>2]=m+(g<<4);g=g+1|0}rL(j,b,4,23);k=wx()|0;g=vw(b<<3)|0;b:do if(n){i=0;while(1){if((i|0)>=(b|0)){i=0;break}if(a[D+i>>0]|0){e=c[j+(i<<2)>>2]|0;f=g+(c[e+12>>2]<<3)|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];Us(e,k,f,B)}i=i+1|0}while(1){if((i|0)>=(b|0))break b;if(!(a[D+i>>0]|0)){C=c[j+(i<<2)>>2]|0;Vs(i,C,k,g+(c[C+12>>2]<<3)|0,p,c[o>>2]|0,q)}i=i+1|0}}else{i=0;while(1){if((i|0)>=(b|0))break b;D=c[j+(i<<2)>>2]|0;Vs(i,D,k,g+(c[D+12>>2]<<3)|0,p,c[o>>2]|0,q);i=i+1|0}}while(0);_I(j);i=0;while(1){if((i|0)>=(b|0))break;_I(c[m+(i<<4)+4>>2]|0);i=i+1|0}_I(m);zx(k);_I(q);if(0>1){i=0;while(1){if((i|0)>=(b|0))break a;C=c[g+(i<<3)>>2]|0;D=c[g+(i<<3)+4>>2]|0;c[F>>2]=i;c[F+4>>2]=C;c[F+8>>2]=D;zL(E,84320,F)|0;i=i+1|0}}}else g=0}else g=0;while(0);l=G;return g|0}function Ns(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=l;l=l+16|0;g=z;x=vw(a<<3)|0;f=c[d+4>>2]|0;y=d+28|0;e=(f|0)>0;do if(!(c[y>>2]&1))if(e){k=1;w=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=1;w=(a+-1+f|0)/(f|0)|0;break}else if(e){k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}while(0);if(0){v=c[13918]|0;c[g>>2]=k|0?84215:84225;c[g+4>>2]=w;c[g+8>>2]=f;zL(v,84238,g)|0}t=vw((f<<3)+8|0)|0;u=vw((w<<3)+8|0)|0;v=vw(a*24|0)|0;j=d+8|0;e=0;g=v;while(1){if((e|0)>=(a|0))break;p=+h[b+(e<<5)+8>>3];o=+h[b+(e<<5)+24>>3];q=+((c[j>>2]|0)>>>0);h[g>>3]=+h[b+(e<<5)+16>>3]-+h[b+(e<<5)>>3]+q;h[g+8>>3]=o-p+q;c[g+16>>2]=e;e=e+1|0;g=g+24|0}s=vw(a<<2)|0;e=0;while(1){if((e|0)>=(a|0))break;c[s+(e<<2)>>2]=v+(e*24|0);e=e+1|0}e=c[d+24>>2]|0;if(!e){if(!(c[y>>2]&64))rL(s,a,4,25)}else{c[42101]=e;rL(s,a,4,24)}r=(k|0)==0;e=0;g=0;j=0;while(1){if((j|0)>=(a|0)){i=0.0;e=0;break}k=c[s+(j<<2)>>2]|0;d=t+(g<<3)|0;q=+h[d>>3];p=+h[k>>3];h[d>>3]=q>p?q:p;d=u+(e<<3)|0;p=+h[d>>3];q=+h[k+8>>3];h[d>>3]=p>q?p:q;if(r){e=e+1|0;d=(e|0)==(w|0);e=d?0:e;g=g+(d&1)|0}else{g=g+1|0;d=(g|0)==(f|0);e=e+(d&1)|0;g=d?0:g}j=j+1|0}while(1){if((e|0)>(f|0)){i=0.0;e=w;break}d=t+(e<<3)|0;q=+h[d>>3];h[d>>3]=i;i=q+i;e=e+1|0}while(1){if((e|0)<=0)break;d=e+-1|0;q=+h[u+(d<<3)>>3];h[u+(e<<3)>>3]=i;i=q+i;e=d}h[u>>3]=i;e=0;g=0;d=0;while(1){if((d|0)>=(a|0))break;k=c[(c[s+(d<<2)>>2]|0)+16>>2]|0;i=+h[b+(k<<5)>>3];m=-i;p=+h[b+(k<<5)+8>>3];q=-p;n=+h[b+(k<<5)+16>>3];o=+h[b+(k<<5)+24>>3];j=c[y>>2]|0;do if(!(j&4))if(!(j&8)){i=(m-n+ +h[t+(g<<3)>>3]+ +h[t+(g+1<<3)>>3])*.5;break}else{i=i-n+ +h[t+(g+1<<3)>>3];break}else i=+h[t+(g<<3)>>3];while(0);c[x+(k<<3)>>2]=~~i;do if(!(j&16))if(!(j&32)){i=(q-o+ +h[u+(e<<3)>>3]+ +h[u+(e+1<<3)>>3])*.5;break}else{i=+h[u+(e+1<<3)>>3];break}else i=p-o+ +h[u+(e<<3)>>3];while(0);c[x+(k<<3)+4>>2]=~~i;if(r){e=e+1|0;k=(e|0)==(w|0);e=k?0:e;g=g+(k&1)|0}else{g=g+1|0;k=(g|0)==(f|0);e=e+(k&1)|0;g=k?0:g}d=d+1|0}_I(v);_I(s);_I(t);_I(u);l=z;return x|0}function Os(a,b){a=a|0;b=b|0;var d=0;d=c[42101]|0;a=c[d+(c[(c[a>>2]|0)+16>>2]<<2)>>2]|0;b=c[d+(c[(c[b>>2]|0)+16>>2]<<2)>>2]|0;return ((a|0)>(b|0)?1:((a|0)<(b|0))<<31>>31)|0}function Ps(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;e=+h[a>>3]+ +h[a+8>>3];d=+h[b>>3]+ +h[b+8>>3];return (e<d?1:(e>d)<<31>>31)|0}function Qs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0;s=l;l=l+96|0;q=s+80|0;r=s+48|0;p=s+8|0;m=s;k=(a*100|0)+-1|0;e=+(d<<1|0);n=0.0;o=0.0;d=0;while(1){if((d|0)>=(a|0))break;j=+h[b+(d<<5)+16>>3]-+h[b+(d<<5)>>3]+e;i=+h[b+(d<<5)+24>>3]-+h[b+(d<<5)+8>>3]+e;n=n-j-i;o=o-i*j;d=d+1|0}i=+(k|0);j=n*n-i*4.0*o;if(!(j<0.0)){e=+C(+j);g=i*2.0;f=(e-n)/g;g=(-n-e)/g;d=~~f;d=(d|0)==0?1:d;if(0>2){m=c[13918]|0;XL(84463,27,1,m)|0;h[p>>3]=i;h[p+8>>3]=n;h[p+16>>3]=o;h[p+24>>3]=j;h[p+32>>3]=e;zL(m,84491,p)|0;c[r>>2]=d;h[r+8>>3]=f;c[r+16>>2]=~~g;h[r+24>>3]=g;zL(m,84517,r)|0;h[q>>3]=(f*i+n)*f+o;h[q+8>>3]=(g*i+n)*g+o;zL(m,84539,q)|0}}else{h[m>>3]=j;_l(1,84436,m)|0;d=-1}l=s;return d|0}function Rs(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0.0;u=l;l=l+32|0;t=u+16|0;s=u;p=+h[a>>3];q=+h[a+8>>3];n=+h[a+16>>3];o=+h[a+24>>3];r=wx()|0;j=c[f>>2]|0;a=j-e|0;k=c[f+4>>2]|0;i=k-e|0;j=e-~~(p+(p>=0.0?.5:-.5))+j+~~(n+(n>=0.0?.5:-.5))|0;k=e-~~(q+(q>=0.0?.5:-.5))+k+~~(o+(o>=0.0?.5:-.5))|0;if((a|0)>-1)f=(a|0)/(d|0)|0;else f=((a+1|0)/(d|0)|0)+-1|0;if((i|0)>-1)m=(i|0)/(d|0)|0;else m=((i+1|0)/(d|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(d|0)|0;else j=((j+1|0)/(d|0)|0)+-1|0;if((k|0)>-1)i=(k|0)/(d|0)|0;else i=((k+1|0)/(d|0)|0)+-1|0;while(1){if((f|0)>(j|0))break;else a=m;while(1){if((a|0)>(i|0))break;Cx(r,f,a);a=a+1|0}f=f+1|0}k=b+4|0;c[k>>2]=Gx(r)|0;j=Fx(r)|0;m=b+8|0;c[m>>2]=j;w=+(e<<1|0);v=+(d|0);i=~~+N(+((n+w-p)/v));a=~~+N(+((o+w-q)/v));c[b>>2]=a+i;a:do if(0>2){f=c[13918]|0;c[s>>2]=g;c[s+4>>2]=j;c[s+8>>2]=i;c[s+12>>2]=a;zL(f,84395,s)|0;a=0;while(1){if((a|0)>=(c[m>>2]|0))break a;g=c[k>>2]|0;s=c[g+(a<<3)+4>>2]|0;c[t>>2]=c[g+(a<<3)>>2];c[t+4>>2]=s;zL(f,84422,t)|0;a=a+1|0}}while(0);zx(r);l=u;return}function Ss(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0.0,R=0.0;P=l;l=l+128|0;F=P+112|0;E=P+104|0;O=P+16|0;M=P;H=P+64|0;I=P+56|0;z=P+40|0;A=P+96|0;y=P+88|0;v=P+24|0;w=P+80|0;x=P+72|0;K=c[f+8>>2]|0;G=c[f+12>>2]|0;C=(a|0)==0?b:a;L=wx()|0;J=b+16|0;B=c[J>>2]|0;t=+h[B+16>>3];D=(c[g>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;t=+h[B+24>>3];B=(c[g+4>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;a:do if((c[f+16>>2]|0)==1){v=ww((mn(b)|0)<<2)|0;a=0;g=co(b)|0;while(1){if(!g)break;x=g+16|0;c[v+(a<<2)>>2]=c[(c[x>>2]|0)+112>>2];c[(c[x>>2]|0)+112>>2]=0;a=a+1|0;g=eo(b,g)|0}o=D-K|0;p=B-K|0;q=D+K|0;r=B+K|0;n=1;while(1){a=c[J>>2]|0;if((n|0)>(c[a+180>>2]|0))break;m=c[(c[a+184>>2]|0)+(n<<2)>>2]|0;i=c[m+16>>2]|0;t=+h[i+16>>3];a=~~(t+(t>=0.0?.5:-.5));t=+h[i+24>>3];g=~~(t+(t>=0.0?.5:-.5));t=+h[i+32>>3];f=~~(t+(t>=0.0?.5:-.5));t=+h[i+40>>3];i=~~(t+(t>=0.0?.5:-.5));b:do if((f|0)>(a|0)&(i|0)>(g|0)){a=o+a|0;j=p+g|0;f=q+f|0;k=r+i|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(e|0)|0;else j=((j+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)i=(f|0)/(e|0)|0;else i=((f+1|0)/(e|0)|0)+-1|0;if((k|0)>-1)f=(k|0)/(e|0)|0;else f=((k+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=j;while(1){if((a|0)>(f|0))break;Cx(L,g,a);a=a+1|0}g=g+1|0}a=co(m)|0;while(1){if(!a)break b;c[(c[a+16>>2]|0)+212>>2]=m;a=eo(m,a)|0}}while(0);n=n+1|0}r=z+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=A+4|0;p=y+4|0;o=co(b)|0;while(1){if(!o)break;OA(z,o);R=+h[z>>3];Q=+h[r>>3];m=D+~~(R+(R>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(Q+(Q>=0.0?.5:-.5))|0;c[s>>2]=n;g=o+16|0;a=c[g>>2]|0;c:do if(!(c[a+212>>2]|0)){c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];Xs(A,E,F);a=c[A>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];Ys(y,E,F);i=c[y>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;Cx(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Pm(C,o)|0;while(1){if(!a)break c;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];Zs(a,F,L,D,B,e,G);a=Rm(C,a)|0}}else{if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Pm(C,o)|0;while(1){if(!a)break c;if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)){c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];Zs(a,F,L,D,B,e,G)}a=Rm(C,a)|0}}while(0);o=eo(b,o)|0}a=0;g=co(b)|0;while(1){if(!g)break;c[(c[g+16>>2]|0)+112>>2]=c[v+(a<<2)>>2];a=a+1|0;g=eo(b,g)|0}_I(v)}else{r=v+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=w+4|0;p=x+4|0;o=co(b)|0;while(1){if(!o)break a;OA(v,o);Q=+h[v>>3];R=+h[r>>3];m=D+~~(Q+(Q>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(R+(R>=0.0?.5:-.5))|0;c[s>>2]=n;a=c[o+16>>2]|0;c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];Xs(w,E,F);a=c[w>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];Ys(x,E,F);i=c[x>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;Cx(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Pm(C,o)|0;while(1){if(!a)break;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];Zs(a,F,L,D,B,e,G);a=Rm(C,a)|0}o=eo(b,o)|0}}while(0);i=d+4|0;c[i>>2]=Gx(L)|0;j=d+8|0;c[j>>2]=Fx(L)|0;g=c[J>>2]|0;Q=+(K<<1|0);R=+(e|0);a=~~+N(+((+h[g+32>>3]+Q-+h[g+16>>3])/R));g=~~+N(+((+h[g+40>>3]+Q-+h[g+24>>3])/R));c[d>>2]=g+a;d:do if(0>2){f=c[13918]|0;d=Dn(b)|0;b=c[j>>2]|0;c[M>>2]=d;c[M+4>>2]=b;c[M+8>>2]=a;c[M+12>>2]=g;zL(f,84395,M)|0;a=0;while(1){if((a|0)>=(c[j>>2]|0))break d;b=c[i>>2]|0;M=c[b+(a<<3)+4>>2]|0;c[O>>2]=c[b+(a<<3)>>2];c[O+4>>2]=M;zL(f,84422,O)|0;a=a+1|0}}while(0);zx(L);l=P;return}function Ts(a,b){a=a|0;b=b|0;return (c[c[b>>2]>>2]|0)-(c[c[a>>2]>>2]|0)|0}function Us(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;h=j+16|0;i=j;k=c[a+4>>2]|0;g=c[a+8>>2]|0;c[d>>2]=0-(c[e>>2]|0);f=d+4|0;c[f>>2]=0-(c[e+4>>2]|0);a=0;e=k;while(1){if((a|0)>=(g|0))break;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];Ax(b,h);a=a+1|0;e=e+8|0}if(0>1){k=c[13918]|0;b=c[d>>2]|0;d=c[f>>2]|0;c[i>>2]=g;c[i+4>>2]=b;c[i+8>>2]=d;zL(k,84369,i)|0}l=j;return}function Vs(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;k=c[b+12>>2]|0;l=+h[i+(k<<5)>>3];m=+h[i+(k<<5)+8>>3];n=+h[i+(k<<5)+16>>3];o=+h[i+(k<<5)+24>>3];if(!((a|0)==0?(q=+(g<<1|0),p=+(f|0),(Ws((~~+N(+((q-l+n)/p))|0)/-2|0,(~~+N(+((q-m+o)/p))|0)/-2|0,b,d,e,f,i)|0)!=0):0))j=3;a:do if((j|0)==3?(Ws(0,0,b,d,e,f,i)|0)==0:0)if((~~+N(+(n-l))|0)<(~~+N(+(o-m))|0)){k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)<=(j|0)){g=j;break}if(Ws(j,a,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)>=(k|0))break;if(Ws(g,a,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)>=(k|0))break;if(Ws(g,a,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)<=(j|0))break;if(Ws(g,a,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)<=0)break;if(!(Ws(g,a,b,d,e,f,i)|0))a=a+-1|0;else break a}k=k+1|0}}else{k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)>=(k|0)){g=j;break}if(Ws(a,j,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)>=(k|0))break;if(Ws(a,g,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)<=(j|0))break;if(Ws(a,g,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)<=(j|0))break;if(Ws(a,g,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)>=0)break;if(!(Ws(a,g,b,d,e,f,i)|0))a=a+1|0;else break a}k=k+1|0}}while(0);return}function Ws(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;t=l;l=l+48|0;r=t+32|0;s=t+8|0;q=t;m=d+4|0;o=c[d+8>>2]|0;p=q+4|0;j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0)){n=5;break}v=j;u=c[v+4>>2]|0;c[q>>2]=(c[v>>2]|0)+a;c[p>>2]=u+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];if(Dx(e,r)|0){j=0;break}j=j+8|0;k=k+1|0}if((n|0)==5){d=c[d+12>>2]|0;x=+h[i+(d<<5)>>3];w=+h[i+(d<<5)+8>>3];c[f>>2]=(O(g,a)|0)-~~(x+(x>=0.0?.5:-.5));d=f+4|0;c[d>>2]=(O(g,b)|0)-~~(w+(w>=0.0?.5:-.5));j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0))break;u=j;v=c[u+4>>2]|0;c[q>>2]=(c[u>>2]|0)+a;c[p>>2]=v+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];Ax(e,r);j=j+8|0;k=k+1|0}if(0>1){j=c[13918]|0;u=c[f>>2]|0;v=c[d>>2]|0;c[s>>2]=o;c[s+4>>2]=a;c[s+8>>2]=b;c[s+12>>2]=u;c[s+16>>2]=v;zL(j,84335,s)|0;j=1}else j=1}l=t;return j|0}function Xs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;c[a>>2]=(c[b>>2]|0)-(c[d>>2]|0);c[a+4>>2]=e;return}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function Zs(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;x=A+96|0;w=A+80|0;r=A+48|0;s=A+32|0;y=A+16|0;z=A;n=A+64|0;h[y>>3]=+(c[b>>2]|0);t=y+8|0;h[t>>3]=+(c[b+4>>2]|0);a:do if((i|0)!=0?(u=a+16|0,m=c[(c[u>>2]|0)+8>>2]|0,(m|0)!=0):0){q=+(e|0);p=+(f|0);o=1.0/+(g|0);n=z+8|0;i=0;while(1){if((i|0)>=(c[m+4>>2]|0))break a;f=c[m>>2]|0;a=c[f+(i*48|0)>>2]|0;b=c[f+(i*48|0)+4>>2]|0;g=c[f+(i*48|0)+8>>2]|0;e=c[f+(i*48|0)+12>>2]|0;m=f+(i*48|0)+16|0;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];f=f+(i*48|0)+32|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];if(!g){c[y>>2]=c[a>>2];c[y+4>>2]=c[a+4>>2];c[y+8>>2]=c[a+8>>2];c[y+12>>2]=c[a+12>>2];m=a+16|0;c[z>>2]=c[m>>2];c[z+4>>2]=c[m+4>>2];c[z+8>>2]=c[m+8>>2];c[z+12>>2]=c[m+12>>2];m=2}else{c[y>>2]=c[r>>2];c[y+4>>2]=c[r+4>>2];c[y+8>>2]=c[r+8>>2];c[y+12>>2]=c[r+12>>2];c[z>>2]=c[a>>2];c[z+4>>2]=c[a+4>>2];c[z+8>>2]=c[a+8>>2];c[z+12>>2]=c[a+12>>2];m=1}j=+h[y>>3]+q;h[y>>3]=j;k=+h[t>>3]+p;h[t>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[y>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[t>>3]=j;j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Ks(w,x,d);while(1){if((m|0)>=(b|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];g=a+(m<<4)|0;c[z>>2]=c[g>>2];c[z+4>>2]=c[g+4>>2];c[z+8>>2]=c[g+8>>2];c[z+12>>2]=c[g+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Ks(w,x,d);m=m+1|0}if(e|0){c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[z>>2]=c[s>>2];c[z+4>>2]=c[s+4>>2];c[z+8>>2]=c[s+8>>2];c[z+12>>2]=c[s+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Ks(w,x,d)}i=i+1|0;m=c[(c[u>>2]|0)+8>>2]|0}}else v=4;while(0);if((v|0)==4){OA(n,c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0);c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];c[z+8>>2]=c[n+8>>2];c[z+12>>2]=c[n+12>>2];j=+h[z>>3]+ +(e|0);h[z>>3]=j;m=z+8|0;k=+h[m>>3]+ +(f|0);h[m>>3]=k;if(!(j>=0.0))j=(j+1.0)/+(g|0)+-1.0;else j=j/+(g|0);h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/+(g|0)+-1.0;else j=k/+(g|0);h[m>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Ks(w,x,d)}l=A;return}function _s(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;a:do if((a|0)<1)f=0-a|0;else{s=(e|0)==0;q=(f|0)==0;j=0;while(1){if((j|0)==(a|0)){f=0;break a}r=c[b+(j<<2)>>2]|0;g=s?r:e;k=c[d+(j<<3)>>2]|0;l=c[d+(j<<3)+4>>2]|0;m=+(k|0);n=m*.013888888888888888;o=+(l|0);p=o*.013888888888888888;i=co(r)|0;while(1){if(!i)break;f=c[i+16>>2]|0;t=c[f+132>>2]|0;h[t>>3]=+h[t>>3]+n;t=t+8|0;h[t>>3]=+h[t>>3]+p;t=f+16|0;h[t>>3]=+h[t>>3]+m;t=f+24|0;h[t>>3]=+h[t>>3]+o;f=c[f+108>>2]|0;if(f|0){t=f+56|0;h[t>>3]=+h[t>>3]+m;t=f+64|0;h[t>>3]=+h[t>>3]+o}b:do if(!q){f=Pm(g,i)|0;while(1){if(!f)break b;$s(f,k,l);f=Rm(g,f)|0}}while(0);i=eo(r,i)|0}at(r,k,l);j=j+1|0}}while(0);return f|0}function $s(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0,l=0.0,m=0,n=0;e=c[a+16>>2]|0;a=c[e+96>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+108>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+100>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+104>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}m=c[e+8>>2]|0;a:do if(m|0){l=+(b|0);j=+(d|0);b=c[m+4>>2]|0;a=0;while(1){if((a|0)>=(b|0))break a;k=c[m>>2]|0;d=c[k+(a*48|0)>>2]|0;f=c[k+(a*48|0)+4>>2]|0;g=c[k+(a*48|0)+8>>2]|0;i=c[k+(a*48|0)+12>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;n=d+(e<<4)|0;h[n>>3]=+h[n>>3]+l;n=d+(e<<4)+8|0;h[n>>3]=+h[n>>3]+j;e=e+1|0}if(g|0){n=k+(a*48|0)+16|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+24|0;h[n>>3]=+h[n>>3]+j}if(i|0){n=k+(a*48|0)+32|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+40|0;h[n>>3]=+h[n>>3]+j}a=a+1|0}}while(0);return}function at(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0;j=b+16|0;b=c[j>>2]|0;o=b+16|0;m=b+24|0;f=b+32|0;b=b+40|0;g=+(d|0);l=+h[f>>3]+g;i=+(e|0);n=+h[m>>3]+i;k=+h[b>>3]+i;h[o>>3]=+h[o>>3]+g;h[m>>3]=n;h[f>>3]=l;h[b>>3]=k;b=c[j>>2]|0;f=c[b+12>>2]|0;if((f|0)!=0?(a[f+81>>0]|0)!=0:0){o=f+56|0;h[o>>3]=+h[o>>3]+g;f=f+64|0;h[f>>3]=+h[f>>3]+i;f=1}else f=1;while(1){if((f|0)>(c[b+180>>2]|0))break;at(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[j>>2]|0}return}function bt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ls(a,b,d,e)|0;if(!f)a=1;else{a=_s(a,b,f,d,c[e+12>>2]|0)|0;_I(f)}return a|0}function ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+32|0;o=p;n=bt(a,b,d,e)|0;if(!n){dB(d);m=(c[d+16>>2]|0)+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[o+16>>2]=c[m+16>>2];c[o+20>>2]=c[m+20>>2];c[o+24>>2]=c[m+24>>2];c[o+28>>2]=c[m+28>>2];f=o+8|0;g=o+16|0;i=o+24|0;e=0;while(1){if((e|0)>=(a|0))break;k=c[(c[b+(e<<2)>>2]|0)+16>>2]|0;j=c[k+180>>2]|0;k=k+184|0;d=1;while(1){if((d|0)>(j|0))break;r=(c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+16|0;h[o>>3]=+h[(+h[o>>3]<+h[r>>3]?o:r)>>3];r=c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;q=r+16|0;h[f>>3]=+h[(+h[f>>3]<+h[r+24>>3]?o:q)+8>>3];h[g>>3]=+h[(+h[g>>3]>+h[r+32>>3]?o:q)+16>>3];h[i>>3]=+h[(+h[i>>3]>+h[r+40>>3]?o:q)+24>>3];d=d+1|0}e=e+1|0}c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[m+16>>2]=c[o+16>>2];c[m+20>>2]=c[o+20>>2];c[m+24>>2]=c[o+24>>2];c[m+28>>2]=c[o+28>>2]}l=p;return n|0}function dt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=l;l=l+16|0;f=g;if(!e)ma(84553,84559,1400,84566);d=et(a,d,d)|0;c[e+8>>2]=d;if(0){h=c[13918]|0;c[f>>2]=d;zL(h,84578,f)|0}c[e+12>>2]=0;c[e+20>>2]=0;ft(a,b,e)|0;l=g;return c[e+16>>2]|0}function et(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=i+4|0;g=Im(b,84708)|0;a:do if(g){c[h>>2]=f;h=(cM(g,122187,h)|0)==1;b=c[f>>2]|0;if(h&(b|0)>-1)d=b;else{switch(a[g>>0]|0){case 84:case 116:break;default:break a}d=e}}while(0);l=i;return d|0}function ft(a,b,c){a=a|0;b=b|0;c=c|0;return gt(Im(a,84591)|0,b,c)|0}function gt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+64|0;r=u+40|0;q=u+32|0;t=u+24|0;s=u+16|0;m=u+8|0;k=u;i=u+48|0;j=u+44|0;if(!e)ma(84553,84559,1292,84600);o=e+28|0;c[o>>2]=0;p=e+16|0;c[p>>2]=d;n=e+4|0;c[n>>2]=0;c[e+24>>2]=0;a:do if(b|0?(f=a[b>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:if(!(VJ(b,84618,5)|0)){c[p>>2]=4;m=ht(b+5|0,e)|0;c[k>>2]=j;m=(cM(m,122187,k)|0)>0;d=c[j>>2]|0;if(!(m&(d|0)>0))break a;c[n>>2]=d;break a}else{if(VJ(b,84624,6)|0)break a;c[p>>2]=5;c[m>>2]=i;m=(cM(b+5|0,84631,m)|0)>0;v=+g[i>>2];g[e>>2]=m&v>0.0?v:1.0;break a}case 99:{if(f<<24>>24!=99)break a;if(xJ(b,93039)|0)break a;c[p>>2]=1;break a}case 103:{if(f<<24>>24!=103)break a;if(xJ(b,96286)|0)break a;c[p>>2]=3;break a}case 110:{if(f<<24>>24!=110)break a;if(xJ(b,96273)|0)break a;c[p>>2]=2;break a}default:break a}while(0);if(0){d=c[13918]|0;XL(84634,11,1,d)|0;c[s>>2]=it(c[p>>2]|0)|0;zL(d,84646,s)|0;if((c[p>>2]|0)==5){h[t>>3]=+g[e>>2];zL(d,84659,t)|0}c[q>>2]=c[n>>2];zL(d,84672,q)|0;c[r>>2]=c[o>>2];zL(d,84685,r)|0}l=u;return c[p>>2]|0}function ht(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[b>>0]|0)==95){f=d+28|0;e=1;while(1){b=b+1|0;b:while(1){if(!e)break a;d=a[b>>0]|0;if(!(d<<24>>24))break a;switch(d<<24>>24|0){case 99:{g=10;break b}case 105:{g=9;break b}case 117:{g=11;break b}case 116:{g=12;break b}case 98:{d=32;break b}case 108:{g=7;break b}case 114:{g=8;break b}default:e=0}}if((g|0)==7){g=0;d=4}else if((g|0)==8){g=0;d=8}else if((g|0)==9){g=0;d=64}else if((g|0)==10){g=0;d=1}else if((g|0)==11){g=0;d=2}else if((g|0)==12){g=0;d=16}c[f>>2]=c[f>>2]|d}}while(0);return b|0}function it(a){a=a|0;switch(a|0){case 1:{a=93039;break}case 2:{a=96273;break}case 3:{a=96286;break}case 4:{a=84618;break}case 5:{a=84624;break}default:a=84698}return a|0}function jt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n;m=n+80|0;do if(a){if(!e){e=$I(1,20)|0;c[e+4>>2]=d>>>0>80?d:80}d=c[e>>2]|0;j=c[e+4>>2]|0;if(!d){h=100;d=a;i=$I(100,j)|0}else{h=d+100|0;i=aJ(c[e+8>>2]|0,O(h,j)|0)|0;VN(i+(O(j,d)|0)|0,0,j*100|0)|0;d=a}while(1){d=kt(k,d,b,m)|0;if(!d)break;a=c[e>>2]|0;f=h<<1;g=O(h,j)|0;if((a|0)==(h|0)){i=aJ(i,O(f,j)|0)|0;VN(i+g|0,0,g|0)|0;a=c[e>>2]|0}else f=h;a=i+(O(a,j)|0)|0;g=k;h=a+80|0;do{c[a>>2]=c[g>>2];a=a+4|0;g=g+4|0}while((a|0)<(h|0));c[e>>2]=(c[e>>2]|0)+1;h=f}if(c[m>>2]|0){m=e+16|0;c[m>>2]=c[m>>2]|1}d=c[e>>2]|0;if(!d){_I(i);_I(e);e=0;break}else{c[e+8>>2]=aJ(i,O(d,j)|0)|0;break}}while(0);l=n;return e|0}function kt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+80|0;h=j+64|0;i=j;c[f>>2]=0;do{g=a[d>>0]|0;d=d+1|0}while((XJ(g)|0)!=0);a:do switch(g|0){case 69:{c[b>>2]=0;d=lt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 101:{c[b>>2]=1;d=lt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 80:{c[b>>2]=2;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 112:{c[b>>2]=3;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 98:{c[b>>2]=4;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 66:{c[b>>2]=5;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 99:{d=nt(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=ot(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=9;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+24>>2];break a}else{c[b>>2]=14;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 67:{d=nt(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=ot(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=8;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+20>>2];break a}else{c[b>>2]=13;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 76:{c[b>>2]=6;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+12>>2];break}case 84:{c[b>>2]=7;d=pt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=pt(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=qt(d,b+24|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=pt(d,b+32|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=nt(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+16>>2];break}case 70:{c[b>>2]=10;d=pt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=nt(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+28>>2];break}case 83:{c[b>>2]=11;d=nt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+32>>2];break}case 73:{c[b>>2]=12;d=lt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=nt(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+36>>2];break}case 116:{c[b>>2]=15;d=rt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+44>>2];break}case 0:{d=0;break}default:{c[f>>2]=1;d=0}}while(0);l=j;return d|0}function lt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0;i=l;l=l+16|0;e=i;h[b>>3]=+tM(a,e);f=c[e>>2]|0;if(((f|0)!=(a|0)?(h[b+8>>3]=+tM(f,e),g=c[e>>2]|0,(f|0)!=(g|0)):0)?(h[b+16>>3]=+tM(g,e),d=c[e>>2]|0,(g|0)!=(d|0)):0){h[b+24>>3]=+tM(d,e);a=c[e>>2]|0;a=(d|0)==(a|0)?0:a}else a=0;l=i;return a|0}function mt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+4|0;g=k;a=st(a,j)|0;do if(a){d=c[j>>2]|0;i=$I(d,24)|0;c[b>>2]=d;e=i;f=0;while(1){if((f|0)>=(d|0)){d=9;break}h[e>>3]=+tM(a,g);d=c[g>>2]|0;if((a|0)==(d|0)){d=5;break}h[e+8>>3]=+tM(d,g);a=c[g>>2]|0;if((d|0)==(a|0)){d=7;break}h[e+16>>3]=0.0;e=e+24|0;d=c[b>>2]|0;f=f+1|0}if((d|0)==5){c[j>>2]=f;_I(i);a=0;break}else if((d|0)==7){c[j>>2]=f;_I(i);a=0;break}else if((d|0)==9){c[j>>2]=f;c[b+4>>2]=i;break}}else a=0;while(0);l=k;return a|0}function nt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;b=st(b,i)|0;f=c[i>>2]|0;do if(!((b|0)==0|(f|0)<1)){while(1){h=a[b>>0]|0;e=h<<24>>24==0;if(e^h<<24>>24!=45)b=b+1|0;else break}if(!e){h=$I(f+1|0,1)|0;g=h;e=f;while(1){b=b+1|0;if((e|0)<=0){e=9;break}e=a[b>>0]|0;if(!(e<<24>>24)){e=8;break}a[g>>0]=e;e=(c[i>>2]|0)+-1|0;c[i>>2]=e;g=g+1|0}if((e|0)==8){_I(h);b=0;break}else if((e|0)==9){a[g>>0]=0;c[d>>2]=h;break}}else b=0}else b=0;while(0);l=j;return b|0}function ot(b,d){b=b|0;d=d|0;var e=0;e=a[b>>0]|0;switch(e|0){case 91:{b=tt(b+1|0,d)|0;break}case 40:{b=ut(b+1|0,d)|0;break}case 47:case 35:{c[d>>2]=0;c[d+8>>2]=b;break}default:if(!(gK(e)|0))b=0;else{c[d>>2]=0;c[d+8>>2]=b}}return b|0}function pt(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0;f=l;l=l+16|0;d=f;e=+tM(a,d);d=c[d>>2]|0;if((d|0)==(a|0))d=0;else h[b>>3]=e;l=f;return d|0}function qt(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;a=st(a,e)|0;e=c[e>>2]|0;c[b>>2]=(e|0)<0?0:e|0?2:1;l=d;return a|0}function rt(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=YJ(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function st(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=BL(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function tt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;c[b>>2]=1;n=b+8|0;i=pt(a,n)|0;do if(((((i|0)!=0?(j=pt(i,b+16|0)|0,(j|0)!=0):0)?(e=pt(j,b+24|0)|0,(e|0)!=0):0)?(f=pt(e,b+32|0)|0,(f|0)!=0):0)?(k=b+40|0,d=st(f,k)|0,(d|0)!=0):0){b=c[k>>2]|0;f=$I(b,8)|0;e=0;while(1){if((e|0)>=(b|0)){d=13;break}d=pt(d,m)|0;if(!d){d=9;break}g[f+(e<<3)>>2]=+h[m>>3];d=nt(d,f+(e<<3)+4|0)|0;if(!d){d=12;break}e=e+1|0;b=c[k>>2]|0}if((d|0)==9){_I(f);a=0;break}else if((d|0)==12){_I(f);a=0;break}else if((d|0)==13){c[n+36>>2]=f;break}}else a=0;while(0);l=o;return a|0}function ut(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;c[b>>2]=2;k=pt(a,b+8|0)|0;do if(((((((k|0)!=0?(m=pt(k,b+16|0)|0,(m|0)!=0):0)?(e=pt(m,b+24|0)|0,(e|0)!=0):0)?(f=pt(e,b+32|0)|0,(f|0)!=0):0)?(i=pt(f,b+40|0)|0,(i|0)!=0):0)?(j=pt(i,b+48|0)|0,(j|0)!=0):0)?(o=b+56|0,d=st(j,o)|0,(d|0)!=0):0){e=c[o>>2]|0;i=$I(e,8)|0;f=0;while(1){if((f|0)>=(e|0)){d=15;break}d=pt(d,n)|0;if(!d){d=11;break}g[i+(f<<3)>>2]=+h[n>>3];d=nt(d,i+(f<<3)+4|0)|0;if(!d){d=14;break}f=f+1|0;e=c[o>>2]|0}if((d|0)==11){_I(i);a=0;break}else if((d|0)==14){_I(i);a=0;break}else if((d|0)==15){c[b+60>>2]=i;break}}else a=0;while(0);l=p;return a|0}function vt(a,b,c){a=a|0;b=b|0;c=c|0;return jt(a,b,c,0)|0}function wt(a){a=a|0;return vt(a,0,0)|0}function xt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+12>>2]|0;if(a|0){f=c[a+8>>2]|0;g=a+4|0;h=(e|0)==0;b=0;while(1){if((b|0)>=(c[a>>2]|0))break;d=f+(O(c[g>>2]|0,b)|0)|0;if(!h)gb[e&127](d);yt(d);b=b+1|0}_I(f);_I(a)}return}function yt(a){a=a|0;switch(c[a>>2]|0){case 3:case 2:{_I(c[a+8+4>>2]|0);break}case 5:case 4:{_I(c[a+8+4>>2]|0);break}case 6:{_I(c[a+8+4>>2]|0);break}case 7:{_I(c[a+40>>2]|0);break}case 9:case 8:{_I(c[a+8>>2]|0);break}case 14:case 13:{zt(a+8|0);break}case 10:{_I(c[a+16>>2]|0);break}case 11:{_I(c[a+8>>2]|0);break}case 12:{_I(c[a+40>>2]|0);break}default:{}}return}function zt(a){a=a|0;var b=0,d=0,e=0;switch(c[a>>2]|0){case 1:{e=a+40|0;b=a+8+36|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(c[e>>2]|0))break;_I(c[d+(a<<3)+4>>2]|0);a=a+1|0}_I(d);break}case 2:{e=a+56|0;d=a+60|0;a=0;while(1){b=c[d>>2]|0;if((a|0)>=(c[e>>2]|0))break;_I(c[b+(a<<3)+4>>2]|0);a=a+1|0}_I(b);break}default:{}}return}function At(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;k=o+4|0;n=o;c[d>>2]=0;c[e>>2]=(qn(ro(b)|0)|0)!=0&1;f=c[42228]|0;a:do if(f|0?(h=Jm(b,f)|0,i=a[h>>0]|0,i<<24>>24):0){f=19444;while(1){g=c[f>>2]|0;if(!g)break a;if(i<<24>>24==(a[g>>0]|0)?(xJ(h,g)|0)==0:0)break;f=f+12|0}c[d>>2]=c[f+4>>2];c[e>>2]=c[f+8>>2]}while(0);f=c[42239]|0;if((f|0?(c[e>>2]|0)==1:0)?(j=Jm(b,f)|0,a[j>>0]|0):0)Bt(j,e);f=c[42240]|0;if((f|0?(c[d>>2]|0)==1:0)?(m=Jm(b,f)|0,a[m>>0]|0):0)Bt(m,d);if(a[(c[b+16>>2]|0)+153>>0]|0){j=b+-48|0;i=ro(c[((c[b>>2]&3|0)==2?b:j)+40>>2]|0)|0;m=c[b>>2]&3;At(an(i,c[((m|0)==2?b:j)+40>>2]|0,c[((m|0)==3?b:b+48|0)+40>>2]|0,0,0)|0,k,n);c[e>>2]=c[k>>2]|c[e>>2];c[d>>2]=c[n>>2]|c[d>>2]}l=o;return}function Bt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;k=o+4|0;j=0;e=0;a:while(1){c[d>>2]=e;g=(j|0)<4;h=(j|0)==3;i=(j|0)==0;while(1){if(!(g&(a[b>>0]|0)!=0))break a;c[k>>2]=0;f=Ct(b,k)|0;e=c[k>>2]|0;if(!e){n=5;break a}b=(e|0)==8;if(!(h&b)){if(!(i&b))break;if(a[f>>0]|0)break}c[k>>2]=0;b=f}e=c[d>>2]|e<<(j<<3);j=j+1|0;b=f}if((n|0)==5){c[m>>2]=b;_l(0,84713,m)|0}l=o;return}function Ct(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;c[e>>2]=0;d=Dt(a,19504,e)|0;if((d|0)==(a|0)){while(1){d=Dt(a,19520,e)|0;if((a|0)==(d|0))break;else a=d}d=Dt(a,19568,e)|0}a=c[e>>2]|0;if((a|0)!=0&(a&15|0)==0){a=a|1;c[e>>2]=a}c[b>>2]=c[b>>2]|a;l=f;return d|0}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=c[b>>2]|0;if(!e)break;f=rJ(e)|0;if(!(VJ(a,e,f)|0)){g=4;break}b=b+8|0}if((g|0)==4){c[d>>2]=c[d>>2]|c[b+4>>2];a=a+f|0}return a|0}function Et(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0;g=0;d=0.0;while(1){if((g|0)==4)break;f=b>>(g<<3)&15;e=1336;while(1){if(!(c[e+16>>2]|0))break;if((f|0)==(c[e>>2]|0)){i=6;break}e=e+24|0}if((i|0)==6){i=0;d=+h[e+8>>3]+d}g=g+1|0}return +(d*10.0*+EA(a,c[42232]|0,1.0,0.0))}function Ft(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0;p=l;l=l+96|0;m=p+80|0;o=p;k=f>4.0?f*.0875:.35;i=+h[d+8>>3];n=i*k;j=+h[d>>3];k=j*k;e=+h[b>>3];j=e+j;h[m>>3]=j;f=+h[b+8>>3];i=i+f;h[m+8>>3]=i;d=o+64|0;if(!(g&32)){c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=o+32|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];f=i;e=j}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];b=o+32|0;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2]}h[o+16>>3]=e+n;h[o+24>>3]=f-k;h[o+48>>3]=e-n;h[o+56>>3]=f+k;do if(!(g&64))if(!(g&128)){HD(a,o+16|0,3,g>>>4&1^1);break}else{HD(a,o+32|0,3,g>>>4&1^1);break}else HD(a,o,3,g>>>4&1^1);while(0);l=p;return}function Gt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0;x=l;l=l+160|0;n=x+144|0;w=x;q=e*4.0;y=(g&32|0)==0;q=!(q<f)|y?.45:f/q*.45;s=!(f>1.0)|y?0.0:(f+-1.0)*.05/e;u=+h[d+8>>3];r=-u;v=q*r;t=+h[d>>3];q=t*q;r=s*r;s=t*s;p=+h[b>>3];e=p+t;h[n>>3]=e;o=+h[b+8>>3];f=u+o;h[n+8>>3]=f;t=t*.5+p;u=u*.5+o;d=w+128|0;if(y){c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];y=w+64|0;c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];i=o;j=p;k=o;m=p;f=o;e=p}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[w>>2]=c[b>>2];c[w+4>>2]=c[b+4>>2];c[w+8>>2]=c[b+8>>2];c[w+12>>2]=c[b+12>>2];y=w+64|0;c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];i=f+s;j=e+r;k=f-s;m=e-r}h[w+16>>3]=e-v;h[w+24>>3]=f-q;h[w+32>>3]=t-r;h[w+40>>3]=u-s;h[w+48>>3]=m;h[w+56>>3]=k;h[w+80>>3]=j;h[w+88>>3]=i;h[w+96>>3]=t+r;h[w+104>>3]=u+s;h[w+112>>3]=e+v;h[w+120>>3]=f+q;do if(!(g&64))if(!(g&128)){HD(a,w,9,1);break}else{HD(a,w+48|0,6,1);break}else HD(a,w,6,1);while(0);l=x;return}function Ht(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;q=l;l=l+64|0;p=q;t=+h[d+8>>3];s=+h[d>>3];k=+h[b>>3];e=k+s;m=+h[b+8>>3];f=m+t;i=k+s*.2;j=m+t*.2;k=k+s*.6;m=m+t*.6;h[p>>3]=i-t;h[p+8>>3]=j+s;n=p+16|0;h[n>>3]=i+t;o=p+24|0;h[o>>3]=j-s;h[p+32>>3]=k+t;h[p+40>>3]=m-s;h[p+48>>3]=k-t;h[p+56>>3]=m+s;if(!(g&64)){if(g&128|0){d=2;g=1;r=3}}else{d=3;g=0;r=3}if((r|0)==3){h[p+(g<<4)>>3]=i;h[p+(g<<4)+8>>3]=j;h[p+(d<<4)>>3]=k;h[p+(d<<4)+8>>3]=m}HD(a,p,4,1);c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];h[n>>3]=e;h[o>>3]=f;KD(a,p,2);l=q;return}function It(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+64|0;n=o;j=+h[d+8>>3];r=j*-.4;i=+h[d>>3];q=i*.4;t=+h[b>>3];e=t+i*.8;s=+h[b+8>>3];f=s+j*.8;i=t+i;j=s+j;h[n>>3]=t+r;k=n+8|0;h[k>>3]=s+q;d=n+16|0;h[d>>3]=t-r;m=n+24|0;h[m>>3]=s-q;h[n+32>>3]=e-r;h[n+40>>3]=f-q;h[n+48>>3]=e+r;h[n+56>>3]=f+q;if(!(g&64)){if(g&128|0){c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];d=2;p=5}}else{c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];d=3;p=5}if((p|0)==5){h[n+(d<<4)>>3]=e;h[n+(d<<4)+8>>3]=f}HD(a,n,4,g>>>4&1^1);h[n>>3]=e;h[k>>3]=f;h[n+16>>3]=i;h[m>>3]=j;KD(a,n,2);l=o;return}function Jt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;j=l;l=l+80|0;i=j;n=+h[d+8>>3];k=n*-.3333333333333333;p=+h[d>>3];f=p*.3333333333333333;q=+h[b>>3];m=q+p*.5;o=+h[b+8>>3];e=o+n*.5;d=i+64|0;h[i+64>>3]=q+p;h[i+72>>3]=o+n;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];h[i+16>>3]=m+k;h[i+24>>3]=e+f;d=i+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[i+48>>3]=m-k;h[i+56>>3]=e-f;do if(!(g&64)){d=g>>>4&1^1;if(!(g&128)){HD(a,i,4,d);break}else{HD(a,i,3,d);break}}else HD(a,d,3,g>>>4&1^1);while(0);l=j;return}function Kt(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+32|0;i=g;k=+h[c>>3];e=+h[c+8>>3];d=+C(+(e*e+k*k))*.5;m=+h[b>>3];k=k*.5;h[i>>3]=m+k-d;j=+h[b+8>>3];e=e*.5;h[i+8>>3]=j-d+e;h[i+16>>3]=m+d+k;h[i+24>>3]=j+d+e;GD(a,i,2,f>>>4&1^1);l=g;return}function Lt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;q=t+48|0;r=t+16|0;s=t;n=f>4.0?f*.125:.5;p=+h[b>>3];o=+h[d>>3];i=+h[b+8>>3];m=+h[d+8>>3];e=m*n;f=o*n;c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];h[r+16>>3]=o+p;h[r+24>>3]=m+i;h[q>>3]=n*(o-m)+p;j=n*(m+o);k=j+i;h[q+8>>3]=k;h[q+48>>3]=j+p;i=n*(m-o)+i;h[q+56>>3]=i;o=e*-.95;m=o+f+p;n=f*1.3333333333333333;if(!(g&32)){e=e*1.3333333333333333;j=f*-.33333333333333326;i=i-e;f=k-e;e=m-n}else{e=e*1.3333333333333333;j=f*2.333333333333333;i=i+e;f=k+e;e=m+n}h[q+16>>3]=e;h[q+24>>3]=f;h[q+32>>3]=j-o+p;h[q+40>>3]=i;KD(a,r,2);if(!(g&64)){if(g&128|0)PA(s,q,3,.5,q,0)}else PA(s,q,3,.5,0,q);JD(a,q,4,0,0,0);l=t;return}function Mt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0;g=l;l=l+32|0;i=g;e=+h[d>>3]+ +h[b>>3];f=+h[d+8>>3]+ +h[b+8>>3];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=e;h[i+24>>3]=f;KD(a,i,2);l=g;return}function Nt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+80|0;j=n+72|0;k=n+8|0;m=n;i=+Et(a,g);i=i*i;h[m>>3]=i;c[f+12>>2]=g;g=f+32|0;a=e+3|0;f=b+(a<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];if((e|0)>(d|0)?(o=+h[b+(e<<4)>>3]-+h[f>>3],p=+h[b+(e<<4)+8>>3]-+h[b+(a<<4)+8>>3],p*p+o*o<i):0)e=e+-3|0;s=k+48|0;r=b+(e<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];q=k+32|0;a=b+(e+1<<4)|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];f=k+16|0;d=b+(e+2<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[j>>2]=k;c[j+4>>2]=m;Fz(j,26,k,1);c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];c[a>>2]=c[q>>2];c[a+4>>2]=c[q+4>>2];c[a+8>>2]=c[q+8>>2];c[a+12>>2]=c[q+12>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];m=b+(e+3<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];l=n;return e|0}function Ot(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a>>2]|0;d=+h[b>>3]-+h[f>>3];e=+h[b+8>>3]-+h[f+8>>3];return e*e+d*d<=+h[c[a+4>>2]>>3]|0}function Pt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0;o=l;l=l+80|0;k=o+72|0;m=o+8|0;n=o;j=+Et(a,g);j=j*j;h[n>>3]=j;c[f+8>>2]=g;f=f+16|0;a=b+(d<<4)|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];if(!((e|0)>(d|0)?(i=d+3|0,p=+h[a>>3]-+h[b+(i<<4)>>3],q=+h[b+(d<<4)+8>>3]-+h[b+(i<<4)+8>>3],q*q+p*p<j):0))i=d;e=b+(i+3<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];g=m+16|0;d=b+(i+2<<4)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];r=m+32|0;a=b+(i+1<<4)|0;c[r>>2]=c[a>>2];c[r+4>>2]=c[a+4>>2];c[r+8>>2]=c[a+8>>2];c[r+12>>2]=c[a+12>>2];s=m+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[k>>2]=s;c[k+4>>2]=n;Fz(k,26,m,0);n=b+(i<<4)|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];l=o;return i|0}function Qt(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0;u=(g|0)!=0;l=(i|0)!=0;if(!((e|0)==(d|0)&(u&l))){if(l){j=+Et(a,i);k=+h[b+(e<<4)>>3];p=+h[b+(e<<4)+8>>3];l=e+3|0;r=b+(l<<4)|0;n=+h[r>>3];l=b+(l<<4)+8|0;o=+h[l>>3];t=k-n;s=p-o;t=+C(+(s*s+t*t))*.9;j=j>=t?t:j;if(p==o){m=(k<n?-j:j)+n;j=p}else{m=k;j=(p<o?-j:j)+o}w=e+1|0;h[b+(w<<4)>>3]=k;h[b+(w<<4)+8>>3]=p;e=b+(e+2<<4)|0;h[r>>3]=m;h[l>>3]=j;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];c[f+12>>2]=i;h[f+32>>3]=n;h[f+40>>3]=o}if(u){m=+Et(a,g);l=b+(d<<4)|0;k=+h[l>>3];j=+h[b+(d<<4)+8>>3];w=d+3|0;o=+h[b+(w<<4)>>3];p=+h[b+(w<<4)+8>>3];t=k-o;s=j-p;t=+C(+(s*s+t*t))*.9;m=m>=t?t:m;if(j==p){n=(k<o?m:-m)+k;m=j}else{n=k;m=(j<p?m:-m)+j}w=d+1|0;v=b+(w<<4)|0;h[v>>3]=n;h[b+(w<<4)+8>>3]=m;c[l>>2]=c[v>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[l+12>>2]=c[v+12>>2];v=d+2|0;h[b+(v<<4)>>3]=o;h[b+(v<<4)+8>>3]=p;v=16}}else{r=b+(e<<4)|0;s=+h[r>>3];t=+h[b+(e<<4)+8>>3];l=e+3|0;u=b+(l<<4)|0;k=+h[u>>3];l=b+(l<<4)+8|0;j=+h[l>>3];m=+Et(a,g);q=+Et(a,i);n=s-k;p=t-j;n=+C(+(p*p+n*n));w=!(q+m>=n);n=n*.3333333333333333;m=w?m:n;n=w?q:n;if(t==j){w=s<k;p=(w?-n:n)+k;q=(w?m:-m)+s;o=t;m=t}else{w=t<j;p=s;q=s;o=(w?m:-m)+t;m=(w?-n:n)+j}w=e+1|0;v=b+(w<<4)|0;h[v>>3]=q;h[b+(w<<4)+8>>3]=o;c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];v=b+(e+2<<4)|0;h[u>>3]=p;h[l>>3]=m;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];c[f+12>>2]=i;h[f+32>>3]=s;h[f+40>>3]=t;v=16}if((v|0)==16){c[f+8>>2]=g;h[f+16>>3]=k;h[f+24>>3]=j}return}function Rt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;n=+h[b>>3];k=+h[c>>3]-n;o=+h[b+8>>3];l=+h[c+8>>3]-o;j=d*10.0/(+C(+(k*k+l*l))+.0001);k=j*((k>=0.0?.0001:-.0001)+k);j=((l>=0.0?.0001:-.0001)+l)*j;l=k*.5;m=j*.5;i=n-m;f=o-l;n=m+n;l=o+l;o=i+k;m=f+j;k=n+k;j=l+j;g=o>k?o:k;g=n>g?n:g;d=m>j?m:j;d=l>d?l:d;k=o<k?o:k;k=n<k?n:k;j=m<j?m:j;j=l<j?l:j;h[a>>3]=i<k?i:k;h[a+8>>3]=f<j?f:j;h[a+16>>3]=i>g?i:g;h[a+24>>3]=f>d?f:d;return}function St(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;q=l;l=l+48|0;m=q+32|0;k=q+16|0;p=q;n=(c[a+16>>2]|0)+12|0;o=c[n>>2]|0;c[n>>2]=b;FD(a,c[(c[a>>2]|0)+336>>2]|0);OD(a,g);t=+h[e>>3]-+h[d>>3];b=e+8|0;s=+h[b>>3]-+h[d+8>>3];r=10.0/(+C(+(t*t+s*s))+.0001);h[e>>3]=r*((t>=0.0?.0001:-.0001)+t);h[b>>3]=((s>=0.0?.0001:-.0001)+s)*r;b=0;while(1){if((b|0)>=4)break;j=i>>(b<<3)&255;if(!j)break;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];Tt(p,a,k,m,f,g,j);c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];b=b+1|0}c[n>>2]=o;l=q;return}function Tt(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+32|0;m=q+16|0;k=q;n=i&15;j=1336;while(1){o=c[j>>2]|0;if(!o)break;if((n|0)==(o|0)){p=4;break}j=j+24|0}if((p|0)==4){r=+h[j+8>>3]*f;h[e>>3]=r*+h[e>>3];o=e+8|0;h[o>>3]=r*+h[o>>3];p=c[j+16>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];jb[p&15](b,k,m,f,g,i);h[d>>3]=+h[e>>3]+ +h[d>>3];p=d+8|0;h[p>>3]=+h[o>>3]+ +h[p>>3]};c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=q;return}function Ut(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+8|0;f=i;d=Im(b,84815)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else{d=Im(b,84827)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else d=0}if((h|0)==5){d=vt(e,0,120)|0;if(!d){c[f>>2]=Dn(b)|0;_l(0,84834,f)|0;c[g>>2]=e;_l(3,84887,g)|0}}l=i;return d|0}function Vt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;f=vw(304)|0;if(!f)_l(1,84895,g)|0;e=a+16|0;a=c[e>>2]|0;c[f>>2]=a;c[e>>2]=f;if(!a){c[f+144>>2]=3;c[f+148>>2]=0;h[f+152>>3]=1.0}else{b=f+16|0;d=a+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=f+56|0;d=a+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[f+144>>2]=c[a+144>>2];c[f+148>>2]=c[a+148>>2];h[f+152>>3]=+h[a+152>>3];c[f+136>>2]=c[a+136>>2];b=f+96|0;d=a+96|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0))}l=g;return f|0}function Wt(a){a=a|0;var b=0;a=a+16|0;b=c[a>>2]|0;if(!b)ma(84921,84925,117,84932);else{_I(c[b+212>>2]|0);_I(c[b+208>>2]|0);_I(c[b+216>>2]|0);_I(c[b+220>>2]|0);_I(c[b+224>>2]|0);_I(c[b+228>>2]|0);_I(c[b+232>>2]|0);_I(c[b+236>>2]|0);_I(c[b+240>>2]|0);_I(c[b+244>>2]|0);_I(c[b+248>>2]|0);_I(c[b+252>>2]|0);_I(c[b+256>>2]|0);_I(c[b+272>>2]|0);_I(c[b+284>>2]|0);_I(c[b+280>>2]|0);c[a>>2]=c[b>>2];_I(b);return}}function Xt(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=c[d+16>>2]|0;k=c[d+152>>2]|0;if((e|0)!=0&(k&32768|0)!=0)c[l+192>>2]=e;if(((k&65536|0)!=0?(c[l+212>>2]=qw(i,j)|0,(f|0)!=0):0)?(a[f>>0]|0)!=0:0){c[l+208>>2]=qw(f,j)|0;d=1}else d=0;do if(k&4194304){if(g|0?a[g>>0]|0:0){c[l+228>>2]=qw(g,j)|0;d=l+260|0;b[d>>1]=b[d>>1]|1;d=1;break}e=c[l+192>>2]|0;if(e){c[l+228>>2]=GL(e)|0;d=1}}while(0);if((h|0)!=0&(k&8388608|0)!=0?(a[h>>0]|0)!=0:0){c[l+244>>2]=qw(h,j)|0;d=1}return d|0}function Yt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;i=j;h=j+8|0;g=c[(c[b>>2]|0)+168>>2]|0;f=c[(c[(c[g+16>>2]|0)+8>>2]|0)+92>>2]|0;Zt(b,e);b=Im(d,86799)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0){fm(e,b)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}else{if((g|0)!=(d|0)&(f|0)!=0){fm(e,f)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}c[f>>2]=b+1;a[b>>0]=95}switch(Co(d)|0){case 0:{f=(g|0)==(d|0)?96286:84946;b=(c[d>>2]|0)>>>4;break}case 1:{f=96273;b=(c[d>>2]|0)>>>4;break}case 2:{f=96237;b=(c[d>>2]|0)>>>4;break}default:{f=0;b=0}}fm(e,f)|0;c[i>>2]=b;pL(h,84952,i)|0;fm(e,h)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}l=j;return b|0}function Zt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+144|0;h=i;g=i+8|0;e=c[b+160>>2]|0;if((e|0)>1?c[b+152>>2]&64|0:0){fm(d,c[(c[(c[b>>2]|0)+308>>2]|0)+(e<<2)>>2]|0)|0;f=d+4|0;e=c[f>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0){dm(d,1)|0;e=c[f>>2]|0}c[f>>2]=e+1;a[e>>0]=95}f=c[b+196>>2]|0;e=c[b+200>>2]|0;if((f|0)>0|(e|0)>0){c[h>>2]=f;c[h+4>>2]=e;pL(g,84956,h)|0;fm(d,g)|0}l=i;return}function _t(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;s=l;l=l+48|0;p=s+16|0;f=s+32|0;q=s;r=+h[(c[a+16>>2]|0)+152>>3];o=$t(d,0,f)|0;if((o+-1|0)>>>0>=2){e=+h[b+16>>3];k=(e+ +h[b>>3])*.5;h[q>>3]=k;i=+h[b+24>>3];m=(i+ +h[b+8>>3])*.5;h[q+8>>3]=m;k=e-k;m=i-m;n=r>.5;if(n)OD(a,.5);j=c[f>>2]|0;i=0.0;f=c[j+8>>2]|0;while(1){d=c[f>>2]|0;if(!d)break;b=f+4|0;if(+g[b>>2]==0.0)e=i;else{DD(a,d);if(!(c[f+12>>2]|0))e=6.283185307179586;else e=+g[b>>2]*6.283185307179586+i;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];b=_E(p,k,m,i,e)|0;JD(a,c[b>>2]|0,c[b+4>>2]|0,0,0,1);XI(b)}i=e;f=f+12|0}if(n)OD(a,r);au(j)}l=s;return o|0}function $t(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r+8|0;n=r;q=vw(12)|0;i=GL(b)|0;a:do if(!d){d=1;f=i;while(1){switch(a[f>>0]|0){case 0:break a;case 58:{d=d+1|0;break}default:{}}f=f+1|0}}while(0);c[q+4>>2]=i;p=vw((d*12|0)+12|0)|0;c[q+8>>2]=p;m=1.0;h=0;d=0;f=i;while(1){f=DL(f,93017)|0;if(!f){f=20;break}j=+bu(f);if(!(j>=0.0)){f=17;break}k=j-m;if(k>0.0)if((c[4920]|0)!=0?!(k<1.0e-05&k>-1.0e-05):0){c[n>>2]=b;_l(0,84967,n)|0;c[4920]=0;j=m;d=3}else j=m;k=m-j;if(j>0.0)a[p+(h*12|0)+8>>0]=1;if(a[f>>0]|0)c[p+(h*12|0)>>2]=f;f=h+1|0;g[p+(h*12|0)+4>>2]=j;if(k<1.0e-05&k>-1.0e-05){h=f;f=30;break}else{m=k;h=f;f=0}}b:do if((f|0)==17){if(!(c[4920]|0))d=1;else{c[o>>2]=b;_l(1,85002,o)|0;c[4920]=0;d=2}au(q)}else if((f|0)==20)if(m>0.0){f=0;i=0;while(1){if((f|0)>=(h|0))break;o=i+(+g[p+(f*12|0)+4>>2]==0.0&1)|0;f=f+1|0;i=o}if((i|0)<=0){f=p+((h+-1|0)*12|0)+4|0;g[f>>2]=m+ +g[f>>2];f=30;break}j=m/+(i|0);f=0;while(1){if((f|0)>=(h|0)){f=30;break b}i=p+(f*12|0)+4|0;if(+g[i>>2]==0.0)g[i>>2]=j;f=f+1|0}}else f=30;while(0);if((f|0)==30){while(1){f=h+-1|0;if((h|0)<=0)break;if(+g[p+(f*12|0)+4>>2]>0.0)break;else h=f}c[p+(h*12|0)>>2]=0;c[q>>2]=h;c[e>>2]=q}l=r;return d|0}function au(a){a=a|0;_I(c[a+4>>2]|0);_I(c[a+8>>2]|0);_I(a);return}function bu(b){b=b|0;var d=0.0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;b=WJ(b,59)|0;if(!b)d=0.0;else{g=b+1|0;a[b>>0]=0;d=+tM(g,e);d=(d>=0.0?(c[e>>2]|0)!=(g|0):0)?d:-1.0}l=f;return +d}function cu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0;t=l;l=l+80|0;i=t+64|0;r=t;s=+h[(c[a+16>>2]|0)+152>>3];q=$t(d,0,i)|0;if((q+-1|0)>>>0>=2){if(!e){c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];p=r+16|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;o=b+32|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+48|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}else{p=b+32|0;c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+16|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];p=r+48|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}k=r+16|0;m=+h[k>>3];f=+h[r>>3];n=m-f;o=r+32|0;h[o>>3]=f;h[k>>3]=f;p=s>.5;if(p)OD(a,.5);i=c[i>>2]|0;j=r+48|0;e=c[i+8>>2]|0;while(1){d=c[e>>2]|0;if(!d)break;b=e+4|0;if(!(+g[b>>2]==0.0)){DD(a,d);if(!(c[e+12>>2]|0))f=m;else f=n*+g[b>>2]+ +h[r>>3];h[o>>3]=f;h[k>>3]=f;HD(a,r,4,1);f=+h[k>>3];h[j>>3]=f;h[r>>3]=f}e=e+12|0}if(p)OD(a,s);au(i)}l=t;return q|0}function du(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;g=f>>>16^2;c[d+264>>2]=g;h=d+268|0;c[h>>2]=g+2;g=d+272|0;_I(c[g>>2]|0);d=vw(c[h>>2]<<4)|0;c[g>>2]=d;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];g=d+16|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];if(!(e&8192))fD(a,d,d,2)|0;if(!f)Zv(d)}return}function eu(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+144|0;c=q+80|0;e=q+16|0;f=q;k=+h[b>>3];o=a+16|0;m=+h[o>>3];if(!(((((((((!(k>m)?(n=+h[a>>3],!(k<n)):0)?(d=+h[b+8>>3],i=+h[a+24>>3],!(d>i)):0)?(j=+h[a+8>>3],!(d<j)):0)?(k=+h[b+16>>3],!(k>m|k<n)):0)?(k=+h[b+24>>3],!(k>i|k<j)):0)?(k=+h[b+32>>3],!(k>m|k<n)):0)?(k=+h[b+40>>3],!(k>i|k<j)):0)?(k=+h[b+48>>3],!(k>m|k<n)):0)?(n=+h[b+56>>3],!(n>i|n<j)):0))p=11;a:do if((p|0)==11){if(!(fu(b)|0)){PA(f,b,3,.5,c,e);eu(a,c);eu(a,e);break}f=a+24|0;g=a+8|0;e=0;while(1){if((e|0)==4)break a;d=+h[b+(e<<4)>>3];if(!(d>+h[o>>3])){if(d<+h[a>>3]){c=a;p=16}}else{c=o;p=16}if((p|0)==16){p=0;h[c>>3]=d}d=+h[b+(e<<4)+8>>3];if(!(d>+h[f>>3])){if(d<+h[g>>3]){c=a;p=19}}else{c=o;p=19}if((p|0)==19){p=0;h[c+8>>3]=d}e=e+1|0}}while(0);l=q;return}function fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=l;l=l+48|0;d=b+32|0;e=b+16|0;f=b;i=a+48|0;h=a+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];g=+cw(f,e,d);h=a+32|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];a=g<4.0&+cw(f,e,d)<4.0&1;l=b;return a|0}function gu(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0.0;m=l;l=l+16|0;k=m;j=c[b+152>>2]|0;n=+h[b+432>>3];i=+h[b+352>>3]*.013888888888888888;f=i*n;h[b+488>>3]=f;g=+h[b+440>>3];i=i*g;h[b+496>>3]=i;h[b+520>>3]=n*.013888888888888888;e=b+528|0;h[e>>3]=g*.013888888888888888;if(j&4096|c[42183]|0)h[e>>3]=g*-.013888888888888888;e=(c[b+360>>2]|0)==0;n=+((c[b+448>>2]|0)>>>0);g=+((c[b+452>>2]|0)>>>0);h[b+368>>3]=(e?n:g)/f;h[b+376>>3]=(e?g:n)/i;LD(b,FA(d,ym(d,0,86595,0)|0,174181)|0);c[b+160>>2]=0;hu(b,d);if(j&2|0)iu(b,d);e=co(d)|0;while(1){if(!e)break;a[(c[e+16>>2]|0)+116>>0]=0;e=eo(d,e)|0}ju(b,k);while(1){if(!((ku(b)|0)<<24>>24))break;if((lu(b)|0)>1)kD(b);mu(b);while(1){if(!((nu(b)|0)<<24>>24))break;ou(b,d);pu(b)}if((lu(b)|0)>1)lD(b);qu(b,k)}ru(b);l=m;return}function hu(a,b){a=a|0;b=b|0;var d=0;d=Vt(a)|0;c[d+4>>2]=0;c[d+8>>2]=b;c[d+12>>2]=0;qv(a,c[(c[b+16>>2]|0)+12>>2]|0,b);gD(a,b);return}function iu(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;DD(b,119592);d=Im(c,85423)|0;if(d|0?a[d>>0]|0:0)DD(b,d);d=Im(c,86503)|0;if(d|0?a[d>>0]|0:0)BD(b,d);Cv(b,c);g=co(c)|0;while(1){if(!g)break;d=Im(g,122540)|0;if(d|0?a[d>>0]|0:0)BD(b,d);d=Im(g,122531)|0;if(d|0?a[d>>0]|0:0)DD(b,d);d=Im(g,86469)|0;do if(d|0?a[d>>0]|0:0){if(!(WJ(d,58)|0)){BD(b,d);break}e=GL(d)|0;d=e;while(1){d=DL(d,93017)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}BD(b,d);d=0}_I(e)}while(0);d=Im(g,86503)|0;if(d|0?a[d>>0]|0:0)BD(b,d);f=Pm(c,g)|0;while(1){if(!f)break;d=Im(f,122540)|0;do if(d|0?a[d>>0]|0:0){if(!(WJ(d,58)|0)){BD(b,d);break}e=GL(d)|0;d=e;while(1){d=DL(d,93017)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}BD(b,d);d=0}_I(e)}while(0);d=Im(f,86503)|0;if(d|0?a[d>>0]|0:0)BD(b,d);f=Rm(c,f)|0}g=eo(c,g)|0}return}function ju(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;e=i+8|0;g=i;h=c[a>>2]|0;d=c[h+312>>2]|0;f=a+156|0;c[f>>2]=d;h=c[h+316>>2]|0;if(!h)if((d|0)>1?(c[a+152>>2]&64|0)==0:0){c[e>>2]=c[a+52>>2];_l(0,85598,e)|0;c[f>>2]=1;e=1;d=0}else{e=1;d=0}else{d=h+4|0;if((c[h>>2]|0)>1?(c[a+152>>2]&64|0)==0:0){c[g>>2]=c[a+52>>2];_l(0,85598,g)|0;c[h+8>>2]=(c[f>>2]|0)+1}e=c[d>>2]|0;d=h+8|0}c[a+160>>2]=e;c[b>>2]=d;l=i;return}function ku(a){a=a|0;return (c[a+160>>2]|0)<=(c[a+156>>2]|0)|0}function lu(a){a=a|0;var b=0;b=c[(c[a>>2]|0)+316>>2]|0;return c[((b|0)==0?a+156|0:b)>>2]|0}function mu(a){a=a|0;var b=0,d=0;d=a+172|0;b=c[d+4>>2]|0;a=a+196|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;return}function nu(a){a=a|0;var b=0,d=0;d=c[a+196>>2]|0;if(((d|0)>-1?(d|0)<(c[a+164>>2]|0):0)?(b=c[a+200>>2]|0,(b|0)>-1):0)a=(b|0)<(c[a+168>>2]|0)&1;else a=0;return a|0}function ou(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+176|0;k=p;f=p+48|0;m=p+32|0;n=c[d+16>>2]|0;o=c[d+152>>2]|0;if((c[d+160>>2]|0)<=1?(c[d+196>>2]|0)<=0:0)h=0;else{cm(m,128,f);g=n+212|0;h=c[g>>2]|0;Zt(d,m);fm(m,h)|0;i=m+4|0;f=c[i>>2]|0;if(f>>>0>=(c[m+8>>2]|0)>>>0){dm(m,1)|0;f=c[i>>2]|0}a[f>>0]=0;f=c[m>>2]|0;c[i>>2]=f;c[g>>2]=f}ZE(Im(e,85048)|0);tu(d);iD(d);BD(d,122106);DD(d,119592);do if(o&4259840|0){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;if(o&655360){i=o&131072;c[n+264>>2]=i>>>16^2;f=vw((i>>>12^32)+32|0)|0;g=d+288|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=f+16|0;q=d+304|0;c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];if(!i){Zv(f);g=4}else g=2}else{f=0;g=0}if(!(o&8192))fD(d,f,f,g)|0;c[n+272>>2]=f;c[n+268>>2]=g}while(0);if(o&32768|0?(j=c[(c[e+16>>2]|0)+12>>2]|0,j|0):0)c[n+192>>2]=c[j>>2];g=(o&4|0)!=0;do if(!g){f=n+208|0;if((c[f>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;q=d+256|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[k+16>>2]=c[q+16>>2];c[k+20>>2]=c[q+20>>2];c[k+24>>2]=c[q+24>>2];c[k+28>>2]=c[q+28>>2];du(d,k);wD(d,c[f>>2]|0,c[n+228>>2]|0,c[n+244>>2]|0,c[n+212>>2]|0)}while(0);uu(d,e);f=c[(c[e+16>>2]|0)+12>>2]|0;if(f|0)pw(d,4,f);do if(!g){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;xD(d)}while(0);vu(d,e,o);jD(d);if(h|0){gm(m);c[n+212>>2]=h}l=p;return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;d=h+24|0;b=h+16|0;j=h+8|0;f=h;g=a+196|0;i=a+188|0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];su(j,b,d);i=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=i;if(!((nu(a)|0)<<24>>24)){e=a+180|0;if(!(c[a+184>>2]|0))c[a+200>>2]=c[a+176>>2];else c[g>>2]=c[a+172>>2];c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];su(f,b,d);i=c[f+4>>2]|0;j=g;c[j>>2]=c[f>>2];c[j+4>>2]=i}l=h;return}function qu(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;if(!d){d=a+160|0;c[d>>2]=(c[d>>2]|0)+1}else{c[a+160>>2]=c[d>>2];c[b>>2]=d+4}return}function ru(a){a=a|0;hD(a);Wt(a);return}function su(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function tu(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+48|0;n=t+32|0;f=t+24|0;j=t+8|0;k=t+16|0;m=t;r=a+196|0;q=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=q;c[p+4>>2]=r;p=a+164|0;i=c[p>>2]|0;p=c[p+4>>2]|0;s=j;c[s>>2]=i;c[s+4>>2]=p;s=a+360|0;if(!(c[s>>2]|0)){k=q;j=r}else{c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];Bv(k,n);r=k;k=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=k;c[p+4>>2]=r;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];Bv(m,n);p=m;i=c[p>>2]|0;p=c[p+4>>2]|0;c[j>>2]=i;c[j+4>>2]=p;j=r}d=+h[a+320>>3];g=d*+(k|0)-+h[a+240>>3];h[a+288>>3]=g;e=+h[a+328>>3];o=e*+(j|0)-+h[a+248>>3];h[a+296>>3]=o;h[a+304>>3]=d+g;h[a+312>>3]=e+o;f=a+472|0;if(!(c[(c[a+12>>2]|0)+28>>2]|0)){r=a+456|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2]}else{q=a+456|0;c[f>>2]=c[((c[f>>2]|0)<(c[q>>2]|0)?f:q)>>2];r=a+476|0;c[r>>2]=c[((c[r>>2]|0)<(c[a+460>>2]|0)?f:q)+4>>2];r=a+480|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+464>>2]|0)?f:q)+8>>2];r=a+484|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+468>>2]|0)?f:q)+12>>2]}m=c[a+152>>2]|0;b=+h[a+336>>3];if(!(m&128)){b=(+(k|0)-+(i|0)*.5)*d+b;h[a+256>>3]=b;g=(+(j|0)-+(p|0)*.5)*e+ +h[a+344>>3];o=g;d=d+b;g=g+e}else{d=+h[a+368>>3]*.5;e=b-d;h[a+256>>3]=e;g=+h[a+344>>3];u=+h[a+376>>3]*.5;o=g-u;d=d+b;g=u+g;b=e}h[a+264>>3]=o;h[a+272>>3]=d;h[a+280>>3]=g;if(!(c[s>>2]|0)){e=+h[a+352>>3];h[a+504>>3]=+h[a+384>>3]/e-b;if(!(m&4096|c[42183])){d=+h[a+392>>3]/e;b=o}else{d=-g;b=+h[a+392>>3]/e}h[a+512>>3]=d-b}else{f=a+384|0;e=+h[a+352>>3];h[a+512>>3]=-g-+h[a+392>>3]/e;if(!(m&4096|c[42183]))d=+h[f>>3]/e;else{d=-d;b=+h[f>>3]/e}h[a+504>>3]=d-b}l=t;return}function uu(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+48|0;q=s;o=s+40|0;p=s+36|0;r=s+32|0;e=Im(d,85423)|0;if(!e){j=1;e=121990}else{i=(a[e>>0]|0)==0;j=i&1;e=i?121990:e}h=c[b+152>>2]|0;i=(a[e>>0]|0)==116;if(!(h&256))if(i){m=(xJ(e,122171)|0)==0;k=m?121990:e;m=m?1:j;n=8}else{k=e;m=j;n=8}else if(!(i?!(xJ(e,122171)|0):0)){k=e;m=j;n=8}if((n|0)==8?!((m|0)!=0&(h&33554432|0)!=0):0)if(!((xv(k,o,p)|0)<<24>>24)){DD(b,k);BD(b,122171);r=b+256|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];c[q+16>>2]=c[r+16>>2];c[q+20>>2]=c[r+20>>2];c[q+24>>2]=c[r+24>>2];c[q+28>>2]=c[r+28>>2];ID(b,q,1)}else{c[r>>2]=0;i=c[o>>2]|0;DD(b,i);BD(b,122171);wv(d,r)|0;e=c[o+4>>2]|0;h=DA(d,c[42187]|0,0,0)|0;f=+g[p>>2];if(!e)ED(b,122106,h,f);else ED(b,e,h,f);r=(c[r>>2]|0)>>>1&1|2;p=b+256|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];c[q+16>>2]=c[p+16>>2];c[q+20>>2]=c[p+20>>2];c[q+24>>2]=c[p+24>>2];c[q+28>>2]=c[p+28>>2];ID(b,q,r);_I(i)}e=c[(c[(c[d+16>>2]|0)+8>>2]|0)+88>>2]|0;if(e|0)zv(b,e);l=s;return}function vu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[a>>2]|0)+28|0;c[g>>2]=(c[g>>2]|0)+1;g=(d&4|0)!=0;if(!g)wu(a,b,d);a:do if(!(d&1)){if(d&16|0){qD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;yu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}rD(a);oD(a);e=co(b)|0;while(1){if(!e)break;xu(a,e);e=eo(b,e)|0}pD(a);break}if(!(d&8)){f=co(b)|0;while(1){if(!f)break a;xu(a,f);e=Pm(b,f)|0;while(1){if(!e)break;xu(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0);yu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}}oD(a);e=co(b)|0;while(1){if(!e)break;if((zu(b,e)|0)<<24>>24)xu(a,e);e=eo(b,e)|0}pD(a);qD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;if((Au(b,e)|0)<<24>>24)yu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}rD(a)}else{oD(a);e=co(b)|0;while(1){if(!e)break;xu(a,e);e=eo(b,e)|0}pD(a);qD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;yu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}rD(a)}while(0);if(g)wu(a,b,d);return}function wu(e,f,i){e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=l;l=l+128|0;w=P+72|0;N=P+64|0;H=P+112|0;I=P;J=P+104|0;K=f+16|0;L=(i&4|0)!=0;M=e+16|0;x=I+32|0;y=I+16|0;A=I+8|0;B=I+24|0;C=I+48|0;D=I+40|0;E=I+56|0;F=(i&8|0)==0;G=J+4|0;v=1;while(1){j=c[K>>2]|0;if((v|0)>(c[j+180>>2]|0))break;u=c[(c[j+184>>2]|0)+(v<<2)>>2]|0;if((uv(e,u)|0)<<24>>24){if(L)wu(e,u,i);vv(e,u);r=c[M>>2]|0;s=r+208|0;if(!(c[s>>2]|0))t=(b[r+260>>1]&1)!=0;else t=1;ZE(Im(u,85048)|0);if(!(L|t^1)){q=(c[u+16>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[w+16>>2]=c[q+16>>2];c[w+20>>2]=c[q+20>>2];c[w+24>>2]=c[q+24>>2];c[w+28>>2]=c[q+28>>2];du(e,w);wD(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}c[H>>2]=0;j=wv(u,H)|0;if(!j)p=0;else{FD(e,j);p=c[H>>2]&1}q=u+16|0;j=d[(c[q>>2]|0)+112>>0]|0;do if(!(j&1)){if(j&2|0){j=GA(u,0,91300)|0;k=GA(u,0,91308)|0;O=29;break}if(j&8|0){j=GA(u,0,91316)|0;k=GA(u,0,91324)|0;O=29;break}if(j&4|0){j=GA(u,0,91332)|0;k=GA(u,0,91340)|0;O=29;break}j=Im(u,122540)|0;if(!j)k=0;else k=(a[j>>0]|0)==0?0:j;j=Im(u,122531)|0;if(!j)j=k;else j=(a[j>>0]|0)==0?k:j;m=Im(u,86469)|0;if(m)k=(a[m>>0]|0)==0?k:m;if(!((p|0)!=0&(k|0)!=0)){m=Im(u,85423)|0;if(m|0?a[m>>0]|0:0){k=m;O=29;break}j=(j|0)==0?122106:j;n=(k|0)==0?119592:k;c[J>>2]=0;if(!p)k=0;else O=31}else O=29}else{j=GA(u,0,91284)|0;k=GA(u,0,91292)|0;O=29}while(0);if((O|0)==29){c[J>>2]=0;j=(j|0)==0?122106:j;n=(k|0)==0?119592:k;O=31}if((O|0)==31){O=0;if(!((xv(n,J,w)|0)<<24>>24)){DD(e,n);k=1}else{DD(e,c[J>>2]|0);k=c[G>>2]|0;m=DA(u,c[42187]|0,0,0)|0;o=+g[w>>2];if(!k)ED(e,122106,m,o);else ED(e,k,m,o);k=(c[H>>2]|0)>>>1&1|2}}m=c[42186]|0;if((m|0?(z=Jm(u,m)|0,z|0):0)?a[z>>0]|0:0)OD(e,+EA(u,c[42186]|0,1.0,0.0));p=c[H>>2]|0;do if(p&4){m=DA(u,c[42185]|0,1,0)|0;if(m|k|0){n=c[q>>2]|0;Q=n+16|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];n=n+32|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!m)BD(e,122171);else BD(e,j);yy(e,I,4,p,k)}}else{if(!(p&64)){if(DA(u,c[42185]|0,1,0)|0){BD(e,j);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];ID(e,w,k);break}if(!k)break;BD(e,122171);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];ID(e,w,k);break}Q=c[q>>2]|0;p=Q+16|0;c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];Q=Q+32|0;c[x>>2]=c[Q>>2];c[x+4>>2]=c[Q+4>>2];c[x+8>>2]=c[Q+8>>2];c[x+12>>2]=c[Q+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!(DA(u,c[42185]|0,1,0)|0))BD(e,122171);else BD(e,j);if((cu(e,I,n,0)|0)>1){c[N>>2]=Dn(u)|0;_l(3,85431,N)|0}Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];ID(e,w,0)}while(0);_I(c[J>>2]|0);j=c[(c[q>>2]|0)+12>>2]|0;if(j|0)pw(e,5,j);if(t){if(L){Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];du(e,w);wD(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}xD(e)}a:do if(!F){k=co(u)|0;while(1){if(!k)break a;xu(e,k);j=Pm(u,k)|0;while(1){if(!j)break;yu(e,j);j=Rm(u,j)|0}k=eo(u,k)|0}}while(0);yv(e,f);if(!L)wu(e,u,i)}v=v+1|0}l=P;return}function xu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;e=j;h=c[b>>2]|0;i=d+16|0;a:do if(((c[(c[i>>2]|0)+8>>2]|0?(mv(b,ro(d)|0,d)|0)<<24>>24:0)?(k=b+256|0,c[e>>2]=c[k>>2],c[e+4>>2]=c[k+4>>2],c[e+8>>2]=c[k+8>>2],c[e+12>>2]=c[k+12>>2],c[e+16>>2]=c[k+16>>2],c[e+20>>2]=c[k+20>>2],c[e+24>>2]=c[k+24>>2],c[e+28>>2]=c[k+28>>2],(nv(d,e)|0)<<24>>24):0)?(f=(c[i>>2]|0)+116|0,g=c[h+28>>2]|0,(g|0)!=(a[f>>0]|0)):0){a[f>>0]=g;LD(b,Dn(d)|0);e=FA(d,c[42213]|0,174181)|0;if(a[e>>0]|0)LD(b,e);e=FA(d,c[42201]|0,174181)|0;b:do if(a[e>>0]|0){Du(e)|0;e=168408;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f)break b;if((a[f>>0]|0)!=105)continue;if(!(xJ(f,119127)|0))break a}}while(0);ov(b,d);hb[c[(c[(c[(c[i>>2]|0)+8>>2]|0)+4>>2]|0)+20>>2]&31](b,d);e=c[(c[i>>2]|0)+108>>2]|0;if(e|0?a[e+81>>0]|0:0)pw(b,10,e);pv(b)}while(0);l=j;return}function yu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;g=h;e=b+256|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];a:do if((Bu(d,g)|0)<<24>>24?(f=d+-48|0,(Cu(b,d)|0)<<24>>24):0){i=d+48|0;e=rJ(Dn(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;e=ZI(e+3+(rJ(Dn(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)|0)|0;xK(e,Dn(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;i=(qn(ro(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)==0;g=e+(rJ(e)|0)|0;if(i){a[g>>0]=a[122549]|0;a[g+1>>0]=a[122550]|0;a[g+2>>0]=a[122551]|0}else{a[g>>0]=a[122546]|0;a[g+1>>0]=a[122547]|0;a[g+2>>0]=a[122548]|0}IL(e,Dn(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0;LD(b,e);_I(e);e=FA(d,c[42235]|0,174181)|0;if(a[e>>0]|0)LD(b,e);e=FA(d,c[42229]|0,174181)|0;b:do if(!(a[e>>0]|0))e=0;else{Du(e)|0;e=168408;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f){e=168408;break b}if((a[f>>0]|0)!=105)continue;if(!(xJ(f,119127)|0))break a}}while(0);Eu(b,d,e);Fu(b,d,e);Gu(b)}while(0);l=h;return}function zu(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(Bo(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function Au(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(Bo(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function Bu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=j+32|0;f=j;g=b+16|0;b=c[g>>2]|0;e=c[b+8>>2]|0;if((e|0)!=0?(e=e+8|0,c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+16>>2]=c[e+16>>2],c[f+20>>2]=c[e+20>>2],c[f+24>>2]=c[e+24>>2],c[f+28>>2]=c[e+28>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(lv(f,i)|0)!=0):0)b=1;else h=3;do if((h|0)==3){e=c[b+96>>2]|0;if(e){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];if((CB(e,i)|0)<<24>>24){b=1;break}b=c[g>>2]|0}b=c[b+108>>2]|0;if((b|0?a[b+81>>0]|0:0)?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(CB(b,i)|0)<<24>>24):0){b=1;break}b=0}while(0);l=j;return b|0}function Cu(b,d){b=b|0;d=d|0;var e=0,f=0;a:do if((c[b+156>>2]|0)>=2?(e=FA(d,c[42234]|0,174181)|0,(hv(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=0;while(1){if((e|0)>=2){e=0;break a}f=(e|0)==1;f=FA(c[((c[d>>2]&3|0)==((f?2:3)|0)?d:d+((f?-1:1)*48|0)|0)+40>>2]|0,c[42211]|0,174181)|0;if(!(a[f>>0]|0)){e=1;break a}if(!((hv(b,f)|0)<<24>>24))e=e+1|0;else{e=1;break}}}else e=0;else e=1;while(0);return e|0}function Du(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+192|0;o=p+24|0;n=p+16|0;m=p+8|0;k=p;g=p+48|0;j=p+32|0;if(a[85305]|0){cm(168672,128,173948);a[85305]=0}cm(j,128,p+56|0);c[g>>2]=b;h=j+4|0;i=j+8|0;d=0;e=0;a:while(1){f=d;b:while(1)switch(fv(g,j)|0){case 0:{d=21;break a}case 40:if(!(f<<24>>24)){f=1;continue b}else{d=7;break a}case 41:if(!(f<<24>>24)){d=9;break a}else{f=0;continue b}default:break b}if(!(f<<24>>24)){if((e|0)==63){d=12;break}d=c[42169]|0;if(d>>>0>=(c[42170]|0)>>>0){dm(168672,1)|0;d=c[42169]|0}c[42169]=d+1;a[d>>0]=0;c[168408+(e<<2)>>2]=c[42169];e=e+1|0}d=c[h>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){dm(j,1)|0;d=c[h>>2]|0}a[d>>0]=0;d=c[j>>2]|0;c[h>>2]=d;fm(168672,d)|0;d=c[42169]|0;if(d>>>0>=(c[42170]|0)>>>0){dm(168672,1)|0;d=c[42169]|0}c[42169]=d+1;a[d>>0]=0;d=f}do if((d|0)==7){c[k>>2]=b;_l(1,85306,k)|0;c[42102]=0;gm(j)}else if((d|0)==9){c[m>>2]=b;_l(1,85340,m)|0;c[42102]=0;gm(j)}else if((d|0)==12){c[n>>2]=b;_l(0,85368,n)|0;c[42165]=0;gm(j)}else if((d|0)==21){if(f<<24>>24){c[o>>2]=b;_l(1,85391,o)|0;c[42102]=0;gm(j);break}c[168408+(e<<2)>>2]=0;gm(j);d=c[42169]|0;if(d>>>0>=(c[42170]|0)>>>0){dm(168672,1)|0;d=c[42169]|0}a[d>>0]=0;c[42169]=c[42168]}while(0);l=p;return 168408}function Eu(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+160|0;y=A+24|0;w=A+20|0;v=A+16|0;o=A;p=A+32|0;x=c[d+152>>2]|0;c[y>>2]=0;c[w>>2]=0;c[v>>2]=0;z=Vt(d)|0;c[z+4>>2]=3;c[z+8>>2]=f;c[z+12>>2]=9;t=f+16|0;n=c[(c[t>>2]|0)+96>>2]|0;if((n|0?(a[n+82>>0]|0)==0:0)?(JA(Im(f,85121)|0,0)|0)<<24>>24:0){n=z+260|0;b[n>>1]=b[n>>1]|512}if(g|0?c[(c[t>>2]|0)+8>>2]|0:0)FD(d,g);g=c[42250]|0;if((g|0?(i=Jm(f,g)|0,i|0):0)?a[i>>0]|0:0)OD(d,+EA(f,c[42250]|0,1.0,0.0));do if(x&16777216|0){g=f+48|0;if((e[(c[(ro(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)|0)+16>>2]|0)+178>>1]|0)>2){m=+h[(c[(c[(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+176>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);m=+h[(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+184>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);break}else{n=z+176|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;break}}while(0);if(x&32768|0){n=c[t>>2]|0;g=c[n+96>>2]|0;if(!g)g=c[z+192>>2]|0;else{g=c[g>>2]|0;c[z+192>>2]=g}i=z+196|0;c[i>>2]=g;k=z+204|0;c[k>>2]=g;j=z+200|0;c[j>>2]=g;g=c[n+108>>2]|0;if(g|0)c[i>>2]=c[g>>2];g=c[n+104>>2]|0;if(g|0)c[j>>2]=c[g>>2];g=c[n+100>>2]|0;if(g|0)c[k>>2]=c[g>>2]}if(!(x&65536))j=0;else{cm(o,128,p);c[z+212>>2]=qw(Yt(d,f,o)|0,f)|0;gm(o);g=Im(f,96264)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else{g=Im(f,96269)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else i=0}if((q|0)==31)i=qw(g,f)|0;g=Im(f,85134)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=36;else q=34;do if((q|0)==34){g=Im(f,85143)|0;if(g|0?a[g>>0]|0:0){q=36;break}if(i|0){g=GL(i)|0;q=39}}while(0);if((q|0)==36){g=qw(g,f)|0;q=39}if((q|0)==39)c[z+208>>2]=g;g=Im(f,85151)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=44;else q=42;do if((q|0)==42){g=Im(f,85161)|0;if(g|0?a[g>>0]|0:0){q=44;break}if(i|0){g=GL(i)|0;q=47}}while(0);if((q|0)==44){g=qw(g,f)|0;q=47}if((q|0)==47)c[z+216>>2]=g;g=Im(f,85170)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=52;else q=50;do if((q|0)==50){g=Im(f,85179)|0;if(g|0?a[g>>0]|0:0){q=52;break}if(i|0)c[z+220>>2]=GL(i)|0}while(0);if((q|0)==52){c[z+220>>2]=qw(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|128}g=Im(f,85187)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=59;else q=57;do if((q|0)==57){g=Im(f,85196)|0;if(g|0?a[g>>0]|0:0){q=59;break}if(i|0)c[z+224>>2]=GL(i)|0}while(0);if((q|0)==59){c[z+224>>2]=qw(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|256}j=i}do if(x&8388608){g=Im(f,85204)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)i=qw(g,f)|0;else i=0;g=Im(f,85211)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){q=z+260|0;b[q>>1]=b[q>>1]|64;g=qw(g,f)|0;q=72}else q=70;if((q|0)==70?i|0:0){g=GL(i)|0;q=72}if((q|0)==72)c[z+244>>2]=g;g=Im(f,85222)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){g=qw(g,f)|0;q=78}else q=76;if((q|0)==76?i|0:0){g=GL(i)|0;q=78}if((q|0)==78)c[z+248>>2]=g;g=Im(f,85234)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){c[z+252>>2]=qw(g,f)|0;p=z+260|0;b[p>>1]=b[p>>1]|16}else q=82;if((q|0)==82?i|0:0)c[z+252>>2]=GL(i)|0;g=Im(f,85245)|0;if(g|0?a[g>>0]|0:0){q=z+260|0;b[q>>1]=b[q>>1]|32;c[z+256>>2]=qw(g,f)|0;break}if(i)c[z+256>>2]=GL(i)|0;else i=0}else i=0;while(0);do if(x&4194304|0){g=Im(f,96229)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=94;else q=92;do if((q|0)==92){g=Im(f,85256)|0;if(g|0?a[g>>0]|0:0){q=94;break}g=c[z+192>>2]|0;if(g|0)c[z+228>>2]=GL(g)|0}while(0);if((q|0)==94){p=Zu(g,f)|0;c[z+228>>2]=qw(p,f)|0;_I(p);p=z+260|0;b[p>>1]=b[p>>1]|1}g=Im(f,85268)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){p=Zu(g,f)|0;c[z+232>>2]=qw(p,f)|0;_I(p);p=z+260|0;b[p>>1]=b[p>>1]|8}else q=100;if((q|0)==100?(r=c[z+192>>2]|0,r|0):0)c[z+232>>2]=GL(r)|0;g=Im(f,85281)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){r=Zu(g,f)|0;c[z+236>>2]=qw(r,f)|0;_I(r);r=z+260|0;b[r>>1]=b[r>>1]|2}else q=105;if((q|0)==105?(s=c[z+200>>2]|0,s|0):0)c[z+236>>2]=GL(s)|0;g=Im(f,85293)|0;if(g|0?a[g>>0]|0:0){s=Zu(g,f)|0;c[z+240>>2]=qw(s,f)|0;_I(s);s=z+260|0;b[s>>1]=b[s>>1]|4;break}g=c[z+204>>2]|0;if(g|0)c[z+240>>2]=GL(g)|0}while(0);_I(j);_I(i);do if(x&4259840|0?(u=c[(c[t>>2]|0)+8>>2]|0,u|0):0){if(!(c[z+208>>2]|0)){if((x&524288|0)==0|(c[z+228>>2]|0)==0)break}else if(!(x&524288))break;m=+h[(c[d+16>>2]|0)+152>>3]*.5;m=m>2.0?m:2.0;i=c[u+4>>2]|0;g=0;while(1){if((g|0)>=(i|0))break;_u(y,w,v,(c[u>>2]|0)+(g*48|0)|0,m);g=g+1|0}j=c[v>>2]|0;c[z+276>>2]=j;k=c[w>>2]|0;c[z+280>>2]=k;if(!(x&8192)){g=0;i=0;while(1){if((i|0)>=(j|0))break;g=(c[k+(i<<2)>>2]|0)+g|0;i=i+1|0}y=c[y>>2]|0;fD(d,y,y,g)|0;g=y}else g=c[y>>2]|0;c[z+284>>2]=g;c[z+264>>2]=2;c[z+272>>2]=g;c[z+268>>2]=c[k>>2]}while(0);uD(d,f);g=c[z+208>>2]|0;if(!((g|0)==0?!(b[z+260>>1]&1):0))wD(d,g,c[z+228>>2]|0,c[z+244>>2]|0,c[z+212>>2]|0);l=A;return}function Fu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0;P=l;l=l+240|0;L=P+224|0;K=P+208|0;x=P+128|0;w=P+112|0;O=P+64|0;C=P+48|0;D=P+32|0;E=P+16|0;F=P;G=P+192|0;H=P+176|0;y=P+160|0;B=P+144|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;M=+h[(c[b+16>>2]|0)+152>>3];ZE(Im(e,85048)|0);J=e+16|0;a:do if(c[(c[J>>2]|0)+8>>2]|0){N=+EA(e,c[42232]|0,1.0,0.0);k=FA(e,c[42220]|0,174181)|0;v=(f|0)!=0;b:do if(v){g=f;while(1){i=g;g=g+4|0;i=c[i>>2]|0;if(!i){o=0;break b}if((a[i>>0]|0)!=116)continue;if(!(xJ(i,95939)|0)){o=1;break}}}else o=0;while(0);j=k;q=0;i=0;c:while(1){switch(a[j>>0]|0){case 0:break c;case 58:{g=q+1|0;break}case 59:{g=q;i=i+1|0;break}default:g=q}j=j+1|0;q=g}n=(q|0)!=0;if((i|0)!=0&n)if(!(Nu(b,e,f,k,q+1|0,N,M)|0))break;else m=122106;else m=k;g=d[(c[J>>2]|0)+115>>0]|0;if(!(g&1))if(!(g&2))if(!(g&8))if(!(g&4)){i=m;j=GA(e,c[42221]|0,m)|0}else{j=91340;g=91332;k=168888;i=168888;p=18}else{j=91324;g=91316;k=168888;i=168888;p=18}else{j=91308;g=91300;k=168888;i=168888;p=18}else{j=91292;g=91284;k=168888;i=168888;p=18}if((p|0)==18){i=c[i>>2]|0;i=GA(e,i,Ou(m,g)|0)|0;g=GA(e,c[k>>2]|0,j)|0;if((i|0)==(m|0)){i=m;j=g}else{BD(b,i);j=g}}if((j|0)!=(m|0))DD(b,j);if(o<<24>>24){i=(a[i>>0]|0)==0?122106:i;g=(a[j>>0]|0)==0?122106:j;BD(b,122171);DD(b,i);u=O;r=c[c[(c[J>>2]|0)+8>>2]>>2]|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));J=dA(O,Pu(e)|0,M,0,0)|0;HD(b,c[J+8>>2]|0,c[J>>2]|0,1);Qu(J);BD(b,i);if((g|0)!=(i|0))DD(b,g);g=c[O+8>>2]|0;if(g|0){I=O+16|0;J=c[O>>2]|0;c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];St(b,2,K,L,N,M,g)}g=c[O+12>>2]|0;if(!g)break;J=O+32|0;O=(c[O>>2]|0)+((c[O+4>>2]|0)+-1<<4)|0;c[K>>2]=c[J>>2];c[K+4>>2]=c[J+4>>2];c[K+8>>2]=c[J+8>>2];c[K+12>>2]=c[J+12>>2];c[L>>2]=c[O>>2];c[L+4>>2]=c[O+4>>2];c[L+8>>2]=c[O+8>>2];c[L+12>>2]=c[O+12>>2];St(b,3,K,L,N,M,g);break}g=c[J>>2]|0;if(!n){do if(!(a[g+115>>0]&3)){if(a[i>>0]|0){BD(b,i);DD(b,j);break}BD(b,122106);if(!(a[j>>0]|0)){DD(b,122106);break}else{DD(b,j);break}}while(0);k=b+152|0;m=O+4|0;n=O+8|0;o=O+12|0;p=O+32|0;q=O+16|0;j=0;while(1){g=c[(c[J>>2]|0)+8>>2]|0;if((j|0)>=(c[g+4>>2]|0))break a;u=O;r=(c[g>>2]|0)+(j*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[O>>2]|0;i=c[m>>2]|0;do if(!(c[k>>2]&16384)){JD(b,g,i,0,0,0);g=c[n>>2]|0;if(g|0){I=c[O>>2]|0;c[K>>2]=c[q>>2];c[K+4>>2]=c[q+4>>2];c[K+8>>2]=c[q+8>>2];c[K+12>>2]=c[q+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];St(b,2,K,L,N,M,g)}g=c[o>>2]|0;if(g|0){I=(c[O>>2]|0)+((c[m>>2]|0)+-1<<4)|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];St(b,3,K,L,N,M,g)}if((c[(c[(c[J>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[n>>2]|0)){if(!(v&(c[o>>2]|0)!=0))break}else if(!v)break;FD(b,f)}}else JD(b,g,i,c[n>>2]|0,c[o>>2]|0,0);while(0);j=j+1|0}}I=c[(c[g+8>>2]|0)+4>>2]|0;A=I*48|0;z=ZI(A)|0;A=ZI(A)|0;t=+(q+2|0)*.5;v=O+4|0;p=C+8|0;q=D+8|0;e=E+8|0;f=F+8|0;o=0;while(1){if((o|0)>=(I|0))break;u=O;r=(c[c[(c[J>>2]|0)+8>>2]>>2]|0)+(o*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[v>>2]|0;c[z+(o*48|0)+4>>2]=g;c[A+(o*48|0)+4>>2]=g;n=g<<4;m=ZI(n)|0;c[z+(o*48|0)>>2]=m;n=ZI(n)|0;c[A+(o*48|0)>>2]=n;k=c[O>>2]|0;c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];k=0;while(1){if((k|0)>=(g+-1|0))break;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];g=k+1|0;j=(c[O>>2]|0)+(g<<4)|0;c[D>>2]=c[j>>2];c[D+4>>2]=c[j+4>>2];c[D+8>>2]=c[j+8>>2];c[D+12>>2]=c[j+12>>2];j=m+(k<<4)|0;if(!k){c[K>>2]=c[C>>2];c[K+4>>2]=c[C+4>>2];c[K+8>>2]=c[C+8>>2];c[K+12>>2]=c[C+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];Ru(G,K,L);c[j>>2]=c[G>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2]}else{c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];Ru(H,K,L);c[j>>2]=c[H>>2];c[j+4>>2]=c[H+4>>2];c[j+8>>2]=c[H+8>>2];c[j+12>>2]=c[H+12>>2]}R=c[O>>2]|0;s=k+2|0;S=R+(s<<4)|0;c[E>>2]=c[S>>2];c[E+4>>2]=c[S+4>>2];c[E+8>>2]=c[S+8>>2];c[E+12>>2]=c[S+12>>2];u=k+3|0;R=R+(u<<4)|0;c[F>>2]=c[R>>2];c[F+4>>2]=c[R+4>>2];c[F+8>>2]=c[R+8>>2];c[F+12>>2]=c[R+12>>2];Q=m+(g<<4)|0;r=m+(s<<4)|0;c[w>>2]=c[C>>2];c[w+4>>2]=c[C+4>>2];c[w+8>>2]=c[C+8>>2];c[w+12>>2]=c[C+12>>2];c[x>>2]=c[D>>2];c[x+4>>2]=c[D+4>>2];c[x+8>>2]=c[D+8>>2];c[x+12>>2]=c[D+12>>2];c[K>>2]=c[S>>2];c[K+4>>2]=c[S+4>>2];c[K+8>>2]=c[S+8>>2];c[K+12>>2]=c[S+12>>2];c[L>>2]=c[R>>2];c[L+4>>2]=c[R+4>>2];c[L+8>>2]=c[R+8>>2];c[L+12>>2]=c[R+12>>2];Su(y,w,x,K,L);c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[Q>>2]=c[y>>2];c[Q+4>>2]=c[y+4>>2];c[Q+8>>2]=c[y+8>>2];c[Q+12>>2]=c[y+12>>2];h[n+(k<<4)>>3]=+h[C>>3]-+h[j>>3]*t;h[n+(k<<4)+8>>3]=+h[p>>3]-+h[m+(k<<4)+8>>3]*t;h[n+(g<<4)>>3]=+h[D>>3]-+h[Q>>3]*t;h[n+(g<<4)+8>>3]=+h[q>>3]-+h[m+(g<<4)+8>>3]*t;h[n+(s<<4)>>3]=+h[E>>3]-+h[r>>3]*t;h[n+(s<<4)+8>>3]=+h[e>>3]-+h[m+(s<<4)+8>>3]*t;k=u;g=c[v>>2]|0}S=m+(k<<4)|0;c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];Ru(B,K,L);c[S>>2]=c[B>>2];c[S+4>>2]=c[B+4>>2];c[S+8>>2]=c[B+8>>2];c[S+12>>2]=c[B+12>>2];h[n+(k<<4)>>3]=+h[F>>3]-+h[S>>3]*t;h[n+(k<<4)+8>>3]=+h[f>>3]-+h[m+(k<<4)+8>>3]*t;o=o+1|0}s=GL(i)|0;f=0;r=i;g=i;j=i;i=s;while(1){i=DL(i,93017)|0;if(!i)break;e=(a[i>>0]|0)==0?122106:i;if((e|0)!=(j|0))if(!(a[(c[J>>2]|0)+115>>0]&3)){BD(b,e);DD(b,e);j=e}else j=e;m=(f|0)==0;n=f>>>0<2;i=0;while(1){if((i|0)>=(I|0))break;o=c[A+(i*48|0)>>2]|0;p=c[z+(i*48|0)>>2]|0;q=c[A+(i*48|0)+4>>2]|0;k=0;while(1){if((k|0)>=(q|0))break;S=o+(k<<4)|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)>>3];S=o+(k<<4)+8|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)+8>>3];k=k+1|0}JD(b,o,q,0,0,0);i=i+1|0}f=f+1|0;r=m?e:r;g=n?e:g;i=0}i=c[O+8>>2]|0;if(!i)i=0;else{if(g){if(!(a[(c[J>>2]|0)+115>>0]&3)){BD(b,g);DD(b,g)}}else g=0;R=O+16|0;S=c[O>>2]|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];St(b,2,K,L,N,M,i);i=g}j=O+12|0;g=c[j>>2]|0;if(g|0){if((i|0)!=(r|0)?(a[(c[J>>2]|0)+115>>0]&3)==0:0){BD(b,r);DD(b,r);g=c[j>>2]|0}R=O+32|0;S=(c[O>>2]|0)+((c[v>>2]|0)+-1<<4)|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];St(b,3,K,L,N,M,g)}_I(s);g=0;while(1){if((g|0)>=(I|0))break;_I(c[z+(g*48|0)>>2]|0);_I(c[A+(g*48|0)>>2]|0);g=g+1|0}_I(z);_I(A)}while(0);l=P;return}function Gu(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+64|0;r=x+48|0;u=x+32|0;t=x+16|0;s=x;w=c[a+16>>2]|0;v=c[w+8>>2]|0;q=w+208|0;if(!((c[q>>2]|0)==0?!(b[w+260>>1]&1):0))d=3;a:do if((d|0)==3?(xD(a),p=w+276|0,e=c[p>>2]|0,e|0):0){h=w+280|0;d=c[h>>2]|0;i=w+268|0;j=w+284|0;k=w+272|0;m=w+228|0;n=w+244|0;o=w+212|0;f=c[d>>2]|0;g=1;while(1){if((g|0)>=(e|0))break a;c[i>>2]=c[d+(g<<2)>>2];c[k>>2]=(c[j>>2]|0)+(f<<4);wD(a,c[q>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0);xD(a);y=c[h>>2]|0;f=(c[y+(g<<2)>>2]|0)+f|0;g=g+1|0;e=c[p>>2]|0;d=y}}while(0);c[w+268>>2]=0;c[w+272>>2]=0;q=v+16|0;d=c[q>>2]|0;e=c[d+8>>2]|0;if(!e)f=w+260|0;else{p=c[e>>2]|0;d=c[p>>2]|0;y=c[p+8>>2]|0;o=p+16|0;c[t>>2]=c[o>>2];c[t+4>>2]=c[o+4>>2];c[t+8>>2]=c[o+8>>2];c[t+12>>2]=c[o+12>>2];p=p+32|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];if(!y){c[u>>2]=c[d>>2];c[u+4>>2]=c[d+4>>2];c[u+8>>2]=c[d+8>>2];c[u+12>>2]=c[d+12>>2]}else{c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2]}f=w+260|0;p=b[f>>1]|0;o=c[w+220>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];Hu(a,r,(p<<8&65535)<<16>>16>>15&255,o,(p<<14&65535)<<16>>16>>15&255);p=c[(c[q>>2]|0)+8>>2]|0;o=c[p>>2]|0;p=(c[p+4>>2]|0)+-1|0;d=c[o+(p*48|0)>>2]|0;e=c[o+(p*48|0)+4>>2]|0;y=c[o+(p*48|0)+12>>2]|0;n=o+(p*48|0)+16|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];t=o+(p*48|0)+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];if(!y){y=d+(e+-1<<4)|0;c[u>>2]=c[y>>2];c[u+4>>2]=c[y+4>>2];c[u+8>>2]=c[y+8>>2];c[u+12>>2]=c[y+12>>2]}else{c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[u+8>>2]=c[s+8>>2];c[u+12>>2]=c[s+12>>2]}d=b[f>>1]|0;y=c[w+224>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];Hu(a,r,(d<<7&65535)<<16>>16>>15&255,y,(d<<13&65535)<<16>>16>>15&255);d=c[q>>2]|0}e=c[d+96>>2]|0;g=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;m=w+216|0;h=c[m>>2]|0;n=w+232|0;i=c[n>>2]|0;o=w+248|0;j=c[o>>2]|0;p=w+212|0;k=c[p>>2]|0;if(!((IA(FA(v,c[42230]|0,122100)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;Iu(a,e,11,g,h,i,j,k,d);j=c[(c[q>>2]|0)+108>>2]|0;k=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;i=c[m>>2]|0;h=c[n>>2]|0;e=c[o>>2]|0;g=c[p>>2]|0;if(!((IA(FA(v,c[42230]|0,122100)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;Iu(a,j,11,k,i,h,e,g,d);Iu(a,c[(c[q>>2]|0)+100>>2]|0,7,(b[f>>1]<<13&65535)<<16>>16>>15<<16>>16,c[w+224>>2]|0,c[w+240>>2]|0,c[w+256>>2]|0,c[p>>2]|0,0);Iu(a,c[(c[q>>2]|0)+104>>2]|0,6,(b[f>>1]<<14&65535)<<16>>16>>15<<16>>16,c[w+220>>2]|0,c[w+236>>2]|0,c[w+252>>2]|0,c[p>>2]|0,0);vD(a);Wt(a);l=x;return}function Hu(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=c[a+16>>2]|0;if(!(e<<24>>24))f=c[i+208>>2]|0;if(!(g<<24>>24==0?((f|0)==0?(b[i+260>>1]&1)==0:0):0)){c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];Mu(a,h)}l=j;return}function Iu(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r;q=c[b+152>>2]|0;if(d|0?a[d+81>>0]|0:0){if(!j)n=0;else{n=vw((rJ(j)|0)+11|0)|0;switch(e|0){case 11:{m=86240;break}case 7:{m=86656;break}case 6:{m=86666;break}default:ma(123205,84925,2730,85060)}c[o>>2]=j;c[o+4>>2]=m;pL(n,85076,o)|0}o=b+16|0;j=(c[o>>2]|0)+12|0;p=c[j>>2]|0;c[j>>2]=e;j=(f|0)!=0|(g|0)!=0;m=(q&4|0)==0;if(j&m){Ju(b,d);wD(b,g,h,i,n)}pw(b,e,d);if(k|0)Ku(b,d,k);if(j){if(!m){Ju(b,d);wD(b,g,h,i,n)}xD(b)}_I(n);c[(c[o>>2]|0)+12>>2]=p}l=r;return}function Ju(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;i=f>>>16^2;c[d+264>>2]=i;j=d+268|0;c[j>>2]=i+2;i=d+272|0;_I(c[i>>2]|0);d=vw(c[j>>2]<<4)|0;c[i>>2]=d;i=b+56|0;j=b+24|0;h[d>>3]=+h[i>>3]-+h[j>>3]*.5;g=b+64|0;b=b+32|0;h[d+8>>3]=+h[g>>3]-+h[b>>3]*.5;h[d+16>>3]=+h[j>>3]*.5+ +h[i>>3];h[d+24>>3]=+h[b>>3]*.5+ +h[g>>3];if(!(e&8192))fD(a,d,d,2)|0;if(!f)Zv(d)}return}function Ku(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+96|0;g=o+80|0;i=o+32|0;j=o+16|0;k=o;f=c[d>>2]|0;while(1){m=a[f>>0]|0;if(!(m<<24>>24))break;if(!(XJ(m&255)|0)){n=4;break}else f=f+1|0}if((n|0)==4){p=+h[d+24>>3];m=d+56|0;Lu(i,+h[m>>3]+p*.5,+h[d+64>>3]-+h[d+32>>3]*.5);n=i+16|0;Lu(j,+h[i>>3]-p,+h[i+8>>3]);c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];n=i+32|0;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];VA(k,e,g);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];FD(b,c[(c[b>>2]|0)+336>>2]|0);BD(b,c[d+8>>2]|0);KD(b,i,3)}l=o;return}function Lu(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;j=f>>>16^2;c[d+264>>2]=j;k=d+268|0;c[k>>2]=j+2;j=d+272|0;_I(c[j>>2]|0);d=vw(c[k>>2]<<4)|0;c[j>>2]=d;i=+h[b>>3];h[d>>3]=i+-3.0;g=+h[b+8>>3];h[d+8>>3]=g+-3.0;h[d+16>>3]=i+3.0;h[d+24>>3]=g+3.0;if(!(e&8192))fD(a,d,d,2)|0;if(!f)Zv(d)}return}function Nu(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;var j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=l;l=l+256|0;D=J+224|0;C=J+208|0;j=J+192|0;F=J+144|0;G=J+96|0;H=J+48|0;E=J;k=J+240|0;e=$t(e,f,k)|0;if((e|0)>1){z=b+48|0;A=ro(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;z=Dn(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;A=(qn(A)|0)!=0;B=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[j>>2]=z;c[j+4>>2]=A?85095:85100;c[j+8>>2]=B;_l(3,85105,j)|0;if((e|0)==2)e=1;else I=4}else if((e|0)==1)e=1;else I=4;if((I|0)==4){B=b+16|0;r=c[k>>2]|0;s=r+8|0;t=H+4|0;u=F+8|0;v=F+12|0;w=(d|0)!=0;q=(d|0)==0;x=F+32|0;y=F+4|0;z=F+16|0;A=E+4|0;e=0;p=0;while(1){f=c[(c[B>>2]|0)+8>>2]|0;if((p|0)>=(c[f+4>>2]|0))break;j=F;f=(c[f>>2]|0)+(p*48|0)|0;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));b=1;m=1.0;o=c[s>>2]|0;a:while(1){f=c[o>>2]|0;if(!f)break;k=o+4|0;n=+g[k>>2];do if(n<1.0e-05&n>-1.0e-05)f=b;else{BD(a,f);n=+g[k>>2];m=m-n;e=c[o>>2]|0;if(b|0){Xu(F,n,H,E);k=c[H>>2]|0;JD(a,k,c[t>>2]|0,0,0,0);_I(k);if(m<1.0e-05&m>-1.0e-05){I=11;break a}else{f=0;break}}if(m<1.0e-05&m>-1.0e-05){I=13;break a}j=G;f=E;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));n=+g[k>>2];Xu(G,n/(m+n),H,E);_I(c[G>>2]|0);f=c[H>>2]|0;JD(a,f,c[t>>2]|0,0,0,0);_I(f);f=0}while(0);b=f;o=o+12|0}if((I|0)==11){I=0;_I(c[E>>2]|0)}else if((I|0)==13){I=0;o=c[E>>2]|0;JD(a,o,c[A>>2]|0,0,0,0);_I(o)}if(c[u>>2]|0){BD(a,c[c[s>>2]>>2]|0);DD(a,c[c[s>>2]>>2]|0);k=c[F>>2]|0;o=c[u>>2]|0;c[C>>2]=c[z>>2];c[C+4>>2]=c[z+4>>2];c[C+8>>2]=c[z+8>>2];c[C+12>>2]=c[z+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];St(a,2,C,D,h,i,o)}if(c[v>>2]|0){BD(a,e);DD(a,e);k=(c[F>>2]|0)+((c[y>>2]|0)+-1<<4)|0;o=c[v>>2]|0;c[C>>2]=c[x>>2];c[C+4>>2]=c[x+4>>2];c[C+8>>2]=c[x+8>>2];c[C+12>>2]=c[x+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];St(a,3,C,D,h,i,o)}do if((c[(c[(c[B>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[u>>2]|0)){if(!(w&(c[v>>2]|0)!=0))break}else if(q)break;FD(a,d)}while(0);p=p+1|0}au(r);e=0}l=J;return e|0}function Ou(b,d){b=b|0;d=d|0;var e=0,f=0;e=1;a:while(1){switch(a[b>>0]|0){case 0:break a;case 58:{e=e+1|0;break}default:{}}b=b+1|0}f=O((rJ(d)|0)+1|0,e)|0;b=f+10|0;if((c[42166]|0)<(f|0)){c[42166]=b;b=aJ(c[42167]|0,b)|0;c[42167]=b}else b=c[42167]|0;xK(b,d)|0;while(1){e=e+-1|0;b=c[42167]|0;if(!e)break;f=b+(rJ(b)|0)|0;a[f>>0]=58;a[f+1>>0]=0;IL(b,d)|0}return b|0}function Pu(b){b=b|0;var d=0,e=0;d=c[42228]|0;a:do if(!d)e=7;else{d=Jm(b,d)|0;switch(a[d>>0]|0){case 110:if(!(xJ(d,120501)|0)){d=1;break a}else{e=7;break a}case 102:if(!(xJ(d,85082)|0)){d=2;break a}else{e=7;break a}case 98:{if(!(xJ(d,85090)|0)){d=3;break a}if(!(xJ(d,96056)|0)){d=4;break a}else{e=7;break a}}default:{e=7;break a}}}while(0);if((e|0)==7){d=(qn(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0)!=0;d=d?2:1}return d|0}function Qu(a){a=a|0;if(a|0){_I(c[a+8>>2]|0);_I(a)}return}function Ru(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[b>>3]-+h[c>>3];f=+h[b+8>>3]-+h[c+8>>3];d=2.0/+C(+(e*e+.0001+f*f));h[a>>3]=d*f;h[a+8>>3]=-(e*d);return}function Su(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0;g=+h[c>>3]-+h[d>>3];i=+h[c+8>>3]-+h[d+8>>3];f=+C(+(i*i+g*g));if(f<.0001){j=+h[b>>3]-+h[e>>3];f=+h[b+8>>3]-+h[e+8>>3];i=f;g=j;f=+C(+(j*j+.0001+f*f))}j=2.0/f;h[a>>3]=i*j;h[a+8>>3]=-(j*g);return}function Tu(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(1.0-a/b))}function Uu(a,b,c){a=+a;b=+b;c=+c;return +(c*.5)}function Vu(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(a/b))}function Wu(a,b,c){a=+a;b=+b;c=+c;b=a/b;return +((!(b<=.5)?1.0-b:b)*c)}function Xu(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0;p=l;l=l+16|0;o=p;n=c[a+4>>2]|0;j=(n+-1|0)/3|0;if((n+-4|0)>>>0<3){c[d+4>>2]=4;c[d>>2]=vw(64)|0;c[e+4>>2]=4;n=vw(64)|0;c[e>>2]=n;PA(o,c[a>>2]|0,3,b,c[d>>2]|0,n)}else{n=vw(j<<3)|0;g=0;i=c[a>>2]|0;f=0.0;while(1){if((g|0)>=(j|0))break;q=+Yu(i);h[n+(g<<3)>>3]=q;g=g+1|0;i=i+48|0;f=q+f}b=f*b;m=0;f=0.0;while(1){if((j|0)<=(m|0))break;f=+h[n+(m<<3)>>3]+f;if(f>=b)break;m=m+1|0}k=m*3|0;g=k+4|0;i=d+4|0;c[i>>2]=g;c[d>>2]=vw(g<<4)|0;g=((j-m|0)*3|0)+1|0;j=e+4|0;c[j>>2]=g;c[e>>2]=vw(g<<4)|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;r=(c[d>>2]|0)+(g<<4)|0;s=(c[a>>2]|0)+(g<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}g=g+-4|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;s=(c[e>>2]|0)+(i<<4)|0;r=(c[a>>2]|0)+(g<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];g=g+1|0;i=i+1|0}q=+h[n+(m<<3)>>3];PA(o,(c[a>>2]|0)+(k<<4)|0,3,(b-f+q)/q,(c[d>>2]|0)+(k<<4)|0,c[e>>2]|0);_I(n)}l=p;return}function Yu(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0;e=+h[a+16>>3];d=+h[a>>3]-e;f=+h[a+24>>3];b=+h[a+8>>3]-f;d=+C(+(b*b+d*d));b=+h[a+32>>3];e=e-b;c=+h[a+40>>3];f=f-c;d=+C(+(f*f+e*e))+d;b=b-+h[a+48>>3];c=c-+h[a+56>>3];return +(d+ +C(+(c*c+b*b)))}function Zu(b,d){b=b|0;d=d|0;d=so(d)|0;if((a[(c[d+16>>2]|0)+115>>0]|0)==1)d=yB(b)|0;else d=vB(b,d)|0;return ev(d)|0}function _u(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+1664|0;m=q+1600|0;n=q+800|0;o=q;p=ww(24)|0;c[p+16>>2]=1;j=((c[e+4>>2]|0)+-1|0)/3|0;h=0;i=p;while(1){if((h|0)>=(j|0))break;k=h*3|0;g=0;while(1){if((g|0)==4)break;r=m+(g<<4)|0;s=(c[e>>2]|0)+(g+k<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}h=h+1|0;i=$u(m,i)|0}g=0;h=0;i=p;while(1){if(!i){h=p;g=p;break}j=c[i+16>>2]|0;k=n+(g<<4)|0;e=o+(g<<4)|0;av(h,i,j,k,e,f);g=g+1|0;if(!((g|0)==50|(j|0)==0)){h=i;i=j;continue}bv(a,b,d,g,n,o);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];h=i;g=1;i=j}while(1){if(!h)break;s=c[h+16>>2]|0;_I(g);h=s;g=s}l=q;return}function $u(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+144|0;f=g+128|0;d=g+64|0;e=g;if(!(fu(a)|0)){PA(f,a,3,.5,d,e);d=$u(e,$u(d,b)|0)|0}else{d=b+16|0;if((c[d>>2]|0)==1){c[d>>2]=0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2]}d=a+48|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=dv(f,b)|0}l=g;return d|0}function av(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=l;l=l+96|0;n=r+80|0;m=r+64|0;k=r+48|0;o=r+32|0;p=r+16|0;q=r;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];do if(a){c[p>>2]=c[a>>2];c[p+4>>2]=c[a+4>>2];c[p+8>>2]=c[a+8>>2];c[p+12>>2]=c[a+12>>2];if(!d){i=+h[o>>3];h[q>>3]=i*2.0-+h[p>>3];j=+h[o+8>>3];h[q+8>>3]=j*2.0-+h[p+8>>3];break}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];j=+h[o+8>>3];break}}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];h[p>>3]=i*2.0-+h[q>>3];j=+h[o+8>>3];h[p+8>>3]=j*2.0-+h[q+8>>3]}while(0);c[k>>2]=c[p>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[k+12>>2]=c[p+12>>2];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];t=+cv(k,m,n);s=+E(+t)*g;g=+F(+t)*g;h[e>>3]=i+s;h[e+8>>3]=j+g;h[f>>3]=i-s;h[f+8>>3]=j-g;l=r;return}function bv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;i=e<<1;j=c[d>>2]|0;h=0;k=0;while(1){if((h|0)>=(j|0))break;l=(c[(c[b>>2]|0)+(h<<2)>>2]|0)+k|0;h=h+1|0;k=l}l=j+1|0;c[d>>2]=l;l=yw(c[b>>2]|0,l<<2)|0;c[b>>2]=l;c[l+(h<<2)>>2]=i;c[a>>2]=yw(c[a>>2]|0,k+i<<4)|0;b=i+-1+k|0;h=0;while(1){if((h|0)>=(e|0))break;l=(c[a>>2]|0)+(h+k<<4)|0;j=f+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];l=(c[a>>2]|0)+(b-h<<4)|0;j=g+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];h=h+1|0}return}function cv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;f=+h[b+8>>3];d=+h[b>>3];e=+K(+(+h[c+8>>3]-f),+(+h[c>>3]-d));d=+K(+(+h[a+8>>3]-f),+(+h[a>>3]-d));e=e-d;return +((e>0.0?e+-6.283185307179586:e)*.5+d)}function dv(a,b){a=a|0;b=b|0;var d=0;d=ww(24)|0;c[d+16>>2]=0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b+16>>2]=d;return d|0}function ev(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;c=b;f=b;a:while(1){e=0;while(1){d=c;c=c+1|0;d=a[d>>0]|0;if(!(d<<24>>24))break a;if(e<<24>>24){g=5;break}if(d<<24>>24!=92)break;else e=1}b:do if((g|0)==5){g=0;switch(d<<24>>24|0){case 114:{d=13;break b}case 108:case 110:{d=10;break b}default:break b}}while(0);a[f>>0]=d;f=f+1|0}a[f>>0]=0;return b|0}function fv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;while(1){g=a[e>>0]|0;if(!(g<<24>>24)){f=0;break}f=g<<24>>24;if(!(g<<24>>24==44|(XJ(f)|0)!=0)){h=5;break}e=e+1|0}a:do if((h|0)==5){switch(f|0){case 0:{f=0;break a}case 41:case 40:{e=e+1|0;break a}default:{}}h=d+4|0;i=d+8|0;while(1){if((gv(g<<24>>24)|0)<<24>>24){f=1;break a}f=c[h>>2]|0;if(f>>>0>=(c[i>>2]|0)>>>0){dm(d,1)|0;f=c[h>>2]|0}c[h>>2]=f+1;a[f>>0]=g;f=e+1|0;e=f;g=a[f>>0]|0}}while(0);c[b>>2]=e;return f|0}function gv(a){a=a|0;switch(a|0){case 0:case 44:case 41:case 40:{a=1;break}default:a=0}return a|0}function hv(a,b){a=a|0;b=b|0;return iv(c[a>>2]|0,c[a+160>>2]|0,c[a+156>>2]|0,b)|0}function iv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+160|0;k=o+20|0;m=o+16|0;n=o;c[k>>2]=0;c[m>>2]=0;cm(n,128,o+24|0);fm(n,f)|0;g=n+4|0;f=c[g>>2]|0;if(f>>>0>=(c[n+8>>2]|0)>>>0){dm(n,1)|0;f=c[g>>2]|0}a[f>>0]=0;h=c[n>>2]|0;c[g>>2]=h;i=b+300|0;j=b+296|0;f=0;g=h;a:while(1){if(f){f=1;break}f=FL(g,c[i>>2]|0,k)|0;if(!f){f=0;break}g=FL(f,c[j>>2]|0,m)|0;h=(g|0)!=0;if(h)f=FL(0,c[j>>2]|0,m)|0;else f=0;switch(((f|0)!=0&1)+(h&1)&3){case 2:{g=jv(b,g,0)|0;f=jv(b,f,e)|0;h=(g|0)>(f|0);f=(f&g|0)>-1&(((h?g:f)|0)>=(d|0)&((h?f:g)|0)<=(d|0));g=0;continue a}case 1:{f=(jv(b,g,d)|0)==(d|0);g=0;continue a}default:{f=0;g=0;continue a}}}gm(n);l=o;return f|0}function jv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=a[d>>0]|0;if(!(h<<24>>24==97?(xJ(d,85419)|0)==0:0))f=3;a:do if((f|0)==3){if((kv(d)|0)<<24>>24){e=rM(d)|0;break}g=c[b+308>>2]|0;if(!g)e=-1;else{b=c[b+312>>2]|0;e=1;while(1){if((e|0)>(b|0)){e=-1;break a}f=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[f>>0]|0)?(xJ(d,f)|0)==0:0)break a;e=e+1|0}}}while(0);return e|0}function kv(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=1;break}if(((c&255)+-48|0)>>>0<10)b=b+1|0;else{b=0;break}}return b|0}function lv(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function mv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a:do if((c[b+156>>2]|0)>=2?(f=FA(e,c[42211]|0,174181)|0,(hv(b,f)|0)<<24>>24==0):0)if(!(a[f>>0]|0))if(!(Um(d,e)|0))f=1;else{f=Um(d,e)|0;while(1){if(!f){f=0;break a}g=FA(f,c[42234]|0,174181)|0;if(!(a[g>>0]|0)){f=1;break a}if((hv(b,g)|0)<<24>>24){f=1;break a}f=Vm(d,f,e)|0}}else f=0;else f=1;while(0);return f|0}function nv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+64|0;e=d+32|0;f=d;a=(c[a+16>>2]|0)+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[f+28>>2]=c[a+28>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];b=(lv(f,e)|0)&255;l=d;return b|0}function ov(a,d){a=a|0;d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0;r=c[a+152>>2]|0;s=Vt(a)|0;c[s+4>>2]=2;c[s+8>>2]=d;c[s+12>>2]=8;if(r&16777216|0){if((e[(c[(ro(d)|0)+16>>2]|0)+178>>1]|0)>2){f=+h[(c[(c[d+16>>2]|0)+132>>2]|0)+16>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0)}else f=0.0;h[s+168>>3]=f}k=d+16|0;qv(a,c[(c[k>>2]|0)+104>>2]|0,d);do if(r&4259840|0){if((c[s+208>>2]|0)==0?(b[s+260>>1]&1)==0:0)break;p=By(d)|0;l=c[k>>2]|0;f=+h[l+16>>3];q=+h[l+24>>3];l=rv(d)|0;a:do if((p|2|0)==3){n=c[(c[k>>2]|0)+12>>2]|0;if(!((sv(n)|0)<<24>>24))g=0;else g=(c[n+4>>2]|l|0)!=0;if(!((r&524288|0)==0|((n|0)==0|g))){i=n+8|0;o=c[i>>2]|0;o=(o|0)<3?1:o;j=n+4|0;m=c[j>>2]|0;m=(m|0)>1?m:1;p=c[n+44>>2]|0;g=Im(d,87739)|0;if(!g)g=0;else g=rM(g)|0;g=(g+-4|0)>>>0>56?20:g;if(!(c[j>>2]|l)){c[s+264>>2]=0;i=vw(32)|0;g=c[k>>2]|0;v=+h[g+88>>3];h[i>>3]=f-v;u=+h[g+80>>3]*.5;h[i+8>>3]=q-u;h[i+16>>3]=v+f;h[i+24>>3]=u+q;g=2;break}i=c[i>>2]|0;if(((i|0)<3?+h[n+32>>3]==0.0:0)?+h[n+24>>3]==0.0:0){i=s+264|0;if(c[n>>2]|0){c[i>>2]=1;i=vw(32)|0;h[i>>3]=f;h[i+8>>3]=q;g=(m<<1)+-1|0;h[i+16>>3]=+h[p+(g<<4)>>3]+f;h[i+24>>3]=+h[p+(g<<4)+8>>3]+q;g=2;break}c[i>>2]=2;i=(m<<1)+-1|0;i=tv(+h[p+(i<<4)>>3],+h[p+(i<<4)+8>>3],g)|0;j=0;while(1){if((j|0)>=(g|0))break a;p=i+(j<<4)|0;h[p>>3]=+h[p>>3]+f;p=i+(j<<4)+8|0;h[p>>3]=+h[p>>3]+q;j=j+1|0}}m=O(i,m+-1|0)|0;c[s+264>>2]=2;if((i|0)<(g|0)){i=vw(o<<4)|0;g=0;while(1){if((g|0)>=(o|0)){g=o;break a}n=g+m|0;h[i+(g<<4)>>3]=+h[p+(n<<4)>>3]+f;h[i+(g<<4)+8>>3]=+h[p+(n<<4)+8>>3]+q;g=g+1|0}}else{l=(i|0)/(g|0)|0;i=vw(g<<4)|0;j=0;k=0;while(1){if((j|0)>=(g|0))break a;o=k+m|0;h[i+(j<<4)>>3]=+h[p+(o<<4)>>3]+f;h[i+(j<<4)+8>>3]=+h[p+(o<<4)+8>>3]+q;j=j+1|0;k=k+l|0}}}else t=31}else t=31;while(0);if((t|0)==31){c[s+264>>2]=0;i=vw(32)|0;g=c[k>>2]|0;h[i>>3]=f-+h[g+88>>3];v=+h[g+80>>3]*.5;h[i+8>>3]=q-v;h[i+16>>3]=+h[g+96>>3]+f;h[i+24>>3]=v+q;g=2}if(!(r&8192))fD(a,i,i,g)|0;c[s+272>>2]=i;c[s+268>>2]=g}while(0);ZE(Im(d,85048)|0);sD(a,d);return}function pv(a){a=a|0;tD(a);Wt(a);return}function qv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m;f=Im(e,96264)|0;i=Im(e,96229)|0;k=Im(e,85204)|0;cm(j,128,m+16|0);if(!d)h=0;else h=c[d>>2]|0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))f=Im(e,96269)|0;g=Yt(b,e,j)|0;if(!i)d=0;else d=Zu(i,e)|0;Xt(b,h,f,d,k,g,e)|0;_I(d);gm(j);l=m;return}function rv(b){b=b|0;var d=0,e=0;b=GA(b,c[42201]|0,174181)|0;a:do if(!(a[b>>0]|0))b=0;else{Du(b)|0;b=0;d=168408;while(1){e=c[d>>2]|0;if(!e)break a;e=(xJ(e,95923)|0)==0;b=e?1:b;d=d+4|0}}while(0);return b|0}function sv(a){a=a|0;var b=0.0;if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function tv(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0,f=0.0,g=0;f=6.283185307179586/+(c|0);g=vw(c<<4)|0;d=0.0;e=0;while(1){if((e|0)>=(c|0))break;h[g+(e<<4)>>3]=+E(+d)*a;h[g+(e<<4)+8>>3]=+F(+d)*b;d=d+f;e=e+1|0}return g|0}function uv(b,d){b=b|0;d=d|0;var e=0;a:do if((c[b+156>>2]|0)>=2?(e=FA(d,ym(d,0,86583,0)|0,174181)|0,(hv(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=co(d)|0;while(1){if(!e){e=0;break a}if((mv(b,d,e)|0)<<24>>24){e=1;break a}e=eo(d,e)|0}}else e=0;else e=1;while(0);return e|0}function vv(a,b){a=a|0;b=b|0;var d=0;d=Vt(a)|0;c[d+4>>2]=1;c[d+8>>2]=b;c[d+12>>2]=1;qv(a,c[(c[b+16>>2]|0)+12>>2]|0,b);mD(a,b);return}function wv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;b=Im(b,86479)|0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){Du(b)|0;e=168408;b=0;while(1){while(1){f=c[e>>2]|0;if(!f){e=168408;break a}if(!(xJ(f,95923)|0)){g=10;break}if(!(xJ(f,91378)|0)){f=e;g=12;break}if(!(xJ(f,91385)|0)){f=e;g=14;break}if(!(xJ(f,91360)|0)){f=e;g=16;break}e=e+4|0}if((g|0)==10){e=e+4|0;b=b|1;continue}else if((g|0)==12){while(1){h=f;f=f+4|0;g=c[f>>2]|0;c[h>>2]=g;if(!g)break;else g=12}b=b|3;continue}else if((g|0)==14){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=14}b=b|64;continue}else if((g|0)==16){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=16}b=b|4;continue}}}else{e=0;b=0}while(0);c[d>>2]=b;return e|0}function xv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;i=k;j=k+4|0;c[j>>2]=0;m=($t(b,0,j)|0)==0;j=c[j>>2]|0;if((m?(f=c[j>>2]|0,(f|0)>=2):0)?(h=j+8|0,(c[c[h>>2]>>2]|0)!=0):0){if((f|0)>2)_l(0,85446,i)|0;m=ww((rJ(b)|0)+1|0)|0;c[d>>2]=m;xK(m,c[c[h>>2]>>2]|0)|0;if(!(c[(c[h>>2]|0)+12>>2]|0))c[d+4>>2]=0;else{m=c[d>>2]|0;m=m+((rJ(m)|0)+1)|0;c[d+4>>2]=m;xK(m,c[(c[h>>2]|0)+12>>2]|0)|0}b=c[h>>2]|0;do if(!(a[b+8>>0]|0))if(!(a[b+20>>0]|0)){g[e>>2]=0.0;break}else{g[e>>2]=1.0-+g[b+16>>2];break}else c[e>>2]=c[b+4>>2];while(0);au(j);b=1}else{c[d>>2]=0;au(j);b=0}l=k;return b|0}function yv(a,b){a=a|0;b=b|0;nD(a,b);Wt(a);return}function zv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=l;l=l+96|0;p=x+48|0;s=x+16|0;w=x+8|0;v=x;t=x+80|0;c[t>>2]=1e3;f=ww(16e3)|0;u=a+256|0;e=1;j=1;i=0;q=0;r=c[b+8>>2]|0;while(1){if((q|0)>=(c[b>>2]|0))break;d=c[r>>2]|0;a:do switch(d|0){case 1:case 0:{n=r+80|0;c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];c[s+16>>2]=c[n+16>>2];c[s+20>>2]=c[n+20>>2];c[s+24>>2]=c[n+24>>2];c[s+28>>2]=c[n+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{z=r+8|0;A=r+24|0;h[f>>3]=+h[z>>3]-+h[A>>3];n=r+16|0;y=r+32|0;h[f+8>>3]=+h[n>>3]-+h[y>>3];h[f+16>>3]=+h[A>>3]+ +h[z>>3];h[f+24>>3]=+h[y>>3]+ +h[n>>3];GD(a,f,2,(d|0)==0?j:0);d=j}break}case 3:case 2:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{d=r+8|0;f=Av(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;HD(a,f,c[d>>2]|0,(c[r>>2]|0)==2?j:0);d=j}break}case 5:case 4:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{d=r+8|0;f=Av(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;JD(a,f,c[d>>2]|0,0,0,(c[r>>2]|0)==4?j&255:0);d=j}break}case 6:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{d=r+8|0;f=Av(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;KD(a,f,c[d>>2]|0);d=j}break}case 7:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{h[f>>3]=+h[r+8>>3];h[f+8>>3]=+h[r+16>>3];d=c[r+112>>2]|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];AD(a,p,d);d=j}break}case 8:{DD(a,c[r+8>>2]|0);d=1;break}case 9:{BD(a,c[r+8>>2]|0);d=1;break}case 13:{if((c[r+8>>2]|0)!=2){d=r+16|0;z=c[d+36>>2]|0;A=c[z+12>>2]|0;o=+g[z+8>>2];d=~~(+K(+(+h[r+40>>3]-+h[r+24>>3]),+(+h[r+32>>3]-+h[d>>3]))*57.29577951308232);DD(a,c[z+4>>2]|0);ED(a,A,d,o);d=2;break a}A=c[r+68>>2]|0;j=c[A+4>>2]|0;n=c[A+12>>2]|0;o=+g[A+8>>2];k=+h[r+40>>3];m=+h[r+16>>3];if(k==m?+h[r+48>>3]==+h[r+24>>3]:0)d=0;else d=~~(+H(+((m-k)/+h[r+32>>3]))*57.29577951308232);DD(a,j);ED(a,n,d,o);d=3;break}case 14:{_l(0,85512,v)|0;d=j;break}case 12:{if(!e){e=0;d=j}else{_l(0,85552,w)|0;e=0;d=j}break}case 11:{Du(c[r+8>>2]|0)|0;FD(a,168408);i=168408;d=j;break}default:d=j}while(0);j=d;q=q+1|0;r=r+120|0}if(i|0)FD(a,c[(c[a>>2]|0)+336>>2]|0);_I(f);l=x;return}function Av(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;f=g<<1;f=(f|0)>(e|0)?f:e;if((g|0)<(e|0)){a=yw(a,f<<4)|0;c[b>>2]=f}b=0;while(1){if((b|0)>=(e|0))break;h[a+(b<<4)>>3]=+h[d+(b*24|0)>>3];h[a+(b<<4)+8>>3]=+h[d+(b*24|0)+8>>3];b=b+1|0}return a|0}function Bv(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=c[b+4>>2];c[a+4>>2]=d;return}function Cv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+16|0;f=1;while(1){d=c[g>>2]|0;if((f|0)>(c[d+180>>2]|0))break;e=c[(c[d+184>>2]|0)+(f<<2)>>2]|0;Cv(b,e);d=Im(e,122540)|0;if(d|0?a[d>>0]|0:0)BD(b,d);d=Im(e,122531)|0;if(d|0?a[d>>0]|0:0)BD(b,d);d=Im(e,85423)|0;if(d|0?a[d>>0]|0:0)BD(b,d);d=Im(e,86469)|0;if(d|0?a[d>>0]|0:0)DD(b,d);d=Im(e,86503)|0;if(d|0?a[d>>0]|0:0)BD(b,d);f=f+1|0}return}function Dv(a){a=a|0;var b=0,d=0,e=0;b=c[42172]|0;if(!b){b=Ql(19684,c[4345]|0)|0;c[42172]=b}if(!(bb[c[b>>2]&31](b,a,4)|0)){d=c[42172]|0;e=c[d>>2]|0;b=GL(a)|0;bb[e&31](d,b,1)|0;b=1}else b=0;return b|0}function Ev(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function Fv(a){a=a|0;var b=0;b=c[42173]|0;if(!a){if((b|0)>0?(b=b+-1|0,c[42173]=b,(b|0)==0):0){bL(1,c[42174]|0)|0;_I(c[42174]|0)}}else{c[42173]=b+1;if(!b){c[42174]=GL(bL(1,0)|0)|0;bL(1,134865)|0}}return}function Gv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+96|0;r=u+72|0;q=u+56|0;p=u+48|0;t=u+32|0;s=u+24|0;e=u+8|0;d=u;if(0)xA();do if((No(b,122277,0,1)|0)!=0?(o=b+16|0,(c[(c[o>>2]|0)+8>>2]|0)!=0):0){Hv(b);Iv(a,b);Jv(a,b);Fv(1);j=a+56|0;k=a+184|0;m=a+192|0;n=a+28|0;i=Cr(a)|0;a:while(1){if(!i){g=33;break}d=c[j>>2]|0;if(!d){c[i+20>>2]=0;d=0}else{c[i+20>>2]=c[d+8>>2];d=c[d+12>>2]|0}c[i+24>>2]=d;c[i+12>>2]=a;c[i+28>>2]=c[k>>2];c[i+620>>2]=24748;c[i+624>>2]=14;if(!(c[(c[o>>2]|0)+8>>2]|0)){g=13;break}e=i+52|0;g=bD(i,c[e>>2]|0)|0;c[i+56>>2]=g;switch(g|0){case 999:{g=16;break a}case 21:{d=1;break}case 24:{d=520;break}default:d=Kv(b)|0}f=i+152|0;c[f>>2]=c[f>>2]|d;d=c[m>>2]|0;do if(!d)g=24;else{if(c[d+152>>2]&32|0?(xJ(c[e>>2]|0,c[d+52>>2]|0)|0)==0:0){d=c[42175]|0;if(!d){g=27;break}c[d+8>>2]=i;c[i+36>>2]=c[d+36>>2];g=29;break}dD(d);c[m>>2]=0;c[n>>2]=0;g=24}while(0);if((g|0)==24){c[42175]=0;g=27}if((g|0)==27?(g=0,(cD(i)|0)==0):0){c[m>>2]=i;g=29}if((g|0)==29){c[i+8>>2]=0;c[i+104>>2]=24860;Lv(i);Mv(i);Nv(i,b);Ov(i,b);Pv(i,b);if(!(c[f>>2]&128))gu(i,b);c[42175]=i}i=Dr(a)|0}if((g|0)==13){_l(1,85710,s)|0;Fv(0);if(!0){d=-1;break}d=c[13918]|0;s=Dn(b)|0;v=+yA();c[t>>2]=s;h[t+8>>3]=v;zL(d,85681,t)|0;d=-1;break}else if((g|0)==16){c[p>>2]=c[e>>2];_l(1,85731,p)|0;Fv(0);if(!0){d=-1;break}d=c[13918]|0;t=Dn(b)|0;v=+yA();c[q>>2]=t;h[q+8>>3]=v;zL(d,85681,q)|0;d=-1;break}else if((g|0)==33){Fv(0);if(!0){d=0;break}d=c[13918]|0;t=Dn(b)|0;v=+yA();c[r>>2]=t;h[r+8>>3]=v;zL(d,85681,r)|0;d=0;break}}else g=5;while(0);if((g|0)==5){_l(1,85633,d)|0;if(!0)d=-1;else{d=c[13918]|0;t=Dn(b)|0;v=+yA();c[e>>2]=t;h[e+8>>3]=v;zL(d,85681,e)|0;d=-1}}l=u;return d|0}function Hv(a){a=a|0;var b=0;b=co(a)|0;while(1){if(!b)break;Uv(a,b);b=eo(a,b)|0}return}function Iv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+32|0;k=o+24|0;f=o+16|0;j=o+8|0;n=o;c[b+168>>2]=d;g=b+293|0;a[g>>0]=0;e=Im(d,90530)|0;if(e|0?(c[f>>2]=j,c[f+4>>2]=n,i=cM(e,90537,f)|0,(i|0)>0):0){p=+h[j>>3]*72.0;e=b+208|0;h[e>>3]=p;h[b+200>>3]=p;if((i|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[g>>0]=1}f=b+292|0;a[f>>0]=0;e=Im(d,86133)|0;if(e|0?(c[k>>2]=j,c[k+4>>2]=n,m=cM(e,90537,k)|0,(m|0)>0):0){p=+h[j>>3]*72.0;e=b+224|0;h[e>>3]=p;h[b+216>>3]=p;if((m|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[f>>0]=1}e=b+294|0;a[e>>0]=0;f=b+232|0;g=d+16|0;n=(c[(c[g>>2]|0)+8>>2]|0)+48|0;c[f>>2]=c[n>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];f=c[(c[g>>2]|0)+8>>2]|0;if(+h[f+48>>3]>.001?+h[f+56>>3]>.001:0)a[e>>0]=1;c[b+288>>2]=a[f+81>>0]|0?90:0;e=b+196|0;c[e>>2]=86137;f=Im(d,86140)|0;if(f|0?a[f>>0]|0:0)c[e>>2]=f;n=b+256|0;m=(c[g>>2]|0)+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];c[42185]=ym(d,0,86535,0)|0;c[42186]=ym(d,0,86520,0)|0;c[b+320>>2]=GA(0,c[42195]|0,93027)|0;h[b+328>>3]=+EA(0,c[42194]|0,14.0,1.0);c[b+336>>2]=19720;c[b+188>>2]=Dn(d)|0;l=o;return}function Jv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+304|0;f=c[e>>2]|0;if(f|0){_I(f);c[e>>2]=0}f=b+308|0;e=c[f>>2]|0;if(e|0){_I(e);c[f>>2]=0}g=b+316|0;e=c[g>>2]|0;if(e|0){_I(e);c[g>>2]=0}e=Im(d,85884)|0;if(e){c[b+312>>2]=Sv(b,d,e)|0;e=Im(d,85891)|0;if(e|0?a[e>>0]|0:0)c[g>>2]=Tv(b,e)|0}else{c[f>>2]=0;c[b+312>>2]=1}return}function Kv(b){b=b|0;b=Im(b,85852)|0;a:do if(!b)b=0;else switch(a[b>>0]|0){case 110:{if(!(xJ(b+1|0,85864)|0))b=1;else{b=0;break a}break}case 101:{if(!(xJ(b+1|0,85874)|0))b=16;else{b=0;break a}break}default:{b=0;break a}}while(0);return b|0}function Lv(b){b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(!(a[e+292>>0]|0)){if((c[b+56>>2]|0)==300)d=+h[(c[b+68>>2]|0)+8>>3];else d=4.0;h[b+248>>3]=d;h[b+240>>3]=d}else{b=b+240|0;e=e+216|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}return}function Mv(b){b=b|0;var d=0;d=c[b>>2]|0;a:do if(!(a[d+293>>0]|0))switch(c[b+56>>2]|0){case 300:{d=b+416|0;b=(c[b+84>>2]|0)+8|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break a}case 30:case 21:case 22:case 4:case 3:case 2:{h[b+424>>3]=36.0;h[b+416>>3]=36.0;break a}default:{d=b+416|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;break a}}else{b=b+416|0;d=d+200|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2]}while(0);return}function Nv(b,d){b=b|0;d=d|0;var e=0.0,f=0;f=c[(c[b>>2]|0)+192>>2]|0;e=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];do if(!(e!=0.0)){if(f|0?a[f+128>>0]|0:0){b=b+432|0;f=f+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];break}d=b+432|0;if((c[b+56>>2]|0)==300){b=(c[b+84>>2]|0)+40|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break}else{h[b+440>>3]=96.0;h[d>>3]=96.0;break}}else{h[b+440>>3]=e;h[b+432>>3]=e}while(0);return}function Ov(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;t=A+80|0;u=A+56|0;s=A+40|0;v=A+32|0;w=A+24|0;x=A+16|0;y=A+8|0;z=A;m=c[b>>2]|0;o=+h[m+272>>3];q=+h[m+280>>3];p=+h[m+256>>3];r=+h[m+264>>3];f=+h[b+240>>3];e=p-f;h[b+208>>3]=e;i=+h[b+248>>3];j=r-i;h[b+216>>3]=j;f=f+o;h[b+224>>3]=f;i=i+q;h[b+232>>3]=i;e=f-e;j=i-j;h[x>>3]=1.0;g=c[(c[d+16>>2]|0)+8>>2]|0;i=+h[g+64>>3];do if(i>.001?(k=+h[g+72>>3],k>.001):0){e=e==0.0?i:e;f=j==0.0?k:j;if(!(i<e|k<f)?!(k>f&(i>e&(a[g+80>>0]|0)!=0)):0){k=e;j=f;i=1.0;break}n=i/e<k/f;i=(n?i:k)/(n?e:f);h[x>>3]=i;k=e;j=f}else{k=e;i=1.0}while(0);f=(p+o)*.5;h[y>>3]=f;e=(r+q)*.5;h[z>>3]=e;c[b+360>>2]=c[m+288>>2];k=i*k;h[v>>3]=k;j=i*j;h[w>>3]=j;g=Im(d,85783)|0;if(g){m=ZI((rJ(g)|0)+1|0)|0;n=ZI((rJ(g)|0)+1|0)|0;c[s>>2]=v;c[s+4>>2]=w;c[s+8>>2]=x;c[s+12>>2]=m;do if((cM(g,85792,s)|0)==4){g=no(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}else{c[u>>2]=v;c[u+4>>2]=w;c[u+8>>2]=x;c[u+12>>2]=m;c[u+16>>2]=n;if((cM(g,85812,u)|0)!=4){c[t>>2]=v;c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=y;c[t+16>>2]=z;cM(g,85832,t)|0;break}g=no(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}while(0);_I(m);_I(n);k=+h[v>>3];j=+h[w>>3];i=+h[x>>3];f=+h[y>>3];e=+h[z>>3]}h[b+368>>3]=k;h[b+376>>3]=j;h[b+352>>3]=i;h[b+336>>3]=f;h[b+344>>3]=e;l=A;return}function Pv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0,Q=0.0;M=l;l=l+224|0;J=M+200|0;z=M+168|0;E=M+144|0;I=M+120|0;F=M+96|0;G=M+64|0;e=M+184|0;v=M+176|0;w=M+160|0;y=M+136|0;x=M+112|0;A=M+80|0;B=M+48|0;C=M+32|0;D=M+16|0;K=M+8|0;L=M;u=c[b>>2]|0;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;H=b+368|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=b+360|0;if(c[H>>2]|0){c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];Qv(e,J);c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2]}t=b+416|0;c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];if((a[u+294>>0]|0)!=0?(c[b+152>>2]&32|0)!=0:0){i=+h[u+232>>3]-+h[F>>3]*2.0;h[E>>3]=i;k=+h[u+240>>3]-+h[F+8>>3]*2.0;p=E+8|0;h[p>>3]=k;if(!(i<.0001)){o=+h[I>>3];e=~~(o/i);f=b+164|0;c[f>>2]=e;if(o-i*+(e|0)>.0001){e=e+1|0;c[f>>2]=e}}else{c[b+164>>2]=1;e=1}if(!(k<.0001)){g=+h[I+8>>3];f=~~(g/k);j=b+168|0;c[j>>2]=f;if(g-k*+(f|0)>.0001){f=f+1|0;c[j>>2]=f}}else{c[b+168>>2]=1;f=1;g=+h[I+8>>3]}c[b+204>>2]=O(f,e)|0;o=+h[(+h[I>>3]<i?I:E)>>3];h[I>>3]=o;e=p;f=I;m=+h[(g<k?I:E)+8>>3];g=o;j=21}else{if(c[b+68>>2]|0){e=c[b+84>>2]|0;i=+h[e+24>>3]-+h[F>>3]*2.0;i=i<0.0?0.0:i;h[E>>3]=i;o=+h[e+32>>3]-+h[F+8>>3]*2.0;e=E+8|0;h[e>>3]=o;if(o<0.0){f=E;j=17}else e=E}else{h[E+8>>3]=0.0;f=E;e=E;j=17}if((j|0)==17){h[e>>3]=0.0;e=f;i=+h[f>>3]}c[b+204>>2]=1;c[b+168>>2]=1;c[b+164>>2]=1;g=+h[I>>3];if(i<g){h[e>>3]=g;i=g}e=E+8|0;k=+h[e>>3];m=+h[I+8>>3];if(k<m){f=E;j=21}else{r=e;m=k}}if((j|0)==21){h[f+8>>3]=m;r=e;m=+h[e>>3]}n=+h[F>>3];s=b+432|0;k=+h[s>>3]*.013888888888888888*(n*2.0+i);c[b+448>>2]=~~(k+(k>=0.0?.5:-.5));q=F+8|0;k=+h[q>>3];t=b+440|0;o=+h[t>>3]*.013888888888888888*(k*2.0+m);c[b+452>>2]=~~(o+(o>=0.0?.5:-.5));j=b+188|0;p=b+180|0;e=b+172|0;f=u+196|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;Rv(v,b,a[c[f>>2]>>0]|0);u=v;v=c[u+4>>2]|0;e=p;c[e>>2]=c[u>>2];c[e+4>>2]=v;Rv(w,b,a[(c[f>>2]|0)+1>>0]|0);e=w;w=c[e>>2]|0;e=c[e+4>>2]|0;v=j;c[v>>2]=w;c[v+4>>2]=e;w=(c[p>>2]|0)+w|0;if(!((((w|0)>-1?w:0-w|0)|0)==1?(w=(c[b+184>>2]|0)+e|0,(((w|0)>-1?w:0-w|0)|0)==1):0)){Rv(y,b,66);v=y;y=c[v+4>>2]|0;w=p;c[w>>2]=c[v>>2];c[w+4>>2]=y;Rv(x,b,76);w=x;x=c[w+4>>2]|0;y=j;c[y>>2]=c[w>>2];c[y+4>>2]=x;c[z>>2]=c[f>>2];_l(0,85763,z)|0}if(a[(c[(c[d+16>>2]|0)+8>>2]|0)+82>>0]|0){if(i>g){m=(i-g)*.5;h[G>>3]=m}else m=0.0;i=+h[r>>3];o=+h[I+8>>3];if(i>o){i=(i-o)*.5;h[G+8>>3]=i}else i=0.0}else{i=0.0;m=0.0}if(!(c[H>>2]|0))j=1;else{c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];Qv(A,J);c[I>>2]=c[A>>2];c[I+4>>2]=c[A+4>>2];c[I+8>>2]=c[A+8>>2];c[I+12>>2]=c[A+12>>2];c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];Qv(B,J);c[E>>2]=c[B>>2];c[E+4>>2]=c[B+4>>2];c[E+8>>2]=c[B+8>>2];c[E+12>>2]=c[B+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];Qv(C,J);c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];Qv(D,J);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];n=+h[F>>3];m=+h[G>>3];k=+h[q>>3];i=+h[G+8>>3];g=+h[I>>3];j=(c[H>>2]|0)==0}o=m+n;h[b+384>>3]=o;P=i+k;h[b+392>>3]=P;N=m+n+g;h[b+400>>3]=N;Q=+h[I+8>>3];n=i+k+Q;h[b+408>>3]=n;m=+h[b+352>>3];h[b+320>>3]=g/m;h[b+328>>3]=Q/m;m=+h[s>>3];o=o*.013888888888888888*m;f=b+456|0;c[f>>2]=~~(o+(o>=0.0?.5:-.5));o=+h[t>>3];k=P*.013888888888888888*o;c[b+460>>2]=~~(k+(k>=0.0?.5:-.5));m=N*.013888888888888888*m;e=b+464|0;c[e>>2]=~~(m+(m>=0.0?.5:-.5));o=n*.013888888888888888*o;c[b+468>>2]=~~(o+(o>=0.0?.5:-.5));if(!j){c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];Bv(K,J);I=K;K=c[I+4>>2]|0;b=f;c[b>>2]=c[I>>2];c[b+4>>2]=K;c[J>>2]=c[e>>2];c[J+4>>2]=c[e+4>>2];Bv(L,J);b=L;K=c[b+4>>2]|0;L=e;c[L>>2]=c[b>>2];c[L+4>>2]=K}l=M;return}function Qv(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b>>3];h[a>>3]=+h[b+8>>3];h[a+8>>3]=c;return}function Rv(a,b,d){a=a|0;b=b|0;d=d|0;d=(d<<24>>24)+-66|0;switch(d>>>1|d<<31|0){case 9:{c[b+176>>2]=(c[b+168>>2]|0)+-1;b=0;d=-1;break}case 0:{b=0;d=1;break}case 5:{b=1;d=0;break}case 8:{c[b+172>>2]=(c[b+164>>2]|0)+-1;b=-1;d=0;break}default:{b=0;d=0}}c[a>>2]=b;c[a+4>>2]=d;return}function Sv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;f=Im(d,86004)|0;i=b+296|0;c[i>>2]=(f|0)==0?86013:f;d=Im(d,86017)|0;f=b+300|0;d=(d|0)==0?86030:d;c[f>>2]=d;d=JL(c[i>>2]|0,d)|0;if(d|0){c[g>>2]=a[d>>0];_l(0,86032,g)|0;c[f>>2]=174181}d=GL(e)|0;c[b+304>>2]=d;h=b+308|0;f=0;b=0;while(1){e=DL(d,c[i>>2]|0)|0;if(!e)break;g=b+1|0;if((b|0)<(f|0))d=c[h>>2]|0;else{f=f+128|0;d=c[h>>2]|0;if(!d)d=ww(f<<2)|0;else d=yw(d,f<<2)|0;c[h>>2]=d}c[d+(g<<2)>>2]=e;b=g;d=0}if(b|0){i=yw(c[h>>2]|0,(b<<2)+8|0)|0;c[h>>2]=i;c[i>>2]=0;c[(c[h>>2]|0)+(b+1<<2)>>2]=0}l=j;return b|0}function Tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;i=a+312|0;d=ww((c[i>>2]<<2)+8|0)|0;e=0;h=1;while(1){g=c[i>>2]|0;if((h|0)>(g|0))break;f=e+1|0;if((iv(a,h,g,b)|0)<<24>>24){c[d+(f<<2)>>2]=h;e=f}h=h+1|0}if(!e){c[j>>2]=b;_l(0,85903,j)|0;_I(d);d=0}else{c[d>>2]=e;c[d+(e+1<<2)>>2]=(c[i>>2]|0)+1}l=k;return d|0}function Uv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0;d=c[b+16>>2]|0;g=+h[d+16>>3];h[d+48>>3]=g-+h[d+88>>3];e=+h[d+24>>3];f=+h[d+80>>3]*.5;h[d+56>>3]=e-f;h[d+64>>3]=+h[d+96>>3]+g;h[d+72>>3]=f+e;b=Pm(a,b)|0;while(1){if(!b)break;Vv(b);b=Rm(a,b)|0}return}function Vv(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a|0)Wv(a);return}function Wv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+240|0;v=C+192|0;u=C+176|0;w=C+64|0;x=C+32|0;y=C;z=C+144|0;A=C+112|0;B=a+4|0;if((c[B>>2]|0)<=0)ma(86171,84925,3994,86185);b=c[a>>2]|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));Xv(x,v);i=x+8|0;j=y+8|0;k=x+16|0;m=y+16|0;n=x+24|0;o=y+24|0;p=w+8|0;q=w+12|0;r=w+32|0;s=w+4|0;t=w+16|0;g=0;while(1){if((g|0)>=(c[B>>2]|0))break;if((g|0)>0){b=(c[a>>2]|0)+(g*48|0)|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));Xv(y,v);h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[p>>2]|0;if(b|0){f=c[w>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];Rt(z,u,v,1.0,b);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[q>>2]|0;if(b|0){f=(c[w>>2]|0)+((c[s>>2]|0)+-1<<4)|0;c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];Rt(A,u,v,1.0,b);c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2];c[y+20>>2]=c[A+20>>2];c[y+24>>2]=c[A+24>>2];c[y+28>>2]=c[A+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}g=g+1|0}B=a+8|0;c[B>>2]=c[x>>2];c[B+4>>2]=c[x+4>>2];c[B+8>>2]=c[x+8>>2];c[B+12>>2]=c[x+12>>2];c[B+16>>2]=c[x+16>>2];c[B+20>>2]=c[x+20>>2];c[B+24>>2]=c[x+24>>2];c[B+28>>2]=c[x+28>>2];l=C;return}function Xv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;n=l;l=l+48|0;i=n+32|0;j=n;k=c[b+4>>2]|0;if((k|0)<=0)ma(86201,84925,3968,86213);if(((k>>>0)%3|0|0)!=1)ma(86223,84925,3969,86213);m=j+16|0;d=c[b>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];e=i+8|0;f=j+8|0;g=j+24|0;b=1;while(1){if((b|0)>=(k|0))break;p=+h[d+(b<<4)+8>>3];t=b+1|0;o=+h[d+(t<<4)+8>>3];r=(+h[d+(t<<4)>>3]+ +h[d+(b<<4)>>3])*.5;h[i>>3]=r;p=(o+p)*.5;h[e>>3]=p;o=+h[(+h[j>>3]<r?j:i)>>3];h[j>>3]=o;s=+h[(+h[f>>3]<p?j:i)+8>>3];h[f>>3]=s;r=+h[(+h[m>>3]>r?m:i)>>3];h[m>>3]=r;p=+h[(+h[g>>3]>p?m:i)+8>>3];h[g>>3]=p;t=d+(b+2<<4)|0;c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];q=+h[i>>3];h[j>>3]=+h[(o<q?j:i)>>3];o=+h[e>>3];h[f>>3]=+h[(s<o?j:i)+8>>3];h[m>>3]=+h[(r>q?m:i)>>3];h[g>>3]=+h[(p>o?m:i)+8>>3];b=b+3|0}c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[a+28>>2]=c[j+28>>2];l=n;return}function Yv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;q=+h[a>>3];r=+h[c>>3];k=!(q>=r);if((!k?q<=+h[c+16>>3]:0)?(e=+h[a+8>>3],e>=+h[c+8>>3]):0)i=e<=+h[c+24>>3];else i=0;e=+h[b>>3];if((e>=r?e<=+h[c+16>>3]:0)?(f=+h[b+8>>3],f>=+h[c+8>>3]):0){d=f<=+h[c+24>>3];if(!(i^d))if(i&d)d=1;else l=11;else d=0}else if(i)d=0;else l=11;a:do if((l|0)==11){p=+h[a+8>>3];do if(q==e){r=+h[c+8>>3];if(!(k|p>=r^+h[b+8>>3]>=r^1)?q<=+h[c+16>>3]:0){d=0;break a}}else{j=+h[b+8>>3];if(p==j){if(!(q>=r^e>=r))break;if(!(p>=+h[c+8>>3]))break;if(!(p<=+h[c+24>>3]))break;else{d=0;break a}}o=(j-p)/(e-q);l=q<e;g=l?q:e;e=l?e:q;f=(r-q)*o+p;m=+h[c+8>>3];if(!(!(r>=g)|!(r<=e)|!(f>=m))?f<=+h[c+24>>3]:0){d=0;break a}n=+h[c+16>>3];f=(n-r)*o+f;if(f>=m?!(!(n<=e)|(n>=g?!(f<=+h[c+24>>3]):1)):0){d=0;break a}l=p<j;g=l?p:j;f=l?j:p;e=(m-p)/o+q;if(e>=r?!(!(m<=f)|(!(m>=g)|!(e<=n))):0){d=0;break a}p=+h[c+24>>3];q=(p-m)/o+e;if(q>=r?!(!(p<=f)|(!(p>=g)|!(q<=n))):0){d=0;break a}}while(0);d=-1}while(0);return d|0}function Zv(a){a=a|0;var b=0,c=0.0;b=a+16|0;c=+h[b>>3];h[a+32>>3]=c;h[a+48>>3]=c;h[a+40>>3]=+h[a+24>>3];h[a+56>>3]=+h[a+8>>3];h[b>>3]=+h[a>>3];return}function _v(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;if((c[42176]|0)!=(d|0)){SJ(+(d|0)*.15915494309189535,167112,167120);c[42176]=d}g=+h[b>>3];e=+h[20890];f=+h[b+8>>3];i=+h[20889];h[a>>3]=e*g-i*f;h[a+8>>3]=i*g+f*e;return}function $v(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=g;e=-e;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];aw(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];$v(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];_v(a,f,d);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function aw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=-g;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];$v(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];aw(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];_v(a,f,360-d|0);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function bw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[c>>3];d=+h[c+8>>3];f=d+ +h[b>>3];e=g+ +h[b+24>>3];d=d+ +h[b+16>>3];h[a>>3]=g+ +h[b+8>>3];h[a+8>>3]=f;h[a+16>>3]=e;h[a+24>>3]=d;return}function cw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;f=+h[a>>3];d=+h[b>>3]-f;g=+h[a+8>>3];e=+h[b+8>>3]-g;f=(+h[c+8>>3]-g)*d-(+h[c>>3]-f)*e;f=f*f;return +(f<1.0e-10?0.0:f/(e*e+d*d))}function dw(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;g=n+8|0;i=n;e=vw(96)|0;m=b+16|0;c[(c[m>>2]|0)+8>>2]=e;e=Im(b,86250)|0;if(!e){e=Na(86259)|0;if(e|0)k=3}else k=3;if((k|0)==3)Va(86271,e|0,1)|0;e=(ew(b)|0)&255;a[(c[m>>2]|0)+115>>0]=e;if(0==0?(e=Im(b,86282)|0,c[42178]=e,(e|0)==0):0)c[42178]=c[42177];f=+EA(b,ym(b,0,86292,0)|0,0.0,0.0);h[c[(c[m>>2]|0)+8>>2]>>3]=f;e=Im(b,86300)|0;a:do if(!e)e=0;else{switch(a[e>>0]|0){case 76:{if(!(xJ(e,86308)|0)){e=1;break a}break}case 66:{if(!(xJ(e,86311)|0)){e=2;break a}break}case 82:{e=(xJ(e,86314)|0)==0;e=e?3:0;break a}default:{e=0;break a}}e=0}while(0);c[(c[m>>2]|0)+116>>2]=e<<2|(d<<24>>24==0?0:e);f=+EA(b,ym(b,0,86317,0)|0,.25,.02);h[i>>3]=f;f=f*72.0;c[(c[m>>2]|0)+248>>2]=~~(f+(f>=0.0?.5:-.5));e=FA(b,ym(b,0,86325,0)|0,0)|0;if(e){c[g>>2]=i;if(cM(e,86246,g)|0){f=+h[i>>3];if(f<.02){h[i>>3]=.02;f=.02}}else{h[i>>3]=.5;f=.5}if(hL(e,86333)|0)a[(c[m>>2]|0)+276>>0]=1}else{h[i>>3]=.5;f=.5}f=f*72.0;c[(c[m>>2]|0)+252>>2]=~~(f+(f>=0.0?.5:-.5));i=(DA(b,ym(b,0,86341,0)|0,0,0)|0)&255;a[(c[m>>2]|0)+243>>0]=i;i=UA(FA(b,ym(b,0,86351,0)|0,0)|0,19732,19748)|0;c[(c[m>>2]|0)+244>>2]=i;fw(b);i=gw(b,86361,(c[(c[m>>2]|0)+8>>2]|0)+64|0)|0;e=c[(c[m>>2]|0)+8>>2]|0;a[e+80>>0]=i;gw(b,86366,e+48|0)|0;e=IA(Im(b,86371)|0)|0;a[(c[(c[m>>2]|0)+8>>2]|0)+82>>0]=e;e=Im(b,86378)|0;do if(!e){e=Im(b,86385)|0;if(e|0){e=(a[e>>0]|32)<<24>>24==108&1;k=27;break}e=Im(b,86397)|0;if(e|0){e=IA(e)|0;k=27}}else{e=(rM(e)|0)==90&1;k=27}while(0);if((k|0)==27)a[(c[(c[m>>2]|0)+8>>2]|0)+81>>0]=e;c[42179]=UA(Im(b,86407)|0,19764,19780)|0;a[174076]=IA(Im(b,86419)|0)|0;c[42181]=0;c[42182]=0;h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=0.0;e=Im(b,86431)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)k=32;else k=30;if(((k|0)==30?(j=Im(b,86435)|0,j|0):0)?a[j>>0]|0:0){e=j;k=32}if((k|0)==32){f=+sM(e);h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=f}hw(b);c[42184]=ym(b,0,86446,0)|0;c[42187]=ym(b,0,86455,0)|0;c[42188]=ym(b,0,90530,0)|0;c[42189]=ym(b,1,96049,0)|0;c[42190]=ym(b,1,96043,0)|0;c[42191]=ym(b,1,90671,0)|0;c[42192]=ym(b,1,122540,0)|0;c[42193]=ym(b,1,86469,0)|0;c[42201]=ym(b,1,86479,0)|0;c[42194]=ym(b,1,86485,0)|0;c[42195]=ym(b,1,86494,0)|0;c[42196]=ym(b,1,86503,0)|0;k=ym(b,1,86240,0)|0;c[42198]=k;if(!k)c[42198]=ym(b,1,86240,90527)|0;c[42199]=ym(b,1,86513,0)|0;c[42202]=ym(b,1,86341,0)|0;c[42216]=ym(b,1,86520,0)|0;c[42205]=ym(b,1,86446,0)|0;c[42197]=ym(b,1,90530,0)|0;c[42203]=ym(b,1,86529,0)|0;c[42204]=ym(b,1,86535,0)|0;c[42207]=ym(b,1,86547,0)|0;c[42206]=ym(b,1,86385,0)|0;c[42208]=ym(b,1,86552,0)|0;c[42209]=ym(b,1,86563,0)|0;c[42210]=ym(b,1,122089,0)|0;c[42200]=ym(b,1,86573,0)|0;c[42211]=ym(b,1,86583,0)|0;c[42212]=ym(b,1,86589,0)|0;c[42213]=ym(b,1,86595,0)|0;c[42214]=ym(b,1,86603,0)|0;c[42215]=ym(b,1,86612,0)|0;c[42217]=ym(b,1,86455,0)|0;c[42218]=ym(b,2,86614,0)|0;c[42220]=ym(b,2,122540,0)|0;c[42221]=ym(b,2,86469,0)|0;c[42223]=ym(b,2,86485,0)|0;c[42224]=ym(b,2,86494,0)|0;c[42225]=ym(b,2,86503,0)|0;c[42226]=ym(b,2,86240,0)|0;c[42227]=ym(b,2,86513,0)|0;c[42236]=ym(b,2,86621,0)|0;c[42228]=ym(b,2,86632,0)|0;c[42239]=ym(b,2,86636,0)|0;c[42240]=ym(b,2,86646,0)|0;c[42241]=ym(b,2,86656,0)|0;c[42242]=ym(b,2,86666,0)|0;c[42243]=ym(b,2,86676,0)|0;c[42244]=ym(b,2,86690,0)|0;c[42245]=ym(b,2,86704,0)|0;c[42246]=ym(b,2,86719,0)|0;c[42247]=ym(b,2,86733,0)|0;c[42219]=ym(b,2,86744,0)|0;c[42231]=ym(b,2,86341,0)|0;c[42229]=ym(b,2,86479,0)|0;c[42230]=ym(b,2,86751,0)|0;c[42232]=ym(b,2,86760,0)|0;c[42233]=ym(b,2,86770,0)|0;c[42234]=ym(b,2,86583,0)|0;c[42235]=ym(b,2,86595,0)|0;c[42248]=ym(b,2,86781,0)|0;c[42249]=ym(b,2,86790,0)|0;c[42250]=ym(b,2,86520,0)|0;e=Ut(b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+88>>2]=e;e=Im(b,86799)|0;if(e|0?a[e>>0]|0:0){b=qw(e,b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+92>>2]=b}l=n;return}function ew(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=GA(a,ym(a,0,86883,0)|0,86891)|0;if(((((((iK(a,86897)|0)!=0?(iK(a,86905)|0)!=0:0)?(iK(a,86912)|0)!=0:0)?(iK(a,86915)|0)!=0:0)?(iK(a,86926)|0)!=0:0)?(iK(a,86937)|0)!=0:0)?(iK(a,86947)|0)!=0:0)if((iK(a,86958)|0)!=0?(iK(a,86964)|0)!=0:0)if((iK(a,86891)|0)!=0?(iK(a,86969)|0)!=0:0){c[b>>2]=a;_l(0,86974,b)|0;a=0}else a=0;else a=2;else a=1;l=d;return a|0}function fw(b){b=b|0;var d=0.0,e=0,f=0;e=Im(b,86841)|0;a:do if(e|0?(f=a[e>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:{if(f<<24>>24!=97)break a;if(xJ(e,86847)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=4;break a}case 99:{if(f<<24>>24!=99)break a;if(xJ(e,86852)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=3;break a}case 101:{if(f<<24>>24!=101)break a;if(xJ(e,86861)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=5;break a}case 102:{if(f<<24>>24!=102)break a;if(xJ(e,86868)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=2;break a}default:{d=+sM(e);if(!(d>0.0))break a;b=c[(c[b+16>>2]|0)+8>>2]|0;c[b+84>>2]=1;h[b+16>>3]=d;break a}}while(0);return}function gw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o+32|0;i=o+16|0;k=o+8|0;j=o;n=o+40|0;a[n>>0]=0;b=Im(b,d)|0;do if(b){c[i>>2]=k;c[i+4>>2]=j;c[i+8>>2]=n;i=(cM(b,86825,i)|0)>1;g=+h[k>>3];f=+h[j>>3];if(i&g>0.0&f>0.0){g=g*72.0;h[e>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);g=f*72.0;h[e+8>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);b=(a[n>>0]|0)==33;break}a[n>>0]=0;c[m>>2]=k;c[m+4>>2]=n;m=(cM(b,86835,m)|0)>0;f=+h[k>>3];if(m&f>0.0){g=f*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);h[e>>3]=g;h[e+8>>3]=g;b=(a[n>>0]|0)==33}else b=0}else b=0;while(0);l=o;return b&1|0}function hw(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0;d=Im(b,86240)|0;do if(d|0?a[d>>0]|0:0){e=(c[(c[b+60>>2]|0)+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|8;e=(cp(d)|0)!=0;g=+EA(b,ym(b,0,86485,0)|0,14.0,1.0);i=GA(b,ym(b,0,86494,0)|0,93027)|0;d=lw(b,d,e?2:0,g,i,GA(b,ym(b,0,86503,0)|0,122106)|0)|0;i=b+16|0;c[(c[i>>2]|0)+12>>2]=d;d=Im(b,90662)|0;e=(d|0)!=0;do if((so(b)|0)==(b|0)){if(e?(a[d>>0]|0)==116:0){d=1;break}d=0}else{if(e?(a[d>>0]|0)==98:0){d=0;break}d=1}while(0);e=Im(b,86802)|0;a:do if(e)switch(a[e>>0]|0){case 108:{d=d|2;break a}case 114:{d=d|4;break a}default:break a}while(0);a[(c[i>>2]|0)+275>>0]=d;if((so(b)|0)!=(b|0)){d=c[(c[i>>2]|0)+12>>2]|0;f=+h[d+24>>3]+16.0;g=+h[d+32>>3]+8.0;b=(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0;d=c[i>>2]|0;e=a[d+275>>0]<<1&2;if(b){b=e&255;h[d+48+(b<<4)>>3]=f;h[d+48+(b<<4)+8>>3]=g;break}else{b=(e^3)&255;h[d+48+(b<<4)>>3]=g;h[d+48+(b<<4)+8>>3]=f;break}}}while(0);return}function iw(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+8>>2]|0;do if(!b)b=d;else{d=c[b+88>>2]|0;if(d){xt(d);d=c[e>>2]|0;b=c[d+8>>2]|0;if(!b){b=d;break}}_I(c[b+92>>2]|0);b=c[e>>2]|0}while(0);_I(c[b+8>>2]|0);e=c[e>>2]|0;c[e+8>>2]=0;ow(c[e+12>>2]|0);To(a,0,122277);return}function jw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d>>2]|0;l=d+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;if(a[f>>0]|0){i=ww((rJ(f)|0)+1|0)|0;a[i>>0]=0;j=d+12|0;e=i;a:while(1){b:while(1){h=f+1|0;g=a[f>>0]|0;if(!(g<<24>>24))break a;if(!(g<<24>>24==-1|((g&255)<161|(c[j>>2]|0)!=2))){a[e>>0]=g;h=a[h>>0]|0;g=e+2|0;a[e+1>>0]=h;if(!(h<<24>>24)){e=g;break a}else{e=g;f=f+2|0;continue}}switch(g<<24>>24){case 92:break b;case 10:{k=12;break b}default:{}}a[e>>0]=g;e=e+1|0;f=h}if((k|0)==12){k=0;f=e+1|0;a[e>>0]=0;kw(b,d,i,110);e=f;i=f;f=h;continue}g=a[h>>0]|0;switch(g<<24>>24|0){case 114:case 108:case 110:{g=e+1|0;a[e>>0]=0;kw(b,d,i,a[h>>0]|0);e=g;break}default:{a[e>>0]=g;e=e+1|0;g=i}}i=g;f=(a[h>>0]|0)==0?h:f+2|0}if((i|0)!=(e|0)){a[e>>0]=0;kw(b,d,i,110)}d=d+40|0;c[d>>2]=c[l>>2];c[d+4>>2]=c[l+4>>2];c[d+8>>2]=c[l+8>>2];c[d+12>>2]=c[l+12>>2]}return}function kw(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+32|0;q=s+16|0;p=s;r=e+76|0;k=b[r>>1]|0;o=e+72|0;m=c[o>>2]|0;if(!m)n=vw((k*56|0)+112|0)|0;else n=xw(m,k+2|0,56,k+1|0)|0;c[o>>2]=n;k=b[r>>1]|0;m=n+(k*56|0)|0;c[m>>2]=f;a[n+(k*56|0)+48>>0]=g;if((f|0)!=0?(a[f>>0]|0)!=0:0){c[41782]=c[e+4>>2];h[20893]=+h[e+16>>3];g=c[d+144>>2]|0;c[n+(k*56|0)+4>>2]=bb[c[g>>2]&31](g,167128,1)|0;pA(p,d,m);j=+h[p>>3];h[q>>3]=j;i=+h[p+8>>3]}else{h[q>>3]=0.0;i=+(~~(+h[e+16>>3]*1.2)|0);h[n+(k*56|0)+40>>3]=i;j=0.0}b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=e+24|0;h[r>>3]=+h[(+h[r>>3]>j?r:q)>>3];r=e+32|0;h[r>>3]=+h[r>>3]+i;l=s;return}function lw(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;r=u+16|0;q=u+8|0;p=u;t=vw(88)|0;switch(Co(b)|0){case 0:{m=0;s=c[b+60>>2]|0;n=b;o=0;break}case 1:{m=0;s=so(ro(b)|0)|0;n=0;o=b;break}case 2:{m=b;s=so(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0;n=0;o=0;break}default:{m=0;s=0;n=0;o=0}}c[t+4>>2]=i;c[t+8>>2]=j;h[t+16>>3]=g;k=s+16|0;j=t+12|0;c[j>>2]=d[(c[k>>2]|0)+115>>0];a:do if(f&4){c[t>>2]=GL(e)|0;if(f&2|0)a[t+82>>0]=1}else switch(f|0){case 2:{c[t>>2]=GL(e)|0;a[t+82>>0]=1;if(!(TF(b,t)|0))break a;switch(Co(b)|0){case 0:{c[p>>2]=Dn(n)|0;_l(3,87017,p)|0;break a}case 1:{c[q>>2]=Dn(o)|0;_l(3,87039,q)|0;break a}case 2:{p=Dn(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;q=(qn(s)|0)!=0;s=Dn(c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=q?122546:122549;c[r+8>>2]=s;_l(3,87060,r)|0;break a}default:break a}}case 0:{i=mw(e,b,0)|0;c[t>>2]=i;if((c[j>>2]|0)==1)i=yB(i)|0;else i=vB(i,s)|0;_I(c[t>>2]|0);c[t>>2]=i;jw(c[(c[k>>2]|0)+144>>2]|0,t);break a}default:ma(87087,87103,166,87112)}while(0);l=u;return t|0}function mw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;switch(Co(d)|0){case 0:{i=Dn(d)|0;g=rJ(i)|0;f=c[(c[d+16>>2]|0)+12>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;h=2;y=87135;m=87132;j=90527;o=174181;q=174181;p=0;r=0;n=2;w=f;x=87129}else{v=0;t=2;u=2;s=2;h=2;y=87135;m=87132;j=90527;o=174181;q=174181;p=0;r=0;n=rJ(f)|0;w=f;x=87129}}else{v=0;t=2;u=2;s=2;h=2;y=87135;m=87132;j=90527;o=174181;q=174181;p=0;r=0;n=2;w=87123;x=87129}break}case 1:{i=Dn(ro(d)|0)|0;g=rJ(i)|0;j=Dn(d)|0;h=rJ(j)|0;f=c[(c[d+16>>2]|0)+104>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;y=87135;m=87132;o=174181;q=174181;p=0;r=0;n=2;w=f;x=87129}else{v=0;t=2;u=2;s=2;y=87135;m=87132;o=174181;q=174181;p=0;r=0;n=rJ(f)|0;w=f;x=87129}}else{v=0;t=2;u=2;s=2;y=87135;m=87132;o=174181;q=174181;p=0;r=0;n=2;w=87123;x=87129}break}case 2:{h=d+48|0;i=Dn(so(ro(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0;g=rJ(i)|0;l=Dn(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0;k=rJ(l)|0;f=d+16|0;q=c[(c[f>>2]|0)+52>>2]|0;if(!q)r=0;else r=rJ(q)|0;m=Dn(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;f=c[f>>2]|0;o=c[f+92>>2]|0;if(!o)p=0;else p=rJ(o)|0;j=rJ(m)|0;f=c[f+96>>2]|0;if(f){f=c[f>>2]|0;if(!b)n=2;else n=rJ(f)|0}else{n=2;f=87123}x=(qn(so(ro(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0)==0;v=1;t=k;u=j;s=k+2+(r|0?r+1|0:0)+j+(p|0?p+1|0:0)|0;h=2;y=l;j=90527;w=f;x=x?122549:122546;break}default:{v=0;t=2;u=2;s=2;h=2;g=2;y=87135;m=87132;j=90527;i=87126;o=174181;q=174181;p=0;r=0;n=2;w=87123;x=87129}}e=(e|0)==0;l=0;f=b;a:while(1){d=f+1|0;b:do switch(a[f>>0]|0){case 0:break a;case 92:{f=f+2|0;switch(a[d>>0]|0){case 78:{k=h;break b}case 71:{k=g;break b}case 69:{k=s;break b}case 72:{k=u;break b}case 84:{k=t;break b}case 76:{k=n;break b}case 92:{if(!e){k=1;break b}break}default:{}}k=2;break}default:{k=1;f=d}}while(0);l=l+k|0}s=ww(l+1|0)|0;n=(v|0)==0;l=(r|0)==0;d=(p|0)==0;f=s;g=b;c:while(1){k=g+1|0;h=a[g>>0]|0;switch(h<<24>>24){case 0:break c;case 92:break;default:{a[f>>0]=h;f=f+1|0;g=k;continue c}}h=g+2|0;g=a[k>>0]|0;switch(g<<24>>24|0){case 71:{g=i;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 78:{g=j;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 69:{if(n){g=h;continue c}else g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(l)g=x;else{a[f>>0]=58;g=q;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=x;break}else g=g+1|0}}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=m;break}g=g+1|0;f=f+1|0}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(d){g=h;continue c}a[f>>0]=58;g=o;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}else g=g+1|0}}case 84:{g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 72:{g=m;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 76:{g=w;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 92:{if(!e){a[f>>0]=92;f=f+1|0;g=h;continue c}break}default:{}}a[f>>0]=92;a[f+1>>0]=g;f=f+2|0;g=h}a[f>>0]=0;return s|0}function nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(a|0){d=a;e=0;while(1){if((e|0)>=(b|0))break;if(!e)_I(c[d>>2]|0);g=c[d+8>>2]|0;if(g|0?(f=c[d+12>>2]|0,f|0):0)gb[f&127](g);d=d+56|0;e=e+1|0}_I(a)}return}function ow(d){d=d|0;var e=0;if(d|0){_I(c[d>>2]|0);e=d+72|0;if(a[d+82>>0]|0){e=c[e>>2]|0;if(e|0)EF(e,1)}else nw(c[e>>2]|0,b[d+76>>1]|0);_I(d)}return}function pw(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;q=u+16|0;r=u;k=c[d+16>>2]|0;s=k+12|0;t=c[s>>2]|0;c[s>>2]=e;if(!(a[f+82>>0]|0)){p=f+76|0;if((b[p>>1]|0)>=1){yD(d,0);BD(d,c[f+8>>2]|0);switch(a[f+80>>0]|0){case 116:{j=+h[f+64>>3];g=+h[f+48>>3]*.5+j;break}case 98:{j=+h[f+64>>3];g=+h[f+48>>3]*-.5+j+ +h[f+32>>3];break}default:{j=+h[f+64>>3];g=+h[f+32>>3]*.5+j}}g=g-+h[f+16>>3];o=r+8|0;h[o>>3]=g;if(b[k+260>>1]&512)h[o>>3]=g-j;m=f+72|0;n=f+56|0;i=f+40|0;e=0;while(1){if((e|0)>=(b[p>>1]|0))break;k=c[m>>2]|0;switch(a[k+(e*56|0)+48>>0]|0){case 108:{g=+h[n>>3]-+h[i>>3]*.5;break}case 114:{g=+h[i>>3]*.5+ +h[n>>3];break}default:g=+h[n>>3]}h[r>>3]=g;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];AD(d,q,k+(e*56|0)|0);h[o>>3]=+h[o>>3]-+h[(c[m>>2]|0)+(e*56|0)+40>>3];e=e+1|0}zD(d);i=18}}else{jF(d,c[f+72>>2]|0,f);i=18}if((i|0)==18)c[s>>2]=t;l=u;return}function qw(a,b){a=a|0;b=b|0;return mw(a,b,1)|0}function rw(a){a=a|0;return sw(a,0)|0}function sw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[42251]|0;if(!e){c[42252]=64;e=ww(64)|0;c[42251]=e}j=d<<24>>24==0;i=0;f=0;h=b;while(1){if(!h)break;d=a[h>>0]|0;if(!(d<<24>>24))break;b=c[42252]|0;if((i|0)>(b+-8|0)){e=b<<1;c[42252]=e;e=yw(c[42251]|0,e)|0;c[42251]=e;e=e+i|0;d=a[h>>0]|0}a:do switch(d<<24>>24){case 38:{if(j?(tw(h)|0)!=0:0)k=18;else{f=5;d=87164}break}case 60:{f=4;d=87187;break}case 62:{f=4;d=87170;break}case 45:{f=5;d=87181;break}default:{if((f|0)!=0&d<<24>>24==32)if((a[f>>0]|0)==32){f=6;d=87157;break a}else{k=18;break a}switch(d<<24>>24){case 34:{f=6;d=87150;break a}case 39:{f=5;d=87175;break a}case 10:if(j){k=18;break a}else{f=5;d=87144;break a}default:{k=18;break a}}}}while(0);if((k|0)==18){k=0;d=j|d<<24>>24!=13;f=d?1:5;d=d?h:87138}g=e+f|0;b=f;while(1){if(!b)break;a[e>>0]=a[d>>0]|0;b=b+-1|0;d=d+1|0;e=e+1|0}b=h;i=f+i|0;e=g;h=h+1|0;f=b}a[e>>0]=0;return c[42251]|0}function tw(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function uw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[42253]|0;if(!d){c[42254]=64;d=ww(64)|0;c[42253]=d;i=0}else i=0;while(1){if(!b)break;e=a[b>>0]|0;if(!(e<<24>>24))break;f=c[42254]|0;if((i|0)>(f+-8|0)){d=f<<1;c[42254]=d;d=yw(c[42253]|0,d)|0;c[42253]=d;d=d+i|0;e=a[b>>0]|0}switch(e<<24>>24){case 38:{if(!(tw(b)|0)){g=5;e=87164}else j=12;break}case 60:{g=4;e=87187;break}case 62:{g=4;e=87170;break}case 34:{g=6;e=87150;break}case 39:{g=5;e=87175;break}default:j=12}if((j|0)==12){j=0;g=1;e=b}h=d+g|0;f=g;while(1){if(!f)break;a[d>>0]=a[e>>0]|0;f=f+-1|0;e=e+1|0;d=d+1|0}i=g+i|0;d=h;b=b+1|0}a[d>>0]=0;return c[42253]|0}function vw(a){a=a|0;var b=0;if(!a)a=0;else{b=ww(a)|0;VN(b|0,0,a|0)|0;a=b}return a|0}function ww(a){a=a|0;if(a){a=ZI(a)|0;if(!a){XL(96532,14,1,c[13918]|0)|0;a=0}}else a=0;return a|0}function xw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=aJ(a,O(d,b)|0)|0;if(!((b|0)!=0&(a|0)==0)){if(b>>>0>e>>>0)VN(a+(O(e,d)|0)|0,0,O(b-e|0,d)|0)|0}else XL(96532,14,1,c[13918]|0)|0;return a|0}function yw(a,b){a=a|0;b=b|0;a=aJ(a,b)|0;if((b|0)!=0&(a|0)==0)XL(96532,14,1,c[13918]|0)|0;return a|0}function zw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;r=u+40|0;q=u+32|0;n=u+24|0;m=u;s=4;t=ZI(40)|0;c[t>>2]=0;f=u+68|0;g=u+64|0;if(0){o=0;ha(57,a|0,f|0,g|0);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=SN(c[i>>2]|0,t|0,s|0)|0;if(!j)Ua(i|0,p|0);z=p}else j=-1;if((j|0)!=1){j=c[13918]|0;i=c[f>>2]|0;f=c[g>>2]|0;o=0;c[m>>2]=87236;c[m+4>>2]=i;c[m+8>>2]=f;c[m+12>>2]=d;c[m+16>>2]=b;aa(13,j|0,87192,m|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1){o=0;ea(1);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1)j=6;else{f=z;j=15}}else{f=z;j=15}}else{f=z;j=15}}else j=6;do if((j|0)==6){o=0;f=_(20,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=SN(c[g>>2]|0,t|0,s|0)|0;if(!i)Ua(g|0,p|0);z=p}else i=-1;if((i|0)!=1){if(!f){o=0;ea(2);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}}if((d|0)<1){o=0;ea(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;break}else{c[42255]=(e|0)>-1?e:30;t=RN(169024,1,t|0,s|0)|0;s=z;o=0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;j=15;break}}else{f=z;j=15}}while(0);a:do if((j|0)==15){b:while(1){if(f|0){f=2;break a}o=0;ea(4);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}a=c[13918]|0;m=0;while(1){o=0;j=Z(1)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}if(!j)break;o=0;f=_(21,j|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=SN(c[g>>2]|0,t|0,s|0)|0;if(!i)Ua(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}o=0;ga(24,j|0,f|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}m=m+1|0;do if(((m|0)%100|0|0)==0&0!=0){f=(m|0)%1e3|0;if((f|0)==100){o=0;$(27,87236,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;c[n>>2]=m;aa(13,a|0,87254,n|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}o=0;c[q>>2]=m;aa(13,a|0,87254,q|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=SN(c[g>>2]|0,t|0,s|0)|0;if(!i)Ua(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}if(!f){o=0;$(28,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}while(0);if((m|0)>=(d|0))break}switch(b|0){case 1:{o=0;ea(5);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}case 2:{o=0;ea(6);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}default:{o=0;ea(7);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;ea(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}if(!0){f=0;break a}if((m|0)>99){o=0;$(28,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}}f=c[42295]|0;g=c[42296]|0;o=0;k=+X(1);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=SN(c[i>>2]|0,t|0,s|0)|0;if(!j)Ua(i|0,p|0);z=p}else j=-1;if((j|0)==1){f=z;j=15;continue}o=0;c[r>>2]=87236;c[r+4>>2]=f;c[r+8>>2]=g;c[r+12>>2]=m;h[r+16>>3]=k;aa(13,a|0,87258,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15}else break}f=0}while(0);_I(t|0);l=u;return f|0}function Aw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a=(c[a+16>>2]|0)+192|0;e=0;h=0;while(1){a=c[a>>2]|0;if(!a)break;g=c[a+16>>2]|0;f=c[g+180>>2]|0;a=0;while(1){if(!(c[f+(a<<2)>>2]|0))break;a=a+1|0;e=e+1|0}a=g+164|0;h=h+1|0}c[b>>2]=h;c[d>>2]=e;return}function Bw(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[42298]=b;c[42305]=0;c[42296]=0;c[42295]=0;i=b+16|0;b=(c[i>>2]|0)+192|0;h=0;f=0;while(1){b=c[b>>2]|0;if(!b)break;g=c[b+16>>2]|0;a[g+157>>0]=0;h=h+1|0;c[42295]=h;d=c[g+180>>2]|0;b=0;while(1){if(!(c[d+(b<<2)>>2]|0))break;k=f+1|0;c[42296]=k;b=b+1|0;f=k}b=g+164|0}b=c[42306]|0;if(!b)b=ww(h<<2)|0;else b=yw(b,h<<2)|0;c[42306]=b;c[42307]=0;b=c[42300]|0;if(!b)b=ww(c[42295]<<2)|0;else b=yw(b,c[42295]<<2)|0;c[42300]=b;c[42299]=0;d=1;b=(c[i>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;k=b+16|0;i=c[k>>2]|0;j=i+292|0;c[j>>2]=0;i=c[i+172>>2]|0;h=d;g=0;b=0;while(1){d=c[i+(g<<2)>>2]|0;if(!d)break;f=b+1|0;c[j>>2]=f;b=c[d+16>>2]|0;c[b+160>>2]=0;c[b+164>>2]=-1;if(!h)b=0;else{l=c[d>>2]&3;b=((c[(c[(c[((l|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((l|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)<(e[b+170>>1]|0|0)?0:h}h=b;g=g+1|0;b=f}b=vw((g<<2)+4|0)|0;d=c[k>>2]|0;c[d+264>>2]=b;c[d+268>>2]=0;d=c[d+180>>2]|0;b=0;do{l=b;b=b+1|0}while((c[d+(l<<2)>>2]|0)!=0);d=vw(b<<2)|0;b=c[k>>2]|0;c[b+272>>2]=d;c[b+276>>2]=0;d=h;b=b+164|0}return d|0}function Cw(){var a=0,b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;k=o;m=zA(c[42295]|0)|0;a=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b){j=0;break}d=b+16|0;a=c[d>>2]|0;if(!(c[a+292>>2]|0)){BA(m,b);a=c[d>>2]|0}a=a+164|0}while(1){a=CA(m)|0;if(!a)break;i=a+16|0;a=c[i>>2]|0;f=a+232|0;c[f>>2]=0;d=c[a+172>>2]|0;b=0;h=0;while(1){g=c[d+(b<<2)>>2]|0;if(!g){f=0;break}g=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[(c[g+16>>2]|0)+170>>1]|0)|0;g=(h|0)>(g|0)?h:g;c[f>>2]=g;b=b+1|0;h=g}while(1){b=c[(c[a+180>>2]|0)+(f<<2)>>2]|0;if(!b)break;d=b+-48|0;g=(c[(c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0)+16>>2]|0)+292|0;h=c[g>>2]|0;c[g>>2]=h+-1;if((h|0)<2){BA(m,c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0);a=c[i>>2]|0}f=f+1|0}j=j+1|0}a:do if((j|0)!=(c[42295]|0)){_l(1,87590,k)|0;a=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break a;d=b+16|0;a=c[d>>2]|0;if(c[a+292>>2]|0){k=Dn(b)|0;a=c[(c[d>>2]|0)+292>>2]|0;c[n>>2]=k;c[n+4>>2]=a;_l(3,87612,n)|0;a=c[d>>2]|0}a=a+164|0}}while(0);AA(m);l=o;return}function Dw(){var b=0,d=0,e=0;b=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+264>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+272>>2]|0;if(d){_I(d);b=c[e>>2]|0}a[b+157>>0]=0;b=b+164|0}return}function Ew(){var a=0,b=0,d=0,e=0,f=0;a=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;a=c[a+16>>2]|0;c[a+280>>2]=0;a=a+164|0}f=vw(c[42295]<<2)|0;e=0;a=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break;d=b+16|0;a=c[d>>2]|0;if(!(c[a+280>>2]|0)){c[f+(e<<2)>>2]=Rw(b)|0;b=e+1|0;a=c[d>>2]|0}else b=e;e=b;a=a+164|0}a=Sw(f,e)|0;while(1){if((Tw(a)|0)<=1)break;Xw(a,c[(Ww(Vw(Uw(a)|0)|0)|0)+8>>2]|0)}_I(a);a=0;while(1){if((a|0)>=(e|0))break;_I(c[f+(a<<2)>>2]|0);a=a+1|0}_I(f);if((c[42299]|0)==((c[42295]|0)+-1|0)){Yw();return}else ma(87335,87365,523,87370)}function Fw(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[42305]|0;f=c[42299]|0;j=c[42300]|0;k=c[42255]|0;b=0;a=0;g=i;while(1){if((g|0)>=(f|0)){h=8;break}e=c[j+(g<<2)>>2]|0;d=c[(c[e+16>>2]|0)+160>>2]|0;if((d|0)<0){if(!a)a=e;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(d|0)?e:a;b=b+1|0;if((b|0)>=(k|0))break}e=g+1|0;c[42305]=e;g=e}if((h|0)==8)if((i|0)>0){f=0;while(1){if((f|0)>=(i|0))break;d=c[j+(f<<2)>>2]|0;e=c[(c[d+16>>2]|0)+160>>2]|0;if((e|0)<0){if(!a)a=d;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(e|0)?d:a;b=b+1|0;if((b|0)>=(k|0))break}f=f+1|0}c[42305]=f}return a|0}function Gw(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;a=c[((b|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[d+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0);a=b?d:a;c[42301]=0;c[42302]=2147483647;d=c[a+16>>2]|0;c[42303]=c[d+284>>2];c[42304]=c[d+288>>2];if(b)Qw(a);else Pw(a);return c[42301]|0}function Hw(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;g=c[b>>2]&3;m=b+-48|0;j=b+48|0;k=b+16|0;g=(c[(c[(c[((g|0)==2?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((g|0)==3?b:j)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[k>>2]|0)+170>>1]|0)|0;do if((g|0)>0){d=c[a>>2]&3;h=c[((d|0)==3?a:a+48|0)+40>>2]|0;i=c[h+16>>2]|0;if(((c[i+276>>2]|0)+(c[i+268>>2]|0)|0)==1){Lw(h,g);break}d=c[((d|0)==2?a:a+-48|0)+40>>2]|0;f=c[d+16>>2]|0;if(((c[f+276>>2]|0)+(c[f+268>>2]|0)|0)==1){Lw(d,0-g|0);break}if((c[i+288>>2]|0)<(c[f+288>>2]|0)){Lw(h,g);break}else{Lw(d,0-g|0);break}}while(0);d=a+16|0;f=c[(c[d>>2]|0)+160>>2]|0;g=c[b>>2]&3;g=Mw(c[((g|0)==3?b:j)+40>>2]|0,c[((g|0)==2?b:m)+40>>2]|0,f,1)|0;i=c[b>>2]&3;if((Mw(c[((i|0)==2?b:m)+40>>2]|0,c[((i|0)==3?b:j)+40>>2]|0,f,0)|0)==(g|0)){c[(c[k>>2]|0)+160>>2]=0-f;c[(c[d>>2]|0)+160>>2]=0;Nw(a,b);n=c[g+16>>2]|0;Ow(g,c[n+280>>2]|0,c[n+284>>2]|0)|0;l=o;return}else{_l(1,87296,n)|0;Ua(169024,1)}}function Iw(){var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;Kw();m=vw((c[42297]<<2)+4|0)|0;d=c[42297]|0;b=0;while(1){if((b|0)>(d|0))break;c[m+(b<<2)>>2]=0;b=b+1|0}b=(c[(c[42298]|0)+16>>2]|0)+192|0;d=b;while(1){d=c[d>>2]|0;if(!d)break;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){l=m+(c[d+232>>2]<<2)|0;c[l>>2]=(c[l>>2]|0)+1}d=d+164|0}while(1){b=c[b>>2]|0;if(!b)break;l=b+16|0;b=c[l>>2]|0;if(!(a[b+156>>0]|0)){h=c[42297]|0;f=c[b+172>>2]|0;k=0;j=0;d=0;while(1){g=c[f+(d<<2)>>2]|0;if(!g)break;n=c[g+16>>2]|0;i=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[n+170>>1]|0)|0;k=(c[n+156>>2]|0)+k|0;j=(j|0)>(i|0)?j:i;d=d+1|0}g=c[b+180>>2]|0;i=0;d=0;while(1){f=c[g+(d<<2)>>2]|0;if(!f)break;o=c[f+16>>2]|0;n=(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[o+170>>1]|0)|0;i=(c[o+156>>2]|0)+i|0;h=(h|0)<(n|0)?h:n;d=d+1|0}d=(j|0)>0?j:0;if((k|0)==(i|0)){g=d;f=d;while(1){d=f+1|0;if((f|0)>=(h|0))break;g=(c[m+(d<<2)>>2]|0)<(c[m+(g<<2)>>2]|0)?d:g;f=d}o=b+232|0;n=m+(c[o>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+-1;n=m+(g<<2)|0;c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=g}d=c[b+264>>2]|0;if(d){_I(d);b=c[l>>2]|0}d=c[b+272>>2]|0;if(d){_I(d);b=c[l>>2]|0}a[b+157>>0]=0}b=b+164|0}_I(m);return}function Jw(){var a=0,b=0,d=0,f=0,g=0,h=0;b=0;while(1){if((b|0)>=(c[42299]|0))break;a=c[(c[42300]|0)+(b<<2)>>2]|0;do if(((c[(c[a+16>>2]|0)+160>>2]|0)==0?(d=Gw(a)|0,d|0):0)?(f=c[d>>2]&3,f=(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0,(f|0)>=2):0){h=c[a>>2]&3;g=c[((h|0)==3?a:a+48|0)+40>>2]|0;a=c[((h|0)==2?a:a+-48|0)+40>>2]|0;if((c[(c[g+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0)){Lw(g,f>>>1);break}else{Lw(a,(f|0)/-2|0);break}}while(0);b=b+1|0}Dw();return}function Kw(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;c[h>>2]=0;c[h>>2]=2147483647;c[42297]=-2147483647;b=(c[(c[42298]|0)+16>>2]|0)+192|0;e=b;g=2147483647;f=-2147483647;while(1){d=c[e>>2]|0;if(!d)break;e=c[d+16>>2]|0;if(!(a[e+156>>0]|0)){j=c[e+232>>2]|0;d=(g|0)<(j|0)?g:j;c[h>>2]=d;f=(f|0)>(j|0)?f:j;c[42297]=f}else d=g;e=e+164|0;g=d}if(g|0){while(1){b=c[b>>2]|0;if(!b)break;b=c[b+16>>2]|0;j=b+232|0;c[j>>2]=(c[j>>2]|0)-g;b=b+164|0}c[42297]=f-g;c[h>>2]=0}l=i;return}function Lw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;a=c[f>>2]|0;e=a+232|0;c[e>>2]=(c[e>>2]|0)-b;e=0;while(1){d=c[(c[a+272>>2]|0)+(e<<2)>>2]|0;if(!d){e=0;break}if((d|0)!=(c[a+280>>2]|0)){Lw(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(c[a+280>>2]|0)){Lw(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}return}function Mw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=(e|0)==0&1;h=0-d|0;f=c[(c[b+16>>2]|0)+288>>2]|0;b=a;while(1){a=c[b+16>>2]|0;if((c[a+284>>2]|0)<=(f|0)?(f|0)<=(c[a+288>>2]|0):0)break;a=c[a+280>>2]|0;i=a+48|0;j=(c[a+16>>2]|0)+160|0;c[j>>2]=(((b|0)==(c[((c[a>>2]&3|0)==3?a:i)+40>>2]|0)?e:g)|0?d:h)+(c[j>>2]|0);j=c[a>>2]&3;i=c[((j|0)==3?a:i)+40>>2]|0;a=c[((j|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[i+16>>2]|0)+288>>2]|0)>(c[(c[a+16>>2]|0)+288>>2]|0)?i:a}return b|0}function Nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=a+16|0;e=(c[i>>2]|0)+164|0;c[(c[b+16>>2]|0)+164>>2]=c[e>>2];c[(c[42300]|0)+(c[e>>2]<<2)>>2]=b;c[(c[i>>2]|0)+164>>2]=-1;i=(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+276|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+272|0;h=0;while(1){if((h|0)>=(f|0)){k=3;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==3)d=c[e+272>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+272>>2]|0)+(j<<2)>>2]=0;i=(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+268|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+264|0;h=0;while(1){if((h|0)>=(f|0)){k=8;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==8)d=c[e+264>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+264>>2]|0)+(j<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)+16|0;a=c[k>>2]|0;j=c[a+272>>2]|0;a=a+276|0;i=c[a>>2]|0;c[a>>2]=i+1;c[j+(i<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+272>>2]|0)+(c[k+276>>2]<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16|0;i=c[k>>2]|0;j=c[i+264>>2]|0;i=i+268|0;a=c[i>>2]|0;c[i>>2]=a+1;c[j+(a<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+264>>2]|0)+(c[k+268>>2]<<2)>>2]=0;return}function Ow(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;c[a+280>>2]=b;c[a+284>>2]=d;f=0;while(1){e=c[(c[a+272>>2]|0)+(f<<2)>>2]|0;if(!e){f=0;break}if((e|0)!=(b|0)){d=Ow(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}while(1){e=c[(c[a+264>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)!=(b|0)){d=Ow(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}c[a+288>>2]=d;return d+1|0}function Pw(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+180>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[42303]|0)>(j|0)|(j|0)>(c[42304]|0)?(h=(c[b+232>>2]|0)-(c[(c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[42302]|0)|(c[42301]|0)==0):0){c[42301]=d;c[42302]=h}}else{b=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))Pw(b)}g=g+1|0}while(1){b=c[(c[a+264>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[42302]|0)>0))break;b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){Pw(b);a=c[i>>2]|0}d=d+1|0}return}function Qw(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+172>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[42303]|0)>(j|0)|(j|0)>(c[42304]|0)?(h=(c[(c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[b+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[42302]|0)|(c[42301]|0)==0):0){c[42301]=d;c[42302]=h}}else{b=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))Qw(b)}g=g+1|0}while(1){b=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[42302]|0)>0))break;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){Qw(b);a=c[i>>2]|0}d=d+1|0}return}function Rw(a){a=a|0;var b=0;b=vw(16)|0;c[b>>2]=a;c[b+4>>2]=fx(a,b)|0;c[b+12>>2]=b;return b|0}function Sw(a,b){a=a|0;b=b|0;var d=0,e=0;e=vw(8)|0;c[e>>2]=a;c[e+4>>2]=b;d=0;while(1){if((d|0)>=(b|0))break;c[(c[a+(d<<2)>>2]|0)+8>>2]=d;d=d+1|0}d=(b|0)/2|0;while(1){if((d|0)<=-1)break;Xw(e,d);d=d+-1|0}return e|0}function Tw(a){a=a|0;return c[a+4>>2]|0}function Uw(a){a=a|0;var b=0,d=0,e=0,f=0;f=c[a>>2]|0;b=c[f>>2]|0;c[b+8>>2]=-1;d=a+4|0;e=(c[d>>2]|0)+-1|0;c[f>>2]=c[f+(e<<2)>>2];f=c[a>>2]|0;c[(c[f>>2]|0)+8>>2]=0;c[f+(e<<2)>>2]=b;c[d>>2]=e;Xw(a,0);return b|0}function Vw(a){a=a|0;return ex(c[a>>2]|0,0,0)|0}function Ww(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0;b=a+16|0;if((c[(c[b>>2]|0)+164>>2]|0)>-1)ma(87384,87365,463,87398);g=a+48|0;d=ax(c[((c[a>>2]&3|0)==3?a:g)+40>>2]|0)|0;i=a+-48|0;f=ax(c[((c[a>>2]&3|0)==2?a:i)+40>>2]|0)|0;h=c[a>>2]&3;b=(c[(c[(c[((h|0)==2?a:i)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?a:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[b>>2]|0)+170>>1]|0)|0;if((c[d+8>>2]|0)==-1)bx(c[d>>2]|0,0,b);else bx(c[f>>2]|0,0,0-b|0);cx(a);return dx(d,f)|0}function Xw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]|0;g=c[a+4>>2]|0;while(1){a=b<<1;f=a+2|0;a=a|1;if(!((a|0)<(g|0)?(c[(c[h+(a<<2)>>2]|0)+4>>2]|0)<(c[(c[h+(b<<2)>>2]|0)+4>>2]|0):0))a=b;if((f|0)>=(g|0))break;d=h+(f<<2)|0;e=c[d>>2]|0;if((f|0)==(b|0)?1:(c[e+4>>2]|0)>=(c[(c[h+(a<<2)>>2]|0)+4>>2]|0))break;i=h+(b<<2)|0;a=c[i>>2]|0;c[i>>2]=e;c[d>>2]=a;c[(c[i>>2]|0)+8>>2]=b;c[a+8>>2]=f;b=f}return}function Yw(){Ow(c[(c[(c[42298]|0)+16>>2]|0)+192>>2]|0,0,1)|0;Zw(c[(c[(c[42298]|0)+16>>2]|0)+192>>2]|0,0);return}function Zw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;d=0;while(1){a=c[f>>2]|0;e=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!e){e=0;break}if((e|0)!=(b|0))Zw(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e);d=d+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(b|0)){Zw(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,d);a=c[f>>2]|0}e=e+1|0}if(b|0)_w(b);return}function _w(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;e=c[d+16>>2]|0;if((c[e+280>>2]|0)==(a|0))i=1;else{e=c[((b|0)==2?a:a+-48|0)+40>>2]|0;i=-1;d=e;e=c[e+16>>2]|0}g=c[e+180>>2]|0;b=0;f=0;while(1){h=c[g+(f<<2)>>2]|0;if(!h)break;b=($w(h,d,i)|0)+b|0;f=f+1|0}g=c[e+172>>2]|0;e=0;while(1){f=c[g+(e<<2)>>2]|0;if(!f)break;b=($w(f,d,i)|0)+b|0;e=e+1|0}c[(c[a+16>>2]|0)+160>>2]=b;return}function $w(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=(h|0)==3?a:a+48|0;e=c[i+40>>2]|0;if((e|0)==(b|0))e=c[((h|0)==2?a:a+-48|0)+40>>2]|0;g=c[b+16>>2]|0;f=c[(c[e+16>>2]|0)+288>>2]|0;if((c[g+284>>2]|0)<=(f|0)?(f|0)<=(c[g+288>>2]|0):0){f=c[a+16>>2]|0;if((c[f+164>>2]|0)>-1)e=c[f+160>>2]|0;else e=0;g=1;e=e-(c[f+156>>2]|0)|0}else{g=0;e=c[(c[a+16>>2]|0)+156>>2]|0}i=(c[((d|0)>0?((h|0)==2?a:a+-48|0):i)+40>>2]|0)==(b|0)?1:-1;return (((g?i:0-i|0)|0)<0?0-e|0:e)|0}function ax(a){a=a|0;var b=0,d=0;a=c[(c[a+16>>2]|0)+280>>2]|0;while(1){b=a+12|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[d+12>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function bx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=a+16|0;e=c[h>>2]|0;g=e+232|0;c[g>>2]=(c[g>>2]|0)+d;g=0;while(1){f=c[(c[e+264>>2]|0)+(g<<2)>>2]|0;if(!f){g=0;break}f=c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0;if((f|0)!=(b|0)){bx(f,a,d);e=c[h>>2]|0}g=g+1|0}while(1){f=c[(c[e+272>>2]|0)+(g<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((f|0)!=(b|0)){bx(f,a,d);e=c[h>>2]|0}g=g+1|0}return}function cx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;d=(c[b+16>>2]|0)+164|0;if((c[d>>2]|0)>-1){_l(1,87487,h)|0;Ua(169024,1)}g=c[42299]|0;c[d>>2]=g;d=c[42300]|0;c[42299]=g+1;c[d+(g<<2)>>2]=b;d=c[b>>2]|0;g=b+48|0;e=c[((d&3|0)==3?b:g)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){f=c[42306]|0;d=c[42307]|0;c[42307]=d+1;c[f+(d<<2)>>2]=e;d=c[b>>2]|0}f=b+-48|0;e=c[((d&3|0)==2?b:f)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){i=c[42306]|0;d=c[42307]|0;c[42307]=d+1;c[i+(d<<2)>>2]=e;d=c[b>>2]|0}i=(c[((d&3|0)==3?b:g)+40>>2]|0)+16|0;d=c[i>>2]|0;a[d+157>>0]=1;e=c[d+272>>2]|0;d=d+276|0;g=c[d>>2]|0;c[d>>2]=g+1;c[e+(g<<2)>>2]=b;g=c[i>>2]|0;c[(c[g+272>>2]|0)+(c[g+276>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+180>>2]|0)+((c[i+276>>2]|0)+-1<<2)>>2]|0)){_l(1,87521,h+8|0)|0;Ua(169024,1)}i=(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16|0;e=c[i>>2]|0;a[e+157>>0]=1;f=c[e+264>>2]|0;e=e+268|0;g=c[e>>2]|0;c[e>>2]=g+1;c[f+(g<<2)>>2]=b;b=c[i>>2]|0;c[(c[b+264>>2]|0)+(c[b+268>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+172>>2]|0)+((c[i+268>>2]|0)+-1<<2)>>2]|0)){_l(1,87556,h+16|0)|0;Ua(169024,1)}else{l=h;return}}function dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;while(1){g=a+12|0;d=c[g>>2]|0;if((d|0)==0|(d|0)==(a|0))break;else a=d}while(1){f=b+12|0;d=c[f>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else b=d}if((a|0)!=(b|0)){e=c[a+8>>2]|0;d=c[b+8>>2]|0;do if((e|0)>-1)if((d|0)==-1)h=a;else j=10;else if((d|0)>-1)if((e|0)==-1){h=b;break}else{j=10;break}else ma(87410,87365,327,87457);while(0);if((j|0)==10)h=(c[b+4>>2]|0)<(c[a+4>>2]|0)?a:b;c[f>>2]=h;c[g>>2]=h;c[h+4>>2]=(c[b+4>>2]|0)+(c[a+4>>2]|0);if((c[h+8>>2]|0)>-1)i=h;else ma(87468,87365,335,87457)}else i=a;return i|0}function ex(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=ax(a)|0;if(d){k=c[d>>2]&3;if(((c[(c[(c[((k|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((k|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)!=(e[(c[d+16>>2]|0)+170>>1]|0|0))f=3}else{d=0;f=3}a:do if((f|0)==3){k=a+16|0;j=0;while(1){f=c[k>>2]|0;i=c[(c[f+180>>2]|0)+(j<<2)>>2]|0;if(!i){j=0;break}f=i+16|0;g=i+-48|0;h=c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0;do if((c[(c[f>>2]|0)+164>>2]|0)>-1){if((h|0)!=(b|0))d=ex(h,a,d)|0}else if((ax(h)|0)!=(l|0)){if(d|0?(m=c[i>>2]&3,h=c[d>>2]&3,((c[(c[(c[((m|0)==2?i:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[f>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((h|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=i}while(0);j=j+1|0}while(1){f=c[(c[f+172>>2]|0)+(j<<2)>>2]|0;if(!f)break a;g=f+16|0;h=f+48|0;i=c[((c[f>>2]&3|0)==3?f:h)+40>>2]|0;do if((c[(c[g>>2]|0)+164>>2]|0)>-1){if((i|0)!=(b|0))d=ex(i,a,d)|0}else if((ax(i)|0)!=(l|0)){if(d|0?(i=c[f>>2]&3,m=c[d>>2]&3,((c[(c[(c[((i|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((i|0)==3?f:h)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[g>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((m|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=f}while(0);j=j+1|0;f=c[k>>2]|0}}while(0);return d|0}function fx(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+16|0;d=c[l>>2]|0;c[d+280>>2]=b;a=1;h=0;while(1){g=c[(c[d+172>>2]|0)+(h<<2)>>2]|0;if(!g){h=0;break}f=c[g+16>>2]|0;if(((c[f+164>>2]|0)<=-1?(i=c[g>>2]&3,j=g+48|0,k=c[(c[((i|0)==3?g:j)+40>>2]|0)+16>>2]|0,(c[k+280>>2]|0)==0):0)?((c[(c[(c[((i|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[k+232>>2]|0)|0)==(e[f+170>>1]|0|0):0){cx(g);a=(fx(c[((c[g>>2]&3|0)==3?g:j)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}while(1){f=c[(c[d+180>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;if(((c[g+164>>2]|0)<=-1?(m=c[f>>2]&3,n=f+-48|0,o=c[(c[((m|0)==2?f:n)+40>>2]|0)+16>>2]|0,(c[o+280>>2]|0)==0):0)?((c[o+232>>2]|0)-(c[(c[(c[((m|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)==(e[g+170>>1]|0|0):0){cx(f);a=(fx(c[((c[f>>2]&3|0)==2?f:n)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}return a|0}function gx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Im(a,87620)|0;if(!d)d=30;else d=rM(d)|0;return zw(a,b,c,d)|0}function hx(a){a=+a;return +((c[42183]|0)==0?a:+h[20895]-a)}function ix(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0;r=l;l=l+16|0;q=r;c[42308]=c[(c[(c[d+64>>2]|0)+8>>2]|0)+4>>2];jx(d);i=c[d+16>>2]|0;t=+h[i+32>>3];s=+h[i+40>>3];kx(e,87631,+h[b+352>>3]);kx(e,87638,t*.013888888888888888);kx(e,87638,s*.013888888888888888);lx(e);i=co(d)|0;while(1){if(!i)break;g=i+16|0;if(!(a[(c[g>>2]|0)+118>>0]|0)){mx(e,87640,Wp(Dn(i)|0)|0);p=(c[g>>2]|0)+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];nx(e,q);if(!(a[(c[(c[g>>2]|0)+104>>2]|0)+82>>0]|0)){b=ro(i)|0;b=ox(b,c[c[(c[g>>2]|0)+104>>2]>>2]|0)|0}else b=Wp(Jm(i,c[42198]|0)|0)|0;kx(e,87638,+h[(c[g>>2]|0)+32>>3]);kx(e,87638,+h[(c[g>>2]|0)+40>>3]);mx(e,87638,b);mx(e,87638,GA(i,c[42201]|0,95889)|0);mx(e,87638,c[c[(c[g>>2]|0)+8>>2]>>2]|0);mx(e,87638,GA(i,c[42192]|0,122106)|0);b=GA(i,c[42193]|0,174181)|0;if(!(a[b>>0]|0))b=GA(i,c[42192]|0,119592)|0;mx(e,87638,b);lx(e)}i=eo(d,i)|0}o=f<<24>>24==0;n=co(d)|0;while(1){if(!n)break;m=Pm(d,n)|0;while(1){if(!m)break;if(o){f=174181;j=174181}else{j=Im(m,96242)|0;f=Im(m,96251)|0;f=f|0?f:174181;j=j|0?j:174181}p=m+16|0;b=c[p>>2]|0;k=c[b+8>>2]|0;a:do if(k){i=c[k+4>>2]|0;b=0;g=0;while(1){if((b|0)>=(i|0))break;u=(c[(c[k>>2]|0)+(b*48|0)+4>>2]|0)+g|0;b=b+1|0;g=u}mx(e,0,96237);px(e,c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0,j);px(e,c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0,f);qx(e,g);f=0;while(1){b=c[p>>2]|0;g=c[b+8>>2]|0;if((f|0)>=(c[g+4>>2]|0))break a;i=c[g>>2]|0;g=c[i+(f*48|0)>>2]|0;i=c[i+(f*48|0)+4>>2]|0;b=0;while(1){if((b|0)>=(i|0))break;u=g+(b<<4)|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];nx(e,q);b=b+1|0}f=f+1|0}}while(0);if(c[b+96>>2]|0){u=ro(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;mx(e,87638,ox(u,c[c[(c[p>>2]|0)+96>>2]>>2]|0)|0);u=(c[(c[p>>2]|0)+96>>2]|0)+56|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];nx(e,q)}mx(e,87638,GA(m,c[42229]|0,95889)|0);mx(e,87638,GA(m,c[42220]|0,122106)|0);lx(e);m=Rm(d,m)|0}n=eo(d,n)|0}rx(87646,e);l=r;return}function jx(a){a=a|0;var b=0.0;if(c[42183]|0){a=c[a+16>>2]|0;b=+h[a+24>>3]+ +h[a+40>>3];h[20895]=b;h[20896]=b*.013888888888888888}return}function kx(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;if(b|0)rx(b,a);h[e>>3]=c;pL(d,87652,e)|0;rx(d,a);l=f;return}function lx(b){b=b|0;a[174077]=10;ab[c[42308]&63](b,174077)|0;return}function mx(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)rx(b,a);rx(c,a);return}function nx(a,b){a=a|0;b=b|0;var d=0.0;kx(a,87638,+h[b>>3]*.013888888888888888);if(!(c[42183]|0))d=+h[b+8>>3];else d=+h[20895]-+h[b+8>>3];kx(a,87638,d*.013888888888888888);return}function ox(a,b){a=a|0;b=b|0;var c=0;c=$o(a,b)|0;b=Wp(c)|0;bp(a,c)|0;return b|0}function px(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!(a[(c[d+16>>2]|0)+118>>0]|0))d=Wp(Dn(d)|0)|0;else{f=ro(d)|0;d=ox(f,(WJ(Dn(d)|0,58)|0)+1|0)|0}mx(b,87638,d);if(e|0?a[e>>0]|0:0)mx(b,93017,Wp(e)|0);return}function qx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;rx(87638,a);c[f>>2]=b;pL(e,122187,f)|0;rx(e,a);l=d;return}function rx(a,b){a=a|0;b=b|0;ab[c[42308]&63](b,a)|0;return}
function EB(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function FB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n+64|0;j=n+48|0;i=n+32|0;f=n+16|0;g=n;m=a+4|0;d=c[m>>2]|0;if(!d)ma(94759,92694,1637,94767);e=c[a>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)>=(d|0)){h=7;break}d=(c[a>>2]|0)+(e<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if((Yv(i,j,k)|0)!=-1){d=1;break};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];e=e+1|0;d=c[m>>2]|0}do if((h|0)==7){d=c[a+8>>2]|0;if(d|0?(g=a+16|0,h=c[a>>2]|0,c[i>>2]=c[g>>2],c[i+4>>2]=c[g+4>>2],c[i+8>>2]=c[g+8>>2],c[i+12>>2]=c[g+12>>2],c[j>>2]=c[h>>2],c[j+4>>2]=c[h+4>>2],c[j+8>>2]=c[h+8>>2],c[j+12>>2]=c[h+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(GB(i,j,d,k)|0)<<24>>24):0){d=1;break}d=c[a+12>>2]|0;if(d|0?(h=a+32|0,m=(c[a>>2]|0)+((c[m>>2]|0)+-1<<4)|0,c[i>>2]=c[h>>2],c[i+4>>2]=c[h+4>>2],c[i+8>>2]=c[h+8>>2],c[i+12>>2]=c[h+12>>2],c[j>>2]=c[m>>2],c[j+4>>2]=c[m+4>>2],c[j+8>>2]=c[m+8>>2],c[j+12>>2]=c[m+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(GB(i,j,d,k)|0)<<24>>24):0){d=1;break}d=0}while(0);l=n;return d|0}function GB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+160|0;g=m+144|0;f=m+128|0;n=m+96|0;i=m+64|0;j=m+32|0;k=m;o=+h[e+16>>3];c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];Rt(n,f,g,1.0,d);if(((o>=+h[n>>3]?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Rt(i,f,g,1.0,d),+h[i+16>>3]>=+h[e>>3]):0)?(o=+h[e+24>>3],c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Rt(j,f,g,1.0,d),o>=+h[j+8>>3]):0)?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Rt(k,f,g,1.0,d),+h[k+24>>3]>=+h[e+8>>3]):0)f=1;else f=0;l=m;return f|0}function HB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;a:do if((b|0)!=0?(e=a[b>>0]|0,e<<24>>24!=0):0){do switch(e<<24>>24|0){case 48:{d=2;break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{d=10;break a}case 67:case 99:{e=b+1|0;if(!(iK(e,94782)|0)){d=4;break a}if(!(iK(e,94788)|0)){d=12;break a}break}case 70:case 102:{if(!(iK(b+1|0,94796)|0)){d=2;break a}break}case 76:case 108:{if(!(iK(b+1|0,94801)|0)){d=2;break a}break}case 78:case 110:{e=b+1|0;if(!(iK(e,94805)|0)){d=0;break a}if(!(iK(e,94809)|0)){d=2;break a}break}case 79:case 111:{if(!(iK(b+1|0,94811)|0)){d=8;break a}break}case 80:case 112:{if(!(iK(b+1|0,94816)|0)){d=6;break a}break}case 83:case 115:{if(!(iK(b+1|0,94824)|0)){d=10;break a}break}case 84:case 116:{if(!(iK(b+1|0,94830)|0)){d=10;break a}break}case 89:case 121:{if(!(iK(b+1|0,94834)|0)){d=10;break a}break}default:{}}while(0);c[f>>2]=b;_l(0,94837,f)|0}while(0);l=g;return d|0}function IB(d,f){d=d|0;f=f|0;var g=0;g=Im(d,94878)|0;if(g)if(!(a[g>>0]|0))f=0;else f=HB(g,f)|0;d=(c[d+16>>2]|0)+136|0;b[d>>1]=f|e[d>>1];return}function JB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0;v=l;l=l+32|0;p=v+16|0;r=v;t=e&1;u=e&2;a:do if((c|0)==2){s=+h[a+16>>3];f=+h[a>>3];j=+h[a+24>>3];i=+h[a+8>>3];f=f-(s-f);h[p>>3]=f;h[r>>3]=s;i=i-(j-i);h[p+8>>3]=i;h[r+8>>3]=j}else{g=+h[a>>3];h[r>>3]=g;h[p>>3]=g;j=+h[a+8>>3];m=r+8|0;h[m>>3]=j;n=p+8|0;h[n>>3]=j;e=0;f=g;i=j;while(1){if((e|0)>=(c|0)){s=g;break a}w=a+(e<<4)|0;q=+h[w>>3];k=+h[(q<f?w:p)>>3];h[p>>3]=k;s=+h[a+(e<<4)+8>>3];o=+h[(s<i?w:p)+8>>3];h[n>>3]=o;q=+h[(q>g?w:r)>>3];h[r>>3]=q;s=+h[(s>j?w:r)+8>>3];h[m>>3]=s;e=e+1|0;f=k;i=o;g=q;j=s}}while(0);g=(s-f)*.5;q=g+f;o=(j-i)*.5;k=o+i;if(!t){f=j-k;j=d;i=+F(+j);j=+E(+j);if(!u){g=i*f-k;f=-k-o*i}else{f=i*f;g=k-f;f=f+k}h[b+8>>3]=g;h[b+24>>3]=f;d=j*(s-q);h[b>>3]=q-d;h[b+16>>3]=d+q}else{d=+C(+(o*o+g*g));h[b+8>>3]=u|0?k:-k;h[b>>3]=q;h[b+16>>3]=d*.25;h[b+24>>3]=d}l=v;return}function KB(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=a+16|0;f=c[e>>2]|0;if(!(b<<24>>24)){d=+h[f+32>>3]*36.0;h[f+88>>3]=d;a=f+40|0}else{d=+h[f+40>>3]*36.0;h[f+88>>3]=d;a=f+32|0}h[f+96>>3]=d;h[(c[e>>2]|0)+80>>3]=+h[a>>3]*72.0;return}function LB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0;y=l;l=l+16|0;j=y+8|0;x=4;w=ZI(40)|0;c[w>>2]=0;s=y;o=0;e=_(22,b|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;a:do if((g|0)!=1){o=0;v=_(23,e<<3|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){e=SN(c[f>>2]|0,w|0,x|0)|0;if(!e)Ua(f|0,p|0);z=p}else e=-1;if((e|0)!=1){if(!(a[174076]|0))t=0;else{o=0;e=Z(2)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=0;k=0;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}t=e}o=0;e=$(31,b|0,94886)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[42366]=0;b:do if(e|0?(i=a[e>>0]|0,i<<24>>24):0){h=e;f=i;g=0;while(1){i=h+1|0;if(!(f<<24>>24))break b;switch(f<<24>>24|0){case 99:{e=8;u=16;break}case 105:{e=18;u=16;break}case 109:{e=1;u=16;break}case 114:{e=4;u=16;break}case 115:{e=2;u=16;break}default:e=g}if((u|0)==16){u=0;e=g|e;c[42366]=e}h=i;f=a[i>>0]|0;g=e}}while(0);if(d|0){o=0;aa(11,0,94890,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}}o=0;r=$(32,b|0,0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){m=c[r+16>>2]|0;if(c[42366]&2|0){o=0;ga(25,c[13918]|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break}}o=0;g=_(24,b|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){n=0;while(1){if(!g)break;o=0;e=$(33,b|0,g|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=SN(c[f>>2]|0,w|0,x|0)|0;if(!h)Ua(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}i=n;while(1){if(!e)break;if(!(0==2?(c[(c[e+16>>2]|0)+8>>2]|0)!=0:0))u=32;c:do if((u|0)==32){u=0;do if(a[174076]|0){k=c[e>>2]&3;j=(c[c[((k|0)==3?e:e+48|0)+40>>2]>>2]|0)>>>4;k=(c[c[((k|0)==2?e:e+-48|0)+40>>2]>>2]|0)>>>4;if(j>>>0>k>>>0){o=0;f=aa(15,t|0,k|0,j|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=SN(c[h>>2]|0,w|0,x|0)|0;if(!d)Ua(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ha(59,t|0,k|0,j|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=SN(c[f>>2]|0,w|0,x|0)|0;if(!h)Ua(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}else{o=0;f=aa(15,t|0,j|0,k|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=SN(c[h>>2]|0,w|0,x|0)|0;if(!d)Ua(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ha(59,t|0,j|0,k|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=SN(c[f>>2]|0,w|0,x|0)|0;if(!h)Ua(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}}while(0);c[v+(i<<3)+4>>2]=e;o=0;h=_(25,e|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=SN(c[d>>2]|0,w|0,x|0)|0;if(!f)Ua(d|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}c[v+(i<<3)>>2]=h;i=i+1|0}while(0);o=0;e=$(34,b|0,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=SN(c[f>>2]|0,w|0,x|0)|0;if(!h)Ua(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}}o=0;g=$(35,b|0,g|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}n=i}o=0;j=_(26,n<<3|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;ja(25,v|0,n|0,8,36);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){g=c[m>>2]|0;o=0;fa(87,g+2|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){i=c[m+16>>2]|0;d=i+(g*40|0)|0;i=i+((g+1|0)*40|0)|0;q=c[13918]|0;h=0;while(1){if((h|0)>=(n|0))break;if((h|0)>0?c[42366]&16|0:0){o=0;ga(25,q|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}e=c[v+(h<<3)+4>>2]|0;k=c[e>>2]&3;g=c[(c[(c[((k|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;e=c[(c[(c[((k|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if((g|0)==(e|0)){o=0;ja(26,m|0,g|0,i|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}else{o=0;ha(60,m|0,e|0,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}o=0;ha(60,m|0,g|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}o=0;e=aa(16,m|0,i|0,d|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}if(e|0){k=t;m=j;i=r;d=v;h=v;break a}e=j+(h<<3)|0;o=0;ja(27,s|0,m|0,d|0,i|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}g=s;k=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=k;o=0;fa(88,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}h=h+1|0}o=0;ea(8);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;e=_(27,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+20>>2]=e;o=0;e=_(28,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+24>>2]=e;o=0;ha(61,n|0,j|0,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){w=RN(169468,1,w|0,x|0)|0;x=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){k=t;m=j;i=r;d=v;h=v;e=0;g=q;u=74}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=0;e=z;g=0;u=74}while(0);d:while(1){if((u|0)==74){u=0;if(e|0){q=g;continue}o=0;fa(89,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){A=g;f=h;q=d;r=i;s=j;t=m;v=k;u=n;e=z;g=A;h=f;d=q;i=r;j=s;m=t;k=v;n=u;u=74;continue}if(c[42366]&4|0){o=0;ka(7,g|0,i|0,n|0,m|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}}o=0;la(10,b|0,i|0,n|0,m|0,d|0,0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}q=g}if(!(a[174076]|0))e=0;else{o=0;fa(90,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}e=0}while(1){if((e|0)>=(n|0))break;o=0;fa(91,c[m+(e<<3)+4>>2]|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;g=q;u=74;continue d}e=e+1|0}o=0;fa(91,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;fa(92,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;fa(91,h|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74}else break}_I(w|0);l=y;return}function MB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;p=q+32|0;o=q+16|0;j=q;k=q+48|0;WL(95757,a)|0;WL(95768,a)|0;m=b+16|0;n=j+8|0;i=k+4|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;d=c[m>>2]|0;e=c[d+(g*40|0)+20>>2]|0;f=c[d+(g*40|0)+24>>2]|0;if((e|0)==(f|0)){FC(j,e);d=~~+h[j>>3];e=~~+h[n>>3]}else{HC(k,(c[e>>2]&1|0)==0?e:f,d+(g*40|0)|0);d=c[k>>2]|0;e=c[i>>2]|0}c[o>>2]=g;c[o+4>>2]=d;c[o+8>>2]=e;zL(a,95788,o)|0;g=g+1|0}f=b+4|0;e=b+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;o=c[e>>2]|0;b=c[o+(d*24|0)+16>>2]|0;r=+h[o+(d*24|0)>>3];c[p>>2]=c[o+(d*24|0)+12>>2];c[p+4>>2]=b;h[p+8>>3]=r;zL(a,95808,p)|0;d=d+1|0}WL(95830,a)|0;l=q;return}function NB(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;f=c[a>>2]&3;e=c[(c[((f|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;a=c[(c[((f|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;b=+h[e+16>>3]-+h[a+16>>3];d=+h[e+24>>3]-+h[a+24>>3];return ~~(d*d+b*b)|0}function OB(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function PB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n;FC(n+16|0,d);k=d+32|0;m=d+36|0;g=0;while(1){if((g|0)>=(c[k>>2]|0))break;h=c[(c[m>>2]|0)+(g<<2)>>2]|0;do if(!(a[h+36>>0]|0)){i=c[h+20>>2]|0;if((i|0)==(d|0)){DC(j,h,c[h+24>>2]|0);YC(b,f,h,0.0)|0;break}else{DC(j,h,i);YC(b,e,h,0.0)|0;break}}while(0);g=g+1|0}c[b>>2]=(c[b>>2]|0)+2;l=n;return}function QB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;h=k;FC(k+16|0,b);i=b+32|0;j=b+36|0;f=0;while(1){if((f|0)>=(c[i>>2]|0))break;g=c[(c[j>>2]|0)+(f<<2)>>2]|0;e=c[g+20>>2]|0;if((e|0)==(b|0))e=c[g+24>>2]|0;DC(h,g,e);YC(a,d,g,0.0)|0;f=f+1|0}c[a>>2]=(c[a>>2]|0)+1;c[d+24>>2]=b;c[d+20>>2]=b;l=k;return}function RB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+128|0;C=H+64|0;n=H+48|0;D=H+32|0;E=H+16|0;F=H;g=0;i=e;while(1){if(!i)break;g=g+1|0;i=c[i+8>>2]|0}B=vw((g*56|0)+-112|0)|0;c[C+52>>2]=0;c[C+48>>2]=0;A=e+8|0;e=c[A>>2]|0;i=c[e+8>>2]|0;g=c[e+20>>2]|0;if(c[g>>2]&1)g=c[e+24>>2]|0;DC(n,e,g);j=e;q=e;p=0.0;o=+h[n>>3];z=0;m=0.0;x=+h[n+8>>3];while(1){y=i+8|0;if(!(c[y>>2]|0))break;v=EC(j,i)|0;uG(d,v,c[q+12>>2]|0);t=q+36|0;u=i+36|0;if((a[t>>0]|0)==(a[u>>0]|0))if((c[y>>2]|0)==(f|0)){DC(E,i,v);e=E;G=12}else{j=q;e=z;k=x}else{FC(D,v);e=D;G=12}if((G|0)==12){G=0;w=+h[e>>3];k=+h[e+8>>3];e=a[t>>0]|0;s=e<<24>>24==0;r=(q|0)==(c[A>>2]|0);if(s){if(!(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?4:2;n=v+48|0;q=g+48|0;j=g+40|0;g=r?0:p>o?4:2}else{if(e<<24>>24==(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?1:3;n=v+40|0;q=g+40|0;j=g+48|0;g=r?0:m>x?1:3}GC(C,s&1,+h[j>>3],+h[q>>3],+h[n>>3],g,e);q=z+1|0;g=B+(z*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));if((a[t>>0]|0)!=(a[u>>0]|0)?(c[y>>2]|0)==(f|0):0){DC(F,i,v);n=(a[u>>0]|0)==0;e=v+40|0;g=v+48|0;p=+h[(n?g:e)>>3];GC(C,n&1,+h[(n?e:g)>>3],p,p,n?(o>w?4:2):x>k?1:3,0);n=z+2|0;g=B+(q*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));g=v;j=i;p=o;o=w;e=n;m=x}else{g=v;j=i;p=o;o=w;e=q;m=x}}v=i;i=c[y>>2]|0;q=j;z=e;x=k;j=v}i=aJ(B,z*56|0)|0;e=z+-1|0;g=0;while(1){if((g|0)>=(z|0))break;if((g|0)>0)c[i+(g*56|0)+48>>2]=i+((g+-1|0)*56|0);if((g|0)<(e|0)){G=g+1|0;c[i+(g*56|0)+52>>2]=i+(G*56|0);g=G;continue}else{g=g+1|0;continue}}c[b>>2]=z;c[b+4>>2]=i;l=H;return}function SB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Ql(24676,c[4345]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&4)){while(1){d=c[(c[b+36>>2]|0)+8>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=vw(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+40>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|4;d=c[c[f+36>>2]>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+56>>3];yC(j,g,+h[b+48>>3])}i=i+1|0}return j|0}function TB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Ql(24676,c[4345]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&2)){while(1){d=c[(c[b+36>>2]|0)+12>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=vw(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+48>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|2;d=c[(c[f+36>>2]|0)+4>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+64>>3];yC(j,g,+h[b+40>>3])}i=i+1|0}return j|0}function UB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;i=e+24|0;e=0;while(1){if((e|0)>=(b|0))break;g=c[d+(e<<3)>>2]|0;h=c[d+(e<<3)+4>>2]|0;f=0;while(1){if((f|0)>=(g|0))break;k=h+(f*56|0)|0;xC(bC(c[((a[k>>0]|0)==0?j:i)>>2]|0,k)|0,k);f=f+1|0}e=e+1|0}return}function VB(a){a=a|0;var b=0,d=0;d=a+20|0;dC(c[d>>2]|0);b=a+24|0;dC(c[b>>2]|0);eC(c[d>>2]|0);eC(c[b>>2]|0);fC(c[d>>2]|0,a);fC(c[b>>2]|0,a);gC(c[d>>2]|0);gC(c[b>>2]|0);return}function WB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0.0;z=l;l=l+224|0;n=z+176|0;m=z+208|0;x=z+160|0;y=z+128|0;k=z+96|0;t=z+64|0;u=z;o=z+32|0;v=u+8|0;h[v>>3]=1797693134862315708145274.0e284;h[u>>3]=1797693134862315708145274.0e284;w=u+24|0;h[w>>3]=-1797693134862315708145274.0e284;p=u+16|0;h[p>>3]=-1797693134862315708145274.0e284;WL(95005,a)|0;c[n>>2]=10;c[n+4>>2]=10;zL(a,95411,n)|0;WL(123076,a)|0;i=b+4|0;j=b+12|0;q=t+8|0;r=t+16|0;s=t+24|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;D=(c[j>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];C=+h[q>>3];B=+h[r>>3];A=+h[s>>3];h[k>>3]=+h[t>>3];h[k+8>>3]=C;h[k+16>>3]=B;h[k+24>>3]=A;zL(a,123095,k)|0;g=g+1|0}g=0;while(1){if((g|0)>=(d|0))break;D=c[f+(g<<3)+4>>2]|0;k=e+(g<<3)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];c[n+16>>2]=c[u+16>>2];c[n+20>>2]=c[u+20>>2];c[n+24>>2]=c[u+24>>2];c[n+28>>2]=c[u+28>>2];cC(o,a,D,m,b,n);c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];c[u+16>>2]=c[o+16>>2];c[u+20>>2]=c[o+20>>2];c[u+24>>2]=c[o+24>>2];c[u+28>>2]=c[o+28>>2];g=g+1|0}WL(95428,a)|0;i=b+8|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;D=(c[i>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];E=+h[t>>3];A=+h[q>>3];B=+h[r>>3];C=+h[s>>3];h[y>>3]=E;h[y+8>>3]=A;h[y+16>>3]=B;h[y+24>>3]=C;zL(a,123132,y)|0;h[u>>3]=+h[(+h[u>>3]<E?u:t)>>3];h[v>>3]=+h[(+h[v>>3]<A?u:t)+8>>3];h[p>>3]=+h[(+h[p>>3]>B?u:t)+16>>3];h[w>>3]=+h[(+h[w>>3]>C?u:t)+24>>3];g=g+1|0}v=~~(+h[v>>3]+10.0);y=~~(+h[p>>3]+10.0);D=~~(+h[w>>3]+10.0);c[x>>2]=~~(+h[u>>3]+10.0);c[x+4>>2]=v;c[x+8>>2]=y;c[x+12>>2]=D;zL(a,95453,x)|0;l=z;return}function XB(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;N=l;l=l+112|0;F=N+88|0;E=N+72|0;M=N+32|0;I=N+16|0;J=N;K=N+56|0;L=N+40|0;G=c[13918]|0;w=(i|0)==0;x=J+8|0;y=I+8|0;v=0;m=0;n=0;o=0;p=0;i=0;while(1){if((v|0)>=(e|0))break;z=c[g+(v<<3)+4>>2]|0;A=z+48|0;u=(c[(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)+16>>2]|0)+16|0;B=z+16|0;C=(c[B>>2]|0)+16|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];YB(K,E,F);c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];C=z+-48|0;u=(c[(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)+16>>2]|0)+16|0;t=(c[B>>2]|0)+56|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];YB(L,E,F);c[J>>2]=c[L>>2];c[J+4>>2]=c[L+4>>2];c[J+8>>2]=c[L+8>>2];c[J+12>>2]=c[L+12>>2];t=c[f+(v<<3)>>2]|0;u=c[f+(v<<3)+4>>2]|0;s=t*3|0;D=s+1|0;if((s|0)>=(n|0)){if(m|0)_I(i);p=ww(D<<4)|0;m=p;n=D;o=p;i=p}if(!(a[u>>0]|0)){k=+(_B(u,d)|0);j=+h[I>>3]}else{j=+ZB(u,d);k=+h[y>>3]}r=m+16|0;h[m+16>>3]=j;h[m+24>>3]=k;c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];r=1;q=u;s=2;while(1){if((r|0)>=(t|0))break;q=u+(r*56|0)|0;if(!(a[q>>0]|0))k=+(_B(q,d)|0);else j=+ZB(q,d);O=m+(s+2<<4)|0;Q=m+(s+1<<4)|0;P=m+(s<<4)|0;h[P>>3]=j;h[m+(s<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];r=r+1|0;s=s+3|0}if(!(a[q>>0]|0)){k=+(_B(q,d)|0);j=+h[J>>3]}else{j=+ZB(q,d);k=+h[x>>3]}Q=m+(s<<4)|0;O=s+1|0;P=m+(O<<4)|0;h[P>>3]=j;h[m+(O<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];if(0>1){P=Dn(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)|0;Q=Dn(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)|0;c[M>>2]=P;c[M+4>>2]=Q;zL(G,94964,M)|0}Jz(z,c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0,m,D,24664);if((!w?(H=c[(c[B>>2]|0)+96>>2]|0,H|0):0)?(a[H+81>>0]|0)==0:0){c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];cA(b,z,E,F)}v=v+1|0}_I(o);l=N;return}function YB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function ZB(a,b){a=a|0;b=b|0;var d=0.0,e=0;b=bC(c[b+24>>2]|0,a)|0;e=c[b+36>>2]|0;d=+h[e+40>>3];return +((+h[e+56>>3]-d)*(+(c[a+44>>2]|0)/+((c[b+24>>2]|0)+1|0))+d)}function _B(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=bC(c[b+20>>2]|0,a)|0;b=c[e+36>>2]|0;d=+h[b+48>>3];return ~~((1.0-+(c[a+44>>2]|0)/+((c[e+24>>2]|0)+1|0))*(+h[b+64>>3]-d)+d)|0}function $B(a){a=a|0;return 0}function aC(a){a=a|0;return 0}function bC(a,b){a=a|0;b=b|0;a=bb[c[a>>2]&31](a,b+8|0,512)|0;if(!a)ma(94977,94983,423,94991);a=c[a+16>>2]|0;a=bb[c[a>>2]&31](a,b+16|0,512)|0;if(!a)ma(95002,94983,425,94991);else return a|0;return 0}function cC(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;z=l;l=l+32|0;y=z+16|0;u=z+8|0;m=z;j=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;t=c[f+4>>2]|0;if(!(a[t>>0]|0)){k=+h[j+56>>3];s=+h[j+40>>3];j=_B(t,g)|0;k=(s+k)*.5}else{k=+h[j+64>>3];s=+h[j+48>>3];j=~~((s+k)*.5);k=+ZB(t,g)}A=~~k;p=+h[i>>3];r=+(A|0);p=p<r?p:r;h[i>>3]=p;v=i+8|0;q=+h[v>>3];s=+(j|0);q=q<s?q:s;h[v>>3]=q;w=i+16|0;k=+h[w>>3];r=k>r?k:r;h[w>>3]=r;x=i+24|0;k=+h[x>>3];s=k>s?k:s;h[x>>3]=s;c[m>>2]=A;c[m+4>>2]=j;zL(d,95504,m)|0;o=c[f>>2]|0;m=t;n=1;f=A;while(1){if((n|0)>=(o|0))break;m=t+(n*56|0)|0;if(!(a[m>>0]|0))j=_B(m,g)|0;else f=~~+ZB(m,g);B=+(f|0);D=p<B?p:B;h[i>>3]=D;k=+(j|0);C=q<k?q:k;h[v>>3]=C;B=r>B?r:B;h[w>>3]=B;k=s>k?s:k;h[x>>3]=k;c[u>>2]=f;c[u+4>>2]=j;zL(d,95526,u)|0;n=n+1|0;p=D;q=C;r=B;s=k}j=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if(!(a[m>>0]|0)){k=+h[j+56>>3];D=+h[j+40>>3];j=_B(m,g)|0;k=(D+k)*.5}else{k=+h[j+64>>3];D=+h[j+48>>3];j=~~((D+k)*.5);k=+ZB(m,g)}A=~~k;C=+(A|0);h[i>>3]=p<C?p:C;D=+(j|0);h[v>>3]=q<D?q:D;h[w>>3]=r>C?r:C;h[x>>3]=s>D?s:D;c[y>>2]=A;c[y+4>>2]=j;zL(d,95540,y)|0;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];c[b+16>>2]=c[i+16>>2];c[b+20>>2]=c[i+20>>2];c[b+24>>2]=c[i+24>>2];c[b+28>>2]=c[i+28>>2];l=z;return}function dC(a){a=a|0;var b=0;a=Ol(a)|0;while(1){if(!a)break;b=Ol(c[a+16>>2]|0)|0;while(1){if(!b)break;c[b+32>>2]=IC(c[b+24>>2]|0)|0;b=c[b>>2]|0}a=c[a>>2]|0}return}function eC(a){a=a|0;var b=0;a=Ol(a)|0;while(1){if(!a)break;b=Ol(c[a+16>>2]|0)|0;while(1){if(!b)break;if(c[b+24>>2]|0)wC(b);b=c[b>>2]|0}a=c[a>>2]|0}return}function fC(a,b){a=a|0;b=b|0;var d=0;d=Ol(a)|0;while(1){if(!d)break;a=Ol(c[d+16>>2]|0)|0;while(1){if(!a)break;kC(a,b);a=c[a>>2]|0}d=c[d>>2]|0}return}function gC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0;e=Ol(a)|0;while(1){if(!e)break;i=e+8|0;f=Ol(c[e+16>>2]|0)|0;while(1){if(!f)break;a=f+24|0;a:do if(c[a>>2]|0){if(c[42366]&8|0)hC(f,~~+h[i>>3]);g=f+32|0;NC(c[g>>2]|0);b=c[a>>2]|0;d=f+28|0;a=0;while(1){if((a|0)>=(b|0))break a;c[(c[(c[d>>2]|0)+(a<<2)>>2]|0)+44>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+(a*12|0)+4>>2]|0)+1;a=a+1|0}}while(0);f=c[f>>2]|0}e=c[e>>2]|0}return}function hC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+32|0;d=j;g=a+24|0;a:do if((c[g>>2]|0)>=2){i=c[13918]|0;m=+h[a+8>>3];k=+h[a+16>>3];c[d>>2]=b;h[d+8>>3]=m;h[d+16>>3]=k;zL(i,95561,d)|0;f=a+32|0;a=a+28|0;b=0;while(1){if((b|0)>=(c[g>>2]|0))break a;e=c[(c[(c[f>>2]|0)+4>>2]|0)+(b*12|0)+8>>2]|0;b:do if(Sl(e)|0){iC(i,c[(c[a>>2]|0)+(b<<2)>>2]|0);WL(95581,i)|0;d=bb[c[e>>2]&31](e,0,128)|0;while(1){if(!d)break b;WL(95586,i)|0;iC(i,c[(c[a>>2]|0)+(c[d>>2]<<2)>>2]|0);WL(134901,i)|0;d=bb[c[e>>2]&31](e,d,8)|0}}while(0);b=b+1|0}}while(0);l=j;return}function iC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+80|0;f=g+40|0;e=g;if(!(a[d>>0]|0)){m=+h[d+16>>3];j=+h[d+8>>3];k=+h[d+24>>3];i=jC(c[d+32>>2]|0)|0;e=jC(c[d+36>>2]|0)|0;h[f>>3]=m;h[f+8>>3]=j;h[f+16>>3]=k;h[f+24>>3]=j;c[f+32>>2]=i;c[f+36>>2]=e;zL(b,95592,f)|0}else{k=+h[d+8>>3];j=+h[d+16>>3];m=+h[d+24>>3];f=jC(c[d+32>>2]|0)|0;i=jC(c[d+36>>2]|0)|0;h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=k;h[e+24>>3]=m;c[e+32>>2]=f;c[e+36>>2]=i;zL(b,95592,e)|0}l=g;return}function jC(a){a=a|0;switch(a|0){case 0:{a=95643;break}case 1:{a=95638;break}case 2:{a=95631;break}case 3:{a=95624;break}case 4:{a=95616;break}default:a=0}return a|0}function kC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;r=w+8|0;t=w;u=c[a+32>>2]|0;v=c[a+28>>2]|0;p=a+24|0;m=r+4|0;n=t+4|0;j=0;a=c[p>>2]|0;a:while(1){q=j+1|0;if((q|0)>=(a|0))break;o=v+(j<<2)|0;k=q;while(1){if((k|0)>=(a|0)){j=q;continue a}b:do if(((MC(u,j,k)|0)==0?(MC(u,k,j)|0)==0:0)?(s=v+(k<<2)|0,lC(c[o>>2]|0,c[s>>2]|0)|0):0){f=c[o>>2]|0;a=c[f+48>>2]|0;i=c[s>>2]|0;d=c[i+48>>2]|0;e=(d|0)==0;if(a)if(e)a=1;else a=+h[a+8>>3]!=+h[d+8>>3];else a=e^1;g=a&1;mC(r,f,i,0,g);a=c[r>>2]|0;i=c[m>>2]|0;f=g^1;mC(t,c[o>>2]|0,c[s>>2]|0,1,f);d=c[t>>2]|0;e=c[n>>2]|0;switch(i|0){case -1:{nC(c[s>>2]|0,c[o>>2]|0,g,0,a,b);nC(c[s>>2]|0,c[o>>2]|0,f,1,d,b);if((e|0)!=1)break b;oC(c[o>>2]|0,c[s>>2]|0,f,b);break b}case 0:switch(e|0){case -1:{nC(c[s>>2]|0,c[o>>2]|0,g,0,a,b);nC(c[s>>2]|0,c[o>>2]|0,f,1,d,b);break b}case 0:{nC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);nC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}case 1:{nC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);nC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}default:break b}case 1:{nC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);nC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);if((e|0)!=-1)break b;oC(c[o>>2]|0,c[s>>2]|0,f,b);break b}default:break b}}while(0);k=k+1|0;a=c[p>>2]|0}}l=w;return}function lC(a,b){a=a|0;b=b|0;if(!(+h[a+8>>3]==+h[b+8>>3]))ma(95714,94983,843,95745);if((+h[a+16>>3]==+h[b+16>>3]?+h[a+24>>3]==+h[b+24>>3]:0)?(c[a+32>>2]|0)==(c[b+32>>2]|0):0)a=(c[a+36>>2]|0)==(c[b+36>>2]|0)&1;else a=0;return a|0}function mC(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=0;while(1){b=pC(b,e)|0;if(!b){h=0;break}d=pC(d,f)|0;if(!d){i=6;break}if(!(lC(b,d)|0)){i=7;break}g=g+1|0}if((i|0)==6)ma(123205,94983,871,95663);else if((i|0)==7)h=rC(b,qC(b,d)|0,g+1|0,1-e|0)|0;c[a>>2]=g;c[a+4>>2]=h;return}function nC(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i+20|0;n=i+24|0;i=bC(c[((a[b>>0]|0)==0?o:n)>>2]|0,b)|0;KC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0);k=1;while(1){if((k|0)>(g|0))break;l=pC(b,e)|0;m=pC(d,f)|0;do if(!(a[b>>0]|0)){j=bC(c[n>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==1;i=(MC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==1;i=(MC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}}else{j=bC(c[o>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==2;i=(MC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==2;i=(MC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}}while(0);b=l;d=m;k=k+1|0}return}function oC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;while(1){if(!(lC(b,d)|0))break;g=pC(b,1)|0;d=pC(d,e)|0;b=g}g=c[(bC(c[((a[b>>0]|0)==0?f+20|0:f+24|0)>>2]|0,b)|0)+32>>2]|0;LC(g,c[b+40>>2]|0,c[d+40>>2]|0);return}function pC(a,b){a=a|0;b=b|0;if(!a)ma(95650,94983,798,95654);else return c[((b|0)==0?a+48|0:a+52|0)>>2]|0;return 0}function qC(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=a[b>>0]|0;if(d<<24>>24==(a[c>>0]|0)?!(+h[b+8>>3]!=+h[c+8>>3]):0){if(!(d<<24>>24))b=sC(b,c,3,1)|0;else b=sC(b,c,4,2)|0;l=f;return b|0}_l(1,95676,e)|0;Ua(169468,1);return 0}function rC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0;j=1;while(1){if((j|0)>(e|0))break;i=pC(b,f)|0;g=+h[i+8>>3]==+h[b+16>>3];do if(!(a[b>>0]|0))if(g){g=(c[b+32>>2]|0)==1;break}else{g=(c[b+36>>2]|0)==3;break}else if(g){g=(c[b+32>>2]|0)==4;break}else{g=(c[b+36>>2]|0)==2;break}while(0);b=i;j=j+1|0;d=g?0-d|0:d}return d|0}function sC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;j=+h[a+24>>3];k=+h[b+16>>3];do if(!(j<k)?(g=+h[a+16>>3],i=+h[b+24>>3],!(g>i)):0){if(k<j&g<k){b=tC(a,b,d,e)|0;break}if(k<g&g<i){b=0-(tC(b,a,d,e)|0)|0;break}if(!(g==k))if(j==k){d=c[a+36>>2]|0;return ((d|0)==(c[b+32>>2]|0)?0:(d|0)==(e|0)?1:-1)|0}else{d=c[a+32>>2]|0;b=(d|0)==(c[b+36>>2]|0)?0:(d|0)==(e|0)?1:-1;break}if(!(j==i))if(j<i){o=(c[a+36>>2]|0)==(d|0);d=vC(c[b+32>>2]|0,c[a+32>>2]|0,d,e)|0;return (o?d:0-d|0)|0}else{o=(c[b+36>>2]|0)==(e|0);b=vC(c[a+32>>2]|0,c[b+32>>2]|0,d,e)|0;b=o?b:0-b|0;break}o=c[a+32>>2]|0;n=c[b+32>>2]|0;if((o|0)==(n|0)){b=c[b+36>>2]|0;if((c[a+36>>2]|0)==(b|0)){b=0;break}}else b=c[b+36>>2]|0;m=(n|0)==(d|0);if((n|0)==(b|0)){if(m){b=1;break}if((n|0)==(e|0)){b=-1;break}if((o|0)!=(d|0)?(c[a+36>>2]|0)!=(d|0):0){b=1;break}if((o|0)!=(e|0)?(c[a+36>>2]|0)!=(e|0):0){b=-1;break}b=0;break}f=(b|0)==(e|0);if(m&f){b=(c[a+36>>2]|0)==(e|0);if((o|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}l=(b|0)==(d|0);if((n|0)==(e|0)&l){b=(o|0)==(e|0);if((c[a+36>>2]|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}if(!n){if(l){b=uC(o,c[a+36>>2]|0,d)|0;break}if(f){b=0-(uC(o,c[a+36>>2]|0,e)|0)|0;break}}f=c[a+36>>2]|0;if(m&(b|0)==0){b=uC(f,o,d)|0;break}else{b=0-(uC(f,o,e)|0)|0;break}}else b=0;while(0);return b|0}function tC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0;i=+h[a+24>>3];j=+h[b+24>>3];do if(i<j){a=c[a+36>>2]|0;if((a|0)==(d|0)?(c[b+32>>2]|0)==(e|0):0){a=-1;break}if((a|0)==(e|0)?(c[b+32>>2]|0)==(d|0):0){a=1;break}a=0}else{f=c[b+32>>2]|0;g=(f|0)==(e|0);if(i==j)if(g){a=vC(c[a+36>>2]|0,c[b+36>>2]|0,d,e)|0;break}else{a=0-(vC(c[b+36>>2]|0,c[a+36>>2]|0,d,e)|0)|0;break}if(g?(c[b+36>>2]|0)==(e|0):0){a=-1;break}if((f|0)==(d|0)?(c[b+36>>2]|0)==(d|0):0){a=1;break}a=0}while(0);return a|0}function uC(a,b,c){a=a|0;b=b|0;c=c|0;return ((a|0)==(c|0)?((b|0)==(c|0))<<31>>31:1)|0}function vC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(d|0)){b=(a|0)==0;if(b)return 0;else b=b&1}return ((a|0)!=0|(b|0)!=(c|0))<<31>>31|0}function wC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=c[a+28>>2]|0;h=c[a+24>>2]|0;d=c[a+32>>2]|0;a=0;a:while(1){e=a+1|0;if((e|0)>=(h|0))break;f=g+(a<<2)|0;b=e;while(1){if((b|0)==(h|0)){a=e;continue a}switch(qC(c[f>>2]|0,c[g+(b<<2)>>2]|0)|0){case 1:{KC(d,a,b);break}case -1:{KC(d,b,a);break}default:{}}b=b+1|0}}return}function xC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+24|0;e=c[f>>2]|0;d=e+1|0;c[f>>2]=d;c[b+40>>2]=e;e=a+28|0;a=c[e>>2]|0;if(!a)a=ww(d<<2)|0;else a=yw(a,d<<2)|0;c[e>>2]=a;c[a+((c[f>>2]|0)+-1<<2)>>2]=b;return}function yC(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;h[f>>3]=d;e=bb[c[a>>2]&31](a,f,512)|0;if(!e){e=vw(24)|0;h[e+8>>3]=+h[f>>3];c[e+16>>2]=Ql(24712,c[4345]|0)|0;bb[c[a>>2]&31](a,e,1)|0}f=c[e+16>>2]|0;bb[c[f>>2]&31](f,b,1)|0;l=g;return}function zC(a,b,d){a=a|0;b=b|0;d=d|0;JC(c[b+32>>2]|0);_I(c[b+28>>2]|0);_I(b);return}function AC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(e<f)a=!(+h[b+8>>3]>=+h[c+8>>3])<<31>>31;else a=0;else a=!(+h[b+8>>3]<=+h[c+8>>3])&1;return a|0}function BC(a,b,d){a=a|0;b=b|0;d=d|0;Kl(c[b+16>>2]|0)|0;_I(b);return}function CC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[b>>3];e=+h[c>>3];return (f>e?1:(f<e)<<31>>31)|0}function DC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;i=(a[d+36>>0]|0)!=0;j=e+40|0;do if((c[d+24>>2]|0)==(e|0)){f=+h[j>>3];if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;break}else{g=+h[e+48>>3];f=(+h[e+56>>3]+f)*.5;break}}else if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;f=+h[e+56>>3];break}else{g=+h[e+64>>3];f=(+h[e+56>>3]+ +h[j>>3])*.5;break}while(0);h[b>>3]=f;h[b+8>>3]=g;return}function EC(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;if((d|0)!=(c[b+20>>2]|0)?(d|0)!=(c[b+24>>2]|0):0)d=c[a+24>>2]|0;return d|0}function FC(a,b){a=a|0;b=b|0;var c=0.0;c=(+h[b+64>>3]+ +h[b+48>>3])*.5;h[a>>3]=(+h[b+56>>3]+ +h[b+40>>3])*.5;h[a+8>>3]=c;return}function GC(b,d,e,f,g,i,j){b=b|0;d=d|0;e=+e;f=+f;g=+g;i=i|0;j=j|0;var k=0,l=0;a[b>>0]=d;h[b+8>>3]=e;if(f<g){k=0;l=i;d=j;e=f;f=g}else{k=1;l=j;d=i;e=g}h[b+24>>3]=f;h[b+16>>3]=e;c[b+36>>2]=d;c[b+32>>2]=l;a[b+1>>0]=k;return}function HC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+36>>2]|0;do if((c[e+4>>2]|0)!=(d|0)){if((c[e+12>>2]|0)==(d|0)){e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+48>>3];break}if((c[e+8>>2]|0)==(d|0)){e=~~+h[b+40>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5);break}if((c[e>>2]|0)==(d|0)){e=~~+h[b+56>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5)}else{e=0;d=0}}else{e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+64>>3]}while(0);c[a>>2]=e;c[a+4>>2]=d;return}function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=vw(8)|0;c[d>>2]=a;e=d+4|0;c[e>>2]=vw(a*12|0)|0;b=0;while(1){if((b|0)>=(a|0))break;g=fG()|0;f=c[e>>2]|0;c[f+(b*12|0)+8>>2]=g;c[f+(b*12|0)>>2]=0;b=b+1|0}return d|0}function JC(a){a=a|0;var b=0,d=0,e=0;d=a+4|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[a>>2]|0))break;Kl(c[e+(b*12|0)+8>>2]|0)|0;b=b+1|0}_I(e);_I(a);return}function KC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;bb[c[d>>2]&31](d,f,1)|0;l=e;return}function LC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=d;a=a+4|0;g=c[(c[a>>2]|0)+(b*12|0)+8>>2]|0;bb[c[g>>2]&31](g,f,2)|0;c[f>>2]=b;d=c[(c[a>>2]|0)+(d*12|0)+8>>2]|0;bb[c[d>>2]&31](d,f,2)|0;l=e;return}function MC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;d=(bb[c[d>>2]&31](d,f,512)|0)!=0&1;l=e;return d|0}function NC(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;switch(b|0){case 0:break;case 1:{c[(c[a+4>>2]|0)+4>>2]=0;break}default:{e=OC(b)|0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[a>>2]|0)){b=0;break}if(!(c[(c[f>>2]|0)+(d*12|0)>>2]|0))b=PC(a,d,b,e)|0;d=d+1|0}while(1){d=QC(e)|0;if((d|0)<=-1)break;c[(c[f>>2]|0)+(d*12|0)+4>>2]=b;b=b+1|0}RC(e)}}return}function OC(a){a=a|0;var b=0;b=vw(8)|0;c[b+4>>2]=vw(a<<2)|0;c[b>>2]=-1;return b|0}function PC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;g=c[i>>2]|0;j=g+(b*12|0)|0;c[j>>2]=1;g=c[g+(b*12|0)+8>>2]|0;h=g+4|0;d=d+1|0;g=Ol(g)|0;while(1){if(!g)break;f=c[(c[h>>2]|0)+8>>2]|0;if((f|0)<0)f=c[g+8>>2]|0;else f=g+(0-f)|0;f=c[f>>2]|0;if(!(c[(c[i>>2]|0)+(f*12|0)>>2]|0))d=PC(a,f,d,e)|0;g=c[g>>2]|0}c[j>>2]=2;SC(e,b);return d+1|0}function QC(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if((b|0)==-1)a=-1;else{d=c[(c[a+4>>2]|0)+(b<<2)>>2]|0;c[a>>2]=b+-1;a=d}return a|0}function RC(a){a=a|0;_I(c[a+4>>2]|0);_I(a);return}function SC(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[(c[a+4>>2]|0)+(d<<2)>>2]=b;return}function TC(a){a=a|0;var d=0,e=0,f=0;e=c[a>>2]|0;c[a+8>>2]=e;c[a+12>>2]=c[a+4>>2];d=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;f=c[d>>2]|0;b[f+(a*40|0)+18>>1]=b[f+(a*40|0)+16>>1]|0;a=a+1|0}return}function UC(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;c[a>>2]=d;c[a+4>>2]=c[a+12>>2];e=a+16|0;a=0;while(1){if((a|0)>=(d|0))break;f=c[e>>2]|0;b[f+(a*40|0)+16>>1]=b[f+(a*40|0)+18>>1]|0;a=a+1|0}d=d+2|0;while(1){if((a|0)>=(d|0))break;b[(c[e>>2]|0)+(a*40|0)+16>>1]=0;a=a+1|0}return}function VC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=vw(((c[a>>2]|0)*6|0)+(b<<1)<<2)|0;c[a+20>>2]=vw((((c[a>>2]|0)*3|0)+b|0)*24|0)|0;e=c[a>>2]|0;f=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+24|0;a=a+1|0}e=e+2|0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+(b<<2)|0;a=a+1|0}return}function WC(a){a=a|0;var b=0;b=vw(24)|0;c[b>>2]=0;c[b+16>>2]=vw(a*40|0)|0;return b|0}function XC(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=c[a>>2]|0;c[d+(b*40|0)+32>>2]=b;c[a>>2]=b+1;return d+(b*40|0)|0}function YC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=a+4|0;f=c[g>>2]|0;c[g>>2]=f+1;g=c[a+20>>2]|0;a=g+(f*24|0)|0;c[g+(f*24|0)+12>>2]=c[b+32>>2];c[g+(f*24|0)+16>>2]=c[d+32>>2];h[a>>3]=e;c[g+(f*24|0)+8>>2]=0;ZC(b,f);ZC(d,f);return a|0}function ZC(a,d){a=a|0;d=d|0;var e=0,f=0;e=a+16|0;f=b[e>>1]|0;c[(c[a+28>>2]|0)+(f<<16>>16<<2)>>2]=d;b[e>>1]=f+1<<16>>16;return}function _C(a){a=a|0;var b=0;b=a+16|0;_I(c[(c[b>>2]|0)+28>>2]|0);_I(c[b>>2]|0);_I(c[a+20>>2]|0);_I(a);return}function $C(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;i=a+16|0;f=0;while(1){if((f|0)>=(g|0))break;c[(c[i>>2]|0)+(f*40|0)>>2]=-2147483648;f=f+1|0}nG();a:do if(!(qG(d)|0)){c[d+8>>2]=0;c[d>>2]=0;d=a+20|0;b:while(1){g=sG()|0;if(!g){f=0;break a}c[g>>2]=0-(c[g>>2]|0);if((g|0)==(e|0)){f=0;break a}i=g+16|0;j=g+28|0;f=0;while(1){if((f|0)>=(b[i>>1]|0))continue b;k=(c[d>>2]|0)+((c[(c[j>>2]|0)+(f<<2)>>2]|0)*24|0)|0;l=aD(a,k,g)|0;m=c[l>>2]|0;do if((m|0)<0){n=~~-(+h[k>>3]+ +(c[g>>2]|0));if((m|0)==-2147483648){c[l>>2]=n;if(qG(l)|0){f=1;break a}c[l+8>>2]=g;c[l+12>>2]=k;break}else{if((m|0)>=(n|0))break;tG(l,n);c[l+8>>2]=g;c[l+12>>2]=k;break}}while(0);f=f+1|0}}}else f=1;while(0);return f|0}function aD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+12>>2]|0;if((e|0)==(c[d+32>>2]|0))e=c[b+16>>2]|0;return (c[a+16>>2]|0)+(e*40|0)|0}function bD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;Jr(g,3,b)|0;b=c[g+92>>2]|0;do if(b){d=c[b+16>>2]|0;h=c[d+12>>2]|0;c[a+76>>2]=h;e=c[d+16>>2]|0;c[a+84>>2]=e;f=a+80|0;c[f>>2]=c[d>>2];c[a+88>>2]=c[b+4>>2];d=a+152|0;e=c[d>>2]|c[e>>2];c[d>>2]=e;b=c[g+80>>2]|0;if(!b){c[a+60>>2]=0;b=999;break}else{g=c[b+16>>2]|0;c[a+60>>2]=c[g+12>>2];i=c[g+16>>2]|0;c[a+68>>2]=i;c[a+72>>2]=c[b+4>>2];c[d>>2]=e|c[i>>2];c[a+64>>2]=c[((h|0)==0?f:g)>>2];b=300;break}}else b=999;while(0);return b|0}function cD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(!(ir(a)|0))if((b|0)!=0?(d=c[b>>2]|0,(d|0)!=0):0){gb[d&127](a);a=0}else a=0;else a=1;return a|0}function dD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)gb[d&127](a);c[(c[a>>2]|0)+24>>2]=0;qr(a);return}function eD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;e=+h[b+504>>3];f=+h[b+512>>3];i=+h[b+352>>3];if(!(c[b+360>>2]|0)){g=+h[d>>3]+e;d=d+8|0;e=f}else g=-(f+ +h[d+8>>3]);f=+h[b+528>>3]*i*(+h[d>>3]+e);h[a>>3]=+h[b+520>>3]*i*g;h[a+8>>3]=f;return}function fD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;f=+h[a+504>>3];g=+h[a+512>>3];i=+h[a+352>>3];j=+h[a+520>>3]*i;i=+h[a+528>>3]*i;a:do if(!(c[a+360>>2]|0)){a=0;while(1){if((a|0)>=(e|0))break a;h[d+(a<<4)>>3]=(+h[b+(a<<4)>>3]+f)*j;h[d+(a<<4)+8>>3]=(+h[b+(a<<4)+8>>3]+g)*i;a=a+1|0}}else{a=0;while(1){if((a|0)>=(e|0))break a;k=-(j*(+h[b+(a<<4)+8>>3]+g));h[d+(a<<4)+8>>3]=(+h[b+(a<<4)>>3]+f)*i;h[d+(a<<4)>>3]=k;a=a+1|0}}while(0);return d|0}function gD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+8>>2]|0,d|0):0)gb[d&127](a);return}function hD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+12>>2]|0,d|0):0)gb[d&127](a);pr(a);return}function iD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+24>>2]|0,d|0):0)gb[d&127](a);return}function jD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+28>>2]|0,d|0):0)gb[d&127](a);return}function kD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+16>>2]|0,d|0):0){b=c[a+160>>2]|0;kb[d&31](a,c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0,b,c[a+156>>2]|0)}return}function lD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+20>>2]|0,d|0):0)gb[d&127](a);return}function mD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+32>>2]|0,d|0):0)gb[d&127](a);return}function nD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+36>>2]|0,d|0):0)gb[d&127](a);return}function oD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+40>>2]|0,d|0):0)gb[d&127](a);return}function pD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+44>>2]|0,d|0):0)gb[d&127](a);return}function qD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+48>>2]|0,d|0):0)gb[d&127](a);return}function rD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+52>>2]|0,d|0):0)gb[d&127](a);return}function sD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+56>>2]|0,d|0):0)gb[d&127](a);return}function tD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+60>>2]|0,d|0):0)gb[d&127](a);return}function uD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+64>>2]|0,d|0):0)gb[d&127](a);return}function vD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+68>>2]|0,d|0):0)gb[d&127](a);return}function wD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+60>>2]|0;if(g|0?(h=c[g+72>>2]|0,h|0):0)lb[h&7](a,b,d,e,f);return}function xD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+76>>2]|0,d|0):0)gb[d&127](a);return}function yD(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+60>>2]|0;if(d|0?(e=c[d+80>>2]|0,e|0):0)hb[e&31](a,b);return}function zD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+84>>2]|0,d|0):0)gb[d&127](a);return}function AD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;f=k+32|0;h=k;i=k+16|0;j=c[b+60>>2]|0;m=c[e>>2]|0;do if(m|0?a[m>>0]|0:0){m=c[b+16>>2]|0;if(m|0?(c[m+144>>2]|0)==0:0)break;if(!(c[b+152>>2]&8192)){c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];eD(i,b,f);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2]}else{c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2]}if(j|0?(g=c[j+88>>2]|0,g|0):0){c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];ib[g&127](b,f,e)}}while(0);l=k;return}function BD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+16|0;i=WJ(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(CD(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)hb[e&31](b,g);if(h)a[i>>0]=58;return}function CD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;g=k+16|0;j=k+8|0;i=k;c[d>>2]=b;c[d+32>>2]=5;e=RE(b)|0;f=c[a+16>>2]|0;if(!((f|0)!=0?(vM(e,f,c[a+20>>2]|0,4,37)|0)!=0:0))h=3;a:do if((h|0)==3){switch(SE(b,d,c[a+24>>2]|0)|0){case 0:break a;case 1:break;default:{_l(1,95868,g)|0;break a}}a=ww((rJ(b)|0)+16|0)|0;c[i>>2]=b;pL(a,95833,i)|0;if(Dv(a)|0){c[j>>2]=b;_l(0,95842,j)|0}_I(a)}while(0);l=k;return}function DD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+56|0;i=WJ(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(CD(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)hb[e&31](b,g);if(h)a[i>>0]=58;return}function ED(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0;h=c[a+60>>2]|0;i=a+16|0;j=(c[i>>2]|0)+96|0;if(h|0?(CD(c[a+68>>2]|0,b,j),f=c[h+92>>2]|0,f|0):0)hb[f&31](a,j);j=c[i>>2]|0;c[j+136>>2]=d;g[j+140>>2]=e;return}function FD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m;j=c[b+60>>2]|0;b=c[b+16>>2]|0;c[b+160>>2]=d;a:do if((d|0)!=0&(j|0)!=0){j=b+144|0;i=b+152|0;g=b+148|0;b=d;b:while(1){f=b+4|0;b=c[b>>2]|0;if(!b)break a;c:do switch(a[b>>0]|0){case 115:{if(!(xJ(b,95889)|0)){c[j>>2]=3;b=f;continue b}if(!(xJ(b,95910)|0)){e=115;while(1){d=b+1|0;if(!(e<<24>>24))break;b=d;e=a[d>>0]|0}h[i>>3]=+sM(d);b=f;continue b}break}case 100:{if(!(xJ(b,122119)|0)){c[j>>2]=1;b=f;continue b}if(!(xJ(b,122112)|0)){c[j>>2]=2;b=f;continue b}break}case 105:{if(xJ(b,119127)|0?xJ(b,95895)|0:0)break c;c[j>>2]=0;b=f;continue b}case 98:{if(!(xJ(b,95905)|0)){h[i>>3]=2.0;b=f;continue b}break}case 102:{if(!(xJ(b,95923)|0)){c[g>>2]=1;b=f;continue b}break}case 117:{if(!(xJ(b,95930)|0)){c[g>>2]=0;b=f;continue b}break}case 116:{if(!(xJ(b,95939)|0)){b=f;continue b}break}default:{}}while(0);c[k>>2]=b;_l(0,95947,k)|0;b=f}}while(0);l=m;return}function GD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;d=c[a+60>>2]|0;if((d|0?(i=d+96|0,f=c[i>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){d=b+16|0;h[g>>3]=(+h[d>>3]+ +h[b>>3])*.5;h[g+8>>3]=(+h[b+24>>3]+ +h[b+8>>3])*.5;b=g+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];if(!(c[a+152>>2]&8192)){fD(a,g,g,2)|0;f=c[i>>2]|0}ib[f&127](a,g,e)}l=j;return}function HD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o;f=c[a+60>>2]|0;if((f|0?(n=f+100|0,c[n>>2]|0):0)?(k=a+16|0,j=c[k>>2]|0,c[j+144>>2]|0):0){if(!(e&4)){f=e;g=0}else{f=e&-5;e=j+16|0;g=m;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=e;h=j+56|0;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=1}if(!(c[a+152>>2]&8192)){e=d+10|0;if((c[42406]|0)<(d|0)){c[42406]=e;e=yw(c[42407]|0,e<<4)|0;c[42407]=e}else e=c[42407]|0;fD(a,b,e,d)|0;kb[c[n>>2]&31](a,e,d,f)}else kb[c[n>>2]&31](a,b,d,f);if(g|0){g=(c[k>>2]|0)+16|0;h=m;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0))}}l=o;return}function ID(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+64|0;f=e;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];g=f+32|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[f+16>>3]=+h[f>>3];h[f+24>>3]=+h[f+40>>3];h[f+48>>3]=+h[g>>3];h[f+56>>3]=+h[f+8>>3];HD(a,f,4,d);l=e;return}function JD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=c[a+60>>2]|0;do if((i|0?(j=i+104|0,h=c[j>>2]|0,h|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){mb[h&15](a,b,d,e,f,g&255);break}h=d+10|0;if((c[42406]|0)<(d|0)){c[42406]=h;h=yw(c[42407]|0,h<<4)|0;c[42407]=h}else h=c[42407]|0;fD(a,b,h,d)|0;mb[c[j>>2]&15](a,h,d,e,f,g&255)}while(0);return}function KD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a+60>>2]|0;do if((e|0?(g=e+108|0,f=c[g>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){ib[f&127](a,b,d);break}e=d+10|0;if((c[42406]|0)<(d|0)){c[42406]=e;e=yw(c[42407]|0,e<<4)|0;c[42407]=e}else e=c[42407]|0;fD(a,b,e,d)|0;ib[c[g>>2]&127](a,e,d)}while(0);return}function LD(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+60>>2]|0;if((d|0?!((e|0)==0|(a[d>>0]|0)==0):0)?(f=c[e+112>>2]|0,f|0):0)hb[f&31](b,d);return}function MD(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+112|0;B=F+64|0;E=F;n=F+96|0;x=F+48|0;y=F+32|0;C=c[b+60>>2]|0;if(!b)ma(96061,96e3,691,96011);if(!d)ma(96030,96e3,692,96011);if(!(a[d>>0]|0))ma(96035,96e3,693,96011);D=Lr(d)|0;if(!D){if((C|0)!=0&(Py(d)|0)!=0?(m=c[C+116>>2]|0,m|0):0)lb[m&7](b,d,e,f,g&255)}else{s=b+432|0;c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];Or(n,D,B);s=c[n>>2]|0;m=c[n+4>>2]|0;if(!((s|0)<1&(m|0)<1)){n=E+16|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];c[E>>2]=c[e>>2];c[E+4>>2]=c[e+4>>2];c[E+8>>2]=c[e+8>>2];c[E+12>>2]=c[e+12>>2];z=E+8|0;A=E+24|0;d=1;while(1){if((d|0)>=(f|0))break;G=e+(d<<4)|0;v=+h[G>>3];h[E>>3]=+h[(+h[E>>3]<v?E:G)>>3];w=+h[e+(d<<4)+8>>3];h[z>>3]=+h[(+h[z>>3]<w?E:G)+8>>3];h[n>>3]=+h[(+h[n>>3]>v?n:G)>>3];h[A>>3]=+h[(+h[A>>3]>w?n:G)+8>>3];d=d+1|0}k=+h[n>>3];j=+h[E>>3];t=k-j;u=+h[A>>3];v=+h[z>>3];w=u-v;o=+(m|0);p=+(s|0);q=t/p;r=w/o;a:do switch(ND(i)|0){case 1:if(q<r){p=q*p;o=q*o;break a}else{p=r*p;o=r*o;break a}case 2:{p=q*p;break}case 3:{o=r*o;break}case 4:{p=q*p;o=r*o;break}default:{}}while(0);if(p<t){t=(t-p)*.5;j=j+t;h[E>>3]=j;k=k-t;h[n>>3]=k}if(o<w){w=(w-o)*.5;h[z>>3]=v+w;h[A>>3]=u-w}if(!(c[b+152>>2]&8192)){c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];eD(x,b,B);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2];c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];eD(y,b,B);c[n>>2]=c[y>>2];c[n+4>>2]=c[y+4>>2];c[n+8>>2]=c[y+8>>2];c[n+12>>2]=c[y+12>>2];k=+h[n>>3];j=+h[E>>3]}if(j>k){h[E>>3]=k;h[n>>3]=j}j=+h[z>>3];k=+h[A>>3];if(j>k){h[z>>3]=k;h[A>>3]=j}if(C|0){G=c[b+72>>2]|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];c[B+16>>2]=c[E+16>>2];c[B+20>>2]=c[E+20>>2];c[B+24>>2]=c[E+24>>2];c[B+28>>2]=c[E+28>>2];PD(b,D,B,g,G)}}}l=F;return}function ND(b){b=b|0;if(a[b>>0]|0)if(iK(b,96043)|0)if(iK(b,96049)|0)if(!(iK(b,96056)|0))b=4;else b=(IA(b)|0)<<24>>24!=0&1;else b=3;else b=2;else b=0;return b|0}function OD(a,b){a=a|0;b=+b;if(c[a+60>>2]|0)h[(c[a+16>>2]|0)+152>>3]=b;return}function PD(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+176|0;k=n+8|0;j=n;h=n+40|0;if(!b)ma(96061,96065,52,96079);if(!d)ma(96091,96065,53,96079);i=c[d+8>>2]|0;if(!i)ma(96094,96065,54,96079);if(!(a[i>>0]|0))ma(96103,96065,55,96079);xK(h,c[d+28>>2]|0)|0;i=h+(rJ(h)|0)|0;a[i>>0]=58;a[i+1>>0]=0;IL(h,g)|0;if((QD(b,h)|0)==999){c[j>>2]=h;_l(0,96115,j)|0}g=c[b+92>>2]|0;if(g|0?(m=c[g>>2]|0,m|0):0){c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];kb[m&31](b,d,k,f)}l=n;return}function QD(a,b){a=a|0;b=b|0;b=Jr(c[a>>2]|0,4,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+92>>2]=c[b+12>>2];c[a+96>>2]=c[b>>2];b=300}return b|0}function RD(a){a=a|0;return 1}function SD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function TD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function UD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function VD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function WD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*1.1;a[b+537>>0]=1;return 0}function XD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*.9090909090909091;a[b+537>>0]=1;return 0}function YD(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;e=b+536|0;d=(a[e>>0]|0)==0;a[e>>0]=d&1;if(d){d=c[b+448>>2]|0;e=c[b+452>>2]|0;i=+(d>>>0);g=+(e>>>0);f=i/+(d|0)<g/+(e|0);h[b+352>>3]=(f?i:g)/+((f?d:e)|0);e=b+336|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;a[b+537>>0]=1}return 0}function ZD(b){b=b|0;var d=0,e=0;d=c[(c[b>>2]|0)+168>>2]|0;e=b+580|0;if(!(c[e>>2]|0)){c[e>>2]=d;e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]|2;nE(b,d)}gu(b,d);a[b+540>>0]=1;return}function _D(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;k=l;l=l+16|0;f=k;switch(d|0){case 1:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];gE(b,f);mE(b);a[b+538>>0]=1;a[b+541>>0]=1;j=13;break}case 2:{a[b+538>>0]=1;a[b+541>>0]=2;j=13;break}case 3:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];gE(b,f);a[b+538>>0]=1;a[b+541>>0]=3;j=13;break}case 4:{a[b+536>>0]=0;if(!(c[b+360>>2]|0)){f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i)+ +h[d>>3];g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;d=b+528|0}else{f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=+h[d>>3]-(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i);g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;d=b+520|0}j=b+344|0;h[j>>3]=g*.10000000000000009/(+h[d>>3]*i)+ +h[j>>3];h[f>>3]=i*1.1;j=13;break}case 5:{a[b+536>>0]=0;j=b+352|0;i=+h[j>>3]*.9090909090909091;h[j>>3]=i;if(!(c[b+360>>2]|0)){f=b+336|0;h[f>>3]=+h[f>>3]-(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i);g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;f=b+528|0}else{f=b+336|0;h[f>>3]=(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i)+ +h[f>>3];g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;f=b+520|0}j=b+344|0;h[j>>3]=+h[j>>3]-g*.10000000000000009/(+h[f>>3]*i);j=13;break}default:{}}if((j|0)==13)a[b+537>>0]=1;b=b+560|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];l=k;return}function $D(b,c,d){b=b|0;c=c|0;d=d|0;a[b+538>>0]=0;a[b+541>>0]=0;return}function aE(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0;k=l;l=l+16|0;e=k;i=b+560|0;j=(+h[d>>3]-+h[i>>3])/+h[b+520>>3];g=(+h[d+8>>3]-+h[b+568>>3])/+h[b+528>>3];if(!(+B(+j)<.0001&+B(+g)<.0001)){switch(a[b+541>>0]|0){case 0:{c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];gE(b,e);break}case 2:{f=+h[b+352>>3];if(!(c[b+360>>2]|0)){e=b+336|0;h[e>>3]=+h[e>>3]-j/f;e=b+344|0;h[e>>3]=+h[e>>3]-g/f}else{e=b+336|0;h[e>>3]=+h[e>>3]-g/f;e=b+344|0;h[e>>3]=+h[e>>3]+j/f}a[b+537>>0]=1;break}default:{}}c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2]}l=k;return}function bE(a,b,c){a=a|0;b=b|0;c=c|0;return}function cE(a){a=a|0;return}function dE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[b>>2]|0;if(d){d=aM(d,123632)|0;if(d|0){i=er(d,0)|0;LL(d)|0;f=5}}else{i=er(c[13853]|0,0)|0;f=5}if((f|0)==5?i|0:0){g=j+168|0;d=c[g>>2]|0;if(d|0){f=c[j+172>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h|0)!=0):0){gb[h&127](d);d=c[g>>2]|0}iw(d);ln(c[g>>2]|0)|0}So(i,0,122277,280,1);So(i,1,122241,304,1);So(i,2,122254,176,1);c[g>>2]=i;c[(c[i+16>>2]|0)+144>>2]=j;if((ls(j,i,e)|0)!=-1){c[b+580>>2]=0;c[b+576>>2]=0;a[b+537>>0]=1}}return}function eE(a,b){a=a|0;b=b|0;a=c[a>>2]|0;ls(a,c[a+168>>2]|0,b)|0;return}function fE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;f=g+160|0;e=c[f>>2]|0;if((e|0)!=0?(c[g+164>>2]|0)==0:0){i=g+192|0;h=c[i>>2]|0;c[f>>2]=0;c[i>>2]=0;f=h}else{f=0;e=0}ns(g,c[g+168>>2]|0,b,d)|0;if(e|0){i=c[a>>2]|0;c[i+160>>2]=e;c[i+192>>2]=f}return}function gE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0;f=l;l=l+80|0;e=f+48|0;g=f;m=f+32|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];hE(m,b,e);k=+h[m>>3];j=+h[m+8>>3];i=1.0/+h[b+352>>3];h[g+16>>3]=i+k;h[g+24>>3]=i+j;h[g>>3]=k-i;h[g+8>>3]=j-i;d=c[(c[b>>2]|0)+168>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];d=iE(d,e)|0;e=b+576|0;if((d|0)!=(c[e>>2]|0)){jE(b);c[e>>2]=d;kE(b);a[b+537>>0]=1}l=f;return}function hE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0;if(!(c[b+360>>2]|0)){e=+h[b+352>>3];f=+h[d+8>>3];g=e;i=b+528|0;e=+h[d>>3]/(+h[b+520>>3]*e)-+h[b+504>>3]}else{e=+h[b+352>>3];f=-+h[d>>3];g=e;i=b+520|0;e=+h[d+8>>3]/(+h[b+528>>3]*e)-+h[b+504>>3]}g=f/(+h[i>>3]*g)-+h[b+512>>3];h[a>>3]=e;h[a+8>>3]=g;return}function iE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g;e=co(a)|0;a:while(1){if(!e){e=9;break}d=Pm(a,e)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((DB(d,f)|0)<<24>>24){e=6;break a}d=Rm(a,d)|0}e=eo(a,e)|0}do if((e|0)!=6)if((e|0)==9){d=fo(a)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((AB(d,f)|0)<<24>>24){e=12;break}d=go(a,d)|0}if((e|0)==12)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];d=lE(a,f)|0;if(!d){d=a;break}else break}while(0);l=g;return d|0}function jE(b){b=b|0;var d=0;d=c[b+576>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{d=(c[d+16>>2]|0)+112|0;a[d>>0]=a[d>>0]&-2;break a}case 1:{d=(c[d+16>>2]|0)+117|0;a[d>>0]=a[d>>0]&-2;break a}case 2:{d=(c[d+16>>2]|0)+115|0;a[d>>0]=a[d>>0]&-2;break a}default:break a}while(0);c[b+584>>2]=0;return}function kE(b){b=b|0;var d=0,e=0;e=b+584|0;d=c[e>>2]|0;if(d|0){_I(d);c[e>>2]=0}d=c[b+576>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{b=(c[d+16>>2]|0)+112|0;a[b>>0]=a[b>>0]|1;b=ym(d,0,96229,0)|0;if(!b)break a;c[e>>2]=qw(Jm(d,b)|0,d)|0;break a}case 1:{b=(c[d+16>>2]|0)+117|0;a[b>>0]=a[b>>0]|1;b=ym(ro(d)|0,1,96229,0)|0;if(!b)break a;c[e>>2]=qw(Jm(d,b)|0,d)|0;break a}case 2:{b=(c[d+16>>2]|0)+115|0;a[b>>0]=a[b>>0]|1;b=ym(ro(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0,2,96229,0)|0;if(!b)break a;c[e>>2]=qw(Jm(d,b)|0,d)|0;break a}default:break a}while(0);return}function lE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+32|0;e=m;g=c[a+16>>2]|0;i=c[g+180>>2]|0;j=g+184|0;d=1;while(1){if((d|0)>(i|0)){k=4;break}f=c[(c[j>>2]|0)+(d<<2)>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];f=lE(f,e)|0;if(!f)d=d+1|0;else{a=f;break}}do if((k|0)==4){o=+h[g+24>>3];n=+h[g+40>>3];if(((+h[b+16>>3]>=+h[g+16>>3]?+h[g+32>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=o:0)?n>=+h[b+8>>3]:0)break;a=0}while(0);l=m;return a|0}function mE(b){b=b|0;var d=0,e=0,f=0;f=b+580|0;d=c[f>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]&-7|4;break a}case 1:{e=(c[d+16>>2]|0)+117|0;a[e>>0]=a[e>>0]&-7|4;break a}case 2:{e=(c[d+16>>2]|0)+115|0;a[e>>0]=a[e>>0]&-7|4;break a}default:break a}while(0);d=b+588|0;e=c[d>>2]|0;if(e|0){_I(e);c[d>>2]=0}d=c[b+576>>2]|0;c[f>>2]=d;b:do if(d|0)switch(Co(d)|0){case 0:{f=(c[d+16>>2]|0)+112|0;a[f>>0]=a[f>>0]|2;nE(b,d);break b}case 1:{f=(c[d+16>>2]|0)+117|0;a[f>>0]=a[f>>0]|2;oE(b,d);break b}case 2:{f=(c[d+16>>2]|0)+115|0;a[f>>0]=a[f>>0]|2;pE(b,d);break b}default:break b}while(0);return}function nE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+592|0;do if((so(b)|0)==(b|0))if(!(qn(b)|0)){Er(d,0,96286);break}else{Er(d,0,96278);break}else Er(d,0,96292);while(0);Er(d,1,Dn(b)|0);c[a+596>>2]=2;f=a+604|0;d=0;e=2;while(1){d=Dm(b,0,d)|0;if(!d)break;Er(f,e,c[d+8>>2]|0);Er(f,e+1|0,Jm(b,d)|0);Er(f,e+2|0,0);e=e+3|0}c[a+608>>2]=e;d=ym(b,0,96264,0)|0;if(!d){d=ym(b,0,96269,0)|0;if(d|0)g=11}else g=11;if((g|0)==11)c[a+588>>2]=qw(Jm(b,d)|0,b)|0;return}function oE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+592|0;Er(f,0,96273);Er(f,1,Dn(b)|0);c[a+596>>2]=2;f=a+604|0;g=so(ro(b)|0)|0;e=2;d=0;while(1){d=Dm(g,1,d)|0;if(!d)break;Er(f,e,c[d+8>>2]|0);Er(f,e|1,Jm(b,d)|0);e=e+2|0}c[a+608>>2]=e;d=ym(ro(b)|0,1,96264,0)|0;if(!d){d=ym(ro(b)|0,1,96269,0)|0;if(d|0)h=6}else h=6;if((h|0)==6)c[a+588>>2]=qw(Jm(b,d)|0,b)|0;return}function pE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=a+592|0;Er(h,0,96237);k=b+48|0;Er(h,1,Dn(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0);k=(qn(ro(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0)|0)!=0;Er(h,3,k?122546:122549);k=b+-48|0;Er(h,4,Dn(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0);c[a+596>>2]=7;i=a+604|0;j=so(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0)|0;g=7;d=0;a:while(1){while(1){d=Dm(j,2,d)|0;if(!d)break a;e=d+8|0;f=c[e>>2]|0;if(!(xJ(f,96242)|0)){l=5;break}if(!(xJ(f,96251)|0)){l=7;break}if(xJ(f,96260)|0)break;Er(h,6,Jm(b,d)|0)}if((l|0)==5){l=0;Er(h,2,Jm(b,d)|0)}else if((l|0)==7){l=0;Er(h,5,Jm(b,d)|0)}Er(i,g,c[e>>2]|0);Er(i,g+1|0,Jm(b,d)|0);g=g+2|0}c[a+608>>2]=g;d=ym(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,96264,0)|0;if(!d){d=ym(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,96269,0)|0;if(d|0)l=13}else l=13;if((l|0)==13)c[a+588>>2]=qw(Jm(b,d)|0,b)|0;return}function qE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=rE(a,b,c[d>>2]|0)|0;d=c[d+4>>2]|0;while(1){f=c[d+4>>2]|0;if(!f)break;b=0;while(1){e=c[f+(b*20|0)+4>>2]|0;if(!e)break;Hr(a,c[d>>2]|0,e,c[f+(b*20|0)+8>>2]|0,g,f+(b*20|0)|0)|0;b=b+1|0}d=d+8|0}return}function rE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=ww(12)|0;if(!b)b=0;else b=GL(b)|0;c[e+4>>2]=b;c[e+8>>2]=GL(d)|0;d=a+100|0;c[e>>2]=c[d>>2];c[d>>2]=e;return e|0}function sE(b,c){b=b|0;c=c|0;tE(b);a[b+44>>0]=0;uE(b)|0;tA(b)|0;return}function tE(b){b=b|0;var d=0,e=0;d=c[b+32>>2]|0;a:do if(d|0)while(1){e=c[d>>2]|0;if(!e)break a;if((a[e>>0]|0)==103?hL(e,96301)|0:0)qE(b,0,c[d+4>>2]|0);d=d+8|0}while(0);return}function uE(a){a=a|0;var b=0;b=Jr(a,2,96314)|0;if(!b)a=999;else{c[a+148>>2]=c[(c[b+16>>2]|0)+12>>2];a=300}return a|0}function vE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+148>>2]|0;if((a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)a=ab[e&63](b,d)|0;else a=0;return a|0}function wE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function xE(a){a=a|0;var b=0.0,d=0.0;a=c[a+16>>2]|0;d=+h[a+16>>3];b=+h[a+24>>3];return (yE(~~(d>b?d:b)>>>0)|0)+1|0}function yE(a){a=a|0;var b=0,c=0;if(!a)a=-1;else{c=a>>>0>65535;a=c?a>>>16:a;c=c?16:0;b=a>>>0>255;a=b?a>>>8:a;c=b?c|8:c;b=a>>>0>15;a=b?a>>>4:a;c=b?c|4:c;b=a>>>0>3;a=(b?c|2:c)+((b?a>>>2:a)>>>0>1&1)|0}return a|0}function zE(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;q=r;p=AE(b,d,e,f,g)|0;e=BE(p)|0;if((e|0)>=0){n=q+16|0;o=q+24|0;m=q+8|0;k=g+32|0;e=0;g=0;while(1){if((g|0)>=(d|0))break;f=b+(g*40|0)+32|0;do if(c[f>>2]|0){CE(q,p,b+(g*40|0)|0);i=+h[n>>3];j=+h[o>>3];if(!(c[q>>2]|0)){a[(c[f>>2]|0)+36>>0]=1;break}if(+h[m>>3]==0.0){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1;break}if((a[k>>0]|0)==1){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1}else e=1}while(0);g=g+1|0}DE(p)}l=r;return e|0}function AE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=vw(28)|0;j=Ql(24896,c[4348]|0)|0;h=g+20|0;c[h>>2]=j;do if(j){j=jH()|0;c[g+24>>2]=j;if(!j){XL(96532,14,1,c[13918]|0)|0;i=6;break}else{c[g>>2]=a;c[g+4>>2]=b;c[g+8>>2]=d;c[g+12>>2]=e;c[g+16>>2]=f;break}}else{XL(96532,14,1,c[13918]|0)|0;i=6}while(0);if((i|0)==6){a=c[h>>2]|0;if(a|0)Kl(a)|0;a=c[g+24>>2]|0;if(a|0)lH(a)|0;_I(g);g=0}return g|0}function BE(a){a=a|0;var b=0;b=ME(a)|0;if((b|0)>=0){NE(a);OE(a);b=Kl(c[a+20>>2]|0)|0}return b|0}function CE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0;M=l;l=l+464|0;J=M+416|0;L=M+400|0;G=M+384|0;m=M+352|0;n=M+320|0;o=M+288|0;p=M+256|0;r=M+224|0;s=M+192|0;t=M+160|0;u=M+128|0;v=M+96|0;x=M+64|0;y=M+32|0;H=M;z=c[d+32>>2]|0;e=+h[z>>3];C=d+16|0;A=(e*2.0+ +h[C>>3])*.125;D=z+8|0;I=d+24|0;i=+h[I>>3];K=(+h[D>>3]*2.0+i)*.5;if(!z)ma(96325,96335,445,96345);f=J;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));B=z+16|0;h[B>>3]=+h[d>>3]-e;E=d+8|0;F=z+24|0;h[F>>3]=i+ +h[E>>3];EE(m,b,d,J);j=c[m>>2]|0;f=c[m+4>>2]|0;e=+h[m+8>>3];m=m+16|0;c[L>>2]=c[m>>2];c[L+4>>2]=c[m+4>>2];c[L+8>>2]=c[m+8>>2];c[L+12>>2]=c[m+12>>2];a:do if(!j){c[a>>2]=0;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}else{h[F>>3]=+h[E>>3];EE(n,b,d,J);g=c[n>>2]|0;m=c[n+4>>2]|0;i=+h[n+8>>3];n=n+16|0;c[G>>2]=c[n>>2];c[G+4>>2]=c[n+4>>2];c[G+8>>2]=c[n+8>>2];c[G+12>>2]=c[n+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=m;e=i}else g=j;h[F>>3]=+h[E>>3]-+h[D>>3];EE(o,b,d,J);m=c[o>>2]|0;j=c[o+4>>2]|0;i=+h[o+8>>3];o=o+16|0;c[G>>2]=c[o>>2];c[G+4>>2]=c[o+4>>2];c[G+8>>2]=c[o+8>>2];c[G+12>>2]=c[o+12>>2];if(!m){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else m=g;h[B>>3]=+h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];EE(p,b,d,J);g=c[p>>2]|0;j=c[p+4>>2]|0;i=+h[p+8>>3];p=p+16|0;c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];EE(r,b,d,J);g=c[r>>2]|0;j=c[r+4>>2]|0;i=+h[r+8>>3];r=r+16|0;c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[B>>3]=+h[C>>3]+ +h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];EE(s,b,d,J);g=c[s>>2]|0;j=c[s+4>>2]|0;i=+h[s+8>>3];s=s+16|0;c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3];EE(t,b,d,J);g=c[t>>2]|0;j=c[t+4>>2]|0;i=+h[t+8>>3];t=t+16|0;c[G>>2]=c[t>>2];c[G+4>>2]=c[t+4>>2];c[G+8>>2]=c[t+8>>2];c[G+12>>2]=c[t+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];EE(u,b,d,J);g=c[u>>2]|0;j=c[u+4>>2]|0;i=+h[u+8>>3];u=u+16|0;c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else g=m;j=(c[J+28>>2]|0)==0;do if(!(c[J+24>>2]|0))if(j){if(c[J+32>>2]|0){w=38;break}if(!((c[J+12>>2]|0)==0&(c[J>>2]|0)==0))w=38}else w=46;else if(j)w=38;else w=46;while(0);b:do if((w|0)==38)if(!(c[J+32>>2]|0)){h[B>>3]=+h[d>>3]-+h[z>>3];p=v+4|0;r=v+8|0;s=v+16|0;m=F;j=E;i=+h[I>>3];c:while(1){while(1){h[m>>3]=+h[j>>3]+i;if(!(+h[B>>3]<=+h[C>>3]+ +h[d>>3])){w=46;break b}EE(v,b,d,J);n=c[v>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break c;if(k<e)break;else{m=B;j=B;i=A}}c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}else w=46;while(0);d:do if((w|0)==46)if((c[J+12>>2]|0)==0&(c[J>>2]|0)==0){h[B>>3]=+h[d>>3]-+h[z>>3];k=+h[E>>3];n=x+4|0;o=x+8|0;p=x+16|0;i=k;k=+h[I>>3]+k;while(1){h[F>>3]=k;if(!(k>=i-+h[D>>3]))break d;EE(x,b,d,J);j=c[x>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}i=+h[E>>3];k=+h[F>>3]-K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);i=+h[d>>3];k=+h[C>>3]+i;h[B>>3]=k;q=+h[D>>3];h[F>>3]=+h[E>>3]-q;j=c[J+4>>2]|0;do if(!(c[J+8>>2]|0)){m=c[J>>2]|0;if(!((j|0)==0&(m|0)==0)){w=59;break}if(c[J+20>>2]|0){j=0;m=0;w=59;break}if(c[J+32>>2]|0){j=0;m=0;w=59}}else{m=c[J>>2]|0;w=59}while(0);e:do if((w|0)==59){f:do if((j|0)==0&(m|0)==0){h[B>>3]=k;p=y+4|0;r=y+8|0;s=y+16|0;m=F;j=E;i=q;g:while(1){while(1){h[m>>3]=+h[j>>3]-i;i=+h[d>>3];if(!(+h[B>>3]>=i-+h[z>>3]))break f;EE(y,b,d,J);n=c[y>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break g;if(k<e)break;else{m=B;j=B;i=A}}c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);if(c[J+20>>2]|0)break;if(c[J+32>>2]|0)break;h[B>>3]=+h[C>>3]+i;i=+h[E>>3];n=H+4|0;o=H+8|0;p=H+16|0;k=i;i=i-+h[D>>3];while(1){h[F>>3]=i;if(!(i<=+h[I>>3]+k))break e;EE(H,b,d,J);j=c[H>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}k=+h[E>>3];i=+h[F>>3]+K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}while(0);l=M;return}function DE(a){a=a|0;lH(c[a+24>>2]|0)|0;_I(a);return}function EE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;s=t+16|0;p=t;g=c[e+32>>2]|0;if(!g)ma(96325,96335,382,96354);o=g+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=d+4|0;m=0;g=0;while(1){if((m|0)>=(c[o>>2]|0))break;j=c[d>>2]|0;k=j+(m*40|0)|0;do if((k|0)!=(e|0)){if(+h[j+(m*40|0)+16>>3]>0.0?+h[j+(m*40|0)+24>>3]>0.0:0)break;g=g+((FE(e,k)|0)!=0&1)|0}while(0);m=m+1|0}GE(e,q);m=c[d+24>>2]|0;m=nH(m,c[m>>2]|0,q)|0;if(!m){c[b>>2]=g;h[b+8>>3]=0.0;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}else{k=m;i=0.0;while(1){if(!k)break;j=c[(c[k+4>>2]|0)+16>>2]|0;if((j|0)!=(e|0)){HE(j,s);n=+IE(q,s);if(n>0.0){g=g+1|0;i=+JE(e,j,q,n,f)+i}d=c[j+32>>2]|0;if(((d|0)!=0?(a[d+36>>0]|0)!=0:0)?(GE(j,s),r=+IE(q,s),r>0.0):0){g=g+1|0;i=+KE(e,j,q,r,f)+i}}k=c[k>>2]|0}iH(m);c[b>>2]=g;h[b+8>>3]=i;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}l=t;return}function FE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0;a=c[a+32>>2]|0;if(+h[b+16>>3]==0.0?+h[b+24>>3]==0.0:0){if((((a|0)!=0?(d=+h[b>>3],e=+h[a+16>>3],d>e):0)?d<+h[a>>3]+e:0)?(f=+h[b+8>>3],g=+h[a+24>>3],f>g):0)a=f<+h[a+8>>3]+g&1;else a=0;return a|0}ma(96391,96335,219,96428);return 0}function GE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a+32>>2]|0;e=+h[a+16>>3];c[b>>2]=~~e;d=+h[a+24>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a>>3]+e);c[b+12>>2]=~~(+h[a+8>>3]+d);return}function HE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;e=+h[a>>3];c[b>>2]=~~e;d=+h[a+8>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a+16>>3]+e);c[b+12>>2]=~~(+h[a+24>>3]+d);return}function IE(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=c[a+8>>2]|0;j=c[b>>2]|0;if((((i|0)>=(j|0)?(k=c[a>>2]|0,l=c[b+8>>2]|0,(k|0)<=(l|0)):0)?(e=c[a+12>>2]|0,f=c[b+4>>2]|0,(e|0)>=(f|0)):0)?(g=c[a+4>>2]|0,h=c[b+12>>2]|0,(g|0)<=(h|0)):0)d=(+(c[((e|0)<(h|0)?a:b)+12>>2]|0)-+(c[((g|0)>(f|0)?a:b)+4>>2]|0))*(+(c[((i|0)<(l|0)?a:b)+8>>2]|0)-+(c[((k|0)>(j|0)?a:b)>>2]|0));else d=0.0;return +d}function JE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=LE(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{HE(a,i);g=+IE(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(GE(a,i),h=+IE(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function KE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=LE(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{HE(a,i);g=+IE(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(GE(a,i),h=+IE(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function LE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=c[b+32>>2]|0;f=c[d+32>>2]|0;if((e|0)==(f|0))ma(96370,96335,276,96380);do if((a[e+36>>0]|0)!=0?(a[f+36>>0]|0)!=0:0){j=+h[b>>3];if(j==0.0?+h[b+8>>3]==0.0:0){e=-1;break}k=+h[d>>3];i=+h[d+8>>3];if(!(k==0.0&i==0.0)){g=+h[b+8>>3];if(i<g){if(k<j){e=0;break}e=k>j?2:1;break}e=k<j;if(i>g){if(e){e=6;break}e=k>j?8:7;break}if(!e)if(k>j)e=5;else e=-1;else e=3}else e=-1}else e=-1;while(0);return e|0}function ME(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+32|0;d=k+24|0;e=k+16|0;f=k;g=xE(a)|0;h=a+4|0;i=e+4|0;j=a+20|0;b=0;while(1){if((b|0)>=(c[h>>2]|0)){b=0;break}m=vw(32)|0;o=(c[a>>2]|0)+(b*40|0)|0;n=m+12|0;c[m+28>>2]=o;PE(f,o);c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];n=c[n>>2]|0;c[e>>2]=(((c[m+20>>2]|0)-n|0)/2|0)+n;n=c[m+16>>2]|0;c[i>>2]=(((c[m+24>>2]|0)-n|0)/2|0)+n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[m+8>>2]=QE(d,g)|0;n=c[j>>2]|0;if(!(bb[c[n>>2]&31](n,m,1)|0)){b=-1;break}else b=b+1|0}l=k;return b|0}function NE(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;e=c[d>>2]|0;b=a+24|0;a=bb[c[e>>2]&31](e,0,128)|0;while(1){if(!a)break;e=c[b>>2]|0;oH(e,a+12|0,c[a+28>>2]|0,e,0)|0;e=c[d>>2]|0;a=bb[c[e>>2]&31](e,a,8)|0}return}function OE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a+20|0;f=Sl(c[e>>2]|0)|0;d=0;while(1){if(!(Sl(c[e>>2]|0)|0))break;g=c[e>>2]|0;a=c[(c[g+8>>2]|0)+4>>2]|0;if(!a){h=8;break}b=c[(c[g+4>>2]|0)+8>>2]|0;if((b|0)<0)a=c[a+8>>2]|0;else a=a+(0-b)|0;if(!a){h=8;break}bb[c[g>>2]&31](g,a,4096)|0;_I(a);d=d+1|0}if((h|0)==8)ma(96441,96335,616,96444);if((f|0)==(d|0))return;else ma(96456,96335,623,96444)}function PE(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0.0;d=c[b+32>>2]|0;if(!d){e=0.0;f=0.0}else{e=+h[d>>3];f=+h[d+8>>3]}l=+h[b>>3];k=~~+A(+(l-e));g=+h[b+8>>3];j=~~+A(+(g-f));i=~~+N(+(l+e+ +h[b+16>>3]));if((i|0)==2147483647)ma(96468,96335,264,96495);d=~~+N(+(g+f+ +h[b+24>>3]));if((d|0)==2147483647)ma(96505,96335,266,96495);else{c[a>>2]=k;c[a+4>>2]=j;c[a+8>>2]=i;c[a+12>>2]=d;return}}function QE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=0;e=c[a>>2]|0;d=c[a+4>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;i=e>>>a&1;b=d>>>a&1;g=b+-1|0;h=g&(e^d);g=g&0-i;f=i<<1|f<<2|i^b;b=a;e=h^e^g;d=h^d^g}return f|0}function RE(b){b=b|0;var d=0,e=0,f=0,g=0;d=rJ(b)|0;if(d>>>0>=(c[42408]|0)>>>0){d=d+11|0;c[42408]=d;d=yw(c[42409]|0,d)|0;c[42409]=d;if(!d)d=0;else e=4}else{d=c[42409]|0;e=4}if((e|0)==4){g=d;while(1){e=a[b>>0]|0;if(!(e<<24>>24))break;f=e&255;if(kK(f)|0)e=(jK(f)|0)&255;a[g>>0]=e;g=g+1|0;b=b+1|0}a[g>>0]=0}return d|0}function SE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;F=l;l=l+144|0;s=F+96|0;p=F+80|0;v=F+124|0;t=F+72|0;w=F+64|0;x=F+56|0;C=F+48|0;D=F+40|0;E=F+32|0;y=F+24|0;z=F+16|0;A=F+8|0;B=F;i=F+120|0;m=F+116|0;n=F+112|0;o=F+108|0;c[e+32>>2]=f;r=b;while(1)if((a[r>>0]|0)==32)r=r+1|0;else break;c[o>>2]=255;b=a[r>>0]|0;a:do if(b<<24>>24==35){c[p>>2]=i;c[p+4>>2]=m;c[p+8>>2]=n;c[p+12>>2]=o;if((cM(r,96547,p)|0)<=2){b=a[r>>0]|0;q=12;break}switch(f|0){case 0:{G=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=G;g=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=g;j=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=j;k=+((c[o>>2]|0)>>>0)*.00392156862745098;TE(G,g,j,t,w,x);h[e>>3]=+h[t>>3];h[e+8>>3]=+h[w>>3];h[e+16>>3]=+h[x>>3];h[e+24>>3]=k;b=0;break a}case 1:{a[e>>0]=c[i>>2];a[e+1>>0]=c[m>>2];a[e+2>>0]=c[n>>2];a[e+3>>0]=c[o>>2];b=0;break a}case 3:{j=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=j;k=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=k;G=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=G;UE(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break a}case 2:{c[e>>2]=(((c[i>>2]|0)*65535|0)>>>0)/255|0;c[e+4>>2]=(((c[m>>2]|0)*65535|0)>>>0)/255|0;c[e+8>>2]=(((c[n>>2]|0)*65535|0)>>>0)/255|0;c[e+12>>2]=(((c[o>>2]|0)*65535|0)>>>0)/255|0;b=0;break a}case 4:{h[e>>3]=+((c[i>>2]|0)>>>0)*.00392156862745098;h[e+8>>3]=+((c[m>>2]|0)>>>0)*.00392156862745098;h[e+16>>3]=+((c[n>>2]|0)>>>0)*.00392156862745098;h[e+24>>3]=+((c[o>>2]|0)>>>0)*.00392156862745098;b=0;break a}default:{b=0;break a}}}else q=12;while(0);b:do if((q|0)==12){if(!(b<<24>>24!=46?((b&255)+-48|0)>>>0>=10:0)){b=rJ(r)|0;if(b>>>0>=(c[42410]|0)>>>0){b=b+11|0;c[42410]=b;b=yw(c[42411]|0,b)|0;c[42411]=b;if(!b){b=-1;break}}else b=c[42411]|0;m=b;i=r;c:while(1){n=i+1|0;i=a[i>>0]|0;switch(i<<24>>24){case 0:break c;case 44:{i=32;break}default:{}}a[m>>0]=i;m=m+1|0;i=n}a[m>>0]=0;c[s>>2]=t;c[s+4>>2]=w;c[s+8>>2]=x;if((cM(b,96561,s)|0)==3){k=+h[t>>3];k=k<1.0?k:1.0;k=k>0.0?k:0.0;h[t>>3]=k;j=+h[w>>3];j=j<1.0?j:1.0;j=j>0.0?j:0.0;h[w>>3]=j;g=+h[x>>3];g=g<1.0?g:1.0;g=g>0.0?g:0.0;h[x>>3]=g;switch(f|0){case 0:{h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=g;h[e+24>>3]=1.0;b=0;break b}case 1:{VE(k,j,g,C,D,E);a[e>>0]=~~(+h[C>>3]*255.0);a[e+1>>0]=~~(+h[D>>3]*255.0);a[e+2>>0]=~~(+h[E>>3]*255.0);a[e+3>>0]=-1;b=0;break b}case 3:{VE(k,j,g,C,D,E);UE(+h[C>>3],+h[D>>3],+h[E>>3],y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{VE(k,j,g,C,D,E);c[e>>2]=~~(+h[C>>3]*65535.0);c[e+4>>2]=~~(+h[D>>3]*65535.0);c[e+8>>2]=~~(+h[E>>3]*65535.0);c[e+12>>2]=65535;b=0;break b}case 4:{VE(k,j,g,C,D,E);h[e>>3]=+h[C>>3];h[e+8>>3]=+h[D>>3];h[e+16>>3]=+h[E>>3];h[e+24>>3]=1.0;b=0;break b}default:{b=0;break b}}}}i=WE(r)|0;c[v>>2]=i;if(!i)b=-1;else{b=c[42412]|0;if(!(((b|0)!=0?(u=c[b>>2]|0,(a[u>>0]|0)==(a[i>>0]|0)):0)?(xJ(u,i)|0)==0:0)){b=vM(v,24932,2491,12,38)|0;c[42412]=b;if(!b)switch(f|0){case 0:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}case 1:{a[e+2>>0]=0;a[e+1>>0]=0;a[e>>0]=0;a[e+3>>0]=-1;b=1;break b}case 3:{c[e>>2]=0;b=1;break b}case 2:{c[e+8>>2]=0;c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=65535;b=1;break b}case 4:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}default:{b=1;break b}}}switch(f|0){case 0:{h[e>>3]=+(d[b+4>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+5>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+6>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}case 1:{a[e>>0]=a[b+7>>0]|0;a[e+1>>0]=a[b+8>>0]|0;a[e+2>>0]=a[b+9>>0]|0;a[e+3>>0]=a[b+10>>0]|0;b=0;break b}case 3:{j=+(d[b+7>>0]|0)*.00392156862745098;h[C>>3]=j;k=+(d[b+8>>0]|0)*.00392156862745098;h[D>>3]=k;G=+(d[b+9>>0]|0)*.00392156862745098;h[E>>3]=G;UE(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{c[e>>2]=(d[b+7>>0]|0)*257;c[e+4>>2]=(d[b+8>>0]|0)*257;c[e+8>>2]=(d[b+9>>0]|0)*257;c[e+12>>2]=(d[b+10>>0]|0)*257;b=0;break b}case 4:{h[e>>3]=+(d[b+7>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+8>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+9>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}default:{b=0;break b}}}}while(0);l=F;return b|0}function TE(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;i=b<c?b:c;m=b>c?b:c;m=m<a?a:m;i=m-(i>a?a:i);g=i/m;if(m>0.0)if(g>0.0){j=(m-a)/i;k=(m-b)/i;l=(m-c)/i;do if(!(m==a)){if(m==b){a=j+2.0-l;break}if(m==c)a=k+4.0-j;else a=0.0}else a=(b-c)/i;while(0);a=a*60.0;if(a<0.0)a=a+360.0}else a=0.0;else{g=0.0;a=0.0}h[d>>3]=a*.002777777777777778;h[f>>3]=m;h[e>>3]=g;return}function UE(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h[d>>3]=1.0-a;h[e>>3]=1.0-b;h[f>>3]=1.0-c;b=+h[d>>3];c=+h[e>>3];c=b<c?b:c;h[g>>3]=c;b=+h[f>>3];c=b<c?b:c;h[g>>3]=c;h[d>>3]=+h[d>>3]-c;h[e>>3]=+h[e>>3]-+h[g>>3];h[f>>3]=+h[f>>3]-+h[g>>3];return}function VE(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0,l=0;a:do if(!(b<=0.0)){i=!(a>=1.0)?a*6.0:0.0;l=~~i;i=i-+(l|0);a=(1.0-b)*c;j=(1.0-i*b)*c;b=(1.0-(1.0-i)*b)*c;switch(l|0){case 0:{g=a;i=b;a=c;k=8;break a}case 1:{g=a;i=c;a=j;k=8;break a}case 2:{g=b;i=c;k=8;break a}case 3:{g=c;i=j;k=8;break a}case 4:{g=c;i=a;a=b;k=8;break a}case 5:{g=j;i=a;a=c;k=8;break a}default:break a}}else{g=c;i=c;a=c;k=8}while(0);if((k|0)==8){h[d>>3]=a;h[e>>3]=i;h[f>>3]=g}return}function WE(b){b=b|0;var d=0,e=0;d=a[b>>0]|0;if(((d<<24>>24!=98?(e=b+1|0,!(d<<24>>24==119|(VJ(e,122058,4)|0)==0)):0)?!(d<<24>>24==108|(VJ(e,122063,4)|0)==0):0)?(VJ(e,122068,8)|0)!=0:0){do if(d<<24>>24==47){d=WJ(e,47)|0;if(!d)b=e;else{if((a[e>>0]|0)!=47){e=(pK(122077,e,4)|0)==0;b=e?d+1|0:b;break}d=c[42413]|0;if((d|0?a[d>>0]|0:0)?pK(122077,d,3)|0:0){b=YE(d,b+2|0)|0;break}b=b+2|0}}else{d=c[42413]|0;if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(pK(122077,d,3)|0)!=0:0)b=YE(d,b)|0}while(0);b=RE(b)|0}return b|0}function XE(a,b){a=a|0;b=b|0;return iK(c[a>>2]|0,c[b>>2]|0)|0}function YE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;g=rJ(a)|0;g=(rJ(b)|0)+g|0;d=g+13|0;if((g+3|0)>>>0<(c[42414]|0)>>>0)d=c[42415]|0;else{c[42414]=d;d=yw(c[42415]|0,d)|0;c[42415]=d}c[e>>2]=a;c[e+4>>2]=b;pL(d,122082,e)|0;l=f;return c[42415]|0}function ZE(a){a=a|0;c[42413]=a;return}function _E(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0;f=l;l=l+208|0;g=f;$E(g,+h[a>>3],+h[a+8>>3],b,c,d,e);a=aF(g)|0;l=f;return a|0}function $E(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var i=0,j=0;h[a>>3]=b;h[a+8>>3]=c;j=a+16|0;h[j>>3]=d;i=a+24|0;h[i>>3]=e;h[a+32>>3]=0.0;c=+K(+(+F(+f)/e),+(+E(+f)/d));h[a+56>>3]=c;e=+K(+(+F(+g)/e),+(+E(+g)/d));h[a+40>>3]=1.0;h[a+48>>3]=0.0;e=e-+A(+((e-c)*.15915494309189535))*6.283185307179586;h[a+64>>3]=g-f>3.141592653589793&e-c<3.141592653589793?e+6.283185307179586:e;gF(a);hF(a);iF(a);g=+h[j>>3];g=(g-+h[i>>3])/g;h[a+168>>3]=g;h[a+176>>3]=(2.0-g)*g;g=1.0-g;h[a+184>>3]=g;h[a+192>>3]=g*g;return}function aF(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=vw(8)|0;f=+h[a+56>>3];e=+h[a+64>>3]-f;p=1;b=0;while(1){o=e/+(p|0);if(!(b<<24>>24==0&(p|0)<1024))break;a:do if(!(o<=1.5707963267948966))b=0;else{c=f;d=0;b=1;while(1){if(!(b<<24>>24!=0&(d|0)<(p|0)))break a;n=c+o;b=+bF(a,c,n)<=1.0e-05&1;c=n;d=d+1|0}}while(0);p=p<<1}i=+E(+f);u=+F(+f);d=a+16|0;s=+h[d>>3];v=s*i;j=a+24|0;c=+h[j>>3];g=c*u;i=c*i;c=+h[a>>3];k=a+40|0;t=+h[k>>3];l=a+48|0;r=+h[l>>3];e=t*v+c-r*g;m=a+8|0;n=+h[m>>3];g=r*v+t*g+n;s=-(u*s);cF(q,c,n);dF(q,e,g);n=+G(+(o*.5));n=+F(+o)*.3333333333333333*(+C(+(n*n*3.0+4.0))+-1.0);c=f;f=g;g=r*s+t*i;i=t*s-r*i;b=0;while(1){if((b|0)>=(p|0))break;r=c+o;u=+E(+r);v=+F(+r);x=+h[d>>3];z=x*u;w=+h[j>>3];t=w*v;u=w*u;w=+h[k>>3];y=+h[l>>3];s=w*z+ +h[a>>3]-y*t;t=y*z+w*t+ +h[m>>3];x=-(v*x);v=w*x-y*u;u=y*x+w*u;eF(q,e+i*n,f+g*n,s-v*n,t-u*n,s,t);c=r;e=s;f=t;g=u;i=v;b=b+1|0}fF(q);return q|0}function bF(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;d=c+b;i=+h[a+16>>3];e=+h[a+24>>3]/i;g=+E(+d);f=+E(+(d*2.0));d=+E(+(d*3.0));a=e<.25?10328:10584;return +(((e*.001+4.98)*e+.207)/(e+.0067)*i*+L(+(((+h[a+32>>3]*e+ +h[a+40>>3])*e+ +h[a+48>>3])/(+h[a+56>>3]+e)*g+((+h[a>>3]*e+ +h[a+8>>3])*e+ +h[a+16>>3])/(+h[a+24>>3]+e)+((+h[a+64>>3]*e+ +h[a+72>>3])*e+ +h[a+80>>3])/(+h[a+88>>3]+e)*f+((+h[a+96>>3]*e+ +h[a+104>>3])*e+ +h[a+112>>3])/(+h[a+120>>3]+e)*d+(((+h[a+160>>3]*e+ +h[a+168>>3])*e+ +h[a+176>>3])/(+h[a+184>>3]+e)*g+((+h[a+128>>3]*e+ +h[a+136>>3])*e+ +h[a+144>>3])/(+h[a+152>>3]+e)+((+h[a+192>>3]*e+ +h[a+200>>3])*e+ +h[a+208>>3])/(+h[a+216>>3]+e)*f+((+h[a+224>>3]*e+ +h[a+232>>3])*e+ +h[a+240>>3])/(+h[a+248>>3]+e)*d)*(c-b))))}function cF(a,b,d){a=a|0;b=+b;d=+d;var e=0;c[42416]=100;e=vw(1600)|0;c[a>>2]=e;h[e>>3]=b;h[e+8>>3]=d;c[a+4>>2]=1;return}function dF(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;f=c[a>>2]|0;e=(c[a+4>>2]|0)+-1|0;eF(a,+h[f+(e<<4)>>3],+h[f+(e<<4)+8>>3],b,d,b,d);return}function eF(a,b,d,e,f,g,i){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;i=+i;var j=0,k=0,l=0,m=0;l=a+4|0;j=c[l>>2]|0;k=c[42416]|0;if((j+3|0)<(k|0))a=c[a>>2]|0;else{c[42416]=k<<1;j=aJ(c[a>>2]|0,k<<5)|0;c[a>>2]=j;a=j;j=c[l>>2]|0}h[a+(j<<4)>>3]=b;m=j+1|0;h[a+(j<<4)+8>>3]=d;h[a+(m<<4)>>3]=e;k=j+2|0;h[a+(m<<4)+8>>3]=f;h[a+(k<<4)>>3]=g;c[l>>2]=j+3;h[a+(k<<4)+8>>3]=i;return}function fF(a){a=a|0;var b=0;b=c[a>>2]|0;dF(a,+h[b>>3],+h[b+8>>3]);c[a>>2]=aJ(c[a>>2]|0,c[a+4>>2]<<4)|0;c[42416]=0;return}function gF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;d=+h[a+16>>3];b=+h[a+24>>3];b=+C(+(d*d-b*b));d=b*+h[a+40>>3];b=b*+h[a+48>>3];e=+h[a>>3];h[a+104>>3]=e-d;c=+h[a+8>>3];h[a+112>>3]=c-b;h[a+120>>3]=e+d;h[a+128>>3]=c+b;return}function hF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;d=+h[a+16>>3];i=+h[a+56>>3];j=+E(+i)*d;b=+h[a+24>>3];i=+F(+i)*b;g=+h[a+64>>3];d=+E(+g)*d;b=+F(+g)*b;g=+h[a>>3];c=+h[a+40>>3];e=+h[a+48>>3];h[a+72>>3]=c*j+g-e*i;f=+h[a+8>>3];h[a+80>>3]=e*j+f+c*i;h[a+88>>3]=g+c*d-e*b;h[a+96>>3]=f+e*d+c*b;return}function iF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0;k=+h[a+24>>3];l=+h[a+16>>3];e=k/l;m=+h[a+48>>3];n=+B(+m)<.1;j=+h[a+40>>3];do if(n){b=m/j;c=+J(+(b*e));d=-c;if(j<0.0){b=+J(+(b/e));e=d;d=3.141592653589793-c;c=4.71238898038469-b;b=1.5707963267948966-b;break}else{b=+J(+(b/e));e=-3.141592653589793-c;c=1.5707963267948966-b;b=-1.5707963267948966-b;break}}else{b=j/m;c=+J(+(b/e));d=c+1.5707963267948966;if(m<0.0){b=+J(+(b*e));e=c+-1.5707963267948966;c=b+3.141592653589793;break}else{b=+J(+(b*e));e=d;d=c+4.71238898038469;c=b;b=b+-3.141592653589793;break}}while(0);g=+h[a+56>>3];e=e-+A(+((e-g)*.15915494309189535))*6.283185307179586;b=b-+A(+((b-g)*.15915494309189535))*6.283185307179586;f=d-+A(+((d-g)*.15915494309189535))*6.283185307179586;g=c-+A(+((c-g)*.15915494309189535))*6.283185307179586;i=+h[a+64>>3];if(!(e<=i)){e=+h[a+72>>3];c=+h[a+88>>3];c=e<c?e:c}else c=+E(+e)*l*j+ +h[a>>3]-k*+F(+e)*m;h[a+136>>3]=c;if(!(b<=i)){e=+h[a+80>>3];d=+h[a+96>>3];d=e<d?e:d}else d=+E(+b)*l*m+ +h[a+8>>3]+ +F(+b)*k*j;h[a+144>>3]=d;if(!(f<=i)){f=+h[a+72>>3];b=+h[a+88>>3];b=f>b?f:b}else b=+E(+f)*l*j+ +h[a>>3]-k*+F(+f)*m;h[a+152>>3]=b-c;if(!(g<=i)){m=+h[a+80>>3];b=+h[a+96>>3];b=m>b?m:b}else b=+E(+g)*l*m+ +h[a+8>>3]+ +F(+g)*k*j;h[a+160>>3]=b-d;return}function jF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+80|0;m=n;kF(b);k=+h[e+56>>3];g=+h[e+64>>3];switch(a[e+80>>0]|0){case 116:{g=(+h[e+48>>3]-+lF(d))*.5+g;f=4;break}case 98:{g=g-(+h[e+48>>3]-+lF(d))*.5;f=4;break}default:{}}if((f|0)==4)g=g+-1.0;h[m>>3]=k;h[m+8>>3]=g;c[m+20>>2]=c[e+8>>2];c[m+16>>2]=c[e+4>>2];h[m+32>>3]=+h[e+16>>3];j=b+16|0;f=Im(c[(c[j>>2]|0)+8>>2]|0,122089)|0;e=m+56|0;c[e>>2]=f;i=m+60|0;c[i>>2]=c[(c[j>>2]|0)+212>>2];j=m+64|0;a[j>>0]=0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))c[e>>2]=122100;if((a[d+4>>0]|0)==1){e=c[d>>2]|0;FD(b,c[(c[b>>2]|0)+336>>2]|0);f=c[e+24>>2]|0;if(!f)BD(b,122106);else BD(b,f);nF(b,e,m);if(a[j>>0]|0)_I(c[i>>2]|0)}else mF(b,c[d>>2]|0,m);oF(b);l=n;return}function kF(a){a=a|0;var d=0,e=0,f=0;d=Vt(a)|0;e=c[d>>2]|0;a=c[e+4>>2]|0;c[d+4>>2]=a;c[d+12>>2]=c[e+12>>2];switch(a|0){case 2:{a=e+8|0;f=6;break}case 0:{a=e+8|0;f=6;break}case 1:{a=e+8|0;f=6;break}case 3:{a=e+8|0;f=6;break}default:{}}if((f|0)==6)c[d+8>>2]=c[a>>2];c[d+208>>2]=c[e+208>>2];c[d+228>>2]=c[e+228>>2];c[d+244>>2]=c[e+244>>2];f=d+260|0;b[f>>1]=b[f>>1]&-2|b[e+260>>1]&1;return}function lF(b){b=b|0;var d=0.0,e=0,f=0;switch(a[b+4>>0]|0){case 1:{e=c[b>>2]|0;b=e+72|0;e=e+56|0;f=5;break}case 3:{e=c[b>>2]|0;b=e+24|0;e=e+8|0;f=5;break}case 2:{e=c[b>>2]|0;b=e+32|0;e=e+16|0;f=5;break}default:d=0.0}if((f|0)==5)d=+h[b>>3]-+h[e>>3];return +d}function mF(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+96|0;j=n+64|0;i=n+32|0;g=n+16|0;k=n;m=b[e+4>>1]|0;if(m<<16>>16>=1){r=e+8|0;p=+h[e+24>>3];o=+h[r>>3];h[k>>3]=(o+p)*.5+ +h[f>>3];h[k+8>>3]=(+h[e+16>>3]+ +h[e+32>>3])*.5+ +h[f+8>>3];q=c[e>>2]|0;s=f+16|0;f=a[e+6>>0]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[i+16>>2]=c[s+16>>2];c[i+20>>2]=c[s+20>>2];c[i+24>>2]=c[s+24>>2];c[i+28>>2]=c[s+28>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[j+16>>2]=c[r+16>>2];c[j+20>>2]=c[r+20>>2];c[j+24>>2]=c[r+24>>2];c[j+28>>2]=c[r+28>>2];AF(d,m<<16>>16,q,g,(p-o)*.5,i,j,f)}l=n;return}function nF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+176|0;t=y+96|0;v=y+64|0;w=y+136|0;p=y;q=y+128|0;r=f+48|0;c[v>>2]=c[r>>2];c[v+4>>2]=c[r+4>>2];c[v+8>>2]=c[r+8>>2];c[v+12>>2]=c[r+12>>2];c[v+16>>2]=c[r+16>>2];c[v+20>>2]=c[r+20>>2];c[v+24>>2]=c[r+24>>2];c[v+28>>2]=c[r+28>>2];m=+h[g>>3];n=+h[g+8>>3];r=f+84|0;i=c[r>>2]|0;if(!(c[f>>2]|0))x=(c[f+8>>2]|0)!=0;else x=1;u=f+108|0;j=c[u>>2]|0;if(j|0)pF(g,j,167296);h[v>>3]=+h[v>>3]+m;s=v+16|0;h[s>>3]=+h[s>>3]+m;s=v+8|0;h[s>>3]=+h[s>>3]+n;s=v+24|0;h[s>>3]=+h[s>>3]+n;if(x?(c[e+152>>2]&4|0)==0:0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];s=qF(e,g,f,t,w)|0}else s=0;o=f+42|0;j=b[o>>1]|0;if(!(j&32)){k=c[f+20>>2]|0;if(k){j=rF(e,k,c[f+28>>2]|0,j&65535,q)|0;if(!(b[o>>1]&4)){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];ID(e,t,j)}else{o=d[f+33>>0]|0;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];yy(e,sF(p,t,o)|0,4,4,j)}_I(c[q>>2]|0)}while(1){j=c[i>>2]|0;if(!j)break;tF(e,j,g);i=i+4|0}i=c[r>>2]|0;OD(e,1.0);j=f+24|0;while(1){k=i+4|0;i=c[i>>2]|0;if(!i)break;if(!(a[i+100>>0]|0)){i=k;continue}uF(e,i,g,c[j>>2]|0,c[k>>2]|0);i=k}if(a[f+33>>0]|0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];vF(e,f,t)}}if(s|0)wF(e,w);if((x?c[e+152>>2]&4|0:0)?(c[t>>2]=c[v>>2],c[t+4>>2]=c[v+4>>2],c[t+8>>2]=c[v+8>>2],c[t+12>>2]=c[v+12>>2],c[t+16>>2]=c[v+16>>2],c[t+20>>2]=c[v+20>>2],c[t+24>>2]=c[v+24>>2],c[t+28>>2]=c[v+28>>2],qF(e,g,f,t,w)|0):0)wF(e,w);if(c[u>>2]|0)xF(g,167296);l=y;return}function oF(a){a=a|0;var b=0;b=c[a+16>>2]|0;c[b+208>>2]=0;c[b+228>>2]=0;c[b+244>>2]=0;c[b+212>>2]=0;Wt(a);return}function pF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;i=a+16|0;f=c[i>>2]|0;if(f|0){if(!(c[b>>2]|0)){f=0;g=d}else{c[d>>2]=f;f=c[b>>2]|0;g=i}c[g>>2]=f}f=c[a+20>>2]|0;if(f|0){g=b+4|0;if(!(c[g>>2]|0)){f=0;g=d}else{c[d+4>>2]=f;f=c[g>>2]|0;g=i}c[g+4>>2]=f}e=+h[a+32>>3];if(e>=0.0){f=b+16|0;if(!(+h[f>>3]>=0.0))e=-1.0;else{h[d+16>>3]=e;e=+h[f>>3];d=i}h[d+16>>3]=e}return}function qF(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+224|0;n=u+8|0;k=u;t=u+40|0;j=u+184|0;i=u+56|0;m=c[d+16>>2]|0;o=m+208|0;c[h>>2]=c[o>>2];p=m+228|0;c[h+4>>2]=c[p>>2];q=m+244|0;c[h+8>>2]=c[q>>2];r=m+212|0;c[h+12>>2]=c[r>>2];s=m+260|0;a[h+16>>0]=(b[s>>1]<<15&65535)<<16>>16>>15;h=c[f+16>>2]|0;if((h|0)!=0?(a[h>>0]|0)!=0:0)i=0;else{cm(t,128,i);i=e+60|0;h=c[i>>2]|0;if(!h){h=GL(Yt(d,c[m+8>>2]|0,t)|0)|0;c[i>>2]=h;a[e+64>>0]=1}fm(t,h)|0;i=c[42417]|0;c[42417]=i+1;c[k>>2]=i;pL(j,122183,k)|0;fm(t,j)|0;i=t+4|0;h=c[i>>2]|0;if(h>>>0>=(c[t+8>>2]|0)>>>0){dm(t,1)|0;h=c[i>>2]|0}a[h>>0]=0;h=c[t>>2]|0;c[i>>2]=h;i=1}h=Xt(d,0,c[f>>2]|0,c[f+12>>2]|0,c[f+8>>2]|0,h,c[m+8>>2]|0)|0;if(i)gm(t);do if(h|0){if((c[o>>2]|0)==0?(b[s>>1]&1)==0:0)break;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];c[n+16>>2]=c[g+16>>2];c[n+20>>2]=c[g+20>>2];c[n+24>>2]=c[g+24>>2];c[n+28>>2]=c[g+28>>2];du(d,n);wD(d,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)}while(0);l=u;return h|0}function rF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;if(!((xv(b,f,i)|0)<<24>>24)){DD(a,b);b=1}else{DD(a,c[f>>2]|0);b=c[f+4>>2]|0;h=+g[i>>2];if(!b)ED(a,122106,d,h);else ED(a,b,d,h);b=e>>>1&1|2}BD(a,122171);l=j;return b|0}function sF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];e=a+32|0;b=b+16|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];if((d|0)>1){j=+(d|0)*.5;i=+h[a>>3]+j;h[a>>3]=i;d=a+8|0;g=+h[d>>3]+j;h[d>>3]=g;f=+h[e>>3]-j;h[e>>3]=f;e=a+40|0;j=+h[e>>3]-j;h[e>>3]=j}else{f=+h[e>>3];g=+h[a+8>>3];i=+h[a>>3];j=+h[a+40>>3]}h[a+16>>3]=f;h[a+24>>3]=g;h[a+48>>3]=i;h[a+56>>3]=j;return a|0}function tF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+176|0;r=v+96|0;s=v+136|0;t=v+64|0;p=v;q=v+128|0;u=f+48|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];c[t+16>>2]=c[u+16>>2];c[t+20>>2]=c[u+20>>2];c[t+24>>2]=c[u+24>>2];c[t+28>>2]=c[u+28>>2];j=+h[g>>3];k=+h[g+8>>3];if(!(c[f>>2]|0))u=(c[f+8>>2]|0)!=0;else u=1;h[t>>3]=+h[t>>3]+j;o=t+16|0;h[o>>3]=+h[o>>3]+j;o=t+8|0;h[o>>3]=+h[o>>3]+k;o=t+24|0;h[o>>3]=+h[o>>3]+k;if(u?(c[e+152>>2]&4|0)==0:0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];o=qF(e,g,f,r,s)|0}else o=0;n=f+42|0;i=b[n>>1]|0;a:do if(!(i&32)){m=c[f+20>>2]|0;if(m|0){i=rF(e,m,c[f+28>>2]|0,i&65535,q)|0;if(!(b[n>>1]&4)){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];ID(e,r,i)}else{n=d[f+33>>0]|0;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];yy(e,sF(p,r,n)|0,4,4,i)}_I(c[q>>2]|0)}if(a[f+33>>0]|0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];vF(e,f,r)}i=f+88|0;switch(a[f+92>>0]|0){case 1:{nF(e,c[i>>2]|0,g);break a}case 3:{zF(e,c[i>>2]|0,g);break a}default:{mF(e,c[i>>2]|0,g);break a}}}while(0);if(o|0)wF(e,s);if((u?c[e+152>>2]&4|0:0)?(c[r>>2]=c[t>>2],c[r+4>>2]=c[t+4>>2],c[r+8>>2]=c[t+8>>2],c[r+12>>2]=c[t+12>>2],c[r+16>>2]=c[t+16>>2],c[r+20>>2]=c[t+20>>2],c[r+24>>2]=c[t+24>>2],c[r+28>>2]=c[t+28>>2],qF(e,g,f,r,s)|0):0)wF(e,s);l=v;return}function uF(f,g,i,j,k){f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+32|0;y=A+16|0;z=A;r=+h[i>>3];x=+h[i+8>>3];q=(j|0)==0?122106:j;DD(f,q);BD(f,q);t=+h[g+48>>3];o=+h[g+56>>3];u=+h[g+64>>3];p=+h[g+72>>3];s=t+r;r=u+r;x=o+x;q=g+100|0;i=a[q>>0]|0;if((i&1)!=0?(n=c[g+96>>2]|0,((e[g+80>>1]|0)+(e[g+84>>1]|0)|0)<(c[n+104>>2]|0)):0){i=b[g+86>>1]|0;do if(i<<16>>16)if(((e[g+82>>1]|0)+(i&65535)|0)==(c[n+100>>2]|0)){B=a[n+32>>0]|0;C=(B<<24>>24)/2|0;j=(C<<24>>24)+(d[n+33>>0]|0)|0;i=j;j=j&255;m=x-+(C<<24>>24);n=B;break}else{n=a[n+32>>0]|0;i=0;j=((n<<24>>24)/2|0)<<24>>24;m=x;break}else{C=a[n+32>>0]|0;j=((C<<24>>24)/2|0)<<24>>24;i=j+(d[n+33>>0]|0)|0;m=x;n=C}while(0);h[z+8>>3]=m-+(j|0);h[z>>3]=r+ +(((n<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];yF(f,y,0.0,p-o+ +(i&255|0)+ +(n<<24>>24));i=a[q>>0]|0}if(i&2?(v=b[g+86>>1]|0,w=c[g+96>>2]|0,((e[g+82>>1]|0)+(v&65535)|0)<(c[w+100>>2]|0)):0){i=b[g+84>>1]|0;do if(!(i<<16>>16)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;n=(C<<24>>24)+(d[w+33>>0]|0)|0;j=n&255;n=n&255;m=+(C<<24>>24);h[z>>3]=s-m-+(n|0);if((c[w+104>>2]|0)==(e[g+80>>1]|0)){j=n<<1&255;break}if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+(j&255)-u+ +h[w+64>>3]-m)&255}else{if(((e[g+80>>1]|0)+(i&65535)|0)==(c[w+104>>2]|0)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;j=(C&255)+(d[w+33>>0]|0)&255;h[z>>3]=s-+(C<<24>>24);break}i=a[w+32>>0]|0;m=+(((i<<24>>24)/2|0)<<24>>24);h[z>>3]=s-m;if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+h[w+64>>3]-u-m)&255;else j=0}while(0);h[z+8>>3]=x-+(((i<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];yF(f,y,u-t+ +(j&255)+ +(i<<24>>24),0.0)}l=A;return}function vF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;p=l;l=l+160|0;o=p+112|0;n=p;j=p+144|0;m=c[f+24>>2]|0;BD(e,(m|0)==0?122106:m);m=f+42|0;i=b[m>>1]|0;if(!(i&384))FD(e,c[(c[e>>2]|0)+336>>2]|0);else{c[j+4>>2]=0;c[j>>2]=0;i=i&65535;if(!(i&256)){if(i&128|0){i=122112;k=4}}else{i=122119;k=4}if((k|0)==4)c[j>>2]=i;FD(e,j)}k=f+33|0;OD(e,+(d[k>>0]|0));a:do if(!(b[m>>1]&4)){i=b[f+36>>1]&15360;if(!(i<<16>>16)){i=a[k>>0]|0;if((i&255)>1){q=+(i&255)*.5;h[g>>3]=+h[g>>3]+q;n=g+8|0;h[n>>3]=+h[n>>3]+q;n=g+16|0;h[n>>3]=+h[n>>3]-q;n=g+24|0;h[n>>3]=+h[n>>3]-q};c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];ID(e,o,0);break}j=n+16|0;m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];sF(j,o,m)|0;do switch(((i&65535)+-1024|0)>>>10&4194303|0){case 7:{KD(e,j,2);break a}case 3:{KD(e,n+32|0,2);break a}case 1:{KD(e,n+48|0,2);break a}case 0:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];KD(e,n,2);break a}case 11:{KD(e,j,3);break a}case 5:{KD(e,n+32|0,3);break a}case 2:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];KD(e,n+48|0,3);break a}case 8:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];KD(e,n,3);break a}case 13:{KD(e,j,4);break a}case 6:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];KD(e,n+32|0,4);break a}case 10:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];g=n+96|0;o=n+32|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];KD(e,n+48|0,4);break a}case 12:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];KD(e,n,4);break a}case 9:{KD(e,j,2);KD(e,n+48|0,2);break a}case 4:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];KD(e,n,2);KD(e,n+32|0,2);break a}default:break a}while(0)}else{m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];yy(e,sF(n,o,m)|0,4,4,0)}while(0);l=p;return}function wF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=c[d+16>>2]|0;f=h+208|0;if((c[f>>2]|0)==0?(b[h+260>>1]&1)==0:0)d=0;else{xD(d);d=c[f>>2]|0}if((d|0)!=(c[e>>2]|0)){_I(d);c[f>>2]=c[e>>2]}d=h+228|0;f=c[d>>2]|0;g=e+4|0;if((f|0)!=(c[g>>2]|0)){_I(f);c[d>>2]=c[g>>2]}d=h+244|0;f=c[d>>2]|0;g=e+8|0;if((f|0)!=(c[g>>2]|0)){_I(f);c[d>>2]=c[g>>2]}d=h+212|0;f=c[d>>2]|0;g=e+12|0;if((f|0)!=(c[g>>2]|0)){_I(f);c[d>>2]=c[g>>2]}h=h+260|0;b[h>>1]=b[h>>1]&-2|a[e+16>>0]&1;return}function xF(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(e|0)c[a+16>>2]=e;e=c[b+4>>2]|0;if(e|0)c[a+20>>2]=e;d=+h[b+16>>3];if(d>=0.0)h[a+32>>3]=d;return}function yF(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0;f=l;l=l+64|0;g=f+32|0;i=f;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=+h[b>>3]+d;h[i+24>>3]=+h[b+8>>3]+e;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];ID(a,g,1);l=f;return}function zF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0;i=l;l=l+64|0;g=i;k=+h[e>>3];n=k+ +h[d>>3];m=+h[e+8>>3];j=m+ +h[d+8>>3];k=k+ +h[d+16>>3];m=m+ +h[d+24>>3];h[g>>3]=k;h[g+8>>3]=m;h[g+32>>3]=n;h[g+40>>3]=j;h[g+16>>3]=n;h[g+24>>3]=m;h[g+48>>3]=k;h[g+56>>3]=j;f=c[d+36>>2]|0;if(!f)f=c[e+56>>2]|0;e=c[d+32>>2]|0;if(!e)ma(122126,122134,623,122146);if(!(a[e>>0]|0))ma(122160,122134,624,122146);else{MD(b,e,g,4,1,f);l=i;return}}function AF(d,e,f,g,i,j,k,m){d=d|0;e=e|0;f=f|0;g=g|0;i=+i;j=j|0;k=k|0;m=m|0;var n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0;R=l;l=l+128|0;K=R+104|0;O=R+48|0;P=R+16|0;L=R;J=L;c[J>>2]=0;c[J+4>>2]=0;M=+h[g>>3];N=M-i;I=M+i;J=L+8|0;h[J>>3]=(+h[k+24>>3]-+h[k+8>>3])*.5+ +h[g+8>>3];yD(d,1);D=P+16|0;E=P+4|0;F=P+24|0;G=O+4|0;H=O+16|0;s=(m|0)==0;t=O+24|0;u=O+8|0;v=O+32|0;w=O+40|0;x=O+48|0;y=j+16|0;z=j+4|0;A=P+8|0;q=0;while(1){if((q|0)>=(e|0))break;switch(a[f+(q*24|0)+6>>0]|0){case 108:{i=N;break}case 114:{i=I-+h[f+(q*24|0)+8>>3];break}default:i=M-+h[f+(q*24|0)+8>>3]*.5}h[g>>3]=i;B=f+(q*24|0)+16|0;h[J>>3]=+h[J>>3]-+h[B>>3];C=f+(q*24|0)+4|0;p=c[f+(q*24|0)>>2]|0;r=0;while(1){if((r|0)>=(b[C>>1]|0))break;o=p+4|0;m=c[o>>2]|0;if(m){h[D>>3]=+h[(+h[m+16>>3]>0.0?m:j)+16>>3];c[P>>2]=c[((c[m>>2]|0)==0?j:m)>>2];k=c[((c[m+4>>2]|0)==0?j:m)+4>>2]|0;c[E>>2]=k;m=c[m+24>>2]&127;if(!m)Q=12;else m=c[F>>2]&-128|m}else{h[D>>3]=+h[y>>3];c[P>>2]=c[j>>2];k=c[z>>2]|0;c[E>>2]=k;Q=12}if((Q|0)==12){Q=0;m=c[F>>2]&-128}c[F>>2]=m;BD(d,k);c[O>>2]=c[p>>2];c[G>>2]=P;h[H>>3]=+h[p+16>>3];if(s)n=1.0;else n=+h[p+24>>3];h[t>>3]=n;c[A>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=c[p+8>>2];o=p+32|0;h[v>>3]=+h[o>>3];h[w>>3]=+h[B>>3];a[x>>0]=108;h[L>>3]=i;c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];AD(d,K,O);n=+h[o>>3]+i;h[g>>3]=n;p=p+56|0;r=r+1|0;i=n}q=q+1|0}zD(d);l=R;return}function BF(a){a=a|0;_I(c[a>>2]|0);_I(c[a+4>>2]|0);_I(c[a+8>>2]|0);_I(c[a+16>>2]|0);_I(c[a+12>>2]|0);_I(c[a+20>>2]|0);_I(c[a+24>>2]|0);return}function CF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(a|0){j=a+4|0;e=0;g=c[a>>2]|0;while(1){if((e|0)>=(b[j>>1]|0))break;k=g+4|0;d=0;f=c[g>>2]|0;while(1){if((d|0)>=(b[k>>1]|0))break;_I(c[f>>2]|0);h=c[f+8>>2]|0;if(h|0?(i=c[f+12>>2]|0,i|0):0)gb[i&127](h);d=d+1|0;f=f+56|0}e=e+1|0;g=g+24|0}d=c[a>>2]|0;if(d|0)_I(d);_I(a)}return}function DF(a){a=a|0;_I(c[a+32>>2]|0);_I(a);return}function EF(b,d){b=b|0;d=d|0;switch(a[b+4>>0]|0){case 1:{FF(c[b>>2]|0);break}case 3:{DF(c[b>>2]|0);break}default:CF(c[b>>2]|0)}if(d|0)_I(b);return}function FF(a){a=a|0;var b=0,d=0,e=0;e=a+84|0;if((c[a+100>>2]|0)==-1)Kl(c[e>>2]|0)|0;else{b=c[e>>2]|0;_I(c[a+92>>2]|0);_I(c[a+96>>2]|0);while(1){d=c[b>>2]|0;if(!d)break;GF(d);b=b+4|0}_I(c[e>>2]|0)}BF(a);_I(a);return}function GF(a){a=a|0;EF(a+88|0,0);BF(a);_I(a);return}function HF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;b=c[(c[(c[b+16>>2]|0)+104>>2]|0)+72>>2]|0;if((a[b+4>>0]|0)!=2?(g=IF(c[b>>2]|0,e)|0,(g|0)!=0):0){c[f>>2]=d[g+35>>0];b=g+48|0}else b=0;return b|0}function IF(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(!((d|0)!=0?(iK(d,b)|0)==0:0))e=3;a:do if((e|0)==3){d=c[a+84>>2]|0;while(1){a=c[d>>2]|0;if(!a){a=0;break a}a=JF(a,b)|0;if(!a)d=d+4|0;else break}}while(0);return a|0}function JF(b,d){b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;if(!((e|0)!=0?(iK(e,d)|0)==0:0))if((a[b+92>>0]|0)==1)b=IF(c[b+88>>2]|0,d)|0;else b=0;return b|0}function KF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function LF(d){d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=d+92|0;c[p>>2]=vw((c[d+100>>2]<<2)+4|0)|0;n=vw((c[d+104>>2]<<2)+4|0)|0;c[d+96>>2]=n;o=d+32|0;m=c[d+84>>2]|0;while(1){l=c[m>>2]|0;if(!l)break;d=b[l+82>>1]|0;f=+h[l+72>>3];if(d<<16>>16==1)i=~~f;else{i=~~((f-+(O((a[o>>0]|0)+-1|0,(d&65535)+-1|0)|0))/+(d&65535));i=(i|0)>1?i:1}j=b[l+80>>1]|0;f=+h[l+64>>3];if(j<<16>>16==1)k=~~f;else{k=~~((f-+(O((a[o>>0]|0)+-1|0,(j&65535)+-1|0)|0))/+(j&65535));k=(k|0)>1?k:1}q=e[l+86>>1]|0;g=(d&65535)+q|0;d=q;while(1){if((d|0)>=(g|0))break;q=(c[p>>2]|0)+(d<<2)|0;r=c[q>>2]|0;c[q>>2]=(r|0)>(i|0)?r:i;d=d+1|0}d=e[l+84>>1]|0;g=(j&65535)+d|0;while(1){if((d|0)>=(g|0))break;r=n+(d<<2)|0;q=c[r>>2]|0;c[r>>2]=(q|0)>(k|0)?q:k;d=d+1|0}m=m+4|0}return}function MF(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(a>>>0<21)a=c[54824+(a<<2)>>2]|0;else{c[b>>2]=a;pL(174081,122187,b)|0;a=174081}l=d;return a|0}function NF(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=a+104|0;l=a+100|0;j=d+16|0;f=0;g=0;while(1){if((f|0)>(c[k>>2]|0))break;i=no(d,MF(f)|0,1)|0;No(i,122241,304,1)|0;m=i+16|0;c[(c[m>>2]|0)+176>>2]=0;o=vw((c[l>>2]<<2)+4|0)|0;n=c[m>>2]|0;c[n+172>>2]=o;c[n+184>>2]=0;n=vw((c[l>>2]<<2)+4|0)|0;c[(c[m>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}j=b+16|0;f=0;g=0;while(1){if((f|0)>(c[l>>2]|0))break;i=no(b,MF(f)|0,1)|0;No(i,122241,304,1)|0;o=i+16|0;c[(c[o>>2]|0)+176>>2]=0;m=vw((c[k>>2]<<2)+4|0)|0;n=c[o>>2]|0;c[n+172>>2]=m;c[n+184>>2]=0;n=vw((c[k>>2]<<2)+4|0)|0;c[(c[o>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}f=c[a+84>>2]|0;while(1){g=c[f>>2]|0;if(!g)break;o=g+84|0;n=no(d,MF(e[o>>1]|0)|0,0)|0;o=no(d,MF((e[g+80>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;OF(d,n,o,~~+h[g+64>>3]);o=g+86|0;n=no(b,MF(e[o>>1]|0)|0,0)|0;o=no(b,MF((e[g+82>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;OF(b,n,o,~~+h[g+72>>3]);f=f+4|0}PF(d);PF(b);return}function OF(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;h=an(a,d,f,0,0)|0;if(!h){i=an(a,d,f,0,1)|0;No(i,122254,176,1)|0;b[(c[i+16>>2]|0)+170>>1]=g;d=d+16|0;a=c[d>>2]|0;h=c[a+180>>2]|0;if(!h)a=ww((c[a+184>>2]<<2)+8|0)|0;else a=yw(h,(c[a+184>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+180>>2]=a;g=g+184|0;h=c[g>>2]|0;c[g>>2]=h+1;c[a+(h<<2)>>2]=i;d=c[d>>2]|0;c[(c[d+180>>2]|0)+(c[d+184>>2]<<2)>>2]=0;d=f+16|0;a=c[d>>2]|0;h=c[a+172>>2]|0;if(!h)a=ww((c[a+176>>2]<<2)+8|0)|0;else a=yw(h,(c[a+176>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+172>>2]=a;g=g+176|0;f=c[g>>2]|0;c[g>>2]=f+1;c[a+(f<<2)>>2]=i;i=c[d>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0}else{i=(c[h+16>>2]|0)+170|0;f=e[i>>1]|0;b[i>>1]=(f|0)>(g|0)?f:g}return}function PF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[a+16>>2]|0)+192>>2]|0;while(1){f=d+16|0;h=c[(c[f>>2]|0)+164>>2]|0;if(!h)break;if(an(a,d,h,0,0)|0){d=h;continue}g=an(a,d,h,0,1)|0;No(g,122254,176,1)|0;b[(c[g+16>>2]|0)+170>>1]=0;d=c[f>>2]|0;e=c[d+180>>2]|0;if(!e)d=ww((c[d+184>>2]<<2)+8|0)|0;else d=yw(e,(c[d+184>>2]<<2)+8|0)|0;i=c[f>>2]|0;c[i+180>>2]=d;i=i+184|0;e=c[i>>2]|0;c[i>>2]=e+1;c[d+(e<<2)>>2]=g;f=c[f>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;f=h+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(!e)d=ww((c[d+176>>2]<<2)+8|0)|0;else d=yw(e,(c[d+176>>2]<<2)+8|0)|0;e=c[f>>2]|0;c[e+172>>2]=d;e=e+176|0;i=c[e>>2]|0;c[e>>2]=i+1;c[d+(i<<2)>>2]=g;d=c[f>>2]|0;c[(c[d+172>>2]|0)+(c[d+176>>2]<<2)>>2]=0;d=h}return}function QF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+92|0;e=0;f=0;b=c[(c[(c[b+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[g>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}a=a+96|0;e=0;f=0;b=c[(c[(c[d+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[a>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}return}function RF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+4|0;d=h;c[d>>2]=c[4411];e=c[b+100>>2]|0;if((e|0)!=1?(f=b+104|0,(c[f>>2]|0)!=1):0){c[b+92>>2]=vw((e<<2)+4|0)|0;c[b+96>>2]=vw((c[f>>2]<<2)+4|0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;f=gn(122267,g,0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;g=gn(122272,g,0)|0;No(f,122277,280,1)|0;No(g,122277,280,1)|0;NF(b,f,g);gx(f,2,2147483647)|0;gx(g,2,2147483647)|0;QF(b,f,g);SF(f,g)}else LF(b);l=h;return}function SF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;f=d+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(e){_I(e);d=c[f>>2]|0}e=c[d+180>>2]|0;if(e){_I(e);d=c[f>>2]|0}d=d+164|0}ln(a)|0;ln(b)|0;return}function TF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0;p=l;l=l+272|0;n=p+104|0;o=p+136|0;j=p+72|0;k=p;g=p+144|0;c[k+48>>2]=b;switch(Co(b)|0){case 0:{e=c[b+60>>2]|0;break}case 1:{e=ro(b)|0;break}case 2:{e=ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;break}default:{}}i=k+52|0;c[i>>2]=e;m=c[e+60>>2]|0;h[k+32>>3]=+h[d+16>>3];c[k+16>>2]=c[d+4>>2];c[k+20>>2]=c[d+8>>2];c[k+40>>2]=0;f=bI(c[d>>2]|0,o,k)|0;if(!f){cm(n,128,g);a[d+82>>0]=0;e=GL(UF(b,n)|0)|0;c[d>>2]=e;if((c[d+12>>2]|0)==1)e=yB(e)|0;else e=vB(e,c[i>>2]|0)|0;_I(c[d>>2]|0);c[d>>2]=e;jw(c[(c[m+16>>2]|0)+144>>2]|0,d);gm(n);e=c[o>>2]|0}else{e=f+4|0;if((a[e>>0]|0)==1){if((c[(c[f>>2]|0)+24>>2]|0)==0?VF(b)|0:0){i=GL(VF(b)|0)|0;c[(c[f>>2]|0)+24>>2]=i}m=WF(m,c[f>>2]|0,0,k)|0;c[o>>2]=c[o>>2]|m;m=c[f>>2]|0;r=+h[m+64>>3]*.5;q=+h[m+72>>3]*.5;XF(j,-r,-q,r,q);m=c[f>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2];YF(m,n,15)}else{ZF(c[(c[m+16>>2]|0)+144>>2]|0,c[f>>2]|0,k);n=c[f>>2]|0;q=+h[n+24>>3]*.5;r=+h[n+32>>3]*.5;XF(j,-q,-r,q,r);n=(c[f>>2]|0)+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2]}h[d+24>>3]=+h[j+16>>3]-+h[j>>3];h[d+32>>3]=+h[j+24>>3]-+h[j+8>>3];c[d+72>>2]=f;if((a[e>>0]|0)==1){_I(c[d>>2]|0);c[d>>2]=GL(122290)|0}e=c[o>>2]|0}l=p;return e|0}function UF(b,d){b=b|0;d=d|0;var e=0;a:do switch(Co(b)|0){case 0:{fm(d,Dn(b)|0)|0;break}case 1:{fm(d,Dn(b)|0)|0;break}case 2:{fm(d,Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)|0;e=b+-48|0;fm(d,Dn(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0;if(!(qn(ro(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0)){fm(d,122549)|0;break a}else{fm(d,122546)|0;break a}}default:{}}while(0);e=d+4|0;b=c[e>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){dm(d,1)|0;b=c[e>>2]|0}a[b>>0]=0;d=c[d>>2]|0;c[e>>2]=d;return d|0}function VF(b){b=b|0;var c=0,d=0;c=Im(b,122531)|0;if(!((c|0)!=0?(a[c>>0]|0)!=0:0))d=3;do if((d|0)==3){c=Im(b,122540)|0;if(c|0?a[c>>0]|0:0)break;c=0}while(0);return c|0}function WF(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;u=w+8|0;t=w;v=g+108|0;k=c[v>>2]|0;if(k|0)pF(j,k,167328);c[g+80>>2]=i;k=bG(f,g,j)|0;r=g+36|0;f=b[r>>1]|0;if(!(f&128))a[g+32>>0]=2;i=g+33|0;if(!(f&32))a[i>>0]=1;RF(g);n=c[g+104>>2]|0;p=a[g+32>>0]|0;f=O(n+1|0,p)|0;o=d[i>>0]<<1;q=c[g+100>>2]|0;p=O(q+1|0,p)|0;m=g+96|0;f=o+f|0;i=0;while(1){if((i|0)>=(n|0))break;f=(c[(c[m>>2]|0)+(i<<2)>>2]|0)+f|0;i=i+1|0}n=g+92|0;i=p+o|0;m=0;while(1){if((m|0)>=(q|0))break;i=(c[(c[n>>2]|0)+(m<<2)>>2]|0)+i|0;m=m+1|0}n=g+38|0;do if(b[r>>1]&1){r=b[n>>1]|0;m=r&65535;if(r<<16>>16?(s=b[g+40>>1]|0,s<<16>>16):0){if(!((f|0)>(m|0)|(i|0)>(s&65535|0))){i=0;f=0;break}_l(0,122331,t)|0;k=1;i=0;f=0;break}_l(0,122365,u)|0;k=1}while(0);u=e[n>>1]|0;h[g+64>>3]=+(((f|0)>(u|0)?f:u)|0);u=e[g+40>>1]|0;h[g+72>>3]=+(((i|0)>(u|0)?i:u)|0);if(c[v>>2]|0)xF(j,167328);l=w;return k|0}function XF(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function YF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0;I=l;l=l+64|0;G=I+32|0;H=I;E=c[e+84>>2]|0;k=c[e+80>>2]|0;if((k|0?(i=c[k+24>>2]|0,i|0):0)?(j=e+24|0,(c[j>>2]|0)==0):0)c[j>>2]=GL(i)|0;F=e+48|0;i=f+16|0;n=+h[i>>3];m=+h[f>>3];k=~~(n-m-+(~~+h[e+64>>3]|0));if((k|0)<=-1)ma(122298,122134,1761,122308);o=f+24|0;y=+h[o>>3];p=f+8|0;q=+h[p>>3];r=+(~~+h[e+72>>3]|0);s=~~(y-q-r);if((s|0)<=-1)ma(122321,122134,1764,122308);t=b[e+36>>1]|0;j=t&65535;a:do if(j&1){b:do if((k|0)>0)switch(j&6){case 4:{h[i>>3]=m+r;break b}case 2:{J=+(k|0);h[i>>3]=n+J;m=m+J;h[f>>3]=m;break b}default:{J=+(k>>>1|0);m=m+J;h[f>>3]=m;h[i>>3]=n-J;break b}}while(0);if((s|0)>0)switch(t&24){case 16:{y=q+r;h[o>>3]=y;s=0;i=0;break a}case 8:{J=+(s|0);y=y+J;h[o>>3]=y;h[p>>3]=q+J;s=0;i=0;break a}default:{J=+(s>>>1|0);h[p>>3]=q+J;y=y-J;h[o>>3]=y;s=0;i=0;break a}}else{s=0;i=0}}else i=k;while(0);n=+(d[e+33>>0]|0);C=e+32|0;u=a[C>>0]|0;q=+(u<<24>>24);D=e+104|0;k=c[D>>2]|0;t=(i|0)/(k|0)|0;o=i-(O(t,k)|0)|0;o=~~(((o|0)>-1?.5:-.5)+ +(o|0));B=e+96|0;p=u<<24>>24;i=~~(m+n+q);j=0;while(1){if((j|0)>(k|0))break;A=(c[B>>2]|0)+(j<<2)|0;k=c[A>>2]|0;c[A>>2]=i;i=i+t+((j|0)<(o|0)&1)+k+p|0;j=j+1|0;k=c[D>>2]|0}A=e+100|0;k=c[A>>2]|0;t=(s|0)/(k|0)|0;p=s-(O(t,k)|0)|0;p=~~(((p|0)>-1?.5:-.5)+ +(p|0));z=e+92|0;o=u<<24>>24;i=~~(y-n-q);j=0;while(1){if((j|0)>(k|0))break;x=(c[z>>2]|0)+(j<<2)|0;k=c[x>>2]|0;c[x>>2]=i;i=i-t+(((j|0)<(p|0))<<31>>31)-k-o|0;j=j+1|0;k=c[A>>2]|0}u=(g|0)==0;v=H+16|0;w=H+24|0;x=H+8|0;i=E;while(1){o=c[i>>2]|0;if(!o)break;k=b[o+84>>1]|0;if(u){j=0;p=b[o+80>>1]|0;s=b[o+86>>1]|0;t=b[o+82>>1]|0}else{j=k<<16>>16==0?8:0;s=b[o+86>>1]|0;j=s<<16>>16==0?j|4:j;p=b[o+80>>1]|0;t=b[o+82>>1]|0;j=(((p&65535)+(k&65535)|0)==(c[D>>2]|0)?j|2:j)|((t&65535)+(s&65535)|0)==(c[A>>2]|0)}K=c[B>>2]|0;k=k&65535;h[H>>3]=+(c[K+(k<<2)>>2]|0);E=a[C>>0]|0;h[v>>3]=+((c[K+((p&65535)+k<<2)>>2]|0)-E|0);p=c[z>>2]|0;h[w>>3]=+(c[p+((s&65535)<<2)>>2]|0);h[x>>3]=+((c[p+((t&65535)+(s&65535)<<2)>>2]|0)+E|0);c[G>>2]=c[H>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];c[G+24>>2]=c[H+24>>2];c[G+28>>2]=c[H+28>>2];_F(o,G,j&g);i=i+4|0}a[e+35>>0]=g;c[F>>2]=c[f>>2];c[F+4>>2]=c[f+4>>2];c[F+8>>2]=c[f+8>>2];c[F+12>>2]=c[f+12>>2];c[F+16>>2]=c[f+16>>2];c[F+20>>2]=c[f+20>>2];c[F+24>>2]=c[f+24>>2];c[F+28>>2]=c[f+28>>2];l=I;return}function ZF(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0.0;O=l;l=l+112|0;H=O+48|0;I=O+16|0;J=O;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;c[I+16>>2]=0;c[I+20>>2]=0;c[I+24>>2]=0;c[I+28>>2]=0;K=e+4|0;L=f+16|0;M=f+32|0;N=I+16|0;r=b[K>>1]|0;n=r<<16>>16;g=0;j=-1.0;m=0;while(1){if((m|0)>=(n|0)){g=1;break}i=c[e>>2]|0;if((b[i+(m*24|0)+4>>1]|0)>1){g=0;break}i=c[(c[i+(m*24|0)>>2]|0)+4>>2]|0;if(!i){k=+h[M>>3];h[N>>3]=k;i=L}else{if(c[i+24>>2]&127|0){g=0;break}k=+h[(+h[i+16>>3]>0.0?i:L)+16>>3];h[N>>3]=k;i=(c[i>>2]|0)==0?L:i}i=c[i>>2]|0;c[I>>2]=i;if(!(j==-1.0)){if(k!=j){g=0;break}}else j=k;if(g){if(xJ(i,g)|0){g=0;break}}else g=i;m=m+1|0}a[e+6>>0]=g;E=f+48|0;F=f+20|0;G=I+4|0;w=f+40|0;x=I+24|0;y=d+144|0;z=H+4|0;v=J+8|0;A=H+16|0;B=H+24|0;C=H+8|0;D=H+12|0;f=(g|0)==0;j=0.0;s=0.0;t=0.0;u=0.0;n=0;g=r;while(1){if((n|0)>=(g<<16>>16|0))break;k=0.0;q=0.0;m=0;p=0.0;j=0.0;i=c[e>>2]|0;while(1){if((m|0)>=(b[i+(n*24|0)+4>>1]|0))break;c[H>>2]=qw(c[(c[i+(n*24|0)>>2]|0)+(m*56|0)>>2]|0,c[E>>2]|0)|0;i=(c[e>>2]|0)+(n*24|0)|0;g=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;if(!g){h[N>>3]=+h[M>>3];c[I>>2]=c[L>>2];c[G>>2]=c[F>>2];c[x>>2]=c[x>>2]&-128|c[w>>2]&127}else{g=c[g+24>>2]&127;if(!g)g=c[w>>2]&127;c[x>>2]=c[x>>2]&-128|g;r=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;h[N>>3]=+h[(+h[r+16>>3]>0.0?r:L)+16>>3];c[I>>2]=c[((c[r>>2]|0)==0?L:r)>>2];c[G>>2]=c[((c[r+4>>2]|0)==0?L:r)+4>>2]}i=c[y>>2]|0;c[z>>2]=bb[c[i>>2]&31](i,I,1)|0;pA(J,d,H);Q=+h[J>>3];o=+h[v>>3];_I(c[(c[(c[e>>2]|0)+(n*24|0)>>2]|0)+(m*56|0)>>2]|0);i=c[e>>2]|0;r=c[i+(n*24|0)>>2]|0;c[r+(m*56|0)>>2]=c[H>>2];h[r+(m*56|0)+32>>3]=Q;h[r+(m*56|0)+16>>3]=+h[A>>3];h[r+(m*56|0)+24>>3]=+h[B>>3];c[r+(m*56|0)+4>>2]=c[z>>2];c[r+(m*56|0)+8>>2]=c[C>>2];c[r+(m*56|0)+12>>2]=c[D>>2];P=+h[N>>3];R=+h[B>>3];k=R>k?R:k;q=Q+q;m=m+1|0;p=P>p?P:p;j=o>j?o:j}h[i+(n*24|0)+8>>3]=q;g=(n|0)==0;do if(f)if(g){o=p;k=p-k;g=i;break}else{o=p;k=t-u+p-k;g=i+(n*24|0)|0;break}else{o=j;k=g?p:j;g=i+(n*24|0)|0}while(0);h[g+16>>3]=k;s=q>s?q:s;t=o+t;u=+h[i+(n*24|0)+16>>3]+u;n=n+1|0;g=b[K>>1]|0}h[e+24>>3]=s;h[e+32>>3]=g<<16>>16==1?j:t;l=O;return}function _F(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;v=y+32|0;x=y;j=e+24|0;if((c[j>>2]|0)==0?(i=c[(c[e+96>>2]|0)+24>>2]|0,i|0):0)c[j>>2]=GL(i)|0;t=e+36|0;w=b[t>>1]|0;i=w&65535;a:do if(i&1){k=+h[e+64>>3];q=+h[e+72>>3];j=f+16|0;m=+h[j>>3];o=+h[f>>3];n=m-o-k;b:do if(n>0.0)switch(i&6){case 4:{m=o+k;h[j>>3]=m;k=o;break b}case 2:{m=n+m;h[j>>3]=m;k=o+n;h[f>>3]=k;break b}default:{p=n*.5;k=p+o;h[f>>3]=k;m=m-p;h[j>>3]=m;break b}}else k=o;while(0);i=f+24|0;p=+h[i>>3];j=f+8|0;n=+h[j>>3];o=p-n-q;if(o>0.0)switch(w&24){case 16:{o=n+q;h[i>>3]=o;break a}case 8:{q=o+p;h[i>>3]=q;n=n+o;h[j>>3]=n;o=q;break a}default:{o=o*.5;n=o+n;h[j>>3]=n;o=p-o;h[i>>3]=o;break a}}else o=p}else{k=+h[f>>3];n=+h[f+8>>3];m=+h[f+16>>3];o=+h[f+24>>3]}while(0);s=e+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[s+16>>2]=c[f+16>>2];c[s+20>>2]=c[f+20>>2];c[s+24>>2]=c[f+24>>2];c[s+28>>2]=c[f+28>>2];a[e+35>>0]=g;A=+(d[e+33>>0]|0);z=+(d[e+34>>0]|0);p=k+A+z;h[x>>3]=p;q=n+A+z;s=x+8|0;h[s>>3]=q;n=m-A-z;f=x+16|0;h[f>>3]=n;o=o-A-z;r=x+24|0;h[r>>3]=o;j=e+88|0;switch(a[e+92>>0]|0){case 1:{w=c[j>>2]|0;c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];YF(w,v,g);break}case 3:{i=c[j>>2]|0;k=+h[i+24>>3];m=n-p-+h[i+16>>3];c:do if(m>0.0)switch(w&6){case 4:{h[f>>3]=n-m;break c}case 2:{h[x>>3]=m+p;break c}default:break c}while(0);k=o-q-k;d:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break d}case 8:{h[s>>3]=k+q;break d}default:break d}while(0);c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];$F(i,v);break}default:{i=c[j>>2]|0;k=+h[i+32>>3];m=n-p-+h[i+24>>3];e:do if(m>0.0?(u=w&6,u<<16>>16!=6):0)switch(u&7){case 4:{h[f>>3]=n-m;break e}case 2:{h[x>>3]=m+p;break e}default:{A=m*.5;h[x>>3]=A+p;h[f>>3]=n-A;break e}}while(0);k=o-q-k;f:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break f}case 8:{h[s>>3]=k+q;break f}default:{A=k*.5;h[s>>3]=A+q;h[r>>3]=o-A;break f}}while(0);w=i+8|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];c[w+20>>2]=c[x+20>>2];c[w+24>>2]=c[x+24>>2];c[w+28>>2]=c[x+28>>2];x=b[t>>1]&768;aG(c[j>>2]|0,(x&1023)==512?108:(x&1023)==256?114:110)}}l=y;return}function $F(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function aG(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;g=b[d+4>>1]|0;f=0;while(1){if((f|0)>=(g|0))break;h=(c[d>>2]|0)+(f*24|0)+6|0;if(!(a[h>>0]|0))a[h>>0]=e;f=f+1|0}return}function bG(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=f+84|0;t=c[l>>2]|0;u=wx()|0;v=fG()|0;i=0;h=0;k=Ol(t)|0;while(1){if(!k)break;j=Ol(c[k+8>>2]|0)|0;while(1){if(!j)break;j=c[j>>2]|0;i=i+1|0}h=h+1|0;if(a[k+12>>0]|0)jG(v,h);k=c[k>>2]|0}h=vw((i<<2)+4|0)|0;c[l>>2]=h;i=0;j=0;k=0;q=0;r=Ol(t)|0;while(1){if(!r)break;s=q&65535;p=0;o=Ol(c[r+8>>2]|0)|0;while(1){if(!o)break;n=c[o+8>>2]|0;c[h>>2]=n;k=cG(d,n,f,g)|0|k;l=dG(u,q,p,n)|0;b[n+86>>1]=s;b[n+84>>1]=l;l=l+(e[n+80>>1]|0)|0;m=q+(e[n+82>>1]|0)|0;if(kG(v,m)|0){p=n+100|0;a[p>>0]=a[p>>0]|2}p=l;h=h+4|0;o=c[o>>2]|0;i=(l|0)>(i|0)?l:i;j=(m|0)>(j|0)?m:j}q=q+1|0;r=c[r>>2]|0}c[f+100>>2]=j;c[f+104>>2]=i;Kl(t)|0;Kl(v)|0;zx(u);return k|0}function cG(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+16|0;t=u+8|0;s=u;c[g+96>>2]=i;q=g+36|0;o=b[q>>1]|0;if(!(o&64)){if(!(b[i+36>>1]&64))n=2;else n=a[i+34>>0]|0;a[g+34>>0]=n}if(!(o&32)){n=a[i+88>>0]|0;if(n<<24>>24<=-1)if(!(b[i+36>>1]&32))n=1;else n=a[i+33>>0]|0;a[g+33>>0]=n}n=g+88|0;p=g+92|0;switch(a[p>>0]|0){case 1:{o=WF(f,c[n>>2]|0,g,j)|0;i=c[n>>2]|0;n=o;o=i+64|0;i=i+72|0;break}case 3:{o=eG(c[n>>2]|0,j)|0;i=c[n>>2]|0;n=o;o=i+16|0;i=i+24|0;break}default:{ZF(c[(c[f+16>>2]|0)+144>>2]|0,c[n>>2]|0,j);i=c[n>>2]|0;n=0;o=i+24|0;i=i+32|0}}k=+((d[g+33>>0]|0)+(d[g+34>>0]|0)<<1|0);m=+h[o>>3]+k;k=+h[i>>3]+k;i=g+38|0;do if(b[q>>1]&1){o=b[i>>1]|0;if(o<<16>>16?(r=b[g+40>>1]|0,r<<16>>16):0){if(!(m>+(o&65535)|k>+(r&65535))){m=0.0;k=0.0;break}if((a[p>>0]|0)==3){m=0.0;k=0.0;break}_l(0,122416,s)|0;n=1;m=0.0;k=0.0;break}_l(0,122449,t)|0;n=1}while(0);v=+(e[i>>1]|0);h[g+64>>3]=m>v?m:v;m=+(e[g+40>>1]|0);h[g+72>>3]=k>m?k:m;l=u;return n|0}function dG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=d+80|0;i=(e[j>>1]|0)+-1|0;h=0;a:while(1){f=c;while(1){if(h)break a;g=i+f|0;while(1){if((g|0)<(f|0)){c=f;h=1;continue a}if(Ex(a,g,b)|0)break;g=g+-1|0}f=g+1|0}}h=d+82|0;f=c;while(1){if((f|0)<(c+(e[j>>1]|0)|0))g=b;else break;while(1){if((g|0)>=((e[h>>1]|0)+b|0))break;Cx(a,f,g);g=g+1|0}f=f+1|0}return c|0}function eG(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;i=m+8|0;d=d+52|0;g=b+32|0;Pr(i,c[d>>2]|0,c[g>>2]|0);k=c[i>>2]|0;i=c[i+4>>2]|0;if((i&k|0)==-1){c[j>>2]=c[g>>2];_l(1,122499,j)|0;d=1;f=0.0;e=0.0}else{a[(c[(c[d>>2]|0)+16>>2]|0)+114>>0]=1;d=0;f=+(i|0);e=+(k|0)}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;h[b+16>>3]=e;h[b+24>>3]=f;l=m;return d|0}function fG(){return Ql(54908,c[4345]|0)|0}function gG(a,b,d){a=a|0;b=b|0;d=d|0;d=vw(12)|0;c[d>>2]=c[b>>2];return d|0}function hG(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function iG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)>(e|0)?1:((b|0)<(e|0))<<31>>31)|0}function jG(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;bb[c[a>>2]&31](a,e,1)|0;l=d;return}function kG(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(bb[c[a>>2]&31](a,e,512)|0)!=0&1;l=d;return b|0}function lG(a){a=a|0;var b=0;if(!(c[42418]|0)){b=vw((a<<2)+4|0)|0;c[42418]=b;c[b>>2]=169676;c[42429]=a}c[42430]=0;return}function mG(){_I(c[42418]|0);c[42418]=0;c[42430]=0;return}function nG(){c[42430]=0;return}function oG(){var a=0,b=0,d=0;b=c[42430]|0;d=c[42418]|0;a=1;while(1){if((a|0)>(b|0)){a=5;break}if((c[(c[d+(a<<2)>>2]|0)+4>>2]|0)==(a|0))a=a+1|0;else{a=4;break}}if((a|0)==4)ma(123205,122552,59,122558);else if((a|0)==5)return}function pG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=c[42418]|0;g=c[f+(a<<2)>>2]|0;h=c[g>>2]|0;while(1){b=(a|0)/2|0;d=c[f+(b<<2)>>2]|0;e=f+(a<<2)|0;if((c[d>>2]|0)>=(h|0))break;c[e>>2]=d;c[d+4>>2]=a;a=b}c[e>>2]=g;c[g+4>>2]=a;return}function qG(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=c[42430]|0;if((b|0)==(c[42429]|0)){_l(1,122566,d)|0;a=1}else{b=b+1|0;c[42430]=b;c[(c[42418]|0)+(b<<2)>>2]=a;pG(b);oG();a=0}l=d;return a|0}function rG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[42418]|0;f=c[e+(a<<2)>>2]|0;g=c[f>>2]|0;h=c[42430]|0;i=(h|0)/2|0;while(1){if((a|0)>(i|0))break;d=a<<1;b=c[e+(d<<2)>>2]|0;if((d|0)<(h|0)){l=d|1;j=c[e+(l<<2)>>2]|0;k=(c[b>>2]|0)<(c[j>>2]|0);d=k?l:d;b=k?j:b}if((g|0)>=(c[b>>2]|0))break;c[e+(a<<2)>>2]=b;c[b+4>>2]=a;a=d}c[e+(a<<2)>>2]=f;c[f+4>>2]=a;return}function sG(){var a=0,b=0,d=0,e=0;b=c[42430]|0;if(!b)a=0;else{e=c[42418]|0;d=e+4|0;a=c[d>>2]|0;c[d>>2]=c[e+(b<<2)>>2];b=b+-1|0;c[42430]=b;if(b|0)rG(1);oG()}return a|0}function tG(a,b){a=a|0;b=b|0;c[a>>2]=b;pG(c[a+4>>2]|0);oG();return}function uG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+16|0;j=c[m>>2]|0;j=(a[j+((c[e+12>>2]|0)*40|0)+36>>0]|0)!=(a[j+((c[e+16>>2]|0)*40|0)+36>>0]|0);k=~~((+h[d+64>>3]+-3.0-+h[d+48>>3])*.5);l=~~((+h[d+56>>3]+-3.0-+h[d+40>>3])*.5);g=(k|0)<(l|0)?k:l;n=d+4|0;f=0;while(1){b=c[n>>2]|0;if((f|0)>=(b|0)){g=f;break}i=c[d+8+(f<<2)>>2]|0;o=c[m>>2]|0;if((a[o+((c[i+12>>2]|0)*40|0)+36>>0]|0)==(a[o+((c[i+16>>2]|0)*40|0)+36>>0]|0)){g=f;break}vG(i,g);f=f+1|0}while(1){if((g|0)>=(b|0))break;f=c[d+8+(g<<2)>>2]|0;if(j|(f|0)==(e|0)){vG(f,a[(c[m>>2]|0)+((c[f+12>>2]|0)*40|0)+36>>0]|0?k:l);b=c[n>>2]|0}g=g+1|0}return}function vG(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;c[d>>2]=e+1;if((e|0)>=(b|0)){c[d>>2]=0;h[a>>3]=+h[a>>3]+16384.0}return}function wG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;x=l;l=l+112|0;u=x+64|0;t=x+96|0;m=x+32|0;v=x;w=vw(28)|0;b=mn(a)|0;s=w+4|0;c[s>>2]=b;b=vw(b*72|0)|0;r=w+12|0;c[r>>2]=b;e=v+8|0;h[e>>3]=1797693134862315708145274.0e284;h[v>>3]=1797693134862315708145274.0e284;f=v+24|0;h[f>>3]=-1797693134862315708145274.0e284;g=v+16|0;h[g>>3]=-1797693134862315708145274.0e284;i=m+16|0;j=m+8|0;k=m+24|0;d=co(a)|0;n=1797693134862315708145274.0e284;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;q=-1797693134862315708145274.0e284;while(1){if(!d)break;C=d+16|0;D=c[C>>2]|0;z=(+h[D+96>>3]+ +h[D+88>>3])*.5;z=z<1.0?1.0:z;y=+h[D+80>>3]*.5;y=y<1.0?1.0:y;E=+h[D+16>>3];B=E-z;h[m>>3]=B;z=E+z;h[i>>3]=z;E=+h[D+24>>3];A=E-y;h[j>>3]=A;y=E+y;h[k>>3]=y;B=+h[(n<B?v:m)>>3];h[v>>3]=B;A=+h[(o<A?v:m)+8>>3];h[e>>3]=A;z=+h[(p>z?v:m)+16>>3];h[g>>3]=z;y=+h[(q>y?v:m)+24>>3];h[f>>3]=y;D=b+40|0;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[D+16>>2]=c[m+16>>2];c[D+20>>2]=c[m+20>>2];c[D+24>>2]=c[m+24>>2];c[D+28>>2]=c[m+28>>2];c[b>>2]=c[b>>2]|1;c[(c[C>>2]|0)+112>>2]=b;b=b+72|0;d=eo(a,d)|0;n=B;o=A;p=z;q=y}h[v>>3]=n+-36.0;h[e>>3]=o+-36.0;h[g>>3]=p+36.0;h[f>>3]=q+36.0;D=c[r>>2]|0;f=c[s>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];f=GG(D,f,t,u)|0;if(c[42366]&1|0){r=c[r>>2]|0;C=c[s>>2]|0;D=c[t>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];xG(r,C,u,f,D)}e=w+8|0;c[e>>2]=vw((c[t>>2]|0)*72|0)|0;c[w>>2]=c[t>>2];d=c[t>>2]|0;b=0;while(1){if((b|0)>=(d|0))break;D=(c[e>>2]|0)+(b*72|0)+40|0;C=f+(b<<5)|0;c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];c[D+16>>2]=c[C+16>>2];c[D+20>>2]=c[C+20>>2];c[D+24>>2]=c[C+24>>2];c[D+28>>2]=c[C+28>>2];b=b+1|0}_I(f);c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];c[w+16>>2]=yG(w,u)|0;l=x;return w|0}function xG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0;q=l;l=l+128|0;p=q+96|0;o=q+64|0;j=q+32|0;r=q+16|0;s=q;m=+h[d+16>>3];n=+h[d>>3];k=+h[d+24>>3];g=+h[d+8>>3];i=c[13918]|0;WL(122581,i)|0;c[s>>2]=10;c[s+4>>2]=10;c[s+8>>2]=~~(m+10.0-n);c[s+12>>2]=~~(k+10.0-g);zL(i,123011,s)|0;h[r>>3]=10.0-n;h[r+8>>3]=10.0-g;zL(i,123059,r)|0;WL(123076,i)|0;d=0;while(1){if((d|0)>=(b|0))break;v=+h[a+(d*72|0)+48>>3];u=+h[a+(d*72|0)+56>>3];t=+h[a+(d*72|0)+64>>3];h[j>>3]=+h[a+(d*72|0)+40>>3];h[j+8>>3]=v;h[j+16>>3]=u;h[j+24>>3]=t;zL(i,123095,j)|0;d=d+1|0}WL(123113,i)|0;d=0;while(1){if((d|0)>=(f|0))break;t=+h[e+(d<<5)+8>>3];u=+h[e+(d<<5)+16>>3];v=+h[e+(d<<5)+24>>3];h[o>>3]=+h[e+(d<<5)>>3];h[o+8>>3]=t;h[o+16>>3]=u;h[o+24>>3]=v;zL(i,123132,o)|0;d=d+1|0}WL(123150,i)|0;h[p>>3]=n;h[p+8>>3]=g;h[p+16>>3]=m;h[p+24>>3]=k;zL(i,123132,p)|0;WL(122897,i)|0;l=q;return}function yG(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=l;l=l+32|0;t=A+16|0;k=A;w=c[a>>2]|0;y=WC(w<<2|2)|0;z=Ql(54944,c[4345]|0)|0;v=Ql(54980,c[4345]|0)|0;w=vw(w<<7)|0;f=vw(c[a>>2]<<4)|0;x=a+8|0;g=b+16|0;i=k+8|0;j=b+24|0;m=b+8|0;d=0;while(1){if((d|0)>=(c[a>>2]|0))break;n=c[x>>2]|0;o=n+(d*72|0)|0;c[n+(d*72|0)+32>>2]=4;p=n+(d*72|0)+36|0;c[p>>2]=f+(d<<2<<2);q=n+(d*72|0)+40|0;e=+h[n+(d*72|0)+56>>3];if(e<+h[g>>3]){h[k>>3]=e;h[i>>3]=+h[n+(d*72|0)+48>>3];c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=zG(y,z,t,w,1)|0;c[s+20>>2]=o;c[c[p>>2]>>2]=s}e=+h[n+(d*72|0)+64>>3];if(e<+h[j>>3]){h[k>>3]=+h[q>>3];h[i>>3]=e;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=zG(y,v,t,w,0)|0;c[s+20>>2]=o;c[(c[p>>2]|0)+4>>2]=s}if(+h[q>>3]>+h[b>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=zG(y,z,t,w,1)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+8>>2]=s}if(+h[n+(d*72|0)+48>>3]>+h[m>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=zG(y,v,t,w,0)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+12>>2]=s}d=d+1|0}o=vw(c[y>>2]<<2)|0;r=a+4|0;s=a+12|0;p=t+8|0;m=0;q=0;n=0;while(1){d=c[r>>2]|0;if((n|0)>=(d|0)){b=0;break}g=c[s>>2]|0;i=g+(n*72|0)|0;j=g+(n*72|0)+36|0;c[j>>2]=o+(m<<2);b=g+(n*72|0)+40|0;c[t>>2]=c[b>>2];c[t+4>>2]=c[b+4>>2];c[t+8>>2]=c[b+8>>2];c[t+12>>2]=c[b+12>>2];b=g+(n*72|0)+56|0;k=g+(n*72|0)+32|0;d=bb[c[v>>2]&31](v,t,512)|0;while(1){if(!d)break;if(!(+h[d+8>>3]<+h[b>>3]))break;C=c[d>>2]|0;B=c[j>>2]|0;f=c[k>>2]|0;c[k>>2]=f+1;c[B+(f<<2)>>2]=C;c[(c[d>>2]|0)+24>>2]=i;d=bb[c[v>>2]&31](v,d,8)|0}f=g+(n*72|0)+64|0;d=bb[c[z>>2]&31](z,t,512)|0;while(1){if(!d){u=20;break}e=+h[f>>3];if(!(+h[d+16>>3]<e))break;b=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=b;c[(c[d>>2]|0)+24>>2]=i;d=bb[c[z>>2]&31](z,d,8)|0}if((u|0)==20){u=0;e=+h[f>>3]}h[p>>3]=e;b=g+(n*72|0)+56|0;d=bb[c[v>>2]&31](v,t,512)|0;while(1){if(!d){u=25;break}e=+h[b>>3];if(!(+h[d+8>>3]<e))break;D=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=D;c[(c[d>>2]|0)+20>>2]=i;d=bb[c[v>>2]&31](v,d,8)|0}if((u|0)==25){u=0;e=+h[b>>3]}h[t>>3]=e;h[p>>3]=+h[g+(n*72|0)+48>>3];d=bb[c[z>>2]&31](z,t,512)|0;while(1){if(!d)break;if(!(+h[d+16>>3]<+h[f>>3]))break;B=c[d>>2]|0;C=c[j>>2]|0;D=c[k>>2]|0;c[k>>2]=D+1;c[C+(D<<2)>>2]=B;c[(c[d>>2]|0)+20>>2]=i;d=bb[c[z>>2]&31](z,d,8)|0}D=c[k>>2]|0;m=D+m|0;q=(D|0)>(q|0)?D:q;n=n+1|0}while(1){if((b|0)>=(d|0))break;AG((c[s>>2]|0)+(b*72|0)|0);b=b+1|0;d=c[r>>2]|0}d=c[y>>2]|0;D=c[y+16>>2]|0;c[D+(d*40|0)+32>>2]=d;d=d+1|0;c[D+(d*40|0)+32>>2]=d;VC(y,q);d=0;while(1){if((d|0)>=(c[a>>2]|0))break;BG((c[x>>2]|0)+(d*72|0)|0,y);d=d+1|0}Kl(z)|0;Kl(v)|0;_I(w);CG(y);TC(y);l=A;return y|0}function zG(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=bb[c[d>>2]&31](d,e,512)|0;do if(!h){b=XC(b)|0;if(!f)ma(122994,122942,291,123001);else{h=c[b+32>>2]|0;i=f+(h<<5)|0;f=f+(h<<5)+8|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[i>>2]=b;a[b+36>>0]=g;bb[c[d>>2]&31](d,i,1)|0;break}}else i=h;while(0);return c[i>>2]|0}function AG(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;a:do if((+h[b+64>>3]+-3.0-+h[b+48>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break a;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;b:do if(a[d+36>>0]|0){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|8;d=c[c[d+36>>2]>>2]|0;if(!d)break b;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|8;d=c[(c[e+36>>2]|0)+8>>2]|0;if(!d)break b;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);c:do if((+h[b+56>>3]+-3.0-+h[b+40>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break c;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;d:do if(!(a[d+36>>0]|0)){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|16;d=c[(c[d+36>>2]|0)+4>>2]|0;if(!d)break d;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|16;d=c[(c[e+36>>2]|0)+12>>2]|0;if(!d)break d;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);return}function BG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;g=+h[a+56>>3]-+h[a+40>>3];i=+h[a+64>>3]-+h[a+48>>3];f=(i+g)*.5+500.0;if((i+-3.0)*.5<2.0){l=(c[a>>2]&8|0)==0;f=l?16384.0:f;p=l?16384.0:g}else p=g;if((g+-3.0)*.5<2.0){l=(c[a>>2]&16|0)==0;i=l?16384.0:i;f=l?16384.0:f}l=a+36|0;d=c[l>>2]|0;e=c[d+8>>2]|0;if((e|0)!=0?(j=c[d+4>>2]|0,(j|0)!=0):0){j=YC(b,e,j,f)|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+1;c[a+8+(d<<2)>>2]=j;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(k=c[d>>2]|0,(k|0)!=0):0){k=YC(b,e,k,f)|0;j=a+4|0;d=c[j>>2]|0;c[j>>2]=d+1;c[a+8+(d<<2)>>2]=k;d=c[l>>2]|0}e=c[d+8>>2]|0;if((e|0)!=0?(m=c[d+12>>2]|0,(m|0)!=0):0){m=YC(b,e,m,f)|0;k=a+4|0;d=c[k>>2]|0;c[k>>2]=d+1;c[a+8+(d<<2)>>2]=m;d=c[l>>2]|0}e=c[d+12>>2]|0;if((e|0)!=0?(n=c[d>>2]|0,(n|0)!=0):0){n=YC(b,e,n,f)|0;m=a+4|0;d=c[m>>2]|0;c[m>>2]=d+1;c[a+8+(d<<2)>>2]=n;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(o=c[d+12>>2]|0,(o|0)!=0):0){o=YC(b,e,o,i)|0;n=a+4|0;d=c[n>>2]|0;c[n>>2]=d+1;c[a+8+(d<<2)>>2]=o;d=c[l>>2]|0}e=c[d+8>>2]|0;if(e|0?(q=c[d>>2]|0,q|0):0){b=YC(b,e,q,p)|0;o=a+4|0;q=c[o>>2]|0;c[o>>2]=q+1;c[a+8+(q<<2)>>2]=b}return}function CG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;f=a+16|0;g=c[13918]|0;e=0;while(1){if((e|0)>=(c[a>>2]|0)){b=10;break}b=c[f>>2]|0;d=b+(e*40|0)+20|0;if((c[d>>2]|0)==0?(c[h>>2]=e,zL(g,122907,h)|0,(c[d>>2]|0)==0):0){b=5;break}b=b+(e*40|0)+24|0;if((c[b>>2]|0)==0?(c[i>>2]=e,zL(g,122959,i)|0,(c[b>>2]|0)==0):0){b=8;break}e=e+1|0}if((b|0)==5)ma(122929,122942,311,122949);else if((b|0)==8)ma(122981,122942,313,122949);else if((b|0)==10){l=j;return}}function DG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[c+8>>3];if(!(e>f))if(!(e<f)){f=+h[b>>3];e=+h[c>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function EG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(!(e<f)){f=+h[b+8>>3];e=+h[c+8>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function FG(a){a=a|0;var b=0,d=0;d=a+8|0;_I(c[(c[d>>2]|0)+36>>2]|0);b=a+12|0;_I(c[(c[b>>2]|0)+36>>2]|0);_I(c[d>>2]|0);_I(c[b>>2]|0);_C(c[a+16>>2]|0);Kl(c[a+20>>2]|0)|0;Kl(c[a+24>>2]|0)|0;_I(a);return}function GG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+32|0;h=p;i=b<<2;f=i+4|0;i=i+5|0;o=ww(i*56|0)|0;i=vw(i<<2)|0;g=f*5|1;j=ww(g*72|0)|0;m=g<<5;k=vw(m)|0;m=vw(m)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];HG(a,b,h,o,0);yM(173);IG(f,i);SG(f,o,i,g,j)|0;n=JG(f,o,j,0,k)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];HG(a,b,h,o,1);IG(f,i);SG(f,o,i,g,j)|0;f=JG(f,o,j,1,m)|0;g=vw(O(n<<5,f)|0)|0;b=0;a=0;while(1){if((b|0)>=(f|0))break;h=m+(b<<5)|0;e=0;while(1){if((e|0)>=(n|0))break;q=a+((KG(g+(a<<5)|0,h,k+(e<<5)|0)|0)!=0&1)|0;e=e+1|0;a=q}b=b+1|0}q=yw(g,a<<5)|0;_I(o);_I(i);_I(j);_I(k);_I(m);c[d>>2]=a;l=p;return q|0}function HG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=l;l=l+96|0;h=j+64|0;i=j;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];QG(h,f,1,i);d=RG(e,1,i)|0;g=0;while(1){if((g|0)>=(b|0))break;k=a+(g*72|0)+40|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];QG(h,f,0,i);d=RG(e,d,i)|0;g=g+1|0}l=j;return}function IG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=0;while(1){if((d|0)>(a|0))break;c[b+(d<<2)>>2]=d;d=d+1|0}g=a+1|0;d=1;while(1){if((d|0)>(a|0))break;h=~~(+AM()*+(g-d|0)+ +(d|0));e=b+(d<<2)|0;f=b+(h<<2)|0;if((d|0)!=(h|0)){h=c[e>>2]|0;c[e>>2]=c[f>>2];c[f>>2]=h}d=d+1|0}return}function JG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a*5|0;j=g+1|0;l=vw(j<<2)|0;c[42431]=vw(j<<4)|0;c[42432]=vw((a*56|0)+56|0)|0;j=vw(a<<2)|0;c[42433]=j;k=0;while(1){if((k|0)>(g|0))break;if(LG(d+(k*72|0)|0,b)|0)break;k=k+1|0}h=c[42431]|0;i=c[42432]|0;g=1;while(1){if((g|0)>(a|0))break;c[h+(g<<4)+8>>2]=c[b+(g*56|0)+48>>2];m=b+(g*56|0)+44|0;c[h+(g<<4)+4>>2]=c[m>>2];c[h+(g<<4)>>2]=g;n=i+(g*56|0)|0;o=b+(g*56|0)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[i+(g*56|0)+16>>2]=c[m>>2];c[i+(g*56|0)+32>>2]=g;c[i+(g*56|0)+48>>2]=1;g=g+1|0}c[42434]=a;c[42435]=0;c[j>>2]=1;g=c[d+(k*72|0)+40>>2]|0;if((g|0)<=0){g=c[d+(k*72|0)+48>>2]|0;if((g|0)>0)g=MG(l,f,0,b,d,0,k,g,e,2)|0;else g=0}else g=MG(l,f,0,b,d,0,k,g,e,1)|0;_I(l);_I(c[42431]|0);_I(c[42432]|0);_I(c[42433]|0);return g|0}function KG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[(+h[b>>3]>+h[c>>3]?b:c)>>3];f=+h[(+h[b+16>>3]<+h[c+16>>3]?b:c)+16>>3];h[a+16>>3]=f;h[a>>3]=g;e=+h[(+h[b+8>>3]>+h[c+8>>3]?b:c)+8>>3];d=+h[(+h[b+24>>3]<+h[c+24>>3]?b:c)+24>>3];h[a+24>>3]=d;h[a+8>>3]=e;return !(g>=f)&!(e>=d)&1|0}function LG(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a+4>>2]|0;do if((c[a+68>>2]|0)!=2?!((f|0)<1|(c[a>>2]|0)<1):0){if(!((c[a+40>>2]|0)<1?(c[a+44>>2]|0)<1:0)){if((c[a+48>>2]|0)>=1){a=0;break}if((c[a+52>>2]|0)>=1){a=0;break}}d=+h[b+(f*56|0)+24>>3];e=+h[b+(f*56|0)+8>>3];if(!(d>e+1.0e-07))if(d<e+-1.0e-07)a=0;else a=+h[b+(f*56|0)+16>>3]>+h[b+(f*56|0)>>3]&1;else a=1}else a=0;while(0);return a|0}function MG(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0;D=(k|0)==0;C=i;a:while(1){y=f+(C*72|0)|0;if((C|0)<1)break;i=a+(C<<2)|0;if(c[i>>2]|0)break;c[i>>2]=1;v=f+(C*72|0)+8|0;t=f+(C*72|0)+16|0;p=+h[t>>3];w=f+(C*72|0)+24|0;x=f+(C*72|0)+32|0;o=+h[x>>3];if((p>o?(A=c[y>>2]|0,I=+h[e+(A*56|0)>>3],I==+h[e+(A*56|0)+16>>3]):0)?(A=c[f+(C*72|0)+4>>2]|0,K=+h[e+(A*56|0)>>3],K==+h[e+(A*56|0)+16>>3]):0){i=b+(d<<5)|0;if(D){h[i>>3]=I;q=p;p=K}else{h[i>>3]=o;q=-I;o=-K}h[b+(d<<5)+8>>3]=o;h[b+(d<<5)+16>>3]=p;h[b+(d<<5)+24>>3]=q;d=d+1|0}i=f+(C*72|0)+40|0;z=c[i>>2]|0;do if((z|0)<1?(L=f+(C*72|0)+44|0,(c[L>>2]|0)<1):0){i=f+(C*72|0)+48|0;n=f+(C*72|0)+52|0;if((c[i>>2]|0)>0?(M=c[n>>2]|0,(M|0)>0):0){m=c[f+(M*72|0)>>2]|0;l=c[y>>2]|0;if((M|0)==(j|0)){l=NG(g,l,m)|0;d=MG(a,b,d,e,f,g,c[n>>2]|0,C,k,1)|0;g=l;l=1;break}else{l=NG(g,m,l)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;g=l;i=n;l=1;break}}d=MG(a,b,d,e,f,g,z,C,k,2)|0;d=MG(a,b,d,e,f,g,c[L>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;i=n;l=1}else P=19;while(0);do if((P|0)==19){P=0;A=f+(C*72|0)+48|0;r=c[A>>2]|0;if((r|0)<1?(N=f+(C*72|0)+52|0,(c[N>>2]|0)<1):0){n=f+(C*72|0)+44|0;if((z|0)>0?(O=c[n>>2]|0,(O|0)>0):0){m=c[f+(C*72|0)+4>>2]|0;l=c[f+(z*72|0)+4>>2]|0;if((O|0)==(j|0)){l=NG(g,l,m)|0;d=MG(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;g=l;l=2;break}else{l=NG(g,m,l)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=n;l=2;break}}d=MG(a,b,d,e,f,g,z,C,k,2)|0;d=MG(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;i=N;l=1;break}u=f+(C*72|0)+44|0;s=c[u>>2]|0;m=(s|0)>0;if((z|0)>0){if(m){if((r|0)>0?(E=f+(C*72|0)+52|0,F=c[E>>2]|0,(F|0)>0):0){n=c[f+(F*72|0)>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if(!((l|0)==2&(F|0)==(j|0))?!((l|0)==1&(s|0)==(j|0)):0){l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=E;l=1;break}l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[E>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}m=c[y>>2]|0;if(+B(+(+h[x>>3]-+h[e+(m*56|0)+24>>3]))<=1.0e-07?+B(+(+h[w>>3]-+h[e+(m*56|0)+16>>3]))<=1.0e-07:0){n=c[f+(z*72|0)+4>>2]|0;m=c[e+(m*56|0)+44>>2]|0;if((l|0)==1&(z|0)==(j|0)){l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+52|0;l=1;break}else{l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;l=2;break}}n=c[f+(C*72|0)+4>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if((l|0)==1&(s|0)==(j|0)){l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;g=l;l=2;break}else{l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=u;l=2;break}}}else if(!m)break a;if((r|0)>0?(G=f+(C*72|0)+52|0,H=c[G>>2]|0,(H|0)>0):0){n=c[y>>2]|0;if(+B(+(+h[t>>3]-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0){m=c[f+(H*72|0)>>2]|0;if((l|0)==2&(r|0)==(j|0)){l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}else{l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}}m=c[f+(H*72|0)>>2]|0;n=c[e+((c[f+(C*72|0)+4>>2]|0)*56|0)+44>>2]|0;if((l|0)==2&(H|0)==(j|0)){l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}else{l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}}o=+h[t>>3];n=c[y>>2]|0;if(((+B(+(o-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0)?(J=c[f+(C*72|0)+4>>2]|0,+B(+(+h[x>>3]-+h[e+(J*56|0)+8>>3]))<=1.0e-07):0)?+B(+(+h[w>>3]-+h[e+(J*56|0)>>3]))<=1.0e-07:0)if((l|0)==1){l=NG(g,n,J)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=NG(g,J,n)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}j=c[f+(C*72|0)+4>>2]|0;if(((+B(+(o-+h[e+(j*56|0)+24>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(j*56|0)+16>>3]))<=1.0e-07:0)?+B(+(+h[x>>3]-+h[e+(n*56|0)+24>>3]))<=1.0e-07:0)?+B(+(+h[w>>3]-+h[e+(n*56|0)+16>>3]))<=1.0e-07:0){m=c[e+(j*56|0)+44>>2]|0;j=c[e+(n*56|0)+44>>2]|0;if((l|0)==1){l=NG(g,j,m)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=NG(g,m,j)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}}d=MG(a,b,d,e,f,g,z,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;i=f+(C*72|0)+52|0;l=1}while(0);j=C;C=c[i>>2]|0}return d|0}function NG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;r=f+4|0;i=f;e=(c[42435]|0)+1|0;c[42435]=e;m=c[42432]|0;OG(b,d,r,i);r=c[r>>2]|0;h=c[m+(b*56|0)+32+(r<<2)>>2]|0;i=c[m+(d*56|0)+32+(c[i>>2]<<2)>>2]|0;n=c[42434]|0;g=n+1|0;n=n+2|0;c[42434]=n;q=c[42431]|0;c[q+(g<<4)>>2]=b;c[q+(n<<4)>>2]=d;o=q+(h<<4)+4|0;p=q+(g<<4)+4|0;c[p>>2]=c[o>>2];c[q+(c[o>>2]<<4)+8>>2]=g;c[q+(g<<4)+8>>2]=n;c[q+(n<<4)+4>>2]=g;j=q+(i<<4)+8|0;c[q+(n<<4)+8>>2]=c[j>>2];c[q+(c[j>>2]<<4)+4>>2]=n;c[o>>2]=i;c[j>>2]=h;j=m+(b*56|0)+48|0;o=c[j>>2]|0;i=m+(d*56|0)+48|0;k=c[i>>2]|0;c[m+(b*56|0)+16+(r<<2)>>2]=d;c[m+(b*56|0)+32+(o<<2)>>2]=g;c[m+(b*56|0)+16+(o<<2)>>2]=c[q+(c[p>>2]<<4)>>2];c[m+(d*56|0)+32+(k<<2)>>2]=n;c[m+(d*56|0)+16+(k<<2)>>2]=b;c[j>>2]=(c[j>>2]|0)+1;c[i>>2]=(c[i>>2]|0)+1;d=c[42433]|0;c[d+(a<<2)>>2]=h;c[d+(e<<2)>>2]=g;l=f;return e|0}function OG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0;l=c[42432]|0;m=l+(a*56|0)|0;n=l+(b*56|0)|0;f=0;g=-4.0;i=0;while(1){if((i|0)==4)break;h=c[l+(a*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(j=+PG(m,l+(h*56|0)|0,n),j>g):0){f=i;g=j}i=i+1|0}c[d>>2]=f;f=0;i=0;g=-4.0;while(1){if((i|0)==4)break;h=c[l+(b*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(k=+PG(n,l+(h*56|0)|0,m),k>g):0){f=i;g=k}i=i+1|0}c[e>>2]=f;return}function PG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;g=+h[a>>3];i=+h[b>>3]-g;d=+h[a+8>>3];f=+h[b+8>>3]-d;g=+h[c>>3]-g;d=+h[c+8>>3]-d;e=d*f+g*i;if(!(d*i-g*f>=0.0))d=-e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)))+-2.0;else d=e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)));return +d}function QG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,l=0.0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];i=e+32|0;j=a+16|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];if(!d){f=a+8|0;g=j;i=a+24|0;d=a}else{f=a+24|0;g=a;i=a+8|0;d=j}k=+h[g>>3];l=+h[i>>3];h[e+16>>3]=+h[d>>3];h[e+24>>3]=l;h[e+48>>3]=k;h[e+56>>3]=+h[f>>3];a:do if(b|0){d=0;while(1){if((d|0)==4)break a;j=e+(d<<4)+8|0;l=+h[j>>3];b=e+(d<<4)|0;h[j>>3]=+h[b>>3];h[b>>3]=-l;d=d+1|0}}while(0);return}function RG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b+3|0;i=b+1|0;j=b+2|0;k=a+(b*56|0)+44|0;l=a+(h*56|0)+44|0;e=0;f=b;while(1){if((f|0)>(h|0))break;do if((f|0)!=(b|0))if((f|0)==(h|0)){c[l>>2]=b;g=j;break}else{c[a+(f*56|0)+44>>2]=f+1;g=f+-1|0;break}else{c[k>>2]=i;g=h}while(0);c[a+(f*56|0)+48>>2]=g;c[a+(f*56|0)+32>>2]=0;n=a+(f*56|0)|0;m=d+(e<<4)|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];UN(a+(g*56|0)+16|0,m|0,16)|0;e=e+1|0;f=f+1|0}return b+4|0}function SG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;c[42436]=e<<1;c[42437]=e;k=vw(e*80|0)|0;c[42438]=1;c[42439]=1;VN(f|0,0,e*72|0)|0;g=TG(c[d+4>>2]|0,b,f,k)|0;e=1;while(1){if((e|0)>(a|0))break;c[b+(e*56|0)+40>>2]=g;c[b+(e*56|0)+36>>2]=g;e=e+1|0}j=UG(a)|0;g=2;i=1;while(1){if((i|0)>(j|0))break;e=VG(a,i+-1|0)|0;h=VG(a,i)|0;while(1){if((e|0)>=(h|0)){e=1;break}WG(c[d+(g<<2)>>2]|0,b,f,k);e=e+1|0;g=g+1|0}while(1){if((e|0)>(a|0))break;XG(e,b,f,k);e=e+1|0}i=i+1|0}e=VG(a,j)|0;while(1){if((e|0)>=(a|0))break;WG(c[d+(g<<2)>>2]|0,b,f,k);g=g+1|0;e=e+1|0}_I(k);return c[42438]|0}function TG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=aH()|0;c[e+(f*40|0)>>2]=2;s=e+(f*40|0)+8|0;k=b+(a*56|0)|0;l=b+(a*56|0)+16|0;eH(s,k,l);n=aH()|0;c[e+(f*40|0)+36>>2]=n;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+28>>2]=f;j=aH()|0;c[e+(f*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=2;r=e+(j*40|0)+8|0;fH(r,k,l);c[e+(j*40|0)+28>>2]=f;l=aH()|0;c[e+(j*40|0)+32>>2]=l;c[e+(l*40|0)>>2]=3;c[e+(l*40|0)+28>>2]=j;k=aH()|0;c[e+(j*40|0)+36>>2]=k;c[e+(k*40|0)>>2]=1;c[e+(k*40|0)+4>>2]=a;c[e+(k*40|0)+28>>2]=j;j=aH()|0;c[e+(k*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=3;c[e+(j*40|0)+28>>2]=k;g=aH()|0;c[e+(k*40|0)+36>>2]=g;c[e+(g*40|0)>>2]=3;c[e+(g*40|0)+28>>2]=k;k=$G(d)|0;i=$G(d)|0;m=$G(d)|0;o=$G(d)|0;p=d+(k*72|0)+8|0;q=d+(i*72|0)+8|0;t=d+(o*72|0)+24|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];UN(q|0,s|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=d+(k*72|0)+24|0;q=d+(i*72|0)+24|0;s=d+(m*72|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];UN(q|0,r|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[d+(o*72|0)+16>>3]=1073741824.0;h[d+(o*72|0)+8>>3]=1073741824.0;h[d+(m*72|0)+32>>3]=-1073741824.0;h[d+(m*72|0)+24>>3]=-1073741824.0;c[d+(i*72|0)>>2]=a;c[d+(k*72|0)+4>>2]=a;c[d+(i*72|0)+40>>2]=o;c[d+(k*72|0)+40>>2]=o;c[d+(i*72|0)+48>>2]=m;c[d+(k*72|0)+48>>2]=m;c[d+(m*72|0)+40>>2]=k;c[d+(o*72|0)+48>>2]=k;c[d+(m*72|0)+44>>2]=i;c[d+(o*72|0)+52>>2]=i;c[d+(k*72|0)+56>>2]=j;c[d+(i*72|0)+56>>2]=g;c[d+(m*72|0)+56>>2]=l;c[d+(o*72|0)+56>>2]=n;c[d+(i*72|0)+68>>2]=1;c[d+(k*72|0)+68>>2]=1;c[d+(o*72|0)+68>>2]=1;c[d+(m*72|0)+68>>2]=1;c[e+(n*40|0)+24>>2]=o;c[e+(l*40|0)+24>>2]=m;c[e+(j*40|0)+24>>2]=k;c[e+(g*40|0)+24>>2]=i;c[b+(a*56|0)+32>>2]=1;return f|0}function UG(a){a=a|0;var b=0.0;b=+(a|0);a=0;while(1){if(!(b>=1.0))break;b=+CJ(b);a=a+1|0}return a+-1|0}function VG(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+(a|0);c=d;a=0;while(1){if((a|0)>=(b|0))break;c=+CJ(c);a=a+1|0}return ~~+N(+(d/c))|0}function WG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;W=l;l=l+96|0;S=W+32|0;f=W+16|0;T=W;s=S;k=b+(a*56|0)|0;r=s+56|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));U=S+16|0;V=S+24|0;i=+h[V>>3];H=S+8|0;j=+h[H>>3];do if(!(i>j+1.0e-07)){if(!(i<j+-1.0e-07)?+h[U>>3]>+h[S>>3]:0){G=4;break}G=(_G(a,b,1)|0)==0;f=c[S+36>>2]|0;if(G){n=0;G=7}else{f=YG(S,U,f,b,e)|0;G=20}}else G=4;while(0);if((G|0)==4){c[f>>2]=c[S>>2];c[f+4>>2]=c[S+4>>2];c[f+8>>2]=c[S+8>>2];c[f+12>>2]=c[S+12>>2];c[S>>2]=c[U>>2];c[S+4>>2]=c[U+4>>2];c[S+8>>2]=c[U+8>>2];c[S+12>>2]=c[U+12>>2];c[U>>2]=c[f>>2];c[U+4>>2]=c[f+4>>2];c[U+8>>2]=c[f+8>>2];c[U+12>>2]=c[f+12>>2];E=S+36|0;F=c[E>>2]|0;G=S+40|0;f=c[G>>2]|0;c[E>>2]=f;c[G>>2]=F;if(!(_G(a,b,2)|0)){n=1;G=7}else{f=YG(S,U,f,b,e)|0;G=19}}if((G|0)==7){m=YG(S,U,f,b,e)|0;f=$G(d)|0;c[d+(f*72|0)+68>>2]=1;s=d+(f*72|0)|0;k=d+(m*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[H>>3];h[d+(f*72|0)+16>>3]=q;h[d+(m*72|0)+32>>3]=q;q=+h[S>>3];h[d+(f*72|0)+8>>3]=q;h[d+(m*72|0)+24>>3]=q;c[d+(m*72|0)+48>>2]=f;c[d+(m*72|0)+52>>2]=0;c[d+(f*72|0)+40>>2]=m;c[d+(f*72|0)+44>>2]=0;g=c[d+(f*72|0)+48>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}g=c[d+(f*72|0)+52>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}E=aH()|0;G=aH()|0;F=d+(m*72|0)+56|0;D=c[F>>2]|0;c[e+(D*40|0)>>2]=2;C=e+(D*40|0)+8|0;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[e+(D*40|0)+4>>2]=a;c[e+(D*40|0)+32>>2]=G;c[e+(D*40|0)+36>>2]=E;c[e+(E*40|0)>>2]=3;c[e+(E*40|0)+24>>2]=m;c[e+(E*40|0)+28>>2]=D;c[e+(G*40|0)>>2]=3;c[e+(G*40|0)+24>>2]=f;c[e+(G*40|0)+28>>2]=D;c[F>>2]=E;c[d+(f*72|0)+56>>2]=G;if(n)G=19;else G=20}if((G|0)==19)if(!(_G(a,b,1)|0)){g=1;G=21}else{g=1;G=32}else if((G|0)==20)if(!(_G(a,b,2)|0)){g=0;G=21}else{g=0;G=32}if((G|0)==21){o=YG(U,S,c[S+40>>2]|0,b,e)|0;n=$G(d)|0;c[d+(n*72|0)+68>>2]=1;s=d+(n*72|0)|0;k=d+(o*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[V>>3];h[d+(n*72|0)+16>>3]=q;h[d+(o*72|0)+32>>3]=q;q=+h[U>>3];h[d+(n*72|0)+8>>3]=q;h[d+(o*72|0)+24>>3]=q;c[d+(o*72|0)+48>>2]=n;c[d+(o*72|0)+52>>2]=0;c[d+(n*72|0)+40>>2]=o;c[d+(n*72|0)+44>>2]=0;k=c[d+(n*72|0)+48>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}k=c[d+(n*72|0)+52>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}D=aH()|0;F=aH()|0;E=d+(o*72|0)+56|0;C=c[E>>2]|0;c[e+(C*40|0)>>2]=2;A=e+(C*40|0)+8|0;c[A>>2]=c[U>>2];c[A+4>>2]=c[U+4>>2];c[A+8>>2]=c[U+8>>2];c[A+12>>2]=c[U+12>>2];c[e+(C*40|0)+4>>2]=a;c[e+(C*40|0)+32>>2]=F;c[e+(C*40|0)+36>>2]=D;c[e+(D*40|0)>>2]=3;c[e+(D*40|0)+24>>2]=o;c[e+(D*40|0)+28>>2]=C;c[e+(F*40|0)>>2]=3;c[e+(F*40|0)+24>>2]=n;c[e+(F*40|0)+28>>2]=C;c[E>>2]=D;c[d+(n*72|0)+56>>2]=F;F=f;f=0}else if((G|0)==32){F=f;o=YG(U,S,c[S+40>>2]|0,b,e)|0;f=1}a:do if((F|0)>0){D=d+(o*72|0)+24|0;E=d+(o*72|0)+32|0;C=(f|0)!=0;y=g?b+(a*56|0)+48|0:b+(a*56|0)+44|0;z=T+8|0;g=0;f=0;x=F;b:while(1){k=d+(x*72|0)|0;v=d+(x*72|0)+24|0;if(!(bH(v,D)|0))break a;m=d+(x*72|0)+56|0;u=c[m>>2]|0;n=aH()|0;p=aH()|0;c[e+(u*40|0)>>2]=1;c[e+(u*40|0)+4>>2]=a;c[e+(u*40|0)+32>>2]=n;c[e+(u*40|0)+36>>2]=p;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+24>>2]=x;c[e+(n*40|0)+28>>2]=u;c[e+(p*40|0)>>2]=3;w=$G(d)|0;c[e+(p*40|0)+24>>2]=w;A=d+(w*72|0)|0;c[d+(w*72|0)+68>>2]=1;c[e+(p*40|0)+28>>2]=u;g=(x|0)==(F|0)?w:g;u=d+(x*72|0)+32|0;if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0)f=w;s=A;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));c[m>>2]=n;c[d+(w*72|0)+56>>2]=p;t=d+(x*72|0)+48|0;m=d+(x*72|0)+52|0;k=(c[m>>2]|0)<1;do if((c[t>>2]|0)<1){if(k)break b;s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(M=d+(x*72|0)+44|0,N=c[M>>2]|0,(N|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=N;c[d+(w*72|0)+44>>2]=-1;c[M>>2]=-1;c[d+(N*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=N;c[M>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=N}else{c[d+(w*72|0)+44>>2]=-1;t=d+(w*72|0)+40|0;c[t>>2]=c[M>>2];n=c[s>>2]|0;c[M>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[t>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=77;while(0);do if((G|0)==77){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(ZG(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(ZG(k,b,S)|0)!=0:0){c[d+((c[m>>2]|0)*72|0)+40>>2]=x;n=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+52>>2]|0)*72|0)+44>>2]=w;n=m;k=x}c[n>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[m>>2]|0;break}k=c[m>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(O=c[p>>2]|0,P=(n|0)==(x|0),(O|0)>0):0){c[d+(k*72|0)+60>>2]=P?O:n;c[d+(k*72|0)+64>>2]=P?1:2}c[m>>2]=x;c[p>>2]=w}else{if(!k){i=+h[u>>3];j=+h[H>>3];q=i-j;if(!(+B(+q)<=1.0e-07)){h[z>>3]=i;i=+h[S>>3];h[T>>3]=(+h[U>>3]-i)*(q/(+h[V>>3]-j))+i;s=(cH(T,v)|0)!=0}else s=+h[v>>3]>+h[S>>3];r=d+(x*72|0)+40|0;k=c[r>>2]|0;do if((k|0)>0?(Q=d+(x*72|0)+44|0,R=c[Q>>2]|0,(R|0)>0):0){p=d+(x*72|0)+60|0;k=c[p>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=R;c[d+(w*72|0)+44>>2]=-1;c[Q>>2]=-1;c[d+(R*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=R;c[Q>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;n=w;m=R}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[Q>>2];m=c[r>>2]|0;c[Q>>2]=m;c[r>>2]=k;c[d+(k*72|0)+48>>2]=x;n=x;k=c[X>>2]|0}c[d+(m*72|0)+48>>2]=n;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[p>>2]=0}else G=106;while(0);do if((G|0)==106){G=0;m=d+(k*72|0)+48|0;n=c[m>>2]|0;k=d+(k*72|0)+52|0;if((n|0)>0?(c[k>>2]|0)>0:0){k=c[d+(n*72|0)+4>>2]|0;if((k|0)>0?(ZG(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[r>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;break}c[m>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;c[d+(k*72|0)+44>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=w;c[d+(X*72|0)+44>>2]=-1;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;c[k>>2]=-1;k=-1}else G=116;do if((G|0)==116){G=0;k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;m=d+(k*72|0)+44|0;if(s){c[m>>2]=w;X=d+(x*72|0)+52|0;v=c[X>>2]|0;c[d+(v*72|0)+40>>2]=w;c[d+(v*72|0)+44>>2]=-1;c[X>>2]=-1;break}else{c[m>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=x;c[d+(X*72|0)+44>>2]=w;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;k=c[k>>2]|0;break}}while(0);break}s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(I=d+(x*72|0)+44|0,J=c[I>>2]|0,(J|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=J;c[d+(w*72|0)+44>>2]=-1;c[I>>2]=-1;c[d+(J*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=J;c[I>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=J}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[I>>2];n=c[s>>2]|0;c[I>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[X>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=51;while(0);do if((G|0)==51){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(ZG(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(ZG(k,b,S)|0)!=0:0){c[d+((c[t>>2]|0)*72|0)+40>>2]=x;m=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+48>>2]|0)*72|0)+44>>2]=w;k=x}c[m>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[t>>2]|0;break}k=c[t>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(K=c[p>>2]|0,L=(n|0)==(x|0),(K|0)>0):0){c[d+(k*72|0)+60>>2]=L?K:n;c[d+(k*72|0)+64>>2]=L?1:2}c[m>>2]=x;c[p>>2]=w}while(0);c[A>>2]=a;c[d+(x*72|0)+4>>2]=a;if((k|0)>0)x=k;else break a}XL(123235,19,1,c[13918]|0)|0}else{g=0;f=0}while(0);dH(a,F,o,1,d,e);dH(a,g,f,2,d,e);c[b+(a*56|0)+32>>2]=1;l=W;return}function XG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!(c[b+(a*56|0)+32>>2]|0)){f=b+(a*56|0)|0;g=b+(a*56|0)+16|0;h=b+(a*56|0)+36|0;c[h>>2]=c[d+((YG(f,g,c[h>>2]|0,b,e)|0)*72|0)+56>>2];a=b+(a*56|0)+40|0;c[a>>2]=c[d+((YG(g,f,c[a>>2]|0,b,e)|0)*72|0)+56>>2]}return}function YG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0;o=a+8|0;q=b+8|0;a:while(1){b:do switch(c[f+(d*40|0)>>2]|0){case 3:{r=3;break a}case 2:{g=+h[o>>3];i=f+(d*40|0)+8|0;j=+h[f+(d*40|0)+16>>3];k=j+1.0e-07;do if(!(g>k)){l=j+-1.0e-07;if(!(g<l)?+h[a>>3]>+h[i>>3]:0)break;if(+B(+(g-j))<=1.0e-07?(m=+h[i>>3],+B(+(+h[a>>3]-m))<=1.0e-07):0){g=+h[q>>3];do if(!(g>k)){if(!(g<l)?+h[b>>3]>m:0)break;d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break b}d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break}case 1:{g=+h[o>>3];i=c[f+(d*40|0)+4>>2]|0;if(+B(+(g-+h[e+(i*56|0)+8>>3]))<=1.0e-07?(n=+h[a>>3],+B(+(n-+h[e+(i*56|0)>>3]))<=1.0e-07):0)j=n;else r=19;do if((r|0)==19){r=0;if(+B(+(g-+h[e+(i*56|0)+24>>3]))<=1.0e-07?(p=+h[a>>3],+B(+(p-+h[e+(i*56|0)+16>>3]))<=1.0e-07):0){j=p;break}if(!(ZG(i,e,a)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}}while(0);if(!(+B(+(g-+h[q>>3]))<=1.0e-07))if(!(ZG(i,e,b)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}else if(+h[b>>3]<j){d=f+(d*40|0)+32|0;break b}else{d=f+(d*40|0)+36|0;break b}}default:{r=31;break a}}while(0);d=c[d>>2]|0}if((r|0)==3)return c[f+(d*40|0)+24>>2]|0;else if((r|0)==31){XL(123169,35,1,c[13918]|0)|0;ma(123205,123207,349,123219)}return 0}function ZG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0.0;f=b+(a*56|0)+16|0;g=+h[b+(a*56|0)+24>>3];i=b+(a*56|0)|0;e=+h[b+(a*56|0)+8>>3];do if(!(g>e+1.0e-07)){if(!(g<e+-1.0e-07)?+h[f>>3]>+h[i>>3]:0){j=4;break}d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[f>>3];d=(+h[i>>3]-k)*(d-g)-(+h[c>>3]-k)*(e-g);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}else j=4;while(0);do if((j|0)==4){d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[i>>3];d=(+h[f>>3]-k)*(d-e)-(+h[c>>3]-k)*(g-e);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}while(0);return d>0.0|0}function _G(a,b,d){a=a|0;b=b|0;d=d|0;return c[b+((c[((d|0)==1?b+(a*56|0)+48|0:b+(a*56|0)+44|0)>>2]|0)*56|0)+32>>2]|0}function $G(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[42438]|0;if((b|0)<(c[42437]|0)){c[a+(b*72|0)>>2]=-1;c[a+(b*72|0)+4>>2]=-1;c[a+(b*72|0)+68>>2]=1;c[42438]=b+1;l=e;return b|0}else{e=c[13918]|0;c[d>>2]=b;zL(e,123294,d)|0;ma(123205,123207,88,123332)}return 0}function aH(){var a=0;a=c[42439]|0;if((a|0)<(c[42436]|0)){c[42439]=a+1;return a|0}else{XL(123255,30,1,c[13918]|0)|0;ma(123205,123207,72,123286)}return 0}function bH(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d+1.0e-07))if(c<d+-1.0e-07)a=0;else a=+h[a>>3]>=+h[b>>3]&1;else a=1;return a|0}function cH(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c<d+-1.0e-07))if(c>d+1.0e-07)a=0;else a=+h[a>>3]<+h[b>>3]&1;else a=1;return a|0}function dH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f+(d*72|0)+24|0;p=(e|0)==1;a:while(1){o=f+(b*72|0)+24|0;j=f+(b*72|0)+48|0;k=f+(b*72|0)+52|0;l=f+(b*72|0)|0;m=f+(b*72|0)+4|0;n=f+(b*72|0)+56|0;if((b|0)<=0)break;while(1){if(!(bH(o,q)|0))break a;d=c[j>>2]|0;e=(d|0)>0;do if(p){if(e?(c[f+(d*72|0)+4>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)+4>>2]|0)!=(a|0)){b=d;continue a}}else{if(e?(c[f+(d*72|0)>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)>>2]|0)!=(a|0)){b=d;continue a}}while(0);if((c[l>>2]|0)!=(c[f+(d*72|0)>>2]|0)){b=d;continue a}if((c[m>>2]|0)!=(c[f+(d*72|0)+4>>2]|0)){b=d;continue a}r=c[f+(d*72|0)+56>>2]|0;e=c[g+(r*40|0)+28>>2]|0;h=g+(e*40|0)+32|0;i=c[n>>2]|0;if((c[h>>2]|0)==(r|0))c[h>>2]=i;else c[g+(e*40|0)+36>>2]=i;e=c[f+(d*72|0)+48>>2]|0;c[j>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);e=c[f+(d*72|0)+52>>2]|0;c[k>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);r=f+(d*72|0)+24|0;c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];c[f+(d*72|0)+68>>2]=2}}return}function eH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>f+1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]>+h[d>>3]+1.0e-07){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function fH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e<f+-1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]<+h[d>>3]){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function gH(a){a=a|0;var b=0;b=vw(8)|0;if(b|0){c[b+4>>2]=a;c[b>>2]=0}return b|0}function hH(a,b){a=a|0;b=b|0;if(b){b=gH(b)|0;c[b>>2]=a;a=b}return a|0}function iH(a){a=a|0;var b=0;do{b=a;a=c[a>>2]|0;_I(b)}while((a|0)!=0);return}function jH(){var a=0;a=vw(1992)|0;if(a|0)c[a>>2]=kH(a)|0;return a|0}function kH(a){a=a|0;var b=0;b=qH(a)|0;c[b+4>>2]=0;a=a+1972|0;c[a>>2]=(c[a>>2]|0)+1;return b|0}function lH(a){a=a|0;mH(a,c[a>>2]|0);_I(c[a>>2]|0);_I(a);return 0}function mH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=a+1980|0;h=a+1912|0;i=a+1936|0;a:do if((c[b+4>>2]|0)>0){d=0;while(1){if((d|0)==64)break a;e=b+8+(d*20|0)+16|0;f=c[e>>2]|0;if(f|0?(mH(a,f),_I(c[e>>2]|0),wH(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}else{d=0;while(1){if((d|0)==64)break a;if(c[b+8+(d*20|0)+16>>2]|0?(wH(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}while(0);return}function nH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)ma(123690,123340,194,123348);e=c[b+4>>2]|0;if((e|0)<=-1)ma(123360,123340,195,123348);if(!d)ma(123632,123340,196,123348);i=a+1952|0;c[i>>2]=(c[i>>2]|0)+1;a:do if((e|0)>0){i=0;e=0;while(1){if((i|0)==64)break a;f=b+8+(i*20|0)+16|0;if((c[f>>2]|0)!=0?(BH(d,b+8+(i*20|0)|0)|0)!=0:0){g=nH(a,c[f>>2]|0,d)|0;if(!e)e=g;else{f=e;while(1){h=c[f>>2]|0;if(!h)break;else f=h}c[f>>2]=g}}i=i+1|0}}else{g=0;e=0;while(1){if((g|0)==64)break a;f=b+8+(g*20|0)|0;if((c[b+8+(g*20|0)+16>>2]|0)!=0?(BH(d,f)|0)!=0:0)e=hH(e,f)|0;g=g+1|0}}while(0);return e|0}function oH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+64|0;k=p+52|0;m=p+32|0;n=p+16|0;o=p;c[k>>2]=0;if(!((b|0)!=0&(e|0)!=0))ma(123546,123340,247,123374);if((f|0)>-1?(j=c[e>>2]|0,(c[j+4>>2]|0)>=(f|0)):0){g=0;while(1){if((g|0)>=2)break;if((c[b+(g<<2)>>2]|0)>(c[b+(g+2<<2)>>2]|0)){h=8;break}else g=g+1|0}if((h|0)==8)ma(123421,123340,250,123374);i=a+1912|0;g=a+1908|0;h=c[g>>2]|0;if(c[i>>2]|0){q=h|0?a+1924|0:a+1916|0;c[q>>2]=(c[q>>2]|0)+1}if(!h){q=a+1964|0;c[q>>2]=(c[q>>2]|0)+1}if(!(pH(a,b,d,j,k,f)|0))g=0;else{if(c[i>>2]|0){q=c[g>>2]|0?a+1948|0:a+1944|0;c[q>>2]=(c[q>>2]|0)+1}g=qH(a)|0;q=a+1976|0;c[q>>2]=(c[q>>2]|0)+1;q=c[e>>2]|0;c[g+4>>2]=(c[q+4>>2]|0)+1;tH(n,q);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];q=m+16|0;c[q>>2]=c[e>>2];vH(a,m,g,0)|0;tH(o,c[k>>2]|0);c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[q>>2]=c[k>>2];vH(a,m,g,0)|0;c[e>>2]=g;g=a+1980|0;c[g>>2]=(c[g>>2]|0)+2;g=1}l=p;return g|0}ma(123386,123340,248,123374);return 0}function pH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;m=q+52|0;n=q+48|0;o=q+32|0;p=q+16|0;k=q;c[n>>2]=0;if(!((b|0)!=0&(e|0)!=0&(f|0)!=0))ma(123464,123340,311,123478);if((g|0)>-1?(i=e+4|0,h=c[i>>2]|0,(h|0)>=(g|0)):0){if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i>>2]|0}do if((h|0)>(g|0)){i=uH(b,e)|0;h=e+8+(i*20|0)+16|0;i=e+8+(i*20|0)|0;if(!(pH(a,b,d,c[h>>2]|0,n,g)|0)){AH(o,b,i);c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];j=0;break}else{tH(p,c[h>>2]|0);c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];j=c[n>>2]|0;c[m+16>>2]=j;tH(k,j);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=vH(a,m,e,f)|0;break}}else if((h|0)==(g|0)){c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];c[m+16>>2]=d;j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=vH(a,m,e,f)|0;break}else ma(123523,123340,341,123478);while(0);l=q;return j|0}ma(123491,123340,312,123478);return 0}function qH(a){a=a|0;a=a+1968|0;c[a>>2]=(c[a>>2]|0)+1;a=ZI(1288)|0;rH(a);return a|0}function rH(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=-1;b=0;while(1){if((b|0)==64)break;sH(a+8+(b*20|0)|0);b=b+1|0}return}function sH(a){a=a|0;xH(a);c[a+16>>2]=0;return}function tH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+16|0;h=i;if(!b)ma(123690,123529,99,123536);xH(g);d=1;f=0;while(1){if((f|0)==64)break;do if(c[b+8+(f*20|0)+16>>2]|0){e=b+8+(f*20|0)|0;if(!d){AH(h,g,e);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];d=0;break}else{c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];d=0;break}}while(0);f=f+1|0}c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];l=i;return}function uH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;k=l;l=l+32|0;i=k+16|0;j=k;if(!((a|0)!=0&(b|0)!=0))ma(123546,123529,125,123553);d=0;e=0;f=0;g=1;h=0;while(1){if((h|0)==64)break;if(c[b+8+(h*20|0)+16>>2]|0){n=b+8+(h*20|0)|0;p=zH(n)|0;AH(j,a,n);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];n=(zH(i)|0)-p|0;m=(g|0)!=0|(n|0)<(f|0);o=m|(p|0)<(e|0)&(n|0)==(f|0);d=o?h:d;e=o?p:e;f=o?n:f;g=m?0:g}h=h+1|0}l=k;return d|0}function vH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!b)ma(123712,123529,167,123564);if(!d)ma(123690,123529,168,123564);do if((c[d>>2]|0)<64){a=0;while(1){if((a|0)>=64){e=10;break}if(!(c[d+8+(a*20|0)+16>>2]|0)){e=8;break}a=a+1|0}if((e|0)==8){f=d+8+(a*20|0)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];f=0;g=d;break}else if((e|0)==10)ma(123574,123529,178,123564)}else{if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1}if(!e)ma(123587,123529,187,123564);else{CH(a,d,b,e);f=1;g=(c[d+4>>2]|0)==0?a+1972|0:a+1976|0;break}}while(0);c[g>>2]=(c[g>>2]|0)+1;return f|0}function wH(a,b){a=a|0;b=b|0;if(!((a|0)!=0&b>>>0<64))ma(123591,123529,201,123619);if(!(c[a+8+(b*20|0)+16>>2]|0))ma(124113,123529,202,123619);else{sH(a+8+(b*20|0)|0);c[a>>2]=(c[a>>2]|0)+-1;return}}function xH(a){a=a|0;var b=0;b=0;while(1){if((b|0)==4)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function yH(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;c[d>>2]=1;c[d+8>>2]=-1;b=1;while(1){if((b|0)==2)break;c[d+(b+2<<2)>>2]=0;c[d+(b<<2)>>2]=0;b=b+1|0}c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=e;return}function zH(a){a=a|0;var b=0,d=0,e=0;if(!a)ma(123632,123634,128,123646);a:do if((c[a>>2]|0)>(c[a+8>>2]|0))b=0;else{b=1;d=0;while(1){if((d|0)==2)break a;e=O(c[a+(d+2<<2)>>2]|0,b)|0;b=e-(c[a+(d<<2)>>2]|0)|0;d=d+1|0}}while(0);return b|0}function AH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;f=g;if(!((b|0)!=0&(d|0)!=0))ma(123655,123634,195,123663);do if((c[b>>2]|0)>(c[b+8>>2]|0)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2]}else{if((c[d>>2]|0)>(c[d+8>>2]|0)){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else e=0;while(1){if((e|0)==2)break;j=c[b+(e<<2)>>2]|0;h=c[d+(e<<2)>>2]|0;c[f+(e<<2)>>2]=(j|0)<(h|0)?j:h;h=e+2|0;j=c[b+(h<<2)>>2]|0;i=c[d+(h<<2)>>2]|0;c[f+(h<<2)>>2]=(j|0)>(i|0)?j:i;e=e+1|0}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2]}while(0);l=g;return}function BH(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)!=0&(b|0)!=0)d=0;else ma(123675,123634,216,123682);while(1){if((d|0)>=2){d=1;break}e=d+2|0;if((c[a+(d<<2)>>2]|0)>(c[b+(e<<2)>>2]|0)){d=0;break}if((c[b+(d<<2)>>2]|0)>(c[a+(e<<2)>>2]|0)){d=0;break}else d=d+1|0}return d|0}function CH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;if(!b)ma(123690,123692,40,123702);if(!d)ma(123712,123692,41,123702);j=a+1912|0;if(c[j>>2]|0){i=c[a+1908>>2]|0?a+1932|0:a+1928|0;c[i>>2]=(c[i>>2]|0)+1}h=b+4|0;i=c[h>>2]|0;DH(a,b,d);d=a+1324|0;EH(a);f=zH(a+1852|0)|0;f=(zH(a+1868|0)|0)+f|0;if(c[j>>2]|0?(f|0)!=0&(c[a+1908>>2]|0)==0:0){j=a+1960|0;g[j>>2]=+((c[a+1320>>2]|0)>>>0)/+(f|0)+ +g[j>>2]}j=qH(a)|0;c[e>>2]=j;c[h>>2]=i;c[j+4>>2]=i;FH(a,b,j,d);if(((c[c[e>>2]>>2]|0)+(c[b>>2]|0)|0)==65)return;else ma(123714,123692,86,123702)}function DH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h;if(!b)ma(123690,123692,106,124101);if(!d)ma(123712,123692,107,124101);else e=0;while(1){if((e|0)>=64)break;if(!(c[b+8+(e*20|0)+16>>2]|0)){f=7;break}j=b+8+(e*20|0)|0;i=a+4+(e*20|0)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];e=e+1|0}if((f|0)==7)ma(124113,123692,111,124101);e=a+4|0;j=a+1284|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];d=a+1304|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)==65)break;AH(g,d,a+4+(e*20|0)|0);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];e=e+1|0}c[a+1320>>2]=zH(d)|0;rH(b);l=h;return}function EH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+48|0;i=u+32|0;k=u+16|0;m=u;GH(a);HH(a);q=a+1844|0;s=a+1848|0;t=a+1892|0;n=a+1852|0;o=a+1884|0;p=a+1868|0;j=a+1888|0;f=0;e=0;while(1){d=c[q>>2]|0;b=c[s>>2]|0;if((b+d|0)>=65)break;h=65-(c[t>>2]|0)|0;if((d|0)<(h|0)&(b|0)<(h|0)){g=-1;h=0}else{r=12;break}while(1){if((h|0)==65)break;if(!(c[a+1584+(h<<2)>>2]|0)){v=a+4+(h*20|0)|0;AH(k,v,n);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];b=zH(i)|0;d=c[o>>2]|0;AH(m,v,p);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];v=zH(i)|0;b=v-(c[j>>2]|0)+(d-b)|0;d=(b|0)>-1;b=d?b:0-b|0;d=(d^1)&1;if((b|0)<=(g|0))if((b|0)==(g|0)){v=(c[a+1844+(d<<2)>>2]|0)<(c[a+1844+(f<<2)>>2]|0);b=g;d=v?d:f;e=v?h:e}else{b=g;d=f}else e=h}else{b=g;d=f}g=b;h=h+1|0;f=d}IH(a,e,f)}if((r|0)==12){b=(d|0)>=(65-(c[t>>2]|0)|0)&1;d=0;while(1){if((d|0)==65)break;if(!(c[a+1584+(d<<2)>>2]|0))IH(a,d,b);d=d+1|0}d=c[q>>2]|0;b=c[s>>2]|0}if((b+d|0)!=65)ma(123857,123692,210,123943);v=c[t>>2]|0;if((d|0)<(v|0)|(b|0)<(v|0))ma(123954,123692,212,123943);else{l=u;return}}function FH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!b)ma(123690,123692,297,123754);if(!d)ma(123764,123692,298,123754);if(!e)ma(123766,123692,299,123754);else f=0;while(1){if((f|0)>=65){e=14;break}e=c[a+1324+(f<<2)>>2]|0;if(e>>>0>=2){e=9;break}switch(e|0){case 0:{vH(a,a+4+(f*20|0)|0,b,0)|0;break}case 1:{vH(a,a+4+(f*20|0)|0,d,0)|0;break}default:{}}f=f+1|0}if((e|0)==9)ma(123768,123692,303,123754);else if((e|0)==14)return}function GH(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[a+1848>>2]=0;c[a+1844>>2]=0;b=a+1852|0;f=a+1868|0;yH(e);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[a+1888>>2]=0;c[a+1884>>2]=0;b=0;while(1){if((b|0)==65)break;c[a+1584+(b<<2)>>2]=0;c[a+1324+(b<<2)>>2]=-1;b=b+1|0}l=d;return}function HH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+304|0;k=o+32|0;m=o+16|0;n=o;b=0;while(1){if((b|0)==65)break;c[k+(b<<2)>>2]=zH(a+4+(b*20|0)|0)|0;b=b+1|0}b=0;d=0;e=0;g=0;a:while(1){if((g|0)==64)break;i=g+1|0;j=a+4+(g*20|0)|0;h=k+(g<<2)|0;f=i;while(1){if((f|0)==65){g=i;continue a}AH(n,j,a+4+(f*20|0)|0);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];p=zH(m)|0;p=p-(c[h>>2]|0)-(c[k+(f<<2)>>2]|0)|0;q=p>>>0>e>>>0;r=q?f:b;f=f+1|0;b=r;d=q?g:d;e=q?p:e}}IH(a,d,0);IH(a,b,1);l=o;return}function IH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;e=a+1584+(b<<2)|0;if(c[e>>2]|0)ma(124057,123692,257,124092);c[a+1324+(b<<2)>>2]=d;c[e>>2]=1;g=a+1844+(d<<2)|0;f=a+1852+(d<<4)|0;e=a+4+(b*20|0)|0;if(!(c[g>>2]|0)){c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2]}else{AH(h,e,f);c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2]}c[a+1884+(d<<2)>>2]=zH(f)|0;c[g>>2]=(c[g>>2]|0)+1;l=i;return}function JH(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[42440]=0;c[42441]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=95;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=ZI(k*6|3)|0;if(h){TN(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;TN(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{_I(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=96;break a}case 4:{s=95;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==31){e=0;s=96;break}e=b[58358+(p<<1)>>1]|0;j=e<<16>>16;do if(e<<16>>16!=-82){h=c[42441]|0;if((h|0)==-2){h=gI()|0;c[42441]=h}if((h|0)>=1)if(h>>>0<296)i=d[124132+h>>0]|0;else i=2;else{c[42441]=0;i=0}h=i+j|0;if(h>>>0<=271?(i|0)==(a[124428+h>>0]|0):0){p=a[124700+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[42441]=-2;g=g+4|0;c[g>>2]=0;j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[124972+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[42441]|0;b:do switch(q|0){case 0:{c[42440]=(c[42440]|0)+1;cI(125369);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=96;break a}else{h=o;break b}else{c[42441]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<16>>16==8)break;if((h|0)==(f|0)){e=1;s=96;break a}e=h+-2|0;g=g+-4|0;h=e;e=b[58358+(b[e>>1]<<1)>>1]|0}g=g+4|0;c[g>>2]=0;e=1;j=3}else s=23}do if((s|0)==23){s=0;j=d[125088+h>>0]|0;e=c[g+(1-j<<2)>>2]|0;do switch(h|0){case 4:{s=26;break a}case 2:{c[42442]=KH(c[g+-4>>2]|0,2)|0;break}case 3:{c[42442]=KH(c[g+-4>>2]|0,1)|0;break}case 5:{e=MH()|0;break}case 8:{NH(c[42443]|0);break}case 9:{OH(c[g>>2]|0);break}case 18:{PH(c[g>>2]|0);break}case 19:{QH();break}case 20:{PH(c[g>>2]|0);break}case 21:{QH();break}case 22:{PH(c[g>>2]|0);break}case 23:{QH();break}case 24:{PH(c[g>>2]|0);break}case 25:{QH();break}case 26:{PH(c[g>>2]|0);break}case 27:{QH();break}case 28:{PH(c[g>>2]|0);break}case 29:{QH();break}case 30:{PH(c[g>>2]|0);break}case 31:{QH();break}case 32:{PH(c[g>>2]|0);break}case 33:{QH();break}case 34:{e=c[g+-4>>2]|0;break}case 35:{e=c[g>>2]|0;break}case 38:{e=c[42443]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;i=c[42443]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(RH(p)|0){s=51;break a}c[(c[g>>2]|0)+80>>2]=c[42444];e=Ql(55016,c[4344]|0)|0;c[(c[g>>2]|0)+84>>2]=e;c[42444]=c[g>>2];c[(c[g>>2]|0)+108>>2]=c[c[42445]>>2];e=c[g>>2]|0;break}case 39:{e=c[42443]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;i=c[42443]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(RH(p)|0){s=56;break a}e=c[42444]|0;c[42444]=c[e+80>>2];break}case 40:{e=c[g>>2]|0;break}case 41:{e=c[g+-4>>2]|0;break}case 42:{e=c[g+-4>>2]|0;break}case 43:{e=c[g+-4>>2]|0;break}case 44:{e=c[g+-4>>2]|0;break}case 45:{e=c[g+-4>>2]|0;break}case 48:{e=c[g>>2]|0;break}case 49:{e=c[g>>2]|0;break}case 50:{a[(c[g+-8>>2]|0)+12>>0]=1;e=c[g>>2]|0;break}case 51:{SH();break}case 52:{e=TH()|0;break}case 53:{e=c[g>>2]|0;break}case 54:{e=c[g>>2]|0;break}case 55:{e=(c[g+-8>>2]|0)+100|0;a[e>>0]=a[e>>0]|1;e=c[g>>2]|0;break}case 56:{UH(c[g+-4>>2]|0,c[g>>2]|0,1);break}case 57:{e=c[g+-12>>2]|0;break}case 58:{UH(c[g+-4>>2]|0,c[g>>2]|0,2);break}case 59:{e=c[g+-12>>2]|0;break}case 60:{UH(c[g+-4>>2]|0,c[g>>2]|0,3);break}case 61:{e=c[g+-12>>2]|0;break}case 62:{UH(c[g>>2]|0,MH()|0,2);break}case 63:{e=c[g+-8>>2]|0;break}case 64:{e=c[g+-4>>2]|0;break}case 65:{e=c[g>>2]|0;break}default:{}}while(0);i=0-j|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[125260+h>>0]|0)+-41|0;p=b[i>>1]|0;h=p+(b[58590+(e<<1)>>1]|0)|0;if(h>>>0<272?(a[124428+h>>0]|0)==(p|0):0){e=a[124700+h>>0]|0;j=q;h=i;break}e=a[125330+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==26){LH();e=1;s=96}else if((s|0)==51){cI(125158);LH();e=1;s=96}else if((s|0)==56){cI(125209);LH();e=1;s=96}else if((s|0)==95){cI(125382);e=2;s=96}if((s|0)==96)if((f|0)!=(r|0))_I(f);l=t;return e|0}function KH(b,d){b=b|0;d=d|0;var e=0;e=vw(8)|0;a[e+4>>0]=d;c[e>>2]=b;return e|0}function LH(){var a=0,b=0;a=c[42444]|0;b=c[42442]|0;if(b|0){EF(b,1);c[42442]=0}c[13767]=62;while(1){if(!a)break;b=c[a+80>>2]|0;YH(a);a=b}c[13767]=51;c[13776]=63;b=c[42447]|0;bb[c[b>>2]&31](b,0,64)|0;c[13776]=51;c[13785]=64;b=c[42448]|0;bb[c[b>>2]&31](b,0,64)|0;c[13785]=51;$H();return}function MH(){var a=0,d=0,e=0,f=0,g=0,h=0;e=c[42448]|0;f=vw(40)|0;if(Sl(c[42447]|0)|0)OH(0);a=Sl(e)|0;b[f+4>>1]=a;a:do if(!a)a=e;else{c[f>>2]=vw(a*24|0)|0;a=0;d=bb[c[e>>2]&31](e,0,128)|0;while(1){if(!d){a=e;break a}g=(c[f>>2]|0)+(a*24|0)|0;h=d+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];a=a+1|0;d=bb[c[e>>2]&31](e,d,8)|0}}while(0);bb[c[a>>2]&31](e,0,64)|0;return f|0}function NH(b){b=b|0;var d=0,e=0,f=0;e=vw(64)|0;f=b+4|0;d=c[f>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){dm(b,1)|0;d=c[f>>2]|0}a[d>>0]=0;b=c[b>>2]|0;c[f>>2]=b;c[e+8>>2]=GL(b)|0;c[e+12>>2]=c[c[42445]>>2];f=c[42447]|0;bb[c[f>>2]&31](f,e,1)|0;return}function OH(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=vw(32)|0;j=c[42447]|0;e=Sl(j)|0;k=i+8|0;a[i+14>>0]=d;a:do if(!e){c[k>>2]=vw(56)|0;b[i+12>>1]=1;h=GL(174181)|0;k=c[k>>2]|0;c[k>>2]=h;c[k+4>>2]=c[c[42445]>>2]}else{b[i+12>>1]=e;c[k>>2]=vw(e*56|0)|0;d=0;e=Ol(j)|0;while(1){if(!e)break a;f=(c[k>>2]|0)+(d*56|0)|0;g=e+8|0;h=f+56|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));d=d+1|0;e=c[e>>2]|0}}while(0);bb[c[j>>2]&31](j,0,64)|0;k=c[42448]|0;bb[c[k>>2]&31](k,i,1)|0;return}function PH(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;i=vw(8)|0;f=c[c[42445]>>2]|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];if(f|0){a=g+4|0;if((c[a>>2]|0)==0?(b=c[f+4>>2]|0,b|0):0)c[a>>2]=b;a=g+16|0;if(+h[a>>3]<0.0?(d=+h[f+16>>3],d>=0.0):0)h[a>>3]=d;if((c[g>>2]|0)==0?(e=c[f>>2]|0,e|0):0)c[g>>2]=e;a=c[f+24>>2]&127;if(a|0){f=g+24|0;e=c[f>>2]|0;c[f>>2]=e&127|a|e&-128}}f=c[(c[42446]|0)+144>>2]|0;c[i>>2]=bb[c[f>>2]&31](f,g,1)|0;c[i+4>>2]=c[42445];c[42445]=i;l=j;return}function QH(){var a=0,b=0;b=c[42445]|0;a=c[b+4>>2]|0;_I(b);c[42445]=a;return}function RH(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=0;break}if(c<<24>>24==32)b=b+1|0;else{b=1;break}}return b|0}function SH(){var b=0,d=0,e=0;e=Ql(55052,c[4344]|0)|0;b=c[42444]|0;d=vw(16)|0;c[d+8>>2]=e;if(a[b+112>>0]&2)a[d+12>>0]=1;e=c[b+84>>2]|0;bb[c[e>>2]&31](e,d,1)|0;return}function TH(){var a=0;a=c[(c[42444]|0)+84>>2]|0;return bb[c[a>>2]&31](a,0,256)|0}function UH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=vw(16)|0;f=c[42444]|0;h=c[f+84>>2]|0;h=c[(bb[c[h>>2]&31](h,0,256)|0)+8>>2]|0;c[g+8>>2]=b;bb[c[h>>2]&31](h,g,1)|0;a[b+92>>0]=e;if(a[f+112>>0]&1)a[b+100>>0]=1;c[b+88>>2]=d;return}function VH(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function WH(a,b,d){a=a|0;b=b|0;d=d|0;Kl(c[b+8>>2]|0)|0;_I(b);return}function XH(a,b,d){a=a|0;b=b|0;d=d|0;aI(c[b+8>>2]|0);_I(b);return}function YH(a){a=a|0;Kl(c[a+84>>2]|0)|0;BF(a);_I(a);return}function ZH(a,b,d){a=a|0;b=b|0;d=d|0;_I(c[b+8>>2]|0);_I(b);return}function _H(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d+12|0;a=b[g>>1]|0;if(a<<16>>16){h=d+8|0;e=0;f=c[h>>2]|0;while(1){if((e|0)>=(a<<16>>16|0))break;_I(c[f>>2]|0);e=e+1|0;f=f+56|0;a=b[g>>1]|0}_I(c[h>>2]|0)}_I(d);return}function $H(){var a=0,b=0;a=c[42445]|0;while(1){b=c[a+4>>2]|0;if(!b)break;_I(a);a=b}return}function aI(b){b=b|0;var d=0;d=b+88|0;switch(a[b+92>>0]|0){case 1:{YH(c[d>>2]|0);break}case 2:{CF(c[d>>2]|0);break}default:{}}BF(b);_I(b);return}function bI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+160|0;e=f+8|0;g=f;c[g>>2]=0;c[g+4>>2]=0;c[42445]=g;c[42444]=0;c[42442]=0;c[42446]=c[(c[(c[d+52>>2]|0)+16>>2]|0)+144>>2];c[42447]=Ql(55088,c[4344]|0)|0;c[42448]=Ql(55124,c[4344]|0)|0;cm(e,128,f+24|0);c[42443]=e;if(!(eI(a,e,d)|0)){JH()|0;c[b>>2]=fI()|0;a=c[42442]|0}else{c[b>>2]=2;a=0}Kl(c[42447]|0)|0;Kl(c[42448]|0)|0;c[42447]=0;c[42448]=0;c[42445]=0;gm(e);l=f;return a|0}function cI(b){b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(a[169796]|0)){a[169796]=1;c[d>>2]=b;c[d+4>>2]=0;_l(1,125399,d)|0;dI()}else{l=e;return}}function dI(){Ta()}function eI(a,b,d){a=a|0;b=b|0;d=d|0;a=l;l=l+16|0;if(!(c[42450]|0)){_l(0,125415,a)|0;c[42450]=(c[42450]|0)+1}l=a;return 1}function fI(){return 1}function gI(){return -1}function hI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;m=u+48|0;k=u+32|0;s=4;j=ZI(40)|0;c[j>>2]=0;n=u+16|0;q=u;r=c[d>>2]|0;i=c[d+4>>2]|0;s=RN(169804,1,j|0,s|0)|0;j=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=SN(c[d>>2]|0,s|0,j|0)|0;if(!g)Ua(d|0,p|0);z=p}else g=-1;if((g|0)==1)d=z;else d=0;while(1){if(d|0){d=-1;break}o=0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];ga(26,n|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=SN(c[d>>2]|0,s|0,j|0)|0;if(!g)Ua(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[e>>2]=c[n>>2];c[e+4>>2]=c[n+4>>2];c[e+8>>2]=c[n+8>>2];c[e+12>>2]=c[n+12>>2];h=e+16|0;o=0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];ga(26,q|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=SN(c[d>>2]|0,s|0,j|0)|0;if(!g)Ua(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[42490]=0;o=0;fa(93,4);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=SN(c[d>>2]|0,s|0,j|0)|0;if(!g)Ua(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue}g=c[42491]|0;d=c[42490]|0;c[42490]=d+1;d=g+(d<<4)|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];o=0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];d=da(1,a|0,b|0,r|0,i|0,k|0,m|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=SN(c[g>>2]|0,s|0,j|0)|0;if(!h)Ua(g|0,p|0);z=p}else h=-1;if((h|0)==1)d=z;else{t=8;break}}if((t|0)==8)if((d|0)==-1)d=-1;else{c[f+4>>2]=c[42490];c[f>>2]=c[42491];d=0}_I(s|0);l=u;return d|0}function iI(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0.0;d=+h[b>>3];e=b+8|0;f=+h[e>>3];i=f*f+d*d;g=+C(+i);if(i>1.0e-06){h[b>>3]=d/g;h[e>>3]=f/g};c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function jI(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[42494]|0)<(a|0)){b=c[42491]|0;if(!b){e=ZI(a<<4)|0;c[42491]=e;if(!e){e=c[13918]|0;c[d>>2]=125476;c[d+4>>2]=531;c[d+8>>2]=125611;zL(e,125484,d)|0;Ua(169804,1)}}else{d=aJ(b,a<<4)|0;c[42491]=d;if(!d){d=c[13918]|0;c[e>>2]=125476;c[e+4>>2]=537;c[e+8>>2]=125629;zL(d,125484,e)|0;Ua(169804,1)}}c[42494]=a}l=f;return}function kI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0.0;R=l;l=l+336|0;J=R+320|0;I=R+304|0;w=R+144|0;q=R+128|0;G=R+112|0;H=R+96|0;Q=R+80|0;A=R+64|0;C=R+48|0;K=R+32|0;L=R+16|0;M=R;x=R+288|0;y=R+272|0;z=R+256|0;B=R+240|0;D=R+224|0;E=R+208|0;N=R+192|0;O=R+176|0;P=R+160|0;i=c[42493]|0;do if((c[42492]|0)<(e|0)){if(!i){i=ZI(e*40|0)|0;c[42493]=i;if(!i){i=-1;break}}else{i=aJ(i,e*40|0)|0;c[42493]=i;if(!i){i=-1;break}}c[42492]=e;k=6}else k=6;while(0);if((k|0)==6){h[i>>3]=0.0;k=1;j=0.0;while(1){if((k|0)>=(e|0))break;n=d+(k<<4)|0;F=d+(k+-1<<4)|0;c[I>>2]=c[n>>2];c[I+4>>2]=c[n+4>>2];c[I+8>>2]=c[n+8>>2];c[I+12>>2]=c[n+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];v=+lI(I,J)+j;h[i+(k*40|0)>>3]=v;k=k+1|0;j=v}F=e+-1|0;n=i+(F*40|0)|0;k=1;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)|0;h[S>>3]=+h[S>>3]/+h[n>>3];k=k+1|0}k=0;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)+8|0;n=i+(k*40|0)|0;v=+mI(+h[n>>3]);c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];c[J+8>>2]=c[f+8>>2];c[J+12>>2]=c[f+12>>2];nI(x,J,v);c[S>>2]=c[x>>2];c[S+4>>2]=c[x+4>>2];c[S+8>>2]=c[x+8>>2];c[S+12>>2]=c[x+12>>2];S=i+(k*40|0)+24|0;v=+oI(+h[n>>3]);c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];nI(y,J,v);c[S>>2]=c[y>>2];c[S+4>>2]=c[y+4>>2];c[S+8>>2]=c[y+8>>2];c[S+12>>2]=c[y+12>>2];k=k+1|0}c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];pI(d,e,i,I,J,G,A,H,C);c[q>>2]=c[G>>2];c[q+4>>2]=c[G+4>>2];c[q+8>>2]=c[G+8>>2];c[q+12>>2]=c[G+12>>2];c[w>>2]=c[A>>2];c[w+4>>2]=c[A+4>>2];c[w+8>>2]=c[A+8>>2];c[w+12>>2]=c[A+12>>2];c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];if(!(qI(a,b,q,w,I,J,d,e)|0)){c[J>>2]=c[A>>2];c[J+4>>2]=c[A+4>>2];c[J+8>>2]=c[A+8>>2];c[J+12>>2]=c[A+12>>2];nI(z,J,.3333333333333333);c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[z>>2];c[J+4>>2]=c[z+4>>2];c[J+8>>2]=c[z+8>>2];c[J+12>>2]=c[z+12>>2];rI(B,I,J);v=+h[B>>3];u=+h[B+8>>3];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];nI(D,J,.3333333333333333);c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[D>>2];c[J+4>>2]=c[D+4>>2];c[J+8>>2]=c[D+8>>2];c[J+12>>2]=c[D+12>>2];sI(E,I,J);t=+h[E>>3];p=+h[E+8>>3];q=c[42493]|0;r=+h[G>>3];s=+h[H>>3];o=+h[G+8>>3];m=+h[H+8>>3];n=Q+8|0;i=-1;j=-1.0;k=1;while(1){if((k|0)>=(F|0))break;T=+h[q+(k*40|0)>>3];U=+tI(T);V=+mI(T);W=+oI(T);T=+uI(T);h[Q>>3]=V*v+r*U+W*t+s*T;h[n>>3]=W*p+V*u+o*U+m*T;S=d+(k<<4)|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];T=+lI(I,J);S=T>j;i=S?k:i;j=S?T:j;k=k+1|0}S=d+(i<<4)|0;Q=d+(i+-1<<4)|0;c[I>>2]=c[S>>2];c[I+4>>2]=c[S+4>>2];c[I+8>>2]=c[S+8>>2];c[I+12>>2]=c[S+12>>2];c[J>>2]=c[Q>>2];c[J+4>>2]=c[Q+4>>2];c[J+8>>2]=c[Q+8>>2];c[J+12>>2]=c[Q+12>>2];sI(N,I,J);c[J>>2]=c[N>>2];c[J+4>>2]=c[N+4>>2];c[J+8>>2]=c[N+8>>2];c[J+12>>2]=c[N+12>>2];iI(L,J);Q=i+1|0;N=d+(Q<<4)|0;c[I>>2]=c[N>>2];c[I+4>>2]=c[N+4>>2];c[I+8>>2]=c[N+8>>2];c[I+12>>2]=c[N+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];sI(O,I,J);c[J>>2]=c[O>>2];c[J+4>>2]=c[O+4>>2];c[J+8>>2]=c[O+8>>2];c[J+12>>2]=c[O+12>>2];iI(M,J);c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[J>>2]=c[M>>2];c[J+4>>2]=c[M+4>>2];c[J+8>>2]=c[M+8>>2];c[J+12>>2]=c[M+12>>2];rI(P,I,J);c[J>>2]=c[P>>2];c[J+4>>2]=c[P+4>>2];c[J+8>>2]=c[P+8>>2];c[J+12>>2]=c[P+12>>2];iI(K,J);c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];kI(a,b,d,Q,I,J)|0;c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];kI(a,b,S,e-i|0,I,J)|0;i=0}else i=0}l=R;return i|0}function lI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[b>>3]-+h[a>>3];d=+h[b+8>>3]-+h[a+8>>3];return +(+C(+(d*d+c*c)))}function mI(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(a*3.0))}function nI(a,b,d){a=a|0;b=b|0;d=+d;var e=0;h[b>>3]=+h[b>>3]*d;e=b+8|0;h[e>>3]=+h[e>>3]*d;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function oI(a){a=+a;return +(a*a*3.0*(1.0-a))}function pI(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;G=l;l=l+128|0;B=G+112|0;v=G+80|0;u=G;r=G+96|0;s=G+64|0;t=G+48|0;C=G+32|0;D=G+16|0;E=a+(b+-1<<4)|0;q=0;w=0.0;x=0.0;y=0.0;z=0.0;A=0.0;while(1){if((q|0)>=(b|0))break;K=d+(q*40|0)+8|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];H=+AI(v,B)+x;J=d+(q*40|0)+24|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];p=+AI(v,B)+A;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];o=+AI(v,B)+y;L=a+(q<<4)|0;M=d+(q*40|0)|0;I=+BI(+h[M>>3]);c[B>>2]=c[a>>2];c[B+4>>2]=c[a+4>>2];c[B+8>>2]=c[a+8>>2];c[B+12>>2]=c[a+12>>2];nI(s,B,I);I=+CI(+h[M>>3]);c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];nI(t,B,I);c[v>>2]=c[s>>2];c[v+4>>2]=c[s+4>>2];c[v+8>>2]=c[s+8>>2];c[v+12>>2]=c[s+12>>2];c[B>>2]=c[t>>2];c[B+4>>2]=c[t+4>>2];c[B+8>>2]=c[t+8>>2];c[B+12>>2]=c[t+12>>2];rI(r,v,B);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];sI(u,v,B);c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];I=+AI(v,B)+w;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];q=q+1|0;w=I;x=H;y=o;z=+AI(v,B)+z;A=p}o=y*x-A*A;p=o>=0.0?o:-o;if(!(p>=1.0e-06?(m=(y*w-A*z)/o,n=(x*z-A*w)/o,!(p<1.0e-06|m<=0.0|n<=0.0)):0))F=6;if((F|0)==6){c[v>>2]=c[a>>2];c[v+4>>2]=c[a+4>>2];c[v+8>>2]=c[a+8>>2];c[v+12>>2]=c[a+12>>2];c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];m=+lI(v,B)*.3333333333333333;n=m};c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];nI(C,B,m);c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[j>>2]=c[E>>2];c[j+4>>2]=c[E+4>>2];c[j+8>>2]=c[E+8>>2];c[j+12>>2]=c[E+12>>2];c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];nI(D,B,n);c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];l=G;return}function qI(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0;C=l;l=l+64|0;B=C;z=(j|0)==2;y=+h[d>>3];u=+h[d+8>>3];v=B+8|0;w=+h[e>>3];x=B+16|0;p=+h[e+8>>3];q=B+24|0;r=+h[f>>3];s=+h[g>>3];t=B+32|0;o=+h[f+8>>3];n=+h[g+8>>3];e=B+40|0;f=B+48|0;g=B+56|0;d=1;k=4.0;m=4.0;while(1){h[B>>3]=y;h[v>>3]=u;D=m*.3333333333333333;h[x>>3]=D*w+y;h[q>>3]=D*p+u;D=k*.3333333333333333;h[t>>3]=r-D*s;h[e>>3]=o-D*n;h[f>>3]=r;h[g>>3]=o;if(d?(D=+vI(B,4),D<+vI(i,j)+-.001):0){d=0;break}if(wI(a,b,B)|0){A=5;break}if(m==0.0&k==0.0){A=9;break}E=m>.01;d=0;k=E?k*.5:0.0;m=E?m*.5:0.0}a:do if((A|0)==5){jI((c[42490]|0)+4|0);e=c[42491]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[42490]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[42490]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else if((A|0)==9)if(z){jI((c[42490]|0)+4|0);e=c[42491]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[42490]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[42490]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else d=0;while(0);l=C;return d|0}function rI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function sI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]-+h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]-+h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function tI(a){a=+a;a=1.0-a;return +(a*a*a)}function uI(a){a=+a;return +(a*a*a)}function vI(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0;c=0.0;d=1;while(1){if((d|0)>=(b|0))break;g=d+-1|0;e=+h[a+(d<<4)>>3]-+h[a+(g<<4)>>3];f=+h[a+(d<<4)+8>>3]-+h[a+(g<<4)+8>>3];c=+C(+(f*f+e*e))+c;d=d+1|0}return +c}function wI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=l;l=l+64|0;t=C+32|0;u=C;w=u+16|0;y=d+16|0;z=d+32|0;A=d+48|0;B=d+8|0;g=d+24|0;i=d+40|0;j=d+56|0;k=u+8|0;m=u+24|0;f=0;a:while(1){if((f|0)>=(b|0)){e=1;break}n=a+(f<<5)|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=a+(f<<5)+16|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];n=xI(d,u,t)|0;b:do if((n|0)!=4){o=+h[u>>3];p=+h[k>>3];q=+h[w>>3];r=+h[m>>3];e=0;while(1){if((e|0)>=(n|0))break b;s=+h[t+(e<<3)>>3];if((!(s<1.0e-06|s>.999999)?(x=s*s*s,E=s*3.0,D=1.0-s,s=E*s*D,v=D*D,E=v*E,D=v*D,v=+h[y>>3]*E+ +h[d>>3]*D+ +h[z>>3]*s+ +h[A>>3]*x,x=+h[g>>3]*E+ +h[B>>3]*D+ +h[i>>3]*s+ +h[j>>3]*x,s=v-o,D=x-p,!(D*D+s*s<.001)):0)?(E=v-q,D=x-r,!(D*D+E*E<.001)):0){e=0;break a}e=e+1|0}}while(0);f=f+1|0}l=C;return e|0}function xI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+96|0;s=v+48|0;t=v+24|0;k=v;u=v+80|0;p=+h[b>>3];g=+h[b+16>>3]-p;q=+h[b+8>>3];j=+h[b+24>>3]-q;c[u>>2]=0;a:do if(!(g==0.0)){j=j/g;m=a+16|0;n=a+32|0;o=a+48|0;yI(+h[a+8>>3]-+h[a>>3]*j,+h[a+24>>3]-+h[m>>3]*j,+h[a+40>>3]-+h[n>>3]*j,+h[a+56>>3]-+h[o>>3]*j,s);h[s>>3]=j*p-q+ +h[s>>3];e=UI(s,t)|0;if((e|0)==4)b=4;else{f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/g;b=0;while(1){if((b|0)>=(e|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(yI(+h[a>>3],+h[m>>3],+h[n>>3],+h[o>>3],s),q=(+h[s>>3]-p+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,q>=0.0&q<=1.0):0)zI(j,d,u);b=b+1|0}b=c[u>>2]|0}}else{yI(+h[a>>3],+h[a+16>>3],+h[a+32>>3],+h[a+48>>3],s);h[s>>3]=+h[s>>3]-p;r=UI(s,t)|0;if(!(j==0.0)){if((r|0)==4){b=4;break}m=a+8|0;n=a+24|0;o=a+40|0;e=a+56|0;f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/j;b=0;while(1){if((b|0)>=(r|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(yI(+h[m>>3],+h[n>>3],+h[o>>3],+h[e>>3],s),p=(+h[s>>3]-q+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,p>=0.0&p<=1.0):0)zI(j,d,u);b=b+1|0}b=c[u>>2]|0;break}yI(+h[a+8>>3],+h[a+24>>3],+h[a+40>>3],+h[a+56>>3],s);h[s>>3]=+h[s>>3]-q;i=UI(s,k)|0;b=(i|0)==4;b:do if((r|0)==4){if(b){b=4;break a}else b=0;while(1){if((b|0)>=(i|0))break b;zI(+h[k+(b<<3)>>3],d,u);b=b+1|0}}else{if(b){b=0;while(1){if((b|0)>=(r|0))break b;zI(+h[t+(b<<3)>>3],d,u);b=b+1|0}}else e=0;while(1){if((e|0)>=(r|0))break b;f=t+(e<<3)|0;b=0;while(1){if((b|0)>=(i|0))break;g=+h[f>>3];if(g==+h[k+(b<<3)>>3])zI(g,d,u);b=b+1|0}e=e+1|0}}while(0);b=c[u>>2]|0}while(0);l=v;return b|0}function yI(a,b,c,d,e){a=+a;b=+b;c=+c;d=+d;e=e|0;h[e+24>>3]=d-a+(b-c)*3.0;h[e+16>>3]=(c+a)*3.0-b*6.0;h[e+8>>3]=(b-a)*3.0;h[e>>3]=a;return}function zI(a,b,d){a=+a;b=b|0;d=d|0;var e=0;if(a>=0.0&a<=1.0){e=c[d>>2]|0;h[b+(e<<3)>>3]=a;c[d>>2]=e+1}return}function AI(a,b){a=a|0;b=b|0;return +(+h[b+8>>3]*+h[a+8>>3]+ +h[b>>3]*+h[a>>3])}function BI(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(b+a*3.0))}function CI(a){a=+a;return +(a*a*((1.0-a)*3.0+a))}
function sx(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=l;l=l+2288|0;W=Y+208|0;V=Y+192|0;U=Y+176|0;T=Y+160|0;S=Y+144|0;R=Y+128|0;P=Y+112|0;O=Y+96|0;N=Y+80|0;M=Y+64|0;L=Y+56|0;K=Y+48|0;X=Y+32|0;Q=Y+24|0;J=Y;G=Y+1264|0;H=Y+224|0;I=d+16|0;C=(e[(c[I>>2]|0)+178>>1]|0)>2;Fv(1);jx(d);cm(H,1024,Y+240|0);tB(d,1,87657,174181)|0;tB(d,1,87661,174181)|0;c[42190]=tB(d,1,96043,174181)|0;c[42189]=tB(d,1,96049,174181)|0;tB(d,2,87657,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0;if(i&16){tB(d,1,87667,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&1){tB(d,2,87671,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&32){tB(d,2,87667,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&2){tB(d,2,87674,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&4){tB(d,2,87682,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(!(i&8)){v=0;w=0;x=0}else{x=tB(d,0,87671,174181)|0;w=tB(d,0,87690,174181)|0;v=tB(d,0,87697,174181)|0}z=tB(d,0,87705,174181)|0;A=H+4|0;B=H+8|0;u=0;i=0;y=co(d)|0;while(1){if(!y)break;t=y+16|0;k=c[t>>2]|0;o=+h[k+16>>3];j=(c[42183]|0)==0;if(C){if(j)m=+h[k+24>>3];else m=+h[20895]-+h[k+24>>3];q=+h[(c[k+132>>2]|0)+16>>3]*72.0;h[J>>3]=o;h[J+8>>3]=m;h[J+16>>3]=q;pL(G,87708,J)|0;fm(H,G)|0;j=3;while(1){if((j|0)>=(e[(c[I>>2]|0)+178>>1]|0))break;h[Q>>3]=+h[(c[(c[t>>2]|0)+132>>2]|0)+(j<<3)>>3]*72.0;pL(G,87723,Q)|0;fm(H,G)|0;j=j+1|0}j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;s=c[H>>2]|0;c[A>>2]=s;Km(y,87657,s)|0;s=y}else{if(j)m=+h[k+24>>3];else m=+h[20895]-+h[k+24>>3];h[X>>3]=o;h[X+8>>3]=m;pL(G,87729,X)|0;Km(y,87657,G)|0;s=y}h[K>>3]=+h[(c[t>>2]|0)+80>>3]*.013888888888888888;pL(G,87652,K)|0;Cm(s,c[42189]|0,G)|0;j=c[t>>2]|0;h[L>>3]=(+h[j+96>>3]+ +h[j+88>>3])*.013888888888888888;pL(G,87652,L)|0;Cm(s,c[42190]|0,G)|0;j=c[t>>2]|0;k=c[j+108>>2]|0;if((k|0)!=0?(a[k+81>>0]|0)!=0:0){q=+h[k+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[M>>3]=+h[k+56>>3];h[M+8>>3]=q;pL(G,87729,M)|0;Km(s,87667,G)|0;j=c[t>>2]|0}if(xJ(c[c[j+8>>2]>>2]|0,91264)|0){if(c[42214]|0?(Oy(y)|0)<<24>>24:0){k=c[(c[t>>2]|0)+12>>2]|0;r=k+8|0;j=c[r>>2]|0;if((j|0)<3){j=Im(s,87739)|0;if(!j)j=8;else j=rM(j)|0;j=(j|0)<3?8:j}p=k+44|0;q=1.0/+(j|0);n=0;while(1){if((n|0)>=(j|0))break;if((n|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32}if((c[r>>2]|0)>2){k=c[p>>2]|0;if(!(c[42183]|0))m=+h[k+(n<<4)+8>>3]*.013888888888888888;else m=+h[20896]-+h[k+(n<<4)+8>>3]*.013888888888888888;h[N>>3]=+h[k+(n<<4)>>3]*.013888888888888888;h[N+8>>3]=m;pL(G,87752,N)|0}else{k=c[t>>2]|0;m=q*+(n|0)*6.283185307179586;o=+h[k+32>>3]*.5*+E(+m);if(!(c[42183]|0))m=+h[k+40>>3]*.5*+F(+m);else m=+h[20896]-+h[k+40>>3]*.5*+F(+m);h[O>>3]=o;h[O+8>>3]=m;pL(G,87752,O)|0}fm(H,G)|0;n=n+1|0}k=c[42214]|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;Cm(s,k,t)|0}}else{tx(y,c[j+12>>2]|0,H);hm(H)|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;Km(s,87661,t)|0}a:do if((c[42181]|0)>0){t=Pm(d,y)|0;j=u;while(1){if(!t)break a;s=t+16|0;k=c[s>>2]|0;do if((a[k+112>>0]|0)!=6?(D=c[k+8>>2]|0,(D|0)!=0):0){r=0;k=D;while(1){if((r|0)>=(c[k+4>>2]|0))break;if((r|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=59;k=c[(c[s>>2]|0)+8>>2]|0}k=c[k>>2]|0;if(c[k+(r*48|0)+8>>2]|0){if(!(c[42183]|0))m=+h[k+(r*48|0)+24>>3];else m=+h[20895]-+h[k+(r*48|0)+24>>3];h[P>>3]=+h[k+(r*48|0)+16>>3];h[P+8>>3]=m;pL(G,87762,P)|0;fm(H,G)|0;i=1;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}if(c[k+(r*48|0)+12>>2]|0){if(!(c[42183]|0))m=+h[k+(r*48|0)+40>>3];else m=+h[20895]-+h[k+(r*48|0)+40>>3];h[R>>3]=+h[k+(r*48|0)+32>>3];h[R+8>>3]=m;pL(G,87775,R)|0;fm(H,G)|0;j=1}p=0;while(1){k=c[(c[s>>2]|0)+8>>2]|0;n=c[k>>2]|0;if((p|0)>=(c[n+(r*48|0)+4>>2]|0))break;if((p|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}else k=n;u=c[k+(r*48|0)>>2]|0;q=+h[u+(p<<4)+8>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[S>>3]=+h[u+(p<<4)>>3];h[S+8>>3]=q;pL(G,87729,S)|0;fm(H,G)|0;p=p+1|0}r=r+1|0}k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;k=c[A>>2]|0}a[k>>0]=0;k=c[H>>2]|0;c[A>>2]=k;Km(t,87657,k)|0;k=c[s>>2]|0;n=c[k+96>>2]|0;if(n){q=+h[n+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[T>>3]=+h[n+56>>3];h[T+8>>3]=q;pL(G,87729,T)|0;Km(t,87671,G)|0;k=c[s>>2]|0}n=c[k+108>>2]|0;do if(n){if(!(a[n+81>>0]|0))break;q=+h[n+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[U>>3]=+h[n+56>>3];h[U+8>>3]=q;pL(G,87729,U)|0;Km(t,87667,G)|0;k=c[s>>2]|0}while(0);n=c[k+100>>2]|0;if(n){q=+h[n+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[V>>3]=+h[n+56>>3];h[V+8>>3]=q;pL(G,87729,V)|0;Km(t,87674,G)|0;k=c[s>>2]|0}k=c[k+104>>2]|0;if(!k)break;q=+h[k+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[W>>3]=+h[k+56>>3];h[W+8>>3]=q;pL(G,87729,W)|0;Km(t,87682,G)|0}while(0);t=Rm(d,t)|0}}else j=u;while(0);u=j;y=eo(d,y)|0}ux(d,z,x,w,v);gm(H);if(b[(c[I>>2]|0)+136>>1]&1)nB(d);c[f>>2]=i;c[g>>2]=u;Fv(0);l=Y;return}function tx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+1056|0;k=n;j=n+32|0;m=b+48|0;if(!(c[m>>2]|0)){e=c[a+16>>2]|0;i=+h[e+16>>3];if(!(c[42183]|0)){g=+h[e+24>>3];f=g+ +h[b+24>>3];g=g+ +h[b+40>>3]}else{g=+h[e+24>>3];f=+h[20895]-+h[b+24>>3]-g;g=+h[20895]-+h[b+40>>3]-g}o=i+ +h[b+32>>3];h[k>>3]=i+ +h[b+16>>3];h[k+8>>3]=f;h[k+16>>3]=o;h[k+24>>3]=g;pL(j,87813,k)|0;fm(d,j)|0}b=b+56|0;e=0;while(1){if((e|0)>=(c[m>>2]|0))break;tx(a,c[(c[b>>2]|0)+(e<<2)>>2]|0,d);e=e+1|0}l=n;return}function ux(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=l;l=l+1088|0;o=s+56|0;q=s+48|0;p=s+32|0;j=s;n=s+64|0;r=b+16|0;i=c[r>>2]|0;if(!(c[42183]|0)){k=+h[i+24>>3];m=+h[i+40>>3]}else{m=+h[20895];k=m-+h[i+24>>3];m=m-+h[i+40>>3]}t=+h[i+32>>3];h[j>>3]=+h[i+16>>3];h[j+8>>3]=k;h[j+16>>3]=t;h[j+24>>3]=m;pL(n,87788,j)|0;Cm(b,d,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;if((i|0)!=0?(a[c[i>>2]>>0]|0)!=0:0){t=+h[i+64>>3];t=(c[42183]|0)==0?t:+h[20895]-t;h[p>>3]=+h[i+56>>3];h[p+8>>3]=t;pL(n,87729,p)|0;Cm(b,e,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;t=+h[i+32>>3];h[q>>3]=+h[i+24>>3]*.013888888888888888;pL(n,87808,q)|0;Cm(b,f,n)|0;h[o>>3]=t*.013888888888888888;pL(n,87808,o)|0;Cm(b,g,n)|0;i=1}else i=1;while(1){j=c[r>>2]|0;if((i|0)>(c[j+180>>2]|0))break;ux(c[(c[j+184>>2]|0)+(i<<2)>>2]|0,d,e,f,g);i=i+1|0}l=s;return}function vx(a){a=a|0;var b=0;b=l;l=l+16|0;sx(a,b,b+4|0);l=b;return}function wx(){return Ql(19796,c[4345]|0)|0}function xx(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function yx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if((a|0)<=(e|0))if((a|0)<(e|0))a=-1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return ((b|0)>(d|0)?1:((b|0)<(d|0))<<31>>31)|0}else a=1;return a|0}function zx(a){a=a|0;Kl(a)|0;return}function Ax(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];b=Bx(e)|0;if((bb[c[a>>2]&31](a,b,1)|0)!=(b|0))_I(b);l=d;return}function Bx(a){a=a|0;var b=0,d=0,e=0;b=vw(16)|0;e=a;d=c[e+4>>2]|0;a=b+8|0;c[a>>2]=c[e>>2];c[a+4>>2]=d;return b|0}function Cx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[g>>2]=b;c[g+4>>2]=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];b=Bx(f)|0;if((bb[c[a>>2]&31](a,b,1)|0)!=(b|0))_I(b);l=e;return}function Dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d;g=b;f=c[g+4>>2]|0;b=e+8|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;b=(bb[c[a>>2]&31](a,e,4)|0)!=0&1;l=d;return b|0}function Ex(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f+8>>2]=b;c[f+12>>2]=d;d=(bb[c[a>>2]&31](a,f,4)|0)!=0&1;l=e;return d|0}function Fx(a){a=a|0;return Sl(a)|0}function Gx(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=vw((Sl(a)|0)<<3)|0;b=d;a=Ol(a)|0;while(1){if(!a)break;g=a+8|0;f=c[g+4>>2]|0;e=b;c[e>>2]=c[g>>2];c[e+4>>2]=f;b=b+8|0;a=c[a>>2]|0}return d|0}function Hx(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+160|0;q=t+144|0;d=t+48|0;j=t+128|0;k=t+112|0;m=t+96|0;n=t+80|0;o=t+32|0;p=t+16|0;r=t;s=a+16|0;a=c[s>>2]|0;e=+h[a+16>>3];f=+h[a+24>>3];g=+h[a+32>>3];i=+h[a+40>>3];if((b+-1|0)>>>0<2){Ix(j,e,i);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];Jx(d,q);p=d+16|0;Ix(k,g,f);c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];Jx(m,q);c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2]}else{Ix(n,e,f);c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];Jx(d,q);n=d+16|0;Ix(o,g,i);c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];Jx(p,q);c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2]}a=(c[s>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];a=c[(c[s>>2]|0)+12>>2]|0;if(!a)a=1;else{a=a+56|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];Jx(r,q);c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];a=1}while(1){d=c[s>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Hx(c[(c[d+184>>2]|0)+(a<<2)>>2]|0,b);a=a+1|0}l=t;return}function Ix(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Jx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;g=d+16|0;e=d;f=(c[42309]|0)*90|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];aw(e,g,f);c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];h[b>>3]=+h[b>>3]-+h[20897];e=b+8|0;h[e>>3]=+h[e>>3]-+h[20898];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];l=d;return}function Kx(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+1168|0;s=w+144|0;v=w+96|0;u=w+64|0;t=w+48|0;o=w+32|0;p=w+16|0;q=w;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;r=b+16|0;m=c[(c[r>>2]|0)+116>>2]|0;c[42309]=m&3;m=m&1;a[174079]=m;if(!(m<<24>>24))Mx(b);else Lx(b);Nx(b);m=c[r>>2]|0;e=c[m+12>>2]|0;do if(e|0?(a[e+81>>0]|0)==0:0){g=e+24|0;c[t>>2]=c[g>>2];c[t+4>>2]=c[g+4>>2];c[t+8>>2]=c[g+8>>2];c[t+12>>2]=c[g+12>>2];n=+h[t>>3]+16.0;h[t>>3]=n;g=t+8|0;f=+h[g>>3]+8.0;h[g>>3]=f;g=(a[m+275>>0]&1)!=0;if(a[174079]|0){if(g){i=m+32|0;h[i>>3]=+h[i>>3]+f}else{i=m+16|0;h[i>>3]=+h[i>>3]-f}g=m+40|0;f=+h[g>>3];i=m+24|0;j=+h[i>>3];k=f-j;if(!(n>k))break;n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n;break}i=(c[42309]|0)==0;do if(g)if(i){i=m+40|0;h[i>>3]=+h[i>>3]+f;break}else{i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else if(i){i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else{i=m+40|0;h[i>>3]=+h[i>>3]+f;break}while(0);g=m+32|0;f=+h[g>>3];i=m+16|0;j=+h[i>>3];k=f-j;if(n>k){n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n}}while(0);if(d){switch(c[42309]|0){case 0:{q=m+16|0;c[41794]=c[q>>2];c[41795]=c[q+4>>2];c[41796]=c[q+8>>2];c[41797]=c[q+12>>2];break}case 1:{Ix(o,-+h[m+40>>3],+h[m+16>>3]);c[41794]=c[o>>2];c[41795]=c[o+4>>2];c[41796]=c[o+8>>2];c[41797]=c[o+12>>2];break}case 2:{Ix(p,+h[m+16>>3],-+h[m+40>>3]);c[41794]=c[p>>2];c[41795]=c[p+4>>2];c[41796]=c[p+8>>2];c[41797]=c[p+12>>2];break}case 3:{Ix(q,+h[m+24>>3],+h[m+16>>3]);c[41794]=c[q>>2];c[41795]=c[q+4>>2];c[41796]=c[q+8>>2];c[41797]=c[q+12>>2];break}default:{}}Ox(b);e=c[(c[r>>2]|0)+12>>2]|0}if(e|0?(a[e+81>>0]|0)==0:0){c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];Px(b,s)}if(!0){l=w;return}if(!(a[174079]|0)){n=+h[20898];k=+h[20897];h[v>>3]=n;h[v+8>>3]=k;h[v+16>>3]=n;h[v+24>>3]=k;h[v+32>>3]=-k;h[v+40>>3]=-n;pL(s,88049,v)|0}else{k=+h[20897];n=+h[20898];h[u>>3]=k;h[u+8>>3]=n;h[u+16>>3]=k;h[u+24>>3]=n;pL(s,87834,u)|0}GL(s)|0;Ta()}function Lx(b){b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=b+16|0;if(((so(b)|0)!=(b|0)?(g=c[j>>2]|0,i=c[g+12>>2]|0,(i|0)!=0):0)?(a[i+81>>0]|0)==0:0){d=a[g+275>>0]|0;if(!(d&1)){f=+h[g+16>>3]+ +h[g+96>>3]*.5;b=g+104|0}else{f=+h[g+32>>3]-+h[g+64>>3]*.5;b=g+72|0}e=+h[b>>3];b=d<<24>>24;do if(!(b&4))if(!(b&2)){e=(+h[g+40>>3]+ +h[g+24>>3])*.5;break}else{e=+h[g+40>>3]-e*.5;break}else e=+h[g+24>>3]+e*.5;while(0);h[i+56>>3]=f;h[i+64>>3]=e;a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[j>>2]|0;if((b|0)>(c[d+180>>2]|0))break;Lx(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function Mx(b){b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0;k=b+16|0;if(((so(b)|0)!=(b|0)?(i=c[k>>2]|0,j=c[i+12>>2]|0,(j|0)!=0):0)?(a[j+81>>0]|0)==0:0){d=a[i+275>>0]|0;if(!(d&1)){g=+h[i+24>>3]+ +h[i+56>>3]*.5;b=i+48|0}else{g=+h[i+40>>3]-+h[i+88>>3]*.5;b=i+80|0}f=+h[b>>3];b=d<<24>>24;do if(!(b&4)){e=+h[i+16>>3];if(!(b&2)){e=(+h[i+32>>3]+e)*.5;break}else{e=e+f*.5;break}}else e=+h[i+32>>3]-f*.5;while(0);h[j+56>>3]=e;h[j+64>>3]=g;a[(c[(c[k>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[k>>2]|0;if((b|0)>(c[d+180>>2]|0))break;Mx(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function Nx(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=l;l=l+544|0;L=S+504|0;R=S+416|0;Q=S+376|0;K=S+352|0;J=S+312|0;I=S+288|0;H=S+248|0;M=S+200|0;B=S+152|0;O=S+96|0;p=S+488|0;C=S+456|0;D=S+424|0;E=S+384|0;F=S+360|0;G=S+320|0;w=S+296|0;x=S+256|0;y=S+232|0;z=S+168|0;A=S+136|0;f=S+56|0;N=S+16|0;P=S;o=e+16|0;u=c[o>>2]|0;g=b[u+136>>1]&14;u=d[u+113>>0]|0;if(!((u&54|0)==0?(u&1|0)==0|(c[42182]|0)!=0:0)){u=g<<16>>16==0;n=co(e)|0;h=0;j=0;i=0;while(1){if(!n)break;g=c[(c[n+16>>2]|0)+108>>2]|0;do if(g)if(!(a[g+81>>0]|0)){i=i+1|0;break}else{h=h+1|0;break}while(0);m=Pm(e,n)|0;g=j;while(1){if(!m)break;k=c[m+16>>2]|0;j=c[k+108>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+100>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+104>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+96>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);m=Rm(e,m)|0}n=eo(e,n)|0;j=g}if(!(a[(c[o>>2]|0)+113>>0]&8))o=0;else o=Rx(e)|0;t=j+i|0;if(t|0){q=h+j+o+(mn(e)|0)|0;r=vw(q*40|0)|0;s=vw(t*40|0)|0;Ix(M,2147483647.0,2147483647.0);g=M+16|0;Ix(p,-2147483647.0,-2147483647.0);c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];g=s;i=r;n=co(e)|0;while(1){if(!n)break;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Sx(C,n,i,L);c[M>>2]=c[C>>2];c[M+4>>2]=c[C+4>>2];c[M+8>>2]=c[C+8>>2];c[M+12>>2]=c[C+12>>2];c[M+16>>2]=c[C+16>>2];c[M+20>>2]=c[C+20>>2];c[M+24>>2]=c[C+24>>2];c[M+28>>2]=c[C+28>>2];h=c[(c[n+16>>2]|0)+108>>2]|0;do if(h)if(!(a[h+81>>0]|0)){c[L>>2]=c[B>>2];c[L+4>>2]=c[B+4>>2];c[L+8>>2]=c[B+8>>2];c[L+12>>2]=c[B+12>>2];Ux(h,i,g,0,L);g=g+40|0;break}else{i=i+40|0;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(D,h,i,L);c[M>>2]=c[D>>2];c[M+4>>2]=c[D+4>>2];c[M+8>>2]=c[D+8>>2];c[M+12>>2]=c[D+12>>2];c[M+16>>2]=c[D+16>>2];c[M+20>>2]=c[D+20>>2];c[M+24>>2]=c[D+24>>2];c[M+28>>2]=c[D+28>>2];break}while(0);m=Pm(e,n)|0;i=i+40|0;while(1){if(!m)break;k=m+16|0;h=c[k>>2]|0;j=c[h+96>>2]|0;a:do if(!j)v=52;else{do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){$z(F,e,m);c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];Ux(j,i,g,1,L);g=g+40|0;break}c[H>>2]=c[j>>2];_l(0,88861,H)|0;break a}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(E,j,i,L);c[M>>2]=c[E>>2];c[M+4>>2]=c[E+4>>2];c[M+8>>2]=c[E+8>>2];c[M+12>>2]=c[E+12>>2];c[M+16>>2]=c[E+16>>2];c[M+20>>2]=c[E+20>>2];c[M+24>>2]=c[E+24>>2];c[M+28>>2]=c[E+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0;v=52}while(0);b:do if((v|0)==52){v=0;j=c[h+104>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){Vx(w,m);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];Ux(j,i,g,1,L);g=g+40|0;break}c[I>>2]=c[j>>2];_l(0,88896,I)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(G,j,i,L);c[M>>2]=c[G>>2];c[M+4>>2]=c[G+4>>2];c[M+8>>2]=c[G+8>>2];c[M+12>>2]=c[G+12>>2];c[M+16>>2]=c[G+16>>2];c[M+20>>2]=c[G+20>>2];c[M+24>>2]=c[G+24>>2];c[M+28>>2]=c[G+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+100>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){Wx(y,m);c[L>>2]=c[y>>2];c[L+4>>2]=c[y+4>>2];c[L+8>>2]=c[y+8>>2];c[L+12>>2]=c[y+12>>2];Ux(j,i,g,1,L);g=g+40|0;break}c[J>>2]=c[j>>2];_l(0,88936,J)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(x,j,i,L);c[M>>2]=c[x>>2];c[M+4>>2]=c[x+4>>2];c[M+8>>2]=c[x+8>>2];c[M+12>>2]=c[x+12>>2];c[M+16>>2]=c[x+16>>2];c[M+20>>2]=c[x+20>>2];c[M+24>>2]=c[x+24>>2];c[M+28>>2]=c[x+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+108>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){$z(A,e,m);c[L>>2]=c[A>>2];c[L+4>>2]=c[A+4>>2];c[L+8>>2]=c[A+8>>2];c[L+12>>2]=c[A+12>>2];Ux(j,i,g,1,L);g=g+40|0;break}c[K>>2]=c[j>>2];_l(0,88976,K)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(z,j,i,L);c[M>>2]=c[z>>2];c[M+4>>2]=c[z+4>>2];c[M+8>>2]=c[z+8>>2];c[M+12>>2]=c[z+12>>2];c[M+16>>2]=c[z+16>>2];c[M+20>>2]=c[z+20>>2];c[M+24>>2]=c[z+24>>2];c[M+28>>2]=c[z+28>>2]}while(0);i=i+40|0}}while(0);m=Rm(e,m)|0}n=eo(e,n)|0}if(o|0){c[f>>2]=c[M>>2];c[f+4>>2]=c[M+4>>2];c[f+8>>2]=c[M+8>>2];c[f+12>>2]=c[M+12>>2];c[f+16>>2]=c[M+16>>2];c[f+20>>2]=c[M+20>>2];c[f+24>>2]=c[M+24>>2];c[f+28>>2]=c[M+28>>2];c[f+32>>2]=i;h=L;g=h+40|0;do{c[h>>2]=c[f>>2];h=h+4|0;f=f+4|0}while((h|0)<(g|0));Xx(N,e,L);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];c[M+16>>2]=c[N+16>>2];c[M+20>>2]=c[N+20>>2];c[M+24>>2]=c[N+24>>2];c[M+28>>2]=c[N+28>>2]}a[O+32>>0]=HA(e,ym(e,0,89012,0)|0,1)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[O+16>>2]=c[M+16>>2];c[O+20>>2]=c[M+20>>2];c[O+24>>2]=c[M+24>>2];c[O+28>>2]=c[M+28>>2];zE(r,q,s,t,O)|0;if(0)Yx(r,q,s,t,O);f=0;g=0;h=s;while(1){if((g|0)>=(t|0))break;if(a[h+36>>0]|0){O=c[h+32>>2]|0;a[O+81>>0]=1;N=O+56|0;Zx(P,h);c[N>>2]=c[P>>2];c[N+4>>2]=c[P+4>>2];c[N+8>>2]=c[P+8>>2];c[N+12>>2]=c[P+12>>2];bB(e,O);f=f+1|0}g=g+1|0;h=h+40|0}if(!0){if((f|0)!=(t|0)){c[R>>2]=f;c[R+4>>2]=t;_l(0,89057,R)|0}}else{R=c[13918]|0;c[Q>>2]=f;c[Q+4>>2]=t;zL(R,89024,Q)|0}_I(r);_I(s)}}l=S;return}function Ox(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;i=l;l=l+48|0;e=i+32|0;f=i+16|0;g=i;if(+h[20897]!=0.0|+h[20898]!=0.0|(c[42309]|0)!=0){d=co(a)|0;while(1){if(!d)break;if(c[42309]|0)KB(d,0);b=d+16|0;j=(c[b>>2]|0)+16|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];Jx(f,e);c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];b=c[(c[b>>2]|0)+108>>2]|0;if(b|0){j=b+56|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];Jx(g,e);c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2]}a:do if((c[42181]|0)==1){b=Pm(a,d)|0;while(1){if(!b)break a;Qx(b);b=Rm(a,b)|0}}while(0);d=eo(a,d)|0}Hx(a,c[(c[a+16>>2]|0)+116>>2]&3)}l=i;return}function Px(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0;i=b+16|0;j=c[i>>2]|0;g=a[j+275>>0]|0;b=g<<24>>24;do if(!(b&4)){e=+h[j+16>>3];if(!(b&2)){f=(+h[j+32>>3]+e)*.5;break}else{f=+h[d>>3]*.5+e;break}}else f=+h[j+32>>3]-+h[d>>3]*.5;while(0);if(!(g&1))e=+h[d+8>>3]*.5+ +h[j+24>>3];else e=+h[j+40>>3]-+h[d+8>>3]*.5;j=c[j+12>>2]|0;h[j+56>>3]=f;h[j+64>>3]=e;a[(c[(c[i>>2]|0)+12>>2]|0)+81>>0]=1;return}function Qx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+144|0;q=s+120|0;e=s+16|0;i=s+104|0;j=s+88|0;k=s+72|0;m=s+56|0;n=s+40|0;o=s+24|0;r=s;p=b+16|0;d=c[p>>2]|0;f=c[d+8>>2]|0;if(!f){if((a[174076]|0)==0?(a[d+112>>0]|0)!=6:0){q=Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;r=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[e>>2]=q;c[e+4>>2]=r;_l(1,88844,e)|0}}else{h=0;b=f;while(1){if((h|0)>=(c[b+4>>2]|0))break;g=c[b>>2]|0;b=c[g+(h*48|0)>>2]|0;e=c[g+(h*48|0)+4>>2]|0;f=c[g+(h*48|0)+8>>2]|0;g=c[g+(h*48|0)+12>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;t=b+(d<<4)|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Jx(i,q);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];c[t+12>>2]=c[i+12>>2];d=d+1|0}if(f|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+16|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Jx(j,q);c[t>>2]=c[j>>2];c[t+4>>2]=c[j+4>>2];c[t+8>>2]=c[j+8>>2];c[t+12>>2]=c[j+12>>2]}if(g|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+32|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Jx(k,q);c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2]}d=c[p>>2]|0;h=h+1|0;b=c[d+8>>2]|0}b=c[d+96>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Jx(m,q);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];d=c[p>>2]|0}b=c[d+108>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Jx(n,q);c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];d=c[p>>2]|0}b=c[d+100>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Jx(o,q);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];d=c[p>>2]|0}d=c[d+104>>2]|0;if(d|0){t=d+56|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Jx(r,q);c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}}l=s;return}function Rx(b){b=b|0;var d=0,e=0,f=0;f=b+16|0;if((so(b)|0)!=(b|0)?(d=c[(c[f>>2]|0)+12>>2]|0,(d|0)!=0):0){e=1;b=(a[d+81>>0]|0)!=0&1}else{e=1;b=0}while(1){d=c[f>>2]|0;if((e|0)>(c[d+180>>2]|0))break;d=(Rx(c[(c[d+184>>2]|0)+(e<<2)>>2]|0)|0)+b|0;e=e+1|0;b=d}return b|0}function Sx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[174079]|0)==0;d=d+16|0;m=c[d>>2]|0;k=+h[(n?m+32|0:m+40|0)>>3];h[e+16>>3]=k*72.0;j=+h[(n?m+40|0:m+32|0)>>3];h[e+24>>3]=j*72.0;d=(c[d>>2]|0)+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*36.0;d=e+8|0;h[d>>3]=+h[d>>3]-j*36.0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];_x(b,e,i);l=g;return}function Tx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[174079]|0)==0;m=d+24|0;k=+h[(n?m:d+32|0)>>3];h[e+16>>3]=k;j=+h[(n?d+32|0:m)>>3];h[e+24>>3]=j;d=d+56|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*.5;d=e+8|0;h[d>>3]=+h[d>>3]-j*.5;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];_x(b,e,i);l=g;return}function Ux(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f|0){f=d+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2]}if(!(a[174079]|0)){g=b+24|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2]}else{h[e>>3]=+h[b+32>>3];h[e+8>>3]=+h[b+24>>3]}c[e+32>>2]=b;a[e+36>>0]=0;c[d+32>>2]=e;return}function Vx(a,b){a=a|0;b=b|0;b=_z(b)|0;do if(b){b=c[b>>2]|0;if(!(c[b+8>>2]|0)){b=c[b>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{b=b+16|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function Wx(a,b){a=a|0;b=b|0;var d=0;b=_z(b)|0;do if(b){d=c[b>>2]|0;b=(c[b+4>>2]|0)+-1|0;if(!(c[d+(b*48|0)+12>>2]|0)){d=(c[d+(b*48|0)>>2]|0)+((c[d+(b*48|0)+4>>2]|0)+-1<<4)|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}else{d=d+(b*48|0)+32|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+112|0;k=q+72|0;n=q+32|0;o=q;p=d+16|0;j=1;while(1){f=c[p>>2]|0;if((j|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(j<<2)>>2]|0;g=k;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));Xx(n,f,k);g=e;h=n;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));j=j+1|0}if(((so(d)|0)!=(d|0)?(m=c[(c[p>>2]|0)+12>>2]|0,m|0):0)?a[m+81>>0]|0:0){p=e+32|0;n=c[p>>2]|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];Tx(o,m,n,k);c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];c[e+16>>2]=c[o+16>>2];c[e+20>>2]=c[o+20>>2];c[e+24>>2]=c[o+24>>2];c[e+28>>2]=c[o+28>>2];c[p>>2]=(c[p>>2]|0)+40}g=b;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=q;return}function Yx(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+160|0;r=s+96|0;p=s+48|0;o=s;q=c[13918]|0;n=d[g+32>>0]|0;i=+h[g>>3];j=+h[g+8>>3];k=+h[g+16>>3];m=+h[g+24>>3];c[o>>2]=b;c[o+4>>2]=f;c[o+8>>2]=n;h[o+16>>3]=i;h[o+24>>3]=j;h[o+32>>3]=k;h[o+40>>3]=m;zL(q,89099,o)|0;a:do if(0>=2){XL(89159,8,1,q)|0;o=0;while(1){if((o|0)>=(b|0))break;g=c[a+32>>2]|0;i=+h[a>>3];j=+h[a+8>>3];k=+h[a+16>>3];m=+h[a+24>>3];if(!g)n=174181;else n=c[c[g+32>>2]>>2]|0;c[p>>2]=o;h[p+8>>3]=i;h[p+16>>3]=j;h[p+24>>3]=k;h[p+32>>3]=m;c[p+40>>2]=g;c[p+44>>2]=n;zL(q,89168,p)|0;o=o+1|0;a=a+40|0}XL(89211,8,1,q)|0;g=0;while(1){if((g|0)>=(f|0))break a;b=d[e+36>>0]|0;i=+h[e+16>>3];j=+h[e+24>>3];k=+h[e>>3];m=+h[e+8>>3];p=c[c[e+32>>2]>>2]|0;c[r>>2]=g;c[r+4>>2]=e;c[r+8>>2]=b;h[r+16>>3]=i;h[r+24>>3]=j;h[r+32>>3]=k;h[r+40>>3]=m;c[r+48>>2]=p;zL(q,89220,r)|0;e=e+40|0;g=g+1|0}}while(0);l=s;return}function Zx(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b+8>>3]*.5+ +h[b+24>>3];h[a>>3]=+h[b>>3]*.5+ +h[b+16>>3];h[a+8>>3]=c;return}function _x(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0;e=l;l=l+16|0;f=e;j=+h[b>>3];h[d>>3]=+h[(+h[d>>3]<j?d:b)>>3];g=d+8|0;i=+h[b+8>>3];h[g>>3]=+h[(+h[g>>3]<i?d:b)+8>>3];j=+h[b+16>>3]+j;h[f>>3]=j;i=+h[b+24>>3]+i;h[f+8>>3]=i;g=d+16|0;h[g>>3]=+h[(+h[g>>3]>j?g:f)>>3];b=d+24|0;h[b>>3]=+h[(+h[b>>3]>i?g:f)+8>>3];c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];l=e;return}function $x(a){a=a|0;Kx(a,1);return}function ay(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=l;l=l+16|0;d=e;b=RA(Im(a,90560)|0)|0;if(b){b=by(b)|0;if(b|0){f=c[b+40>>2]|0;d=c[b+44>>2]|0;g=a+16|0;a=c[g>>2]|0;h[a+32>>3]=+(f|0)*.013888888888888888;h[a+40>>3]=+(d|0)*.013888888888888888;a=vw(12)|0;c[(c[g>>2]|0)+12>>2]=a;c[a>>2]=c[b+12>>2];c[a+4>>2]=((f|0)/-2|0)-(c[b+32>>2]|0);c[a+8>>2]=((d|0)/-2|0)-(c[b+36>>2]|0)}}else{c[d>>2]=Dn(a)|0;_l(0,89268,d)|0}l=e;return}function by(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+1152|0;i=p+24|0;h=p+8|0;e=p;f=p+120|0;j=p+44|0;k=p+40|0;m=p+36|0;n=p+32|0;o=p+28|0;d=c[42310]|0;if(!d){d=Ql(19832,c[4345]|0)|0;c[42310]=d}d=bb[c[d>>2]&31](d,b,512)|0;do if(!d){g=aM(b,123632)|0;if(!g){c[e>>2]=b;_l(0,89317,e)|0;d=0;break}else{d=0;e=0}while(1){if(!(gL(f,1024,g)|0)){f=11;break}c[h>>2]=k;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=o;q=(cM(f,89345,h)|0)==4;e=q?1:e;if((a[f>>0]|0)!=37){q=(hL(f,89374)|0)==0;d=q?d:1}if((e|0)!=0&(d|0)!=0){f=12;break}}if((f|0)==11)if(!e){c[i>>2]=b;_l(0,89379,i)|0;d=0}else f=12;if((f|0)==12){q=ww(64)|0;k=c[k>>2]|0;c[q+32>>2]=k;m=c[m>>2]|0;c[q+40>>2]=(c[n>>2]|0)-k;c[q+36>>2]=(c[o>>2]|0)-m;c[q+8>>2]=b;o=c[42311]|0;c[42311]=o+1;c[q+12>>2]=o;_L(zN(g)|0,j)|0;o=c[j+36>>2]|0;n=ww(o+1|0)|0;c[q+52>>2]=n;oM(g,0,0)|0;wN(n,o,1,g)|0;a[n+o>>0]=0;o=c[42310]|0;bb[c[o>>2]&31](o,q,1)|0;a[q+16>>0]=d;d=q}LL(g)|0}while(0);l=p;return d|0}function cy(a,b,d){a=a|0;b=b|0;d=d|0;_I(c[b+52>>2]|0);return}function dy(a){a=a|0;_I(c[(c[a+16>>2]|0)+12>>2]|0);return}function ey(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+8|0;k=n;j=(d|0)!=0;a:do if(j){h=0;f=0;b:while(1)while(1){if(h)break a;g=c[d+(f<<2)>>2]|0;if(!g){i=6;break a}f=f+1|0;if(!(a[g>>0]|0)){h=1;continue b}}}else i=6;while(0);c:do if((i|0)==6)while(1){f=c[e>>2]|0;if(!f)break c;mr(b,f)|0;mr(b,134901)|0;e=e+4|0;i=6}while(0);d:do if(j){h=0;while(1){f=c[d+(h<<2)>>2]|0;if(!f)break d;do if(a[f>>0]|0){e=RA(f)|0;if(!e){c[k>>2]=f;_l(0,89418,k)|0;break}g=aM(e,123632)|0;if(!g){c[m>>2]=e;_l(0,89446,m)|0;break}while(1){f=QA(g)|0;if(!f)break;mr(b,f)|0}mr(b,134901)|0;LL(g)|0}while(0);h=h+1|0}}while(0);l=n;return}function fy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;d=c[d+52>>2]|0;a:while(1){e=a[d>>0]|0;b:do switch(e<<24>>24){case 0:break a;case 37:{if((a[d+1>>0]|0)==37){e=d+2|0;if((((pK(e,89474,3)|0)!=0?(pK(e,89478,5)|0)!=0:0)?(pK(e,89484,3)|0)!=0:0)?(pK(e,89488,7)|0)!=0:0){e=37;break b}else g=37;c:while(1){switch(g<<24>>24){case 13:{f=10;break c}case 10:case 0:{f=12;break c}default:{}}g=d+1|0;d=g;g=a[g>>0]|0}if((f|0)==10){e=d+1|0;if((a[e>>0]|0)==10){d=d+2|0;continue a}}else if((f|0)==12)e=d+1|0;d=g<<24>>24==0?d:e;continue a}else e=37;break}default:{}}while(0);d:while(1){switch(e<<24>>24){case 10:case 13:case 0:break d;default:{}}nr(b,e<<24>>24)|0;g=d+1|0;d=g;e=a[g>>0]|0}f=d+1|0;if(e<<24>>24==13?(a[f>>0]|0)==10:0)d=d+2|0;else d=e<<24>>24==0?d:f;nr(b,10)|0}return}function gy(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;d=c[42310]|0;a:do if(d|0){d=bb[c[d>>2]&31](d,0,128)|0;while(1){if(!d)break a;if(!(a[d+16>>0]|0)){c[e>>2]=c[d+12>>2];sr(b,89496,e);mr(b,89514)|0;fy(b,d);mr(b,89532)|0;mr(b,89547)|0}g=c[42310]|0;d=bb[c[g>>2]&31](g,d,8)|0}}while(0);l=f;return}function hy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;a:do switch(d|0){case 0:{f=b;break}case 1:{f=zB(b)|0;break}default:{switch(iy(b)|0){case 2:break;case 1:{f=zB(b)|0;break a}default:{f=b;break a}}if(!(c[42312]|0)){_l(0,89559,e)|0;c[42312]=1;f=b}else f=b}}while(0);if(!(c[42313]|0))cm(169252,0,0);d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}c[42314]=d+1;a[d>>0]=40;e=f;b:while(1){switch(a[e>>0]|0){case 0:break b;case 92:case 41:case 40:{d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}c[42314]=d+1;a[d>>0]=92;break}default:{}}d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}h=a[e>>0]|0;c[42314]=d+1;a[d>>0]=h;e=e+1|0}d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}c[42314]=d+1;a[d>>0]=41;if((f|0)!=(b|0))_I(f);d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}a[d>>0]=0;h=c[42313]|0;c[42314]=h;l=g;return h|0}function iy(b){b=b|0;var c=0,d=0;c=0;a:while(1){while(1){d=a[b>>0]|0;if(!(d<<24>>24))break a;if((d&255)<127)b=b+1|0;else break}if((d&-4)<<24>>24==-64){c=1;b=b+2|0}else{c=2;break}}return c|0}function jy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+96|0;i=n+80|0;j=n+72|0;m=n+64|0;g=n+32|0;k=n;h[g>>3]=+h[a>>3];h[g+8>>3]=+h[a+8>>3];h[g+16>>3]=+h[b>>3];h[g+24>>3]=+h[b+8>>3];do if((DI(d,g,j)|0)>=0){if(!f){b=d+4|0;a=c[b>>2]|0;f=c[42318]|0;if((a|0)>(c[42317]|0)){if(!f)a=ww(a<<5)|0;else a=yw(f,a<<5)|0;c[42318]=a;g=c[b>>2]|0;c[42317]=g;f=a}else g=a;b=c[d>>2]|0;a=0;while(1){if((a|0)>=(g|0))break;o=f+(a<<5)|0;d=b+(a<<4)|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];o=f+(a<<5)+16|0;d=a+1|0;p=b+(((d|0)%(g|0)|0)<<4)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];a=d}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];if((hI(f,g,i,k,m)|0)<0){a=0;break}}else{c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];YI(i,m)}a=m+4|0;if(!(ky(c[a>>2]|0)|0)){g=c[a>>2]|0;a=c[42319]|0;f=c[m>>2]|0;b=0;while(1){if((b|0)>=(g|0))break;p=a+(b<<4)|0;o=f+(b<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];b=b+1|0}c[e>>2]=g}else a=0}else a=0;while(0);l=n;return a|0}function ky(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[42320]|0;do if((b|0)<(a|0)){a=a+300-((a|0)%300|0)+b|0;b=yw(c[42319]|0,a<<4)|0;c[42319]=b;if(!b){_l(1,89649,d)|0;a=1;break}else{c[42320]=a;a=0;break}}else a=0;while(0);l=e;return a|0}function ly(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;d=c[42321]|0;c[42321]=d+1;do if((d|0)<=0){d=ww(4800)|0;c[42319]=d;if(!d){_l(1,89672,a)|0;a=1;break}c[42320]=300;c[42322]=0;c[42323]=0;if(0){xA();a=0}else a=0}else a=0;while(0);l=b;return a|0}function my(){var a=0,b=0,d=0,e=0.0,f=0,g=0;b=l;l=l+16|0;a=b;d=c[42321]|0;c[42321]=d+-1;if((d|0)<=1?(_I(c[42319]|0),0):0){d=c[13918]|0;g=c[42322]|0;f=c[42323]|0;e=+yA();c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;zL(d,89710,a)|0}l=b;return}function ny(a,b){a=a|0;b=b|0;return oy(a,b,0)|0}function oy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;L=l;l=l+176|0;G=L+168|0;K=L+128|0;x=L+120|0;v=L+112|0;i=L+104|0;s=L+88|0;n=L+72|0;g=L+64|0;t=L+160|0;I=L+152|0;y=L+144|0;u=L+32|0;w=L;J=L+136|0;c[42322]=(c[42322]|0)+1;H=c[b+80>>2]|0;c[42323]=(c[42323]|0)+H;f=b+88|0;while(1){C=c[f>>2]|0;if(!C){D=4;break}f=c[C+16>>2]|0;if(!(a[f+112>>0]|0)){D=5;break}else f=f+116|0}do if((D|0)==4){_l(1,89753,g)|0;f=0}else if((D|0)==5){B=c[b+84>>2]|0;if(!(py(H,B,b)|0)){g=H<<3;if((g|0)>(c[42324]|0)){f=c[42325]|0;if(!f)f=ww(H<<7)|0;else f=yw(f,H<<7)|0;c[42325]=f;c[42324]=g}a:do if((H|0)>1?+h[B+8>>3]>+h[B+40>>3]:0){f=0;while(1){if((f|0)==(H|0)){p=1;break a}z=B+(f<<5)+24|0;m=+h[z>>3];A=B+(f<<5)+8|0;h[z>>3]=-+h[A>>3];h[A>>3]=-m;f=f+1|0}}else p=0;while(0);r=c[C>>2]&3;z=C+48|0;f=c[((r|0)==3?C:z)+40>>2]|0;A=C+-48|0;if((f|0)==(c[((r|0)==2?C:A)+40>>2]|0)){c[i>>2]=Dn(f)|0;_l(1,89860,i)|0;f=0;break}o=H+-1|0;q=c[42325]|0;r=q;f=0;j=0;b:while(1){if((j|0)>=(H|0)){j=o;n=f;break}if((j|0)>0)g=+h[B+(j<<5)+8>>3]>+h[B+(j+-1<<5)+8>>3]?-1:1;else g=0;if((j|0)<(o|0))i=+h[B+(j+1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else i=0;c:do if((g|0)!=(i|0))if((g|0)==1|(i|0)==-1){g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29;break}else{g=B+(j<<5)+16|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+24|0;D=29;break}else{switch(g|0){case -1:break c;case 0:break;default:{D=28;break b}}g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29}while(0);if((D|0)==29){D=0;h[q+(i<<4)+8>>3]=+h[g>>3];f=f+2|0}j=j+1|0}if((D|0)==28){c[n>>2]=g;c[n+4>>2]=g;c[n+8>>2]=480;_l(1,89795,n)|0;f=0;break}d:while(1){if((j|0)<=-1)break;if((j|0)<(o|0))f=+h[B+(j<<5)+8>>3]>+h[B+(j+1<<5)+8>>3]?-1:1;else f=0;if((j|0)>0)g=+h[B+(j+-1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else g=0;e:do if((f|0)!=(g|0))if((f|0)==1|(g|0)==-1){f=B+(j<<5)|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+8|0;i=2;break}else{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break}else switch(f|0){case 0:{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break e}case -1:{N=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[N>>3];f=B+(j<<5)+8|0;i=n+1|0;h[q+(n<<4)+8>>3]=+h[f>>3];h[q+(i<<4)>>3]=+h[N>>3];N=B+(j<<5)+24|0;M=n+2|0;h[q+(i<<4)+8>>3]=+h[N>>3];i=B+(j<<5)|0;h[q+(M<<4)>>3]=+h[i>>3];g=n+3|0;h[q+(M<<4)+8>>3]=+h[N>>3];h[q+(g<<4)>>3]=+h[i>>3];i=4;break e}default:{D=42;break d}}while(0);h[q+(g<<4)+8>>3]=+h[f>>3];j=j+-1|0;n=n+i|0}if((D|0)==42){c[s>>2]=f;c[s+4>>2]=f;c[s+8>>2]=513;_l(1,89795,s)|0;f=0;break}f:do if(!p)f=0;else{f=0;while(1){if((f|0)>=(H|0)){f=0;break}M=B+(f<<5)+24|0;m=+h[M>>3];N=B+(f<<5)+8|0;h[M>>3]=-+h[N>>3];h[N>>3]=-m;f=f+1|0}while(1){if((f|0)>=(n|0)){f=0;break f}N=q+(f<<4)+8|0;h[N>>3]=-+h[N>>3];f=f+1|0}}while(0);while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}c[t>>2]=r;i=t+4|0;c[i>>2]=n;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[b+8>>3];h[u+16>>3]=+h[b+40>>3];h[u+24>>3]=+h[b+48>>3];if((DI(t,u,I)|0)<0){_l(1,89899,v)|0;f=0;break}if(!e){g=c[i>>2]|0;f=c[42318]|0;if((g|0)>(c[42317]|0)){if(!f)f=ww(g<<5)|0;else f=yw(f,g<<5)|0;c[42318]=f;g=c[i>>2]|0;c[42317]=g}j=c[42325]|0;i=0;while(1){if((i|0)>=(g|0))break;M=f+(i<<5)|0;N=j+(i<<4)|0;c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];M=f+(i<<5)+16|0;N=i+1|0;v=j+(((N|0)%(g|0)|0)<<4)|0;c[M>>2]=c[v>>2];c[M+4>>2]=c[v+4>>2];c[M+8>>2]=c[v+8>>2];c[M+12>>2]=c[v+12>>2];i=N}if(!(a[b+29>>0]|0)){k=0.0;m=0.0}else{m=+h[b+16>>3];k=+E(+m);m=+F(+m)}h[w+8>>3]=m;h[w>>3]=k;if(!(a[b+69>>0]|0)){k=0.0;m=0.0}else{m=+h[b+56>>3];k=-+E(+m);m=-+F(+m)}h[w+24>>3]=m;h[w+16>>3]=k;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];if((hI(f,g,G,w,y)|0)<0){_l(1,89938,x)|0;f=0;break}}else{c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];YI(G,y)}n=y+4|0;if(!(ky(c[n>>2]|0)|0)){f=0;while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}i=c[n>>2]|0;j=c[42319]|0;g=c[y>>2]|0;f=0;while(1){if((f|0)>=(i|0)){i=1;f=10;g=0;break}N=j+(f<<4)|0;M=g+(f<<4)|0;c[N>>2]=c[M>>2];c[N+4>>2]=c[M+4>>2];c[N+8>>2]=c[M+8>>2];c[N+12>>2]=c[M+12>>2];f=f+1|0}while(1){if(!((g|0)<15&i<<24>>24!=0))break;qy(B,H,c[42319]|0,c[n>>2]|0,f);j=0;while(1){if((j|0)>=(H|0))break;if(+h[B+(j<<5)>>3]==2147483647.0){D=82;break}if(+h[B+(j<<5)+16>>3]==-2147483648.0){D=82;break}j=j+1|0}if((D|0)==82){D=0;N=f<<1;f=N;g=(N|0)>(2147483647/(H|0)|0|0)?15:g}i=(j|0)==(H|0)?0:i;g=g+1|0}if(i<<24>>24){M=Dn(c[((c[C>>2]&3|0)==3?C:z)+40>>2]|0)|0;N=Dn(c[((c[C>>2]&3|0)==2?C:A)+40>>2]|0)|0;c[K>>2]=M;c[K+4>>2]=N;_l(0,89976,K)|0;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];YI(G,J);qy(B,H,c[J>>2]|0,c[J+4>>2]|0,10);_I(c[J>>2]|0)}c[d>>2]=c[n>>2];f=c[42319]|0}else f=0}else f=0}while(0);l=L;return f|0}function py(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0;R=l;l=l+32|0;I=R+16|0;H=R+8|0;k=R;e=0;j=0;while(1){if((j|0)>=(a|0))break;i=b+(j<<5)|0;s=+h[b+(j<<5)+8>>3]-+h[b+(j<<5)+24>>3];if(!((s>=0.0?s:-s)<.01)?(s=+h[i>>3]-+h[b+(j<<5)+16>>3],!((s>=0.0?s:-s)<.01)):0){if((e|0)!=(j|0)){P=b+(e<<5)|0;c[P>>2]=c[i>>2];c[P+4>>2]=c[i+4>>2];c[P+8>>2]=c[i+8>>2];c[P+12>>2]=c[i+12>>2];c[P+16>>2]=c[i+16>>2];c[P+20>>2]=c[i+20>>2];c[P+24>>2]=c[i+24>>2];c[P+28>>2]=c[i+28>>2]}e=e+1|0}j=j+1|0}J=b+16|0;do if(!(+h[b>>3]>+h[J>>3])?(L=b+8|0,N=b+24|0,!(+h[L>>3]>+h[N>>3])):0){P=e+-1|0;M=c[13918]|0;w=0;while(1){if((w|0)>=(P|0))break;D=w+1|0;E=b+(D<<5)|0;f=+h[E>>3];F=b+(D<<5)+16|0;g=+h[F>>3];if(f>g){Q=16;break}A=b+(D<<5)+8|0;m=+h[A>>3];B=b+(D<<5)+24|0;n=+h[B>>3];if(m>n){Q=16;break}G=b+(w<<5)+16|0;v=+h[G>>3]<f;e=v&1;C=b+(w<<5)|0;u=+h[C>>3]>g;a=u&1;z=b+(w<<5)+24|0;t=+h[z>>3]<m;j=t&1;y=b+(w<<5)+8|0;k=+h[y>>3]>n;i=k&1;x=a+e+j+i|0;o=(x|0)!=0;if(!(0==0|o^1)){c[I>>2]=w;c[I+4>>2]=D;zL(M,90176,I)|0;ry(d)}a:do if(o){if(!v)if(!u)if(!t){if(k){k=0;o=e;e=B;i=y;Q=24}}else{k=i;j=0;o=e;e=A;i=z;Q=24}else{k=i;a=0;o=e;e=F;i=C;Q=24}else{k=i;o=0;e=E;i=G;Q=24}if((Q|0)==24){Q=0;w=~~+h[i>>3];h[i>>3]=+h[e>>3];h[e>>3]=+(w|0);i=k;e=o}o=x+-1|0;k=0;while(1){if((k|0)>=(o|0))break a;do if((e|0)!=1){if((a|0)==1){s=+(~~((+h[F>>3]+ +h[C>>3])*.5+.5)|0);h[F>>3]=s;h[C>>3]=s;a=0;break}if((j|0)==1){s=+(~~((+h[A>>3]+ +h[z>>3])*.5+.5)|0);h[A>>3]=s;h[z>>3]=s;j=0;break}if((i|0)==1){s=+(~~((+h[B>>3]+ +h[y>>3])*.5+.5)|0);h[B>>3]=s;h[y>>3]=s;i=0}}else{s=+(~~((+h[E>>3]+ +h[G>>3])*.5+.5)|0);h[E>>3]=s;h[G>>3]=s;e=0}while(0);k=k+1|0}}while(0);p=+h[C>>3];q=+h[G>>3];r=+h[E>>3];s=+h[F>>3];i=sy(~~p,~~q,~~r,~~s)|0;n=+h[y>>3];m=+h[z>>3];g=+h[A>>3];f=+h[B>>3];e=sy(~~n,~~m,~~g,~~f)|0;if(!((i|0)!=0&(e|0)!=0)){w=D;continue}if((i|0)<(e|0)){B=q-p>s-r;w=q<s;h[(B?(w?G:C):w?E:F)>>3]=B?(w?r:s):w?q:p;w=D;continue}else{B=m-n>f-g;w=m<f;h[(B?(w?G:C):w?E:F)+8>>3]=B?(w?g:f):w?m:n;w=D;continue}}if((Q|0)==16){c[H>>2]=D;_l(1,90130,H)|0;ry(d);e=1;break}f=+h[d>>3];g=+h[b>>3];if(!(((!(f<g)?!(f>+h[J>>3]):0)?(K=+h[d+8>>3],!(K<+h[L>>3])):0)?!(K>+h[N>>3]):0)){if(0){XL(90219,42,1,M)|0;ry(d);g=+h[b>>3];f=+h[d>>3]}if(f<g)h[d>>3]=g;else g=f;f=+h[J>>3];if(g>f)h[d>>3]=f;e=d+8|0;g=+h[e>>3];f=+h[L>>3];if(g<f){h[e>>3]=f;g=f}f=+h[N>>3];if(g>f)h[e>>3]=f}i=d+40|0;f=+h[i>>3];e=b+(P<<5)|0;g=+h[e>>3];if(((!(f<g)?!(f>+h[b+(P<<5)+16>>3]):0)?(O=+h[d+48>>3],!(O<+h[b+(P<<5)+8>>3])):0)?!(O>+h[b+(P<<5)+24>>3]):0){e=0;break}if(0){XL(90262,39,1,M)|0;ry(d);g=+h[e>>3];f=+h[i>>3]}if(f<g){h[i>>3]=g;f=g}g=+h[b+(P<<5)+16>>3];if(f>g)h[i>>3]=g;e=d+48|0;f=+h[e>>3];g=+h[b+(P<<5)+8>>3];if(f<g)h[e>>3]=g;else g=f;f=+h[b+(P<<5)+24>>3];if(g>f){h[e>>3]=f;e=0}else e=0}else Q=12;while(0);if((Q|0)==12){_l(1,90085,k)|0;ry(d);e=1}l=R;return e|0}function qy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;s=O(e,b)|0;t=1.0/+(s|0);e=0;a:while(1){u=e+3|0;if((u|0)>=(d|0))break;o=c+(e<<4)|0;p=c+(e<<4)+8|0;r=e+1|0;q=c+(r<<4)|0;r=c+(r<<4)+8|0;j=e+2|0;i=c+(j<<4)|0;j=c+(j<<4)+8|0;k=c+(u<<4)|0;l=c+(u<<4)+8|0;g=0;while(1){if((g|0)>(s|0)){e=u;continue a}v=t*+(g|0);m=+h[o>>3];n=+h[p>>3];y=+h[q>>3];w=+h[r>>3];z=+h[i>>3];x=+h[j>>3];m=(y-m)*v+m;n=(w-n)*v+n;y=(z-y)*v+y;w=(x-w)*v+w;m=(y-m)*v+m;n=(w-n)*v+n;m=((z-y+(+h[k>>3]-z)*v)*v+y-m)*v+m;n=((x-w+(+h[l>>3]-x)*v)*v+w-n)*v+n;f=0;while(1){if((f|0)>=(b|0))break;if(n<=+h[a+(f<<5)+24>>3]+.0001?n>=+h[a+(f<<5)+8>>3]+-.0001:0){e=a+(f<<5)|0;if(+h[e>>3]>m)h[e>>3]=m;e=a+(f<<5)+16|0;if(+h[e>>3]<m)h[e>>3]=m}f=f+1|0}g=g+1|0}}return}function ry(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0;m=l;l=l+112|0;j=m+80|0;k=m+48|0;i=m+8|0;g=m;e=c[13918]|0;f=b+80|0;c[g>>2]=c[f>>2];zL(e,90302,g)|0;g=b+84|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;r=c[g>>2]|0;q=+h[r+(d<<5)>>3];p=+h[r+(d<<5)+8>>3];o=+h[r+(d<<5)+16>>3];n=+h[r+(d<<5)+24>>3];c[i>>2]=d;h[i+8>>3]=q;h[i+16>>3]=p;h[i+24>>3]=o;h[i+32>>3]=n;zL(e,90313,i)|0;d=d+1|0}q=+h[b+8>>3];p=+h[b+16>>3];r=a[b+29>>0]|0?90344:90356;h[k>>3]=+h[b>>3];h[k+8>>3]=q;h[k+16>>3]=p;c[k+24>>2]=r;zL(e,90372,k)|0;p=+h[b+48>>3];q=+h[b+56>>3];r=a[b+69>>0]|0?90344:90356;h[j>>3]=+h[b+40>>3];h[j+8>>3]=p;h[j+16>>3]=q;c[j+24>>2]=r;zL(e,90423,j)|0;l=m;return}function sy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;do if((b|0)>(c|0)&(d|0)>(a|0)){if(!((c|0)>(a|0)|(d|0)<(a|0))){a=d-a|0;break}if((b|0)<(c|0)|(b|0)>(d|0)){b=b-a|0;a=d-c|0;a=(b|0)<(a|0)?b:a;break}else{a=b-c|0;break}}else a=0;while(0);return a|0}function ty(a,b){a=a|0;b=b|0;return oy(a,b,1)|0}function uy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,P=0,Q=0;K=l;l=l+304|0;A=K+272|0;z=K+208|0;G=K+96|0;H=K+32|0;I=K+16|0;J=K;r=K+192|0;y=K+176|0;i=K+160|0;B=K+296|0;D=K+288|0;j=c[d>>2]|0;w=c[j>>2]&3;k=j+-48|0;E=c[((w|0)==2?j:k)+40>>2]|0;t=G+16|0;w=(c[(c[((w|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+16|0;x=j+16|0;F=(c[x>>2]|0)+16|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[F>>2];c[A+4>>2]=c[F+4>>2];c[A+8>>2]=c[F+8>>2];c[A+12>>2]=c[F+12>>2];vy(r,z,A);c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[I>>2]=c[r>>2];c[I+4>>2]=c[r+4>>2];c[I+8>>2]=c[r+8>>2];c[I+12>>2]=c[r+12>>2];r=G+32|0;F=G+48|0;w=(c[E+16>>2]|0)+16|0;x=(c[x>>2]|0)+56|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];vy(y,z,A);c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2];c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[J>>2]=c[y>>2];c[J+4>>2]=c[y+4>>2];c[J+8>>2]=c[y+8>>2];c[J+12>>2]=c[y+12>>2];a:do if((e|0)!=1&(a[174076]|0)==0){m=+h[G>>3];n=+h[F>>3];L=m-n;o=+h[G+8>>3];p=+h[G+56>>3];s=o-p;q=s*s;if(q+L*L<1.0e-06){c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];c[r>>2]=c[F>>2];c[r+4>>2]=c[F+4>>2];c[r+8>>2]=c[F+8>>2];c[r+12>>2]=c[F+12>>2];y=G+24|0;x=G+40|0;n=0.0;m=0.0}else{M=n-m;L=+C(+(q+M*M));w=c[(c[(c[b+60>>2]|0)+16>>2]|0)+248>>2]|0;N=+((O(w,e+-1|0)|0)/2|0|0);q=s*N/L;h[t>>3]=q+m;m=M*N/L;y=G+24|0;h[y>>3]=m+o;h[r>>3]=q+n;x=G+40|0;h[x>>3]=p+m;m=+(0-w|0);n=M*m/L;m=s*m/L}f=(f|0)==6;u=D+4|0;v=B+4|0;j=0;while(1){if((j|0)>=(e|0))break a;w=c[d+(j<<2)>>2]|0;k=w+-48|0;b:do if((c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0)==(E|0)){c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];i=0;while(1){if((i|0)==4)break b;P=H+(i<<4)|0;Q=G+(i<<4)|0;c[P>>2]=c[Q>>2];c[P+4>>2]=c[Q+4>>2];c[P+8>>2]=c[Q+8>>2];c[P+12>>2]=c[Q+12>>2];i=i+1|0}}else{c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];i=0;while(1){if((i|0)==4)break b;Q=H+(3-i<<4)|0;P=G+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}}while(0);if(f){c[u>>2]=4;c[D>>2]=z;i=0;while(1){if((i|0)==4)break;Q=z+(i<<4)|0;P=H+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];YI(A,B);Jz(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,c[B>>2]|0,c[v>>2]|0,g)}else Jz(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,H,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cA(b,w,z,A);h[t>>3]=+h[t>>3]+m;h[y>>3]=+h[y>>3]+n;h[r>>3]=+h[r>>3]+m;h[x>>3]=+h[x>>3]+n;j=j+1|0}}else{if((f|0)==4){wy(i,b);c[A>>2]=c[i>>2];c[A+4>>2]=c[i+4>>2];c[A+8>>2]=c[i+8>>2];c[A+12>>2]=c[i+12>>2];xy(G,A)}Jz(j,c[((c[j>>2]&3|0)==2?j:k)+40>>2]|0,G,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cA(b,j,z,A)}while(0);l=K;return}function vy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function wy(a,b){a=a|0;b=b|0;b=c[b+16>>2]|0;h[20899]=(+h[b+32>>3]+ +h[b+16>>3])*.5;h[20900]=(+h[b+40>>3]+ +h[b+24>>3])*.5;c[a>>2]=c[41798];c[a+4>>2]=c[41799];c[a+8>>2]=c[41800];c[a+12>>2]=c[41801];return}function xy(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[a>>3];d=+h[a+48>>3];i=(d+f)*.5;g=+h[a+8>>3];c=+h[a+56>>3];e=(c+g)*.5;f=d-f;g=c-g;f=+C(+(g*g+f*f))*.2;g=+h[b>>3]-i;c=+h[b+8>>3]-e;d=+C(+(c*c+g*g));if(!(d==0.0)){g=i-g/d*f;i=e-c/d*f;h[a+32>>3]=g;h[a+16>>3]=g;h[a+40>>3]=i;h[a+24>>3]=i}return}function yy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0;E=l;l=l+208|0;t=E+192|0;s=E+176|0;B=E+32|0;w=E+16|0;x=E;y=E+160|0;z=E+144|0;u=E+128|0;v=E+112|0;g=e&2130706432;A=(e&8|0)==0?((g|0)==0?4:g):8;if((A|0)==436207616)zy(a,b,d,f);else{D=vw((d<<6)+64|0)|0;p=d+-1|0;q=x+8|0;r=w+8|0;o=12.0;e=0;while(1){if((e|0)>=(d|0))break;n=b+(e<<4)|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];if((e|0)<(p|0)){e=e+1|0;n=b+(e<<4)|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2];e=e+1|0}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=+C(+(F*F+m*m))*.3333333333333333;o=o<m?o:m}k=(g|16777216|0)==83886080;n=(A|0)==4;j=(g|0)==16777216;e=0;i=0;while(1){if((i|0)>=(d|0))break;g=b+(i<<4)|0;c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if((i|0)<(p|0)){g=b+(i+1<<4)|0;c[x>>2]=c[g>>2];c[x+4>>2]=c[g+4>>2];c[x+8>>2]=c[g+8>>2];c[x+12>>2]=c[g+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2]}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=o/+C(+(F*F+m*m));m=k?m*.3333333333333333:j?m*.5:m;g=D+(e<<4)|0;if(n){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];Ay(y,m*.5,s,t);c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2]}else{c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2]}g=D+(e+1<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];Ay(z,m,s,t);c[g>>2]=c[z>>2];c[g+4>>2]=c[z+4>>2];c[g+8>>2]=c[z+8>>2];c[g+12>>2]=c[z+12>>2];g=e+3|0;G=D+(e+2<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];Ay(u,1.0-m,s,t);c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(n){G=D+(g<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];Ay(v,1.0-m*.5,s,t);c[G>>2]=c[v>>2];c[G+4>>2]=c[v+4>>2];c[G+8>>2]=c[v+8>>2];c[G+12>>2]=c[v+12>>2];e=e+4|0}else e=g;i=i+1|0}k=D+(e<<4)|0;c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];k=D+(e+1<<4)|0;j=D+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];e=D+(e+2<<4)|0;k=D+32|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];e=A&2147483647;a:do if((e|0)<201326592){if((e|0)>=83886080){if((e|0)<134217728){if((e|0)<100663296){switch(e|0){case 83886080:break;default:break a}if((d|0)==4){G=vw(192)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];p=G+16|0;t=b+16|0;c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];p=D+48|0;t=D+64|0;o=+h[t>>3];n=G+32|0;h[n>>3]=o;q=D+56|0;r=D+72|0;H=+h[r>>3];z=G+40|0;h[z>>3]=H;F=+h[p>>3]+o-+h[k>>3];u=G+48|0;h[u>>3]=F;J=+h[q>>3]+H-+h[D+40>>3];x=G+56|0;h[x>>3]=J;I=+h[t>>3]+F-+h[p>>3];p=G+64|0;h[p>>3]=I;m=+h[r>>3]+J-+h[q>>3];q=G+72|0;h[q>>3]=m;r=G+80|0;h[r>>3]=o+I-F;h[G+88>>3]=H+m-J;t=D+96|0;v=D+80|0;J=+h[v>>3];d=G+144|0;h[d>>3]=J;w=D+104|0;s=D+88|0;m=+h[s>>3];h[G+152>>3]=m;H=+h[t>>3]+J-+h[D+112>>3];y=G+128|0;h[y>>3]=H;F=+h[w>>3]+m-+h[D+120>>3];A=G+136|0;h[A>>3]=F;I=+h[v>>3]+H-+h[t>>3];t=G+112|0;h[t>>3]=I;o=+h[s>>3]+F-+h[w>>3];w=G+120|0;h[w>>3]=o;s=G+96|0;h[s>>3]=J+I-H;v=G+104|0;h[v>>3]=m+o-F;k=G+160|0;j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];k=G+176|0;b=b+48|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];HD(a,G,12,f);c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];F=+h[n>>3];o=+h[u>>3];F=F+F-o;u=B+16|0;h[u>>3]=F;m=+h[z>>3];H=+h[x>>3];m=m+m-H;x=B+24|0;h[x>>3]=m;z=B+32|0;h[z>>3]=+h[p>>3]+F-o;b=B+40|0;h[b>>3]=+h[q>>3]+m-H;f=B+48|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];KD(a,B,4);c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];H=+h[s>>3];m=+h[t>>3];H=H-(m-H);h[u>>3]=H;o=+h[v>>3];F=+h[w>>3];o=o-(F-o);h[x>>3]=o;h[z>>3]=+h[y>>3]+H-m;h[b>>3]=+h[A>>3]+o-F;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];KD(a,B,4);_I(G);break}else ma(90472,90483,737,90492)}if((e|0)<117440512){switch(e|0){case 100663296:break;default:break a}y=d+5|0;G=vw(y<<4)|0;z=b+16|0;H=+h[z>>3];H=(+h[b>>3]-H)*.625+H;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;v=D+48|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*1.5;h[G+8>>3]=J;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+16>>3]=I;h[G+24>>3]=J;h[G+32>>3]=I;F=+h[A>>3];h[G+40>>3]=(+h[d>>3]-F)*.5+F;I=(+h[k>>3]-+h[v>>3])*.5+I;h[G+48>>3]=I;F=+h[A>>3];h[G+56>>3]=(+h[d>>3]-F)*.5+F;h[G+64>>3]=I;I=+h[A>>3];I=(+h[d>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3]);h[G+72>>3]=I;h[G+80>>3]=H;h[G+88>>3]=I;h[G+96>>3]=H;I=I-(+h[w>>3]-+h[x>>3])*.25;h[G+104>>3]=I;h[G+112>>3]=+h[k>>3]+H-+h[v>>3];h[G+120>>3]=(+h[w>>3]-+h[x>>3])*.5+I;h[G+128>>3]=+h[G>>3];h[G+136>>3]=(+h[w>>3]-+h[x>>3])*.25+J;HD(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 117440512:break;default:break a}d=d+1|0;G=vw(d<<4)|0;h[G>>3]=+h[j>>3];z=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[z>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[D+48>>3];J=+h[z>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];B=b+40|0;h[G+40>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];h[G+48>>3]=+h[j>>3];h[G+56>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];J=+h[b+8>>3];h[G+72>>3]=J-(J-+h[b+56>>3])*.5;h[G+64>>3]=+h[b>>3];HD(a,G,d,f);_I(G);break}}if((e|0)<167772160)if((e|0)<150994944){switch(e|0){case 134217728:break;default:break a}y=d+4|0;G=vw(y<<4)|0;z=b+16|0;F=+h[z>>3];x=D+48|0;F=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*.25;h[G>>3]=F;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=F;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.5+J;h[G+24>>3]=H;F=(+h[k>>3]-+h[x>>3])*.5+F;h[G+32>>3]=F;h[G+40>>3]=H;h[G+48>>3]=F;F=(+h[v>>3]-+h[w>>3])*.5+H;h[G+56>>3]=F;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=F;h[G+80>>3]=I;h[G+88>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.25;h[G+96>>3]=I;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;HD(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 150994944:break;default:break a}y=d+2|0;G=vw(y<<4)|0;z=b+16|0;H=+h[z>>3];x=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[x>>3])*.75;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=H;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.25+J;h[G+24>>3]=H;I=+h[z>>3];h[G+32>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*.25;I=(+h[v>>3]-+h[w>>3])*.5+H;h[G+40>>3]=I;F=+h[z>>3];h[G+48>>3]=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*-.25;h[G+56>>3]=I;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=H;h[G+80>>3]=I;h[G+88>>3]=J;HD(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else if((e|0)<184549376){switch(e|0){case 167772160:break;default:break a}y=d+1|0;G=vw(y<<4)|0;z=b+16|0;H=+h[z>>3];v=D+48|0;H=+h[k>>3]+H+(+h[b>>3]-H)*.5-+h[v>>3];h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*.25;h[G+8>>3]=J;H=H-+h[k>>3]+ +h[v>>3];h[G+16>>3]=H;h[G+24>>3]=+h[w>>3]+J-+h[x>>3];h[G+32>>3]=H;H=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+48>>3]=I;h[G+56>>3]=H;h[G+64>>3]=I;h[G+72>>3]=J;HD(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 184549376:break;default:break a}z=d+4|0;G=vw(z<<4)|0;y=b+16|0;H=+h[y>>3];I=+h[b>>3]-H;u=D+48|0;I=I*.125+H+(+h[k>>3]-+h[u>>3]+I)*.5;h[G>>3]=I;w=b+40|0;H=+h[w>>3];x=b+24|0;d=D+56|0;v=D+72|0;H=(+h[x>>3]-H)*.5+H+(+h[d>>3]-+h[v>>3])*.25;h[G+8>>3]=H;J=+h[y>>3];J=(+h[b>>3]-J)*.375+J;h[G+16>>3]=J;h[G+24>>3]=H;h[G+32>>3]=J;H=(+h[d>>3]-+h[v>>3])*.5+H;h[G+40>>3]=H;J=J-(+h[k>>3]-+h[u>>3])*.5;h[G+48>>3]=J;h[G+56>>3]=H;A=G+64|0;h[A>>3]=J;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[d>>3]-+h[v>>3])*-.25;h[G+72>>3]=J;H=I-(+h[k>>3]-+h[u>>3])*.5;h[G+80>>3]=H;h[G+88>>3]=J;h[G+96>>3]=H;J=J-(+h[d>>3]-+h[v>>3])*.5;h[G+104>>3]=J;v=G+112|0;h[v>>3]=I;h[G+120>>3]=J;HD(a,G,z,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[A>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[b>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);_I(G);break}}if((e|0)<33554432){if((e|0)<8){switch(e|0){case 4:break;default:break a}i=ww((d*96|0)+32|0)|0;e=0;g=0;while(1){j=g|1;k=i+(g<<4)|0;if((e|0)>=(d|0))break;b=e<<2;G=D+(b<<4)|0;c[k>>2]=c[G>>2];c[k+4>>2]=c[G+4>>2];c[k+8>>2]=c[G+8>>2];c[k+12>>2]=c[G+12>>2];G=i+(j<<4)|0;B=D+((b|1)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+2<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+3<<4)|0;B=D+((b|2)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+4<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+5<<4)|0;b=D+((b|3)<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];e=e+1|0;g=g+6|0}c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];d=i+(j<<4)|0;G=i+16|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];JD(a,G,j,0,0,f&255);_I(i);break}if((e|0)<16777216){switch(e|0){case 8:break;default:break a}HD(a,b,d,f);g=B+16|0;e=0;while(1){if((e|0)>=(d|0))break a;G=e*3|0;f=D+(G+2<<4)|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];G=D+(G+4<<4)|0;c[g>>2]=c[G>>2];c[g+4>>2]=c[G+4>>2];c[g+8>>2]=c[G+8>>2];c[g+12>>2]=c[G+12>>2];KD(a,B,2);e=e+1|0}}switch(e|0){case 16777216:break;default:break a}g=d+1|0;i=vw(g<<4)|0;e=1;while(1){if((e|0)>=(d|0))break;G=i+(e<<4)|0;A=b+(e<<4)|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];e=e+1|0}b=d*3|0;A=D+(b+1<<4)|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];d=i+(d<<4)|0;G=D+(b+-1<<4)|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];HD(a,i,g,f);_I(i);c[B>>2]=c[G>>2];c[B+4>>2]=c[G+4>>2];c[B+8>>2]=c[G+8>>2];c[B+12>>2]=c[G+12>>2];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];f=B+32|0;h[f>>3]=+h[B>>3]+ +h[G>>3]-+h[D+(b<<4)>>3];h[B+40>>3]=+h[B+8>>3]+ +h[B+24>>3]-+h[D+(b<<4)+8>>3];KD(a,G,2);c[G>>2]=c[f>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];KD(a,B,2);break}else{if((e|0)<50331648){switch(e|0){case 33554432:break;default:break a}g=d+2|0;i=vw(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];j=i+16|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];j=D+48|0;d=D+64|0;h[i+32>>3]=(+h[j>>3]-+h[d>>3])*.3333333333333333+ +h[k>>3];G=D+56|0;e=D+72|0;h[i+40>>3]=(+h[G>>3]-+h[e>>3])*.3333333333333333+ +h[D+40>>3];J=+h[j>>3];h[i+48>>3]=(J-+h[d>>3])*.3333333333333333+J;J=+h[G>>3];h[i+56>>3]=(J-+h[e>>3])*.3333333333333333+J;e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-2<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}HD(a,i,g,f);_I(i);c[B>>2]=c[j>>2];c[B+4>>2]=c[j+4>>2];c[B+8>>2]=c[j+8>>2];c[B+12>>2]=c[j+12>>2];G=B+16|0;c[G>>2]=c[k>>2];c[G+4>>2]=c[k+4>>2];c[G+8>>2]=c[k+8>>2];c[G+12>>2]=c[k+12>>2];KD(a,B,2);break}if((e|0)>=67108864){switch(e|0){case 67108864:break;default:break a}if((d|0)==4){G=vw(96)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];d=G+16|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2];d=G+32|0;A=D+64|0;c[d>>2]=c[A>>2];c[d+4>>2]=c[A+4>>2];c[d+8>>2]=c[A+8>>2];c[d+12>>2]=c[A+12>>2];d=G+48|0;b=b+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=G+64|0;d=D+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=G+80|0;z=D+160|0;c[b>>2]=c[z>>2];c[b+4>>2]=c[z+4>>2];c[b+8>>2]=c[z+8>>2];c[b+12>>2]=c[z+12>>2];HD(a,G,6,f);_I(G);h[B>>3]=+h[D+176>>3]+ +h[j>>3]-+h[D>>3];h[B+8>>3]=+h[D+184>>3]+ +h[D+24>>3]-+h[D+8>>3];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];KD(a,B,2);c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];KD(a,B,2);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];KD(a,B,2);break}else ma(90472,90483,714,90492)}switch(e|0){case 50331648:break;default:break a}g=d+3|0;i=vw(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];J=+h[b>>3];h[i+16>>3]=J-(J-+h[j>>3])*.25;e=D+56|0;J=(+h[e>>3]-+h[D+72>>3])*.3333333333333333+ +h[b+8>>3];h[i+24>>3]=J;I=+h[b>>3];h[i+32>>3]=I-(I-+h[j>>3])*2.0;h[i+40>>3]=J;J=+h[b>>3];h[i+48>>3]=J-(J-+h[j>>3])*2.25;h[i+56>>3]=+h[e>>3];h[i+64>>3]=+h[D+48>>3];h[i+72>>3]=+h[e>>3];e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-3<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}HD(a,i,g,f);_I(i);break}}else if((e|0)<318767104){if((e|0)<251658240){if((e|0)<218103808){switch(e|0){case 201326592:break;default:break a}G=d<<4;u=vw(G)|0;v=b+16|0;J=+h[v>>3];h[u>>3]=J;z=b+40|0;I=+h[z>>3];A=b+24|0;y=D+48|0;w=D+56|0;x=D+72|0;I=(+h[A>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[w>>3]-+h[x>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;HD(a,u,d,f);_I(u);G=vw(G)|0;I=+h[k>>3]+ +h[v>>3]-+h[y>>3];h[G>>3]=I;J=+h[z>>3];J=(+h[A>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*-.625;h[G+8>>3]=J;H=+h[k>>3]-+h[y>>3]+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;HD(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}if((e|0)<234881024){switch(e|0){case 218103808:break;default:break a}G=d<<4;w=vw(G)|0;J=+h[b>>3];h[w>>3]=J;y=b+40|0;I=+h[y>>3];z=b+24|0;x=D+56|0;A=D+72|0;I=(+h[z>>3]-I)*.5+I+(+h[x>>3]-+h[A>>3])*.125;h[w+8>>3]=I;h[w+16>>3]=J;H=(+h[x>>3]-+h[A>>3])*.5+I;h[w+24>>3]=H;J=J-(+h[x>>3]-+h[A>>3])*2.0;h[w+32>>3]=J;h[w+40>>3]=H;h[w+48>>3]=J;h[w+56>>3]=I;HD(a,w,d,f);_I(w);G=vw(G)|0;I=+h[b>>3]-+h[k>>3]+ +h[D+48>>3];h[G>>3]=I;J=+h[y>>3];J=(+h[z>>3]-J)*.5+J+(+h[x>>3]-+h[A>>3])*-.625;h[G+8>>3]=J;h[G+16>>3]=I;H=(+h[x>>3]-+h[A>>3])*.5+J;h[G+24>>3]=H;I=I-(+h[x>>3]-+h[A>>3]);h[G+32>>3]=I;h[G+40>>3]=H;A=G+48|0;h[A>>3]=I;h[G+56>>3]=J;HD(a,G,d,f);h[B>>3]=+h[b+16>>3];J=+h[y>>3];h[B+8>>3]=(+h[z>>3]-J)*.5+J;h[B+16>>3]=+h[A>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 234881024:break;default:break a}G=d<<4;y=vw(G)|0;u=b+16|0;I=+h[u>>3];v=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=I;w=b+40|0;J=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*.125;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;HD(a,y,d,f);_I(y);y=vw(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;h[y+16>>3]=H;h[y+24>>3]=I;h[y+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=I;HD(a,y,d,f);_I(y);y=vw(G)|0;I=+h[u>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*.125;h[y>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;HD(a,y,d,f);_I(y);G=vw(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*.125;h[G>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[G+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;y=G+16|0;h[y>>3]=H;h[G+24>>3]=I;h[G+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[G+40>>3]=I;h[G+48>>3]=J;h[G+56>>3]=I;HD(a,G,d,f);h[B>>3]=+h[y>>3];I=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-I)*.5+I;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+I;KD(a,B,2);I=+h[u>>3];h[B>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=I;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);_I(G);break}}if((e|0)<285212672)if((e|0)<268435456){switch(e|0){case 251658240:break;default:break a}G=d<<4;u=vw(G)|0;v=b+16|0;J=+h[v>>3];y=D+48|0;J=J-+h[k>>3]+(+h[b>>3]-J)*.5+ +h[y>>3];h[u>>3]=J;w=b+40|0;I=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;HD(a,u,d,f);_I(u);G=vw(G)|0;I=+h[v>>3];I=I-+h[k>>3]+(+h[b>>3]-I)*.5+ +h[y>>3];h[G>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[G+8>>3]=J;H=(+h[k>>3]-+h[y>>3])*2.0+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;HD(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[G>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 268435456:break;default:break a}G=vw(d<<4)|0;h[G>>3]=+h[b>>3];v=D+48|0;x=D+56|0;y=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[x>>3]-+h[y>>3])*.5;h[G+16>>3]=+h[v>>3];J=+h[x>>3];h[G+24>>3]=J-(J-+h[y>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[b>>3];h[G+56>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];HD(a,G,d,f);w=b+16|0;J=(+h[k>>3]-+h[v>>3])*.25;I=J+ +h[w>>3];h[B>>3]=I;H=+h[z>>3];u=b+24|0;F=+h[x>>3]-+h[y>>3];H=(+h[u>>3]-H)*.5+H+F*.125;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J+I;f=B+24|0;h[f>>3]=H-F*.25;KD(a,B,2);F=(+h[k>>3]-+h[v>>3])*.25;H=F+ +h[w>>3];h[B>>3]=H;I=+h[z>>3];J=+h[x>>3]-+h[y>>3];I=(+h[u>>3]-I)*.5+I+J*-.125;h[A>>3]=I;h[d>>3]=F+H;h[f>>3]=J*.25+I;KD(a,B,2);I=(+h[k>>3]-+h[v>>3])*.25;h[B>>3]=I+ +h[w>>3];J=(+h[x>>3]-+h[y>>3])*.75+ +h[z>>3];h[A>>3]=J;h[d>>3]=+h[b>>3]-I;h[f>>3]=J;KD(a,B,2);_I(G);break}else if((e|0)<301989888){switch(e|0){case 285212672:break;default:break a}y=vw(d<<4)|0;v=b+16|0;I=+h[v>>3];z=D+48|0;I=(+h[k>>3]-+h[z>>3]+(+h[b>>3]-I))*.5+I;h[y>>3]=I;w=b+40|0;F=+h[w>>3];x=b+24|0;F=(+h[k>>3]-+h[z>>3]+(+h[x>>3]-F))*.5+F;h[y+8>>3]=F;h[y+16>>3]=I;I=+h[w>>3];o=+h[k>>3]-+h[z>>3];I=(+h[x>>3]-I-o)*.5+I;h[y+24>>3]=I;J=+h[v>>3];J=(+h[b>>3]-J-o)*.5+J;h[y+32>>3]=J;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=F;HD(a,y,d,f);_I(y);F=+h[v>>3];F=(+h[b>>3]-F)*.5+F;J=+h[k>>3]-+h[z>>3];I=J*.75;o=F+I;h[B>>3]=o;H=+h[w>>3];H=(+h[x>>3]-H)*.5+H;I=H+I;y=B+8|0;h[y>>3]=I;A=B+16|0;h[A>>3]=o;J=J*-.75;H=H+J;G=B+24|0;h[G>>3]=H;J=F+J;h[B+32>>3]=J;h[B+40>>3]=H;h[B+48>>3]=J;h[B+56>>3]=I;d=B+64|0;c[d>>2]=c[B>>2];c[d+4>>2]=c[B+4>>2];c[d+8>>2]=c[B+8>>2];c[d+12>>2]=c[B+12>>2];KD(a,B,5);I=+h[v>>3];J=+h[b>>3];h[B>>3]=(J-I)*.5+I+(+h[k>>3]-+h[z>>3])*.75;I=+h[w>>3];h[y>>3]=(+h[x>>3]-I)*.5+I;h[A>>3]=J;d=b+8|0;f=b+56|0;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+I;KD(a,B,2);I=+h[v>>3];h[B>>3]=I;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[A>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[z>>3])*-.75;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+J;KD(a,B,2);break}else{switch(e|0){case 301989888:break;default:break a}A=d+12|0;G=vw(A<<4)|0;x=b+16|0;m=+h[x>>3];s=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[s>>3])*.25;h[G>>3]=m;y=b+40|0;F=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;F=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-F))*.5+F;u=G+8|0;h[u>>3]=F;h[G+16>>3]=m;F=(+h[v>>3]-+h[w>>3])*.125+F;t=G+24|0;h[t>>3]=F;H=m-(+h[k>>3]-+h[s>>3])*.125;d=G+32|0;h[d>>3]=H;o=(+h[v>>3]-+h[w>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;I=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=I;h[G+64>>3]=m;m=(+h[v>>3]-+h[w>>3])*.125+I;h[G+72>>3]=m;h[G+80>>3]=H;h[G+88>>3]=m;H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[G+96>>3]=H;h[G+104>>3]=I;J=H-(+h[k>>3]-+h[s>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[s>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=I;I=(+h[k>>3]-+h[s>>3])*.125+J;h[G+160>>3]=I;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[u>>3];h[G+200>>3]=J;h[G+208>>3]=I;h[G+216>>3]=J;u=G+224|0;h[u>>3]=H;h[G+232>>3]=+h[t>>3];h[G+240>>3]=+h[d>>3];h[G+248>>3]=J;HD(a,G,A,f);J=+h[u>>3];h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;KD(a,B,2);H=+h[u>>3];h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;KD(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}}else{if((e|0)<369098752){if((e|0)<335544320){switch(e|0){case 318767104:break;default:break a}A=d+4|0;G=vw(A<<4)|0;x=b+16|0;H=+h[x>>3];d=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[d>>3])*.125;h[G>>3]=H;y=b+40|0;J=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;J=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-J))*.5+J;h[G+8>>3]=J;o=(+h[k>>3]-+h[d>>3])*.125+H;h[G+16>>3]=o;I=(+h[v>>3]-+h[w>>3])*.125+J;h[G+24>>3]=I;h[G+32>>3]=o;o=(+h[v>>3]-+h[w>>3])*.25+I;h[G+40>>3]=o;h[G+48>>3]=H;F=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=F;H=H-(+h[k>>3]-+h[d>>3])*.25;h[G+64>>3]=H;h[G+72>>3]=F;F=H-(+h[k>>3]-+h[d>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=I;h[G+112>>3]=H;h[G+120>>3]=J;HD(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;KD(a,B,2);H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;KD(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}if((e|0)<352321536){switch(e|0){case 335544320:break;default:break a}x=d+12|0;G=vw(x<<4)|0;y=b+16|0;m=+h[y>>3];u=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[u>>3])*.25;h[G>>3]=m;z=b+40|0;F=+h[z>>3];A=b+24|0;s=D+56|0;t=D+72|0;F=(+h[s>>3]-+h[t>>3]+(+h[A>>3]-F))*.5+F;d=G+8|0;h[d>>3]=F;h[G+16>>3]=m;F=(+h[s>>3]-+h[t>>3])*.125+F;v=G+24|0;h[v>>3]=F;I=m-(+h[k>>3]-+h[u>>3])*.125;w=G+32|0;h[w>>3]=I;o=(+h[s>>3]-+h[t>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;H=(+h[s>>3]-+h[t>>3])*.125+o;h[G+56>>3]=H;h[G+64>>3]=m;m=(+h[s>>3]-+h[t>>3])*.125+H;h[G+72>>3]=m;h[G+80>>3]=I;h[G+88>>3]=m;I=+h[y>>3];I=(+h[b>>3]-I)*.5+I;h[G+96>>3]=I;h[G+104>>3]=H;J=I-(+h[k>>3]-+h[u>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[u>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=H;H=(+h[k>>3]-+h[u>>3])*.125+J;h[G+160>>3]=H;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[d>>3];h[G+200>>3]=J;h[G+208>>3]=H;h[G+216>>3]=J;d=G+224|0;h[d>>3]=I;h[G+232>>3]=+h[v>>3];h[G+240>>3]=+h[w>>3];h[G+248>>3]=J;HD(a,G,x,f);c[B>>2]=c[d>>2];c[B+4>>2]=c[d+4>>2];c[B+8>>2]=c[d+8>>2];c[B+12>>2]=c[d+12>>2];d=B+16|0;h[d>>3]=+h[B>>3];J=+h[z>>3];f=B+24|0;h[f>>3]=(+h[A>>3]-J)*.5+J;KD(a,B,2);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 352321536:break;default:break a}A=d+4|0;G=vw(A<<4)|0;x=b+16|0;I=+h[x>>3];w=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[w>>3])*.125;h[G>>3]=I;y=b+40|0;J=+h[y>>3];z=b+24|0;u=D+56|0;v=D+72|0;J=(+h[u>>3]-+h[v>>3]+(+h[z>>3]-J))*.5+J;d=G+8|0;h[d>>3]=J;o=(+h[k>>3]-+h[w>>3])*.125+I;h[G+16>>3]=o;H=(+h[u>>3]-+h[v>>3])*.125+J;h[G+24>>3]=H;h[G+32>>3]=o;o=(+h[u>>3]-+h[v>>3])*.25+H;h[G+40>>3]=o;h[G+48>>3]=I;F=(+h[u>>3]-+h[v>>3])*.125+o;h[G+56>>3]=F;I=I-(+h[k>>3]-+h[w>>3])*.25;h[G+64>>3]=I;h[G+72>>3]=F;F=I-(+h[k>>3]-+h[w>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;HD(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;A=B+8|0;h[A>>3]=+h[d>>3];d=B+16|0;h[d>>3]=J;J=+h[y>>3];f=B+24|0;h[f>>3]=(+h[z>>3]-J)*.5+J;KD(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}}if((e|0)<402653184)if((e|0)<385875968){switch(e|0){case 369098752:break;default:break a}d=d+5|0;G=vw(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=+h[z>>3];J=+h[k>>3];h[G+48>>3]=(J-+h[B>>3])*.5+J;h[G+56>>3]=+h[z>>3];J=+h[k>>3];h[G+64>>3]=(J-+h[B>>3])*.5+J;h[G+72>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+80>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+88>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+104>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+120>>3]=J-(J-+h[z>>3])*.5;h[G+112>>3]=+h[b>>3];h[G+136>>3]=+h[A>>3];h[G+128>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;HD(a,G,d,f);_I(G);break}else{switch(e|0){case 385875968:break;default:break a}d=d+3|0;G=vw(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+56>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+64>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+72>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+88>>3]=J-(J-+h[z>>3])*.5;h[G+80>>3]=+h[b>>3];h[G+104>>3]=+h[A>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;HD(a,G,d,f);_I(G);break}else if((e|0)<419430400){switch(e|0){case 402653184:break;default:break a}d=d+3|0;G=vw(d<<4)|0;h[G>>3]=+h[b>>3];y=b+8|0;z=D+48|0;A=D+56|0;B=D+72|0;h[G+8>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[z>>3])*.5+J;h[G+24>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[z>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];y=b+40|0;h[G+56>>3]=J-(J-+h[y>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[z>>3])*.5+J;h[G+72>>3]=+h[y>>3];h[G+88>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[y>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[z>>3])*.5+J;h[G+104>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[b+56>>3];h[G+96>>3]=+h[b>>3];HD(a,G,d,f);_I(G);break}else{switch(e|0){case 419430400:break;default:break a}d=d+5|0;G=vw(d<<4)|0;h[G>>3]=+h[b>>3];B=b+8|0;A=D+48|0;y=D+56|0;z=D+72|0;h[G+8>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[A>>3])*.5+J;h[G+24>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[A>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];B=b+40|0;h[G+56>>3]=J-(J-+h[B>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[A>>3])*.5+J;h[G+72>>3]=+h[B>>3];h[G+88>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[A>>3])*.5+J;B=b+56|0;h[G+104>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+112>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+120>>3]=+h[B>>3];h[G+128>>3]=+h[b+48>>3];h[G+136>>3]=+h[B>>3];HD(a,G,d,f);_I(G);break}}while(0);_I(D)}l=E;return}function zy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0;f=l;l=l+112|0;g=f;k=+h[b+8>>3]*2.0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[g+16>>3]=+h[b+16>>3];h[g+24>>3]=k-+h[b+24>>3];h[g+32>>3]=+h[b+32>>3];h[g+40>>3]=k-+h[b+40>>3];h[g+48>>3]=+h[b+48>>3];h[g+56>>3]=k-+h[b+56>>3];h[g+64>>3]=+h[b+64>>3];h[g+72>>3]=k-+h[b+72>>3];h[g+80>>3]=+h[b+80>>3];h[g+88>>3]=k-+h[b+88>>3];i=g+96|0;j=b+96|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];JD(a,b,d,0,0,e&255);JD(a,g,7,0,0,0);l=f;return}function Ay(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[c>>3];e=+h[c+8>>3];e=(+h[d+8>>3]-e)*b+e;h[a>>3]=(+h[d>>3]-f)*b+f;h[a+8>>3]=e;return}function By(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a){a=c[c[a+4>>2]>>2]|0;if((a|0)!=75)if((a|0)==78)a=2;else return ((a|0)==77?3:(a|0)==80?4:0)|0;else a=1}else a=0;return a|0}function Cy(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,D=0,G=0,H=0,I=0,J=0,L=0,M=0,N=0,P=0.0,Q=0.0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;aa=l;l=l+144|0;J=aa+112|0;N=aa+104|0;G=aa+96|0;H=aa+88|0;i=aa+80|0;Y=aa+64|0;_=aa+48|0;R=aa+40|0;S=aa+32|0;j=aa+24|0;p=aa+16|0;D=aa+136|0;A=aa+128|0;L=aa;$=vw(48)|0;Z=b+16|0;W=c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0;g=(W|0)==1552;X=c[W>>2]|0;d=c[W+4>>2]|0;e=c[W+8>>2]|0;m=+h[W+16>>3];n=+h[W+32>>3];o=+h[W+24>>3];X=X|(IA(Im(b,90545)|0)|0)&255;do if(!g){if(!X){W=c[Z>>2]|0;k=+h[W+32>>3]*72.0;f=+h[W+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);break}k=+My(b);if(k>0.0)f=k;else{W=c[Z>>2]|0;f=+h[W+32>>3];k=+h[W+40>>3];k=(f<k?f:k)*72.0;k=+(~~(k+(k>=0.0?.5:-.5))|0);f=k}}else{f=0.0;k=0.0}while(0);W=DA(b,c[42204]|0,d,0)|0;V=+EA(b,c[42206]|0,0.0,-360.0)+m;if(!e){U=+EA(b,c[42207]|0,0.0,-100.0);I=DA(b,c[42203]|0,4,0)|0;T=+EA(b,c[42208]|0,0.0,-100.0)}else{I=e;U=n;T=o}d=c[(c[Z>>2]|0)+104>>2]|0;e=d+24|0;c[Y>>2]=c[e>>2];c[Y+4>>2]=c[e+4>>2];c[Y+8>>2]=c[e+8>>2];c[Y+12>>2]=c[e+12>>2];q=+h[Y>>3];if(q>0.0){if(!g)M=11}else if(!(g|!(+h[Y+8>>3]>0.0)))M=11;if((M|0)==11){d=Im(b,90530)|0;do if(d){h[p>>3]=0.0;h[j>>3]=0.0;c[i>>2]=j;c[i+4>>2]=p;d=cM(d,90537,i)|0;m=+h[j>>3];if(m<0.0){h[j>>3]=0.0;m=0.0}n=+h[p>>3];if(n<0.0){h[p>>3]=0.0;o=0.0}else o=n;if((d|0)<=0){n=q+16.0;h[Y>>3]=n;m=8.0;break}m=m*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0);n=q+m;h[Y>>3]=n;if((d|0)!=1){m=o*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0)}}else{n=q+16.0;h[Y>>3]=n;m=8.0}while(0);d=Y+8|0;h[d>>3]=+h[d>>3]+m;d=c[(c[Z>>2]|0)+104>>2]|0;q=n}s=+h[d+24>>3];m=+h[c[(c[(ro(b)|0)+16>>2]|0)+8>>2]>>3];if(m>0.0){P=m*72.0;P=+(~~(P+(P>=0.0?.5:-.5))|0);Q=+Ny(q,P);h[Y>>3]=Q;p=Y+8|0;h[p>>3]=+Ny(+h[p>>3],P)}else Q=q;d=c[(c[Z>>2]|0)+8>>2]|0;do if(!(a[d+12>>0]|0)){e=Im(b,93847)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){Pr(A,ro(b)|0,e);d=c[A>>2]|0;g=c[A+4>>2]|0;if((g&d|0)==-1){d=Dn(b)|0;c[G>>2]=e;c[G+4>>2]=d;_l(0,90621,G)|0;e=0;d=0;break}else{a[(c[(ro(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}else{d=c[d>>2]|0;if((a[d>>0]|0)==99?(xJ(d,90553)|0)==0:0){e=Im(b,90560)|0;Pr(D,ro(b)|0,e);d=c[D>>2]|0;g=c[D+4>>2]|0;if((g&d|0)==-1){d=Dn(b)|0;c[H>>2]=e|0?e:90570;c[H+4>>2]=d;_l(0,90576,H)|0;e=0;d=0;break}else{a[(c[(ro(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}while(0);P=+(e|0);h[_>>3]=Q>P?Q:P;P=+h[Y+8>>3];r=+(d|0);d=_+8|0;h[d>>3]=P>r?P:r;e=(I|0)<3&(T!=0.0|U!=0.0)?120:I;g=Im(b,90662)|0;if(!g)i=99;else{i=a[g>>0]|0;i=i<<24>>24==116?116:i<<24>>24==98?98:99}g=c[Z>>2]|0;a[(c[g+104>>2]|0)+80>>0]=i;if((e|0)==4?(T==0.0?((~~(V+(V>=0.0?.5:-.5))|0)%90|0|0)==0:0)&U==0.0:0)p=1;else M=39;do if((M|0)==39){g=c[(c[(c[g+8>>2]|0)+8>>2]|0)+44>>2]|0;if(g|0){p=c[g>>2]|0;c[J>>2]=c[_>>2];c[J+4>>2]=c[_+4>>2];c[J+8>>2]=c[_+8>>2];c[J+12>>2]=c[_+12>>2];hb[p&31](L,J);c[_>>2]=c[L>>2];c[_+4>>2]=c[L+4>>2];c[_+8>>2]=c[L+8>>2];c[_+12>>2]=c[L+12>>2];p=0;break}m=+h[d>>3];n=m*1.4142135623730951;if(f>n&i<<24>>24==99){o=m/f;o=+C(+(1.0/(1.0-o*o)));o=+h[_>>3]*o;h[_>>3]=o}else{o=+h[_>>3]*1.4142135623730951;h[_>>3]=o;h[d>>3]=n;m=n}if((e|0)>2){z=+E(+(3.141592653589793/+(e|0)));h[_>>3]=o/z;h[d>>3]=m/z;p=0}else p=0}while(0);m=+h[d>>3];g=FA(b,c[42209]|0,122100)|0;if((a[g>>0]|0)==115?(xJ(g,90671)|0)==0:0){h[_>>3]=k;h[d>>3]=f;N=$+40|0;c[N>>2]=c[N>>2]|2048}else{if(!((IA(g)|0)<<24>>24)){z=+h[_>>3];k=k>z?k:z;h[_>>3]=k;z=+h[d>>3];f=f>z?f:z}else{M=c[(c[Z>>2]|0)+104>>2]|0;if(!(!(k<+h[M+24>>3])?!(f<+h[M+32>>3]):0)){L=Dn(b)|0;M=Dn(ro(b)|0)|0;c[N>>2]=L;c[N+4>>2]=M;_l(0,90677,N)|0}h[_>>3]=k}h[d>>3]=f}if(!X){z=f;y=k}else{y=k>f?k:f;h[d>>3]=y;h[_>>3]=y;z=y}do if(!((IA(FA(b,c[42200]|0,122100)|0)|0)<<24>>24)){if(p){f=+h[(Q>+h[_>>3]?Y:_)>>3];break}f=+h[d>>3];if(P<f){f=+h[_>>3]*+C(+(1.0-P*P/(f*f)));f=Q>f?Q:f}else f=Q}else f=Q;while(0);g=c[(c[Z>>2]|0)+104>>2]|0;h[g+40>>3]=s-q+f;A=$+40|0;if(!(c[A>>2]&2048)){x=+h[d>>3]-m;h[g+48>>3]=(P<r?r-P+x:x)+P}j=(W|0)>1;g=j?W:1;a:do if((e|0)<3){g=vw(g<<5)|0;k=+h[_>>3]*.5;f=+h[d>>3]*.5;h[g>>3]=-k;h[g+8>>3]=-f;h[g+16>>3]=k;h[g+24>>3]=f;if(j){e=1;i=2;while(1){if((e|0)==(W|0))break;y=k+4.0;z=f+4.0;h[g+(i<<4)>>3]=-y;h[g+(i<<4)+8>>3]=-z;S=i|1;h[g+(S<<4)>>3]=y;h[g+(S<<4)+8>>3]=z;e=e+1|0;i=i+2|0;k=y;f=z}h[_>>3]=k*2.0;h[d>>3]=f*2.0;e=2}else e=2}else{g=vw(O(g<<4,e)|0)|0;i=c[(c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0)+44>>2]|0;b:do if(!i){q=6.283185307179586/+(e|0);t=q*.5;r=+F(+t);s=+QJ(+B(+U)+ +B(+T),1.0);t=T*1.4142135623730951/+E(+t);u=U*.5;SJ((q+-3.141592653589793)*.5,R,S);v=V*.017453292519943295;k=0.0;f=0.0;m=0.0;i=0;n=+h[S>>3]*.5;o=+h[R>>3]*.5;while(1){if((i|0)>=(e|0))break b;m=m+q;SJ(m,R,S);n=+h[S>>3]*r+n;o=+h[R>>3]*r+o;x=(o*t+s)*n+u*o;SJ(+K(+o,+x)+v,R,S);x=+QJ(x,o);w=+h[S>>3]*x*+h[_>>3];x=+h[R>>3]*x*+h[d>>3];ba=+B(+w);f=ba>f?ba:f;ba=+B(+x);k=ba>k?ba:k;h[g+(i<<4)>>3]=w;h[g+(i<<4)+8>>3]=x;if(p)break;else i=i+1|0}ba=-w;h[g+16>>3]=ba;h[g+24>>3]=x;h[g+32>>3]=ba;ba=-x;h[g+40>>3]=ba;h[g+48>>3]=w;h[g+56>>3]=ba}else{hb[c[i+4>>2]&31](g,_);k=+h[d>>3]*.5;f=+h[_>>3]*.5}while(0);f=f*2.0;k=k*2.0;y=y>f?y:f;h[_>>3]=y;ba=z>k?z:k;h[d>>3]=ba;f=y/f;k=ba/k;i=0;while(1){if((i|0)>=(e|0))break;N=g+(i<<4)|0;b=g+(i<<4)+8|0;ba=+h[b>>3]*k;h[N>>3]=+h[N>>3]*f;h[b>>3]=ba;i=i+1|0}if(j){j=e+-1|0;k=+h[g>>3];m=+h[g+8>>3];f=+K(+(m-+h[g+(j<<4)+8>>3]),+(k-+h[g+(j<<4)>>3]));j=0;c:while(1){if((j|0)>=(e|0))break;p=j+1|0;i=(p|0)%(e|0)|0;n=+h[g+(i<<4)>>3];o=+h[g+(i<<4)+8>>3];q=+K(+(o-m),+(n-k));z=(f+3.141592653589793-q)*.5;ba=4.0/+F(+z);SJ(f-z,R,S);h[R>>3]=+h[R>>3]*ba;h[S>>3]=+h[S>>3]*ba;i=1;f=m;while(1){if((i|0)==(W|0)){f=q;j=p;k=n;m=o;continue c}z=+h[S>>3]+k;ba=+h[R>>3]+f;b=(O(i,e)|0)+j|0;h[g+(b<<4)>>3]=z;h[g+(b<<4)+8>>3]=ba;i=i+1|0;k=z;f=ba}}j=O(e,W+-1|0)|0;i=0;while(1){if((i|0)>=(e|0))break a;S=i+j|0;z=+h[g+(S<<4)+8>>3];y=+B(+(+h[g+(S<<4)>>3]))*2.0;ba=+h[_>>3];h[_>>3]=y>ba?y:ba;z=+B(+z)*2.0;ba=+h[d>>3];h[d>>3]=z>ba?z:ba;i=i+1|0}}}while(0);c[$>>2]=X;c[$+4>>2]=W;c[$+8>>2]=e;h[$+16>>3]=V;h[$+32>>3]=U;h[$+24>>3]=T;c[$+44>>2]=g;f=+h[_>>3];if(!(c[A>>2]&2048)){e=c[Z>>2]|0;h[e+32>>3]=f*.013888888888888888}else{e=c[Z>>2]|0;h[e+32>>3]=+h[(Q>f?Y:_)>>3]*.013888888888888888;d=(P>+h[d>>3]?Y:_)+8|0}h[e+40>>3]=+h[d>>3]*.013888888888888888;c[e+12>>2]=$;l=aa;return}function Dy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+64|0;j=o+40|0;e=o+32|0;k=o+16|0;n=o;d=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]|0)>>>2&1^1;m=a+16|0;f=c[c[(c[m>>2]|0)+104>>2]>>2]|0;c[42326]=f;f=rJ(f)|0;f=vw(((f|0)>1?f:1)+1|0)|0;b=Fy(a,d,1,f)|0;if(!b){c[e>>2]=c[c[(c[m>>2]|0)+104>>2]>>2];_l(1,90506,e)|0;c[42326]=90527;b=Fy(a,d,1,f)|0}_I(f);Gy(j,a,b);d=c[m>>2]|0;i=+h[d+32>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))|0);h[n>>3]=i;g=+h[d+40>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);d=n+8|0;h[d>>3]=g;if(!((IA(FA(a,c[42209]|0,122100)|0)|0)<<24>>24)){i=+h[(+h[b>>3]>i?b:n)>>3];h[n>>3]=i;e=b+8|0;g=+h[(+h[e>>3]>g?b:n)+8>>3];h[d>>3]=g;d=e;e=b}else{d=b+8|0;e=b}a=(IA(FA(a,c[42200]|0,122100)|0)|0)&255;c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];Hy(b,j,a);Iy(k,i*-.5,g*.5);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];Jy(b,j,15);n=c[m>>2]|0;h[n+32>>3]=+h[e>>3]*.013888888888888888;h[n+40>>3]=(+h[d>>3]+1.0)*.013888888888888888;c[n+12>>2]=b;l=o;return}function Ey(a){a=a|0;var b=0.0,d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0.0,m=0;j=vw(48)|0;k=a+16|0;g=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+8>>2]|0)+4>>2]|0;f=+EA(a,c[42190]|0,1797693134862315708145274.0e284,0.0);b=+EA(a,c[42189]|0,1797693134862315708145274.0e284,0.0);f=f<b?f:b;f=b==1797693134862315708145274.0e284&f==1797693134862315708145274.0e284?.05:f>0.0?(f>.0003?f:.0003):f;i=c[k>>2]|0;h[i+40>>3]=f;h[i+32>>3]=f;b=f*72.0;g=DA(a,c[42204]|0,g,0)|0;i=vw((g|0)<1?32:g<<5)|0;f=f*36.0;e=-f;h[i>>3]=e;h[i+8>>3]=e;h[i+16>>3]=f;h[i+24>>3]=f;if((g|0)>1){a=1;d=2;e=f;b=f;while(1){if((a|0)==(g|0))break;l=e+4.0;f=b+4.0;h[i+(d<<4)>>3]=-l;h[i+(d<<4)+8>>3]=-f;m=d|1;h[i+(m<<4)>>3]=l;h[i+(m<<4)+8>>3]=f;a=a+1|0;d=d+2|0;e=l;b=f}b=e*2.0}c[j>>2]=1;c[j+4>>2]=g;c[j+8>>2]=2;m=j+16|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[j+44>>2]=i;l=b*.013888888888888888;m=c[k>>2]|0;h[m+32>>3]=l;h[m+40>>3]=l;c[m+12>>2]=j;return}function Fy(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=vw(72)|0;n=c[(c[b+16>>2]|0)+104>>2]|0;m=0;i=1;j=c[42326]|0;a:while(1){k=a[j>>0]|0;switch(k<<24>>24){case 0:break a;case 92:{j=j+1|0;k=a[j>>0]|0;switch(k<<24>>24){case 124:case 125:case 123:case 92:{l=m;break}default:E=4}break}default:E=4}if((E|0)==4){E=0;switch(k<<24>>24){case 123:{l=m+1|0;break}case 125:{l=m+-1|0;break}default:{l=m;i=i+((m|0)==0&k<<24>>24==124&1)|0}}if((l|0)<0)break}m=l;j=j+1|0}B=g+56|0;c[B>>2]=vw(i<<2)|0;a[g+64>>0]=d;y=(d|0)==0&1;z=n+82|0;A=f+1|0;v=(e|0)!=0;w=n+16|0;x=n+4|0;u=n+8|0;k=0;m=0;d=0;t=0;l=0;e=0;n=f;i=0;j=0;b:while(1){p=k;k=0;c:while(1){d:while(1){s=e;e:while(1){r=k;o=i;f:while(1){q=m;g:while(1){while(1){if(t){E=78;break b}m=c[42326]|0;i=a[m>>0]|0;if((i+-1&255)>=31)break;c[42326]=m+1}switch(i<<24>>24|0){case 92:{E=53;break d}case 0:case 124:case 125:break e;case 60:break f;case 62:break g;case 123:break;default:{k=d;i=m;break d}}i=m+1|0;c[42326]=i;if(l|0){E=34;break b}if(!(a[i>>0]|0)){E=34;break b}e=Fy(b,y,0,f)|0;c[(c[B>>2]|0)+(q<<2)>>2]=e;if(!e){E=36;break b}else{q=q+1|0;l=4}}if(a[z>>0]|0){k=d;i=m;break d}if(!(l&16)){E=27;break b}if(o>>>0>A>>>0?(C=o+-1|0,(C|0)!=(s|0)):0)i=(a[C>>0]|0)==32?C:o;else i=o;a[i>>0]=0;r=GL(f)|0;c[42326]=(c[42326]|0)+1;m=q;l=l&-17;o=i}if(l&6|0){E=22;break b}if(a[z>>0]|0){k=d;i=m;break d}c[42326]=m+1;m=q;l=l|18;k=r;s=f;i=f}if(!((l&16|0)==0&(v|i<<24>>24!=0))){E=38;break b}if(!(l&4)){k=vw(72)|0;c[(c[B>>2]|0)+(q<<2)>>2]=k;m=q+1|0}else{k=p;m=q}if(r|0)c[k+60>>2]=r;if(!(l&5)){a[f+j>>0]=32;l=l|1;j=j+1|0}i=f+j|0;if(l&1){if((j|0)>1?(D=i+-1|0,(D|0)!=(n|0)):0)i=(a[D>>0]|0)==32?D:i;a[i>>0]=0;n=GL(f)|0;c[k+52>>2]=lw(b,n,a[z>>0]|0?2:0,+h[w>>3],c[x>>2]|0,c[u>>2]|0)|0;a[k+64>>0]=1;n=f;j=0}i=c[42326]|0;switch(a[i>>0]|0){case 0:{t=1;e=s;i=o;continue b}case 125:{E=51;break b}default:{}}c[42326]=i+1;p=k;l=0;k=0;e=s;i=o}h:do if((E|0)==53){E=0;k=f+j|0;i=m+1|0;switch(a[i>>0]|0){case 0:{k=d;i=m;break h}case 62:case 60:case 124:case 125:case 123:{k=d;break}case 32:{if(!(a[z>>0]|0))k=1;else E=55;break}default:E=55}if((E|0)==55){E=0;a[k>>0]=92;k=d;l=l|9;j=j+1|0}c[42326]=i}while(0);d=f+j|0;if(l&4|0?(a[i>>0]|0)!=32:0){E=59;break b}if(!(l&24))l=(a[i>>0]|0)==32?l:l|9;if(!(l&8))if(!(l&16))e=s;else{m=a[i>>0]|0;d=(k|0)!=0;if(!(d|m<<24>>24!=32))if((o|0)!=(f|0))if((a[o+-1>>0]|0)==32)m=o;else E=73;else m=f;else E=73;if((E|0)==73){E=0;a[o>>0]=m;m=o+1|0;i=c[42326]|0}e=d?m+-1|0:s;o=m}else{m=a[i>>0]|0;e=(k|0)!=0;if(!((!(e|m<<24>>24!=32)?(a[d+-1>>0]|0)==32:0)?(a[z>>0]|0)==0:0)){a[d>>0]=m;j=j+1|0}if(e){e=s;n=f+j+-1|0}else e=s}i=i+1|0;c[42326]=i;while(1){if((a[i>>0]|0)>=0){m=q;d=k;k=r;i=o;continue c}s=i+1|0;c[42326]=s;a[f+j>>0]=a[i>>0]|0;j=j+1|0;i=s}}}if((E|0)==22){Ky(g,r);g=0}else if((E|0)==27){Ky(g,r);g=0}else if((E|0)==34){Ky(g,r);g=0}else if((E|0)==36){Ky(g,r);g=0}else if((E|0)==38){Ky(g,r);g=0}else if((E|0)==51){c[42326]=i+1;c[g+48>>2]=m}else if((E|0)==59){Ky(g,r);g=0}else if((E|0)==78)c[g+48>>2]=q;return g|0}function Gy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;k=u+48|0;m=u+40|0;n=u+32|0;t=u+16|0;s=u;j=c[e+52>>2]|0;a:do if(!j){n=t+8|0;o=e+48|0;p=e+56|0;q=e+64|0;r=s+8|0;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;j=0;while(1){if((j|0)>=(c[o>>2]|0))break a;Gy(s,d,c[(c[p>>2]|0)+(j<<2)>>2]|0);if(!(a[q>>0]|0)){h[n>>3]=+h[n>>3]+ +h[r>>3];k=t;m=+h[t>>3]>+h[s>>3]?t:s}else{h[t>>3]=+h[t>>3]+ +h[s>>3];k=n;m=(+h[n>>3]>+h[r>>3]?t:s)+8|0}h[k>>3]=+h[m>>3];j=j+1|0}}else{g=+h[j+24>>3];f=+h[j+32>>3];if(g>0.0|f>0.0){j=Im(d,90530)|0;do if(j){c[k>>2]=m;c[k+4>>2]=n;j=cM(j,90537,k)|0;if((j|0)<=0){i=8.0;g=g+16.0;break}i=+h[m>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0);g=g+i;if((j|0)!=1){i=+h[n>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0)}}else{i=8.0;g=g+16.0}while(0);f=i+f}h[t>>3]=g;h[t+8>>3]=f}while(0);c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];c[e+8>>2]=c[t+8>>2];c[e+12>>2]=c[t+12>>2];c[b>>2]=c[t>>2];c[b+4>>2]=c[t+4>>2];c[b+8>>2]=c[t+8>>2];c[b+12>>2]=c[t+12>>2];l=u;return}function Hy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;s=l;l=l+32|0;o=s+16|0;p=s;q=+h[d>>3];i=q-+h[b>>3];r=+h[d+8>>3];f=r-+h[b+8>>3];c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=c[b+52>>2]|0;if(!((e|0)!=0|(d|0)==0)){n=d+40|0;h[n>>3]=+h[n>>3]+i;n=d+48|0;h[n>>3]=+h[n>>3]+f}m=b+48|0;d=c[m>>2]|0;a:do if(d|0){n=b+64|0;f=((a[n>>0]|0)==0?f:i)/+(d|0);k=b+56|0;j=0;while(1){if((j|0)>=(d|0))break a;b=c[(c[k>>2]|0)+(j<<2)>>2]|0;g=j+1|0;d=~~(f*+(g|0))-~~(f*+(j|0))|0;if(!(a[n>>0]|0))Iy(p,q,+h[b+8>>3]+ +(d|0));else Iy(p,+h[b>>3]+ +(d|0),r);c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];Hy(b,o,e);j=g;d=c[m>>2]|0}}while(0);l=s;return}function Iy(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Jy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+48|0;j=q+32|0;n=q+16|0;m=q;a[b+65>>0]=e;k=b+16|0;s=+h[d>>3];p=d+8|0;r=+h[p>>3];Iy(n,s,r-+h[b+8>>3]);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];k=b+32|0;Iy(m,+h[b>>3]+s,r);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[b+48>>2]|0;m=k+-1|0;n=(e|0)==0;o=b+56|0;i=b+64|0;g=0;while(1){if((g|0)>=(k|0))break;do if(!n){b=(g|0)==0;f=(g|0)==(m|0);if(!(a[i>>0]|0))if(b){b=f?15:14;break}else{b=f?11:10;break}else if(b){b=f?15:13;break}else{b=f?7:5;break}}else b=0;while(0);f=c[(c[o>>2]|0)+(g<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];Jy(f,j,b&e);if(!(a[i>>0]|0))h[p>>3]=+h[p>>3]-+h[(c[(c[o>>2]|0)+(g<<2)>>2]|0)+8>>3];else h[d>>3]=+h[c[(c[o>>2]|0)+(g<<2)>>2]>>3]+ +h[d>>3];g=g+1|0}l=q;return}function Ky(a,b){a=a|0;b=b|0;Ly(a);_I(b);return}function Ly(a){a=a|0;var b=0,d=0,e=0;d=a+48|0;e=a+56|0;b=0;while(1){if((b|0)>=(c[d>>2]|0))break;Ly(c[(c[e>>2]|0)+(b<<2)>>2]|0);b=b+1|0}_I(c[a+60>>2]|0);ow(c[a+52>>2]|0);_I(c[e>>2]|0);_I(a);return}function My(a){a=a|0;var b=0.0,d=0.0;d=+EA(a,c[42190]|0,0.0,.01);b=+EA(a,c[42189]|0,0.0,.02);b=(d>b?d:b)*72.0;return +(+(~~(b+(b>=0.0?.5:-.5))|0))}function Ny(a,b){a=+a;b=+b;var c=0;c=~~(a/b);return +(+((+(c|0)*b+1.0e-05<a&1)+c|0)*b)}function Oy(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[c[a+4>>2]>>2]|0)==75&1;return a|0}function Py(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[42327]|0;a:do if(!f)d=0;else{g=c[42328]|0;e=0;while(1){if((e|0)>=(g|0)){d=0;break a}d=c[f+(e<<2)>>2]|0;h=c[d>>2]|0;if((a[h>>0]|0)==(a[b>>0]|0)?(xJ(h,b)|0)==0:0)break a;e=e+1|0}}while(0);return d|0}function Qy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(RA(Im(d,90560)|0)|0)if((a[b>>0]|0)==101?(xJ(b,90725)|0)==0:0){d=101;g=6}else{b=90553;g=4}else g=4;if((g|0)==4){d=a[b>>0]|0;if(d<<24>>24==99)if(!(xJ(b,90553)|0))g=11;else{d=99;g=6}else g=6}a:do if((g|0)==6){e=19868;while(1){f=c[e>>2]|0;if(!f){g=11;break a}if((a[f>>0]|0)==d<<24>>24?(xJ(f,b)|0)==0:0){b=e;break a}e=e+16|0}}while(0);if((g|0)==11)b=Ry(b)|0;return b|0}function Ry(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=Py(b)|0;if(!d){f=c[42328]|0;d=f+1|0;c[42328]=d;e=c[42327]|0;if(!e)d=ww(d<<2)|0;else d=yw(e,d<<2)|0;c[42327]=d;d=vw(16)|0;c[(c[42327]|0)+(f<<2)>>2]=d;c[d>>2]=c[4967];c[d+4>>2]=c[4968];c[d+8>>2]=c[4969];c[d+12>>2]=c[4970];e=GL(b)|0;c[d>>2]=e;do if(!0){if((a[b>>0]|0)==99?(xJ(b,90553)|0)==0:0){e=1;break}c[g>>2]=c[4967];c[g+4>>2]=e;_l(0,90730,g)|0;e=0}else e=1;while(0);a[d+12>>0]=e}l=h;return d|0}function Sy(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[b>>3]*.5257311121191336;c=+h[b+8>>3]*.8944271909999159;c=d>c?d:c;h[a>>3]=c*4.97979656976556;h[a+8>>3]=c*4.73606797749979;return}function Ty(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0.0;d=+h[b>>3];k=b+8|0;e=+h[k>>3];c=e/d;if(!(c>.9510565162951536))if(c<.9510565162951536){j=d;e=d*.9510565162951536}else j=d;else j=e*1.0514622242382672;d=j*.5257311121191336;g=j*.20081141588622725;i=j*.05020285397155681;c=.3141592653589793;f=0;while(1){if((f|0)>=10)break;h[a+(f<<4)>>3]=+E(+c)*d;h[a+(f<<4)+8>>3]=+F(+c)*d-i;m=c+.6283185307179586;l=f|1;h[a+(l<<4)>>3]=+E(+m)*g;h[a+(l<<4)+8>>3]=+F(+m)*g-i;c=c+1.2566370614359172;f=f+2|0}h[b>>3]=j;h[k>>3]=e;return}function Uy(a){a=a|0;a=c[(c[a+16>>2]|0)+12>>2]|0;if(a|0){_I(c[a+44>>2]|0);_I(a)}return}function Vy(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+80|0;k=o+40|0;g=o;n=o+64|0;h=o+56|0;if(!(a[e>>0]|0)){g=4144;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}else{i=(f|0)==0?91400:f;c[n>>2]=15;j=d+16|0;f=c[j>>2]|0;do if(a[(c[f+104>>2]|0)+82>>0]|0){f=HF(d,e,n)|0;if(!f){f=c[j>>2]|0;m=8;break}if(hz(d,f,g,i,c[n>>2]|0,0)|0){c[k>>2]=Dn(d)|0;c[k+4>>2]=e;c[k+8>>2]=i;_l(0,91402,k)|0}}else m=8;while(0);if((m|0)==8){if((c[(c[f+8>>2]|0)+8>>2]|0)==1600)h=0;else{c[h>>2]=d;c[h+4>>2]=0}if(hz(d,0,g,e,c[n>>2]|0,h)|0)iz(d,e)}c[g+36>>2]=0;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}l=o;return}function Wy(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0;r=l;l=l+112|0;n=r+96|0;m=r+80|0;p=r+64|0;k=r+48|0;q=r+32|0;o=r;f=r+16|0;if(!a){c[42331]=0;a=0}else{g=c[a+4>>2]|0;a=c[a>>2]|0;i=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];aw(f,n,i);c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];a:do if(g){d=+h[g+8>>3];e=+h[g+24>>3];s=+h[q>>3];if((+h[g>>3]<=s?s<=+h[g+16>>3]:0)?(j=+h[q+8>>3],d<=j):0)a=j<=e&1;else a=0}else{if((a|0)==(c[42331]|0)){f=c[42332]|0;g=c[42334]|0;i=c[42333]|0}else{g=c[(c[a+16>>2]|0)+12>>2]|0;c[42335]=g;i=c[g+44>>2]|0;c[42333]=i;f=c[g+8>>2]|0;c[42332]=f;g=O((c[g+4>>2]|0)+-1|0,f)|0;g=(g|0)>0?g:0;c[42334]=g;c[42331]=a}a=0;b=0;while(1){if((a|0)>=(f|0)){a=1;break a}t=i+(g+a<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=i+(g+((a+4|0)%(f|0)|0)<<4)|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[p>>2]=c[41802];c[p+4>>2]=c[41803];c[p+8>>2]=c[41804];c[p+12>>2]=c[41805];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];b=b+((gz(k,p,m,n)|0)==0&1)|0;if((b|0)==2){a=0;break}else a=a+2|0}}while(0)}l=r;return a|0}function Xy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;e=c[b+16>>2]|0;if((a[(c[e+104>>2]|0)+82>>0]|0)!=0?(a[e+145>>0]|0)!=0:0)b=KF(b,d,0,f,g)|0;else b=0;return b|0}function Yy(e,f){e=e|0;f=f|0;var i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;P=l;l=l+48|0;H=P+24|0;G=P+16|0;A=P+8|0;z=P;L=P+32|0;n=P+28|0;M=c[e+16>>2]|0;N=M+208|0;i=c[N>>2]|0;if((i|0)==0?(b[M+260>>1]&1)==0:0)J=0;else E=4;if((E|0)==4)if(!(c[e+152>>2]&4)){wD(e,i,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);J=1}else J=1;I=f+16|0;i=c[I>>2]|0;r=c[i+12>>2]|0;F=c[r+44>>2]|0;K=c[r+8>>2]|0;r=c[r+4>>2]|0;if((c[42329]|0)<(K|0)){i=K+5|0;c[42329]=i;j=c[42330]|0;if(!j)i=ww(i<<4)|0;else i=yw(j,i<<4)|0;c[42330]=i;i=c[I>>2]|0}D=(c[i+104>>2]|0)+56|0;i=i+16|0;c[D>>2]=c[i>>2];c[D+4>>2]=c[i+4>>2];c[D+8>>2]=c[i+8>>2];c[D+12>>2]=c[i+12>>2];D=c[I>>2]|0;B=+h[D+32>>3]*72.0;B=(+h[D+96>>3]+ +h[D+88>>3])/+(~~(B+(B>=0.0?.5:-.5))|0);C=+h[D+40>>3]*72.0;C=+h[D+80>>3]/+(~~(C+(C>=0.0?.5:-.5))|0);D=Zy(e,f)|0;c[L>>2]=0;i=d[(c[I>>2]|0)+117>>0]|0;do if(!(i&1)){if(i&2|0){s=GA(f,0,91300)|0;BD(e,s);DD(e,GA(f,0,91308)|0);j=0;i=1;break}if(i&8|0){s=GA(f,0,91316)|0;BD(e,s);DD(e,GA(f,0,91324)|0);j=0;i=1;break}if(i&4|0){s=GA(f,0,91332)|0;BD(e,s);DD(e,GA(f,0,91340)|0);j=0;i=1;break}if(!(D&1))if(!(D&576)){j=0;i=0}else{j=_y(f)|0;i=1}else{j=_y(f)|0;if(!((xv(j,L,n)|0)<<24>>24)){DD(e,j);i=1}else{DD(e,c[L>>2]|0);i=c[L+4>>2]|0;m=DA(f,c[42217]|0,0,0)|0;k=+g[n>>2];if(!i)ED(e,122106,m,k);else ED(e,i,m,k);i=(D&2)>>>1|2}}s=$y(e,f)|0}else{s=GA(f,0,91284)|0;BD(e,s);DD(e,GA(f,0,91292)|0);j=0;i=1}while(0);m=c[(c[I>>2]|0)+8>>2]|0;if(a[m+12>>0]|0){m=c[m>>2]|0;if((a[m>>0]|0)==99){m=(xJ(m,90553)|0)==0;E=33}else u=1}else{m=1;E=33}if((E|0)==33){m=m^1;if((r|0)!=0|i<<24>>24==0|m)u=m;else{BD(e,122171);r=1;u=0}}v=(K|0)<3;w=(D&512|0)!=0;y=(D&8|0)==0;x=(D&64|0)==0;p=(D&1024|0)==0;q=(D&2130706444|0)==0;t=0;while(1){if((t|0)>=(r|0))break;n=O(t,K)|0;o=c[42330]|0;m=0;while(1){if((m|0)>=(K|0))break;R=m+n|0;k=+h[F+(R<<4)+8>>3];Q=c[I>>2]|0;h[o+(m<<4)>>3]=+h[Q+16>>3]+ +h[F+(R<<4)>>3]*B;h[o+(m<<4)+8>>3]=+h[Q+24>>3]+k*C;m=m+1|0}do if(v){if(w&(t|0)==0?(WJ(j,58)|0)!=0:0)if((_t(e,o,j)|0)>1){c[z>>2]=Dn(f)|0;_l(3,91348,z)|0;i=0}else i=0;GD(e,c[42330]|0,K,i&255);if(!y)az(e,f)}else{if(!x){if((t|0)==0?(cu(e,o,j,1)|0)>1:0){c[A>>2]=Dn(f)|0;_l(3,91348,A)|0}HD(e,c[42330]|0,K,0);break}if(!p){BD(e,122171);HD(e,c[42330]|0,K,i&255);BD(e,s);KD(e,(c[42330]|0)+32|0,2);break}i=i&255;if(q){HD(e,o,K,i);break}else{yy(e,o,K,D,i);break}}while(0);t=t+1|0;i=0}m=c[(c[I>>2]|0)+8>>2]|0;if(!(a[m+12>>0]|0)){m=Im(f,93847)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{m=c[m>>2]|0;if((a[m>>0]|0)==99?(xJ(m,90553)|0)==0:0){m=Im(f,90560)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{o=m;E=65}}if((E|0)==65){n=c[42330]|0;m=0;while(1){if((m|0)>=(K|0))break;k=+h[F+(m<<4)+8>>3];R=c[I>>2]|0;h[n+(m<<4)>>3]=+h[R+16>>3]+ +h[F+(m<<4)>>3]*B;h[n+(m<<4)+8>>3]=+h[R+24>>3]+k*C;m=m+1|0}m=i&255;do if(!(u|i<<24>>24==0)){if(v){if(w&(t|0)==0?(WJ(j,58)|0)!=0:0)if((_t(e,n,j)|0)>1){c[G>>2]=Dn(f)|0;_l(3,91348,G)|0;i=0}else i=0;GD(e,c[42330]|0,K,i&255);if(y)break;az(e,f);break}if(x)if(!(D&12)){HD(e,n,K,m);break}else{yy(e,n,K,D,m);break}else{if((cu(e,n,j,1)|0)>1){c[H>>2]=Dn(f)|0;_l(3,91348,H)|0}HD(e,c[42330]|0,K,0);break}}while(0);R=c[42330]|0;MD(e,o,R,K,i,FA(f,c[42210]|0,122100)|0)}_I(c[L>>2]|0);pw(e,10,c[(c[I>>2]|0)+104>>2]|0);if(J){if(c[e+152>>2]&4|0)wD(e,c[N>>2]|0,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);xD(e)}l=P;return}function Zy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;e=dz(d,f)|0;if(e|0)FD(b,e);e=c[42216]|0;if((e|0?(g=Jm(d,e)|0,g|0):0)?a[g>>0]|0:0)OD(b,+EA(d,c[42216]|0,1.0,0.0));l=h;return c[f>>2]|0}function _y(a){a=a|0;return cz(a,119592)|0}function $y(b,d){b=b|0;d=d|0;d=GA(d,c[42192]|0,174181)|0;d=a[d>>0]|0?d:122106;BD(b,d);return d|0}function az(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0;d=l;l=l+96|0;j=d+80|0;k=d+64|0;e=d+32|0;m=d+16|0;g=d;b=c[b+16>>2]|0;f=+h[b+80>>3];h[m+8>>3]=f*.375;i=+h[b+96>>3];h[m>>3]=i*.6614;b=b+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];bz(g,k,j);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=e+8|0;b=e+24|0;h[b>>3]=+h[g>>3];h[e+16>>3]=+h[e>>3]-i*1.3228;KD(a,e,2);f=+h[g>>3]-f*.75;h[g>>3]=f;h[b>>3]=f;KD(a,e,2);l=d;return}function bz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function cz(b,d){b=b|0;d=d|0;var e=0;e=GA(b,c[42193]|0,174181)|0;if(!(a[e>>0]|0)){e=GA(b,c[42192]|0,174181)|0;return ((a[e>>0]|0)==0?d:e)|0}else return e|0;return 0}function dz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=GA(b,c[42201]|0,174181)|0;a:do if(!(a[e>>0]|0)){g=0;e=0}else{g=Du(e)|0;h=g;e=0;b:while(1){f=c[h>>2]|0;if(!f)break a;switch(a[f>>0]|0){case 102:{if(!(xJ(f,95923)|0)){h=h+4|0;e=e|1;continue b}break}case 114:{if(!(xJ(f,91360)|0)){f=h;do{j=f;f=f+4|0;i=c[f>>2]|0;c[j>>2]=i}while((i|0)!=0);j=h;e=e|4;h=j;continue b}if(!(xJ(f,91378)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|3;h=j;continue b}break}case 100:{if(!(xJ(f,91368)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|8;h=j;continue b}break}case 105:{if(!(xJ(f,119127)|0)){h=h+4|0;e=e|32;continue b}break}case 115:{if((xJ(f,91385)|0)==0?ez(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|64;h=j;continue b}break}case 119:{if((xJ(f,91393)|0)==0?fz(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|512;h=j;continue b}break}default:{}}h=h+4|0}}while(0);f=c[(c[(c[b+16>>2]|0)+8>>2]|0)+8>>2]|0;if(f)e=c[f+40>>2]|e;c[d>>2]=e;return g|0}function ez(a){a=a|0;var b=0.0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if((((a|0)!=0?(c[a+8>>2]|0)==4:0)?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function fz(a){a=a|0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[a+8>>2]|0)<3&1;return a|0}function gz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;i=+h[c+8>>3];g=-(+h[d+8>>3]-i);f=+h[c>>3];e=+h[d>>3]-f;f=e*i+f*g;return (+h[a+8>>3]*e+ +h[a>>3]*g-f>=0.0^+h[b>>3]*g-f+ +h[b+8>>3]*e>=0.0^1)&1|0}function hz(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;G=l;l=l+192|0;B=G+176|0;E=G+160|0;m=G+144|0;z=G+128|0;A=G+112|0;n=G+96|0;o=G+80|0;p=G+64|0;v=G+48|0;w=G+32|0;x=G+16|0;D=G;if(!d){c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;m=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;C=c[b+16>>2]|0;q=+h[C+80>>3]*.5;j=+h[C+88>>3];t=m?q:j;q=m?j:q;m=0;C=E;j=0.0;k=-q;r=t;F=E+8|0;s=0.0;t=-t}else{k=+h[d>>3];t=+h[d+8>>3];q=+h[d+16>>3];r=+h[d+24>>3];Iy(m,(q+k)*.5,(r+t)*.5);c[E>>2]=c[m>>2];c[E+4>>2]=c[m+4>>2];c[E+8>>2]=c[m+8>>2];c[E+12>>2]=c[m+12>>2];H=E+8|0;m=1;C=E;j=+h[E>>3];F=H;s=+h[H>>3]}u=(q>r?q:r)*4.0;a:do if((f|0)!=0?(y=a[f>>0]|0,y<<24>>24!=0):0){f=f+1|0;switch(y<<24>>24|0){case 99:{p=1;g=0;f=0;n=0;j=0.0;o=0;break a}case 101:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=q;else{jz(z,i,s,u);c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2]}p=0;g=g&2;f=0;n=1;j=0.0;o=0;m=1;break a}case 115:{h[F>>3]=t;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{jz(A,i,-u,j);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2]}p=0;g=g&1;f=0;n=1;j=-1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{jz(n,i,-u,u);c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2]}p=0;g=g&3;f=0;n=1;j=-.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{u=-u;jz(o,i,u,u);c[E>>2]=c[o>>2];c[E+4>>2]=c[o+4>>2];c[E+8>>2]=c[o+8>>2];c[E+12>>2]=c[o+12>>2]}p=0;g=g&9;f=0;n=1;j=-2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 119:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=k;else{jz(p,i,s,-u);c[E>>2]=c[p>>2];c[E+4>>2]=c[p+4>>2];c[E+8>>2]=c[p+8>>2];c[E+12>>2]=c[p+12>>2]}p=0;g=g&8;f=0;n=1;j=3.141592653589793;o=0;m=1;break a}case 110:{h[F>>3]=r;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{jz(v,i,u,j);c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2]}p=0;g=g&4;f=0;n=1;j=1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{jz(w,i,u,u);c[E>>2]=c[w>>2];c[E+4>>2]=c[w+4>>2];c[E+8>>2]=c[w+8>>2];c[E+12>>2]=c[w+12>>2]}p=0;g=g&6;f=0;n=1;j=.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{jz(x,i,u,-u);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2]}p=0;g=g&12;f=0;n=1;j=2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 95:{p=1;f=1;n=0;j=0.0;o=0;break a}default:{p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}else{p=1;g=0;f=0;n=0;j=0.0;o=0}while(0);H=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3)*90|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];$v(D,B,H);c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2];if(!(f<<24>>24))g=kz(g,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3)|0;a[e+33>>0]=g;c[e+24>>2]=d;k=+h[C>>3];h[e>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);k=+h[F>>3];h[e+8>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);h[e+16>>3]=+lz(j,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3);k=+h[C>>3];j=+h[F>>3];if(k==0.0&j==0.0)g=-128;else{u=+K(+j,+k);t=u+4.71238898038469;g=~~((!(t>=6.283185307179586)?t:u+-1.5707963267948966)*40.74366543152521)&255}a[e+32>>0]=g;a[e+29>>0]=n;a[e+28>>0]=m;a[e+30>>0]=p;a[e+31>>0]=f;l=G;return o|0}function iz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=Dn(a)|0;c[e+4>>2]=b;_l(0,91463,e)|0;l=d;return}function jz(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+128|0;g=p+112|0;j=p+48|0;k=p+16|0;m=p+32|0;n=p;o=c[b>>2]|0;i=c[(c[(ro(o)|0)+16>>2]|0)+116>>2]&3;h[k>>3]=e;h[k+8>>3]=d;f=(i|0)!=0;if(f){c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];$v(m,g,i*90|0);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2]}m=j+48|0;q=j+32|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];Fz(b,c[(c[(c[(c[o+16>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0,j,1);if(f){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];aw(n,g,i*90|0);c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2]};c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=p;return}function kz(a,b){a=a|0;b=b|0;a:do switch(b|0){case 3:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=1;break a}case 2:{a=4;break a}default:break a}case 2:switch(a|0){case 4:{a=1;break a}case 1:{a=4;break a}default:break a}case 1:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=4;break a}case 2:{a=1;break a}default:break a}default:{}}while(0);return a|0}function lz(a,b){a=+a;b=b|0;switch(b|0){case 3:{if(!(a==3.141592653589793))if(!(a==2.356194490192345))if(!(a==1.5707963267948966))if(!(a==0.0))if(!(a==-.7853981633974483)){if(a==-1.5707963267948966)a=3.141592653589793}else a=2.356194490192345;else a=1.5707963267948966;else a=0.0;else a=-.7853981633974483;else a=-1.5707963267948966;break}case 2:{a=-a;break}case 1:{a=a+-1.5707963267948966;break}default:{}}return +a}function mz(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;e=l;l=l+32|0;k=e+16|0;i=e;a=c[a>>2]|0;j=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];aw(i,k,j);d=+h[i>>3];g=+h[i+8>>3];a=c[a+16>>2]|0;f=+h[a+80>>3]*.5;if(!(!(g>=-f)|!(g<=f))?d>=-+h[a+88>>3]:0)a=d<=+h[a+96>>3]&1;else a=0;l=e;return a|0}function nz(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+32|0;m=n;i=c[a+16>>2]|0;j=i+208|0;g=c[j>>2]|0;if(!g)k=(b[i+260>>1]&1)!=0;else k=1;e=d+16|0;d=c[e>>2]|0;f=c[d+12>>2]|0;if(f|0){if(k?(c[a+152>>2]&4|0)==0:0){wD(a,g,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);d=c[e>>2]|0}g=c[a+36>>2]|0;p=+h[d+24>>3]+ +(c[f+8>>2]|0);o=c[f>>2]|0;h[m>>3]=+h[d+16>>3]+ +(c[f+4>>2]|0);h[m+8>>3]=p;c[m+16>>2]=o;zL(g,91494,m)|0;g=c[e>>2]|0;m=(c[g+104>>2]|0)+56|0;g=g+16|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];pw(a,10,c[(c[e>>2]|0)+104>>2]|0);if(k){if(c[a+152>>2]&4|0)wD(a,c[j>>2]|0,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);xD(a)}}l=n;return}function oz(a){a=a|0;Ly(c[(c[a+16>>2]|0)+12>>2]|0);return}function pz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;k=m+40|0;h=m;if(!(a[f>>0]|0)){h=4144;g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}else{g=(g|0)==0?91400:g;i=c[(c[e+16>>2]|0)+12>>2]|0;j=vz(i,f)|0;if(!j){if(hz(e,i+16|0,h,f,15,0)|0)iz(e,f)}else if(hz(e,j+16|0,h,g,d[j+65>>0]|0,0)|0){c[k>>2]=Dn(e)|0;c[k+4>>2]=f;c[k+8>>2]=g;_l(0,91402,k)|0}g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}l=m;return}function qz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0.0;k=l;l=l+32|0;m=k+16|0;i=k;f=c[a+4>>2]|0;a=c[a>>2]|0;g=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];aw(i,m,g);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];if(!f){f=c[(c[a+16>>2]|0)+12>>2]|0;g=f+16|0;a=f+24|0;i=f+32|0;f=f+40|0}else{g=f;a=f+8|0;i=f+16|0;f=f+24|0}e=+h[a>>3];d=+h[f>>3];n=+h[b>>3];if((+h[g>>3]<=n?n<=+h[i>>3]:0)?(j=+h[b+8>>3],e<=j):0)a=j<=d&1;else a=0;l=k;return a|0}function rz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0;u=l;l=l+80|0;r=u+64|0;q=u+32|0;t=u;a:do if(!(a[d+28>>0]|0))e=0;else{i=+h[d>>3];p=b+16|0;m=c[(c[p>>2]|0)+12>>2]|0;k=m+48|0;m=m+56|0;d=0;while(1){if((d|0)>=(c[k>>2]|0))break a;n=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[(c[m>>2]|0)+(d<<2)>>2]|0;j=+(~~+h[(n?o+16|0:o+24|0)>>3]|0);if(i>=j?(s=+(~~+h[(n?o+32|0:o+40|0)>>3]|0),i<=s):0)break;d=d+1|0}if(!(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1)){t=c[p>>2]|0;v=+h[t+16>>3];h[f>>3]=v+j;j=+h[t+24>>3];i=+h[t+80>>3];h[f+8>>3]=j-i*.5;h[f+16>>3]=v+s}else{o=(c[(c[m>>2]|0)+(d<<2)>>2]|0)+16|0;b=(c[p>>2]|0)+16|0;c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[q+28>>2]=c[o+28>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];bw(t,q,r);c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];c[f+16>>2]=c[t+16>>2];c[f+20>>2]=c[t+20>>2];c[f+24>>2]=c[t+24>>2];c[f+28>>2]=c[t+28>>2];t=c[p>>2]|0;i=+h[t+80>>3];j=+h[t+24>>3]}h[f+24>>3]=i*.5+j;c[g>>2]=1}while(0);l=u;return e|0}function sz(d,e){d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=l;l=l+144|0;n=w+96|0;p=w+64|0;r=w;s=w+128|0;t=c[d+16>>2]|0;u=t+208|0;f=c[u>>2]|0;if(!f)v=(b[t+260>>1]&1)!=0;else v=1;m=e+16|0;q=c[m>>2]|0;o=c[q+12>>2]|0;j=o+16|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];c[p+16>>2]=c[j+16>>2];c[p+20>>2]=c[j+20>>2];c[p+24>>2]=c[j+24>>2];c[p+28>>2]=c[j+28>>2];x=+h[q+16>>3];h[p>>3]=+h[p>>3]+x;k=+h[q+24>>3];q=p+8|0;h[q>>3]=+h[q>>3]+k;q=p+16|0;h[q>>3]=+h[q>>3]+x;j=p+24|0;h[j>>3]=+h[j>>3]+k;if(v?(c[d+152>>2]&4|0)==0:0)wD(d,f,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);f=Zy(d,e)|0;$y(d,e)|0;c[s>>2]=0;if(!(f&1))i=0;else{i=_y(e)|0;if(!((xv(i,s,n)|0)<<24>>24)){DD(d,i);i=1}else{DD(d,c[s>>2]|0);i=c[s+4>>2]|0;j=DA(e,c[42217]|0,0,0)|0;k=+g[n>>2];if(!i)ED(d,122106,j,k);else ED(d,i,j,k);i=f>>>1&1|2}}j=c[c[(c[m>>2]|0)+8>>2]>>2]|0;if((a[j>>0]|0)==77){m=(xJ(j,91271)|0)==0;f=m?f|4:f}if(!(f&2130706444)){c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[n+16>>2]=c[p+16>>2];c[n+20>>2]=c[p+20>>2];c[n+24>>2]=c[p+24>>2];c[n+28>>2]=c[p+28>>2];ID(d,n,i)}else{c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+32|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[r+16>>3]=+h[p>>3];h[r+24>>3]=+h[r+8>>3];h[r+48>>3]=+h[r>>3];h[r+56>>3]=+h[r+40>>3];yy(d,r,4,f,i)}tz(d,e,o);_I(c[s>>2]|0);if(v){if(c[d+152>>2]&4|0)wD(d,c[u>>2]|0,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);xD(d)}l=w;return}function tz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+144|0;p=u+128|0;o=u+112|0;q=u+16|0;r=u;g=u+96|0;i=u+80|0;s=u+64|0;t=u+48|0;j=e+52|0;f=c[j>>2]|0;if(!f)f=d+16|0;else{n=f+56|0;m=e+16|0;f=e+32|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];uz(g,o,p);f=d+16|0;m=(c[f>>2]|0)+16|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];bz(i,o,p);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];pw(b,10,c[j>>2]|0);$y(b,d)|0}k=(c[f>>2]|0)+16|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=e+48|0;m=e+64|0;n=q+16|0;j=e+56|0;e=q+16|0;i=0;while(1){if((i|0)>=(c[k>>2]|0))break;if((i|0)>0){f=(c[j>>2]|0)+(i<<2)|0;g=c[f>>2]|0;if(!(a[m>>0]|0)){g=g+32|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];h[q>>3]=+h[(c[f>>2]|0)+16>>3];f=n;g=0}else{g=g+16|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];h[e>>3]=+h[q>>3];f=(c[f>>2]|0)+32|0;g=1}h[q+(g<<4)+8>>3]=+h[f+8>>3];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];bz(s,o,p);c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];bz(t,o,p);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];KD(b,q,2)}tz(b,d,c[(c[j>>2]|0)+(i<<2)>>2]|0);i=i+1|0}l=u;return}function uz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function vz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+60>>2]|0;if(!(((e|0)!=0?(a[e>>0]|0)==(a[d>>0]|0):0)?(xJ(e,d)|0)==0:0))f=4;a:do if((f|0)==4){g=b+56|0;f=c[b+48>>2]|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break a}b=vz(c[(c[g>>2]|0)+(e<<2)>>2]|0,d)|0;if(!b)e=e+1|0;else break}}while(0);return b|0}function wz(a,b){a=a|0;b=b|0;var d=0;d=b+8|0;h[d>>3]=+h[d>>3]*1.375;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function xz(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;k=+h[b>>3];f=k*.5;m=+h[b+8>>3];i=m*.5;h[a>>3]=f;e=m*.40909090909090906;h[a+8>>3]=e;h[a+16>>3]=f;g=m*.4592530909090909;h[a+24>>3]=g;j=k*.275892;h[a+32>>3]=j;h[a+40>>3]=i;h[a+48>>3]=0.0;h[a+56>>3]=i;k=k*-.275892;h[a+64>>3]=k;h[a+72>>3]=i;l=-f;h[a+80>>3]=l;h[a+88>>3]=g;d=a+96|0;h[d>>3]=l;h[a+104>>3]=e;b=a+112|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+128|0;h[b>>3]=l;h[a+136>>3]=m*-.40909090909090906;d=a+144|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[a+160>>3]=l;g=-g;h[a+168>>3]=g;h[a+176>>3]=k;i=-i;h[a+184>>3]=i;h[a+192>>3]=0.0;h[a+200>>3]=i;h[a+208>>3]=j;h[a+216>>3]=i;h[a+224>>3]=f;h[a+232>>3]=g;d=a+240|0;h[d>>3]=f;h[a+248>>3]=-e;b=a+256|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+288|0;d=a+272|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];return}function yz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+144|0;u=x+112|0;t=x+96|0;v=x+80|0;s=x+64|0;w=x+32|0;q=x+16|0;r=x;g=x+48|0;do if(a){j=c[a+4>>2]|0;k=c[a>>2]|0;o=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&3)*90|0;c[u>>2]=c[b>>2];c[u+4>>2]=c[b+4>>2];c[u+8>>2]=c[b+8>>2];c[u+12>>2]=c[b+12>>2];aw(g,u,o);c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if(j|0){d=+h[w>>3];if(!(+h[j>>3]<=d)){a=0;break}if(!(d<=+h[j+16>>3])){a=0;break}d=+h[w+8>>3];if(!(+h[j+8>>3]<=d)){a=0;break}a=d<=+h[j+24>>3];break}if((k|0)==(c[42336]|0)){d=+h[20903];e=+h[20904];i=+h[20905]}else{a=k+16|0;b=c[(c[a>>2]|0)+12>>2]|0;c[42337]=b;c[42338]=c[b+44>>2];c[42339]=c[b+8>>2];if(!(c[b+40>>2]&2048)){n=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[a>>2]|0;h[(n?167248:167256)>>3]=+h[o+96>>3]+ +h[o+88>>3];h[(n?167256:167248)>>3]=+h[o+80>>3];i=+h[o+32>>3]*72.0;f=+h[o+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);i=+(~~(i+(i>=0.0?.5:-.5))|0)}else{aB(u,b);i=+h[u+16>>3]-+h[u>>3];f=+h[u+24>>3]-+h[u+8>>3];o=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&1|0)==0;h[(o?167248:167256)>>3]=i;h[(o?167256:167248)>>3]=f}d=+h[20906];if(d==0.0){h[20906]=1.0;d=1.0}e=+h[20907];if(e==0.0){h[20907]=1.0;e=1.0}d=i/d;h[20903]=d;e=f/e;h[20904]=e;i=i*.5;h[20905]=i;h[20908]=f*.5;o=O((c[(c[42337]|0)+4>>2]|0)+-1|0,c[42339]|0)|0;c[42340]=(o|0)>0?o:0;c[42336]=k}f=+h[w>>3]*d;h[w>>3]=f;o=w+8|0;d=+h[o>>3]*e;h[o>>3]=d;if(!(+B(+f)>i)?(e=+B(+d),p=+h[20908],!(e>p)):0){o=c[42339]|0;if((o|0)<3){a=+QJ(f/i,d/p)<1.0;break}b=(c[42341]|0)%(o|0)|0;a=(b+1|0)%(o|0)|0;k=c[42338]|0;m=c[42340]|0;n=k+(m+b<<4)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];n=k+(m+a<<4)|0;c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[41818];c[v+4>>2]=c[41819];c[v+8>>2]=c[41820];c[v+12>>2]=c[41821];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];if(gz(s,v,t,u)|0){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[q>>2];c[v+4>>2]=c[q+4>>2];c[v+8>>2]=c[q+8>>2];c[v+12>>2]=c[q+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[u>>2]=c[41818];c[u+4>>2]=c[41819];c[u+8>>2]=c[41820];c[u+12>>2]=c[41821];n=(gz(s,v,t,u)|0)!=0;if(n?(c[s>>2]=c[w>>2],c[s+4>>2]=c[w+4>>2],c[s+8>>2]=c[w+8>>2],c[s+12>>2]=c[w+12>>2],c[v>>2]=c[r>>2],c[v+4>>2]=c[r+4>>2],c[v+8>>2]=c[r+8>>2],c[v+12>>2]=c[r+12>>2],c[t>>2]=c[41818],c[t+4>>2]=c[41819],c[t+8>>2]=c[41820],c[t+12>>2]=c[41821],c[u>>2]=c[q>>2],c[u+4>>2]=c[q+4>>2],c[u+8>>2]=c[q+8>>2],c[u+12>>2]=c[q+12>>2],(gz(s,v,t,u)|0)!=0):0){a=1;break}else{j=b;b=1}while(1){if((b|0)>=(o|0)){b=31;break}if(n){g=a;a=(a+1|0)%(o|0)|0}else{g=(j+-1+o|0)%(o|0)|0;a=j}q=k+(m+g<<4)|0;r=k+(m+a<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[41818];c[v+4>>2]=c[41819];c[v+8>>2]=c[41820];c[v+12>>2]=c[41821];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];if(!(gz(s,v,t,u)|0)){b=30;break}else{j=g;b=b+1|0}}if((b|0)==30){c[42341]=g;a=0;break}else if((b|0)==31){c[42341]=j;a=1;break}}else a=0}else a=0}else{c[42336]=0;a=0}while(0);l=x;return a&1|0}function zz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;j=l;l=l+32|0;f=j+16|0;i=j;if(a){a=c[a>>2]|0;k=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];aw(i,f,k);g=+h[i>>3];e=+h[i+8>>3];if((a|0)==(c[42344]|0))d=+h[20911];else{i=c[(c[a+16>>2]|0)+12>>2]|0;k=(c[i+4>>2]<<1)+-2|0;d=+h[(c[i+44>>2]|0)+((((k|0)>0?k:0)|1)<<4)>>3];h[20911]=d;c[42344]=a}if(+B(+g)>d|+B(+e)>d)a=0;else a=+QJ(g,e)<=d&1}else{c[42344]=0;a=0}l=j;return a|0}function Az(e,f){e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0;t=l;l=l+16|0;j=t;r=c[e+16>>2]|0;s=r+208|0;g=c[s>>2]|0;if((g|0)==0?(b[r+260>>1]&1)==0:0)q=0;else if(!(c[e+152>>2]&4)){wD(e,g,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);q=1}else q=1;n=f+16|0;k=c[(c[n>>2]|0)+12>>2]|0;o=c[k+44>>2]|0;p=c[k+8>>2]|0;k=c[k+4>>2]|0;if((c[42342]|0)<(p|0)){g=p+2|0;c[42342]=g;i=c[42343]|0;if(!i)g=ww(g<<4)|0;else g=yw(i,g<<4)|0;c[42343]=g}dz(f,j)|0;if(!(c[j>>2]&32))FD(e,21040);else FD(e,21036);g=c[42216]|0;if(g|0)OD(e,+EA(f,g,1.0,0.0));g=d[(c[n>>2]|0)+117>>0]|0;do if(!(g&1)){if(g&2|0){BD(e,GA(f,0,91300)|0);g=GA(f,0,91308)|0;DD(e,g);break}if(g&8|0){BD(e,GA(f,0,91316)|0);g=GA(f,0,91324)|0;DD(e,g);break}if(!(g&4)){g=cz(f,122106)|0;DD(e,g);$y(e,f)|0;break}else{BD(e,GA(f,0,91332)|0);g=GA(f,0,91340)|0;DD(e,g);break}}else{BD(e,GA(f,0,91284)|0);g=GA(f,0,91292)|0;DD(e,g)}while(0);if(!k)if(!(a[g>>0]|0))i=1;else{BD(e,g);i=1}else i=k;j=1;f=0;while(1){if((f|0)>=(i|0))break;k=O(f,p)|0;m=c[42343]|0;g=0;while(1){if((g|0)>=(p|0))break;w=g+k|0;u=+h[o+(w<<4)+8>>3];v=c[n>>2]|0;h[m+(g<<4)>>3]=+h[v+16>>3]+ +h[o+(w<<4)>>3];h[m+(g<<4)+8>>3]=+h[v+24>>3]+u;g=g+1|0}GD(e,m,p,j);j=0;f=f+1|0}if(q){if(c[e+152>>2]&4|0)wD(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);xD(e)}l=t;return}function Bz(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=l;l=l+48|0;h=g;e=Cz(b,e,f)|0;c[h+36>>2]=c[f+36>>2];hz(b,c[f+24>>2]|0,h,e,d[f+33>>0]|0,0)|0;b=h;e=a+40|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=g;return}function Cz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0;z=l;l=l+32|0;y=z;g=z+24|0;k=z+16|0;x=c[(c[(c[(ro(b)|0)+60>>2]|0)+16>>2]|0)+116>>2]&3;f=b+16|0;w=(c[f>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];Dz(g,y,x);w=(c[d+16>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];Dz(k,y,x);x=a[e+33>>0]|0;y=x&255;a:do switch(x<<24>>24){case 0:case 15:{d=0;break}default:{d=c[e+24>>2]|0;if(!d){x=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;w=c[f>>2]|0;B=+h[w+80>>3]*.5;A=-B;m=+h[w+88>>3];j=-m;n=x?j:A;i=x?m:B;m=x?B:m;j=x?A:j}else{n=+h[d>>3];i=+h[d+16>>3];m=+h[d+24>>3];j=+h[d+8>>3]}x=c[g>>2]|0;v=c[g+4>>2]|0;w=c[k>>2]|0;s=c[k+4>>2]|0;t=~~j;u=~~((i+n)*.5);r=~~i;q=~~((m+j)*.5);p=~~m;o=~~n;g=0;k=0;d=0;e=0;b=0;while(1){if((k|0)==4)break a;if(1<<k&y){switch(k|0){case 0:{e=u;b=t;break}case 1:{e=r;b=q;break}case 2:{e=u;b=p;break}case 3:{e=o;b=q;break}default:{}}e=x+e|0;b=v+b|0;f=e-w|0;C=b-s|0;f=(O(C,C)|0)+(O(f,f)|0)|0;if((d|0)==0|(f|0)<(g|0))d=c[21048+(k<<2)>>2]|0;else f=g}else f=g;g=f;k=k+1|0}}}while(0);l=z;return d|0}function Dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;switch(d|0){case 0:{f=+h[b>>3];e=+h[b+8>>3];break}case 2:{f=+h[b>>3];e=-+h[b+8>>3];break}case 1:{f=-+h[b+8>>3];e=+h[b>>3];break}case 3:{f=+h[b+8>>3];e=+h[b>>3];break}default:{f=0.0;e=0.0}}c[a>>2]=~~(f+(f>=0.0?.5:-.5));c[a+4>>2]=~~(e+(e>=0.0?.5:-.5));return}function Ez(){var a=0,b=0,d=0;a=l;l=l+32|0;b=a+16|0;d=a;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];yz(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];zz(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];Wy(0,b)|0;l=a;return}function Fz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=l;l=l+192|0;s=z+176|0;x=z+112|0;y=z+48|0;t=z+32|0;u=z+24|0;v=z+16|0;w=z;if(!(e<<24>>24)){k=d+48|0;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];k=u;m=v;n=x;o=0}else{c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2];k=v;m=u;n=0;o=x}h[u>>3]=0.0;h[v>>3]=1.0;q=t+8|0;f=0.0;g=1.0;j=0;p=+h[t>>3];while(1){r=+h[q>>3];f=(f+g)*.5;PA(w,d,3,f,n,o);c[t>>2]=c[w>>2];c[t+4>>2]=c[w+4>>2];c[t+8>>2]=c[w+8>>2];c[t+12>>2]=c[w+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];a:do if(!((ab[b&63](a,s)|0)<<24>>24)){e=0;while(1){if((e|0)==4){e=k;j=1;break a}j=y+(e<<4)|0;A=x+(e<<4)|0;c[j>>2]=c[A>>2];c[j+4>>2]=c[A+4>>2];c[j+8>>2]=c[A+8>>2];c[j+12>>2]=c[A+12>>2];e=e+1|0}}else e=m;while(0);h[e>>3]=f;i=+h[t>>3];p=p-i;if(!((p>=0.0?p:-p)>.5)?(r=r-+h[q>>3],!((r>=0.0?r:-r)>.5)):0)break;f=+h[u>>3];g=+h[v>>3];p=i}b:do if(!(j<<24>>24)){e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;y=x+(e<<4)|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];e=e+1|0}}else{e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;x=y+(e<<4)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];e=e+1|0}}while(0);l=z;return}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;d=m+16|0;e=m;f=m+32|0;g=a+16|0;i=c[g>>2]|0;j=c[i+8>>2]|0;if(j|0?(k=j+4|0,c[(c[k>>2]|0)+12>>2]|0):0){c[f>>2]=a;c[f+4>>2]=0;n=+h[i+96>>3];h[e>>3]=+h[b>>3]-+h[i+16>>3];h[e+8>>3]=+h[b+8>>3]-+h[i+24>>3];k=c[(c[k>>2]|0)+12>>2]|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];k=ab[k&63](f,d)|0;h[(c[g>>2]|0)+96>>3]=n;Hz(f,a,b,k)}l=m;return}function Hz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+64|0;m=n;j=b+16|0;g=c[j>>2]|0;k=+h[g+96>>3];i=g+16|0;f=g+24|0;b=0;while(1){if((b|0)==4)break;h[m+(b<<4)>>3]=+h[d+(b<<4)>>3]-+h[i>>3];h[m+(b<<4)+8>>3]=+h[d+(b<<4)+8>>3]-+h[f>>3];b=b+1|0}Fz(a,c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0,m,e);b=0;while(1){if((b|0)==4)break;e=c[j>>2]|0;h[d+(b<<4)>>3]=+h[e+16>>3]+ +h[m+(b<<4)>>3];h[d+(b<<4)+8>>3]=+h[e+24>>3]+ +h[m+(b<<4)+8>>3];b=b+1|0}h[(c[j>>2]|0)+96>>3]=k;l=n;return}function Iz(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=b+16|0;b=c[f>>2]|0;if(!(a[b+112>>0]|0))break;b=c[b+116>>2]|0}b=c[b+8>>2]|0;if(!b){b=vw(40)|0;c[(c[f>>2]|0)+8>>2]=b}e=c[b>>2]|0;if(!e)b=ww(((c[b+4>>2]|0)*48|0)+48|0)|0;else b=yw(e,((c[b+4>>2]|0)*48|0)+48|0)|0;f=c[(c[f>>2]|0)+8>>2]|0;c[f>>2]=b;f=f+4|0;e=c[f>>2]|0;c[f>>2]=e+1;f=b+(e*48|0)|0;c[f>>2]=vw(d<<4)|0;c[b+(e*48|0)+4>>2]=d;b=b+(e*48|0)+8|0;e=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));return f|0}function Jz(b,e,f,g,i){b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0;D=l;l=l+96|0;A=D+16|0;u=D;x=D+92|0;y=D+88|0;v=D+80|0;m=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;z=ro(m)|0;B=Iz(b,g)|0;n=b;while(1){o=c[n+16>>2]|0;if(!(a[o+112>>0]|0))break;n=c[o+116>>2]|0}if((a[i+8>>0]|0)==0?(j=c[m+16>>2]|0,k=c[e+16>>2]|0,(c[j+232>>2]|0)==(c[k+232>>2]|0)):0){p=(c[j+236>>2]|0)>(c[k+236>>2]|0);w=p?m:e;m=p?e:m}else w=e;if((m|0)==(c[((c[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)){j=o+80|0;k=o+40|0;p=d[o+86>>0]|0;e=d[o+46>>0]|0}else{j=o+40|0;k=o+80|0;p=d[o+46>>0]|0;e=d[o+86>>0]|0}o=c[j>>2]|0;j=c[k>>2]|0;if(((e|0)!=0?(r=m+16|0,q=c[(c[r>>2]|0)+8>>2]|0,(q|0)!=0):0)?(c[(c[q+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=m;c[v+4>>2]=j;j=g+-4|0;e=u+8|0;k=0;while(1){if((k|0)>=(j|0))break;n=k+3|0;q=c[r>>2]|0;h[u>>3]=+h[f+(n<<4)>>3]-+h[q+16>>3];h[e>>3]=+h[f+(n<<4)+8>>3]-+h[q+24>>3];q=c[(c[(c[q+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((ab[q&63](v,A)|0)<<24>>24))break;else k=n}c[x>>2]=k;Hz(v,m,f+(k<<4)|0,1)}else{c[x>>2]=0;k=0}if(((p|0)!=0?(t=w+16|0,s=c[(c[t>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[(c[s+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=w;c[v+4>>2]=o;m=g+-4|0;e=u+8|0;j=m;while(1){if((j|0)<=0)break;g=c[t>>2]|0;h[u>>3]=+h[f+(j<<4)>>3]-+h[g+16>>3];h[e>>3]=+h[f+(j<<4)+8>>3]-+h[g+24>>3];g=c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((ab[g&63](v,A)|0)<<24>>24))break;j=j+-3|0}c[y>>2]=j;Hz(v,w,f+(j<<4)|0,0)}else{m=g+-4|0;c[y>>2]=m;j=m}while(1){if((k|0)>=(m|0))break;e=k+3|0;E=+h[f+(k<<4)>>3]-+h[f+(e<<4)>>3];F=+h[f+(k<<4)+8>>3]-+h[f+(e<<4)+8>>3];if(F*F+E*E<1.0e-06)k=e;else break}c[x>>2]=k;while(1){if((j|0)<=0)break;v=j+3|0;F=+h[f+(j<<4)>>3]-+h[f+(v<<4)>>3];E=+h[f+(j<<4)+8>>3]-+h[f+(v<<4)+8>>3];if(!(E*E+F*F<1.0e-06))break;j=j+-3|0}c[y>>2]=j;Kz(b,w,f,x,y,B,i);r=c[x>>2]|0;n=c[y>>2]|0;m=n+4|0;n=n+3|0;o=A+16|0;p=A+32|0;q=A+48|0;k=z+16|0;j=r;while(1){if((j|0)>=(m|0))break;z=(c[B>>2]|0)+(j-r<<4)|0;e=f+(j<<4)|0;c[z>>2]=c[e>>2];c[z+4>>2]=c[e+4>>2];c[z+8>>2]=c[e+8>>2];c[z+12>>2]=c[e+12>>2];c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];e=j+1|0;if((j|0)>=(n|0)){C=38;break}y=(c[B>>2]|0)+(e-r<<4)|0;z=f+(e<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[o>>2]=c[z>>2];c[o+4>>2]=c[z+4>>2];c[o+8>>2]=c[z+8>>2];c[o+12>>2]=c[z+12>>2];z=j+2|0;y=(c[B>>2]|0)+(z-r<<4)|0;z=f+(z<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[p>>2]=c[z>>2];c[p+4>>2]=c[z+4>>2];c[p+8>>2]=c[z+8>>2];c[p+12>>2]=c[z+12>>2];z=j+3|0;y=f+(z<<4)|0;c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];eu((c[k>>2]|0)+16|0,A);j=z}c[B+4>>2]=m-r;l=D;return}function Kz(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+4|0;n=p;o=b;while(1){j=c[(c[o+16>>2]|0)+116>>2]|0;if(!j)break;else o=j}if(!(a[i+8>>0]|0))j=($a[c[i>>2]&31](o)|0)&255;else j=0;At(o,m,n);k=i+4|0;if(($a[c[k>>2]&31](d)|0)<<24>>24)c[n>>2]=0;if(($a[c[k>>2]&31](c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)<<24>>24)c[m>>2]=0;if(j|0){d=c[m>>2]|0;c[m>>2]=c[n>>2];c[n>>2]=d}if(!(a[i+9>>0]|0)){j=c[m>>2]|0;if(j|0)c[f>>2]=Pt(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0;j=c[n>>2]|0;if(j|0)c[g>>2]=Nt(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0}else{k=c[n>>2]|0;j=c[m>>2]|0;if(j|k|0)Qt(o,e,c[f>>2]|0,c[g>>2]|0,h,j,k)}l=p;return}function Lz(a,b){a=a|0;b=b|0;var d=0,e=0;if(+h[b>>3]<+h[b+16>>3]?+h[b+8>>3]<+h[b+24>>3]:0){d=c[a+84>>2]|0;e=a+80|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d+(a<<5)|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2]}return}function Mz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=l;l=l+112|0;u=x+72|0;o=x+56|0;n=x+16|0;q=x;j=c[d>>2]&3;p=d+48|0;w=c[((j|0)==3?d:p)+40>>2]|0;t=d+16|0;r=c[t>>2]|0;i=r+16|0;if(a[r+47>>0]|0){Bz(n,w,c[((j|0)==2?d:d+-48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}r=w+16|0;j=c[r>>2]|0;i=c[j+8>>2]|0;if(!i)n=0;else n=c[(c[i+4>>2]|0)+16>>2]|0;i=j+16|0;j=(c[t>>2]|0)+16|0;c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];Nz(q,o,u);c[b>>2]=c[q>>2];c[b+4>>2]=c[q+4>>2];c[b+8>>2]=c[q+8>>2];c[b+12>>2]=c[q+12>>2];if(!(g<<24>>24)){i=c[t>>2]|0;if(!(a[i+45>>0]|0))i=0;else{k=+h[i+32>>3];v=9}}else{k=+Oz(c[((c[d>>2]&3|0)==3?d:p)+40>>2]|0);v=9}if((v|0)==9){h[b+16>>3]=k;i=1}a[b+29>>0]=i;c[b+80>>2]=0;c[b+88>>2]=d;q=f+32|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];switch(e|0){case 1:{j=c[r>>2]|0;if((a[j+156>>0]|0)==0?(q=a[(c[t>>2]|0)+49>>0]|0,s=q&255,q<<24>>24!=0):0){c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(s&4)){if(s&1|0){c[f+48>>2]=1;i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}i=f+48|0;if(!(s&8)){c[i>>2]=2;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{c[i>>2]=8;h[u+16>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{c[f+48>>2]=4;k=+h[u>>3];if(+h[b>>3]<+h[j+16>>3]){z=k+-1.0;y=+h[b+8>>3];b=u+16|0;k=+h[b>>3];m=+h[j+80>>3]*.5+ +h[j+24>>3];m=m+ +((c[(c[(ro(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[r>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[u+24>>3]=y;h[u+8>>3]=+h[i+24>>3]-+h[i+80>>3]*.5;h[u>>3]=z;h[f+56>>3]=z;h[f+64>>3]=y;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{m=+h[b+8>>3];i=u+16|0;y=+h[i>>3]+1.0;z=+h[j+80>>3]*.5+ +h[j+24>>3];z=z+ +((c[(c[(ro(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+24>>3]=m;h[u+8>>3]=+h[b+24>>3]-+h[b+80>>3]*.5;h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0}else{j=1;v=47}break}case 2:{s=a[(c[t>>2]|0)+49>>0]|0;j=s&255;if(!(s<<24>>24))v=46;else{c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){i=c[r>>2]|0;z=+h[i+24>>3]-+h[i+80>>3]*.5;i=u+16|0;y=+h[i>>3]+1.0;k=+h[b>>3];m=z-+((c[(c[(ro(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+8>>3]=z;h[u+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}k=+h[b>>3];if(!(j&8)){h[u>>3]=k;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3];i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0;i=u+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{i=u+16|0;h[i>>3]=k+1.0;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3]+-1.0;i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{i=u+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+8>>3]?u:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0;c[f+48>>2]=j}break}default:v=46}if((v|0)==46){j=c[f+48>>2]|0;v=47}a:do if((v|0)==47){if(n){d=f+56|0;i=f+52|0;j=db[n&3](w,(c[t>>2]|0)+16|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{ma(123205,91558,569,91568);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+8>>3];break a}case 1:{h[f+80>>3]=+h[b+8>>3];c[f+48>>2]=1;break a}default:break a}}while(0);l=x;return}function Nz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Oz(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,l=0.0;i=c[a+16>>2]|0;j=c[i+172>>2]|0;f=0.0;g=0;while(1){a=c[j+(g<<2)>>2]|0;if(!a)break;f=+h[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16>>3]+f;g=g+1|0}e=c[i+180>>2]|0;b=0.0;a=0;while(1){d=c[e+(a<<2)>>2]|0;if(!d)break;b=+h[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+16>>3]+b;a=a+1|0}k=+h[i+16>>3];l=+h[i+24>>3];j=c[j>>2]|0;f=+K(+(l-+h[(c[(c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+24>>3]),+(k-f/+(g|0)));j=c[e>>2]|0;return +((+K(+(+h[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+24>>3]-l),+(b/+(a|0)-k))+f)*.5)}function Pz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+112|0;w=z+72|0;p=z+56|0;n=z+16|0;t=z;j=c[d>>2]&3;r=d+-48|0;y=c[((j|0)==2?d:r)+40>>2]|0;u=d+16|0;s=c[u>>2]|0;i=s+56|0;if(a[s+87>>0]|0){Bz(n,y,c[((j|0)==3?d:d+48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}s=y+16|0;j=c[s>>2]|0;i=c[j+8>>2]|0;if(!i)o=0;else o=c[(c[i+4>>2]|0)+16>>2]|0;n=b+40|0;i=j+16|0;j=(c[u>>2]|0)+56|0;c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];c[w>>2]=c[j>>2];c[w+4>>2]=c[j+4>>2];c[w+8>>2]=c[j+8>>2];c[w+12>>2]=c[j+12>>2];Nz(t,p,w);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];if(!(g<<24>>24)){i=c[u>>2]|0;if(!(a[i+85>>0]|0))q=0;else{h[b+56>>3]=+h[i+72>>3];q=1}}else{m=+Oz(c[((c[d>>2]&3|0)==2?d:r)+40>>2]|0)+3.141592653589793;h[b+56>>3]=m;if(m<6.283185307179586)q=1;else ma(91578,91558,606,91602)}a[b+69>>0]=q;t=f+32|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];switch(e|0){case 1:{j=c[s>>2]|0;if((a[j+156>>0]|0)==0?(t=a[(c[u>>2]|0)+89>>0]|0,v=t&255,t<<24>>24!=0):0){c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(v&4))if(!(v&1)){i=f+48|0;if(!(v&8)){c[i>>2]=2;h[w>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{c[i>>2]=8;h[w+16>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{c[f+48>>2]=1;k=+h[w>>3];if(+h[n>>3]<+h[j+16>>3]){B=k+-1.0;m=+h[b+48>>3];b=w+16|0;k=+h[b>>3];A=+h[j+80>>3]*-.5+ +h[j+24>>3];A=A-+((c[(c[(ro(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[w+8>>3]=m;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=B;h[f+56>>3]=B;h[f+64>>3]=A;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{B=+h[b+48>>3];i=w+16|0;A=+h[i>>3]+1.0;m=+h[j+80>>3]*-.5+ +h[j+24>>3];m=m-+((c[(c[(ro(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[s>>2]|0;h[w>>3]=+h[b+96>>3]+ +h[b+16>>3];h[w+8>>3]=B;h[w+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=A;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}}else{c[f+48>>2]=4;i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=v}else{j=4;x=47}break}case 2:{v=a[(c[u>>2]|0)+89>>0]|0;j=v&255;if(!(v<<24>>24))x=46;else{c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){k=+h[w>>3]+-1.0;i=c[s>>2]|0;B=+h[i+24>>3]-+h[i+80>>3]*.5;A=+h[n>>3];m=B-+((c[(c[(ro(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[w+16>>3]=+h[i+16>>3]+-2.0-+h[i+88>>3];h[w+8>>3]=B;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=k;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{i=w+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?w+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}k=+h[n>>3];if(!(j&8)){h[w>>3]=k+-1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3];i=w+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{i=w+16|0;h[i>>3]=k+1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=j}break}default:x=46}if((x|0)==46){j=c[f+48>>2]|0;x=47}a:do if((x|0)==47){if(o){d=f+56|0;i=f+52|0;j=db[o&3](y,(c[u>>2]|0)+56|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{ma(123205,91558,765,91602);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+48>>3];break a}case 1:{h[f+64>>3]=+h[b+48>>3];c[f+48>>2]=4;break a}default:break a}}while(0);l=z;return}function Qz(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;g=c[b+16>>2]|0;i=c[g+96>>2]|0;if((a[g+44>>0]|0)==0?(a[g+84>>0]|0)==0:0)j=6;else{d=a[g+49>>0]|0;e=d&255;if(((e&8|0)==0?(f=a[g+89>>0]|0,(f&8)==0):0)?((e&5|0)==0?1:d<<24>>24!=f<<24>>24):0)j=6;else b=0}if((j|0)==6)if(!i)b=18;else{b=(c[(c[(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=~~(+h[(b?i+32|0:i+24|0)>>3]+18.0)}return b|0}function Rz(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=i|0;var j=0,k=0,l=0,m=0;b=c[(c[d+(e<<2)>>2]|0)+16>>2]|0;if((a[b+44>>0]|0)==0?(a[b+84>>0]|0)==0:0)l=6;else l=3;do if((l|0)==3){j=a[b+49>>0]|0;k=j&255;if(!(k&8)){m=a[b+89>>0]|0;if((m&8)==0?((k&5|0)==0?1:j<<24>>24!=m<<24>>24):0){l=6;break}if(!(a[b+89>>0]&8)){if(k&4|0){Tz(d,e,f,g,h,i);break}if(!(k&1))ma(123205,91558,1231,91610);else{Vz(d,e,f,g,h,i);break}}}if((j&2)==0?(a[b+89>>0]&2)==0:0){Uz(d,e,f,g,h,i);break}Tz(d,e,f,g,h,i)}while(0);if((l|0)==6)Sz(d,e,f,g,h,i);return}function Sz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+96>>3];switch(Wz(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 65:case 32:{if(F==H)k=0-k|0;break}default:{}}Q=(p-m)*3.0;m=(p-i)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p<Q?p:Q;m=p<m?p:m;while(1){if((r|0)>=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;Xz(M,n*.3333333333333333+E,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=p+C;Xz(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];Xz(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;Xz(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];Xz(K,m*.3333333333333333+G,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*.5+p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;Jz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function Tz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0.0,S=0;Q=l;l=l+16080|0;M=Q+80|0;N=Q+64|0;O=Q+48|0;P=Q+32|0;K=Q+16|0;L=Q;C=c[b+(e<<2)>>2]|0;q=g*.5/+(f|0);q=q>2.0?q:2.0;E=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;m=c[E>>2]|0;H=+h[m+16>>3];D=+h[m+24>>3];C=c[C+16>>2]|0;k=+h[C+16>>3];p=+h[C+24>>3];F=k+H;G=p+D;g=+h[C+56>>3];o=+h[C+64>>3];H=g+H;I=o+D;n=!(F>=H)?-1.0:1.0;s=+h[m+80>>3]*.5;switch(Wz(d[C+49>>0]|0,d[C+89>>0]|0)|0){case 15:{k=(q-g+ +h[m+96>>3])*n;break}case 38:{k=(g+q+ +h[m+88>>3])*n;break}case 41:{k=(q-k+ +h[m+96>>3])*n;break}case 48:{k=(q-k+ +h[m+96>>3])*n;break}case 58:case 57:case 51:case 47:case 37:case 14:{k=n*.3333333333333333*(k-g+ +h[m+88>>3]+ +h[m+96>>3]);break}case 73:{k=(k+q+ +h[m+88>>3])*n;break}case 83:{k=(+h[m+88>>3]+k)*n;break}case 84:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q)*n;break}case 85:case 75:case 74:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q*2.0)*n;break}default:k=0.0}p=(s-p)*3.0;o=(s-o)*3.0;q=n*q;w=M+8|0;x=M+16|0;y=M+32|0;z=M+48|0;A=(H+F)*.5;B=M+64|0;C=M+80|0;u=M+96|0;v=M+104|0;t=0;g=s;p=s<p?s:p;n=s<o?s:o;while(1){if((t|0)>=(f|0))break;r=e+1|0;e=c[b+(e<<2)>>2]|0;o=g+i;p=p+i;n=n+i;k=k+q;h[M>>3]=F;h[w>>3]=G;s=k+F;Xz(N,s,p*.3333333333333333+G);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];R=o+D;Xz(O,s,R);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Xz(P,A,R);c[z>>2]=c[P>>2];c[z+4>>2]=c[P+4>>2];c[z+8>>2]=c[P+8>>2];c[z+12>>2]=c[P+12>>2];s=H-k;Xz(K,s,R);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];Xz(L,s,n*.3333333333333333+I);c[C>>2]=c[L>>2];c[C+4>>2]=c[L+4>>2];c[C+8>>2]=c[L+8>>2];c[C+12>>2]=c[L+12>>2];h[u>>3]=H;h[v>>3]=I;m=e+16|0;if((c[(c[m>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,m=c[(c[m>>2]|0)+96>>2]|0,J=+h[(S?m+32|0:m+24|0)>>3],S=c[E>>2]|0,h[m+64>>3]=J*.5+o+ +h[S+24>>3],h[m+56>>3]=+h[S+16>>3],a[m+81>>0]=1,J>i):0)g=J+g;else g=o;Jz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,M,7,j);e=r;t=t+1|0}l=Q;return}function Uz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+88>>3];switch(Wz(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 67:case 12:{if(F==H)k=0-k|0;break}default:{}}Q=(m+p)*3.0;m=(i+p)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p<Q?p:Q;m=p<m?p:m;while(1){if((r|0)>=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;Xz(M,E-n*.3333333333333333,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=C-p;Xz(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];Xz(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;Xz(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];Xz(K,G-m*.3333333333333333,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*-.5-p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;Jz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function Vz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;C=c[b+(e<<2)>>2]|0;B=g*.5/+(f|0);w=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;D=c[w>>2]|0;z=+h[D+16>>3];v=+h[D+24>>3];C=c[C+16>>2]|0;m=+h[C+24>>3];x=+h[C+16>>3]+z;y=m+v;n=+h[C+64>>3];z=+h[C+56>>3]+z;A=n+v;u=!(x>=z)?-1:1;o=+h[D+80>>3]*.5;C=(Wz(d[C+49>>0]|0,d[C+89>>0]|0)|0)==67;m=(m+o)*3.0;n=(n+o)*3.0;B=(B>2.0?B:2.0)*+((C?0-u|0:u)|0);u=L+8|0;C=L+16|0;D=L+32|0;E=L+48|0;F=(z+x)*.5;G=L+64|0;H=L+80|0;s=L+96|0;t=L+104|0;g=o;k=0.0;m=o<m?o:m;n=o<n?o:n;q=0;while(1){if((q|0)>=(f|0))break;r=e+1|0;p=c[b+(e<<2)>>2]|0;o=g+i;m=m+i;n=n+i;k=k+B;h[L>>3]=x;h[u>>3]=y;Q=k+x;Xz(M,Q,y-m*.3333333333333333);c[C>>2]=c[M>>2];c[C+4>>2]=c[M+4>>2];c[C+8>>2]=c[M+8>>2];c[C+12>>2]=c[M+12>>2];R=v-o;Xz(N,Q,R);c[D>>2]=c[N>>2];c[D+4>>2]=c[N+4>>2];c[D+8>>2]=c[N+8>>2];c[D+12>>2]=c[N+12>>2];Xz(O,F,R);c[E>>2]=c[O>>2];c[E+4>>2]=c[O+4>>2];c[E+8>>2]=c[O+8>>2];c[E+12>>2]=c[O+12>>2];Q=z-k;Xz(J,Q,R);c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];Xz(K,Q,A-n*.3333333333333333);c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];h[s>>3]=z;h[t>>3]=A;e=p+16|0;if((c[(c[e>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ro(c[((c[p>>2]&3|0)==3?p:p+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,e=c[(c[e>>2]|0)+96>>2]|0,I=+h[(S?e+32|0:e+24|0)>>3],S=c[w>>2]|0,h[e+64>>3]=I*-.5-o+ +h[S+24>>3],h[e+56>>3]=+h[S+16>>3],a[e+81>>0]=1,I>i):0)g=I+g;else g=o;Jz(p,c[((c[p>>2]&3|0)==2?p:p+-48|0)+40>>2]|0,L,7,j);e=r;q=q+1|0}l=P;return}function Wz(a,b){a=a|0;b=b|0;var d=0;d=0;while(1){if((d|0)>=8){b=-1;break}if((c[21064+(d<<2)>>2]|0)==(b|0)){b=d;break}d=d+1|0}d=0;while(1){if((d|0)>=8){d=-1;break}if((c[21064+(d<<2)>>2]|0)==(a|0))break;d=d+1|0}if((d|b|0)<0)d=0;else d=c[21096+(d<<5)+(b<<2)>>2]|0;return d|0}function Xz(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Yz(b){b=b|0;var d=0,e=0;if((c[42247]|0)!=0|(c[42246]|0)!=0){d=b+16|0;e=c[(c[d>>2]|0)+100>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?Zz(b,1)|0:0){e=ro(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;bB(e,c[(c[d>>2]|0)+100>>2]|0)}e=c[(c[d>>2]|0)+104>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?Zz(b,0)|0:0){e=ro(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;bB(e,c[(c[d>>2]|0)+104>>2]|0)}}return}function Zz(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;o=q+32|0;m=q+16|0;n=q;i=b+16|0;do if((a[(c[i>>2]|0)+112>>0]|0)!=6){e=c[42247]|0;if(!((e|0)!=0?(a[(Jm(b,e)|0)>>0]|0)!=0:0)){e=c[42246]|0;if(!e){e=0;break}if(!(a[(Jm(b,e)|0)>>0]|0)){e=0;break}}d=d<<24>>24==0;p=c[i>>2]|0;p=c[(d?p+104|0:p+100|0)>>2]|0;e=_z(b)|0;if(e){k=c[e>>2]|0;do if(d){if(c[k+8>>2]|0){e=c[k>>2]|0;j=+h[e>>3];g=+h[k+16>>3];e=e+8|0;f=+h[k+24>>3];break}e=c[k>>2]|0;g=+h[e>>3];f=+h[e+8>>3];e=0;while(1){if((e|0)==4)break;n=o+(e<<4)|0;i=(c[k>>2]|0)+(e<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];e=e+1|0}PA(m,o,3,.1,0,0);j=+h[m>>3];e=m+8|0}else{d=(c[e+4>>2]|0)+-1|0;i=k+(d*48|0)|0;if(c[k+(d*48|0)+12>>2]|0){o=c[i>>2]|0;e=(c[k+(d*48|0)+4>>2]|0)+-1|0;j=+h[o+(e<<4)>>3];g=+h[k+(d*48|0)+32>>3];e=o+(e<<4)+8|0;f=+h[k+(d*48|0)+40>>3];break}m=c[i>>2]|0;d=k+(d*48|0)+4|0;e=(c[d>>2]|0)+-1|0;g=+h[m+(e<<4)>>3];f=+h[m+(e<<4)+8>>3];e=0;while(1){if((e|0)==4)break;m=o+(e<<4)|0;k=(c[i>>2]|0)+(e+-4+(c[d>>2]|0)<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];e=e+1|0}PA(n,o,3,.9,0,0);j=+h[n>>3];e=n+8|0}while(0);r=+K(+(+h[e>>3]-f),+(j-g));r=+EA(b,c[42247]|0,-25.0,-180.0)*.017453292519943295+r;j=+EA(b,c[42246]|0,1.0,0.0)*10.0;h[p+56>>3]=j*+E(+r)+g;h[p+64>>3]=+F(+r)*j+f;a[p+81>>0]=1;e=1}else e=0}else e=0;while(0);l=q;return e|0}function _z(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b;while(1){e=c[d+16>>2]|0;d=c[e+8>>2]|0;if(d|0)break;if(!(a[e+112>>0]|0)){g=5;break}d=c[e+116>>2]|0}if((g|0)==5){g=Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;d=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=d;_l(1,91623,f)|0;d=0}l=h;return d|0}function $z(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+96|0;m=s+80|0;n=s+64|0;o=s+48|0;p=s+32|0;q=s+16|0;r=s;k=b[(c[d+16>>2]|0)+136>>1]|0;d=e+16|0;aA(c[(c[d>>2]|0)+8>>2]|0,p,q);f=+h[p>>3];g=+h[q>>3];t=f-g;i=+h[p+8>>3];j=+h[q+8>>3];u=i-j;a:do if(u*u+t*t<1.0e-06){c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2]}else switch(k&14){case 4:case 10:{h[n>>3]=(g+f)*.5;h[n+8>>3]=(j+i)*.5;q=c[(c[d>>2]|0)+8>>2]|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];VA(r,q,m);c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];break a}default:{bA(o,c[(c[d>>2]|0)+8>>2]|0,p,q);break a}}while(0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];l=s;return}function aA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;g=h+16|0;f=h;j=c[a>>2]|0;e=c[j>>2]|0;i=c[j+8>>2]|0;k=j+16|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];j=j+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!i){c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}else{c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2]}i=c[a>>2]|0;j=(c[a+4>>2]|0)+-1|0;e=c[i+(j*48|0)>>2]|0;a=c[i+(j*48|0)+4>>2]|0;k=c[i+(j*48|0)+12>>2]|0;b=i+(j*48|0)+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];j=i+(j*48|0)+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!k){k=e+(a+-1<<4)|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2]}else{c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2]}l=h;return}function bA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0;r=c[b+4>>2]|0;g=0.0;f=0;while(1){if((f|0)>=(r|0))break;l=c[b>>2]|0;k=c[l+(f*48|0)>>2]|0;l=c[l+(f*48|0)+4>>2]|0;i=3;j=0;while(1){if((i|0)>=(l|0))break;q=+h[k+(j<<4)>>3]-+h[k+(i<<4)>>3];p=+h[k+(j<<4)+8>>3]-+h[k+(i<<4)+8>>3];i=i+3|0;j=j+3|0;g=+C(+(p*p+q*q))+g}f=f+1|0}l=0;g=g*.5;a:while(1){if((l|0)>=(r|0)){f=15;break}k=c[b>>2]|0;j=c[k+(l*48|0)>>2]|0;k=c[k+(l*48|0)+4>>2]|0;f=3;i=0;while(1){if((f|0)>=(k|0))break;m=+h[j+(i<<4)>>3];p=+h[j+(i<<4)+8>>3];n=+h[j+(f<<4)>>3];o=+h[j+(f<<4)+8>>3];q=m-n;s=p-o;q=+C(+(s*s+q*q));if(q>=g){f=12;break a}f=f+3|0;i=i+3|0;g=g-q}l=l+1|0}if((f|0)==12){h[d>>3]=m;h[d+8>>3]=p;h[e>>3]=n;h[e+8>>3]=o;s=q-g;h[a>>3]=(s*m+n*g)/q;h[a+8>>3]=(s*p+o*g)/q;return}else if((f|0)==15)ma(123523,91558,1316,91685)}function cA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Yz(b);return}function dA(b,d,e,f,g){b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,G=0,H=0,I=0,J=0,K=0,L=0;J=eA(b)|0;I=c[J+4>>2]|0;K=c[J>>2]|0;H=I+-1|0;B=+h[K+(H<<6)+16>>3];C=+(I|0);D=(g|0)==2;G=(f|0)!=0;n=0;j=0.0;i=0.0;l=0.0;m=0.0;while(1){if((n|0)>=(I|0))break;b=~~+fA(+(n+-1|0),C);A=n+1|0;L=~~+fA(+(A|0),C);o=K+(n<<6)|0;m=+h[o>>3];z=K+(n<<6)+8|0;l=+h[z>>3];s=K+(n<<6)+16|0;t=+h[s>>3];u=K+(n<<6)+24|0;v=K+(n<<6)+32|0;w=K+(n<<6)+40|0;x=K+(n<<6)+48|0;y=K+(n<<6)+56|0;k=+gA(+h[K+(L<<6)+8>>3]-l,+h[K+(L<<6)>>3]-m);q=+gA(+h[K+(b<<6)+8>>3]-l,+h[K+(b<<6)>>3]-m);r=+Za[d&7](t,B,e);b=(n|0)==0;do if(b|(n|0)==(H|0))if(b){i=k+1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+k)*r;m=m-+E(+k)*r;break}else{i=q+-1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+q)*r;m=m-+E(+q)*r;break}else{p=k-q;p=1.5707963267948966-(p<0.0?p+6.283185307179586:p)*.5;j=+E(+p);j=j==0.0?0.0:r/j;i=k+1.5707963267948966;k=p+i;if(G|j>r*10.0){q=+fA(q+-1.5707963267948966,6.283185307179586);b=1;p=+fA(i,6.283185307179586);j=r;i=q}else{b=0;p=k;i=k}}while(0);h[o>>3]=m;h[z>>3]=l;h[s>>3]=t;a[u>>0]=108;h[v>>3]=i;h[w>>3]=j;c[x>>2]=b;h[y>>3]=p;n=A}o=vw(12)|0;b=0;while(1){if((b|0)>=(I|0))break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];i=+h[K+(b<<6)+32>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;k=+h[K+(b<<6)+56>>3];hA(o,+E(+i)*j+m,+F(+i)*j+l);if(L|0)iA(m,l,j,1,i,k,f,o);b=b+1|0}n=(g|0)==1;k=i+3.141592653589793;if(n)jA(o,m,l,j,i,k);else{hA(o,+E(+k)*j+m,+F(+k)*j+l);i=k}b=I+-2|0;k=m;while(1){if((b|0)<=-1)break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;i=+h[K+(b<<6)+32>>3]+3.141592653589793;k=+h[K+(b<<6)+56>>3]+3.141592653589793;hA(o,+E(+k)*j+m,+F(+k)*j+l);if(L|0)iA(m,l,j,0,i,k,f,o);b=b+-1|0;k=m}if(n)jA(o,k,l,j,i,i+3.141592653589793);kA(J);return o|0}function eA(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;q=l;l=l+144|0;i=q+128|0;h=q+112|0;j=q+96|0;k=q+64|0;m=q;n=q+80|0;o=lA()|0;p=c[a+4>>2]|0;f=c[a>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];mA(o,i,0.0);g=m+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];d=0;b=0.0;a:while(1){e=d+3|0;if((e|0)>=(p|0))break;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];a=1;while(1){if((a|0)==4)break;r=m+(a<<4)|0;s=f+(a+d<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];a=a+1|0}c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];a=1;while(1){if((a|0)==21){d=e;continue a}PA(n,m,3,+(a|0)*.05,0,0);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];t=+nA(h,i)+b;c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];mA(o,i,t);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];a=a+1|0;b=t}}oA(o);l=q;return o|0}function fA(a,b){a=+a;b=+b;var c=0.0;c=a-+A(+(a/b))*b;return +(!(a<0.0)&!(a>=b)?a:c)}function gA(a,b){a=+a;b=+b;if(!(a==0.0&b==0.0)){a=+K(+a,+b);if(!(a>=0.0))a=a+6.283185307179586}else a=0.0;return +a}function hA(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=c[a>>2]|0;f=a+4|0;if((e|0)<(c[f>>2]|0))f=c[a+8>>2]|0;else{c[f>>2]=2e3;e=a+8|0;f=yw(c[e>>2]|0,32e3)|0;c[e>>2]=f;e=c[a>>2]|0}c[a>>2]=e+1;h[f+(e<<4)>>3]=b;h[f+(e<<4)+8>>3]=d;return}function iA(a,b,c,d,e,f,g,h){a=+a;b=+b;c=+c;d=d|0;e=+e;f=+f;g=g|0;h=h|0;var i=0.0;d=(d|0)==0;i=d?e:f;do if((g|0)==1){e=(d?f:e)-i;e=!(e<=1.7453292519943296e-03)?e:e+6.283185307179586;if(e<3.141592653589793){jA(h,a,b,c,e+i,i);break}else{hA(h,+E(+i)*c+a,+F(+i)*c+a);break}}else hA(h,+E(+i)*c+a,+F(+i)*c+a);while(0);return}function jA(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0.0;hA(a,+E(+e)*d+b,+F(+e)*d+c);a:do if(!(d==0.0)){while(1){if(!(f>e))break;f=f+-6.283185307179586}f=e-f;while(1){if(!(f>6.283185307179586))break;f=f+-6.283185307179586}f=f*.05263157894736842;g=1;while(1){if((g|0)==20)break a;h=e-f*+(g|0);hA(a,+E(+h)*d+b,+F(+h)*d+c);g=g+1|0}}while(0);return}function kA(a){a=a|0;_I(c[a>>2]|0);_I(a);return}function lA(){var a=0;a=vw(12)|0;c[a+4>>2]=0;c[a+8>>2]=2e3;c[a>>2]=vw(128e3)|0;return a|0}function mA(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=a+4|0;e=c[i>>2]|0;f=a+8|0;g=c[f>>2]|0;if((e|0)<(g|0))a=c[a>>2]|0;else{c[f>>2]=g<<1;e=yw(c[a>>2]|0,g<<7)|0;c[a>>2]=e;a=e;e=c[i>>2]|0}h[a+(e<<6)>>3]=+h[b>>3];h[a+(e<<6)+8>>3]=+h[b+8>>3];c[i>>2]=e+1;h[a+(e<<6)+16>>3]=d;return}function nA(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function oA(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[a+8>>2]|0)>(b|0))c[a>>2]=yw(c[a>>2]|0,b<<6)|0;return}function pA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;g=k+12|0;c[g>>2]=0;h=c[d+4>>2]|0;if(!h)ma(91702,91713,203,91724);e=c[h>>2]|0;if(!e)ma(91738,91713,206,91724);f=h+8|0;if(!(c[f>>2]|0))c[f>>2]=qA(e)|0;if(!0)e=0;else{e=(Dv(c[h>>2]|0)|0)==0;e=e?0:g}if(!((vE(b,d,e)|0)<<24>>24))rA(d,e);do if(e|0){f=c[g>>2]|0;b=c[13918]|0;e=c[h>>2]|0;if(!f){c[j>>2]=e;zL(b,91781,j)|0;break}else{c[i>>2]=e;c[i+4>>2]=f;zL(b,91749,i)|0;break}}while(0);j=d+32|0;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=k;return}function qA(a){a=a|0;var b=0;b=c[42345]|0;if((b|0)!=0?(iK(b,a)|0)==0:0)a=c[42354]|0;else{_I(b);c[42345]=GL(a)|0;a=vM(169380,21352,35,36,29)|0;c[42354]=a}return a|0}function rA(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0.0;j=c[b+4>>2]|0;e=c[j>>2]|0;i=+h[j+16>>3];j=b+32|0;h[j>>3]=0.0;h[b+40>>3]=i*1.2;h[b+16>>3]=0.0;h[b+24>>3]=i*.1;c[b+8>>2]=0;c[b+12>>2]=0;if(pK(e,91815,4)|0)if((pK(e,91820,5)|0)!=0?(pK(e,91826,9)|0)!=0:0){g=4184;e=91836}else{g=8280;e=91872}else{g=6232;e=91853}if(d|0)c[d>>2]=e;e=c[b>>2]|0;if(e|0){f=0.0;while(1){b=a[e>>0]|0;if(!(b<<24>>24))break;k=f+ +h[g+((b&255)<<3)>>3];h[j>>3]=k;e=e+1|0;f=k}h[j>>3]=f*i}return}function sA(a,b){a=a|0;b=b|0;return iK(c[a>>2]|0,c[b>>2]|0)|0}function tA(a){a=a|0;var b=0;b=a+108|0;c[b>>2]=0;c[a+112>>2]=32;c[a+116>>2]=-1;c[a+120>>2]=14;c[a+124>>2]=58;c[a+128>>2]=20;c[a+132>>2]=0;c[a+136>>2]=0;c[a+140>>2]=0;b=Ql(b,c[4345]|0)|0;c[a+144>>2]=b;return b|0}function uA(a,b,d){a=a|0;b=b|0;d=d|0;d=$I(1,32)|0;a=c[b>>2]|0;if(a|0)c[d>>2]=GL(a)|0;a=c[b+4>>2]|0;if(a|0)c[d+4>>2]=GL(a)|0;c[d+24>>2]=c[b+24>>2]&127;h[d+16>>3]=+h[b+16>>3];c[d+8>>2]=c[b+8>>2];return d|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;_I(c[b>>2]|0);_I(c[b+4>>2]|0);_I(b);return}function wA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;a=c[b>>2]|0;e=c[d>>2]|0;i=(e|0)==0;if(!a)if(i)j=5;else a=-1;else if(!i){a=xJ(a,e)|0;if(!a)j=5}else a=1;do if((j|0)==5){a=c[b+4>>2]|0;e=c[d+4>>2]|0;i=(e|0)==0;if(!a){if(!i){a=-1;break}}else{if(i){a=1;break}a=xJ(a,e)|0;if(a|0)break}a=(c[b+24>>2]&127)-(c[d+24>>2]&127)|0;if(!a){g=+h[b+16>>3];f=+h[d+16>>3];if(g<f)a=-1;else a=g>f&1}}while(0);return a|0}function xA(){Wa(169420)|0;return}function yA(){var a=0,b=0;b=l;l=l+16|0;a=b;Wa(a|0)|0;l=b;return +(+((c[a+4>>2]|0)+(c[a>>2]|0)-(c[42355]|0)-(c[42356]|0)|0)*.016666666666666666)}function zA(a){a=a|0;var b=0,d=0;b=vw(16)|0;a=(a|0)>2?a:2;d=vw(a<<2)|0;c[b>>2]=d;c[b+12>>2]=d;c[b+8>>2]=d;c[b+4>>2]=d+(a<<2);return b|0}function AA(a){a=a|0;_I(c[a>>2]|0);_I(a);return}function BA(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;c[d>>2]=e+4;c[e>>2]=b;if((c[d>>2]|0)>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2];return}function CA(a){a=a|0;var b=0,d=0,e=0;d=a+8|0;b=c[d>>2]|0;if((b|0)!=(c[a+12>>2]|0)){e=b+4|0;c[d>>2]=e;b=c[b>>2]|0;if(e>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2]}else b=0;return b|0}function DA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;if(((d|0)!=0?(h=Jm(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){d=BL(h,g,10)|0;e=(h|0)==(c[g>>2]|0)?e:(d|0)<(f|0)?f:d}l=i;return e|0}function EA(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;g=i;if(((b|0)!=0&(d|0)!=0?(h=Jm(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){j=+tM(h,g);e=(h|0)==(c[g>>2]|0)?e:j<f?f:j}l=i;return +e}function FA(a,b,c){a=a|0;b=b|0;c=c|0;if((a|0)!=0&(b|0)!=0)c=Jm(a,b)|0;return c|0}function GA(b,c,d){b=b|0;c=c|0;d=d|0;b=FA(b,c,d)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)d=b;return d|0}function HA(a,b,c){a=a|0;b=b|0;c=c|0;if(!b)a=c&255;else a=IA(Jm(a,b)|0)|0;return a|0}function IA(a){a=a|0;return JA(a,0)|0}function JA(b,c){b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=a[b>>0]|0,d<<24>>24!=0):0)if((iK(b,122100)|0)!=0?(iK(b,92682)|0)!=0:0)if((iK(b,92685)|0)!=0?(iK(b,92690)|0)!=0:0){if(((d<<24>>24)+-48|0)>>>0<10)c=(rM(b)|0)&255}else c=1;else c=0;return c|0}function KA(a){a=a|0;var b=0,d=0;while(1){b=(c[a+16>>2]|0)+220|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[(c[d+16>>2]|0)+220>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function LA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=(b|0)){d=c[a+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=a;c[d+216>>2]=1}else a=KA(a)|0;d=c[b+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=b;c[d+216>>2]=1}else{d=KA(b)|0;b=d;d=c[d+16>>2]|0}g=a+16|0;e=c[g>>2]|0;f=b+16|0;h=(c[e+120>>2]|0)>(c[d+120>>2]|0);a=h?b:a;c[(h?e:d)+220>>2]=a;e=(c[(h?f:g)>>2]|0)+216|0;c[e>>2]=(c[e>>2]|0)+(c[(c[(h?g:f)>>2]|0)+216>>2]|0)}return a|0}function MA(b){b=b|0;b=c[b+16>>2]|0;c[b+216>>2]=1;c[b+220>>2]=0;a[b+159>>0]=0;return}function NA(a,b){a=a|0;b=b|0;if((KA(a)|0)==(a|0)){a=c[a+16>>2]|0;c[a+220>>2]=b;b=(c[b+16>>2]|0)+216|0;c[b>>2]=(c[b>>2]|0)+(c[a+216>>2]|0);return}else ma(92702,92694,194,92718)}function OA(a,b){a=a|0;b=b|0;var d=0.0;b=c[(c[b+16>>2]|0)+132>>2]|0;d=+h[b+8>>3]*72.0;h[a>>3]=+h[b>>3]*72.0;h[a+8>>3]=d;return}function PA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;o=l;l=l+576|0;n=o;i=0;while(1){if((i|0)>(d|0))break;k=n+(i<<4)|0;j=b+(i<<4)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];i=i+1|0}m=1.0-e;i=1;while(1){if((i|0)>(d|0))break;j=d-i|0;k=i+-1|0;b=0;while(1){if((b|0)>(j|0))break;p=b+1|0;h[n+(i*96|0)+(b<<4)>>3]=+h[n+(k*96|0)+(p<<4)>>3]*e+ +h[n+(k*96|0)+(b<<4)>>3]*m;h[n+(i*96|0)+(b<<4)+8>>3]=+h[n+(k*96|0)+(p<<4)+8>>3]*e+ +h[n+(k*96|0)+(b<<4)+8>>3]*m;b=p}i=i+1|0}a:do if(f|0){i=0;while(1){if((i|0)>(d|0))break a;p=f+(i<<4)|0;k=n+(i*96|0)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];c[p+12>>2]=c[k+12>>2];i=i+1|0}}while(0);b:do if(g|0){i=0;while(1){if((i|0)>(d|0))break b;p=g+(i<<4)|0;f=n+((d-i|0)*96|0)+(i<<4)|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];i=i+1|0}}while(0);p=n+(d*96|0)|0;c[a>>2]=c[p>>2];c[a+4>>2]=c[p+4>>2];c[a+8>>2]=c[p+8>>2];c[a+12>>2]=c[p+12>>2];l=o;return}function QA(b){b=b|0;var d=0,e=0,f=0,g=0;e=0;do{d=c[42359]|0;f=d+1024|0;if((d-e|0)<1024){c[42359]=f;f=yw(c[42360]|0,f)|0;c[42360]=f;d=c[42359]|0}else f=c[42360]|0;d=gL(f+e|0,d-e|0,b)|0;if(!d){g=6;break}e=(rJ(d)|0)+e|0;d=c[42360]|0}while((a[d+(e+-1)>>0]|0)!=10);if((g|0)==6)d=c[42360]|0;return ((e|0)>0?d:0)|0}function RA(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0)if(!0){d=c[42178]|0;e=c[42362]|0;if((c[42361]|0)==(d|0))d=e;else{if(e){_I(c[e>>2]|0);_I(c[42362]|0);c[42362]=0;d=c[42178]|0}c[42361]=d;if(!d)break;if(!(a[d>>0]|0))break;d=SA(d)|0;c[42362]=d}if(!((a[b>>0]|0)!=47&(d|0)!=0))break;b=TA(d,c[42363]|0,b)|0;break}else S();else b=0;while(0);l=f;return b|0}function SA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=0;f=0;g=0;b=GL(a)|0;d=0;while(1){b=DL(b,93017)|0;if(!b)break;a=(g<<2)+8|0;if(!f)a=ww(a)|0;else a=yw(d,a)|0;c[a+(g<<2)>>2]=b;f=rJ(b)|0;e=e>>>0>f>>>0?e:f;f=a;g=g+1|0;b=0;d=a}c[f+(g<<2)>>2]=0;c[42363]=e;return f|0}function TA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;h=c[42364]|0;c[42364]=aJ(h,b+2+(rJ(d)|0)|0)|0;while(1){b=c[a>>2]|0;if(!b){a=0;break}h=c[42364]|0;c[e>>2]=b;c[e+4>>2]=93015;c[e+8>>2]=d;pL(h,93008,e)|0;if(!($L(c[42364]|0,4)|0)){f=4;break}else a=a+4|0}if((f|0)==4)a=c[42364]|0;l=g;return a|0}function UA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=0;while(1){h=c[d+(f<<2)>>2]|0;if(!h)break;if((!g?(a[b>>0]|0)==(a[h>>0]|0):0)?(xJ(b,h)|0)==0:0)break;f=f+1|0}return c[e+(f<<2)>>2]|0}function VA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;z=l;l=l+80|0;x=z+16|0;y=z;u=c[b+4>>2]|0;v=c[b>>2]|0;w=d+8|0;f=0;e=-1;g=1.e+38;b=-1;while(1){if((f|0)>=(u|0))break;s=c[v+(f*48|0)>>2]|0;t=c[v+(f*48|0)+4>>2]|0;r=0;while(1){if((r|0)>=(t|0))break;q=+h[s+(r<<4)>>3]-+h[d>>3];p=+h[s+(r<<4)+8>>3]-+h[w>>3];q=p*p+q*q;A=(e|0)==-1|q<g;C=A?r:e;r=r+1|0;b=A?f:b;e=C;g=A?q:g}f=f+1|0}f=c[v+(b*48|0)>>2]|0;e=e+(((e|0)==((c[v+(b*48|0)+4>>2]|0)+-1|0))<<31>>31)|0;e=e-((e|0)%3|0)|0;b=0;while(1){if((b|0)==4)break;C=b+e|0;h[x+(b<<4)>>3]=+h[f+(C<<4)>>3];h[x+(b<<4)+8>>3]=+h[f+(C<<4)+8>>3];b=b+1|0}q=+h[d>>3];k=+h[x>>3]-q;o=+h[w>>3];p=+h[x+8>>3]-o;j=+h[x+48>>3]-q;n=+h[x+56>>3]-o;b=y+8|0;g=1.0;i=0.0;j=n*n+j*j;k=p*p+k*k;while(1){p=(g+i)*.5;PA(y,x,3,p,0,0);m=+h[y>>3];n=+h[b>>3];if(+B(+(k-j))<1.0)break;if(+B(+(g-i))<1.0e-05)break;C=k<j;m=m-q;n=n-o;n=n*n+m*m;g=C?p:g;i=C?i:p;j=C?n:j;k=C?k:n}h[a>>3]=m;h[a+8>>3]=n;l=z;return}function WA(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;d=+EA(b,c[42190]|0,.75,.01);g=b+16|0;h[(c[g>>2]|0)+32>>3]=d;d=+EA(b,c[42189]|0,.5,.02);h[(c[g>>2]|0)+40>>3]=d;l=Qy(GA(b,c[42191]|0,93019)|0,b)|0;c[(c[g>>2]|0)+8>>2]=l;l=Jm(b,c[42198]|0)|0;d=+EA(b,c[42194]|0,14.0,1.0);e=GA(b,c[42195]|0,93027)|0;f=GA(b,c[42196]|0,122106)|0;i=(cp(l)|0)!=0;k=(By(b)|0)==2;i=lw(b,l,(k?4:0)|(i?2:0),d,e,f)|0;c[(c[g>>2]|0)+104>>2]=i;i=c[42199]|0;if((i|0?(j=Jm(b,i)|0,j|0):0)?a[j>>0]|0:0){l=(cp(j)|0)!=0;l=lw(b,j,l?2:0,d,e,f)|0;c[(c[g>>2]|0)+108>>2]=l;l=(c[(ro(b)|0)+16>>2]|0)+113|0;a[l>>0]=a[l>>0]|16}k=(DA(b,c[42202]|0,0,0)|0)&255;l=c[g>>2]|0;a[l+144>>0]=k;gb[c[c[(c[l+8>>2]|0)+4>>2]>>2]&127](b);return}function XA(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+112|0;m=v+96|0;n=v+80|0;s=v+40|0;u=v;r=b+48|0;p=ro(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)|0;g=m+8|0;c[g>>2]=0;o=n+8|0;c[o>>2]=0;d=c[42226]|0;if(((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0){YA(b,m);t=(cp(e)|0)!=0;i=+h[m>>3];f=c[g>>2]|0;d=c[m+12>>2]|0;e=lw(b,e,t?2:0,i,f,d)|0;t=b+16|0;c[(c[t>>2]|0)+96>>2]=e;e=(c[p+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|1;e=IA(FA(b,c[42236]|0,122100)|0)|0;a[(c[t>>2]|0)+114>>0]=e;t=1;e=f}else{t=0;d=0;i=0.0;e=0}f=c[42227]|0;if((f|0?(j=Jm(b,f)|0,j|0):0)?a[j>>0]|0:0){if(!e){YA(b,m);i=+h[m>>3];e=c[g>>2]|0;d=c[m+12>>2]|0}g=(cp(j)|0)!=0;j=lw(b,j,g?2:0,i,e,d)|0;c[(c[b+16>>2]|0)+108>>2]=j;j=(c[p+16>>2]|0)+113|0;a[j>>0]=a[j>>0]|32}d=c[42241]|0;if(((d|0)!=0?(k=Jm(b,d)|0,(k|0)!=0):0)?(a[k>>0]|0)!=0:0){ZA(b,m,n);j=(cp(k)|0)!=0;i=+h[n>>3];d=c[o>>2]|0;e=c[n+12>>2]|0;k=lw(b,k,j?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+100>>2]=k;k=(c[p+16>>2]|0)+113|0;a[k>>0]=a[k>>0]|2}else{e=0;i=0.0;d=0}f=c[42242]|0;if((f|0?(q=Jm(b,f)|0,q|0):0)?a[q>>0]|0:0){if(!d){ZA(b,m,n);e=c[n+12>>2]|0;i=+h[n>>3];d=c[o>>2]|0}o=(cp(q)|0)!=0;q=lw(b,q,o?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+104>>2]=q;q=(c[p+16>>2]|0)+113|0;a[q>>0]=a[q>>0]|4}d=Im(b,96242)|0;d=d|0?d:174181;if(a[d>>0]|0)a[(c[(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)+16>>2]|0)+145>>0]=1;g=b+16|0;f=(c[g>>2]|0)+16|0;e=c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0;_A(s,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=s;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if(($A(b,c[42248]|0)|0)<<24>>24)a[(c[g>>2]|0)+46>>0]=0;d=Im(b,96251)|0;d=d|0?d:174181;if(!(a[d>>0]|0))e=b+-48|0;else{e=b+-48|0;a[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+145>>0]=1}f=(c[g>>2]|0)+56|0;e=c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0;_A(u,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=u;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if(($A(b,c[42249]|0)|0)<<24>>24)a[(c[g>>2]|0)+86>>0]=0;l=v;return t|0}function YA(a,b){a=a|0;b=b|0;h[b>>3]=+EA(a,c[42223]|0,14.0,1.0);c[b+8>>2]=GA(a,c[42224]|0,93027)|0;c[b+12>>2]=GA(a,c[42225]|0,122106)|0;return}function ZA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+8|0;if(!(c[e>>2]|0))YA(a,b);h[d>>3]=+EA(a,c[42243]|0,+h[b>>3],1.0);c[d+8>>2]=GA(a,c[42244]|0,c[e>>2]|0)|0;c[d+12>>2]=GA(a,c[42245]|0,c[b+12>>2]|0)|0;return}function _A(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+128|0;k=m+80|0;h=m+40|0;g=m;if((f|0)!=0?(j=WJ(f,58)|0,(j|0)!=0):0){a[j>>0]=0;i=j+1|0;kb[d&31](h,e,f,i);e=k;g=h;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));a[j>>0]=58;f=i}else{kb[d&31](g,e,f,0);e=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0))}e=b;g=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[b+36>>2]=f;l=m;return}function $A(b,c){b=b|0;c=c|0;var d=0;if(((c|0)!=0?(d=Jm(b,c)|0,(d|0)!=0):0)?(a[d>>0]|0)!=0:0)b=(IA(d)|0)<<24>>24==0&1;else b=0;return b|0}function aB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;k=l;l=l+32|0;i=k;j=c[b+8>>2]|0;d=c[b+4>>2]|0;d=(c[b+44>>2]|0)+((O((d|0)>1?d+-1|0:0,j)|0)<<4)|0;e=i+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];f=i+8|0;g=i+24|0;b=1;while(1){if((b|0)>=(j|0))break;m=d+(b<<4)|0;o=+h[m>>3];h[i>>3]=+h[(+h[i>>3]<o?i:m)>>3];n=+h[m+8>>3];h[f>>3]=+h[(+h[f>>3]<n?i:m)+8>>3];h[e>>3]=+h[(+h[e>>3]>o?e:m)>>3];h[g>>3]=+h[(+h[g>>3]>n?e:m)+8>>3];b=b+1|0}c[a>>2]=c[i>>2];c[a+4>>2]=c[i+4>>2];c[a+8>>2]=c[i+8>>2];c[a+12>>2]=c[i+12>>2];c[a+16>>2]=c[i+16>>2];c[a+20>>2]=c[i+20>>2];c[a+24>>2]=c[i+24>>2];c[a+28>>2]=c[i+28>>2];l=k;return}function bB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+64|0;g=d+32|0;e=d;f=c[a+16>>2]|0;a=f+16|0;f=c[f+116>>2]&1;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];cB(e,g,b,f);c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];c[a+24>>2]=c[e+24>>2];c[a+28>>2]=c[e+28>>2];l=d;return}function cB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;g=+h[d+56>>3];l=+h[d+64>>3];j=e<<24>>24==0;k=+h[d+24>>3];i=+h[d+32>>3];m=(j?k:i)*.5;f=g-m;g=m+g;if(f<+h[b>>3])h[b>>3]=f;e=b+16|0;if(g>+h[e>>3])h[e>>3]=g;g=(j?i:k)*.5;f=l-g;g=g+l;e=b+8|0;if(f<+h[e>>3])h[e>>3]=f;e=b+24|0;if(g>+h[e>>3])h[e>>3]=g;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function dB(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0;L=l;l=l+448|0;H=L+416|0;t=L+384|0;u=L+304|0;K=L+256|0;G=L+192|0;B=L+144|0;C=L+96|0;d=L+400|0;e=L+368|0;f=L+352|0;g=L+336|0;v=L+288|0;w=L+224|0;x=L+160|0;y=L+112|0;z=L+64|0;A=L+32|0;I=L;J=b+16|0;if((mn(b)|0)==0?(c[(c[J>>2]|0)+180>>2]|0)==0:0){eB(d,0.0,0.0);c[K>>2]=c[d>>2];c[K+4>>2]=c[d+4>>2];c[K+8>>2]=c[d+8>>2];c[K+12>>2]=c[d+12>>2];K=K+16|0;eB(e,0.0,0.0);c[K>>2]=c[e>>2];c[K+4>>2]=c[e+4>>2];c[K+8>>2]=c[e+8>>2];c[K+12>>2]=c[e+12>>2]}else{eB(f,2147483647.0,2147483647.0);c[K>>2]=c[f>>2];c[K+4>>2]=c[f+4>>2];c[K+8>>2]=c[f+8>>2];c[K+12>>2]=c[f+12>>2];F=K+16|0;eB(g,-2147483647.0,-2147483647.0);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];o=C+8|0;p=u+16|0;D=K+8|0;q=u+8|0;E=K+24|0;r=u+24|0;s=B+8|0;n=co(b)|0;while(1){if(!n)break;OA(B,n);d=n+16|0;m=c[d>>2]|0;h[C>>3]=(+h[m+96>>3]+ +h[m+88>>3])*.5;h[o>>3]=+h[m+80>>3]*.5;c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];fB(u,t,H);c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];gB(v,t,H);c[p>>2]=c[v>>2];c[p+4>>2]=c[v+4>>2];c[p+8>>2]=c[v+8>>2];c[p+12>>2]=c[v+12>>2];h[K>>3]=+h[(+h[K>>3]<+h[u>>3]?K:u)>>3];h[D>>3]=+h[(+h[D>>3]<+h[q>>3]?K:u)+8>>3];h[F>>3]=+h[(+h[F>>3]>+h[p>>3]?K:u)+16>>3];h[E>>3]=+h[(+h[E>>3]>+h[r>>3]?K:u)+24>>3];d=c[(c[d>>2]|0)+108>>2]|0;if(d|0?a[d+81>>0]|0:0){m=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(w,H,d,m);c[K>>2]=c[w>>2];c[K+4>>2]=c[w+4>>2];c[K+8>>2]=c[w+8>>2];c[K+12>>2]=c[w+12>>2];c[K+16>>2]=c[w+16>>2];c[K+20>>2]=c[w+20>>2];c[K+24>>2]=c[w+24>>2];c[K+28>>2]=c[w+28>>2]}m=Pm(b,n)|0;while(1){if(!m)break;k=m+16|0;d=c[k>>2]|0;j=d+8|0;e=c[j>>2]|0;if(e|0){i=0;while(1){if((i|0)<(c[e+4>>2]|0))g=0;else break;while(1){f=c[e>>2]|0;if((g|0)>=(c[f+(i*48|0)+4>>2]|0))break;e=(c[f+(i*48|0)>>2]|0)+(g<<4)|0;c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];N=+h[B>>3];h[K>>3]=+h[(+h[K>>3]<N?K:B)>>3];M=+h[s>>3];h[D>>3]=+h[(+h[D>>3]<M?K:B)+8>>3];h[F>>3]=+h[(+h[F>>3]>N?F:B)>>3];h[E>>3]=+h[(+h[E>>3]>M?F:B)+8>>3];g=g+1|0;e=c[j>>2]|0}i=i+1|0}e=c[d+96>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(x,H,e,d);c[K>>2]=c[x>>2];c[K+4>>2]=c[x+4>>2];c[K+8>>2]=c[x+8>>2];c[K+12>>2]=c[x+12>>2];c[K+16>>2]=c[x+16>>2];c[K+20>>2]=c[x+20>>2];c[K+24>>2]=c[x+24>>2];c[K+28>>2]=c[x+28>>2];d=c[k>>2]|0}e=c[d+100>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(y,H,e,d);c[K>>2]=c[y>>2];c[K+4>>2]=c[y+4>>2];c[K+8>>2]=c[y+8>>2];c[K+12>>2]=c[y+12>>2];c[K+16>>2]=c[y+16>>2];c[K+20>>2]=c[y+20>>2];c[K+24>>2]=c[y+24>>2];c[K+28>>2]=c[y+28>>2];d=c[k>>2]|0}e=c[d+104>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(z,H,e,d);c[K>>2]=c[z>>2];c[K+4>>2]=c[z+4>>2];c[K+8>>2]=c[z+8>>2];c[K+12>>2]=c[z+12>>2];c[K+16>>2]=c[z+16>>2];c[K+20>>2]=c[z+20>>2];c[K+24>>2]=c[z+24>>2];c[K+28>>2]=c[z+28>>2];d=c[k>>2]|0}d=c[d+108>>2]|0;if(d|0?a[d+81>>0]|0:0){k=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(A,H,d,k);c[K>>2]=c[A>>2];c[K+4>>2]=c[A+4>>2];c[K+8>>2]=c[A+8>>2];c[K+12>>2]=c[A+12>>2];c[K+16>>2]=c[A+16>>2];c[K+20>>2]=c[A+20>>2];c[K+24>>2]=c[A+24>>2];c[K+28>>2]=c[A+28>>2]}}m=Rm(b,m)|0}n=eo(b,n)|0}d=c[J>>2]|0;f=c[d+180>>2]|0;g=d+184|0;i=G+8|0;j=G+16|0;k=G+24|0;e=1;while(1){if((e|0)>(f|0))break;P=+h[(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+16>>3];h[G>>3]=P;C=c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0;O=+h[C+24>>3];h[i>>3]=O;M=+h[C+32>>3];h[j>>3]=M;N=+h[C+40>>3];h[k>>3]=N;h[K>>3]=+h[(+h[K>>3]<P?K:G)>>3];h[D>>3]=+h[(+h[D>>3]<O?K:G)+8>>3];h[F>>3]=+h[(+h[F>>3]>M?K:G)+16>>3];h[E>>3]=+h[(+h[E>>3]>N?K:G)+24>>3];e=e+1|0}e=c[d+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[d+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(I,H,e,d);c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[K+16>>2]=c[I+16>>2];c[K+20>>2]=c[I+20>>2];c[K+24>>2]=c[I+24>>2];c[K+28>>2]=c[I+28>>2];d=c[J>>2]|0}J=d+16|0;c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];c[J+16>>2]=c[K+16>>2];c[J+20>>2]=c[K+20>>2];c[J+24>>2]=c[K+24>>2];c[J+28>>2]=c[K+28>>2]}l=L;return}function eB(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function fB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function gB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function hB(a){a=a|0;if((c[a+60>>2]|0)==(a|0))a=1;else a=(pK(Dn(a)|0,93039,7)|0)==0&1;return a|0}function iB(a){a=a|0;var b=0;b=Ql(22612,c[4345]|0)|0;lB(a,b);return b|0}function jB(a,b){a=a|0;b=b|0;a=bb[c[a>>2]&31](a,b,512)|0;if(!a)a=0;else a=c[a+12>>2]|0;return a|0}function kB(a,b,c){a=a|0;b=b|0;c=c|0;c=an(ro(b)|0,b,c,0,1)|0;No(c,122254,176,1)|0;Mm(a,c)|0;return c|0}function lB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;f=a+16|0;e=1;while(1){a=c[f>>2]|0;if((e|0)>(c[a+180>>2]|0))break;a=c[(c[a+184>>2]|0)+(e<<2)>>2]|0;d=Dn(a)|0;if(!(bb[c[b>>2]&31](b,d,512)|0)){i=vw(16)|0;c[i+8>>2]=d;c[i+12>>2]=a;bb[c[b>>2]&31](b,i,1)|0}else{c[g>>2]=d;_l(0,93062,g)|0}lB(a,b);e=e+1|0}l=h;return}function mB(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function nB(a){a=a|0;var b=0,c=0,d=0;d=Ip(a,93047,1)|0;No(d,122277,280,1)|0;b=co(a)|0;while(1){if(!b)break;c=Pm(a,b)|0;while(1){if(!c)break;oB(c,d);c=Rm(a,c)|0}b=eo(a,b)|0}b=co(d)|0;while(1){if(!b)break;c=eo(d,b)|0;pB(b);qo(a,b)|0;b=c}ln(d)|0;return}function oB(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b>>2]&3;f=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;if(!((a[(c[f+16>>2]|0)+118>>0]|0)==0?!(a[(c[e+16>>2]|0)+118>>0]|0):0)){f=qB(f,d)|0;e=kB(b,f,qB(e,d)|0)|0;f=c[b+16>>2]|0;d=f+8|0;e=c[e+16>>2]|0;c[e+8>>2]=c[d>>2];c[d>>2]=0;d=f+96|0;c[e+96>>2]=c[d>>2];c[d>>2]=0;d=f+108|0;c[e+108>>2]=c[d>>2];c[d>>2]=0;d=f+100|0;c[e+100>>2]=c[d>>2];c[d>>2]=0;f=f+104|0;c[e+104>>2]=c[f>>2];c[f>>2]=0;rB(b)}return}function pB(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+132>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+8>>2]|0;if(d){gb[c[(c[d+4>>2]|0)+4>>2]&127](a);b=c[e>>2]|0}ow(c[b+104>>2]|0);ow(c[(c[e>>2]|0)+108>>2]|0);Po(a,122241)|0;return}function qB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=ro(b)|0;a:do if(a[(c[b+16>>2]|0)+118>>0]|0){io(d,b,1)|0;b=WJ(Dn(b)|0,58)|0;if(!b)ma(96030,92694,1225,93114);d=b+1|0;b=no(f,d,0)|0;if(!b){b=no(f,d,1)|0;No(b,122241,304,1)|0;d=Dm(f,1,0)|0;while(1){if(!d)break a;g=Jm(b,d)|0;e=c[d+12>>2]|0;if((g|0)!=(e|0))Cm(b,d,e)|0;d=Dm(f,1,d)|0}}}while(0);return b|0}function rB(a){a=a|0;var b=0;b=a+16|0;_I(c[(c[b>>2]|0)+144>>2]|0);sB(a);ow(c[(c[b>>2]|0)+96>>2]|0);ow(c[(c[b>>2]|0)+108>>2]|0);ow(c[(c[b>>2]|0)+100>>2]|0);ow(c[(c[b>>2]|0)+104>>2]|0);Po(a,122254)|0;return}function sB(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;a=c[e>>2]|0;b=c[a+8>>2]|0;if(b){d=0;while(1){a=c[b>>2]|0;if((d|0)>=(c[b+4>>2]|0))break;_I(c[a+(d*48|0)>>2]|0);d=d+1|0;b=c[(c[e>>2]|0)+8>>2]|0}_I(a);_I(c[(c[e>>2]|0)+8>>2]|0);a=c[e>>2]|0}c[a+8>>2]=0;return}function tB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=ym(a,b,c,0)|0;if(!e)e=ym(a,b,c,d)|0;return e|0}function uB(a,b){a=a|0;b=b|0;return xJ(c[a>>2]|0,c[b>>2]|0)|0}function vB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+1072|0;k=q+8|0;j=q;i=q+16|0;o=q+24|0;c[i>>2]=b;if((c[42365]|0)!=(d|0)){c[42365]=d;a[174080]=0}cm(o,1024,q+40|0);p=o+4|0;n=o+8|0;while(1){f=b+1|0;c[i>>2]=f;e=a[b>>0]|0;if(!(e<<24>>24))break;do if((e&255)<192)if(e<<24>>24==38){f=xB(i)|0;if(!f)e=38;else{if(f>>>0<127){e=f&255;break}b=c[p>>2]|0;e=b>>>0>=(c[n>>2]|0)>>>0;if(f>>>0<2047){if(e){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6|192;e=(f&63|128)&255;break}if(e){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>12|224;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6&63|128;e=(f&63|128)&255}}else{h=0;m=9}else if((e&255)>=224)if((e&255)>=240)if((e&255)<248){h=3;m=9}else{if(!(a[174080]|0)){c[j>>2]=Dn(d)|0;_l(0,94529,j)|0;a[174080]=1}h=-1;e=wB(e,o)|0;m=9}else{h=2;m=9}else{h=1;m=9}while(0);do if((m|0)==9){m=0;g=0;while(1){if((g|0)>=(h|0)){m=34;break}if((a[f>>0]&-64)<<24>>24!=-128)break;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;g=g+1|0;e=a[f>>0]|0;f=f+1|0}if((m|0)==34){m=0;c[i>>2]=f;break}c[i>>2]=f;if(!(a[174080]|0)){g=Dn(d)|0;c[k>>2]=h+1;c[k+4>>2]=g;_l(0,94650,k)|0;a[174080]=1}e=wB(e,o)|0}while(0);b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;b=c[i>>2]|0}b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}a[b>>0]=0;n=c[o>>2]|0;c[p>>2]=n;p=GL(n)|0;gm(o);l=q;return p|0}function wB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+16|0;g=j;a[g>>0]=b;a[g+1>>0]=0;g=yB(g)|0;h=d+4|0;i=d+8|0;e=rJ(g)|0;f=g;while(1){if((e|0)<=1)break;b=c[h>>2]|0;if(b>>>0>=(c[i>>2]|0)>>>0){dm(d,1)|0;b=c[h>>2]|0}k=a[f>>0]|0;c[h>>2]=b+1;a[b>>0]=k;e=e+-1|0;f=f+1|0}k=a[f>>0]|0;_I(g);l=j;return k|0}function xB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;d=i+8|0;e=c[b>>2]|0;a:do if((a[e>>0]|0)!=35){c[h>>2]=d;g=0;b:while(1){if((g|0)>=8){d=0;break a}f=a[e+g>>0]|0;switch(f<<24>>24){case 0:{d=0;break a}case 59:break b;default:{}}a[d>>0]=f;d=d+1|0;g=g+1|0}a[d>>0]=0;d=vM(h,22648,252,8,30)|0;if(!d)d=0;else{e=e+(g+1)|0;d=c[d+4>>2]|0}}else{h=a[e+1>>0]|0;d=h&255;c:do if((h|32)<<24>>24==120){h=0;g=2;while(1){if((g|0)>=8){f=h;break c}f=a[e+g>>0]|0;d=f&255;if((f+-65&255)>=6)if((f+-97&255)>=6)if((f+-48&255)<10)f=-48;else{f=h;break c}else f=-87;else f=-55;d=f+d|0;h=d+(h<<4)|0;g=g+1|0}}else{f=0;g=1;while(1){if((g|0)>=8)break c;h=a[e+g>>0]|0;d=h&255;if((h+-48&255)>=10)break c;f=(f*10|0)+-48+d|0;g=g+1|0}}while(0);d=(d|0)==59;e=d?e+(g+1)|0:e;d=d?f:0}while(0);c[b>>2]=e;l=i;return d|0}function yB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1056|0;g=k;i=k+8|0;c[g>>2]=b;cm(i,1024,k+24|0);j=i+4|0;h=i+8|0;while(1){c[g>>2]=b+1;d=a[b>>0]|0;if(!(d<<24>>24))break;b=d&255;if(d<<24>>24==38){b=xB(g)|0;if(!b){b=38;f=6}else f=5}else f=5;do if((f|0)==5){f=0;if(b>>>0<127)f=6;else{d=c[j>>2]|0;e=d>>>0>=(c[h>>2]|0)>>>0;if(b>>>0<2047){if(e){dm(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6|192;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;d=c[j>>2]|0}b=b&63|128;break}if(e){dm(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>12|224;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6&63|128;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;d=c[j>>2]|0}b=b&63|128}}while(0);if((f|0)==6){d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;d=c[j>>2]|0}}c[j>>2]=d+1;a[d>>0]=b;b=c[g>>2]|0}b=c[j>>2]|0;if(b>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;b=c[j>>2]|0}a[b>>0]=0;h=c[i>>2]|0;c[j>>2]=h;j=GL(h)|0;gm(i);l=k;return j|0}function zB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+1040|0;g=i;cm(g,1024,i+16|0);h=g+4|0;f=g+8|0;while(1){d=b+1|0;e=a[b>>0]|0;if(!(e<<24>>24))break;if((e&255)<127){b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){dm(g,1)|0;b=c[h>>2]|0}c[h>>2]=b+1;a[b>>0]=e;b=d;continue}else{e=a[d>>0]&63|e<<6&255;d=c[h>>2]|0;if(d>>>0>=(c[f>>2]|0)>>>0){dm(g,1)|0;d=c[h>>2]|0}c[h>>2]=d+1;a[d>>0]=e;b=b+2|0;continue}}b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){dm(g,1)|0;b=c[h>>2]|0}a[b>>0]=0;f=c[g>>2]|0;c[h>>2]=f;h=GL(f)|0;gm(g);l=i;return h|0}function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;e=n+48|0;d=n+32|0;f=n+64|0;g=n+16|0;i=n;j=b+16|0;k=a+16|0;m=c[k>>2]|0;if(((+h[j>>3]>=+h[m+48>>3]?+h[m+64>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=+h[m+56>>3]:0)?+h[m+72>>3]>=+h[b+8>>3]:0){m=m+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];BB(g,d,e);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];fB(i,d,e);c[f>>2]=a;c[f+4>>2]=0;d=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];d=ab[d&63](f,e)|0}else d=0;l=n;return d|0}function BB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function CB(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;e=l;l=l+80|0;j=e+64|0;k=e+48|0;m=e;n=e+32|0;g=e+16|0;h[m>>3]=+h[a+24>>3]*.5;h[m+8>>3]=+h[a+32>>3]*.5;a=a+56|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];fB(n,k,j);i=+h[n>>3];f=+h[n+8>>3];c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];gB(g,k,j);d=+h[g+8>>3];if((+h[b+16>>3]>=i?+h[g>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=f:0)a=d>=+h[b+8>>3]&1;else a=0;l=e;return a|0}function DB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;k=n+48|0;j=n;h=a+16|0;a=c[h>>2]|0;i=c[a+8>>2]|0;a:do if((i|0)!=0?(g=i+8|0,c[j>>2]=c[g>>2],c[j+4>>2]=c[g+4>>2],c[j+8>>2]=c[g+8>>2],c[j+12>>2]=c[g+12>>2],c[j+16>>2]=c[g+16>>2],c[j+20>>2]=c[g+20>>2],c[j+24>>2]=c[g+24>>2],c[j+28>>2]=c[g+28>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(EB(j,k)|0)!=0):0){d=i+4|0;a=0;while(1){if((a|0)>=(c[d>>2]|0))break;e=j;f=(c[i>>2]|0)+(a*48|0)|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if(!((FB(j,k)|0)<<24>>24))a=a+1|0;else{a=1;break a}}a=c[h>>2]|0;m=7}else m=7;while(0);do if((m|0)==7){a=c[a+96>>2]|0;if(a|0?(c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(CB(a,k)|0)<<24>>24):0){a=1;break}a=0}while(0);l=n;return a|0}
function si(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;i=vw((b[(c[h>>2]|0)+238>>1]<<2)+8|0)|0;g=co(a)|0;while(1){if(!g)break;f=i+(c[(c[g+16>>2]|0)+232>>2]<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=Pm(a,g)|0;while(1){if(!f)break;j=c[f>>2]&3;d=c[(c[(c[((j|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;j=c[(c[(c[((j|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;k=(d|0)>(j|0);e=k?d:j;d=k?j:d;while(1){d=d+1|0;if((d|0)>=(e|0))break;k=i+(d<<2)|0;c[k>>2]=(c[k>>2]|0)+1}f=Rm(a,f)|0}g=eo(a,g)|0}f=vw((b[(c[h>>2]|0)+238>>1]<<6)+128|0)|0;e=c[h>>2]|0;c[e+196>>2]=f;d=b[e+236>>1]|0;while(1){if((d|0)>(b[e+238>>1]|0))break;j=i+(d<<2)|0;e=c[j>>2]|0;c[f+(d<<6)>>2]=e;c[f+(d<<6)+8>>2]=e;j=vw((c[j>>2]<<2)+4|0)|0;e=c[h>>2]|0;k=c[e+196>>2]|0;c[k+(d<<6)+4>>2]=j;c[k+(d<<6)+12>>2]=j;d=d+1|0;f=k}_I(i);return}function ti(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;i=1;while(1){g=c[m>>2]|0;if((i|0)>(c[g+180>>2]|0))break;l=ti(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,d,e,f)|0;i=i+1|0;f=l}a:do if((Vf(a)|0)!=(a|0)){VN(d|0,0,e<<2|0)|0;g=co(a)|0;while(1){if(!g)break;k=g+16|0;c[d+(c[(c[k>>2]|0)+232>>2]<<2)>>2]=1;i=Pm(a,g)|0;while(1){if(!i)break;l=i+-48|0;j=c[(c[k>>2]|0)+232>>2]|0;while(1){e=j+1|0;if((j|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:l)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;c[d+(e<<2)>>2]=1;j=e}i=Rm(a,i)|0}g=eo(a,g)|0}g=c[m>>2]|0;i=b[g+236>>1]|0;while(1){if((i|0)>(b[g+238>>1]|0))break a;if(!(c[d+(i<<2)>>2]|0)){if(!f)f=Ip(Vf(a)|0,79522,1)|0;g=no(f,0,1)|0;No(g,122241,304,1)|0;l=g+16|0;j=c[l>>2]|0;c[j+232>>2]=i;h[j+96>>3]=.5;h[j+88>>3]=.5;h[j+80>>3]=1.0;c[j+216>>2]=1;c[j+176>>2]=0;j=vw(20)|0;k=c[l>>2]|0;c[k+172>>2]=j;c[k+184>>2]=0;k=vw(20)|0;c[(c[l>>2]|0)+180>>2]=k;io(a,g,1)|0;g=c[m>>2]|0}i=i+1|0}}while(0);return f|0}function ui(a){a=a|0;var b=0,d=0;Kh(a);b=a+16|0;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;ui(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function vi(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=wi(c[((b|0)==3?a:a+48|0)+40>>2]|0)|0;b=c[17236+(d*12|0)+((wi(c[((b|0)==2?a:a+-48|0)+40>>2]|0)|0)<<2)>>2]|0;a=(c[a+16>>2]|0)+156|0;c[a>>2]=O(c[a>>2]|0,b)|0;return}function wi(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)b=2;else b=(a[b+160>>0]|0)<2&1;return b|0}function xi(b,d){b=b|0;d=d|0;if(c[(c[b+16>>2]|0)+192>>2]|0){Yk(b);yi(b);if(a[174076]|0)kl(b);zi(b);if(Cl(b)|0)yi(b);Ai(b);if(gx(b,2,Bi(b)|0)|0?(Ci(b),gx(b,2,Bi(b)|0)|0):0)ma(79540,79568,134,79579);Di(b);Ei(b,d);Fi(b)}return}function yi(d){d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;v=d+16|0;e=c[v>>2]|0;w=c[e+196>>2]|0;t=b[e+236>>1]|0;while(1){if((t|0)>(b[e+238>>1]|0))break;n=w+(t<<6)|0;o=w+(t<<6)+4|0;p=w+(t<<6)+40|0;q=w+(t<<6)+24|0;r=w+(t<<6)+32|0;s=w+(t<<6)+16|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break;l=(c[(c[o>>2]|0)+(m<<2)>>2]|0)+16|0;e=c[l>>2]|0;j=+h[e+80>>3]*.5;i=c[e+204>>2]|0;a:do if(i){g=0;while(1){f=c[i+(g<<2)>>2]|0;if(!f)break a;x=c[f>>2]&3;if((c[((x|0)==3?f:f+48|0)+40>>2]|0)==(c[((x|0)==2?f:f+-48|0)+40>>2]|0)?(u=c[(c[f+16>>2]|0)+96>>2]|0,(u|0)!=0):0){k=+h[u+32>>3]*.5;j=j>k?j:k}g=g+1|0}}while(0);if(+h[p>>3]<j){h[q>>3]=j;h[p>>3]=j}if(+h[r>>3]<j){h[s>>3]=j;h[r>>3]=j}f=c[e+212>>2]|0;if(f|0){if((f|0)==(d|0))g=0;else{g=DA(f,c[42188]|0,8,0)|0;e=c[l>>2]|0}i=c[e+232>>2]|0;f=c[f+16>>2]|0;e=f+128|0;j=j+ +(g|0);if((i|0)==(b[f+236>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}e=f+120|0;if((i|0)==(b[f+238>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}}m=m+1|0}t=t+1|0;e=c[v>>2]|0}m=ej(d)|0;g=c[v>>2]|0;e=b[g+238>>1]|0;h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[w+(e<<6)+16>>3];f=b[g+236>>1]|0;i=g+252|0;k=0.0;while(1){l=e+-1|0;if((e|0)<=(f|0))break;y=+h[w+(l<<6)+32>>3]+ +h[w+(e<<6)+40>>3]+ +(c[i>>2]|0);j=+h[w+(e<<6)+24>>3]+8.0+ +h[w+(l<<6)+16>>3];j=y>j?y:j;if((c[w+(l<<6)>>2]|0)>0)h[(c[(c[c[w+(l<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+j;k=k>j?k:j;e=l}b:do if((m|0)!=0?(c[g+116>>2]&1|0)!=0:0){fj(d,0);g=c[v>>2]|0;if(a[g+276>>0]|0){e=b[g+238>>1]|0;f=b[g+236>>1]|0;j=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];k=0.0;while(1){i=e+-1|0;if((e|0)<=(f|0))break b;z=+h[(c[(c[c[w+(i<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];y=z-j;j=z;k=k>y?k:y;e=i}}}while(0);c:do if(a[g+276>>0]|0){i=b[g+236>>1]|0;f=b[g+238>>1]|0;while(1){e=f+-1|0;if((f|0)<=(i|0))break c;if((c[w+(e<<6)>>2]|0)<=0){f=e;continue}h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+k;f=e}}while(0);e=g+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;h[e+24>>3]=+h[(c[(c[c[w+(c[e+232>>2]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];e=e+164|0}return}function zi(a){a=a|0;var b=0,d=0,e=0;aj(a);b=(c[a+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+224>>2]|0;if(d){bj(a,d);b=c[e>>2]|0}d=c[b+228>>2]|0;if(!d)d=b;else{bj(a,d);d=c[e>>2]|0}e=c[d+204>>2]|0;if(e|0){b=0;while(1)if(!(c[e+(b<<2)>>2]|0))break;else b=b+1|0}b=d+164|0}return}function Ai(a){a=a|0;Oi(a);Pi(a);Qi(a);Ri(a);Si(a);return}function Bi(a){a=a|0;var b=0,c=0.0;b=Im(a,79768)|0;if(!b)a=2147483647;else{c=+sM(b);a=~~(c*+(mn(a)|0))}return a|0}function Ci(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+16|0;e=c[r>>2]|0;q=b[e+236>>1]|0;while(1){p=b[e+238>>1]|0;if((q|0)>(p|0)){s=19;break}n=c[e+196>>2]|0;o=n+(q<<6)|0;m=c[o>>2]|0;n=n+(q<<6)+4|0;l=0;f=0;a:while(1){if((l|0)>=(m|0)){s=14;break}f=c[(c[n>>2]|0)+(l<<2)>>2]|0;h=c[f+16>>2]|0;i=c[h+256>>2]|0;b:do if(i|0){g=0;while(1){j=c[i+(g<<2)>>2]|0;if(!j)break b;k=c[j>>2]&3;if((c[(c[(c[((k|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((k|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);h=c[h+248>>2]|0;c:do if(h|0){g=0;while(1){i=c[h+(g<<2)>>2]|0;if(!i)break c;j=c[i>>2]&3;if((c[(c[(c[((j|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((j|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);l=l+1|0}if((s|0)==14){s=0;if(f){f=c[c[n>>2]>>2]|0;e=c[c[o+(((q|0)<(p|0)?1:-1)<<6)+4>>2]>>2]|0;if(!e){s=16;break}o=fh(d)|0;p=o+16|0;a[(c[p>>2]|0)+156>>0]=2;Mi(o,f,0.0,0)|0;Mi(o,e,0.0,0)|0;c[(c[p>>2]|0)+232>>2]=c[(c[((c[(c[f+16>>2]|0)+232>>2]|0)<(c[(c[e+16>>2]|0)+232>>2]|0)?f:e)+16>>2]|0)+232>>2];e=c[r>>2]|0}}q=q+1|0}if((s|0)==16)ma(79676,79568,111,79679);else if((s|0)==19)return}function Di(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;a=c[a+16>>2]|0;i=c[a+196>>2]|0;e=b[a+238>>1]|0;a=b[a+236>>1]|0;while(1){if((a|0)>(e|0))break;f=c[i+(a<<6)>>2]|0;g=i+(a<<6)+4|0;d=0;while(1){if((d|0)>=(f|0))break;k=c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;j=k+232|0;h[k+16>>3]=+(c[j>>2]|0);c[j>>2]=a;d=d+1|0}a=a+1|0}return}function Ei(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;Gi(a,a);g=a+16|0;k=c[g>>2]|0;a:do if((b[k+238>>1]|0)>0?(j=c[k+8>>2]|0,e=c[j+84>>2]|0,e|0):0){o=~~(+h[k+32>>3]-+h[k+16>>3]);m=~~(+h[k+40>>3]-+h[k+24>>3]);p=(c[k+116>>2]&1|0)==0;n=p?m:o;m=p?o:m;if((e|0)==4){e=Hi(a)|0;k=c[g>>2]|0;j=c[k+8>>2]|0}else e=(e|0)==2&1;b:do if(!(e<<24>>24)){switch(c[j+84>>2]|0){case 5:{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+h[k+32>>3];l=+h[j+72>>3]/+h[k+40>>3];f=i<l?i:l;if(i>1.0&l>1.0){l=f;break b}else break a}case 1:break;default:break a}i=+h[j+16>>3];f=+(n|0)/+(m|0);if(f<i){l=1.0;f=i/f;break}else{l=f/i;f=1.0;break}}else{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+(m|0);f=+h[j+72>>3]/+(n|0);if(i<1.0|f<1.0)if(i<f){l=1.0;f=f/i;break}else{l=i/f;f=1.0;break}else l=i}while(0);e=(c[k+116>>2]&1|0)==0;i=e?f:l;f=e?l:f;e=k+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;p=e+16|0;l=+h[p>>3]*f;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);p=e+24|0;l=+h[p>>3]*i;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);e=e+164|0}Ii(a,f,i)}while(0);if(d|0)Ji(a,d);return}function Fi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+16|0;b=(c[h>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;g=b+16|0;d=0;while(1){b=c[g>>2]|0;f=c[b+180>>2]|0;e=c[f+(d<<2)>>2]|0;if(!e)break;_I(c[e+16>>2]|0);_I(e);d=d+1|0}if(f){_I(f);b=c[g>>2]|0}d=c[b+172>>2]|0;if(d){_I(d);b=c[g>>2]|0}f=b+256|0;e=c[f+4>>2]|0;b=b+180|0;c[b>>2]=c[f>>2];c[b+4>>2]=e;b=c[g>>2]|0;e=b+248|0;f=c[e+4>>2]|0;b=b+172|0;c[b>>2]=c[e>>2];c[b+4>>2]=f;b=(c[g>>2]|0)+164|0}b=0;d=c[(c[h>>2]|0)+192>>2]|0;a:while(1){g=(b|0)==0;f=b+16|0;b=d;while(1){if(!b)break a;e=c[b+16>>2]|0;d=c[e+164>>2]|0;if((a[e+156>>0]|0)!=2)continue a;if(g)c[(c[h>>2]|0)+192>>2]=d;else c[(c[f>>2]|0)+164>>2]=d;_I(e);_I(b);b=d}}c[(c[(c[(c[h>>2]|0)+192>>2]|0)+16>>2]|0)+168>>2]=0;return}function Gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Gi(c[(c[f+184>>2]|0)+(d<<2)>>2]|0,b);d=d+1|0}Li(a,b);return}function Hi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;s=l;l=l+80|0;e=s+64|0;d=s+48|0;f=s+16|0;m=s;r=s+32|0;a=a+16|0;b=c[(c[a>>2]|0)+8>>2]|0;t=b+48|0;c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];if((!(+h[f>>3]<.001)?(g=f+8|0,!(+h[g>>3]<.001)):0)?(i=b+32|0,c[m>>2]=c[i>>2],c[m+4>>2]=c[i+4>>2],c[m+8>>2]=c[i+8>>2],c[m+12>>2]=c[i+12>>2],c[d>>2]=c[f>>2],c[d+4>>2]=c[f+4>>2],c[d+8>>2]=c[f+8>>2],c[d+12>>2]=c[f+12>>2],c[e>>2]=c[i>>2],c[e+4>>2]=c[i+4>>2],c[e+8>>2]=c[i+8>>2],c[e+12>>2]=c[i+12>>2],Ki(r,d,e),c[f>>2]=c[r>>2],c[f+4>>2]=c[r+4>>2],c[f+8>>2]=c[r+8>>2],c[f+12>>2]=c[r+12>>2],c[d>>2]=c[r>>2],c[d+4>>2]=c[r+4>>2],c[d+8>>2]=c[r+8>>2],c[d+12>>2]=c[r+12>>2],c[e>>2]=c[m>>2],c[e+4>>2]=c[m+4>>2],c[e+8>>2]=c[m+8>>2],c[e+12>>2]=c[m+12>>2],Ki(f,d,e),i=c[a>>2]|0,j=+h[i+32>>3],k=+h[i+40>>3],n=+h[f>>3],o=n/j,p=+h[g>>3],q=p/k,!(o>=1.0&q>=1.0)):0){o=o<q?o:q;o=o>.5?o:.5;q=+N(+(o*k/p))*p/k;p=+N(+(o*j/n))*n/j*j;a=c[i+8>>2]|0;h[a+64>>3]=p;h[a+72>>3]=q*k;a=1}else a=0;l=s;return a|0}function Ii(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=a+16|0;a=1;while(1){f=c[e>>2]|0;if((a|0)>(c[f+180>>2]|0))break;Ii(c[(c[f+184>>2]|0)+(a<<2)>>2]|0,b,d);a=a+1|0}e=f+16|0;h[e>>3]=+h[e>>3]*b;e=f+24|0;h[e>>3]=+h[e>>3]*d;e=f+32|0;h[e>>3]=+h[e>>3]*b;f=f+40|0;h[f>>3]=+h[f>>3]*d;return}function Ji(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+24|0;g=m+16|0;f=m;n=c[a+16>>2]|0;e=+h[n+32>>3]-+h[n+16>>3];d=+h[n+40>>3]-+h[n+24>>3];i=e/d;if(0){n=c[13918]|0;h[f>>3]=i;h[f+8>>3]=e*.0001*d;zL(n,79592,f)|0;c[g>>2]=kk(a)|0;zL(n,79617,g)|0}d=+h[b>>3];do if(!(i>d*1.1)){a=b+24|0;if(!(i<=d*.8)){c[a>>2]=0;k=9;break}c[a>>2]=-1;if(0){XL(79627,34,1,c[13918]|0)|0;k=9}}else{c[b+24>>2]=~~(d*+((c[b+20>>2]|0)-(c[b+16>>2]|0)|0)/i);k=9}while(0);if((k|0)==9?0:0){n=c[13918]|0;c[j>>2]=c[b+24>>2];zL(n,79662,j)|0}l=m;return}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function Li(d,e){d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;s=(Vf(d)|0)==(d|0);v=d+16|0;w=c[v>>2]|0;a:do if(s){f=b[w+236>>1]|0;d=b[w+238>>1]|0;q=d<<16>>16;r=w+196|0;s=w+196|0;p=f<<16>>16;i=-2147483647.0;g=2147483647.0;while(1){if((p|0)>(q|0))break;j=c[r>>2]|0;o=c[j+(p<<6)>>2]|0;if((o|0)!=0?(t=c[j+(p<<6)+4>>2]|0,u=c[t>>2]|0,(u|0)!=0):0){l=1;j=u;while(1){j=c[j+16>>2]|0;k=a[j+156>>0]|0;if(!((l|0)<(o|0)&k<<24>>24!=0))break;j=c[t+(l<<2)>>2]|0;l=l+1|0}if(!(k<<24>>24)){m=+h[j+16>>3]-+h[j+88>>3];n=g<m;l=c[(c[s>>2]|0)+(p<<6)+4>>2]|0;k=o+-2|0;j=o+-1|0;while(1){j=c[(c[l+(j<<2)>>2]|0)+16>>2]|0;if(!(a[j+156>>0]|0))break;else{j=k;k=k+-1|0}}x=+h[j+96>>3]+ +h[j+16>>3];i=i>x?i:x;g=n?g:m}}p=p+1|0}k=c[w+180>>2]|0;l=w+184|0;j=1;while(1){if((j|0)>(k|0))break a;u=c[(c[(c[l>>2]|0)+(j<<2)>>2]|0)+16>>2]|0;x=+h[u+16>>3]+-8.0;m=+h[u+32>>3]+8.0;j=j+1|0;i=i>m?i:m;g=g<x?g:x}}else{i=+(c[(c[(c[w+260>>2]|0)+16>>2]|0)+232>>2]|0);g=+(c[(c[(c[w+256>>2]|0)+16>>2]|0)+232>>2]|0);f=b[w+236>>1]|0;d=b[w+238>>1]|0}while(0);e=c[(c[e+16>>2]|0)+196>>2]|0;m=+h[(c[(c[c[e+(d<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[w+120>>3];x=+h[w+128>>3]+ +h[(c[(c[c[e+(f<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];h[w+16>>3]=g;h[w+24>>3]=m;e=c[v>>2]|0;h[e+32>>3]=i;h[e+40>>3]=x;return}function Mi(a,d,e,f){a=a|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;i=vw(96)|0;j=i+48|0;c[j>>2]=c[j>>2]|3;c[i>>2]=c[i>>2]&-4|2;g=vw(176)|0;h=i+16|0;c[h>>2]=g;c[((c[i>>2]&3|0)==3?i:j)+40>>2]=a;c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]=d;if(e>65535.0){Ni(e);e=65535.0;g=c[h>>2]|0}b[g+170>>1]=~~(e+(e>=0.0?.5:-.5));c[g+156>>2]=f;Vg(i)|0;return i|0}function Ni(a){a=+a;var b=0,d=0;b=l;l=l+16|0;d=b;h[d>>3]=a;c[d+8>>2]=65535;_l(1,79692,d)|0;l=b;return}function Oi(a){a=a|0;var b=0,d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;f=a+16|0;e=c[f>>2]|0;a=e+172|0;d=c[a+4>>2]|0;e=e+248|0;c[e>>2]=c[a>>2];c[e+4>>2]=d;e=c[f>>2]|0;d=e+180|0;a=c[d+4>>2]|0;e=e+256|0;c[e>>2]=c[d>>2];c[e+4>>2]=a;e=c[f>>2]|0;a=c[e+180>>2]|0;d=0;while(1)if(!(c[a+(d<<2)>>2]|0))break;else d=d+1|0;b=c[e+172>>2]|0;a=0;while(1)if(!(c[b+(a<<2)>>2]|0))break;else a=a+1|0;c[e+176>>2]=0;a=vw((a+d<<2)+16|0)|0;e=c[f>>2]|0;c[e+172>>2]=a;c[e+184>>2]=0;e=vw(16)|0;a=c[f>>2]|0;c[a+180>>2]=e;a=a+164|0}return}function Pi(d){d=d|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+16|0;w=z;x=d+16|0;u=c[x>>2]|0;y=c[u+196>>2]|0;d=(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)!=0;v=c[u+248>>2]|0;c[w>>2]=v;c[w+4>>2]=d?5:v;v=b[u+236>>1]|0;d=u;while(1){if((v|0)>(b[d+238>>1]|0))break;r=y+(v<<6)+4|0;c[(c[(c[c[r>>2]>>2]|0)+16>>2]|0)+232>>2]=0;s=y+(v<<6)|0;t=+(c[w+((v&1)<<2)>>2]|0);p=0.0;k=0;a:while(1){if((k|0)>=(c[s>>2]|0))break;f=c[r>>2]|0;m=c[f+(k<<2)>>2]|0;u=m+16|0;d=c[u>>2]|0;i=+h[d+96>>3];h[d+240>>3]=i;if((c[d+208>>2]|0)>0){j=0;f=0;while(1){g=c[(c[d+204>>2]|0)+(j<<2)>>2]|0;if(!g)break;q=c[g>>2]&3;if((c[((q|0)==3?g:g+48|0)+40>>2]|0)==(c[((q|0)==2?g:g+-48|0)+40>>2]|0)){f=(Qz(g)|0)+f|0;d=c[u>>2]|0}j=j+1|0}q=d+96|0;i=+h[q>>3]+ +(f|0);h[q>>3]=i;f=c[r>>2]|0}q=k+1|0;f=c[f+(q<<2)>>2]|0;if(f){o=f+16|0;i=i+t+ +h[(c[o>>2]|0)+88>>3];Mi(m,f,i,0)|0;d=~~(i+p);c[(c[o>>2]|0)+232>>2]=d;p=+(d|0);d=c[u>>2]|0}f=c[d+112>>2]|0;if(f){j=c[d+256>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;d=(c[(c[(c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0);g=d?j:k;j=d?k:j;k=f+16|0;d=c[k>>2]|0;i=+((O(c[(c[x>>2]|0)+248>>2]|0,e[d+170>>1]|0)|0)/2|0|0);o=c[g>>2]&3;f=c[((o|0)==2?g:g+-48|0)+40>>2]|0;g=c[((o|0)==3?g:g+48|0)+40>>2]|0;if(!(_i(g,f)|0))Mi(f,g,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[g+16>>2]|0)+88>>3])|0),c[d+156>>2]|0)|0;d=c[j>>2]&3;f=c[((d|0)==3?j:j+48|0)+40>>2]|0;d=c[((d|0)==2?j:j+-48|0)+40>>2]|0;if(!(_i(d,f)|0)){Mi(f,d,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[d+16>>2]|0)+88>>3])|0),c[(c[k>>2]|0)+156>>2]|0)|0;o=0}else o=0}else o=0;while(1){d=c[u>>2]|0;if((o|0)>=(c[d+192>>2]|0)){k=q;continue a}m=c[(c[d+188>>2]|0)+(o<<2)>>2]|0;k=c[m>>2]&3;g=c[((k|0)==3?m:m+48|0)+40>>2]|0;k=c[((k|0)==2?m:m+-48|0)+40>>2]|0;j=(c[(c[g+16>>2]|0)+236>>2]|0)<(c[(c[k+16>>2]|0)+236>>2]|0);f=j?g:k;g=j?k:g;i=+h[(c[g+16>>2]|0)+88>>3]+ +h[(c[f+16>>2]|0)+96>>3];k=m+16|0;j=~~(i+ +(O(c[(c[x>>2]|0)+248>>2]|0,e[(c[k>>2]|0)+170>>1]|0)|0));n=Sg(f,g)|0;if(!n){d=c[k>>2]|0;if(!(c[d+96>>2]|0))Mi(f,g,+(j|0),c[d+156>>2]|0)|0}else{A=+(j|0);d=c[k>>2]|0;B=+h[d+136>>3];i=i+ +(c[(c[x>>2]|0)+248>>2]|0)+ +(~~(B+(B>=0.0?.5:-.5))|0);f=~~(i<A?A:i);if((f|0)>65535){Ni(+(f|0));f=65535;d=c[k>>2]|0}k=c[n+16>>2]|0;j=k+170|0;g=e[j>>1]|0;b[j>>1]=(f|0)<(g|0)?g:f;k=k+156|0;c[k>>2]=c[(c[((c[k>>2]|0)>(c[d+156>>2]|0)?n:m)+16>>2]|0)+156>>2]}o=o+1|0}}v=v+1|0;d=c[x>>2]|0}l=z;return}function Qi(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+256>>2]|0;a:do if(e){f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e)break a;n=fh(b)|0;d=n+16|0;a[(c[d>>2]|0)+156>>0]=2;l=e+16|0;k=c[l>>2]|0;i=~~(+h[k+56>>3]-+h[k+16>>3]);m=(i|0)>0;j=m?0:0-i|0;i=m?i:0;m=e+48|0;Mi(n,c[((c[e>>2]&3|0)==3?e:m)+40>>2]|0,+(i+1|0),c[k+156>>2]|0)|0;k=e+-48|0;Mi(n,c[((c[e>>2]&3|0)==2?e:k)+40>>2]|0,+(j+1|0),c[(c[l>>2]|0)+156>>2]|0)|0;l=c[e>>2]&3;i=(c[(c[(c[((l|0)==3?e:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-i|0;e=(c[(c[(c[((l|0)==2?e:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)-j|0;c[(c[d>>2]|0)+232>>2]=((i|0)<(e|0)?i:e)+-1;d=c[g>>2]|0;f=f+1|0;e=c[d+256>>2]|0}}while(0);d=d+164|0}return}function Ri(a){a=a|0;if((c[(c[a+16>>2]|0)+180>>2]|0)>0){Vi(a);Wi(a);Xi(a);Yi(a)}return}function Si(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;e=a+16|0;f=c[(c[e>>2]|0)+8>>2]|0;if((c[f+84>>2]|0)==3?(b=+h[f+64>>3],d=+h[f+72>>3],!(d*b<=1.0)):0){Ti(a);f=c[e>>2]|0;d=(c[f+116>>2]&1|0)==0?b:d;Mi(c[f+256>>2]|0,c[f+260>>2]|0,d<65535.0?d:65535.0,1e3)|0}return}function Ti(a){a=a|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;e=DA(a,c[42188]|0,8,0)|0;Ui(a);i=a+16|0;g=c[i>>2]|0;j=c[g+256>>2]|0;k=c[g+260>>2]|0;f=+(e|0);e=b[g+236>>1]|0;while(1){if((e|0)>(b[g+238>>1]|0))break;d=c[g+196>>2]|0;do if(c[d+(e<<6)>>2]|0){d=c[c[d+(e<<6)+4>>2]>>2]|0;if(!d){c[m>>2]=Dn(a)|0;c[m+4>>2]=e;_l(1,79776,m)|0;break}else{Mi(j,d,+h[(c[d+16>>2]|0)+88>>3]+f+ +h[g+96>>3],0)|0;g=c[i>>2]|0;d=c[g+196>>2]|0;d=c[(c[d+(e<<6)+4>>2]|0)+((c[d+(e<<6)>>2]|0)+-1<<2)>>2]|0;Mi(d,k,+h[(c[d+16>>2]|0)+96>>3]+f+ +h[g+64>>3],0)|0;break}}while(0);e=e+1|0;g=c[i>>2]|0}l=n;return}function Ui(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;if(!(c[(c[d>>2]|0)+256>>2]|0)){f=fh(Vf(b)|0)|0;a[(c[f+16>>2]|0)+156>>0]=2;e=fh(Vf(b)|0)|0;a[(c[e+16>>2]|0)+156>>0]=2;if((c[(c[d>>2]|0)+12>>2]|0?(Vf(b)|0)!=(b|0):0)?(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0:0){b=c[d>>2]|0;Mi(f,e,+(~~+h[b+48+((+h[b+48>>3]>+h[b+80>>3]?0:2)<<4)>>3]|0),0)|0}d=c[d>>2]|0;c[d+256>>2]=f;c[d+260>>2]=e}return}function Vi(a){a=a|0;var b=0,d=0;do if((Vf(a)|0)!=(a|0)){Ti(a);a=a+16|0;b=c[a>>2]|0;b=Sg(c[b+256>>2]|0,c[b+260>>2]|0)|0;if(!b){d=c[a>>2]|0;Mi(c[d+256>>2]|0,c[d+260>>2]|0,1.0,128)|0;break}else{d=(c[b+16>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+128;break}}else a=a+16|0;while(0);b=1;while(1){d=c[a>>2]|0;if((b|0)>(c[d+180>>2]|0))break;Vi(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function Wi(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;k=DA(d,c[42188]|0,8,0)|0;o=d+16|0;e=c[o>>2]|0;m=+(k|0);k=b[e+236>>1]|0;while(1){if((k|0)>(b[e+238>>1]|0)){f=1;break}e=c[e+196>>2]|0;a:do if(c[e+(k<<6)>>2]|0?(l=c[c[e+(k<<6)+4>>2]>>2]|0,l|0):0){i=l+16|0;f=c[(c[i>>2]|0)+236>>2]|0;while(1){if((f|0)<=0)break;f=f+-1|0;j=c[(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=j+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0)){n=10;break}if(Zi(d,j)|0){n=9;break}}if((n|0)==9){e=c[g>>2]|0;n=10}if((n|0)==10){n=0;Mi(j,c[(c[o>>2]|0)+256>>2]|0,+h[e+96>>3]+m,0)|0}f=(c[(c[(c[o>>2]|0)+196>>2]|0)+(k<<6)>>2]|0)+(c[(c[i>>2]|0)+236>>2]|0)|0;while(1){if((f|0)>=(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)>>2]|0))break a;i=c[(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=i+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0))break;if(!(Zi(d,i)|0))f=f+1|0;else{n=15;break}}if((n|0)==15){n=0;e=c[g>>2]|0}Mi(c[(c[o>>2]|0)+260>>2]|0,i,+h[e+88>>3]+m,0)|0}while(0);k=k+1|0;e=c[o>>2]|0}while(1){if((f|0)>(c[e+180>>2]|0))break;Wi(c[(c[e+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0;e=c[o>>2]|0}return}function Xi(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0;e=DA(a,c[42188]|0,8,0)|0;Ui(a);b=a+16|0;d=+(e|0);a=1;while(1){e=c[b>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;Ui(e);f=c[b>>2]|0;g=e+16|0;Mi(c[f+256>>2]|0,c[(c[g>>2]|0)+256>>2]|0,+h[f+96>>3]+d,0)|0;f=c[b>>2]|0;Mi(c[(c[g>>2]|0)+260>>2]|0,c[f+260>>2]|0,+h[f+64>>3]+d,0)|0;Xi(e);a=a+1|0}return}function Yi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;d=DA(a,c[42188]|0,8,0)|0;n=a+16|0;a=1;while(1){f=c[n>>2]|0;e=c[f+180>>2]|0;if((a|0)>(e|0))break;Ui(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}m=+(d|0);l=1;a=e;d=f;while(1){if((l|0)>(a|0))break;k=l+1|0;j=k;while(1){e=c[d+184>>2]|0;f=c[e+(l<<2)>>2]|0;if((j|0)>(a|0))break;e=c[e+(j<<2)>>2]|0;g=(b[(c[f+16>>2]|0)+236>>1]|0)>(b[(c[e+16>>2]|0)+236>>1]|0);i=g?e:f;e=g?f:e;f=c[i+16>>2]|0;g=c[e+16>>2]|0;o=b[g+236>>1]|0;h=o<<16>>16;if((b[f+238>>1]|0)>=o<<16>>16){a=(c[(c[(c[c[(c[f+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[c[(c[g+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0);Mi(c[(c[(a?i:e)+16>>2]|0)+260>>2]|0,c[(c[(a?e:i)+16>>2]|0)+256>>2]|0,m,0)|0;a=c[n>>2]|0;d=a;a=c[a+180>>2]|0}j=j+1|0}Yi(f);d=c[n>>2]|0;l=k;a=c[d+180>>2]|0}return}function Zi(b,d){b=b|0;d=d|0;var e=0;d=c[d+16>>2]|0;if((a[d+156>>0]|0)==1){d=c[c[d+256>>2]>>2]|0;while(1){e=c[(c[d+16>>2]|0)+116>>2]|0;if(!e)break;else d=e}if(!(Bo(b,c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0))d=(Bo(b,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0)==0&1;else d=0}else d=0;return d|0}function _i(a,b){a=a|0;b=b|0;return $i(a,b)|0}function $i(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)==(b|0))a=1;else{d=c[(c[a+16>>2]|0)+180>>2]|0;a=0;while(1){e=c[d+(a<<2)>>2]|0;if(!e){a=0;break a}if(!($i(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,b)|0))a=a+1|0;else{a=1;break}}}while(0);return a|0}function aj(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;h=c[d+196>>2]|0;g=c[h+(j<<6)>>2]|0;h=h+(j<<6)+4|0;i=0;f=0;while(1){if((f|0)>=(g|0))break;e=c[(c[(c[h>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;c[e+236>>2]=i;if((a[e+159>>0]|0)==6)e=c[e+216>>2]|0;else e=1;i=e+i|0;f=f+1|0}if((i|0)>(g|0)){d=c[h>>2]|0;if(!d)d=ww((i<<2)+4|0)|0;else d=yw(d,(i<<2)+4|0)|0;f=c[(c[k>>2]|0)+196>>2]|0;c[f+(j<<6)+4>>2]=d;e=c[f+(j<<6)>>2]|0;while(1){d=e+-1|0;if((e|0)<=0)break;h=c[f+(j<<6)+4>>2]|0;e=c[h+(d<<2)>>2]|0;c[h+(c[(c[e+16>>2]|0)+236>>2]<<2)>>2]=e;e=d;f=c[(c[k>>2]|0)+196>>2]|0}c[f+(j<<6)>>2]=i;c[(c[f+(j<<6)+4>>2]|0)+(i<<2)>>2]=0;d=c[k>>2]|0}j=j+1|0}return}function bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+48|0;n=o+32|0;m=o+8|0;d=o+24|0;k=o+16|0;j=o;e=b+16|0;f=c[e>>2]|0;a:do if((c[f+216>>2]|0)>=2){c[m>>2]=~~(+h[f+16>>3]-+h[f+88>>3]);c[m+4>>2]=~~+h[f+24>>3];c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];cj(d,b,n);g=d;i=c[g+4>>2]|0;d=m;c[d>>2]=c[g>>2];c[d+4>>2]=i;d=c[e>>2]|0;if((c[d+184>>2]|0)>0){j=c[c[d+180>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;j=Sm(a,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0;while(1){if(!j)break a;i=(c[j>>2]&3|0)==2?j:j+-48|0;e=i+48|0;f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;if((f|0)!=(b|0)?(KA(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];dj(k,a,f,n,d);f=k;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;kh(i);g=i+-48|0;e=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;f=c[e+172>>2]|0;if(!f)e=ww((c[e+176>>2]<<2)+8|0)|0;else e=yw(f,(c[e+176>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0)+172>>2]=e;p=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;e=c[p+172>>2]|0;p=p+176|0;f=c[p>>2]|0;c[p>>2]=f+1;c[e+(f<<2)>>2]=i;i=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0;d=d+1|0}j=Tm(a,j)|0}}else{i=c[c[d+172>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;i=Pm(a,c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)|0;while(1){if(!i)break a;e=i+-48|0;f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;if((f|0)!=(b|0)?(KA(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];dj(j,a,f,n,d);f=j;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;kh(i);g=i+48|0;e=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;f=c[e+180>>2]|0;if(!f)e=ww((c[e+184>>2]<<2)+8|0)|0;else e=yw(f,(c[e+184>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0)+180>>2]=e;f=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;k=c[f+180>>2]|0;f=f+184|0;p=c[f>>2]|0;c[f>>2]=p+1;c[k+(p<<2)>>2]=i;p=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;c[(c[p+180>>2]|0)+(c[p+184>>2]<<2)>>2]=0;d=d+1|0}i=Rm(a,i)|0}}}while(0);l=o;return}function cj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;KB(b,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1);e=c[b+16>>2]|0;h[e+24>>3]=+(c[d+4>>2]|0);f=+h[e+88>>3]+ +(c[d>>2]|0);h[e+16>>3]=f;f=f+ +h[e+96>>3];c[d>>2]=~~(f+ +(c[(c[(ro(b)|0)+16>>2]|0)+248>>2]|0));e=d;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function dj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;b=Vf(b)|0;g=KA(d)|0;if((g|0)!=(d|0))ch(g,d);j=c[d+16>>2]|0;c[j+236>>2]=f;g=c[(c[g+16>>2]|0)+232>>2]|0;c[j+232>>2]=g;c[(c[(c[(c[b+16>>2]|0)+196>>2]|0)+(g<<6)+4>>2]|0)+(f<<2)>>2]=d;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];cj(a,d,h);l=i;return}function ej(a){a=a|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0;m=c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0;if((Vf(a)|0)==(a|0))j=8.0;else j=+(DA(a,c[42188]|0,8,0)|0);l=a+16|0;g=c[l>>2]|0;f=0;k=1;e=+h[g+120>>3];d=+h[g+128>>3];while(1){if((k|0)>(c[g+180>>2]|0))break;i=c[(c[g+184>>2]|0)+(k<<2)>>2]|0;f=ej(i)|0|f;i=c[i+16>>2]|0;g=c[l>>2]|0;if((b[i+238>>1]|0)==(b[g+238>>1]|0)){n=+h[i+120>>3]+j;e=e>n?e:n}if((b[i+236>>1]|0)==(b[g+236>>1]|0)){n=+h[i+128>>3]+j;d=d>n?d:n}k=k+1|0}if((Vf(a)|0)!=(a|0)?(c[(c[l>>2]|0)+12>>2]|0)!=0:0)if(!(c[(c[(so(a)|0)+16>>2]|0)+116>>2]&1)){k=c[l>>2]|0;f=1;e=+h[k+56>>3]+e;d=+h[k+88>>3]+d}else f=1;k=c[l>>2]|0;h[k+120>>3]=e;h[k+128>>3]=d;if((Vf(a)|0)!=(a|0)){l=c[l>>2]|0;a=m+(b[l+236>>1]<<6)+24|0;n=+h[a>>3];h[a>>3]=n>d?n:d;m=m+(b[l+238>>1]<<6)+16|0;n=+h[m>>3];h[m>>3]=n>e?n:e}return f|0}function fj(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0;if((Vf(a)|0)==(a|0))e=0;else e=DA(a,c[42188]|0,8,0)|0;l=a+16|0;i=c[l>>2]|0;m=e+d|0;k=+(e|0);j=1;f=+h[i+128>>3];g=+h[i+120>>3];e=i;while(1){if((j|0)>(c[e+180>>2]|0))break;i=c[(c[e+184>>2]|0)+(j<<2)>>2]|0;fj(i,m);i=c[i+16>>2]|0;e=c[l>>2]|0;if((b[i+238>>1]|0)==(b[e+238>>1]|0)){q=+h[i+120>>3]+k;g=g>q?g:q}if((b[i+236>>1]|0)==(b[e+236>>1]|0)){q=+h[i+128>>3]+k;f=f>q?f:q}j=j+1|0}h[e+120>>3]=g;h[e+128>>3]=f;if(((Vf(a)|0)!=(a|0)?(n=c[l>>2]|0,c[n+12>>2]|0):0)?(p=-g-f+ +h[n+48+((+h[n+104>>3]>+h[n+72>>3]?3:1)<<4)+8>>3]-+h[(c[(c[c[o+(b[n+236>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[(c[(c[c[o+(b[n+238>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3],p>0.0):0)gj(a,~~p,d);if((Vf(a)|0)!=(a|0)){n=c[l>>2]|0;m=o+(b[n+236>>1]<<6)+24|0;q=+h[m>>3];p=+h[n+128>>3];h[m>>3]=q>p?q:p;o=o+(b[n+238>>1]<<6)+16|0;p=+h[o>>3];q=+h[n+120>>3];h[o>>3]=p>q?p:q}return}function gj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;k=c[(Vf(a)|0)+16>>2]|0;q=c[k+196>>2]|0;p=c[a+16>>2]|0;a=b[p+238>>1]|0;f=b[p+236>>1]|0;l=(d+1|0)/2|0;m=p+120|0;n=+h[m>>3];o=+(l|0);i=+(e|0);e=~~(o+i+n-+h[q+(a<<6)+16>>3]);if((e|0)>0){g=+(e|0);while(1){if((a|0)<(f|0))break;if((c[q+(a<<6)>>2]|0)>0){r=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[r>>3]=+h[r>>3]+g}a=a+-1|0}j=+h[p+128>>3];a=e;g=j+ +(d-l|0)}else{j=+h[p+128>>3];a=d-l|0;g=j}a=~~(+(a|0)+i+g-+h[q+(f<<6)+24>>3]);a:do if((a|0)>0){e=b[k+236>>1]|0;g=+(a|0);while(1){a=f+-1|0;if((f|0)<=(e|0))break a;if((c[q+(a<<6)>>2]|0)<=0){f=a;continue}f=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[f>>3]=+h[f>>3]+g;f=a}}while(0);h[p+128>>3]=j+ +(d-l|0);h[m>>3]=n+o;return}function hj(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+16>>2]|0;f=a[e+84>>0]|0;b=c[d+16>>2]|0;do if(f<<24>>24==(a[b+84>>0]|0)){if(+h[e+56>>3]==+h[b+56>>3]){if(!(f<<24>>24==0?1:+h[e+64>>3]==+h[b+64>>3])){b=0;break}}else if(f<<24>>24){b=0;break}if(+h[e+16>>3]==+h[b+16>>3]?+h[e+24>>3]==+h[b+24>>3]:0){b=1;break}b=(a[e+44>>0]|0)==0&1}else b=0;while(0);return b|0}function ij(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;b[d+236>>1]=32767;b[d+238>>1]=-1;d=0;h=co(a)|0;while(1){e=c[i>>2]|0;if(!h)break;f=e+238|0;g=c[(c[h+16>>2]|0)+232>>2]|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;e=e+236|0;if((g|0)<(b[e>>1]|0))b[e>>1]=g;if(!d)d=h;else d=(g|0)<(c[(c[d+16>>2]|0)+232>>2]|0)?h:d;h=eo(a,h)|0}c[e+264>>2]=d;return}function jj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;b=Im(a,79821)|0;if(!b)b=2147483647;else{g=+sM(b);b=~~(g*+(mn(a)|0))}e=a+16|0;d=0;while(1){f=c[e>>2]|0;if((d|0)>=(c[f+220>>2]|0))break;c[f+192>>2]=c[(c[f+216>>2]|0)+(d<<2)>>2];gx(a,(c[f+180>>2]|0)==0&1,b)|0;d=d+1|0}return}function kj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+16|0;e=f;if(!(Im(a,79830)|0))mj(a,d);else{g=(c[a+16>>2]|0)+136|0;b[g>>1]=b[g>>1]|16;lj(a,d)}if(0){g=c[13918]|0;a=c[a+16>>2]|0;d=b[a+236>>1]|0;c[e>>2]=b[a+238>>1];c[e+4>>2]=d;zL(g,79838,e)|0}l=f;return}function lj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;h=i;c[41933]=0;a[h>>0]=a[17644]|0;a[h+1>>0]=a[17645]|0;a[h+2>>0]=a[17646]|0;a[h+3>>0]=a[17647]|0;h=gn(80048,h,0)|0;No(h,80077,280,1)|0;zo(h,17332,17272);nj(b);e=Im(b,79821)|0;if(!e)f=2147483647;else{j=+sM(e);f=~~(j*+(mn(b)|0))}Dj(b,0);Ej(b,h);Fj(b,h);Gj(b,h,0,0);Hj(h);g=Ij(h)|0;Jj(h);if(d|0){xk(h);lk(h)}e=Im(b,87620)|0;if(!e)e=-1;else e=rM(e)|0;zw(h,1,f,e)|0;Kj(b,h,g);ln(h)|0;l=i;return}function mj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g;nj(a);do if(!b){oj(a,a);Ak(a);pj(d,a);h=d;d=c[h+4>>2]|0;b=e;c[b>>2]=c[h>>2];c[b+4>>2]=d;tl(a,0);b=0}else{xk(a);lk(a);oj(a,a);Ak(a);pj(d,a);i=d;d=c[i+4>>2]|0;h=e;c[h>>2]=c[i>>2];c[h+4>>2]=d;tl(a,0);h=c[a+16>>2]|0;if((c[h+220>>2]|0)<=1?(c[h+180>>2]|0)<=0:0)break;c[b+32>>2]=1;b=0}while(0);ik(a);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];if(qj(a,f)|0)tl(a,0);if(!b)jj(a);else mk(a,b);rj(a,b);sj(a);l=g;return}function nj(d){d=d|0;var f=0,g=0,h=0;if(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1){g=co(d)|0;while(1){if(!g)break;f=Pm(d,g)|0;while(1){if(!f)break;h=(c[f+16>>2]|0)+170|0;b[h>>1]=(e[h>>1]|0)<<1;f=Rm(d,f)|0}g=eo(d,g)|0}h=(c[d+16>>2]|0)+252|0;c[h>>2]=((c[h>>2]|0)+1|0)/2|0}return}function oj(a,b){a=a|0;b=b|0;var d=0;b=Jp(b)|0;while(1){if(!b)break;d=Aj(b)|0;do if(d)if((d|0)==7&(c[42179]|0)==100){wj(a,b);break}else{Bj(a,b,d);break}else oj(a,b);while(0);b=Kp(b)|0}return}function pj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=d+16|0;e=c[i>>2]|0;d=c[e+228>>2]|0;e=c[e+224>>2]|0;f=(e|0)==0;if(!d)if(f){j=0;k=0}else g=4;else if(f)g=5;else g=4;if((g|0)==4){d=KA(e)|0;e=c[i>>2]|0;c[e+224>>2]=d;d=c[e+228>>2]|0;if(!d){h=0;d=e;g=12}else g=5}do if((g|0)==5){d=KA(d)|0;e=c[i>>2]|0;c[e+228>>2]=d;if(d){e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==5&1;while(1){d=c[c[d+180>>2]>>2]|0;if(!d){g=11;break}h=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((h|0)!=(KA(h)|0)){g=9;break}hk(d);d=c[e>>2]|0}if((g|0)==9)ma(79941,79881,346,79973);else if((g|0)==11){h=f;d=c[i>>2]|0;g=12;break}}else{h=0;d=e;g=12}}while(0);a:do if((g|0)==12){d=c[d+224>>2]|0;if(!d){j=0;k=h}else{e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==3&1;while(1){d=c[c[d+172>>2]>>2]|0;if(!d){j=f;k=h;break a}i=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((i|0)!=(KA(i)|0))break;hk(d);d=c[e>>2]|0}ma(79986,79881,353,79973)}}while(0);c[b>>2]=j;c[b+4>>2]=k;return}function qj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+16|0;i=c[j>>2]|0;if((c[i+228>>2]|0)==0?(c[i+224>>2]|0)==0:0)d=0;else e=3;a:do if((e|0)==3){g=co(a)|0;i=d+4|0;h=c[d>>2]&65535;d=0;while(1){if(!g)break a;if((g|0)==(KA(g)|0)){f=g+16|0;e=c[f>>2]|0;if((c[e+184>>2]|0)==0?(k=c[(c[j>>2]|0)+228>>2]|0,!((k|0)==0|(g|0)==(k|0))):0){d=ah(g,k,0)|0;e=c[d+16>>2]|0;b[e+170>>1]=c[i>>2];c[e+156>>2]=0;e=c[f>>2]|0}if((c[e+176>>2]|0)==0?(l=c[(c[j>>2]|0)+224>>2]|0,!((l|0)==0|(g|0)==(l|0))):0){d=ah(l,g,0)|0;f=c[d+16>>2]|0;b[f+170>>1]=h;c[f+156>>2]=0}}g=eo(a,g)|0}}while(0);return (d|0)!=0|0}function rj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=co(d)|0;k=d+16|0;f=c[k>>2]|0;a:do if(g){b[f+236>>1]=32767;b[f+238>>1]=-1;j=(e|0)==0;while(1){if(!g)break;f=KA(g)|0;i=c[g+16>>2]|0;e=c[i+232>>2]|0;do if((f|0)!=(g|0)){if(!j)if(!e)e=0;else break;e=e+(c[(c[f+16>>2]|0)+232>>2]|0)|0;c[i+232>>2]=e}while(0);f=c[k>>2]|0;h=f+238|0;if((e|0)>(b[h>>1]|0))b[h>>1]=e;f=f+236|0;if((e|0)<(b[f>>1]|0))b[f>>1]=e;switch(a[i+159>>0]|0){case 6:case 0:break;default:MA(g)}g=eo(d,g)|0}if((Vf(d)|0)==(d|0)){if((c[42179]|0)==100)e=1;else{vj(d);break}while(1){f=c[k>>2]|0;if((e|0)>(c[f+180>>2]|0))break a;uj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}}}else{b[f+238>>1]=0;b[f+236>>1]=0}while(0);return}function sj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=b+16|0;e=0;while(1){d=c[j>>2]|0;if((e|0)>=(c[d+220>>2]|0))break;i=c[(c[d+216>>2]|0)+(e<<2)>>2]|0;c[d+192>>2]=i;d=i;while(1){if(!d)break;i=d+16|0;tj((c[i>>2]|0)+172|0);tj((c[i>>2]|0)+180|0);i=c[i>>2]|0;a[i+157>>0]=0;d=c[i+164>>2]|0}e=e+1|0}i=co(b)|0;while(1){if(!i)break;h=Pm(b,i)|0;while(1){if(!h)break;f=h+16|0;d=c[f>>2]|0;g=c[d+172>>2]|0;if((g|0)!=0?(k=g+16|0,(h|0)==(c[(c[k>>2]|0)+116>>2]|0)):0){d=co(b)|0;while(1){if(!d)break;e=Pm(b,d)|0;while(1){if(!e)break;if((h|0)!=(e|0)?(l=(c[e+16>>2]|0)+172|0,m=c[l>>2]|0,(m|0)!=0&(g|0)==(m|0)):0)c[l>>2]=0;e=Rm(b,e)|0}d=eo(b,d)|0}_I(c[k>>2]|0);_I(g);d=c[f>>2]|0}c[d+172>>2]=0;h=Rm(b,h)|0}i=eo(b,i)|0}_I(c[(c[j>>2]|0)+216>>2]|0);m=c[j>>2]|0;c[m+216>>2]=0;c[m+220>>2]=0;return}function tj(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;while(1){if((b|0)<=-1)break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+-1|0}c[d>>2]=0;return}function uj(a){a=a|0;var d=0,f=0,g=0;d=a+16|0;f=c[d>>2]|0;g=c[(c[(c[f+264>>2]|0)+16>>2]|0)+232>>2]|0;a=f+236|0;b[a>>1]=g+(e[a>>1]|0);a=f+238|0;b[a>>1]=g+(e[a>>1]|0);a=1;while(1){if((a|0)>(c[f+180>>2]|0))break;uj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0;f=c[d>>2]|0}return}function vj(b){b=b|0;var d=0;d=Jp(Vf(b)|0)|0;while(1){if(!d)break;if((a[(c[d+16>>2]|0)+274>>0]|0)==7)wj(b,d);d=Kp(d)|0}return}function wj(a,b){a=a|0;b=b|0;var d=0;d=(c[b+16>>2]|0)+200|0;do if((c[d>>2]|0)==0?(c[d>>2]=a,xj(a,b),co(b)|0):0){yj(a,b);if((c[42179]|0)==100){mj(b,0);zj(b);break}else{ij(b);break}}while(0);return}function xj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=b+16|0;g=co(d)|0;while(1){if(!g)break;i=eo(d,g)|0;j=g+16|0;if(!(a[(c[j>>2]|0)+159>>0]|0))f=1;else{qo(d,g)|0;g=i;continue}while(1){e=c[h>>2]|0;b=c[e+180>>2]|0;if((f|0)>=(b|0))break;if(Bo(c[(c[e+184>>2]|0)+(f<<2)>>2]|0,g)|0){k=7;break}f=f+1|0}if((k|0)==7){k=0;b=c[(c[h>>2]|0)+180>>2]|0}if((f|0)<(b|0))qo(d,g)|0;c[(c[j>>2]|0)+212>>2]=0;g=i}e=co(d)|0;while(1){if(!e)break;b=Pm(Vf(d)|0,e)|0;while(1){if(!b)break;if(Bo(d,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)en(d,b,1)|0;b=Rm(Vf(d)|0,b)|0}e=eo(d,e)|0}return}function yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=vw((a<<2)+8|0)|0;else a=xw(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;hw(b);return}function zj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[b+16>>2]|0;d=g+192|0;h=0;while(1){d=c[d>>2]|0;if(!d)break;f=c[d+16>>2]|0;if(!(c[f+232>>2]|0))e=(a[f+156>>0]|0)==0?d:h;else e=h;d=f+164|0;h=e}if(!h)ma(79866,79881,238,79888);c[g+264>>2]=h;d=co(b)|0;while(1){if(!d){d=13;break}e=d+16|0;if(!((d|0)==(h|0)?1:(c[(c[e>>2]|0)+216>>2]|0)<2)){d=11;break}LA(d,h)|0;a[(c[e>>2]|0)+159>>0]=7;d=eo(b,d)|0}if((d|0)==11)ma(79903,79881,242,79888);else if((d|0)==13)return}function Aj(b){b=b|0;var d=0;if(!(Cj(b)|0)){d=UA(Im(b,80018)|0,17284,17308)|0;a[(c[b+16>>2]|0)+274>>0]=d;b=d}else b=7;return b|0}function Bj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=co(d)|0;a:do if(g|0){j=e&255;i=g+16|0;f=g;h=j;while(1){a[(c[f+16>>2]|0)+159>>0]=h;f=eo(d,f)|0;if(!f)break;LA(g,f)|0;h=a[(c[i>>2]|0)+159>>0]|0}switch(e|0){case 3:case 2:{b=b+16|0;f=c[b>>2]|0;h=c[f+224>>2]|0;if(h){g=LA(h,g)|0;f=c[b>>2]|0}c[f+224>>2]=g;break}case 5:case 4:{b=b+16|0;f=c[b>>2]|0;h=c[f+228>>2]|0;if(h){g=LA(h,g)|0;f=c[b>>2]|0}c[f+228>>2]=g;break}default:break a}switch(e|0){case 3:{f=f+224|0;break}case 5:{f=f+228|0;break}default:break a}a[(c[(c[f>>2]|0)+16>>2]|0)+159>>0]=j}while(0);return}function Cj(a){a=a|0;return (VJ(Dn(a)|0,93039,7)|0)==0|0}function Dj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;g=m;if(!(Yj(b)|0)){do if(hB(b)|0)if(!d){c[(c[b+16>>2]|0)+204>>2]=0;d=b;break}else{c[(c[b+16>>2]|0)+204>>2]=(c[(c[d+16>>2]|0)+204>>2]|0)+1;Zj(b,d);d=b;break}while(0);e=Jp(b)|0;while(1){if(!e)break;Dj(e,d);e=Kp(e)|0}a:do if(hB(b)|0){e=co(b)|0;while(1){if(!e)break a;f=(c[e+16>>2]|0)+212|0;if(!(c[f>>2]|0))c[f>>2]=b;e=eo(b,e)|0}}while(0);switch(_j(b)|0){case 3:{d=d+16|0;a[(c[d>>2]|0)+241>>0]=1;k=19;break}case 2:{d=d+16|0;k=19;break}case 5:{d=d+16|0;a[(c[d>>2]|0)+242>>0]=1;k=21;break}case 4:{d=d+16|0;k=21;break}case 1:{$j(b)|0;break}case 6:break;default:{e=Dn(b)|0;f=Im(b,80018)|0;c[g>>2]=e;c[g+4>>2]=f;_l(0,80201,g)|0}}if((k|0)==19){k=$j(b)|0;k=ak(k,c[(c[d>>2]|0)+208>>2]|0)|0;c[(c[d>>2]|0)+208>>2]=k}else if((k|0)==21){k=$j(b)|0;k=ak(k,c[(c[d>>2]|0)+212>>2]|0)|0;c[(c[d>>2]|0)+212>>2]=k}if((hB(b)|0?(h=b+16|0,i=c[h>>2]|0,j=c[i+208>>2]|0,j|0):0)?(j|0)==(c[i+212>>2]|0):0){j=$j(b)|0;k=c[h>>2]|0;c[k+208>>2]=j;c[k+212>>2]=j}}l=m;return}function Ej(a,b){a=a|0;b=b|0;var d=0,e=0;c[41933]=0;d=co(a)|0;while(1){if(!d)break;if((Lj(d)|0)==(d|0)){e=Oj(b,Dn(d)|0)|0;c[(c[d+16>>2]|0)+148>>2]=e}d=eo(a,d)|0}d=co(a)|0;while(1){if(!d)break;b=d+16|0;if(!(c[(c[b>>2]|0)+148>>2]|0)){e=c[(c[(Lj(d)|0)+16>>2]|0)+148>>2]|0;c[(c[b>>2]|0)+148>>2]=e}d=eo(a,d)|0}return}function Fj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=co(a)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+148>>2]|0;i=Pm(a,h)|0;while(1){if(!i)break;do if((Tj(i)|0)==0?(j=i+-48|0,k=c[(c[(Lj(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)|0)+16>>2]|0)+148>>2]|0,(d|0)!=(k|0)):0){f=c[i>>2]&3;g=i+48|0;e=((f|0)==3?i:g)+40|0;f=c[(c[(c[((f|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0;if(!(Uj(i)|0)){if((Sj(c[(c[(c[e>>2]|0)+16>>2]|0)+212>>2]|0)|0)==0?(Sj(f)|0)==0:0){Vj(b,d,k,i);break}Wj(b,d,k,i);break}else{f=Lj(c[e>>2]|0)|0;e=c[i>>2]&3;if((f|0)!=(c[(c[(c[(c[(c[((e|0)==3?i:g)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+212>>2]|0)?(g=Lj(c[((e|0)==2?i:j)+40>>2]|0)|0,(g|0)!=(c[(c[(c[(c[(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+208>>2]|0)):0)e=k;else{e=d;d=k}Vj(b,d,e,i);break}}while(0);i=Rm(a,i)|0}h=eo(a,h)|0}return}function Gj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((hB(a)|0)!=0?(Sj(a)|0)!=0:0){g=co(a)|0;while(1){if(!g)break;if(!(Sm(a,g)|0)){f=c[(c[(Lj(g)|0)+16>>2]|0)+148>>2]|0;if(!d)d=Oj(b,80099)|0;an(b,d,f,0,1)|0}if(!(Pm(a,g)|0)){f=c[(c[(Lj(g)|0)+16>>2]|0)+148>>2]|0;if(!e)e=Oj(b,80104)|0;an(b,f,e,0,1)|0}g=eo(a,g)|0}if((e|0)!=0&(d|0)!=0){Rj(an(b,d,e,0,1)|0,0,1e3);f=d}else f=d}else f=d;d=Jp(a)|0;while(1){if(!d)break;Gj(d,b,f,e);d=Kp(d)|0}return}function Hj(b){b=b|0;var d=0,e=0;d=co(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;a[e+158>>0]=0;a[e+157>>0]=0;d=eo(b,d)|0}d=co(b)|0;while(1){if(!d)break;Pj(b,d);d=eo(b,d)|0}return}function Ij(a){a=a|0;var b=0,d=0,e=0,f=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+128>>2]=0;b=eo(a,b)|0}b=0;e=co(a)|0;while(1){if(!e)break;d=b+1|0;if(!(c[(c[e+16>>2]|0)+128>>2]|0)){Nj(a,e,d);b=d}e=eo(a,e)|0}a:do if((b|0)>1){f=Oj(a,80093)|0;d=1;e=co(a)|0;while(1){if(!e)break a;if((c[(c[e+16>>2]|0)+128>>2]|0)==(d|0)){an(a,f,e,0,1)|0;d=d+1|0}e=eo(a,e)|0}}while(0);return b|0}function Jj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=co(a)|0;while(1){if(!g)break;h=g+16|0;f=Pm(a,g)|0;while(1){if(!f)break;b=c[h>>2]|0;d=c[b+180>>2]|0;if(!d)b=ww((c[b+184>>2]<<2)+8|0)|0;else b=yw(d,(c[b+184>>2]<<2)+8|0)|0;d=c[h>>2]|0;c[d+180>>2]=b;d=d+184|0;e=c[d>>2]|0;c[d>>2]=e+1;c[b+(e<<2)>>2]=f;e=c[h>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=f+-48|0;b=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=ww((c[b+176>>2]<<2)+8|0)|0;else b=yw(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;i=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;b=c[i+172>>2]|0;i=i+176|0;d=c[i>>2]|0;c[i>>2]=d+1;c[b+(d<<2)>>2]=f;e=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;c[(c[e+172>>2]|0)+(c[e+176>>2]<<2)>>2]=0;f=Rm(a,f)|0}g=eo(a,g)|0}return}function Kj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=a+16|0;o=c[n>>2]|0;b[o+236>>1]=32767;b[o+238>>1]=-1;a:do if((f|0)>1){h=vw((f<<2)+4|0)|0;g=f+1|0;f=1;while(1){if((f|0)==(g|0)){m=h;o=h;break a}c[h+(f<<2)>>2]=32767;f=f+1|0}}else{m=0;o=0}while(0);i=(m|0)==0;h=co(a)|0;while(1){if(!h)break;j=c[(c[(c[(Lj(h)|0)+16>>2]|0)+148>>2]|0)+16>>2]|0;k=c[j+232>>2]|0;l=c[h+16>>2]|0;c[l+232>>2]=k;f=c[n>>2]|0;g=f+238|0;if((k|0)>(b[g>>1]|0))b[g>>1]=k;f=f+236|0;if((k|0)<(b[f>>1]|0))b[f>>1]=k;if(!i){j=c[j+128>>2]|0;c[l+128>>2]=j;l=m+(j<<2)|0;j=c[l>>2]|0;c[l>>2]=(j|0)<(k|0)?j:k}h=eo(a,h)|0}j=(m|0)!=0;b:do if(!j){m=b[(c[n>>2]|0)+236>>1]|0;g=m<<16>>16;if(m<<16>>16>0){f=co(a)|0;while(1){if(!f)break;m=(c[f+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-g;f=eo(a,f)|0}f=c[n>>2]|0;n=f+236|0;b[n>>1]=(e[n>>1]|0)-g;f=f+238|0;b[f>>1]=(e[f>>1]|0)-g;f=0}else f=0}else{f=co(a)|0;while(1){if(!f){f=1;break b}l=c[f+16>>2]|0;n=l+232|0;c[n>>2]=(c[n>>2]|0)-(c[m+(c[l+128>>2]<<2)>>2]|0);f=eo(a,f)|0}}while(0);Mj(a,f);i=co(d)|0;while(1){if(!i)break;g=i+16|0;f=c[g>>2]|0;h=c[f+172>>2]|0;if(h){_I(h);f=c[g>>2]|0}f=c[f+180>>2]|0;if(f|0)_I(f);i=eo(d,i)|0}_I(c[(c[(co(a)|0)+16>>2]|0)+112>>2]|0);f=co(a)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+112>>2]=0;f=eo(a,f)|0}if(j)_I(o);return}function Lj(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;d=(c[b>>2]|0)+152|0;e=c[d>>2]|0;if(e){if((e|0)!=(a|0)){e=Lj(e)|0;c[(c[b>>2]|0)+152>>2]=e;return e|0}}else c[d>>2]=a;return a|0}function Mj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=a+16|0;e=1;while(1){f=c[i>>2]|0;if((e|0)>(c[f+180>>2]|0))break;Mj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0,0);e=e+1|0}if((d|0)!=0|(c[f+200>>2]|0)!=0){b[f+236>>1]=32767;b[f+238>>1]=-1;e=0;h=co(a)|0;while(1){if(!h)break;g=c[(c[h+16>>2]|0)+232>>2]|0;d=c[i>>2]|0;f=d+238|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;d=d+236|0;if((g|0)<(b[d>>1]|0)){b[d>>1]=g;e=h}h=eo(a,h)|0}c[(c[i>>2]|0)+264>>2]=e}return}function Nj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+16>>2]|0)+128|0;a:do if(!(c[e>>2]|0)){c[e>>2]=d;e=Pm(a,b)|0;while(1){if(!e)break;Nj(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,d);e=Rm(a,e)|0}e=Sm(a,b)|0;while(1){if(!e)break a;Nj(a,c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,d);e=Tm(a,e)|0}}while(0);return}function Oj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=no(a,b,1)|0;b=f+16|0;c[(c[b>>2]|0)+176>>2]=0;e=vw(20)|0;d=c[b>>2]|0;c[d+172>>2]=e;c[d+184>>2]=0;d=vw(20)|0;b=c[b>>2]|0;c[b+180>>2]=d;d=c[41933]|0;e=b+168|0;if(!d){c[e>>2]=0;c[(c[a+16>>2]|0)+192>>2]=f}else{c[e>>2]=d;c[(c[d+16>>2]|0)+164>>2]=f}c[41933]=f;c[b+164>>2]=0;return f|0}function Pj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=d+16|0;e=c[h>>2]|0;f=e+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;a[e+158>>0]=1;d=Pm(b,d)|0;while(1){if(!d)break;e=Rm(b,d)|0;f=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;g=c[f+16>>2]|0;if(a[g+158>>0]|0){Qj(b,d);d=e;continue}if(a[g+157>>0]|0){d=e;continue}Pj(b,f);d=e}a[(c[h>>2]|0)+158>>0]=0}return}function Qj(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=c[b>>2]&3;g=b+-48|0;f=b+48|0;d=an(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,0)|0;if(!d){d=c[b>>2]&3;d=an(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,1)|0}g=c[b+16>>2]|0;Rj(d,e[g+170>>1]|0,c[g+156>>2]|0);qo(a,b)|0;return}function Rj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;a=c[a+16>>2]|0;g=a+170|0;h=e[g>>1]|0;b[g>>1]=(h|0)>(d|0)?h:d;d=a+156|0;c[d>>2]=(c[d>>2]|0)+f;return}function Sj(a){a=a|0;return (JA(Im(a,80109)|0,0)|0)&255|0}function Tj(b){b=b|0;var d=0,e=0;d=c[42233]|0;if((((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(IA(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Uj(a){a=a|0;var b=0,d=0;d=c[a>>2]&3;b=c[(c[(c[((d|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;a=c[(c[(c[((d|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;if((b|0)==(a|0))return 1;else{d=Xj(b,a)|0;return ((d|0)==(b|0)|(d|0)==(a|0))&1|0}return 0}function Vj(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;g=an(a,b,d,0,0)|0;if(!g){g=an(a,d,b,0,0)|0;if(!g){g=an(a,b,d,0,1)|0;if(!g){b=Dn(b)|0;f=Dn(d)|0;c[h>>2]=b;c[h+4>>2]=f;_l(1,80126,h)|0}else i=4}else i=4}else i=4;if((i|0)==4){i=c[f+16>>2]|0;Rj(g,e[i+170>>1]|0,c[i+156>>2]|0)}l=j;return}function Wj(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+112|0;j=m;i=m+4|0;h=Sm(a,d)|0;while(1){if(!h){k=6;break}n=Pm(a,c[((c[h>>2]&3|0)==3?h:h+48|0)+40>>2]|0)|0;if(n|0?(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)==(f|0):0)break;h=Tm(a,h)|0}if((k|0)==6){n=c[41934]|0;c[41934]=n+1;c[j>>2]=n;pL(i,80117,j)|0;i=Oj(a,i)|0;n=an(a,i,d,0,1)|0;i=an(a,i,f,0,1)|0;f=c[g+16>>2]|0;k=f+156|0;n=(c[n+16>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+((c[k>>2]|0)*1e3|0);n=c[i+16>>2]|0;j=n+170|0;b[j>>1]=b[(c[((e[j>>1]|0)>(e[f+170>>1]|0)?i:g)+16>>2]|0)+170>>1]|0;n=n+156|0;c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}l=m;return}function Xj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:while(1){e=a+16|0;while(1){if((a|0)==(b|0))break a;f=c[e>>2]|0;d=c[b+16>>2]|0;if((c[f+204>>2]|0)>=(c[d+204>>2]|0))break;b=c[d+200>>2]|0}a=c[f+200>>2]|0}return a|0}function Yj(a){a=a|0;return (co(a)|0)==0|0}function Zj(a,b){a=a|0;b=b|0;c[(c[a+16>>2]|0)+200>>2]=b;yj(b,a);xj(b,a);return}function _j(b){b=b|0;var c=0;b=Im(b,80018)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)if(xJ(b,80028)|0)if(xJ(b,80032)|0)if(xJ(b,80039)|0)if(xJ(b,80043)|0)if(!(xJ(b,80023)|0))b=1;else c=8;else b=5;else b=4;else b=3;else b=2;else c=8;if((c|0)==8)b=6;return b|0}function $j(a){a=a|0;var b=0,c=0;c=co(a)|0;a:do if(!c)b=0;else{b=Lj(c)|0;while(1){c=eo(a,c)|0;if(!c)break a;ak(b,c)|0}}while(0);return b|0}function ak(a,b){a=a|0;b=b|0;if(b){a=Lj(a)|0;c[(c[(Lj(b)|0)+16>>2]|0)+152>>2]=a}return a|0}function bk(a,b,d){a=a|0;b=b|0;d=d|0;No(b,80077,c[d>>2]|0,1)|0;return}function ck(a,b,d){a=a|0;b=b|0;d=d|0;No(b,80244,c[d+4>>2]|0,1)|0;return}function dk(a,b,d){a=a|0;b=b|0;d=d|0;No(b,80229,c[d+8>>2]|0,1)|0;return}function ek(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+240|0;m=p+120|0;n=p;c[42237]=ym(b,2,80259,0)|0;k=ym(b,2,80268,0)|0;c[42238]=k;a:do if((k|0)!=0|(c[42237]|0)!=0){k=co(b)|0;while(1){if(!k)break a;j=0;d=0;i=Um(b,k)|0;while(1){if(!i){f=0;break}e=c[i>>2]|0;g=e&3;f=c[((g|0)==2?i:i+-48|0)+40>>2]|0;h=i+48|0;b:do if((f|0)!=(c[((g|0)==3?i:h)+40>>2]|0)){g=c[42237]|0;do if((f|0)==(k|0)&(g|0)!=0){f=Jm(i,g)|0;if(!(a[f>>0]|0)){e=c[i>>2]|0;break}else{e=j;d=fk(m,d,k,i,f)|0;break b}}while(0);f=c[42238]|0;if((f|0?(c[((e&3|0)==3?i:h)+40>>2]|0)==(k|0):0)?(o=Jm(i,f)|0,(a[o>>0]|0)!=0):0)e=fk(n,j,k,i,o)|0;else e=j}else e=j;while(0);j=e;i=Vm(b,i,k)|0}while(1){if((f|0)>=(d|0)){e=0;break}e=m+(f*24|0)+4|0;if((c[m+(f*24|0)+8>>2]|0)>1)gk(k,e);e=c[e>>2]|0;if(e|0)_I(e);f=f+1|0}while(1){if((e|0)>=(j|0))break;d=n+(e*24|0)+4|0;if((c[n+(e*24|0)+8>>2]|0)>1)gk(k,d);d=c[d>>2]|0;if(d|0)_I(d);e=e+1|0}k=eo(b,k)|0}}while(0);l=p;return}function fk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;k=p;m=p+12|0;n=p+8|0;o=0;while(1){if((o|0)>=(d|0)){j=10;break}j=c[b+(o*24|0)>>2]|0;if((a[j>>0]|0)==(a[g>>0]|0)?(xJ(j,g)|0)==0:0){j=5;break}o=o+1|0}do if((j|0)==5){k=b+(o*24|0)+4|0;j=c[k>>2]|0;if(!j){j=b+(o*24|0)+8|0;g=j;j=ww((c[j>>2]<<2)+8|0)|0}else{q=b+(o*24|0)+8|0;g=q;j=yw(j,(c[q>>2]<<2)+8|0)|0}c[k>>2]=j;r=c[g>>2]|0;q=r+1|0;c[g>>2]=q;c[j+(r<<2)>>2]=f;c[(c[k>>2]|0)+(q<<2)>>2]=0;j=13}else if((j|0)==10)if((d|0)>4){r=Dn(e)|0;c[k>>2]=5;c[k+4>>2]=r;_l(1,80277,k)|0;break}else{s=b+(o*24|0)+8|0;c[s>>2]=0;k=vw(8)|0;r=b+(o*24|0)+4|0;c[r>>2]=k;q=c[s>>2]|0;j=q+1|0;c[s>>2]=j;c[k+(q<<2)>>2]=f;c[(c[r>>2]|0)+(j<<2)>>2]=0;c[b+(o*24|0)>>2]=g;c[b+(o*24|0)+12>>2]=0;h[b+(o*24|0)+16>>3]=0.0;d=d+1|0;j=13;break}while(0);if((j|0)==13){At(f,m,n);j=(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)==(e|0)?c[n>>2]|0:c[m>>2]|0;if(j){r=b+(o*24|0)+12|0;s=c[r>>2]|0;c[r>>2]=s+1;if(!s)i=+Et(f,j);else i=0.0;h[b+(o*24|0)+16>>3]=i}}l=p;return d|0}function gk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+80|0;t=x+68|0;u=x+64|0;r=x;v=d+4|0;n=c[v>>2]|0;w=b+16|0;i=0;p=0.0;q=0.0;while(1){if((i|0)>=(n|0))break;f=c[(c[d>>2]|0)+(i<<2)>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;g=c[e+16>>2]|0;s=c[w>>2]|0;k=+h[g+16>>3]-+h[s+16>>3];m=+h[g+24>>3]-+h[s+24>>3];o=+QJ(k,m);i=i+1|0;p=k/o+p;q=m/o+q}j=+QJ(p,q);s=c[w>>2]|0;k=+h[s+16>>3];m=+h[s+24>>3];y=+h[s+96>>3]+ +h[s+88>>3];o=+h[s+80>>3];s=y>o+ +(c[(c[(ro(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0;if(s)o=+h[e+96>>3]+ +h[e+88>>3];else{o=+h[e+80>>3];o=o+ +(c[(c[(ro(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0}y=+h[e+16>>3]+o*(p/j);j=+h[e+24>>3]+o*(q/j);h[r>>3]=k;n=r+8|0;h[n>>3]=m;h[r+16>>3]=(y+k*2.0)*.3333333333333333;h[r+24>>3]=(j+m*2.0)*.3333333333333333;h[r+32>>3]=(y*2.0+k)*.3333333333333333;h[r+40>>3]=(j*2.0+m)*.3333333333333333;h[r+48>>3]=y;h[r+56>>3]=j;Gz(b,r);s=c[w>>2]|0;j=+h[r>>3]-+h[s+16>>3];k=+h[n>>3]-+h[s+24>>3];j=+(~~(j+(j>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);y=+h[s+88>>3];s=~~((y+j)*256.0/(+h[s+96>>3]+y))&255;r=0;while(1){if((r|0)>=(c[v>>2]|0))break;n=c[(c[d>>2]|0)+(r<<2)>>2]|0;At(n,t,u);while(1){if(!n)break;else g=n;while(1){if(!g){i=n;break}e=c[g>>2]|0;i=g+-48|0;if((c[((e&3|0)==2?g:i)+40>>2]|0)==(b|0)){e=c[g+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[g>>2]|0}f=g+16|0;if((c[((e&3|0)==3?g:g+48|0)+40>>2]|0)==(b|0)){e=c[f>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[f>>2]|0)+112>>0]|0)!=1){g=0;continue}e=c[(c[((c[g>>2]&3|0)==2?g:i)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){g=0;continue}if((c[e+184>>2]|0)!=1){g=0;continue}g=c[c[e+180>>2]>>2]|0}while(1){if(!i)break;e=c[i>>2]|0;if((c[((e&3|0)==2?i:i+-48|0)+40>>2]|0)==(b|0)){e=c[i+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[i>>2]|0}f=i+48|0;g=i+16|0;if((c[((e&3|0)==3?i:f)+40>>2]|0)==(b|0)){e=c[g>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[g>>2]|0)+112>>0]|0)!=1){i=0;continue}e=c[(c[((c[i>>2]&3|0)==3?i:f)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){i=0;continue}if((c[e+176>>2]|0)!=1){i=0;continue}i=c[c[e+172>>2]>>2]|0}n=c[(c[n+16>>2]|0)+172>>2]|0}r=r+1|0}a[(c[w>>2]|0)+145>>0]=1;l=x;return}function hk(a){a=a|0;var b=0,d=0,e=0;Xg(a);b=c[a>>2]&3;d=a+-48|0;e=a+48|0;b=Sg(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0)|0;if(!b){b=c[a>>2]&3;ah(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0,a)|0}else ih(a,b);return}function ik(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+16|0;e=0;while(1){b=c[f>>2]|0;if((e|0)>=(c[b+220>>2]|0))break;d=c[(c[b+216>>2]|0)+(e<<2)>>2]|0;c[b+192>>2]=d;b=d;d=b;while(1){if(!d)break;g=c[d+16>>2]|0;a[g+157>>0]=0;d=c[g+164>>2]|0}while(1){if(!b)break;jk(b);b=c[(c[b+16>>2]|0)+164>>2]|0}e=e+1|0}return}function jk(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+16|0;d=c[g>>2]|0;b=d+157|0;if(!(a[b>>0]|0)){a[b>>0]=1;a[d+158>>0]=1;b=0;while(1){f=c[(c[d+180>>2]|0)+(b<<2)>>2]|0;if(!f)break;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;e=c[d+16>>2]|0;if(!(a[e+158>>0]|0)){if(!(a[e+157>>0]|0))jk(d)}else{hk(f);b=b+-1|0}b=b+1|0;d=c[g>>2]|0}a[d+158>>0]=0}return}function kk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=co(a)|0;b=0;while(1){if(!e)break;d=Pm(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;h=c[(c[(c[((g|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;g=c[(c[(c[((g|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;f=h-g|0;d=Rm(a,d)|0;b=((h|0)==(g|0)?0:((f|0)>-1?f:0-f|0)+-1|0)+b|0}e=eo(a,e)|0}return b|0}function lk(b){b=b|0;var d=0,e=0,f=0,g=0;e=co(b)|0;while(1){if(!e)break;g=c[e+16>>2]|0;f=c[g+176>>2]|0;g=g+172|0;d=0;while(1){if((d|0)>=(f|0))break;a[(c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+112>>0]=0;d=d+1|0}e=eo(b,e)|0}return}function mk(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;o=q;j=c[b+24>>2]|0;nk(a);k=(j|0)==-1;m=b+8|0;i=k^1;n=c[13918]|0;f=1797693134862315708145274.0e284;g=0;while(1){if(!(k|(g|0)<(j|0)))break;d=co(a)|0;while(1){if(!d)break;c[(c[d+16>>2]|0)+232>>2]=0;d=eo(a,d)|0}jj(a);e=+ok(a);h[m>>3]=e;if(0){h[o>>3]=e;zL(n,80329,o)|0;e=+h[m>>3]}if(!(!(e<=+h[b>>3])&(!(f<=e)|i))){p=9;break}pk(a);f=e;g=g+1|0}if((p|0)==9){p=b+20|0;c[b+16>>2]=c[p>>2];c[p>>2]=g}jj(a);qk(a);rk();h[m>>3]=+ok(a);l=q;return}function nk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0;c[41938]=ww((mn(a)|0)*24|0)|0;c[41937]=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+120>>2]=-1;b=eo(a,b)|0}i=co(a)|0;while(1){if(!i)break;j=i+16|0;do if(!(c[(c[j>>2]|0)+216>>2]|0)){f=vw(4)|0;g=c[41938]|0;k=c[41937]|0;c[g+(k*24|0)>>2]=f;c[f>>2]=i;c[g+(k*24|0)+4>>2]=1;j=c[j>>2]|0;h[g+(k*24|0)+8>>3]=+h[j+32>>3];h[g+(k*24|0)+16>>3]=+h[j+40>>3];c[j+120>>2]=k;c[41937]=k+1}else{g=KA(i)|0;k=g+16|0;b=c[k>>2]|0;d=c[b+120>>2]|0;if((d|0)>-1){g=c[41938]|0;f=c[g+(d*24|0)>>2]|0;e=g+(d*24|0)+4|0;k=c[e>>2]|0;c[e>>2]=k+1;c[f+(k<<2)>>2]=i;k=c[j>>2]|0;j=g+(d*24|0)+8|0;h[j>>3]=+h[j>>3]+ +h[k+32>>3];j=g+(d*24|0)+16|0;l=+h[j>>3];m=+h[k+40>>3];h[j>>3]=l<m?m:l;c[k+120>>2]=d;break}d=vw(c[b+216>>2]<<2)|0;e=c[41938]|0;f=c[41937]|0;b=e+(f*24|0)|0;c[b>>2]=d;c[d>>2]=g;if((g|0)==(i|0)){h[e+(f*24|0)+8>>3]=+h[(c[k>>2]|0)+32>>3];d=1;b=i}else{c[(c[b>>2]|0)+4>>2]=i;n=c[k>>2]|0;b=c[j>>2]|0;h[e+(f*24|0)+8>>3]=+h[b+32>>3]+ +h[n+32>>3];d=2;b=+h[n+40>>3]<+h[b+40>>3]?i:g}c[e+(f*24|0)+4>>2]=d;h[e+(f*24|0)+16>>3]=+h[(c[b+16>>2]|0)+40>>3];c[(c[k>>2]|0)+120>>2]=f;c[(c[j>>2]|0)+120>>2]=f;c[41937]=f+1}while(0);i=eo(a,i)|0}return}function ok(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0;qk(a);g=c[41935]|0;e=c[a+16>>2]|0;b=+(O(c[e+252>>2]|0,g+-1|0)|0);f=c[41936]|0;e=e+248|0;a=0;d=0.0;while(1){if((a|0)>=(g|0))break;i=+h[f+(a*40|0)+24>>3]+ +(O(c[e>>2]|0,c[f+(a*40|0)+16>>2]|0)|0);j=+h[f+(a*40|0)+32>>3]+b;a=a+1|0;b=j;d=d<i?i:d}return +(d/b)}function pk(a){a=a|0;var b=0;c[41939]=vw((mn(a)|0)<<2)|0;b=0;while(1){if((b|0)>=(mn(a)|0))break;c[(c[41939]|0)+(b<<2)>>2]=b;b=b+1|0}qk(a);sk(a);tk(a);return}function qk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0,l=0;c[41935]=0;b=c[41936]|0;if(b|0){e=0;while(1){if((e|0)>=(c[41937]|0))break;d=c[b+(e*40|0)+4>>2]|0;if(d){_I(d);b=c[41936]|0}d=c[b+(e*40|0)+8>>2]|0;if(d){_I(d);b=c[41936]|0}e=e+1|0}_I(b)}c[41936]=vw((c[41937]|0)*40|0)|0;b=0;while(1){d=c[41937]|0;if((b|0)>=(d|0))break;k=vw(d<<2)|0;c[(c[41936]|0)+(b*40|0)+4>>2]=k;k=vw(c[41937]<<2)|0;l=c[41936]|0;c[l+(b*40|0)+8>>2]=k;c[l+(b*40|0)>>2]=b;c[l+(b*40|0)+12>>2]=0;c[l+(b*40|0)+16>>2]=0;l=l+(b*40|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b=b+1|0}e=co(a)|0;while(1){if(!e)break;d=Pm(a,e)|0;while(1){if(!d)break;i=c[d>>2]|0;f=d+-48|0;g=c[41936]|0;b=c[(c[(c[((i&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){b=b+1|0;if((b|0)>=(c[(c[(c[((i&3|0)==2?d:f)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=g+(b*40|0)+16|0;c[i>>2]=(c[i>>2]|0)+1;i=c[d>>2]|0}d=Rm(a,d)|0}e=eo(a,e)|0}i=c[41937]|0;k=c[41938]|0;l=c[41936]|0;d=a+16|0;b=0;while(1){if((b|0)>=(i|0))break;e=(c[c[k+(b*24|0)>>2]>>2]|0)+16|0;f=c[(c[e>>2]|0)+232>>2]|0;if((f|0)>=(c[41935]|0))c[41935]=f+1;g=l+(f*40|0)+24|0;j=+h[g>>3];h[g>>3]=j+ +h[k+(b*24|0)+8>>3]*72.0+(j>0.0?+(c[(c[d>>2]|0)+248>>2]|0):0.0);g=l+(f*40|0)+32|0;j=+h[k+(b*24|0)+16>>3]*72.0;if(+h[g>>3]<j)h[g>>3]=j;c[(c[l+(f*40|0)+4>>2]|0)+(c[l+(f*40|0)+12>>2]<<2)>>2]=k+(b*24|0);a=l+((c[(c[e>>2]|0)+232>>2]|0)*40|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;b=b+1|0}return}function rk(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c[41935]|0;l=c[41936]|0;j=0;b=0;a=0;while(1){if((j|0)>=(k|0))break;d=l+(j*40|0)|0;i=c[l+(j*40|0)+12>>2]|0;e=(b|0)==0;a:do if(i)if(!e){if((c[d>>2]|0)>(a|0)){f=l+(j*40|0)+4|0;d=0;while(1){if((d|0)>=(i|0))break a;g=c[(c[f>>2]|0)+(d<<2)>>2]|0;h=c[g+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;m=(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-b;e=e+1|0}d=d+1|0}}}else b=0;else{if(e)a=c[d>>2]|0;b=b+1|0}while(0);j=j+1|0}return}function sk(a){a=a|0;var b=0;b=c[41939]|0;rL(b,mn(a)|0,4,15);return}function tk(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;j=c[41935]|0;k=c[41936]|0;g=c[41939]|0;i=0;while(1){if((i|0)>=(j|0)){e=0;d=0.0;break}e=c[g+(i<<2)>>2]|0;f=i+1|0;if((c[k+(e*40|0)+12>>2]|0)<2)i=f;else{l=4;break}}if((l|0)==4)if((j|0)>(f|0))d=+h[k+((c[g+(f<<2)>>2]|0)*40|0)+24>>3];else d=0.0;a:do if((i|0)!=(j|0)){rL(c[k+(e*40|0)+4>>2]|0,c[k+(e*40|0)+12>>2]|0,4,16);g=c[41936]|0;r=+h[g+(e*40|0)+24>>3];r=!(d<=r*.25)&!(d>=r*.75)?d:r*.5;s=c[g+(e*40|0)+12>>2]|0;q=b+16|0;n=0;o=0;d=0.0;f=0;p=0;while(1){if((p|0)>=(f+s|0))break a;do if(!(c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]|0)){l=c[(c[g+(e*40|0)+4>>2]|0)+(p<<2)>>2]|0;b=l+8|0;m=+h[b>>3]*72.0+d+(d>0.0?+(c[(c[q>>2]|0)+248>>2]|0):0.0);i=(o|0)!=0;if(!(i&!(m<=r))){j=i?n:l;i=i?o:1;d=m;break}j=n+4|0;k=l+4|0;i=0;while(1){if((i|0)<(c[j>>2]|0))g=0;else break;while(1){if((g|0)>=(c[k>>2]|0))break;a[(c[(ah(c[(c[n>>2]|0)+(i<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0,0)|0)+16>>2]|0)+112>>0]=1;g=g+1|0}i=i+1|0}g=c[41936]|0;c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]=1;j=g+(e*40|0)+12|0;c[j>>2]=(c[j>>2]|0)+-1;j=g+(e*40|0)+16|0;c[j>>2]=(c[j>>2]|0)+1;j=g+(e*40|0)+24|0;h[j>>3]=+h[b>>3]*-72.0-+(c[(c[q>>2]|0)+248>>2]|0)+ +h[j>>3];j=n;i=o}else{j=n;i=o;f=f+1|0}while(0);n=j;o=i;p=p+1|0}}while(0);return}function uk(a,b){a=a|0;b=b|0;a=vk(c[a>>2]|0)|0;b=vk(c[b>>2]|0)|0;return ((b|0)<(a|0)&1)-((b|0)>(a|0)&1)|0}function vk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[f>>2]|0))break;e=c[(c[a>>2]|0)+(d<<2)>>2]|0;g=ro(e)|0;e=Pm(g,e)|0;while(1){if(!e)break;e=Rm(g,e)|0;b=b+1|0}d=d+1|0}return b|0}function wk(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[41936]|0;e=+h[f+((c[b>>2]|0)*40|0)+24>>3];d=+h[f+((c[a>>2]|0)*40|0)+24>>3];return (e>d&1)-(e<d&1)|0}function xk(a){a=a|0;var b=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+216>>2]=0;b=eo(a,b)|0}return}function yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g+20|0;c[d>>2]=5;a=Im(a,84624)|0;if(a|0?(c[e>>2]=g,c[e+4>>2]=d,(cM(a,80344,e)|0)>=1):0)_l(0,80351,f)|0;c[b+24>>2]=0;c[b+32>>2]=0;l=g;return 0}function zk(b){b=b|0;var d=0,e=0;d=c[42233]|0;if((((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(IA(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Ak(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;Vk(a);b=co(a)|0;while(1){if(!b)break;d=Pm(a,b)|0;while(1){if(!d)break;do if(((c[(c[d+16>>2]|0)+172>>2]|0)==0?(zk(d)|0)==0:0)?(e=d+48|0,f=KA(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)|0,g=d+-48|0,h=KA(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)|0,(f|0)!=(h|0)):0){if((c[(c[f+16>>2]|0)+212>>2]|0)==0?(c[(c[h+16>>2]|0)+212>>2]|0)==0:0){i=Sg(f,h)|0;if(!i){ah(f,h,d)|0;break}else{ih(d,i);break}}i=c[d>>2]&3;Bk(a,c[((i|0)==3?d:e)+40>>2]|0,c[((i|0)==2?d:g)+40>>2]|0,d)}while(0);d=Rm(a,d)|0}b=eo(a,b)|0}return}function Bk(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[g>>2]&3;h=c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)k=0;else k=(c[h+232>>2]|0)-(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;h=c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)h=0;else h=(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)-(c[h+232>>2]|0)|0;j=g+16|0;k=h+k+(e[(c[j>>2]|0)+170>>1]|0)|0;b=fh(b)|0;a[(c[b+16>>2]|0)+156>>0]=2;i=KA(d)|0;d=KA(f)|0;f=Mi(b,i,(k|0)>0?0.0:+(0-k|0),(c[(c[j>>2]|0)+156>>2]|0)*10|0)|0;c[(c[(Mi(b,d,+(((k|0)>0?k:0)|0),c[(c[j>>2]|0)+156>>2]|0)|0)+16>>2]|0)+116>>2]=g;c[(c[f+16>>2]|0)+116>>2]=g;return}function Ck(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[d>>2]&3;i=(j|0)==3?d:d+48|0;j=(j|0)==2?d:d+-48|0;j=c[(c[(c[((c[(c[(c[i+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[(c[j+40>>2]|0)+16>>2]|0)+232>>2]|0)?i:j)+40>>2]|0)+16>>2]|0)+232>>2]|0;i=d+16|0;d=(c[i>>2]|0)+172|0;if(c[d>>2]|0)ma(80440,80462,148,80471);c[d>>2]=f;h=(g|0)==0;do{d=c[i>>2]|0;if(h)g=c[f+16>>2]|0;else{g=c[f+16>>2]|0;k=g+168|0;b[k>>1]=(e[k>>1]|0)+(e[d+168>>1]|0)}k=g+154|0;b[k>>1]=(e[k>>1]|0)+(e[d+154>>1]|0);g=g+156|0;c[g>>2]=(c[g>>2]|0)+(c[d+156>>2]|0);d=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)==(j|0))break;Dk(a,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((f|0)!=0);return}function Dk(a,b){a=a|0;b=b|0;var d=0.0;d=+((c[(c[a+16>>2]|0)+248>>2]|0)/2|0|0);b=c[b+16>>2]|0;a=b+88|0;h[a>>3]=+h[a>>3]+d;b=b+96|0;h[b>>3]=+h[b>>3]+d;return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0;if(((((a|0)!=0&(b|0)!=0?(e=c[a>>2]&3,d=c[b>>2]&3,(c[((e|0)==3?a:a+48|0)+40>>2]|0)==(c[((d|0)==3?b:b+48|0)+40>>2]|0)):0)?(c[((e|0)==2?a:a+-48|0)+40>>2]|0)==(c[((d|0)==2?b:b+-48|0)+40>>2]|0):0)?(c[(c[a+16>>2]|0)+96>>2]|0)==(c[(c[b+16>>2]|0)+96>>2]|0):0)?(hj(a,b)|0)!=0:0)a=1;else a=0;return a|0}function Fk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b+16|0;d=c[r>>2]|0;c[d+192>>2]=0;c[d+232>>2]=0;Vk(b);d=1;while(1){e=c[r>>2]|0;if((d|0)>(c[e+180>>2]|0))break;Wk(b,c[(c[e+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}h=co(b)|0;while(1){if(!h)break;g=Pm(b,h)|0;while(1){if(!g)break;d=c[g>>2]|0;e=(c[(c[((d&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+160|0;f=a[e>>0]|0;if(f<<24>>24<3){a[e>>0]=f+1<<24>>24;d=c[g>>2]|0}d=(c[(c[((d&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+160|0;e=a[d>>0]|0;if(e<<24>>24<3)a[d>>0]=e+1<<24>>24;g=Rm(b,g)|0}h=eo(b,h)|0}m=co(b)|0;while(1){if(!m)break;if((c[(c[m+16>>2]|0)+212>>2]|0)==0?(m|0)==(KA(m)|0):0){bh(b,m);l=(c[r>>2]|0)+232|0;c[l>>2]=(c[l>>2]|0)+1}d=0;l=Pm(b,m)|0;while(1){if(!l)break;k=l+16|0;h=c[k>>2]|0;a:do if(!(c[h+172>>2]|0)){if(Gk(l)|0){if(!(Ek(d,l)|0)){Hk(b,l);d=l;break}e=c[(c[d+16>>2]|0)+172>>2]|0;if(e|0){Ck(b,l,e,0);Yg(l);break}k=c[l>>2]&3;if((c[(c[(c[((k|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)!=(c[(c[(c[((k|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;ih(l,d);Yg(l);break}if(d){i=c[l>>2]&3;e=l+48|0;f=c[((i|0)==3?l:e)+40>>2]|0;g=c[d>>2]&3;if((f|0)==(c[((g|0)==3?d:d+48|0)+40>>2]|0)?(n=c[((i|0)==2?l:l+-48|0)+40>>2]|0,(n|0)==(c[((g|0)==2?d:d+-48|0)+40>>2]|0)):0){if((c[(c[f+16>>2]|0)+232>>2]|0)==(c[(c[n+16>>2]|0)+232>>2]|0)){ih(l,d);Yg(l);break}if(((c[h+96>>2]|0)==0?(o=d+16|0,(c[(c[o>>2]|0)+96>>2]|0)==0):0)?(hj(l,d)|0)!=0:0)if(!(a[174076]|0)){Ck(b,l,c[(c[o>>2]|0)+172>>2]|0,1);Yg(l);break}else{a[(c[k>>2]|0)+112>>0]=6;break}else i=e}else i=e}else i=l+48|0;h=c[l>>2]&3;e=c[((h|0)==3?l:i)+40>>2]|0;j=l+-48|0;if((e|0)==(c[((h|0)==2?l:j)+40>>2]|0)){Yg(l);d=l;break}e=KA(e)|0;f=KA(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)|0;h=c[l>>2]&3;if((c[((h|0)==3?l:i)+40>>2]|0)==(e|0)?(c[((h|0)==2?l:j)+40>>2]|0)==(f|0):0){g=c[(c[e+16>>2]|0)+232>>2]|0;h=c[(c[f+16>>2]|0)+232>>2]|0;if((g|0)==(h|0)){gh(b,l);d=l;break}if((h|0)>(g|0)){Ik(b,e,f,l);d=l;break}e=an(b,f,e,0,0)|0;do if(e|0?(p=c[e>>2]&3,q=c[((p|0)==2?e:e+-48|0)+40>>2]|0,(q|0)!=(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)):0){f=e+16|0;if(!(c[(c[f>>2]|0)+172>>2]|0))Ik(b,c[((p|0)==3?e:e+48|0)+40>>2]|0,q,e);if((c[(c[k>>2]|0)+96>>2]|0)==0?(c[(c[f>>2]|0)+96>>2]|0)==0:0){if(!(hj(l,e)|0))break;if(!(a[174076]|0)){Yg(l);Ck(b,l,c[(c[f>>2]|0)+172>>2]|0,1);break a}else{a[(c[k>>2]|0)+112>>0]=6;a[(c[f>>2]|0)+153>>0]=1;break a}}}while(0);d=c[l>>2]&3;Ik(b,c[((d|0)==2?l:j)+40>>2]|0,c[((d|0)==3?l:i)+40>>2]|0,l);d=l}}else d=l;while(0);l=Rm(b,l)|0}m=eo(b,m)|0}if((Vf(b)|0)!=(b|0)){d=c[(c[r>>2]|0)+216>>2]|0;if(!d)d=ww(4)|0;else d=yw(d,4)|0;r=c[r>>2]|0;c[r+216>>2]=d;c[d>>2]=c[r+192>>2]}return}function Gk(b){b=b|0;var d=0;d=c[b>>2]&3;if((a[(c[(c[((d|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7)b=1;else b=(a[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7&1;return b|0}function Hk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=Lk(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;g=Lk(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;i=(c[(c[f+16>>2]|0)+232>>2]|0)>(c[(c[g+16>>2]|0)+232>>2]|0);e=i?f:g;f=i?g:f;g=f+16|0;i=e+16|0;a:do if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[i>>2]|0)+212>>2]|0)){h=Sg(f,e)|0;if(h|0){Ck(b,d,h,1);break}if((c[(c[g>>2]|0)+232>>2]|0)!=(c[(c[i>>2]|0)+232>>2]|0)){Ik(b,f,e,d);e=(c[d+16>>2]|0)+172|0;while(1){e=c[e>>2]|0;if(!e)break a;f=e+-48|0;if((c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[i>>2]|0)+232>>2]|0))break a;a[(c[e+16>>2]|0)+112>>0]=5;e=c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+180>>2]|0}}}while(0);return}function Ik(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;f=c[k>>2]|0;if(!(c[f+96>>2]|0))j=-1;else j=((c[(c[d+16>>2]|0)+232>>2]|0)+(c[(c[b+16>>2]|0)+232>>2]|0)|0)/2|0;if(c[f+172>>2]|0)ma(80483,80462,89,80508);i=d+16|0;h=c[(c[b+16>>2]|0)+232>>2]|0;while(1){g=h+1|0;f=c[(c[i>>2]|0)+232>>2]|0;if((h|0)>=(f|0))break;if((g|0)<(f|0)){if((g|0)==(j|0))f=Jk(a,e)|0;else f=Kk(a)|0;c[(c[f+16>>2]|0)+232>>2]=g}else f=d;vi(ah(b,f,e)|0);h=g;b=f}if(!(c[(c[k>>2]|0)+172>>2]|0))ma(80519,80462,103,80508);else return}function Jk(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0.0;i=d+16|0;g=c[(c[i>>2]|0)+96>>2]|0;e=+h[g+24>>3];f=+h[g+32>>3];g=fh(b)|0;d=g+16|0;c[(c[d>>2]|0)+104>>2]=c[(c[i>>2]|0)+96>>2];j=+(c[(c[(so(g)|0)+16>>2]|0)+248>>2]|0);h[(c[d>>2]|0)+88>>3]=j;if(!(a[(c[i>>2]|0)+114>>0]|0)){b=(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0;i=c[d>>2]|0;h[i+80>>3]=b?f:e;h[i+96>>3]=b?e:f}return g|0}function Kk(a){a=a|0;var b=0;b=fh(a)|0;Dk(a,b);return b|0}function Lk(b){b=b|0;var d=0;d=c[b+16>>2]|0;if((a[d+159>>0]|0)==7)b=c[(c[(c[(c[d+212>>2]|0)+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;else b=KA(b)|0;return b|0}function Mk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=Vf(a)|0;h=co(a)|0;while(1){if(!h)break;b=Um(j,h)|0;i=0;while(1){if(!b)break;l=Vm(j,b,h)|0;if(Bo(a,b)|0){k=i;b=l;i=k;continue}k=(c[b>>2]&3|0)==2?b:b+-48|0;m=(Ek(i,k)|0)==0;e=c[k>>2]&3;b=c[((e|0)==3?k:k+48|0)+40>>2]|0;d=c[(c[b+16>>2]|0)+232>>2]|0;e=c[((e|0)==2?k:k+-48|0)+40>>2]|0;f=c[(c[e+16>>2]|0)+232>>2]|0;g=(d|0)==(f|0);if(!m){c[(c[k+16>>2]|0)+172>>2]=g?i:0;b=c[(c[i+16>>2]|0)+172>>2]|0;if(!b){m=i;b=l;i=m;continue}Ck(a,k,b,0);Zg(k);m=i;b=l;i=m;continue}if(!g)if((f|0)>(d|0)){Nk(b,e,k);b=l;i=k;continue}else{Nk(e,b,k);b=l;i=k;continue}b=Ug(b,e)|0;if(!b){gh(j,k);b=l;i=k;continue}if((k|0)==(b|0)){m=i;b=l;i=m;continue}Zg(k);if(c[(c[k+16>>2]|0)+172>>2]|0){m=i;b=l;i=m;continue}ih(k,b);m=i;b=l;i=m}h=eo(a,h)|0}return}function Nk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=Ok(a)|0;e=Ok(b)|0;Pk(f,e,d,c[(c[d+16>>2]|0)+172>>2]|0,(f|0)==(a|0)&(e|0)==(b|0)?1:5);return}function Ok(b){b=b|0;var d=0,e=0,f=0;d=c[b+16>>2]|0;e=c[d+212>>2]|0;if((e|0)!=0?(f=c[e+16>>2]|0,(a[f+272>>0]|0)==0):0)b=c[(c[f+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;return b|0}function Pk(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;k=c[(c[n>>2]|0)+232>>2]|0;o=e+16|0;i=c[(c[o>>2]|0)+232>>2]|0;if((i|0)<=(k|0))ma(80544,80572,81,80582);m=c[g>>2]&3;if(!((c[((m|0)==3?g:g+48|0)+40>>2]|0)==(d|0)?(c[((m|0)==2?g:g+-48|0)+40>>2]|0)==(e|0):0))l=5;a:do if((l|0)==5){if((b[(c[g+16>>2]|0)+168>>1]|0)>1){c[(c[f+16>>2]|0)+172>>2]=0;if(((i-k|0)==1?(j=Sg(d,e)|0,j|0):0)?hj(f,j)|0:0){ih(f,j);if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;Yg(f);break}m=h&255;h=d;l=c[(c[n>>2]|0)+232>>2]|0;while(1){i=c[(c[o>>2]|0)+232>>2]|0;if((l|0)>=(i|0))break a;if((l|0)<(i+-1|0)){i=Vf(d)|0;j=g+-48|0;i=Qk(i,c[((c[g>>2]&3|0)==2?g:j)+40>>2]|0)|0;k=g}else{i=e;j=g+-48|0;k=g}a[(c[(ah(h,i,f)|0)+16>>2]|0)+112>>0]=m;n=(c[g+16>>2]|0)+168|0;b[n>>1]=(b[n>>1]|0)+-1<<16>>16;h=i;l=l+1|0;g=c[c[(c[(c[((c[k>>2]&3|0)==2?g:j)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}}do if((i-k|0)==1){g=Sg(d,e)|0;if(g|0?hj(f,g)|0:0){c[(c[f+16>>2]|0)+172>>2]=g;m=c[g+16>>2]|0;a[m+112>>0]=h;m=m+168|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16;if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;Yg(f);break}c[(c[f+16>>2]|0)+172>>2]=0;g=ah(d,e,f)|0;a[(c[g+16>>2]|0)+112>>0]=h}while(0);i=c[(c[o>>2]|0)+232>>2]|0;if((i-(c[(c[n>>2]|0)+232>>2]|0)|0)>1){if((c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)==(d|0))l=i;else{n=f+16|0;c[(c[n>>2]|0)+172>>2]=0;l=ah(d,c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0,f)|0;c[(c[n>>2]|0)+172>>2]=l;Xg(g);g=l;l=c[(c[o>>2]|0)+232>>2]|0}while(1){i=c[g>>2]&3;j=c[((i|0)==2?g:g+-48|0)+40>>2]|0;k=c[j+16>>2]|0;if((c[k+232>>2]|0)==(l|0))break;g=c[c[k+180>>2]>>2]|0}if((j|0)!=(e|0)){a[(c[(ah(c[((i|0)==3?g:g+48|0)+40>>2]|0,e,f)|0)+16>>2]|0)+112>>0]=h;Xg(g)}}}while(0);return}function Qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=b+16|0;b=c[d>>2]|0;e=c[b+232>>2]|0;Rk(a,e,c[b+236>>2]|0,2);b=fh(a)|0;d=c[d>>2]|0;f=c[b+16>>2]|0;h[f+88>>3]=+h[d+88>>3];h[f+96>>3]=+h[d+96>>3];c[f+232>>2]=c[d+232>>2];d=(c[d+236>>2]|0)+1|0;c[f+236>>2]=d;c[(c[(c[(c[a+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return b|0}function Rk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+16|0;f=c[(c[h>>2]|0)+196>>2]|0;i=c[f+(b<<6)+4>>2]|0;a:do if((e|0)<1){d=d-e|0;while(1){g=d+1|0;a=c[f+(b<<6)>>2]|0;if((g|0)>=(a|0))break;a=c[i+(g<<2)>>2]|0;f=d+e|0;c[(c[a+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=a;d=g;f=c[(c[h>>2]|0)+196>>2]|0}g=e+-1|0;d=g+a|0;while(1){if((d|0)>=(a|0))break a;c[i+(d<<2)>>2]=0;f=c[(c[h>>2]|0)+196>>2]|0;d=d+1|0;a=c[f+(b<<6)>>2]|0}}else{g=e+-1|0;a=c[f+(b<<6)>>2]|0;while(1){a=a+-1|0;if((a|0)<=(d|0))break;j=c[i+(a<<2)>>2]|0;f=g+a|0;c[(c[j+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=j}f=e+d|0;a=d;while(1){a=a+1|0;if((a|0)>=(f|0))break;c[i+(a<<2)>>2]=0}a=c[(c[h>>2]|0)+196>>2]|0;f=a;a=c[a+(b<<6)>>2]|0}while(0);c[f+(b<<6)>>2]=g+a;return}function Sk(a){a=a|0;var b=0;Fk(a);b=c[a+16>>2]|0;c[b+220>>2]=1;c[c[b+216>>2]>>2]=c[b+192>>2];si(a);Zh(a,0);Tk(a);Mk(a);Uk(a);return}function Tk(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=Vf(d)|0;l=d+16|0;f=c[l>>2]|0;j=b[f+236>>1]|0;e=j<<16>>16;m=k+16|0;if(j<<16>>16>0)a[(c[(c[m>>2]|0)+196>>2]|0)+(e+-1<<6)+49>>0]=0;j=e;while(1){if((j|0)>(b[f+238>>1]|0))break;i=c[(c[(c[(c[f+268>>2]|0)+(j<<2)>>2]|0)+16>>2]|0)+236>>2]|0;Rk(k,j,i,c[(c[f+196>>2]|0)+(j<<6)>>2]|0);g=0;h=i;while(1){f=c[l>>2]|0;e=c[f+196>>2]|0;if((g|0)>=(c[e+(j<<6)>>2]|0))break;e=c[(c[e+(j<<6)+4>>2]|0)+(g<<2)>>2]|0;c[(c[(c[(c[m>>2]|0)+196>>2]|0)+(j<<6)+4>>2]|0)+(h<<2)>>2]=e;f=c[e+16>>2]|0;c[f+236>>2]=h;if((a[f+156>>0]|0)==1)c[e+24>>2]=so(k)|0;dh(d,e);bh(k,e);f=(c[m>>2]|0)+232|0;c[f>>2]=(c[f>>2]|0)+1;g=g+1|0;h=h+1|0}h=c[(c[m>>2]|0)+196>>2]|0;c[e+(j<<6)+4>>2]=(c[h+(j<<6)+4>>2]|0)+(i<<2);a[h+(j<<6)+49>>0]=0;j=j+1|0}e=c[m>>2]|0;if((j|0)<(b[e+238>>1]|0))a[(c[e+196>>2]|0)+(j<<6)+49>>0]=0;a[f+272>>0]=1;return}function Uk(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;h=b[d+236>>1]|0;while(1){if((h|0)>(b[d+238>>1]|0))break;f=c[(c[d+268>>2]|0)+(h<<2)>>2]|0;g=f+16|0;while(1){d=c[g>>2]|0;e=c[c[d+180>>2]>>2]|0;if(!e)break;Xg(e)}while(1){d=c[c[d+172>>2]>>2]|0;if(!d)break;Xg(d);d=c[g>>2]|0}dh(Vf(a)|0,f);c[(c[(c[i>>2]|0)+268>>2]|0)+(h<<2)>>2]=0;h=h+1|0;d=c[i>>2]|0}return}function Vk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=co(b)|0;while(1){if(!f)break;e=f+16|0;d=c[e>>2]|0;if((a[d+159>>0]|0)==7){MA(f);d=c[e>>2]|0}c[d+212>>2]=0;f=eo(b,f)|0}m=b+16|0;k=1;while(1){d=c[m>>2]|0;if((k|0)>(c[d+180>>2]|0))break;h=c[(c[d+184>>2]|0)+(k<<2)>>2]|0;i=h+16|0;d=co(h)|0;a:while(1){if(!d)break;j=eo(h,d)|0;e=d+16|0;if(a[(c[e>>2]|0)+159>>0]|0){f=Dn(d)|0;g=Dn(b)|0;c[n>>2]=f;c[n+4>>2]=g;_l(0,80591,n)|0;qo(h,d)|0;d=j;continue}NA(d,c[(c[i>>2]|0)+264>>2]|0);g=c[e>>2]|0;c[g+212>>2]=h;a[g+159>>0]=7;g=Pm(h,d)|0;while(1){if(!g){d=j;continue a}d=c[(c[g+16>>2]|0)+172>>2]|0;b:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break b;c[f+212>>2]=h;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Rm(h,g)|0}}k=k+1|0}l=o;return}function Wk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;g=vw((b[(c[k>>2]|0)+238>>1]<<2)+8|0)|0;f=c[k>>2]|0;c[f+268>>2]=g;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>(b[f+238>>1]|0))break;f=fh(d)|0;c[(c[(c[k>>2]|0)+268>>2]|0)+(h<<2)>>2]=f;j=c[f+16>>2]|0;c[j+232>>2]=h;a[j+159>>0]=7;c[j+212>>2]=e;if(g|0){j=(c[(ah(g,f,0)|0)+16>>2]|0)+154|0;b[j>>1]=(b[j>>1]|0)*1e3}g=f;h=h+1|0;f=c[k>>2]|0}j=co(e)|0;while(1){f=c[k>>2]|0;if(!j)break;h=(c[(c[f+268>>2]|0)+(c[(c[j+16>>2]|0)+232>>2]<<2)>>2]|0)+16|0;f=(c[h>>2]|0)+216|0;c[f>>2]=(c[f>>2]|0)+1;f=Pm(e,j)|0;while(1){if(!f)break;i=c[f>>2]|0;d=f+-48|0;g=c[(c[(c[((i&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){if((g|0)>=(c[(c[(c[((i&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=(c[(c[c[(c[h>>2]|0)+180>>2]>>2]|0)+16>>2]|0)+168|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;g=g+1|0;i=c[f>>2]|0}f=Rm(e,f)|0}j=eo(e,j)|0}d=b[f+238>>1]|0;i=f+268|0;f=b[f+236>>1]|0;while(1){if((f|0)>(d|0))break;g=(c[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+16>>2]|0)+216|0;h=c[g>>2]|0;if((h|0)>1)c[g>>2]=h+-1;f=f+1|0}return}function Xk(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[(c[e+16>>2]|0)+212>>2]|0)+16|0;e=c[k>>2]|0;j=f+1|0;if((j|0)!=(a[e+273>>0]|0)){i=b[e+236>>1]|0;while(1){h=b[e+238>>1]|0;if((i|0)>(h<<16>>16|0))break;mi(d,c[(c[e+268>>2]|0)+(i<<2)>>2]|0);i=i+1|0;e=c[k>>2]|0}i=b[e+236>>1]|0;while(1){if((i|0)>(h<<16>>16|0))break;ni(g,c[(c[e+268>>2]|0)+(i<<2)>>2]|0,f);d=c[k>>2]|0;i=i+1|0;h=b[d+238>>1]|0;e=d}a[e+273>>0]=j}return}function Yk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=co(b)|0;while(1){if(!h)break;c[(c[h+16>>2]|0)+212>>2]=0;g=Pm(b,h)|0;while(1){if(!g)break;d=c[(c[g+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;c[f+212>>2]=0;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Rm(b,g)|0}h=eo(b,h)|0}Zk(b);return}function Zk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Zk(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}i=co(b)|0;while(1){if(!i)break;d=(c[i+16>>2]|0)+212|0;if(!(c[d>>2]|0))c[d>>2]=b;h=Pm(b,i)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=c[d>>2]|0;g=d+-48|0;f=c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;f=f+212|0;if(!(c[f>>2]|0)){c[f>>2]=b;e=c[d>>2]|0}d=c[c[(c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);h=Rm(b,h)|0}i=eo(b,i)|0}return}function _k(a){a=a|0;var b=0,c=0,d=0;d=iB(a)|0;c=co(a)|0;while(1){if(!c)break;b=Pm(a,c)|0;while(1){if(!b)break;$k(b,d);b=Rm(a,b)|0}c=eo(a,c)|0}Kl(d)|0;return}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+320|0;H=M+296|0;G=M+280|0;x=M+136|0;w=M+120|0;n=M+104|0;i=M+88|0;f=M+80|0;E=M+16|0;z=M;j=M+264|0;k=M+248|0;m=M+232|0;o=M+216|0;A=M+200|0;B=M+184|0;y=M+168|0;D=M+152|0;g=al(Im(a,80645)|0,b)|0;q=al(Im(a,80651)|0,b)|0;r=(q|0)!=0;b=(g|0)!=0;do if(b|r?(L=a+16|0,e=c[(c[L>>2]|0)+8>>2]|0,e|0):0){if((c[e+4>>2]|0)>1){K=Dn(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)|0;L=Dn(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)|0;c[f>>2]=K;c[f+4>>2]=L;_l(0,80657,f)|0;break}I=c[e>>2]|0;e=c[I+4>>2]|0;p=c[a>>2]&3;s=a+-48|0;t=c[((p|0)==2?a:s)+40>>2]|0;u=a+48|0;p=c[((p|0)==3?a:u)+40>>2]|0;J=ww(48)|0;v=I+12|0;c[J+12>>2]=c[v>>2];C=I+8|0;c[J+8>>2]=c[C>>2];do if(b){h=(c[g+16>>2]|0)+16|0;g=(c[t+16>>2]|0)+16|0;c[H>>2]=c[g>>2];c[H+4>>2]=c[g+4>>2];c[H+8>>2]=c[g+8>>2];c[H+12>>2]=c[g+12>>2];if(!(bl(H,h)|0)){o=Dn(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=Dn(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=Im(a,80645)|0;c[i>>2]=o;c[i+4>>2]=F;c[i+8>>2]=K;_l(0,80698,i)|0;K=26;break}b=c[I>>2]|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(bl(H,h)|0){F=(c[p+16>>2]|0)+16|0;c[H>>2]=c[F>>2];c[H+4>>2]=c[F+4>>2];c[H+8>>2]=c[F+8>>2];c[H+12>>2]=c[F+12>>2];if(bl(H,h)|0){o=Dn(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=Dn(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=Im(a,80645)|0;c[n>>2]=o;c[n+4>>2]=F;c[n+8>>2]=K;_l(0,80741,n)|0;K=26;break}if(!(c[C>>2]|0))ma(80783,80794,369,80805);o=I+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];cl(z,G,H,h);F=(c[I>>2]|0)+48|0;c[F>>2]=c[z>>2];c[F+4>>2]=c[z+4>>2];c[F+8>>2]=c[z+8>>2];c[F+12>>2]=c[z+12>>2];F=(c[I>>2]|0)+16|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];dl(j,G,H);c[F>>2]=c[j>>2];c[F+4>>2]=c[j+4>>2];c[F+8>>2]=c[j+8>>2];c[F+12>>2]=c[j+12>>2];F=c[I>>2]|0;b=F+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];dl(k,G,H);c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];F=c[I>>2]|0;b=F+32|0;F=F+16|0;c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];dl(m,G,H);c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];b=c[v>>2]|0;if(!b){F=3;break}F=(Nt(a,c[I>>2]|0,0,0,J,b)|0)+3|0;break}g=e+-1|0;b=0;while(1){if((b|0)>=(g|0))break;if(el((c[I>>2]|0)+(b<<4)|0,h)|0)break;b=b+3|0}e=c[v>>2]|0;f=(e|0)!=0;if((b|0)==(g|0))if(f){F=J+32|0;m=I+32|0;n=(c[I>>2]|0)+(g<<4)|0;c[G>>2]=c[m>>2];c[G+4>>2]=c[m+4>>2];c[G+8>>2]=c[m+8>>2];c[G+12>>2]=c[m+12>>2];c[H>>2]=c[n>>2];c[H+4>>2]=c[n+4>>2];c[H+8>>2]=c[n+8>>2];c[H+12>>2]=c[n+12>>2];cl(o,G,H,h);c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=g;break}else ma(80822,80794,387,80805);else{if(f)b=Nt(a,c[I>>2]|0,0,b,J,e)|0;F=b+3|0;break}}else K=26;while(0);if((K|0)==26){b=e+-1|0;if(!(c[v>>2]|0))F=b;else{F=J+32|0;o=I+32|0;c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=b}}do if(r){f=(c[q+16>>2]|0)+16|0;r=(c[p+16>>2]|0)+16|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];if(!(bl(H,f)|0)){G=Dn(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=Dn(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=Im(a,80651)|0;c[w>>2]=G;c[w+4>>2]=H;c[w+8>>2]=K;_l(0,80833,w)|0;K=52;break}b=(c[I>>2]|0)+(F<<4)|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(bl(H,f)|0){E=(c[t+16>>2]|0)+16|0;c[H>>2]=c[E>>2];c[H+4>>2]=c[E+4>>2];c[H+8>>2]=c[E+8>>2];c[H+12>>2]=c[E+12>>2];if(bl(H,f)|0){G=Dn(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=Dn(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=Im(a,80651)|0;c[x>>2]=G;c[x+4>>2]=H;c[x+8>>2]=K;_l(0,80876,x)|0;K=52;break}if(!(c[v>>2]|0))ma(80822,80794,429,80805);x=J+32|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];cl(z,G,H,f);d=F+-3|0;E=(c[I>>2]|0)+(d<<4)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];E=F+-1|0;b=(c[I>>2]|0)+(E<<4)|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];dl(A,G,H);c[b>>2]=c[A>>2];c[b+4>>2]=c[A+4>>2];c[b+8>>2]=c[A+8>>2];c[b+12>>2]=c[A+12>>2];b=c[I>>2]|0;D=b+(F<<4)|0;b=b+(E<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];dl(B,G,H);c[D>>2]=c[B>>2];c[D+4>>2]=c[B+4>>2];c[D+8>>2]=c[B+8>>2];c[D+12>>2]=c[B+12>>2];D=c[I>>2]|0;b=D+(F+-2<<4)|0;E=D+(E<<4)|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];dl(y,G,H);c[b>>2]=c[y>>2];c[b+4>>2]=c[y+4>>2];c[b+8>>2]=c[y+8>>2];c[b+12>>2]=c[y+12>>2];b=c[C>>2]|0;if(!b)break;d=Pt(a,c[I>>2]|0,d,d,J,b)|0;break}e=F;while(1){if((e|0)>0)b=0;else break;while(1){if((b|0)==4)break;B=E+(b<<4)|0;A=(c[I>>2]|0)+(e-b<<4)|0;c[B>>2]=c[A>>2];c[B+4>>2]=c[A+4>>2];c[B+8>>2]=c[A+8>>2];c[B+12>>2]=c[A+12>>2];b=b+1|0}if(el(E,f)|0){b=0;K=43;break}e=e+-3|0}a:do if((K|0)==43)while(1){K=0;if((b|0)==4)break a;K=(c[I>>2]|0)+(e-b<<4)|0;B=E+(b<<4)|0;c[K>>2]=c[B>>2];c[K+4>>2]=c[B+4>>2];c[K+8>>2]=c[B+8>>2];c[K+12>>2]=c[B+12>>2];b=b+1|0;K=43}while(0);if(e|0){d=e+-3|0;b=c[C>>2]|0;if(!b)break;d=Pt(a,c[I>>2]|0,d,F+-3|0,J,b)|0;break}if(!(c[C>>2]|0))ma(80783,80794,452,80805);else{d=J+16|0;E=I+16|0;a=c[I>>2]|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[a>>2];c[H+4>>2]=c[a+4>>2];c[H+8>>2]=c[a+8>>2];c[H+12>>2]=c[a+12>>2];cl(D,G,H,f);c[d>>2]=c[D>>2];c[d+4>>2]=c[D+4>>2];c[d+8>>2]=c[D+8>>2];c[d+12>>2]=c[D+12>>2];d=0;break}}else K=52;while(0);if((K|0)==52)if(!(c[C>>2]|0))d=0;else{d=J+16|0;K=I+16|0;c[d>>2]=c[K>>2];c[d+4>>2]=c[K+4>>2];c[d+8>>2]=c[K+8>>2];c[d+12>>2]=c[K+12>>2];d=0}b=F-d+1|0;e=J+4|0;c[e>>2]=b;c[J>>2]=ww(b<<4)|0;b=0;while(1){if((b|0)>=(c[e>>2]|0))break;K=(c[J>>2]|0)+(b<<4)|0;a=(c[I>>2]|0)+(d<<4)|0;c[K>>2]=c[a>>2];c[K+4>>2]=c[a+4>>2];c[K+8>>2]=c[a+8>>2];c[K+12>>2]=c[a+12>>2];d=d+1|0;b=b+1|0}_I(c[I>>2]|0);_I(I);c[c[(c[L>>2]|0)+8>>2]>>2]=J}while(0);l=M;return}function al(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((b|0)!=0?(a[b>>0]|0)!=0:0){d=jB(d,b)|0;if(!d){c[e>>2]=b;_l(0,80996,e)|0;d=0}}else d=0;l=f;return d|0}function bl(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3];if((+h[b>>3]<=d?d<=+h[b+16>>3]:0)?(c=+h[a+8>>3],+h[b+8>>3]<=c):0)a=c<=+h[b+24>>3]&1;else a=0;return a|0}function cl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0;C=l;l=l+464|0;n=C+48|0;B=C+32|0;u=C+16|0;v=C;w=C+364|0;x=C+264|0;z=C+164|0;A=C+64|0;q=+h[b>>3];r=+h[b+8>>3];s=+h[d>>3];t=+h[d+8>>3];c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];c[u+8>>2]=c[e+8>>2];c[u+12>>2]=c[e+12>>2];e=e+16|0;c[v>>2]=c[e>>2];c[v+4>>2]=c[e+4>>2];c[v+8>>2]=c[e+8>>2];c[v+12>>2]=c[e+12>>2];k=+h[u>>3];if((s<k?(f=r+ +(~~((k-q)*(r-t)/(q-s))|0),f>=+h[u+8>>3]):0)?f<=+h[v+8>>3]:0){o=f;p=k}else i=4;do if((i|0)==4){j=+h[v>>3];if(s>j){g=r+ +(~~((j-q)*(r-t)/(q-s))|0);f=+h[u+8>>3];if(g>=f?g<=+h[v+8>>3]:0){o=g;p=j;break}}else f=+h[u+8>>3];if(t<f?(m=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(m>=k)|!(m<=j))):0){o=f;p=m;break}f=+h[v+8>>3];if(t>f?(y=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(y>=k)|!(y<=j))):0){o=f;p=y;break};c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];w=jl(n,w)|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];x=jl(n,x)|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];z=jl(n,z)|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];A=jl(n,A)|0;c[B>>2]=w;c[B+4>>2]=x;c[B+8>>2]=z;c[B+12>>2]=A;_l(1,80918,B)|0;ma(123205,80794,78,80970)}while(0);h[a>>3]=p;h[a+8>>3]=o;l=C;return}function dl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function el(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+80|0;j=m+16|0;k=m;e=0;while(1){if((e|0)==4)break;i=j+(e<<4)|0;g=a+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];e=e+1|0}e=b+8|0;i=b+24|0;d=+fl(a,0.0,1.0,+h[b>>3],+h[e>>3],+h[i>>3]);if(d>=0.0&d<2.0)PA(k,j,3,d,a,0);else d=2.0;g=b+16|0;f=+fl(a,0.0,d>1.0?1.0:d,+h[g>>3],+h[e>>3],+h[i>>3]);if(f>=0.0&f<d){PA(k,j,3,f,a,0);d=f}f=+gl(a,0.0,d>1.0?1.0:d,+h[e>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){PA(k,j,3,f,a,0);d=f}f=+gl(a,0.0,d>1.0?1.0:d,+h[i>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){PA(k,j,3,f,a,0);d=f}l=m;return d<2.0|0}function fl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(il(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+48>>3]-d))<=.005){b=+h[a+56>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}PA(i,a,3,.5,j,k);g=(c+b)*.5;b=+fl(j,b,g,d,e,f);if(!(b>=0.0))b=+fl(k,g,c,d,e,f)}while(0);l=m;return +b}function gl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(hl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+56>>3]-d))<=.005){b=+h[a+48>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}PA(i,a,3,.5,j,k);g=(c+b)*.5;b=+gl(j,b,g,d,e,f);if(!(b>=0.0))b=+gl(k,g,c,d,e,f)}while(0);l=m;return +b}function hl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a+8>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)+8>>3];i=f<b?-1:f>b&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function il(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)>>3];i=f<b?-1:f>b&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function jl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=l;l=l+16|0;d=c;e=+h[a+8>>3];h[d>>3]=+h[a>>3];h[d+8>>3]=e;pL(b,80984,d)|0;l=c;return b|0}function kl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;s=v;u=4;t=ZI(40)|0;c[t>>2]=0;r=a+16|0;e=c[r>>2]|0;a:do if(((b[e+238>>1]|0)-(b[e+236>>1]|0)|0)>=2){m=1;d=e;e=c[e+196>>2]|0;b:while(1){n=m+1|0;if(!(c[e+(n<<6)>>2]|0)){q=15;break}else k=0;while(1){h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0)){m=n;continue b}j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=_(18,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,u|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break b}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=$(17,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,t|0,u|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break b}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;ka(6,a|0,m|0,k|0,i|0,1);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break b}}}e=c[r>>2]|0;k=k+1|0;d=e;e=c[e+196>>2]|0}}c:do if((q|0)==15){while(1){if((m|0)>0)k=0;else break;while(1){e=c[d+196>>2]|0;h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0))break;j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=_(19,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,u|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break c}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=$(18,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,t|0,u|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break c}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;ka(6,a|0,m|0,k|0,i|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break c}}}k=k+1|0;d=c[r>>2]|0}m=m+-1|0;q=15}t=RN(167760,1,t|0,u|0)|0;u=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else d=0}while(0);d:while(1){if(d){o=0;aa(11,3,81024,s|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}else break}else f=1;while(1){d=c[r>>2]|0;if((f|0)>(c[d+180>>2]|0))break a;o=0;fa(85,c[(c[d+184>>2]|0)+(f<<2)>>2]|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue d}f=f+1|0}}}while(0);_I(t|0);l=v;return}function ll(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+176>>2]|0)==1:0)?(c[b+184>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function ml(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+172>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+172>>2]>>2]|0;if(((ll(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0):0)?(sl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+16|0;f=g;a=(c[e+16>>2]|0)+16|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(Wf(g,h)|0)==0&1}else a=0;l=i;return a|0}function nl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+16|0;q=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(d<<2)>>2]|0;p=d+1|0;m=(f|0)==1;n=q+16|0;l=p;while(1){if((l|0)>(e|0)){g=e;s=p;break}o=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(l<<2)>>2]|0;k=o+16|0;a:do if(m)while(1){d=c[k>>2]|0;j=c[c[d+180>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+180>>2]|0;i=j+-48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=8;break}if((c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==8){r=0;d=ah(q,c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0,j)|0}while(1){f=c[c[(c[k>>2]|0)+172>>2]>>2]|0;if(!f)break;ih(f,d);Xg(f)}Xg(j)}else while(1){d=c[k>>2]|0;j=c[c[d+172>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+172>>2]|0;i=j+48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=17;break}if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==17){r=0;d=ah(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0,q,j)|0}while(1){f=c[c[(c[k>>2]|0)+180>>2]>>2]|0;if(!f)break;ih(f,d);Xg(f)}Xg(j)}while(0);if((c[d+176>>2]|0)!=(0-(c[d+184>>2]|0)|0)){r=23;break}dh(a,o);l=l+1|0}if((r|0)==23)ma(81160,81204,115,81211);while(1){g=g+1|0;d=c[(c[t>>2]|0)+196>>2]|0;f=d+(b<<6)|0;if((g|0)>=(c[f>>2]|0))break;e=c[d+(b<<6)+4>>2]|0;r=c[e+(g<<2)>>2]|0;c[e+(s<<2)>>2]=r;c[(c[r+16>>2]|0)+236>>2]=s;s=s+1|0}c[f>>2]=s;c[(c[d+(b<<6)+4>>2]|0)+(s<<2)>>2]=0;return}function ol(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+184>>2]|0)==1:0)?(c[b+176>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+180>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+180>>2]>>2]|0;if(((ol(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0):0)?(sl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+56|0;f=g;a=(c[e+16>>2]|0)+56|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(Wf(g,h)|0)==0&1}else a=0;l=i;return a|0}function ql(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;p=r+16|0;o=r;m=d+16|0;f=c[m>>2]|0;e=b[f+236>>1]|0;while(1){if((e|0)>(b[f+238>>1]|0))break;c[(c[f+268>>2]|0)+(e<<2)>>2]=0;e=e+1|0;f=c[m>>2]|0}ij(d);j=co(d)|0;while(1){if(!j)break;rl(d,j);i=Pm(d,j)|0;while(1){if(!i)break;else f=i;while(1){e=c[(c[f+16>>2]|0)+172>>2]|0;if(!e)break;else f=e}h=i+-48|0;while(1){e=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:h)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;rl(d,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}i=Rm(d,i)|0}j=eo(d,j)|0}e=c[m>>2]|0;i=b[e+236>>1]|0;while(1){if((i|0)>(b[e+238>>1]|0)){k=1;n=e;break}e=c[(c[e+268>>2]|0)+(i<<2)>>2]|0;j=c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;f=e+16|0;if((c[j+(c[(c[f>>2]|0)+236>>2]<<2)>>2]|0)!=(e|0)){q=17;break}h=c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;e=c[m>>2]|0;f=c[e+196>>2]|0;c[f+(i<<6)+4>>2]=h+(c[(c[(c[(c[e+268>>2]|0)+(i<<2)>>2]|0)+16>>2]|0)+236>>2]<<2);e=-1;h=0;a:while(1){if((h|0)>=(c[f+(i<<6)>>2]|0))break;f=c[(c[f+(i<<6)+4>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;b:do if(!(a[g+156>>0]|0))if(!(Bo(d,f)|0))break a;else e=h;else{f=c[c[g+172>>2]>>2]|0;while(1){if(!f)break b;g=c[(c[f+16>>2]|0)+116>>2]|0;if(!g)break;else f=g}if(Bo(d,c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)|0){j=(Bo(d,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)|0)==0;e=j?e:h}}while(0);h=h+1|0;f=c[(c[m>>2]|0)+196>>2]|0}if((e|0)==-1){c[p>>2]=Dn(d)|0;c[p+4>>2]=i;_l(0,81124,p)|0}j=c[m>>2]|0;c[(c[j+196>>2]|0)+(i<<6)>>2]=e+1;i=i+1|0;e=j}if((q|0)==17){p=Dn(e)|0;q=c[(c[f>>2]|0)+236>>2]|0;c[o>>2]=p;c[o+4>>2]=q;c[o+8>>2]=i;_l(1,81066,o)|0;Ua(167760,1)}while(1){if((k|0)>(c[n+180>>2]|0))break;ql(c[(c[n+184>>2]|0)+(k<<2)>>2]|0);k=k+1|0;n=c[m>>2]|0}l=r;return}function rl(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+16>>2]|0;a=(c[(c[a+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)|0;e=c[a>>2]|0;if(!((e|0)!=0?(c[(c[e+16>>2]|0)+236>>2]|0)<=(c[d+236>>2]|0):0))c[a>>2]=b;return}function sl(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=c[b+16>>2]|0;if(!(a[f+112>>0]|0))break;b=c[f+116>>2]|0}while(1){e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;d=c[e+116>>2]|0}if((a[f+153>>0]|0)==0?(a[e+153>>0]|0)==0:0){f=c[d>>2]&3;e=c[b>>2]&3;b=(O((c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0,(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)|0)>0&1}else b=0;return b|0}function tl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+544|0;j=k+528|0;ul(j,k+512|0,k);e=(a[173894]|0)+1<<24>>24;a[173894]=e<<24>>24==0?1:e;e=c[b+16>>2]|0;c[e+220>>2]=0;c[e+232>>2]=0;e=(d|0)>0;d=co(b)|0;while(1){if(!d)break;if(e?(h=c[d+16>>2]|0,i=c[h+212>>2]|0,(i|0)!=0):0){g=c[(c[(c[i+16>>2]|0)+268>>2]|0)+(c[h+232>>2]<<2)>>2]|0;f=7}else f=6;if((f|0)==6?(f=0,(d|0)==(KA(d)|0)):0){g=d;f=7}if((f|0)==7?(0,(a[(c[g+16>>2]|0)+157>>0]|0)!=(a[173894]|0)):0){vl(b);wl(j,b,g);xl(b)}d=eo(b,d)|0}yl(j);l=k;return}function ul(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=d;c[b+4>>2]=d+512;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;return}function vl(a){a=a|0;c[(c[a+16>>2]|0)+192>>2]=0;c[41979]=0;return}function wl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q;zl(b,e);k=p+8|0;m=p+16|0;n=p+24|0;a:while(1){o=Al(b)|0;if(!o)break;e=o+16|0;if((a[(c[e>>2]|0)+157>>0]|0)==(a[173894]|0))continue;Bl(d,o);h=c[e>>2]|0;g=h+180|0;j=c[g+4>>2]|0;i=p;c[i>>2]=c[g>>2];c[i+4>>2]=j;i=h+172|0;j=c[i+4>>2]|0;g=k;c[g>>2]=c[i>>2];c[g+4>>2]=j;g=h+188|0;j=c[g+4>>2]|0;i=m;c[i>>2]=c[g>>2];c[i+4>>2]=j;h=h+196|0;i=c[h+4>>2]|0;j=n;c[j>>2]=c[h>>2];c[j+4>>2]=i;j=3;while(1){if((j|0)<=-1)continue a;e=c[p+(j<<3)>>2]|0;b:do if(e|0){i=(c[p+(j<<3)+4>>2]|0)+-1|0;h=e+(i<<2)|0;while(1){if((i|0)<=-1)break b;f=c[h>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(o|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;if((a[(c[e+16>>2]|0)+157>>0]|0)!=(a[173894]|0)?(e|0)==(KA(e)|0):0)zl(b,e);h=h+-4|0;i=i+-1|0}}while(0);j=j+-1|0}}l=q;return}function xl(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+16|0;b=c[d>>2]|0;f=b+220|0;e=c[f>>2]|0;a=e+1|0;c[f>>2]=a;b=c[b+216>>2]|0;if(!b)a=ww(a<<2)|0;else a=yw(b,a<<2)|0;f=c[d>>2]|0;c[f+216>>2]=a;c[a+(e<<2)>>2]=c[f+192>>2];return}function yl(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;_I(c[a>>2]|0);_I(a);a=b}return}function zl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k+8|0;g=k;j=b+8|0;f=c[j>>2]|0;i=b+4|0;b=c[i>>2]|0;if((f|0)==(c[b+4>>2]|0)){f=c[b+12>>2]|0;if(!f){f=vw(16)|0;if(!f)_l(1,83988,g)|0;c[f+8>>2]=c[i>>2];c[f+12>>2]=0;b=vw(4e6)|0;c[f>>2]=b;if(!b){_l(1,81224,h)|0;b=c[f>>2]|0}c[f+4>>2]=b+4e6;c[(c[i>>2]|0)+12>>2]=f}c[i>>2]=f;f=c[f>>2]|0;c[j>>2]=f}a[(c[e+16>>2]|0)+157>>0]=(d[173894]|0)+1;c[j>>2]=f+4;c[f>>2]=e;l=k;return}function Al(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function Bl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=f+232|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+16>>2]|0;a[g+157>>0]=a[173894]|0;b=c[41979]|0;e=g+168|0;if(!b){c[e>>2]=0;c[f+192>>2]=d}else{c[e>>2]=b;c[(c[b+16>>2]|0)+164>>2]=d}c[41979]=d;c[g+164>>2]=0;return}function Cl(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;m=b+16|0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+188>>2]|0;a:do if(!e)f=0;else{f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e){f=0;break a}Dl(e);d=c[g>>2]|0;f=f+1|0;e=c[d+188>>2]|0}}while(0);while(1){if((f|0)>=(c[d+208>>2]|0))break;e=c[(c[d+204>>2]|0)+(f<<2)>>2]|0;l=c[e>>2]&3;if((c[(c[(c[((l|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)==(c[(c[(c[((l|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)){Dl(e);d=c[g>>2]|0}f=f+1|0}d=d+164|0}l=c[m>>2]|0;d=c[l+196>>2]|0;if(!((c[d+56>>2]|0)==0?(c[l+180>>2]|0)<=0:0))i=13;b:do if((i|0)==13){i=c[d+4>>2]|0;g=0;c:while(1){d=c[i+(g<<2)>>2]|0;if(!d)break b;e=c[(c[d+16>>2]|0)+196>>2]|0;d=0;while(1){f=c[e+(d<<2)>>2]|0;if(!f)break;l=c[f+16>>2]|0;if(c[l+96>>2]|0?(a[l+113>>0]|0)==0:0)break c;d=d+1|0}g=g+1|0}El(b)}while(0);ui(b);e=0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;l=d+16|0;d=c[l>>2]|0;f=c[d+188>>2]|0;d:do if(f){k=0;while(1){g=c[f+(k<<2)>>2]|0;if(!g){k=0;break}i=c[g+16>>2]|0;j=c[i+96>>2]|0;do if(j)if(!(a[i+113>>0]|0)){Fl(g);f=c[l>>2]|0;e=1;d=f;f=c[f+188>>2]|0;break}else{h[i+136>>3]=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?j+24|0:j+32|0)>>3];break}while(0);k=k+1|0}while(1){if((k|0)>=(c[d+208>>2]|0))break d;i=c[(c[d+204>>2]|0)+(k<<2)>>2]|0;j=c[i>>2]&3;g=c[((j|0)==3?i:i+48|0)+40>>2]|0;j=c[((j|0)==2?i:i+-48|0)+40>>2]|0;do if(!((g|0)==(j|0)?1:(c[(c[g+16>>2]|0)+232>>2]|0)!=(c[(c[j+16>>2]|0)+232>>2]|0))){f=i;do{j=c[f+16>>2]|0;f=c[j+172>>2]|0}while((f|0)!=0);f=a[j+113>>0]|0;g=c[i+16>>2]|0;a[g+113>>0]=f;g=c[g+96>>2]|0;if(g)if(!(f<<24>>24)){Fl(i);e=1;d=c[l>>2]|0;break}else{o=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?g+24|0:g+32|0)>>3];j=j+136|0;n=+h[j>>3];h[j>>3]=o>n?o:n;break}}while(0);k=k+1|0}}while(0);d=d+164|0}if(e|0){nh(b);Bh(b)}return e|0}function Dl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]&3;i=c[((d|0)==3?b:b+48|0)+40>>2]|0;f=i+16|0;g=c[(c[f>>2]|0)+236>>2]|0;d=c[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;h=(g|0)<(d|0);e=h?d:g;i=c[(c[(Vf(i)|0)+16>>2]|0)+196>>2]|0;f=i+(c[(c[f>>2]|0)+232>>2]<<6)+4|0;d=h?g:d;a:while(1){d=d+1|0;if((d|0)>=(e|0))break;g=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;switch(a[g+156>>0]|0){case 0:break a;case 1:break;default:continue a}if(c[g+104>>2]|0)break}if((d|0)==(e|0))do{i=c[b+16>>2]|0;a[i+113>>0]=1;b=c[i+172>>2]|0}while((b|0)!=0);return}function El(a){a=a|0;var d=0,e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;if(b[a+236>>1]|0)ma(81281,81264,190,81300);d=(b[a+238>>1]|0)+3|0;a=c[a+196>>2]|0;if(!a)a=ww(d<<6)|0;else a=yw(a,d<<6)|0;d=a+64|0;a=c[g>>2]|0;c[a+196>>2]=d;a=b[a+238>>1]|0;while(1){if((a|0)<=-1)break;f=a+-1|0;e=d+(a<<6)|0;a=d+(f<<6)|0;d=e+64|0;do{c[e>>2]=c[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(d|0));a=f;d=c[(c[g>>2]|0)+196>>2]|0}c[d+(a<<6)+8>>2]=0;c[d+(a<<6)>>2]=0;e=vw(8)|0;g=c[g>>2]|0;f=c[g+196>>2]|0;c[f+(a<<6)+12>>2]=e;c[f+(a<<6)+4>>2]=e;c[f+(a<<6)+56>>2]=0;h[f+(a<<6)+24>>3]=1.0;h[f+(a<<6)+16>>3]=1.0;h[f+(a<<6)+40>>3]=1.0;h[f+(a<<6)+32>>3]=1.0;g=g+236|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;return}function Fl(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0;j=b+16|0;if(c[(c[j>>2]|0)+96>>2]|0){m=b+48|0;k=Vf(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)|0;d=c[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0;l=Gl(k,b)|0;n=k+16|0;e=c[n>>2]|0;g=c[e+196>>2]|0;o=d+-1|0;i=c[c[g+(o<<6)+4>>2]>>2]|0;if(!i)f=+h[g+(d<<6)+24>>3]+ +h[(c[(c[c[g+(d<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +(c[e+252>>2]|0);else f=+h[(c[i+16>>2]|0)+24>>3]-+h[g+(o<<6)+16>>3];d=Hl(k,o,l)|0;k=c[(c[j>>2]|0)+96>>2]|0;q=+h[k+24>>3];p=+h[k+32>>3];j=(c[(c[n>>2]|0)+116>>2]&1|0)==0;r=j?p:q;g=d+16|0;e=c[g>>2]|0;h[e+80>>3]=r;l=~~(r*.5);p=(j?q:p)*.5;h[e+96>>3]=p;h[e+88>>3]=p;c[e+104>>2]=k;h[e+24>>3]=+(l+~~f|0);e=ah(d,c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0,b)|0;e=c[e+16>>2]|0;h[e+16>>3]=-+h[(c[g>>2]|0)+88>>3];h[e+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+96>>3];a[e+112>>0]=4;e=b+-48|0;d=ah(d,c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0,b)|0;g=c[g>>2]|0;d=c[d+16>>2]|0;h[d+16>>3]=+h[g+96>>3];h[d+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+88>>3];a[d+112>>0]=4;d=c[(c[n>>2]|0)+196>>2]|0;e=d+(o<<6)+16|0;f=+(l|0);if(+h[e>>3]<f)h[e>>3]=f;d=d+(o<<6)+24|0;if(+h[d>>3]<f)h[d>>3]=f;c[g+112>>2]=b}return}function Gl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n+8|0;f=n+4|0;g=n;d=c[b>>2]&3;e=c[((d|0)==3?b:b+48|0)+40>>2]|0;k=(c[(c[e+16>>2]|0)+232>>2]|0)+-1|0;a=c[(c[a+16>>2]|0)+196>>2]|0;h=c[a+(k<<6)+4>>2]|0;a=c[a+(k<<6)>>2]|0;k=j+8|0;c[k>>2]=-1;c[j>>2]=-1;m=j+12|0;c[m>>2]=a;i=j+4|0;c[i>>2]=a;Il(e,c[((d|0)==2?b:b+-48|0)+40>>2]|0,f,g);f=c[f>>2]|0;g=c[g>>2]|0;d=0;e=a;b=-1;while(1){if((d|0)>=(e|0))break;e=e+-1|0;Jl(c[h+(d<<2)>>2]|0,j,f,g);if((d|0)!=(e|0))Jl(c[h+(e<<2)>>2]|0,j,f,g);a=c[i>>2]|0;b=c[j>>2]|0;if((a-b|0)<2)break;else d=d+1|0}if((b|0)>(a|0))a=(c[m>>2]|0)+(c[k>>2]|0)|0;else a=a+b|0;l=n;return (a+1|0)/2|0|0}function Hl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=a+16|0;f=c[(c[g>>2]|0)+196>>2]|0;e=f+(b<<6)|0;f=c[f+(b<<6)+4>>2]|0;if(!f)f=ww((c[e>>2]<<2)+8|0)|0;else f=yw(f,(c[e>>2]<<2)+8|0)|0;e=c[(c[g>>2]|0)+196>>2]|0;c[e+(b<<6)+4>>2]=f;e=c[e+(b<<6)>>2]|0;while(1){if((e|0)<=(d|0))break;h=e+-1|0;i=c[f+(h<<2)>>2]|0;c[f+(e<<2)>>2]=i;i=(c[i+16>>2]|0)+236|0;c[i>>2]=(c[i>>2]|0)+1;e=h}h=fh(a)|0;i=f+(d<<2)|0;c[i>>2]=h;h=c[h+16>>2]|0;c[h+236>>2]=d;c[h+232>>2]=b;g=(c[(c[g>>2]|0)+196>>2]|0)+(b<<6)|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;c[f+(h<<2)>>2]=0;return c[i>>2]|0}function Il(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a=c[(c[a+16>>2]|0)+236>>2]|0;b=c[(c[b+16>>2]|0)+236>>2]|0;f=(a|0)>(b|0);c[d>>2]=f?b:a;c[e>>2]=f?a:b;return}function Jl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;h=m+4|0;g=m;b=c[b+16>>2]|0;do if((a[b+156>>0]|0)==1){k=c[b+236>>2]|0;if(c[b+176>>2]|0){i=c[b+180>>2]|0;b=0;g=0;h=0;while(1){j=c[i+(h<<2)>>2]|0;if(!j)break;n=c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=(n|0)>(e|0);b=j?((n|0)<(f|0)?b:1):b;g=j?g:1;h=h+1|0}if(g<<24>>24!=0&b<<24>>24==0){c[d>>2]=k+1;break}if(!(g<<24>>24==0&b<<24>>24!=0))break;c[d+4>>2]=k+-1;break}if((c[b+184>>2]|0)!=2)ma(81244,81264,63,81271);i=c[b+180>>2]|0;n=c[i>>2]|0;i=c[i+4>>2]|0;Il(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0,c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,h,g);i=c[g>>2]|0;if((i|0)<=(e|0)){c[d>>2]=k;c[d+8>>2]=k;break}b=c[h>>2]|0;if((b|0)>=(f|0)){c[d+4>>2]=k;c[d+12>>2]=k;break}g=(b|0)<(e|0);h=(i|0)>(f|0);if(!(h&g)){if(!(!g?!((i|0)<(f|0)&(b|0)==(e|0)):0))c[d+8>>2]=k;if(!h?!((i|0)==(f|0)&(b|0)>(e|0)):0)break;c[d+12>>2]=k}}while(0);l=m;return}function Kl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=0?(c[a+24>>2]|0)<=0:0){h=c[a+4>>2]|0;g=h+32|0;b=c[g>>2]|0;if(b){b=cb[b&31](a,2,0,h)|0;if((b|0)<0){b=-1;break}}else b=0;if(c[a+28>>2]|0)Wl(a,0)|0;f=(b|0)==0;if(f){bb[c[c[a+16>>2]>>2]&31](a,0,64)|0;if((Sl(a)|0)>0){b=-1;break}d=a+8|0;b=c[d>>2]|0;if((c[b+12>>2]|0)>0){e=a+12|0;cb[c[e>>2]&31](a,c[b+8>>2]|0,0,h)|0;b=c[d>>2]|0}else e=a+12|0;cb[c[e>>2]&31](a,b,0,h)|0}b=c[a+20>>2]|0;if(b){if(f&(b|0)==1)cb[c[a+12>>2]&31](a,a,0,h)|0}else _I(a);b=c[g>>2]|0;if(!b)b=0;else{cb[b&31](a,6,0,h)|0;b=0}}else b=-1;while(0);return b|0}function Ll(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=a+4|0;n=c[f>>2]|0;a:do if(n)if(b){m=c[c[a+16>>2]>>2]|0;g=a+8|0;if(c[c[g>>2]>>2]&4096|0)Rl(a,0)|0;e=c[n+32>>2]|0;if(e|0?(cb[e&31](a,3,b,n)|0)<0:0){b=0;break}c[f>>2]=b;e=c[b+28>>2]|0;c[a+12>>2]=(e|0)==0?19:e;e=c[c[g>>2]>>2]|0;if(!(e&112)){do if(!(e&2))if(!(e&3))if(!(d&1))break;else{b=n;break a}else if((d&3|0)==3){b=n;break a}else break;else if(d&2|0){b=n;break a}while(0);h=Ol(a)|0;e=c[g>>2]|0;l=c[e>>2]|0;c[e>>2]=l&-4097;c[e+4>>2]=0;c[e+16>>2]=0;b:do if(l&3|0){l=c[e+8>>2]|0;f=l+(c[e+12>>2]<<2)|0;e=l;while(1){if(e>>>0>=f>>>0)break b;c[e>>2]=0;e=e+4|0}}while(0);i=(d&2|0)==0;j=b+8|0;k=b+4|0;l=b+24|0;while(1){if(!h){b=n;break a}d=c[h>>2]|0;if(i){e=c[j>>2]|0;if((e|0)<0)e=c[h+8>>2]|0;else e=h+(0-e)|0;g=c[k>>2]|0;e=e+(c[b>>2]|0)|0;if((g|0)<0)e=c[e>>2]|0;f=c[l>>2]|0;if(!f)e=Ul(0,e,g)|0;else e=bb[f&31](a,e,b)|0;c[h+4>>2]=e}bb[m&31](a,h,32)|0;h=d}}else b=n}else b=n;else{c[f>>2]=b;n=c[b+28>>2]|0;c[a+12>>2]=(n|0)==0?19:n}while(0);return b|0}function Ml(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=(c|0)==0;do if(!b)if(a)a=0;else a=ZI(c)|0;else if(a){_I(b);a=0;break}else{a=aJ(b,c)|0;break}while(0);return a|0}function Nl(a){a=a|0;var b=0,d=0,e=0;e=a+8|0;b=c[e>>2]|0;d=c[b>>2]|0;a:do if(!(d&12)){if(!(d&3)){d=b+8|0;a=c[d>>2]|0;c[d>>2]=0;break}a=Ol(a)|0;d=c[e>>2]|0;b=c[d+8>>2]|0;d=b+(c[d+12>>2]<<2)|0;while(1){if(b>>>0>=d>>>0)break a;c[b>>2]=0;b=b+4|0}}else a=c[b+4>>2]|0;while(0);e=c[e>>2]|0;c[e>>2]=c[e>>2]&-4097;c[e+16>>2]=0;c[e+4>>2]=0;return a|0}function Ol(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+8|0;a=c[g>>2]|0;b=c[a>>2]|0;if(!(b&4096)){a:do if(!(b&3)){if(b&112|0){a=c[a+8>>2]|0;break}a=c[a+4>>2]|0;if(!a)a=0;else{while(1){b=a+4|0;d=c[b>>2]|0;if(!d){e=a;break}c[b>>2]=c[d>>2];c[d>>2]=a;a=d}while(1){b=c[e>>2]|0;if(!b)break a;d=c[b+4>>2]|0;if(!d){e=b;continue}while(1){c[b+4>>2]=c[d>>2];c[d>>2]=b;b=c[d+4>>2]|0;if(!b)break;else{f=d;d=b;b=f}}c[e>>2]=d;e=d}}}else{e=c[a+8>>2]|0;f=e+(c[a+12>>2]<<2)|0;b=0;a=0;while(1){if(e>>>0>=f>>>0)break a;d=c[e>>2]|0;if(d){if(!b){b=d;a=d}else c[b>>2]=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}c[e>>2]=b}e=e+4|0}}while(0);g=c[g>>2]|0;c[g+4>>2]=a;c[g>>2]=c[g>>2]|4096}else a=c[a+4>>2]|0;return a|0}function Pl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=a+8|0;if(c[c[s>>2]>>2]&4096|0)Rl(a,0)|0;r=c[a+4>>2]|0;m=c[r>>2]|0;n=c[r+4>>2]|0;q=r+8|0;u=c[q>>2]|0;o=c[r+20>>2]|0;p=a+20|0;f=c[p>>2]&-32769;c[p>>2]=f;a:do if(!b){if(d&384|0){f=c[s>>2]|0;e=c[f+8>>2]|0;if(!e){e=0;break}if(d&256){e=c[e+4>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}else c[f+4>>2]=e;if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}if(d&4098|0){e=c[s>>2]|0;if(c[e>>2]&144|0){e=0;break}e=c[e+8>>2]|0;if(!e){e=0;break}else{h=e;t=84;break}}if(!(d&64))e=0;else{i=r+16|0;b:do if((c[i>>2]|0)!=0|(u|0)<0){j=a+12|0;k=(u|0)<0;f=0-u|0;e=c[(c[s>>2]|0)+8>>2]|0;while(1){if(!e)break b;g=c[e>>2]|0;h=c[i>>2]|0;if(h|0){if(k)b=c[e+8>>2]|0;else b=e+f|0;ib[h&127](a,b,r)}if((c[q>>2]|0)>=0){e=g;continue}cb[c[j>>2]&31](a,e,0,r)|0;e=g}}while(0);e=c[s>>2]|0;c[e+4>>2]=0;c[e+8>>2]=0;c[(c[s>>2]|0)+16>>2]=0;e=0}}else{if(d&2049|0){g=r+12|0;e=c[g>>2]|0;h=(d&1|0)==0;if(!(h|(e|0)==0)){e=bb[e&31](a,b,r)|0;if(!e){e=0;break}else f=e}else f=b;do if((u|0)>-1)h=f+u|0;else{e=cb[c[a+12>>2]&31](a,0,12,r)|0;if(e|0){c[e+8>>2]=f;h=e;break}if(!(c[g>>2]|0)){e=0;break a}e=c[r+16>>2]|0;if(h|(e|0)==0){e=0;break a}ib[e&127](a,f,r);e=0;break a}while(0);g=c[s>>2]|0;e=c[g>>2]|0;do if(!(e&128)){if(!(e&16))if(!(e&32)){t=51;break}else{t=48;break}f=c[g+4>>2]|0;e=(f|0)!=0;if(!(d&8192)){if(!e){t=48;break}if((f|0)==(c[g+8>>2]|0)){t=48;break}r=f+4|0;a=c[r>>2]|0;c[h+4>>2]=a;c[a>>2]=h;c[h>>2]=f;c[r>>2]=h;break}else{if(!e){t=51;break}e=c[f>>2]|0;if(!e){t=51;break}c[h>>2]=e;c[e+4>>2]=h;c[h+4>>2]=f;c[f>>2]=h;break}}else if(!(d&8192))t=48;else t=51;while(0);if((t|0)==48){e=c[g+8>>2]|0;c[h>>2]=e;if(!e)e=h;else c[h+4>>2]=c[e+4>>2];c[e+4>>2]=h;c[(c[s>>2]|0)+8>>2]=h}else if((t|0)==51){f=g+8|0;e=c[f>>2]|0;if(!e){c[f>>2]=h;e=h}else{r=e+4|0;c[c[r>>2]>>2]=h;c[h+4>>2]=c[r>>2]}c[e+4>>2]=h;c[h>>2]=0}e=c[s>>2]|0;f=e+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1;c[e+4>>2]=h;if((u|0)<0){e=c[h+8>>2]|0;break}else{e=h+(0-u)|0;break}}h=c[s>>2]|0;do if(!(d&512)){e=c[h+4>>2]|0;if(e|0){if((u|0)<0)g=c[e+8>>2]|0;else g=e+(0-u)|0;if((g|0)==(b|0))break}e=b+m|0;if((n|0)<0){b=c[e>>2]|0;t=68}else{b=e;t=68}}else t=68;while(0);if((t|0)==68){g=(u|0)<0;i=(n|0)<0;j=(o|0)==0;k=(n|0)<1;l=0-u|0;e=h+8|0;do{e=c[e>>2]|0;if(!e){e=0;break a}if(g)f=c[e+8>>2]|0;else f=e+l|0;f=f+m|0;if(i)f=c[f>>2]|0;do if(j)if(k){f=xJ(b,f)|0;break}else{f=dL(b,f,n)|0;break}else f=cb[o&31](a,b,f,r)|0;while(0)}while((f|0)!=0);f=c[p>>2]|0}c[p>>2]=f|32768;if(!(d&4098)){do if(!(d&8)){f=c[s>>2]|0;if(!(d&16)){c[f+4>>2]=e;break}if((e|0)==(c[f+8>>2]|0)){c[f+4>>2]=0;e=0;break a}else{e=e+4|0;t=108;break}}else{f=c[s>>2]|0;t=108}while(0);if((t|0)==108){e=c[e>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}else{h=e;t=84}}while(0);if((t|0)==84){e=c[h>>2]|0;if(e){c[e+4>>2]=c[h+4>>2];e=c[h>>2]|0}f=(c[s>>2]|0)+8|0;g=c[f>>2]|0;if((h|0)==(g|0)){c[f>>2]=e;e=c[(c[s>>2]|0)+8>>2]|0;if(e|0)c[e+4>>2]=c[h+4>>2]}else{f=h+4|0;c[c[f>>2]>>2]=e;e=g+4|0;if((h|0)==(c[e>>2]|0))c[e>>2]=c[f>>2]}e=c[s>>2]|0;f=e+4|0;if((h|0)==(c[f>>2]|0))g=c[h>>2]|0;else g=0;c[f>>2]=g;t=e+16|0;c[t>>2]=(c[t>>2]|0)+-1;if((u|0)<0)e=c[h+8>>2]|0;else e=h+(0-u)|0;f=c[r+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))ib[f&127](a,e,r);if((c[q>>2]|0)<0)cb[c[a+12>>2]&31](a,h,0,r)|0}return e|0}function Ql(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if((a|0)!=0&(b|0)!=0?(f=ZI(40)|0,(f|0)!=0):0){c[f>>2]=0;c[f+16>>2]=0;c[f+4>>2]=0;Ll(f,a,0)|0;d=f+20|0;i=a+32|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;d=c[i>>2]|0;do if(d){c[g>>2]=0;d=cb[d&31](f,1,g,a)|0;if((d|0)>=0)if(d){e=c[g>>2]|0;if(e|0)if(!(c[b+4>>2]&c[e>>2])){d=f;h=12;break}else{d=f;break}d=a+28|0;if(!(c[d>>2]|0)){d=f;h=12}else{_I(f);e=cb[c[d>>2]&31](0,0,40,a)|0;if(!e){d=0;break a}c[e>>2]=0;c[e+16>>2]=0;c[e+4>>2]=0;Ll(e,a,0)|0;c[e+20>>2]=1;c[e+24>>2]=0;c[e+32>>2]=0;c[e+28>>2]=0;d=e;f=e;h=11}}else{d=f;h=11}else{d=f;h=12}}else{d=f;h=11}while(0);if((h|0)==11){e=cb[c[d+12>>2]&31](d,0,28,a)|0;c[g>>2]=e;if(!e){d=f;h=12}else{c[e>>2]=c[b+4>>2];g=e+4|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0}}if((h|0)==12){_I(d);d=0;break}c[d+8>>2]=e;c[d>>2]=c[b>>2];c[d+16>>2]=b;e=c[i>>2]|0;if(e)cb[e&31](d,5,f,a)|0}else d=0;while(0);l=j;return d|0}function Rl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[c[a+16>>2]>>2]|0;j=a+8|0;g=c[j>>2]|0;h=c[g>>2]|0;d=h&4096;if(!b)if(!d)b=-1;else{e=d;b=c[g+4>>2]|0;i=5}else if(!(c[g+16>>2]|0)){e=0;i=5}else b=-1;a:do if((i|0)==5){c[g>>2]=h&-4097;if(!(h&3)){d=g+4|0;if(!(h&12)){c[d>>2]=0;d=g+8|0}c[d>>2]=b;if(e|0){b=0;break}c[(c[j>>2]|0)+16>>2]=-1;b=0;break}c[g+4>>2]=0;if(!e){c[g+16>>2]=0;while(1){if(!b){b=0;break a}j=c[b>>2]|0;bb[f&31](a,b,32)|0;b=j}}e=c[g+8>>2]|0;a=e+(c[g+12>>2]<<2)|0;while(1){if(e>>>0>=a>>>0){b=0;break a}d=c[e>>2]|0;if(d){c[e>>2]=b;b=c[d>>2]|0;c[d>>2]=0}e=e+4|0}}while(0);return b|0}function Sl(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(c[d>>2]&4096){Rl(a,0)|0;d=c[b>>2]|0}e=d+16|0;a=c[e>>2]|0;do if((a|0)<0){b=c[d>>2]|0;if(b&12|0){a=Tl(c[d+4>>2]|0)|0;c[e>>2]=a;break}if(b&112){a=0;b=d+8|0;while(1){b=c[b>>2]|0;if(!b)break;a=a+1|0}c[e>>2]=a}}while(0);return a|0}function Tl(a){a=a|0;var b=0;if(!a)return 0;else{b=Tl(c[a+4>>2]|0)|0;return b+1+(Tl(c[a>>2]|0)|0)|0}return 0}function Ul(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=c;if((e|0)>=1){h=c+e+-1|0;g=(h>>>0<c>>>0?c:h)+(1-g)&-2;f=c;while(1){if(f>>>0>=h>>>0)break;b=O(((d[f>>0]|0)<<8)+b+(d[f+1>>0]|0)|0,17109811)|0;f=f+2|0}f=c+g|0;if(f>>>0>h>>>0)c=e;else{c=e;b=O(((d[f>>0]|0)<<8)+b|0,17109811)|0}}else{while(1){f=a[c>>0]|0;if(!(f<<24>>24))break;h=a[c+1>>0]|0;e=O(((f&255)<<8)+b+(h&255)|0,17109811)|0;b=e;c=c+(h<<24>>24?2:1)|0}c=c-g|0}return O(b+c|0,17109811)|0}function Vl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=l;l=l+128|0;z=G+120|0;r=G;F=a+8|0;e=c[F>>2]|0;if(c[e>>2]&4096){Rl(a,0)|0;e=c[F>>2]|0}E=c[a+4>>2]|0;A=c[E>>2]|0;B=c[E+4>>2]|0;x=E+8|0;D=c[x>>2]|0;C=c[E+20>>2]|0;t=a+20|0;c[t>>2]=c[t>>2]&-32769;h=c[e+4>>2]|0;a:do if(!b)if((d&448|0)==0|(h|0)==0)e=0;else{if(!(d&64)){b:do if(!(d&256)){e=h;while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break b;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}}else{e=h;while(1){f=c[e>>2]|0;if(!f)break b;a=f+4|0;c[e>>2]=c[a>>2];c[a>>2]=e;e=f}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-D)|0;break}}b=E+16|0;if((c[b>>2]|0)!=0|(D|0)<0){j=a+12|0;k=(D|0)<0;i=0-D|0;e=h;do{h=e;while(1){e=h+4|0;f=c[e>>2]|0;if(!f)break;c[e>>2]=c[f>>2];c[f>>2]=h;h=f}e=c[h>>2]|0;f=c[b>>2]|0;if(f|0){if(k)g=c[h+8>>2]|0;else g=h+i|0;ib[f&127](a,g,E)}if((c[x>>2]|0)<0)cb[c[j>>2]&31](a,h,0,E)|0}while((e|0)!=0);e=c[F>>2]|0}c[e+16>>2]=0;c[e+4>>2]=0;e=0}else{y=a+16|0;u=(d&4098|0)==0;c:do if(u|(c[(c[y>>2]|0)+4>>2]|0)!=8)v=45;else{k=(B|0)<0;e=b+A|0;if(k)e=c[e>>2]|0;i=(C|0)==0;j=(B|0)<1;g=bb[c[a>>2]&31](a,b,4)|0;while(1){if(!g){v=45;break c}f=g+A|0;if(k)f=c[f>>2]|0;do if(i)if(j){f=xJ(e,f)|0;break}else{f=dL(e,f,B)|0;break}else f=cb[C&31](a,e,f,E)|0;while(0);if(f|0){v=45;break c}if((g|0)==(b|0))break;g=bb[c[a>>2]&31](a,g,8)|0}h=c[(c[F>>2]|0)+4>>2]|0;c[z>>2]=c[h+4>>2];c[z+4>>2]=c[h>>2];e=z;v=180}while(0);d:do if((v|0)==45){do if(!(d&2565)){if(d&32|0){if((D|0)<0)g=c[b+8>>2]|0;else g=b+(0-D)|0;e=g+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e;if(!h){e=b;f=z;h=z;v=198;break}else{e=b;s=f;j=b;v=64;break}}if(h){if((D|0)<0)e=c[h+8>>2]|0;else e=h+(0-D)|0;if((e|0)!=(b|0)){f=b+A|0;if((B|0)<0){g=b;e=0;s=c[f>>2]|0;j=0;v=64}else{g=b;e=0;s=f;j=0;v=64}}else{e=0;g=b;f=z;k=z;j=0;v=141}}else{e=0;g=b;f=z;h=z;v=198}}else{if(!(d&512)){e=b+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e}else f=b;if(!h){e=0;g=b;f=z;h=z;v=198}else{g=b;e=0;s=f;j=0;v=64}}while(0);e:do if((v|0)==64){f:do if((c[(c[y>>2]|0)+4>>2]|0)==4?(q=c[(c[F>>2]|0)+24>>2]|0,!((d&516|0)==0|(q|0)==0)):0){b=(D|0)<0;m=(B|0)<0;n=(C|0)==0;o=(B|0)<1;p=0-D|0;k=0;f=h;while(1){if((k|0)>=(q|0)){f=z;k=z;m=0;break}if(b)i=c[f+8>>2]|0;else i=f+p|0;i=i+A|0;if(m)i=c[i>>2]|0;do if(n)if(o){i=xJ(s,i)|0;break}else{i=dL(s,i,B)|0;break}else i=cb[C&31](a,s,i,E)|0;while(0);if(!i){v=80;break}c[r+(k<<2)>>2]=i;f=c[((i|0)<0?f+4|0:f)>>2]|0;if(!f){e=0;break a}else k=k+1|0}if((v|0)==80)if(b){e=c[f+8>>2]|0;break a}else{e=f+p|0;break a}while(1){if((m|0)>=(q|0))break f;do if((c[r+(m<<2)>>2]|0)<0){i=h+4|0;b=c[i>>2]|0;if((c[r+((m|1)<<2)>>2]|0)<0){c[i>>2]=c[b>>2];c[b>>2]=h;c[f+4>>2]=b;f=b;h=k;i=b+4|0;break}else{c[k>>2]=b;c[f+4>>2]=h;f=h;h=b;i=b;break}}else{i=c[h>>2]|0;if((c[r+((m|1)<<2)>>2]|0)>0){p=i+4|0;c[h>>2]=c[p>>2];c[p>>2]=h;c[k>>2]=i;h=i;break}else{c[f+4>>2]=i;c[k>>2]=h;f=i;i=i+4|0;break}}while(0);k=h;m=m+2|0;h=c[i>>2]|0}}else{f=z;k=z}while(0);n=(D|0)<0;o=(B|0)<0;p=(C|0)!=0;q=(B|0)<1;r=0-D|0;i=h;g:while(1){h=i;while(1){if(n)i=c[h+8>>2]|0;else i=h+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=xJ(s,i)|0;break}else{i=dL(s,i,B)|0;break}else i=cb[C&31](a,s,i,E)|0;while(0);if(!i){v=140;break g}if((i|0)>=0)break;b=h+4|0;m=c[b>>2]|0;if(!m){v=121;break g}if(n)i=c[m+8>>2]|0;else i=m+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=xJ(s,i)|0;break}else{i=dL(s,i,B)|0;break}else i=cb[C&31](a,s,i,E)|0;while(0);if((i|0)>=0){v=118;break}c[b>>2]=c[m>>2];c[m>>2]=h;c[f+4>>2]=m;h=c[m+4>>2]|0;if(!h){f=m;h=k;v=198;break e}else f=m}if((v|0)==118){v=0;if(!i){v=119;break}c[k>>2]=m;c[f+4>>2]=h;i=c[m>>2]|0;if(!i){f=h;h=m;v=198;break e}else{f=h;k=m;continue}}b=c[h>>2]|0;if(!b){v=139;break}if(n)i=c[b+8>>2]|0;else i=b+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=xJ(s,i)|0;break}else{i=dL(s,i,B)|0;break}else i=cb[C&31](a,s,i,E)|0;while(0);if((i|0)>0){i=b+4|0;c[h>>2]=c[i>>2];c[i>>2]=h;c[k>>2]=b;i=c[b>>2]|0;if(!i){h=b;v=198;break e}else{k=b;continue}}if(!i){v=137;break}c[f+4>>2]=b;c[k>>2]=h;i=c[b+4>>2]|0;if(!i){f=b;v=198;break e}else{f=b;k=h}}if((v|0)==119){c[f+4>>2]=h;f=h;h=m;v=141;break}else if((v|0)==121){c[f+4>>2]=h;f=h;h=k;v=198;break}else if((v|0)==137){c[k>>2]=h;k=h;h=b;v=141;break}else if((v|0)==139){c[k>>2]=h;v=198;break}else if((v|0)==140)if(!h){h=k;v=198;break}else{v=141;break}}while(0);do if((v|0)==141){c[t>>2]=c[t>>2]|32768;i=h+4|0;c[k>>2]=c[i>>2];c[f+4>>2]=c[h>>2];if(!(d&516)){if(d&8|0){c[i>>2]=c[z>>2];c[h>>2]=0;c[z>>2]=h;v=169;break}if(d&16|0){v=z+4|0;c[h>>2]=c[v>>2];c[i>>2]=0;c[v>>2]=h;v=175;break}if(!u){e=f;v=180;break d}if(d&2049|0){if(c[(c[y>>2]|0)+4>>2]&4|0){e=h;break}c[i>>2]=0;e=z+4|0;c[h>>2]=c[e>>2];c[e>>2]=h;e=h;v=205;break}if(!(d&32)){e=0;break a}if(!(c[(c[y>>2]|0)+4>>2]&4)){c[e+4>>2]=0;x=z+4|0;c[e>>2]=c[x>>2];c[x>>2]=j;e=(c[F>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;e=h;break}e=c[E+16>>2]|0;if(e|0)ib[e&127](a,g,E);if((c[x>>2]|0)<0){cb[c[a+12>>2]&31](a,j,0,E)|0;e=h}else e=h}else e=h}else if((v|0)==198){c[f+4>>2]=0;c[h>>2]=0;if(!(d&8))if(!(d&16)){if(d&516|0){e=f;break d}if(!(d&2049)){if(!(d&32)){g=0;e=f;break d}x=(c[F>>2]|0)+16|0;c[x>>2]=(c[x>>2]|0)+1}else{e=0;v=205}}else v=175;else v=169}while(0);if((v|0)==169){h=z+4|0;e=c[h>>2]|0;if(!e){e=f;break}while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}c[h>>2]=c[e>>2]}else if((v|0)==175){e=c[z>>2]|0;if(!e){e=f;break}while(1){f=c[e>>2]|0;if(!f)break;x=f+4|0;c[e>>2]=c[x>>2];c[x>>2]=e;e=f}c[z>>2]=c[e+4>>2]}else if((v|0)==205){i=E+12|0;h=c[i>>2]|0;j=(d&1|0)==0;if(!(j|(h|0)==0))g=bb[h&31](a,g,E)|0;do if(g){if((D|0)>-1){e=g+D|0;v=215;break}e=cb[c[a+12>>2]&31](a,0,12,E)|0;if(e|0){c[e+8>>2]=g;break}if((c[i>>2]|0)!=0?(w=c[E+16>>2]|0,!(j|(w|0)==0)):0){ib[w&127](a,g,E);v=215}else v=215}else v=215;while(0);if((v|0)==215)if(!e){e=f;break}f=(c[F>>2]|0)+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1}c[e+4>>2]=c[z>>2];c[e>>2]=c[z+4>>2];h:do if(!((d&516|0)==0?1:(c[(c[y>>2]|0)+4>>2]&8|0)==0)){m=(D|0)<0;if(m)f=c[e+8>>2]|0;else f=e+(0-D)|0;n=(B|0)<0;f=f+A|0;if(n)f=c[f>>2]|0;j=(C|0)==0;k=(B|0)<1;b=0-D|0;while(1){i=e+4|0;g=c[i>>2]|0;if(!g)break h;while(1){h=c[g>>2]|0;if(!h)break;z=h+4|0;c[g>>2]=c[z>>2];c[z>>2]=g;g=h}c[i>>2]=g;if(m)h=c[g+8>>2]|0;else h=g+b|0;h=h+A|0;if(n)h=c[h>>2]|0;do if(j)if(k){h=xJ(f,h)|0;break}else{h=dL(f,h,B)|0;break}else h=cb[C&31](a,f,h,E)|0;while(0);if(h|0)break h;c[i>>2]=c[g>>2];c[g>>2]=e;e=g}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break a}else{e=e+(0-D)|0;break a}}while(0);if((v|0)==180){if((D|0)<0)g=c[h+8>>2]|0;else g=h+(0-D)|0;f=c[E+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))ib[f&127](a,g,E);if((c[x>>2]|0)<0)cb[c[a+12>>2]&31](a,h,0,E)|0;a=(c[F>>2]|0)+16|0;E=c[a>>2]|0;c[a>>2]=(E|0)<1?-1:E+-1|0}do{f=e+4|0;e=c[f>>2]|0}while((e|0)!=0);c[f>>2]=c[z>>2];c[(c[F>>2]|0)+4>>2]=c[z+4>>2];e=d&2|0?g:0}while(0);l=G;return e|0}function Wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[c[a+8>>2]>>2]&4096|0)Rl(a,0)|0;f=(b|0)!=0;if(f){if(c[c[b+8>>2]>>2]&4096|0)Rl(b,0)|0;if((c[b+16>>2]|0)==(c[a+16>>2]|0)){d=b;e=7}else b=0}else{d=0;e=7}a:do if((e|0)==7){while(1){if(!d)break;if((d|0)==(a|0)){b=0;break a}d=c[d+28>>2]|0;e=7}d=a+28|0;e=c[d>>2]|0;if(e|0){g=e+24|0;c[g>>2]=(c[g>>2]|0)+-1}c[a+32>>2]=0;c[d>>2]=0;if(f){c[d>>2]=b;c[a>>2]=12;g=b+24|0;c[g>>2]=(c[g>>2]|0)+1;break}else{c[a>>2]=c[c[a+16>>2]>>2];b=e;break}}while(0);return b|0}function Xl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(d&99)){if((d&516|0)==0?(e=c[(c[a+16>>2]|0)+4>>2]|0,!((d&384|0)!=0&(e&12|0)==0)):0){if(e&12|0){if(!(d&408)){e=0;break}o=(d&136|0)!=0;p=(d&272|0)!=0;l=0;f=0;e=0;n=a;while(1){if(!n)break;m=bb[c[c[n+16>>2]>>2]&31](n,b,d)|0;do if(!m)g=l;else{h=c[n+4>>2]|0;i=c[h+4>>2]|0;j=c[h+20>>2]|0;g=m+(c[h>>2]|0)|0;if((i|0)<0)k=c[g>>2]|0;else k=g;if(e|0){do if(!j)if((i|0)<1){g=xJ(k,f)|0;break}else{g=dL(k,f,i)|0;break}else g=cb[j&31](n,k,f,h)|0;while(0);if(!(o&(g|0)<0|p&(g|0)>0)){g=l;break}}g=n;f=k;e=m}while(0);l=g;n=c[n+28>>2]|0}c[a+32>>2]=l;break}if(!(d&24)){e=0;break}j=a+32|0;f=c[j>>2]|0;if(f){e=c[(c[f+4>>2]|0)+8>>2]|0;g=c[(c[f+8>>2]|0)+4>>2]|0;if((e|0)<0)e=c[g+8>>2]|0;else e=g+(0-e)|0;if((e|0)==(b|0))e=b;else{f=a;h=32}}else{f=a;h=32}do if((h|0)==32){while(1){if(!f){h=33;break}e=bb[c[c[f+16>>2]>>2]&31](f,b,4)|0;if(e|0){h=36;break}f=c[f+28>>2]|0;h=32}if((h|0)==33){c[j>>2]=0;e=0;break a}else if((h|0)==36){c[j>>2]=f;break}}while(0);i=(d<<4&128^128)+128|0;e=bb[c[c[f+16>>2]>>2]&31](f,e,d)|0;while(1){h=f+16|0;while(1){if(!e)break;else g=a;while(1){if((g|0)==(f|0))break a;if(bb[c[c[g+16>>2]>>2]&31](g,e,4)|0)break;g=c[g+28>>2]|0}e=bb[c[c[h>>2]>>2]&31](f,e,d)|0}f=c[f+28>>2]|0;c[j>>2]=f;if(!f){e=0;break a}e=bb[c[c[f+16>>2]>>2]&31](f,0,i)|0}}else f=a;while(1){if(!f){f=0;e=0;break}e=bb[c[c[f+16>>2]>>2]&31](f,b,d)|0;if(e|0)break;f=c[f+28>>2]|0}c[a+32>>2]=f}else e=bb[c[c[a+16>>2]>>2]&31](a,b,d)|0;while(0);return e|0}function Yl(a){a=a|0;var b=0;b=c[41980]|0;c[41980]=a;return b|0}function Zl(a){a=a|0;var b=0;b=c[41981]|0;c[41981]=a;return b|0}function _l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=$l(a,b,f)|0;l=e;return d|0}function $l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|0;e=g;f=(a|0)==3;h=f?c[41983]|0:(a|0)==2?1:a;c[41983]=h;i=c[41984]|0;c[41984]=i>>>0>h>>>0?i:h;do if(h>>>0<(c[41981]|0)>>>0){a=c[41982]|0;if(!a){a=AN()|0;c[41982]=a;if(!a){a=1;break}}if(!f){DN(a)|0;a=c[41982]|0}MK(a,b,d)|0;a=0}else{if(c[41980]|0){am(a,b,d);a=0;break}if(f)a=c[13918]|0;else{i=c[13918]|0;c[e>>2]=(a|0)==1?81312:81318;zL(i,81326,e)|0;a=i}MK(a,b,d)|0;a=0}while(0);l=g;return a|0}function am(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((c[41985]|0)==0?(f=ZI(c[4354]|0)|0,c[41985]=f,(f|0)==0):0)WL(81331,c[13918]|0)|0;else e=4;do if((e|0)==4){if((a|0)!=3){$a[c[41980]&31]((a|0)==1?81312:81318)|0;$a[c[41980]&31](81990)|0}while(1){a=LK(c[41985]|0,c[4354]|0,b,d)|0;e=c[4354]|0;if((a|0)>-1&(a|0)<(e|0)){e=7;break}e=e<<1;f=a+1|0;f=(e|0)>(f|0)?e:f;c[4354]=f;if(!(aJ(c[41985]|0,f)|0)){e=9;break}}if((e|0)==7){$a[c[41980]&31](c[41985]|0)|0;break}else if((e|0)==9){WL(81331,c[13918]|0)|0;break}}while(0);return}function bm(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;$l(1,a,e)|0;l=d;return}function cm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!e){e=(d|0)==0?1024:d;d=e;e=ZI(e)|0;f=1}else f=0;c[b+12>>2]=f;c[b>>2]=e;c[b+8>>2]=e+d;c[b+4>>2]=e;a[e>>0]=0;return}function dm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;f=c[a>>2]|0;g=(c[h>>2]|0)-f|0;e=g<<1;g=g+b|0;e=g>>>0>e>>>0?g:e;g=a+4|0;b=f;f=(c[g>>2]|0)-f|0;d=a+12|0;if(!(c[d>>2]|0)){i=ZI(e)|0;TN(i|0,b|0,f|0)|0;c[d>>2]=1;b=i}else b=aJ(b,e)|0;c[a>>2]=b;c[g>>2]=b+f;c[h>>2]=b+e;return 0}function em(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+4|0;e=c[f>>2]|0;if((e+d|0)>>>0>(c[a+8>>2]|0)>>>0){dm(a,d)|0;e=c[f>>2]|0}TN(e|0,b|0,d|0)|0;c[f>>2]=(c[f>>2]|0)+d;return d|0}function fm(a,b){a=a|0;b=b|0;return em(a,b,rJ(b)|0)|0}function gm(a){a=a|0;if(c[a+12>>2]|0)_I(c[a>>2]|0);return}function hm(a){a=a|0;var b=0,e=0;b=a+4|0;e=c[b>>2]|0;if(e>>>0>(c[a>>2]|0)>>>0){c[b>>2]=e+-1;a=d[e>>0]|0}else a=-1;return a|0}function im(a,b,d){a=a|0;b=b|0;d=d|0;bp(c[41987]|0,c[b+8>>2]|0)|0;bp(c[41987]|0,c[b+12>>2]|0)|0;Zn(c[41987]|0,b);return}function jm(a,b){a=a|0;b=b|0;var c=0;c=Lo(a,81379,0)|0;if((b|0)!=0&(c|0)==0){km(a);c=Lo(a,81379,0)|0}return c|0}function km(a){a=a|0;var b=0,c=0,d=0;d=so(a)|0;wq(d,d,86,0,1)|0;c=co(d)|0;while(1){if(!c)break;mm(a,c);b=Pm(d,c)|0;while(1){if(!b)break;nm(a,b);b=Rm(d,b)|0}c=eo(d,c)|0}return}function lm(b){b=b|0;var c=0;c=b+24|0;a[c>>0]=a[c>>0]|64;sm(b);c=Lp(b)|0;pm((c|0)==0?b:c,b);return}function mm(a,b){a=a|0;b=b|0;var d=0;d=om(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))pm(a,b);return}function nm(a,b){a=a|0;b=b|0;var d=0;d=om(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))pm(a,b);return}function om(a){a=a|0;return Lo(a,81367,0)|0}function pm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=No(b,81367,16,0)|0;f=qm(a,c[b>>2]&3)|0;e=d+8|0;a:do if(!(c[e>>2]|0)){a=so(a)|0;c[e>>2]=qm(a,c[b>>2]&3)|0;a=rm(b)|0;d=d+12|0;c[d>>2]=Yn(ro(b)|0,((a|0)>4?a:4)<<2)|0;a=bb[c[f>>2]&31](f,0,128)|0;while(1){if(!a)break a;e=ro(b)|0;e=$o(e,c[a+12>>2]|0)|0;c[(c[d>>2]|0)+(c[a+16>>2]<<2)>>2]=e;a=bb[c[f>>2]&31](f,a,8)|0}}while(0);return}function qm(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;a=jm(a,0)|0;a:do if(!a)a=0;else switch(b|0){case 0:{a=c[a+16>>2]|0;break a}case 1:{a=c[a+8>>2]|0;break a}case 2:case 3:{a=c[a+12>>2]|0;break a}default:{c[d>>2]=b;_l(1,81392,d)|0;a=0;break a}}while(0);l=e;return a|0}function rm(a){a=a|0;var b=0;b=so(ro(a)|0)|0;a=qm(b,c[a>>2]&3)|0;if(!a)a=0;else a=Sl(a)|0;return a|0}function sm(a){a=a|0;var b=0,d=0,e=0,f=0;d=No(a,81379,20,0)|0;e=d+8|0;c[e>>2]=Pp(a,17420,c[4353]|0)|0;f=d+12|0;c[f>>2]=Pp(a,17420,c[4353]|0)|0;d=d+16|0;c[d>>2]=Pp(a,17420,c[4353]|0)|0;b=Lp(a)|0;if(!b){b=c[41986]|0;if(!((b|0)==0|(b|0)==(a|0))){b=jm(b,0)|0;tm(c[b+8>>2]|0,c[e>>2]|0,a,1);tm(c[b+12>>2]|0,c[f>>2]|0,a,2);tm(c[b+16>>2]|0,c[d>>2]|0,a,0)}}else{a=jm(b,0)|0;Wl(c[e>>2]|0,c[a+8>>2]|0)|0;Wl(c[f>>2]|0,c[a+12>>2]|0)|0;Wl(c[d>>2]|0,c[a+16>>2]|0)|0}return}function tm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=bb[c[b>>2]&31](b,0,128)|0;while(1){if(!g)break;h=um(e,c[g+8>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,f)|0;a[h+22>>0]=a[g+22>>0]|0;a[h+21>>0]=a[g+21>>0]|0;bb[c[d>>2]&31](d,h,1)|0;g=bb[c[b>>2]&31](b,g,8)|0}return}function um(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Yn(b,24)|0;a[h+20>>0]=g;c[h+8>>2]=$o(b,d)|0;c[h+12>>2]=$o(b,e)|0;c[h+16>>2]=f;return h|0}function vm(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+8>>2]=b;b=bb[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function wm(a,b){a=a|0;b=b|0;var c=0;c=Wl(a,0)|0;b=vm(a,b)|0;Wl(a,c)|0;return b|0}function xm(a,b){a=a|0;b=b|0;a=om(a)|0;if(!a)a=0;else a=vm(c[a+8>>2]|0,b)|0;return a|0}function ym(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;if(!b){b=c[41986]|0;if(!b){a[g>>0]=a[17456]|0;a[g+1>>0]=a[17457]|0;a[g+2>>0]=a[17458]|0;a[g+3>>0]=a[17459]|0;b=gn(0,g,0)|0;c[41986]=b}}if(!f)b=Am(b,d,e)|0;else b=zm(b,d,e,f)|0;l=h;return b|0}function zm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=so(a)|0;jm(a,1)|0;g=qm(a,b)|0;f=wm(g,d)|0;a:do if(!f){f=vm(g,d)|0;if(f|0){f=um(a,d,e,c[f+16>>2]|0,b)|0;bb[c[g>>2]&31](g,f,1)|0;h=16;break}g=qm(i,b)|0;f=um(a,d,e,Sl(g)|0,b)|0;bb[c[g>>2]&31](g,f,1)|0;switch(b|0){case 0:{wq(i,i,52,f,1)|0;h=16;break a}case 1:{d=co(i)|0;while(1){if(!d){h=16;break a}Bm(a,d,f);d=eo(i,d)|0}}case 2:case 3:{g=co(i)|0;while(1){if(!g){h=16;break a}d=Pm(i,g)|0;while(1){if(!d)break;Bm(a,d,f);d=Rm(i,d)|0}g=eo(i,g)|0}}default:break a}}else{h=f+12|0;bp(a,c[h>>2]|0)|0;c[h>>2]=$o(a,e)|0;h=16}while(0);if((h|0)==16)if((b|0)==0&(f|0)!=0)Cm(a,f,e)|0;vo(a,a,f);return f|0}function Am(a,b,c){a=a|0;b=b|0;c=c|0;a=qm(a,b)|0;if(!a)a=0;else a=vm(a,c)|0;return a|0}function Bm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;b=om(b)|0;f=d+16|0;e=c[f>>2]|0;if((e|0)>3){g=c[a+64>>2]|0;b=b+12|0;e=e<<2;c[b>>2]=cb[c[(c[g>>2]|0)+8>>2]&31](c[g+12>>2]|0,c[b>>2]|0,e,e+4|0)|0}else b=b+12|0;g=$o(a,c[d+12>>2]|0)|0;c[(c[b>>2]|0)+(c[f>>2]<<2)>>2]=g;return}function Cm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=ro(a)|0;g=(om(a)|0)+12|0;i=b+16|0;bp(h,c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]|0)|0;f=$o(h,d)|0;c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]=f;do if(!(c[a>>2]&3)){e=c[(jm(h,0)|0)+16>>2]|0;f=b+8|0;g=wm(e,c[f>>2]|0)|0;if(!g){i=um(h,c[f>>2]|0,d,c[i>>2]|0,c[a>>2]&3)|0;bb[c[e>>2]&31](e,i,1)|0;break}else{i=g+12|0;bp(h,c[i>>2]|0)|0;c[i>>2]=$o(h,d)|0;break}}while(0);vo(h,a,b);return 0}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;a=qm(a,b)|0;do if(a){b=c[a>>2]|0;if(!d){a=bb[b&31](a,0,128)|0;break}else{a=bb[b&31](a,d,8)|0;break}}else a=0;while(0);return a|0}function Em(a){a=a|0;var b=0;c[41987]=a;b=om(a)|0;if(b|0){Fm(a,b);Po(a,c[b>>2]|0)|0}b=jm(a,0)|0;if(b)if(((Rp(a,c[b+8>>2]|0)|0)==0?(Rp(a,c[b+12>>2]|0)|0)==0:0)?(Rp(a,c[b+16>>2]|0)|0)==0:0){Po(a,c[b>>2]|0)|0;b=0}else b=1;else b=0;return b|0}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=ro(a)|0;e=rm(a)|0;b=b+12|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(e|0))break;bp(f,c[d+(a<<2)>>2]|0)|0;a=a+1|0}Zn(f,d);return}function Gm(a){a=a|0;var b=0;b=om(a)|0;if(b|0){Fm(a,b);Po(a,81367)|0}return}function Hm(a){a=a|0;var b=0;b=om(a)|0;if(b|0){Fm(a,b);Po(a,81367)|0}return}function Im(a,b){a=a|0;b=b|0;b=xm(a,b)|0;if(!b)b=0;else{a=c[(om(a)|0)+12>>2]|0;b=c[a+(c[b+16>>2]<<2)>>2]|0}return b|0}function Jm(a,b){a=a|0;b=b|0;a=c[(om(a)|0)+12>>2]|0;return c[a+(c[b+16>>2]<<2)>>2]|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;b=xm(a,b)|0;if(!b)b=-1;else{Cm(a,b,c)|0;b=0}return b|0}function Lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=ro(a)|0;f=ym(f,c[a>>2]&3,b,0)|0;if(!f){f=ro(a)|0;f=ym(f,c[a>>2]&3,b,e)|0}Cm(a,f,d)|0;return 0}function Mm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=ro(a)|0;f=c[a>>2]|0;a:do if(!((c[b>>2]^f)&3)){d=1;e=0;while(1){e=Dm(g,f&3,e)|0;if(!e)break a;d=xm(b,c[e+8>>2]|0)|0;if(!d){d=1;break a}f=Jm(a,e)|0;Cm(b,d,f)|0;if(cp(f)|0)dp(Jm(b,d)|0);d=0;f=c[a>>2]|0}}else d=1;while(0);return d|0}function Nm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b+40>>2]|0;f=c[d+40>>2]|0;if((a|0)==(f|0)){e=(c[b>>2]|0)>>>4;a=(c[d>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}else{e=(c[a>>2]|0)>>>4;a=(c[f>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}if((g|0)==6)a=0;return a|0}function Om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=(c[b+40>>2]|0)+8|0;g=c[a>>2]|0;a=c[a+4>>2]|0;f=(c[d+40>>2]|0)+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;do if(!(a>>>0<f>>>0|(a|0)==(f|0)&g>>>0<e>>>0))if(a>>>0>f>>>0|(a|0)==(f|0)&g>>>0>e>>>0)a=1;else{e=b+8|0;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!((a|0)==0&(e|0)==0)?(i=d+8|0,h=c[i>>2]|0,i=c[i+4>>2]|0,!((h|0)==0&(i|0)==0)):0){if(e>>>0<i>>>0|(e|0)==(i|0)&a>>>0<h>>>0){a=-1;break}if(e>>>0>i>>>0|(e|0)==(i|0)&a>>>0>h>>>0){a=1;break}}a=0}else a=-1;while(0);return a|0}function Pm(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+32|0;Rl(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=bb[c[b>>2]&31](b,0,128)|0;c[a>>2]=Nl(c[d>>2]|0)|0}return b|0}function Qm(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e;if((c[b+24>>2]|0)==(a|0))a=b+28|0;else{c[d+16>>2]=b;a=c[a+40>>2]|0;a=bb[c[a>>2]&31](a,d,4)|0}l=e;return a|0}function Rm(a,b){a=a|0;b=b|0;var d=0,e=0;d=Qm(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+32|0;Rl(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=bb[c[a>>2]&31](a,b,8)|0;c[d>>2]=Nl(c[e>>2]|0)|0}return a|0}function Sm(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+28|0;Rl(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=bb[c[b>>2]&31](b,0,128)|0;c[a>>2]=Nl(c[d>>2]|0)|0}return b|0}function Tm(a,b){a=a|0;b=b|0;var d=0,e=0;d=Qm(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+28|0;Rl(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=bb[c[a>>2]&31](a,b,8)|0;c[d>>2]=Nl(c[e>>2]|0)|0}return a|0}function Um(a,b){a=a|0;b=b|0;var c=0;c=Pm(a,b)|0;if(!c)c=Sm(a,b)|0;return c|0}function Vm(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((c[b>>2]&3|0)==2){b=Rm(a,b)|0;if(!b){b=0;do{if(!b)b=Sm(a,d)|0;else b=Tm(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0))}}else do{b=Tm(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0));while(0);return b|0}function Wm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+32|0;f=h+16|0;g=h;if((sn(a)|0)!=0?(c[g>>2]=0,c[g+4>>2]=0,c[g+8>>2]=0,c[g+12>>2]=0,c[f>>2]=c[g>>2],c[f+4>>2]=c[g+4>>2],c[f+8>>2]=c[g+8>>2],c[f+12>>2]=c[g+12>>2],(_m(a,b,e,f)|0)!=0):0)f=0;else f=((d[a+24>>0]|0)>>>2&1^1)&255|(b|0)!=(e|0);l=h;return f|0}function Xm(a,b){a=a|0;b=b|0;Zm(a,b);return}function Ym(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;io(b,d,1)|0;io(b,e,1)|0;h=Yn(b,96)|0;i=h+48|0;l=kn(b,2)|0;j=c[i>>2]|0;k=c[h>>2]|0;m=h+8|0;c[m>>2]=f;c[m+4>>2]=g;m=h+56|0;c[m>>2]=f;c[m+4>>2]=g;g=l<<4;c[h>>2]=k&12|g|2;c[i>>2]=j&12|g|3;c[h+88>>2]=d;c[h+40>>2]=e;Zm(b,h);if(a[b+24>>0]&64){No(h,81367,16,0)|0;nm(b,h)}to(b,h);return h|0}function Zm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+16|0;d=i;h=c[b>>2]&3;g=(h|0)==2?b:b+-48|0;h=(h|0)==3?b:b+48|0;e=c[h+40>>2]|0;f=c[g+40>>2]|0;while(1){if(!a)break;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];if(_m(a,e,f,d)|0)break;j=Qm(a,e)|0;m=a+44|0;$m(c[m>>2]|0,j+32|0,g);k=a+48|0;$m(c[k>>2]|0,j+24|0,g);j=Qm(a,f)|0;$m(c[m>>2]|0,j+28|0,h);$m(c[k>>2]|0,j+20|0,h);a=Lp(a)|0}l=i;return}function _m(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+48|0;f=h;if(!((b|0)==0|(d|0)==0)?(c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+40>>2]=b,g=Qm(a,d)|0,(g|0)!=0):0){e=a+48|0;g=g+20|0;Rl(c[e>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;a=bb[c[a>>2]&31](a,f,4)|0;c[g>>2]=Nl(c[e>>2]|0)|0}else a=0;l=h;return a|0}function $m(a,b,d){a=a|0;b=b|0;d=d|0;Rl(a,c[b>>2]|0)|0;bb[c[a>>2]&31](a,d,1)|0;c[b>>2]=Nl(a)|0;return}function an(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+48|0;i=n+24|0;k=n+16|0;j=n;do if(!(An(a,2,e,k,0)|0))if(!e){if(f|0?(sn(a)|0)==0:0){m=18;break};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;m=7}else m=17;else{o=j;c[o>>2]=0;c[o+4>>2]=0;o=k;g=c[o+4>>2]|0;m=j+8|0;c[m>>2]=c[o>>2];c[m+4>>2]=g;c[j>>2]=2;m=7}while(0);a:do if((m|0)==7){c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=_m(a,b,d,i)|0;b:do if(!g){if(rn(a)|0?(c[i>>2]=c[j>>2],c[i+4>>2]=c[j+4>>2],c[i+8>>2]=c[j+8>>2],c[i+12>>2]=c[j+12>>2],h=_m(a,d,b,i)|0,h|0):0){g=h;break}do if(f|0){g=so(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=_m(g,b,d,i)|0;if(!g){if(!(rn(a)|0))break;g=so(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=_m(g,d,b,i)|0;if(!g)break}Xm(a,g);break b}while(0);m=17;break a}while(0)}while(0);if((m|0)==17)if(!f)g=0;else m=18;if((m|0)==18)if((Wm(a,b,d)|0)!=0?(An(a,2,e,k,1)|0)!=0:0){g=k;g=Ym(a,b,d,c[g>>2]|0,c[g+4>>2]|0)|0;En(a,2,g)}else g=0;l=n;return g|0}function bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=(c[b>>2]&3|0)==3;g=d?b+-48|0:b;d=d?b:b+48|0;b=c[g+40>>2]|0;h=Qm(a,c[d+40>>2]|0)|0;f=a+44|0;cn(c[f>>2]|0,h+32|0,g);e=a+48|0;cn(c[e>>2]|0,h+24|0,g);b=Qm(a,b)|0;cn(c[f>>2]|0,b+28|0,d);cn(c[e>>2]|0,b+20|0,d);return}function cn(a,b,d){a=a|0;b=b|0;d=d|0;Rl(a,c[b>>2]|0)|0;bb[c[a>>2]&31](a,d,2)|0;c[b>>2]=Nl(a)|0;return}function dn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;d=(c[d>>2]&3|0)==2?d:d+-48|0;g=c[d>>2]&3;h=c[((g|0)==3?d:d+48|0)+40>>2]|0;g=c[((g|0)==2?d:d+-48|0)+40>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];if(_m(b,h,g,f)|0){if((so(b)|0)==(b|0)){if(a[b+24>>0]&64)Hm(d);xo(b,d);Vo(d);h=d+8|0;Cn(b,2,c[h>>2]|0,c[h+4>>2]|0)}if(!(wq(b,d,53,0,0)|0))if((so(b)|0)==(b|0)){Zn(b,d);d=0}else d=0;else d=-1}else d=-1;l=e;return d|0}function en(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;f=io(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0,d)|0;g=io(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,d)|0;do if((f|0)!=0&(g|0)!=0){c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];e=_m(a,f,g,e)|0;f=(e|0)==0;if(!((d|0)!=0&f)){if(f)break}else{Zm(a,b);e=b}d=c[e>>2]&3;l=h;return ((d|0)==(c[b>>2]&3|0)?e:e+(((d|0)==3?-1:1)*48|0)|0)|0}while(0);l=h;return 0}function fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=b+8|0;e=d+8|0;e=IN(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;return ((e|0)==0?0:e>>31|1)|0}function gn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;j=hn(e)|0;f=ab[c[(c[j>>2]|0)+4>>2]&63](c[j+12>>2]|0,72)|0;c[f>>2]=c[f>>2]&-4;i=f+64|0;c[i>>2]=j;k=f+24|0;d=c[d>>2]|0;c[k>>2]=d;a[k>>0]=d&255|8;c[f+60>>2]=f;e=ab[c[c[j+4>>2]>>2]&63](f,e)|0;c[(c[i>>2]|0)+16>>2]=e;if(An(f,0,b,g,1)|0){i=g;j=c[i+4>>2]|0;k=f+8|0;c[k>>2]=c[i>>2];c[k+4>>2]=j}k=jn(f)|0;En(k,0,f);l=h;return k|0}function hn(b){b=b|0;var d=0,e=0,f=0,g=0;d=(b|0)!=0;if(d){e=c[b>>2]|0;e=(e|0)==0?17792:e}else e=17792;g=$a[c[e>>2]&31](b)|0;f=ab[c[e+4>>2]&63](g,80)|0;c[f>>2]=e;c[f+12>>2]=g;if(d){g=c[b+4>>2]|0;c[f+4>>2]=(g|0)==0?17668:g;b=c[b+8>>2]|0;b=(b|0)==0?17768:b}else{c[f+4>>2]=17668;b=17768}c[f+8>>2]=b;a[f+52>>0]=1;return f|0}function jn(b){b=b|0;var d=0,e=0;c[b+36>>2]=Pp(b,17848,c[4353]|0)|0;c[b+40>>2]=Pp(b,17812,c[4353]|0)|0;d=(so(b)|0)==(b|0);c[b+44>>2]=Pp(b,d?17460:17496,c[4353]|0)|0;d=(so(b)|0)==(b|0);c[b+48>>2]=Pp(b,d?17532:17568,c[4353]|0)|0;c[b+52>>2]=Pp(b,17604,c[4353]|0)|0;d=Lp(b)|0;if(!((d|0)!=0?(e=kn(d,0)|0,c[b>>2]=c[b>>2]&15|e<<4,e=c[d+52>>2]|0,bb[c[e>>2]&31](e,b,1)|0,!(a[d+24>>0]&64)):0))lm(b);to(b,b);return b|0}function kn(a,b){a=a|0;b=b|0;var d=0;d=(c[a+64>>2]|0)+24+(b<<3)|0;b=d;b=HN(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;a=z;c[d>>2]=b;c[d+4>>2]=a;z=a;return b|0}function ln(b){b=b|0;var d=0,e=0,f=0,g=0;f=Lp(b)|0;g=(f|0)==0;if(g?(d=b+64|0,(c[(c[c[d>>2]>>2]|0)+16>>2]|0)!=0):0){xo(b,b);g=b+8|0;Cn(b,0,c[g>>2]|0,c[g+4>>2]|0);d=c[d>>2]|0;gb[c[(c[d>>2]|0)+16>>2]&127](c[d+12>>2]|0);d=0}else e=4;do if((e|0)==4){d=Jp(b)|0;while(1){if(!d)break;e=Kp(d)|0;ln(d)|0;d=e}d=co(b)|0;while(1){if(!d)break;e=eo(b,d)|0;po(b,d)|0;d=e}Nn(b);xo(b,b);if(((((Rp(b,c[b+40>>2]|0)|0)==0?(Rp(b,c[b+36>>2]|0)|0)==0:0)?(Rp(b,c[b+48>>2]|0)|0)==0:0)?(Rp(b,c[b+44>>2]|0)|0)==0:0)?(Rp(b,c[b+52>>2]|0)|0)==0:0){if(a[b+24>>0]&64?Em(b)|0:0){d=-1;break}Vo(b);e=b+8|0;Cn(b,0,c[e>>2]|0,c[e+4>>2]|0);if(!g){Mp(f,b)|0;Zn(f,b);d=0;break}d=b+64|0;while(1){e=c[d>>2]|0;f=c[e+48>>2]|0;if(!f)break;Ao(b,c[f>>2]|0)|0}gb[c[(c[e+4>>2]|0)+20>>2]&127](c[e+16>>2]|0);if(!(Wo(b)|0)){d=c[d>>2]|0;g=c[d+12>>2]|0;f=(c[d>>2]|0)+12|0;hb[c[f>>2]&31](g,b);hb[c[f>>2]&31](g,d);d=0}else d=-1}else d=-1}while(0);return d|0}function mn(a){a=a|0;return Sl(c[a+40>>2]|0)|0}function nn(a){a=a|0;var b=0,c=0,d=0;b=0;c=co(a)|0;while(1){if(!c)break;d=(on(a,c,0,1)|0)+b|0;b=d;c=eo(a,c)|0}return b|0}function on(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Qm(a,b)|0;if(f){if(!e)b=0;else b=pn(c[a+44>>2]|0,f+32|0)|0;if(d)b=(pn(c[a+44>>2]|0,f+28|0)|0)+b|0}else b=0;return b|0}function pn(a,b){a=a|0;b=b|0;var d=0;Rl(a,c[b>>2]|0)|0;d=Sl(a)|0;c[b>>2]=Nl(a)|0;return d|0}function qn(b){b=b|0;return a[b+24>>0]&1|0}function rn(a){a=a|0;return (qn(a)|0)==0|0}function sn(a){a=a|0;return (d[a+24>>0]|0)>>>1&1|0}function tn(a,b){a=a|0;b=b|0;return a|0}function un(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!d){f=1328;d=c[f>>2]|0;f=c[f+4>>2]|0;c[e>>2]=d;c[e+4>>2]=f;f=HN(d|0,f|0,2,0)|0;e=1328;c[e>>2]=f;c[e+4>>2]=z}else{if(!f)a=Yo(a,d)|0;else a=$o(a,d)|0;c[e>>2]=a;c[e+4>>2]=0}return 1}function vn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((c&1|0)==0&0==0)bp(a,c)|0;return}function xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ((c&1|0)==0&0==0?c:0)|0}function yn(a){a=a|0;return}function zn(a,b,c){a=a|0;b=b|0;c=c|0;return}function An(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=(e|0)!=0;do if(i){if((a[e>>0]|0)!=37?(h=c[b+64>>2]|0,h=db[c[(c[h+4>>2]|0)+4>>2]&3](c[h+16>>2]|0,d,e,f,g)|0,h|0):0)break;h=Fn(b,d,e,f)|0;if(!h)j=5}else j=5;while(0);if((j|0)==5)if(g){h=c[b+64>>2]|0;h=db[c[(c[h+4>>2]|0)+4>>2]&3](c[h+16>>2]|0,d,0,f,g)|0;if(i&(h|0)!=0){j=f;Gn(b,d,e,c[j>>2]|0,c[j+4>>2]|0)}}else h=0;return h|0}function Bn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+64>>2]|0;return cb[c[(c[a+4>>2]|0)+8>>2]&31](c[a+16>>2]|0,b,d,e)|0}function Cn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;Ln(a,b,d,e)|0;a=c[a+64>>2]|0;kb[c[(c[a+4>>2]|0)+12>>2]&31](c[a+16>>2]|0,b,d,e);return}function Dn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=ro(a)|0;f=a+8|0;b=f;b=Jn(d,c[a>>2]&3,c[b>>2]|0,c[b+4>>2]|0)|0;do if(!b){b=c[d+64>>2]|0;d=c[(c[b+4>>2]|0)+16>>2]|0;if(d|0?(e=f,e=cb[d&31](c[b+16>>2]|0,c[a>>2]&3,c[e>>2]|0,c[e+4>>2]|0)|0,e|0):0){b=e;break}if((c[a>>2]&3|0)==2)b=0;else{e=c[f>>2]|0;f=c[f+4>>2]|0;c[g>>2]=37;b=g+8|0;c[b>>2]=e;c[b+4>>2]=f;pL(173895,81419,g)|0;b=173895}}while(0);l=h;return b|0}function En(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+64>>2]|0;ib[c[(c[a+4>>2]|0)+24>>2]&127](c[a+16>>2]|0,b,d);return}function Fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;b=c[(c[a+64>>2]|0)+56+(((b|0)==3?2:b)<<2)>>2]|0;if(((b|0)!=0?(f=Yo(a,d)|0,(f|0)!=0):0)?(c[h+24>>2]=f,g=bb[c[b>>2]&31](b,h,4)|0,(g|0)!=0):0){d=g+16|0;h=c[d+4>>2]|0;b=e;c[b>>2]=c[d>>2];c[b+4>>2]=h;b=1}else b=0;l=i;return b|0}function Gn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=Yn(a,32)|0;g=h+16|0;c[g>>2]=e;c[g+4>>2]=f;c[h+24>>2]=$o(a,d)|0;e=(b|0)==3?2:b;g=a+64|0;d=c[g>>2]|0;b=c[d+56+(e<<2)>>2]|0;if(!b){f=Pp(a,17696,c[4353]|0)|0;c[(c[g>>2]|0)+56+(e<<2)>>2]=f;b=c[g>>2]|0}else{f=b;b=d}b=c[b+68+(e<<2)>>2]|0;if(!b){b=Pp(a,17732,c[4353]|0)|0;c[(c[g>>2]|0)+68+(e<<2)>>2]=b}bb[c[f>>2]&31](f,h,1)|0;bb[c[b>>2]&31](b,h,1)|0;return}function Hn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=b+16|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=d+16|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0?1:(a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0)<<31>>31)|0}function In(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b+24>>2]|0;e=c[d+24>>2]|0;return (b>>>0>e>>>0?1:(b>>>0<e>>>0)<<31>>31)|0}function Jn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=Kn(a,b,d,e)|0;if(!a)a=0;else a=c[a+24>>2]|0;return a|0}function Kn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;a=c[(c[a+64>>2]|0)+68+(((b|0)==3?2:b)<<2)>>2]|0;if(!a)a=0;else{b=f+16|0;c[b>>2]=d;c[b+4>>2]=e;a=bb[c[a>>2]&31](a,f,4)|0}l=g;return a|0}function Ln(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)==3?2:b;b=Kn(a,f,d,e)|0;if(!b)b=0;else{e=a+64|0;d=c[(c[e>>2]|0)+56+(f<<2)>>2]|0;bb[c[d>>2]&31](d,b,2)|0;e=c[(c[e>>2]|0)+68+(f<<2)>>2]|0;bb[c[e>>2]&31](e,b,2)|0;bp(a,c[b+24>>2]|0)|0;Zn(a,b);b=1}return b|0}function Mn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[41987]=b;g=c[b+64>>2]|0;f=0;while(1){if((f|0)==3)break;h=g+56+(f<<2)|0;d=c[h>>2]|0;a:do if(d|0){d=bb[c[d>>2]&31](d,0,128)|0;while(1){if(!d)break a;e=c[h>>2]|0;e=bb[c[e>>2]&31](e,d,8)|0;if((a[c[d+24>>2]>>0]|0)!=37){d=e;continue}i=d+16|0;Ln(b,f,c[i>>2]|0,c[i+4>>2]|0)|0;d=e}}while(0);f=f+1|0}return}function Nn(a){a=a|0;c[41987]=a;a=a+64|0;On((c[a>>2]|0)+56|0);On((c[a>>2]|0)+68|0);return}function On(a){a=a|0;var b=0,d=0,e=0;b=0;while(1){if((b|0)==3)break;d=a+(b<<2)|0;e=c[d>>2]|0;if(e|0){Kl(e)|0;c[d>>2]=0}b=b+1|0}return}function Pn(a,b,c){a=a|0;b=b|0;c=c|0;if(!(gL(b,c,a)|0))a=0;else a=rJ(b)|0;return a|0}function Qn(a,b){a=a|0;b=b|0;return WL(b,a)|0}function Rn(a){a=a|0;return PL(a)|0}function Sn(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+32|0;e=b+12|0;d=b;c[4446]=c[4443];c[4447]=c[4444];c[e>>2]=a;c[e+4>>2]=rJ(a)|0;c[e+8>>2]=0;c[d>>2]=17792;c[d+4>>2]=17668;c[d+8>>2]=17780;a=er(e,d)|0;fp(0);l=b;return a|0}function Tn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)!=0?(h=b+8|0,f=c[h>>2]|0,(f|0)<(c[b+4>>2]|0)):0){i=(c[b>>2]|0)+f|0;b=0;g=a[i>>0]|0;f=d;d=i;while(1){d=d+1|0;a[f>>0]=g;b=b+1|0;if(!(g<<24>>24!=10&(b|0)<(e|0)))break;g=a[d>>0]|0;if(!(g<<24>>24))break;else f=f+1|0}c[h>>2]=(c[h>>2]|0)+b}else b=0;return b|0}function Un(a){a=a|0;return 0}function Vn(a,b){a=a|0;b=b|0;a=ZI(b)|0;VN(a|0,0,b|0)|0;return a|0}function Wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=aJ(b,d)|0;if(d>>>0>c>>>0)VN(a+c|0,0,d-c|0)|0;return a|0}function Xn(a,b){a=a|0;b=b|0;_I(b);return}function Yn(a,b){a=a|0;b=b|0;var d=0;d=l;l=l+16|0;a=c[a+64>>2]|0;a=ab[c[(c[a>>2]|0)+4>>2]&63](c[a+12>>2]|0,b)|0;if(!a)_l(1,81425,d)|0;l=d;return a|0}function Zn(a,b){a=a|0;b=b|0;if(b|0){a=c[a+64>>2]|0;hb[c[(c[a>>2]|0)+12>>2]&31](c[a+12>>2]|0,b)}return}function _n(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+16>>2]|0)+8|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=(c[d+16>>2]|0)+8|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0?-1:(a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0)&1)|0}function $n(a,b,d){a=a|0;b=b|0;d=d|0;a=c[b+16>>2]|0;if((a+28|0)!=(b|0))Zn(c[a+24>>2]|0,b);return}function ao(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=(c[c[b+16>>2]>>2]|0)>>>4;e=(c[c[d+16>>2]>>2]|0)>>>4;return (b>>>0<e>>>0?-1:b>>>0>e>>>0&1)|0}function bo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=167040;c[e>>2]=b;c[e+4>>2]=d;c[41992]=167032;a=c[a+40>>2]|0;a=bb[c[a>>2]&31](a,167952,4)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function co(a){a=a|0;a=c[a+36>>2]|0;a=bb[c[a>>2]&31](a,0,128)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function eo(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=bb[c[d>>2]&31](d,b,8)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function fo(a){a=a|0;a=c[a+36>>2]|0;a=bb[c[a>>2]&31](a,0,256)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function go(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=bb[c[d>>2]&31](d,b,16)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=bo(a,b,c)|0;do if((d|0)!=0&(e|0)==0){e=so(a)|0;if((e|0)!=(a|0)?(f=bo(e,b,c)|0,f|0):0){io(a,f,1)|0;e=f;break}if(!(Bn(a,1,b,c)|0))e=0;else{e=kn(a,1)|0;e=jo(a,b,c,e,z)|0;ko(a,e);lo(a,e)}}while(0);return e|0}function io(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=so(a)|0;if((e|0)==(c[b+24>>2]|0)){e=b+8|0;e=bo(a,c[e>>2]|0,c[e+4>>2]|0)|0;if((d|0)!=0&(e|0)==0){e=Lp(a)|0;if(!e)e=0;else{d=io(e,b,d)|0;mo(a,d);return d|0}}}else e=0;return e|0}function jo(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=Yn(b,64)|0;h=c[g>>2]|0;i=g+8|0;c[i>>2]=d;c[i+4>>2]=e;c[g>>2]=h&12|f<<4|1;c[g+24>>2]=so(b)|0;if(a[(so(b)|0)+24>>0]&64)No(g,81367,16,0)|0;return g|0}function ko(a,b){a=a|0;b=b|0;do{mo(a,b);a=Lp(a)|0}while((a|0)!=0);return}function lo(b,c){b=b|0;c=c|0;if(a[(so(b)|0)+24>>0]&64)mm(b,c);to(b,c);return}function mo(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+40|0;Sl(c[e>>2]|0)|0;if((so(a)|0)==(a|0))d=b+28|0;else d=Yn(a,36)|0;c[d+16>>2]=b;e=c[e>>2]|0;bb[c[e>>2]&31](e,d,1)|0;e=c[a+36>>2]|0;bb[c[e>>2]&31](e,d,1)|0;return}function no(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;h=so(a)|0;if(An(a,1,b,g,0)|0){e=g;e=bo(a,c[e>>2]|0,c[e+4>>2]|0)|0;if(!e)if(!((d|0)==0|(h|0)==(a|0))?(f=g,f=bo(h,c[f>>2]|0,c[f+4>>2]|0)|0,(f|0)!=0):0)e=io(a,f,1)|0;else i=6}else i=6;if((i|0)==6)if((d|0)!=0?(An(a,1,b,g,1)|0)!=0:0){i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;e=kn(a,1)|0;e=jo(a,h,i,e,z)|0;ko(a,e);lo(a,e);En(a,1,e)}else e=0;l=j;return e|0}function oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[42001]=b;d=Um(a,b)|0;while(1){if(!d)break;e=Vm(a,d,b)|0;bn(a,d,0);d=e}e=c[a+40>>2]|0;bb[c[e>>2]&31](e,167988,2)|0;e=c[a+36>>2]|0;bb[c[e>>2]&31](e,167988,2)|0;return}function po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+8|0;e=f;if(bo(b,c[e>>2]|0,c[e+4>>2]|0)|0){if((so(b)|0)==(b|0)){e=Um(b,d)|0;while(1){if(!e)break;g=Vm(b,e,d)|0;dn(b,e)|0;e=g}if(a[b+24>>0]&64)Gm(d);xo(b,d);Vo(d);g=f;Cn(b,1,c[g>>2]|0,c[g+4>>2]|0)}if(!(wq(b,d,54,0,0)|0))if((so(b)|0)==(b|0)){Zn(b,d);e=0}else e=0;else e=-1}else e=-1;return e|0}function qo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;d=c[b>>2]|0;do if(!(d&3))if((Lp(b)|0)==(a|0)){d=c[b>>2]|0;g=5;break}else{_l(1,81451,e)|0;f=-1;break}else g=5;while(0);a:do if((g|0)==5)switch(d&3){case 1:{f=po(a,b)|0;break a}case 2:case 3:{f=dn(a,b)|0;break a}case 0:{f=ln(b)|0;break a}default:{}}while(0);l=h;return f|0}function ro(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=c[(c[a+40>>2]|0)+24>>2]|0;break}case 1:{b=c[a+24>>2]|0;break}case 0:{b=a;break}default:{}}return b|0}function so(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=(c[a+40>>2]|0)+24|0;break}case 1:{b=a+24|0;break}case 0:{b=a+60|0;break}default:{}}return c[b>>2]|0}function to(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))Do(b,d,100,0);else uo(b,d,c[e+48>>2]|0);return}function uo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){uo(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=c[d>>2]|0;break}case 1:{e=(c[d>>2]|0)+12|0;break}case 2:{e=(c[d>>2]|0)+24|0;break}default:break a}e=c[e>>2]|0;if(e|0)ib[e&127](a,b,c[d+4>>2]|0)}while(0);return}function vo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+64>>2]|0;if(!(a[f+52>>0]|0))Do(b,d,101,e);else wo(b,d,e,c[f+48>>2]|0);return}function wo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a:do if(e|0){wo(a,b,d,c[e+8>>2]|0);switch(c[b>>2]&3){case 0:{f=(c[e>>2]|0)+4|0;break}case 1:{f=(c[e>>2]|0)+16|0;break}case 2:{f=(c[e>>2]|0)+28|0;break}default:break a}f=c[f>>2]|0;if(f|0)kb[f&31](a,b,c[e+4>>2]|0,d)}while(0);return}function xo(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))Do(b,d,102,0);else yo(b,d,c[e+48>>2]|0);return}function yo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){yo(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=(c[d>>2]|0)+8|0;break}case 1:{e=(c[d>>2]|0)+20|0;break}case 2:{e=(c[d>>2]|0)+32|0;break}default:break a}e=c[e>>2]|0;if(e|0)ib[e&127](a,b,c[d+4>>2]|0)}while(0);return}function zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Yn(a,12)|0;c[e>>2]=b;c[e+4>>2]=d;d=(c[a+64>>2]|0)+48|0;c[e+8>>2]=c[d>>2];c[d>>2]=e;return}function Ao(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a+64>>2]|0)+48|0;d=c[e>>2]|0;a:do if(!d)d=-1;else{if((c[d>>2]|0)!=(b|0)){while(1){if(!d){d=-1;break a}e=d+8|0;f=c[e>>2]|0;if((c[f>>2]|0)==(b|0))break;else d=f}if(f)c[e>>2]=c[f+8>>2]}else c[e>>2]=c[d+8>>2];Zn(a,d);d=0}while(0);return d|0}function Bo(a,b){a=a|0;b=b|0;var d=0;d=so(a)|0;a:do if((d|0)==(so(b)|0))switch(c[b>>2]&3){case 0:{while(1){if((b|0)==(a|0)){b=1;break a}b=Lp(b)|0;if(!b){b=0;break}}break}case 1:{b=b+8|0;b=(ho(a,c[b>>2]|0,c[b+4>>2]|0,0)|0)!=0;break a}default:{b=(en(a,b,0)|0)!=0;break a}}else b=0;while(0);return b&1|0}function Co(a){a=a|0;return c[a>>2]&3|0}function Do(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=No(a,81475,44,0)|0;switch(c|0){case 100:{e=Eo(f,b,100)|0;if(!(Fo(e,b)|0))Go(e,a,b,d)|0;break}case 101:{if(((Fo(Eo(f,b,100)|0,b)|0)==0?(Fo(Eo(f,b,102)|0,b)|0)==0:0)?(e=Eo(f,b,101)|0,(Fo(e,b)|0)==0):0)Go(e,a,b,d)|0;break}case 102:{Ho(Eo(f,b,100)|0,b);Ho(Eo(f,b,101)|0,b);e=Eo(f,b,102)|0;if(!(Fo(e,b)|0))Go(e,a,b,d)|0;break}default:_l(1,81487,g)|0}l=h;return}function Eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;e=g;a:do switch(c[b>>2]&3){case 0:switch(d|0){case 100:{d=a+8|0;break a}case 101:{d=a+20|0;break a}case 102:{d=a+32|0;break a}default:{f=14;break a}}case 1:switch(d|0){case 100:{d=a+12|0;break a}case 101:{d=a+24|0;break a}case 102:{d=a+36|0;break a}default:{f=14;break a}}case 2:switch(d|0){case 100:{d=a+16|0;break a}case 101:{d=a+28|0;break a}case 102:{d=a+40|0;break a}default:{f=14;break a}}default:f=14}while(0);if((f|0)==14){_l(1,81521,e)|0;d=0}a=c[d>>2]|0;if(!a){a=ro(b)|0;a=Pp(a,17884,c[4353]|0)|0;c[d>>2]=a}l=g;return a|0}function Fo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=Io(b)|0;b=e+8|0;c[b>>2]=f;c[b+4>>2]=z;b=bb[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function Go(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Yn(ro(d)|0,32)|0;c[f+20>>2]=d;g=Io(d)|0;d=f+8|0;c[d>>2]=g;c[d+4>>2]=z;c[f+16>>2]=b;if(e|0){g=Yn(b,8)|0;c[f+24>>2]=g;c[g>>2]=e}bb[c[a>>2]&31](a,f,1)|0;return f|0}function Ho(a,b){a=a|0;b=b|0;b=Fo(a,b)|0;if(b|0)bb[c[a>>2]&31](a,b,2)|0;return}function Io(a){a=a|0;a=a+8|0;z=c[a+4>>2]|0;return c[a>>2]|0}function Jo(a,b,d){a=a|0;b=b|0;d=d|0;Ko(b);Zn(c[b+16>>2]|0,b);return}function Ko(a){a=a|0;var b=0,d=0;b=a+16|0;a=c[a+24>>2]|0;while(1){if(!a)break;d=c[a+4>>2]|0;Zn(c[b>>2]|0,a);a=d}return}function Lo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=c[b+16>>2]|0;f=h;while(1){if(!f){f=0;break}g=c[f>>2]|0;if((g|0)==(d|0)){j=7;break}if((a[d>>0]|0)==(a[g>>0]|0)?(xJ(d,g)|0)==0:0){j=7;break}f=c[f+4>>2]|0;if((f|0)==(h|0)){f=0;break}}do if((j|0)==7){if(!(c[b>>2]&4)){if((f|0)==(h|0)&(e|0)==0){f=h;break}Mo(b,f,e);break}if(e)if((h|0)==(f|0))f=h;else _l(1,81546,i)|0}while(0);l=k;return f|0}function Mo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a+16>>2]=b;e=c[a>>2]|0;d=d<<2&4;c[a>>2]=e&-5|d;if(e&2|0){e=(e&3|0)==3?-1:1;c[a+(e*48|0)+16>>2]=b;e=a+(e*48|0)|0;c[e>>2]=c[e>>2]&-5|d}return}function No(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=ro(a)|0;f=Lo(a,b,0)|0;a:do if((d|0)!=0&(f|0)==0){d=Yn(h,d)|0;c[d>>2]=$o(h,b)|0;switch(c[a>>2]&3){case 0:{Oo(a,d);g=d;break a}case 1:{Oo(a,d);g=d;break a}case 2:case 3:{Oo(a,d);g=d;break a}default:{}}}else g=f;while(0);if(e|0)Lo(a,b,1)|0;return g|0}function Oo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;do if(d){e=d+4|0;f=c[e>>2]|0;if((f|0)==(d|0)){c[e>>2]=b;e=d;d=b;break}else{c[b+4>>2]=f;e=b;break}}else{e=b;d=b}while(0);c[d+4>>2]=e;if(!(c[a>>2]&4))Mo(a,b,0);return}function Po(a,b){a=a|0;b=b|0;var d=0,e=0;e=ro(a)|0;d=Lo(a,b,0)|0;if(!d)b=-1;else{Qo(a,d);if(!(c[a>>2]&3)){Ro(e,a,d);b=d}else{wq(so(e)|0,a,55,d,0)|0;b=d}bp(e,c[d>>2]|0)|0;Zn(e,b);b=0}return b|0}function Qo(a,b){a=a|0;b=b|0;var d=0;a=c[a+16>>2]|0;do{d=a+4|0;a=c[d>>2]|0}while((a|0)!=(b|0));c[d>>2]=c[b+4>>2];return}function Ro(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+16>>2]|0)==(d|0)){a=c[d+4>>2]|0;Mo(b,(a|0)==(d|0)?0:a,0)}return}function So(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(d|0)>-1;g=f?d:0-d|0;a:do switch(b|0){case 0:{No(a,c,g,e)|0;if(!f){b=Jp(a)|0;while(1){if(!b)break a;So(b,0,c,d,e);b=Kp(b)|0}}break}case 3:case 2:case 1:{d=(b|0)==1;b=co(a)|0;while(1){if(!b)break a;b:do if(d)No(b,c,g,e)|0;else{f=Pm(a,b)|0;while(1){if(!f)break b;No(f,c,g,e)|0;f=Rm(a,f)|0}}while(0);b=eo(a,b)|0}}default:{}}while(0);return}function To(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch(b|0){case 0:{wq(a,a,56,c,1)|0;break}case 3:case 2:case 1:{e=(b|0)==1;d=co(a)|0;while(1){if(!d)break a;b:do if(e)Po(d,c)|0;else{b=Pm(a,d)|0;while(1){if(!b)break b;Po(b,c)|0;b=Rm(a,b)|0}}while(0);d=eo(a,d)|0}}default:{}}while(0);return}function Uo(a,b,c){a=a|0;b=b|0;c=c|0;Po(b,c)|0;return}function Vo(a){a=a|0;var b=0,d=0,e=0;d=ro(a)|0;b=a+16|0;a=c[b>>2]|0;if(a|0)do{e=a;a=c[a+4>>2]|0;bp(d,c[e>>2]|0)|0;Zn(d,e)}while((a|0)!=(c[b>>2]|0));c[b>>2]=0;return}function Wo(a){a=a|0;return Rp(a,Xo(a)|0)|0}function Xo(a){a=a|0;var b=0,d=0;if(!a)d=168024;else d=(c[a+64>>2]|0)+20|0;b=c[d>>2]|0;if(!b){b=Pp(a,17920,c[4353]|0)|0;c[d>>2]=b;a=167096;c[a>>2]=-2147483648;c[a+4>>2]=0;a=167104;c[a>>2]=2147483647;c[a+4>>2]=-1}return b|0}function Yo(a,b){a=a|0;b=b|0;return Zo(Xo(a)|0,b)|0}function Zo(a,b){a=a|0;b=b|0;a=_o(a,b)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function _o(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+16>>2]=b;b=bb[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function $o(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)d=0;else{e=Xo(a)|0;d=_o(e,b)|0;if(!d){d=(rJ(b)|0)+24|0;if(!a)d=ZI(d)|0;else d=Yn(a,d)|0;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;a=d+20|0;xK(a,b)|0;c[d+16>>2]=a;bb[c[e>>2]&31](e,d,1)|0}else{e=d+8|0;b=e;b=HN(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=z}d=c[d+16>>2]|0}return d|0}function ap(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b)d=0;else{e=Xo(a)|0;d=_o(e,b)|0;if(!d){d=(rJ(b)|0)+24|0;if(!a)d=ZI(d)|0;else d=Yn(a,d)|0;g=167096;f=c[g+4>>2]|0;a=d+8|0;c[a>>2]=c[g>>2]|1;c[a+4>>2]=f;a=d+20|0;xK(a,b)|0;c[d+16>>2]=a;bb[c[e>>2]&31](e,d,1)|0}else{g=d+8|0;f=g;f=HN(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[g>>2]=f;c[g+4>>2]=z}d=c[d+16>>2]|0}return d|0}function bp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)!=0?(d=Xo(a)|0,e=_o(d,b)|0,(e|0)!=0):0)if((c[e+16>>2]|0)==(b|0)?(b=e+8|0,g=b,g=HN(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0,f=z,b,c[b>>2]=g,c[b+4>>2]=f,b=167104,(g|0)==0&(f|0)==0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0){Qp(a,d,e)|0;a=0}else a=0;else a=-1;return a|0}function cp(a){a=a|0;var b=0;if(!a)a=0;else{a=a+-12|0;b=167096;a=c[b>>2]&c[a>>2]}return a|0}function dp(a){a=a|0;var b=0,d=0,e=0;if(a|0){d=167096;a=a+-12|0;e=a;b=c[e+4>>2]|c[d+4>>2];c[a>>2]=c[e>>2]|c[d>>2];c[a+4>>2]=b}return}function ep(a){a=a|0;c[4489]=a;return}function fp(a){a=a|0;c[42011]=a;c[4489]=1;return}function gp(a,b){a=a|0;b=b|0;c[42012]=a;c[42013]=b;c[42014]=0;return}function hp(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[42015]|0)){c[42015]=1;if(!(c[42016]|0))c[42016]=1;if(!(c[42007]|0))c[42007]=c[13853];if(!(c[42008]|0))c[42008]=c[13885];k=c[42017]|0;if(!((k|0)!=0?(c[k>>2]|0)!=0:0)){ip();k=jp(c[42007]|0,16384)|0;c[c[42017]>>2]=k}kp()}a:while(1){j=c[42018]|0;a[j>>0]=a[173927]|0;e=(c[(c[c[42017]>>2]|0)+28>>2]|0)+(c[42016]|0)|0;f=j;b:while(1){h=f;while(1){f=c[17960+(d[h>>0]<<2)>>2]|0;if(b[56680+(e<<1)>>1]|0){c[42019]=e;c[42020]=h}c:while(1){g=f&255;do{f=g+(b[56866+(e<<1)>>1]|0)|0;if((e|0)==(b[57076+(f<<1)>>1]|0))break c;k=b[57612+(e<<1)>>1]|0;e=k<<16>>16}while(k<<16>>16<=92);f=c[18984+(g<<2)>>2]|0}e=b[57822+(f<<1)>>1]|0;f=h+1|0;if((b[56866+(e<<1)>>1]|0)==219)break;else h=f}d:while(1){k=j;e:while(1){e=b[56680+(e<<1)>>1]|0;if(!(e<<16>>16)){e=b[56680+(c[42019]<<1)>>1]|0;f=c[42020]|0}else e=e<<16>>16;c[42009]=j;i=f;c[42010]=i-k;a[173927]=a[f>>0]|0;a[f>>0]=0;c[42018]=f;f:while(1){switch(e|0){case 1:{m=27;break a}case 12:{m=53;break a}case 13:{m=55;break a}case 14:{m=57;break a}case 15:{m=61;break a}case 16:{m=65;break a}case 17:{m=67;break a}case 18:{m=69;break a}case 19:{m=72;break a}case 20:{m=75;break a}case 21:{m=78;break a}case 23:{m=86;break a}case 33:{m=118;break a}case 39:case 38:case 37:case 36:{l=0;break a}case 2:{m=29;break b}case 3:{m=32;break b}case 4:{m=35;break b}case 5:{m=37;break b}case 6:{m=39;break b}case 7:{m=42;break b}case 8:{m=44;break b}case 9:{m=47;break b}case 10:{m=49;break b}case 11:{m=51;break b}case 22:{m=83;break b}case 24:{m=89;break b}case 25:{m=92;break b}case 26:{m=95;break b}case 27:{m=98;break b}case 28:{m=101;break b}case 29:{m=104;break b}case 30:{m=109;break b}case 31:{m=112;break b}case 32:{m=115;break b}case 34:{m=121;break b}case 0:break f;case 35:break;default:{m=134;break a}}h=c[42009]|0;a[f>>0]=a[173927]|0;e=c[42017]|0;g=c[e>>2]|0;if(!(c[g+44>>2]|0)){n=c[g+16>>2]|0;c[42022]=n;c[g>>2]=c[42007];g=c[e>>2]|0;c[g+44>>2]=1;e=n}else e=c[42022]|0;if((c[42018]|0)>>>0<=((c[g+4>>2]|0)+e|0)>>>0){m=128;break e}switch(tp()|0){case 0:{m=132;break d}case 2:{m=133;break e}case 1:break;default:continue a}c[42018]=c[42009];e=(((c[42016]|0)+-1|0)/2|0)+36|0}a[f>>0]=a[173927]|0;f=c[42020]|0;e=c[42019]|0}if((m|0)==128){m=0;g=i-h|0;h=c[42009]|0;f=h+(g+-1)|0;c[42018]=f;e=rp()|0;i=sp(e)|0;j=c[42009]|0;if(!i)continue;else{m=129;break}}else if((m|0)==133){m=0;f=(c[(c[c[42017]>>2]|0)+4>>2]|0)+(c[42022]|0)|0;c[42018]=f;e=rp()|0;j=c[42009]|0;continue}}if((m|0)==129){m=0;f=h+g|0;c[42018]=f;e=i;continue}else if((m|0)==132){m=0;f=(c[42009]|0)+(i-h+-1)|0;c[42018]=f;e=rp()|0;j=c[42009]|0;continue}}switch(m|0){case 29:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[4489]=(c[4489]|0)+1;continue a}case 32:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=3;continue a}case 35:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 37:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 39:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=1;continue a}case 42:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 44:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;lp();continue a}case 47:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 49:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 51:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 83:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=5;np();continue a}case 89:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;pp(83714);continue a}case 92:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;pp(81579);continue a}case 95:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[4489]=(c[4489]|0)+1;continue a}case 98:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;pp(e);continue a}case 101:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=7;c[42021]=1;np();continue a}case 104:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;n=(c[42021]|0)+-1|0;c[42021]=n;if(!n){m=108;break a}pp(c[42009]|0);continue a}case 109:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[42021]=(c[42021]|0)+1;pp(e);continue a}case 112:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;pp(e);c[4489]=(c[4489]|0)+1;continue a}case 115:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;pp(e);continue a}case 121:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;XL(e,f,1,c[42008]|0)|0;continue a}}}switch(m|0){case 27:{e=c[42010]|0;if(!e)l=-1;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=-1}break}case 53:{e=c[42010]|0;if(!e)l=259;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=259}break}case 55:{e=c[42010]|0;if(!e)l=260;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=260}break}case 57:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;if(!(c[42014]|0)){c[42014]=258;l=258}else l=258;break}case 61:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;if(!(c[42014]|0)){c[42014]=261;l=261}else l=261;break}case 65:{e=c[42010]|0;if(!e)l=263;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=263}break}case 67:{e=c[42010]|0;if(!e)l=262;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=262}break}case 69:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=(c[42014]|0)==261?264:45;break}case 72:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=(c[42014]|0)==258?264:45;break}case 75:{f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[42037]=$o(c[41987]|0,e)|0;l=267;break}case 78:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;if(mp()|0){m=(c[42010]|0)+-1|0;a[f>>0]=a[173927]|0;n=j+m|0;c[42018]=n;c[42009]=j;c[42010]=m;a[173927]=a[n>>0]|0;a[n>>0]=0;c[42018]=n}c[42037]=$o(c[41987]|0,c[42009]|0)|0;l=267;break}case 86:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=1;op();l=268;break}case 108:{c[42016]=1;qp();l=268;break}case 118:{f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;l=a[e>>0]|0;break}case 134:{up(81582);break}}return l|0}function ip(){var a=0,b=0,d=0;b=c[42017]|0;do if(!b){a=Bp(4)|0;c[42017]=a;if(!a)up(81940);else{c[a>>2]=0;a=1;d=9;break}}else{a=c[42028]|0;if(0>=(a+-1|0)>>>0){a=a+8|0;b=vp(b,a<<2)|0;c[42017]=b;if(!b)up(81940);else{d=b+(c[42028]<<2)|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;d=9;break}}}while(0);if((d|0)==9)c[42028]=a;return}function jp(a,b){a=a|0;b=b|0;var d=0;d=Bp(48)|0;if(!d)up(81895);c[d+12>>2]=b;b=Bp(b+2|0)|0;c[d+4>>2]=b;if(!b)up(81895);else{c[d+20>>2]=1;xp(d,a);return d|0}return 0}function kp(){var b=0,d=0;d=c[42017]|0;b=c[d>>2]|0;c[42022]=c[b+16>>2];b=c[b+8>>2]|0;c[42018]=b;c[42009]=b;c[42007]=c[c[d>>2]>>2];a[173927]=a[b>>0]|0;return}function lp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;d=g+16|0;e=g+12|0;h=c[42009]|0;b=h+1|0;i=(VJ(b,81879,4)|0)==0;b=i?h+5|0:b;c[f>>2]=e;c[f+4>>2]=g+20;c[f+8>>2]=d;f=cM(b,81884,f)|0;if((f|0)>0?(c[4489]=(c[e>>2]|0)+-1,(f|0)!=1):0){d=b+(c[d>>2]|0)|0;b=d;a:while(1){e=a[b>>0]|0;switch(e<<24>>24){case 0:case 34:break a;default:{}}b=b+1|0}if((b|0)!=(d|0)&e<<24>>24==34){a[b>>0]=0;Ap(d,b-d|0)}}l=g;return}function mp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+2080|0;i=j+8|0;f=j;b=j+1056|0;d=j+32|0;h=j+16|0;k=a[(c[42009]|0)+((c[42010]|0)+-1)>>0]|0;e=k<<24>>24==46;if(e|((k&255)+-48|0)>>>0<10)if(e?(zp()|0)!=0:0)g=4;else b=0;else g=4;if((g|0)==4){k=c[42011]|0;cm(h,1024,b);fm(h,81790)|0;fm(h,c[42009]|0)|0;c[f>>2]=c[4489];pL(d,81834,f)|0;fm(h,d)|0;fm(h,(k|0)==0?81784:k)|0;fm(h,81851)|0;d=h+4|0;b=c[d>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){dm(h,1)|0;b=c[d>>2]|0}a[b>>0]=0;b=c[h>>2]|0;c[d>>2]=b;c[i>>2]=b;_l(0,81876,i)|0;gm(h);b=1}l=j;return b|0}function np(){var b=0;b=c[42023]|0;if(!b){b=ZI(1024)|0;c[42023]=b;c[42025]=b+1024}c[42024]=b;a[b>>0]=0;return}function op(){c[42037]=$o(c[41987]|0,c[42023]|0)|0;a[c[42023]>>0]=0;return}function pp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[42024]|0;d=c[42023]|0;if(e>>>0>d>>>0){e=e+-1|0;f=3}a:while(1){if((f|0)==3)c[42024]=e;f=c[42025]|0;g=f;do{h=b;b=b+1|0;h=a[h>>0]|0;i=e;e=e+1|0;a[i>>0]=h;if(!(h<<24>>24))break a}while(e>>>0<f>>>0);c[42024]=e;f=d;i=g-f<<1;d=aJ(d,i)|0;c[42023]=d;c[42025]=d+i;e=d+(e-f)|0;f=3}c[42024]=e;return}function qp(){c[42037]=ap(c[41987]|0,c[42023]|0)|0;a[c[42023]>>0]=0;return}function rp(){var d=0,e=0,f=0,g=0,h=0;h=c[42018]|0;g=c[42009]|0;e=(c[(c[c[42017]>>2]|0)+28>>2]|0)+(c[42016]|0)|0;while(1){if(g>>>0>=h>>>0)break;d=a[g>>0]|0;if(!(d<<24>>24))d=1;else d=c[17960+((d&255)<<2)>>2]|0;if(b[56680+(e<<1)>>1]|0){c[42019]=e;c[42020]=g}a:while(1){f=d&255;do{d=f+(b[56866+(e<<1)>>1]|0)|0;if((e|0)==(b[57076+(d<<1)>>1]|0))break a;d=b[57612+(e<<1)>>1]|0;e=d<<16>>16}while(d<<16>>16<=92);d=c[18984+(f<<2)>>2]|0}g=g+1|0;e=b[57822+(d<<1)>>1]|0}return e|0}function sp(a){a=a|0;var d=0;if(b[56680+(a<<1)>>1]|0){d=c[42018]|0;c[42019]=a;c[42020]=d}while(1){d=(b[56866+(a<<1)>>1]|0)+1|0;if((a|0)==(b[57076+(d<<1)>>1]|0))break;a=b[57612+(a<<1)>>1]|0}d=b[57822+(d<<1)>>1]|0;return (d<<16>>16==92?0:d<<16>>16)|0}function tp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[42017]|0;g=c[j>>2]|0;i=c[g+4>>2]|0;f=c[42009]|0;l=c[42018]|0;k=l;if(l>>>0>(i+((c[42022]|0)+1)|0)>>>0)up(81637);h=k-f|0;if(!(c[g+40>>2]|0))b=(h|0)==1?1:2;else{l=h+-1|0;h=i;g=0;while(1){if((g|0)>=(l|0))break;a[h>>0]=a[f>>0]|0;h=h+1|0;f=f+1|0;g=g+1|0}f=c[j>>2]|0;do if((c[f+44>>2]|0)==2){c[42022]=0;c[f+16>>2]=0;e=f;m=17}else{while(1){i=f+12|0;h=c[i>>2]|0;g=h-l+-1|0;if(g|0){m=16;break}g=f+4|0;j=c[g>>2]|0;if(!(c[f+20>>2]|0)){m=12;break}f=h<<1;f=(f|0)==0?(h>>>3)+h|0:f;c[i>>2]=f;f=vp(j,f+2|0)|0;c[g>>2]=f;if(!f)break;j=f+(k-j)|0;c[42018]=j;f=c[c[42017]>>2]|0;k=j}if((m|0)==12)c[g>>2]=0;else if((m|0)==16){d=bb[c[c[(c[42012]|0)+8>>2]>>2]&31](c[42013]|0,(c[f+4>>2]|0)+l|0,g>>>0<8192?g:8192)|0;e=c[c[42017]>>2]|0;c[42022]=d;c[e+16>>2]=d;if(!d){m=17;break}else{b=0;break}}up(81693)}while(0);do if((m|0)==17)if(!l){wp(c[42007]|0);b=1;d=c[42022]|0;e=c[c[42017]>>2]|0;break}else{c[e+44>>2]=2;b=2;d=0;break}while(0);f=d+l|0;do if(f>>>0>(c[e+12>>2]|0)>>>0){m=vp(c[e+4>>2]|0,f+(d>>>1)|0)|0;d=c[42017]|0;c[(c[d>>2]|0)+4>>2]=m;d=c[(c[d>>2]|0)+4>>2]|0;if(!d)up(81737);else{n=c[42022]|0;o=d;break}}else{n=d;o=c[e+4>>2]|0}while(0);n=n+l|0;c[42022]=n;a[o+n>>0]=0;o=c[42017]|0;a[(c[(c[o>>2]|0)+4>>2]|0)+((c[42022]|0)+1)>>0]=0;c[42009]=c[(c[o>>2]|0)+4>>2]}return b|0}function up(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=c[13918]|0;c[b>>2]=a;zL(d,81633,b)|0;Ma(2)}function vp(a,b){a=a|0;b=b|0;return aJ(a,b)|0}function wp(a){a=a|0;var b=0,d=0,e=0;d=c[42017]|0;if((d|0)!=0?(b=c[d>>2]|0,(b|0)!=0):0)e=4;else{ip();b=jp(c[42007]|0,16384)|0;d=c[42017]|0;c[d>>2]=b;if(!d)b=0;else e=4}xp(b,a);kp();return}function xp(a,b){a=a|0;b=b|0;var d=0;d=c[(jJ()|0)>>2]|0;yp(a);c[a>>2]=b;c[a+40>>2]=1;b=c[42017]|0;if(!b)b=0;else b=c[b>>2]|0;if((b|0)!=(a|0)){c[a+32>>2]=1;c[a+36>>2]=0}c[a+24>>2]=0;c[(jJ()|0)>>2]=d;return}function yp(b){b=b|0;var d=0;if(b|0){c[b+16>>2]=0;d=b+4|0;a[c[d>>2]>>0]=0;a[(c[d>>2]|0)+1>>0]=0;c[b+8>>2]=c[d>>2];c[b+28>>2]=1;c[b+44>>2]=0;d=c[42017]|0;if(!d)d=0;else d=c[d>>2]|0;if((d|0)==(b|0))kp()}return}function zp(){var b=0,d=0;d=c[42009]|0;b=(c[42010]|0)+-2|0;while(1){if((b|0)<=-1){b=0;break}if((a[d+b>>0]|0)==46){b=1;break}else b=b+-1|0}return b|0}function Ap(a,b){a=a|0;b=b|0;var d=0;d=c[42026]|0;if((d|0)<(b|0)){if(!d)d=ZI(b+1|0)|0;else d=aJ(c[42027]|0,b+1|0)|0;c[42027]=d;c[42026]=b}else d=c[42027]|0;xK(d,a)|0;c[42011]=c[42027];return}function Bp(a){a=a|0;return ZI(a)|0}function Cp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+2112|0;k=m+32|0;i=m+24|0;h=m+16|0;g=m+8|0;f=m;d=m+56|0;j=m+40|0;cm(j,1024,m+1080|0);e=c[42011]|0;if(e|0){fm(j,e)|0;fm(j,81990)|0}fm(j,b)|0;c[f>>2]=c[4489];pL(d,81993,f)|0;fm(j,d)|0;a:do if(!(a[c[42009]>>0]|0))switch(((c[42016]|0)+-1|0)/2|0|0){case 2:{c[g>>2]=16384;pL(d,82013,g)|0;fm(j,d)|0;b=c[42023]|0;if(!(a[b>>0]|0))break a;i=rJ(b)|0;fm(j,82075)|0;b=c[42023]|0;if((i|0)>80)a[b+80>>0]=0;fm(j,b)|0;break a}case 3:{c[h>>2]=16384;pL(d,82094,h)|0;fm(j,d)|0;b=c[42023]|0;if(!(a[b>>0]|0))break a;i=rJ(b)|0;fm(j,82162)|0;b=c[42023]|0;if((i|0)>80)a[b+80>>0]=0;fm(j,b)|0;break a}case 1:{c[i>>2]=16384;pL(d,82181,i)|0;fm(j,d)|0;break a}default:break a}else{fm(j,82005)|0;fm(j,c[42009]|0)|0;d=j+4|0;b=c[d>>2]|0;if(b>>>0>=(c[j+8>>2]|0)>>>0){dm(j,1)|0;b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=39}while(0);e=j+4|0;b=c[e>>2]|0;d=j+8|0;if(b>>>0>=(c[d>>2]|0)>>>0){dm(j,1)|0;b=c[e>>2]|0}c[e>>2]=b+1;a[b>>0]=10;b=c[e>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0){dm(j,1)|0;b=c[e>>2]|0}a[b>>0]=0;i=c[j>>2]|0;c[e>>2]=i;c[k>>2]=i;_l(1,81876,k)|0;gm(j);l=m;return}function Dp(){Ep(c[42009]|0);return}function Ep(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[42018]|0;a[j>>0]=a[173927]|0;i=c[42017]|0;e=c[i>>2]|0;d=c[e+4>>2]|0;if(j>>>0<(d+2|0)>>>0){f=d+((c[42022]|0)+2)|0;g=d+((c[e+12>>2]|0)+2)|0;k=d;h=e;while(1){if(f>>>0<=k>>>0)break;e=f+-1|0;k=g+-1|0;a[k>>0]=a[e>>0]|0;h=c[i>>2]|0;f=e;g=k;k=c[h+4>>2]|0}e=g-f|0;d=j+e|0;j=c[h+12>>2]|0;c[42022]=j;c[h+16>>2]=j;if(d>>>0<(k+2|0)>>>0)up(82240);else{l=b+e|0;m=d}}else{l=b;m=j}b=m+-1|0;a[b>>0]=64;c[42009]=l;a[173927]=a[b>>0]|0;c[42018]=b;return}function Fp(){var a=0;a=c[42017]|0;if(!a)a=0;else a=c[a>>2]|0;yp(a);return}function Gp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+80|0;f=e;g=a+52|0;Sp(a,c[g>>2]|0,17604);a=f+8|0;c[a>>2]=b;c[a+4>>2]=d;d=c[g>>2]|0;d=bb[c[d>>2]&31](d,f,4)|0;l=e;return d|0}function Hp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=Gp(b,d,e)|0;if(!f){f=Yn(b,72)|0;c[f+64>>2]=c[b+64>>2];g=f+24|0;h=c[b+24>>2]|0;c[g>>2]=h;a[g>>0]=h&255&-9;c[f+56>>2]=b;c[f+60>>2]=c[b+60>>2];b=f+8|0;c[b>>2]=d;c[b+4>>2]=e;jn(f)|0}return f|0}function Ip(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;if(!(((b|0)!=0?(An(a,0,b,f,0)|0)!=0:0)?(e=f,e=Gp(a,c[e>>2]|0,c[e+4>>2]|0)|0,(e|0)!=0):0))if((d|0)!=0?(An(a,0,b,f,1)|0)!=0:0){e=f;e=Hp(a,c[e>>2]|0,c[e+4>>2]|0)|0;En(a,0,e)}else e=0;l=g;return e|0}function Jp(a){a=a|0;a=c[a+52>>2]|0;return bb[c[a>>2]&31](a,0,128)|0}function Kp(a){a=a|0;var b=0;b=Lp(a)|0;if(!b)a=0;else{b=c[b+52>>2]|0;a=bb[c[b>>2]&31](b,a,8)|0}return a|0}function Lp(a){a=a|0;return c[a+56>>2]|0}function Mp(a,b){a=a|0;b=b|0;a=c[a+52>>2]|0;return bb[c[a>>2]&31](a,b,2)|0}function Np(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[42029]|0;e=(b|0)!=0;do if(!a)if(e){_I(b);a=0;break}else{a=ZI(d)|0;break}else if(e){Zn(a,b);a=0;break}else{a=Yn(a,d)|0;break}while(0);return a|0}function Op(a,b,d){a=a|0;b=b|0;d=d|0;a=c[42029]|0;if(!a)_I(b);else Zn(a,b);return}function Pp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=b+28|0;f=c[e>>2]|0;c[e>>2]=2;c[42029]=a;d=Ql(b,d)|0;c[e>>2]=f;c[42029]=0;return d|0}function Qp(a,b,d){a=a|0;b=b|0;d=d|0;c[42029]=a;return bb[c[b>>2]&31](b,d,2)|0}function Rp(a,b){a=a|0;b=b|0;var d=0,e=0;d=(Ll(b,0,0)|0)+28|0;e=c[d>>2]|0;c[d>>2]=2;c[42029]=a;if(!(Kl(b)|0)){c[d>>2]=e;c[42029]=0;a=0}else a=1;return a|0}function Sp(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0?(Ll(b,0,0)|0)!=(c|0):0)Ll(b,c,0)|0;return}function Tp(a,b){a=a|0;b=b|0;if(!(cp(a)|0))b=Vp(a,b)|0;else Up(a,b)|0;return b|0}function Up(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a[c>>0]=60;e=c;while(1){d=e+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;a[d>>0]=f;b=b+1|0;e=d}a[d>>0]=62;a[e+2>>0]=0;return c|0}function Vp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){a[d>>0]=34;l=a[b>>0]|0;q=0;g=((l+-45&255)<2|((l&255)+-48|0)>>>0<10)&1;h=0;i=0;j=0;e=d+1|0;f=b+1|0;b:while(1){k=e;while(1){if(!(l<<24>>24))break b;e=l&255;c:do if(l<<24>>24==34){a[k>>0]=92;m=g;n=1;k=k+1|0}else{if(!g){n=l<<24>>24>-1&(l<<24>>24!=95&(gK(e)|0)==0);m=0;n=n?1:h;break}switch(l<<24>>24){case 45:{n=(j|0)==0;m=n?g:0;n=n?h:1;break c}case 46:{n=(i|0)==0;m=n?g:0;n=n?h:1;i=i+1|0;break c}default:{n=(e+-48|0)>>>0<10;m=n?g:0;n=n?h:1;break c}}}while(0);e=k+1|0;a[k>>0]=l;p=f+1|0;o=a[f>>0]|0;j=j+1|0;f=c[4795]|0;if(!f){g=m;h=n;k=e;f=p;l=o;continue}g=o&255;h=o<<24>>24!=0;if((q&h?!(l<<24>>24==92|l<<24>>24>-1&((l+-45&255)>1&(gK(l<<24>>24)|0)==0)^1):0)?!(o<<24>>24>-1&((o+-45&255)>1&(gK(g)|0)==0)):0)break;if((j|0)<(f|0)|h^1){g=m;h=n;k=e;f=p;l=o;continue}if(l<<24>>24==92|l<<24>>24>-1&((gK(l<<24>>24)|0)==0&(l+-45&255)>1)^1){q=1;g=m;h=n;l=o;f=p;continue b}if(o<<24>>24>-1&((o+-45&255)>1&(gK(g)|0)==0)){q=1;g=m;h=n;l=o;f=p;continue b}a[e>>0]=92;a[k+2>>0]=10;g=m;h=1;j=0;k=k+3|0;f=p;l=o}a[e>>0]=92;a[k+2>>0]=10;q=0;g=m;h=1;j=0;l=o;e=k+3|0;f=p}a[k>>0]=34;a[k+1>>0]=0;if(!h){if((j|0)==1?((a[b>>0]|0)+-45&255)<2:0){b=d;break}else e=19184;while(1){f=c[e>>2]|0;if(!f)break a;if(!(iK(f,b)|0)){b=d;break}else e=e+4|0}}else b=d}else b=82272;while(0);return b|0}function Wp(a){a=a|0;return Tp(a,Xp(a)|0)|0}function Xp(a){a=a|0;var b=0;b=((rJ(a)|0)<<1)+2|0;b=b>>>0>1024?b:1024;a=c[42031]|0;if(b>>>0>(c[42030]|0)>>>0){if(!a)a=ZI(b)|0;else a=aJ(a,b)|0;c[42031]=a;c[42030]=b}return a|0}function Yp(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=0;break}if((Zp(a)|0)==0?io(a,b,0)|0:0){a=1;break}a=Kp(a)|0}return a|0}function Zp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=Dn(b)|0;if((h|0)!=0?(a[h>>0]|0)!=37:0)d=0;else e=3;a:do if((e|0)==3){d=om(b)|0;b:do if(d|0?(f=om(Lp(b)|0)|0,f|0):0){h=Sl(c[(om(so(b)|0)|0)+8>>2]|0)|0;g=d+12|0;e=f+12|0;d=0;while(1){if((d|0)>=(h|0))break b;f=c[(c[g>>2]|0)+(d<<2)>>2]|0;if((f|0?(i=c[(c[e>>2]|0)+(d<<2)>>2]|0,i|0):0)?xJ(f,i)|0:0){d=0;break a}d=d+1|0}}while(0);d=jm(b,0)|0;if(d)if((Sl(c[d+8>>2]|0)|0)>0)d=0;else return (Sl(c[d+12>>2]|0)|0)<1|0;else d=1}while(0);return d|0}function _p(b,d){b=b|0;d=d|0;var e=0,f=0;c[42032]=0;e=Im(b,82282)|0;if((e|0?((a[e>>0]|0)+-48|0)>>>0<10:0)?(f=BL(e,0,10)|0,(f|0)==0|(f|0)>59):0)c[4795]=f;$p(b,1);if(((aq(b,d,1)|0)!=-1?(bq(b,d)|0)!=-1:0)?(cq(b,d)|0)!=-1:0){c[4795]=128;b=$a[c[(c[(c[b+64>>2]|0)+8>>2]|0)+8>>2]&31](d)|0}else b=-1;return b|0}function $p(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=Jp(a)|0;while(1){if(!d)break;$p(d,0);d=Kp(d)|0}a:do if(b|0){b=co(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Pm(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Rm(a,d)|0}b=eo(a,b)|0}}while(0);return}function aq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if((e|0)==0?(Lp(b)|0)!=0:0){i=0;g=174181;k=94336}else{k=(a[b+24>>0]&1)==0?174181:82326;g=(sn(b)|0)==0;c[42033]=ym(b,2,96242,0)|0;c[42034]=ym(b,2,96251,0)|0;i=1;g=g?174181:82329}f=Dn(b)|0;if((f|0)!=0?(a[f>>0]|0)!=37:0){h=1;j=87638}else{h=0;j=174181;f=174181}do if((dq(b,d)|0)!=-1?(eq(b,d,g)|0)!=-1:0){g=(h|0)==0;if(h|i|0){if((eq(b,d,k)|0)==-1){f=-1;break}if((eq(b,d,87631)|0)==-1){f=-1;break}}if(!g?(pq(b,d,f)|0)==-1:0){f=-1;break}if(((eq(b,d,j)|0)!=-1?(eq(b,d,82337)|0)!=-1:0)?(c[42032]=(c[42032]|0)+1,(uq(b,d,e)|0)!=-1):0){c[b>>2]=c[b>>2]|8;f=0}else f=-1}else f=-1;while(0);return f|0}function bq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if((fq(a,b)|0)==-1)d=-1;else{k=jm(so(a)|0,0)|0;i=(k|0)==0;j=k+12|0;k=k+8|0;h=co(a)|0;while(1){if(!h){d=0;break a}if(gq(a,h,(c[h>>2]|0)>>>4,0)|0){if(i)d=0;else d=c[k>>2]|0;if((hq(h,b,d)|0)==-1){d=-1;break a}}g=Pm(a,h)|0;d=h;while(1){if(!g)break;f=g+-48|0;e=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0;if((d|0)!=(e|0)?(gq(a,e,(c[h>>2]|0)>>>4,0)|0)!=0:0){if(i)d=0;else d=c[k>>2]|0;if((hq(c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0,b,d)|0)==-1){d=-1;break a}d=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0}if(iq(a,g)|0){if(i)e=0;else e=c[j>>2]|0;if((jq(g,b,e)|0)==-1){d=-1;break a}}g=Rm(a,g)|0}h=eo(a,h)|0}}while(0);return d|0}function cq(a,b){a=a|0;b=b|0;c[42032]=(c[42032]|0)+-1;if((dq(a,b)|0)==-1)a=-1;else a=((eq(a,b,95830)|0)==-1)<<31>>31;return a|0}function dq(a,b){a=a|0;b=b|0;var d=0;d=c[42032]|0;while(1){if((d|0)<=0){d=0;break}if((eq(a,b,134899)|0)==-1){d=-1;break}else d=d+-1|0}return d|0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;return ab[c[(c[(c[a+64>>2]|0)+8>>2]|0)+4>>2]&63](b,d)|0}function fq(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=0;break}if(!(Zp(a)|0)){if((aq(a,b,0)|0)==-1){a=-1;break}if((bq(a,b)|0)==-1){a=-1;break}if((cq(a,b)|0)==-1){a=-1;break}}else fq(a,b)|0;a=Kp(a)|0}return a|0}function gq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((Yp(a,b)|0)==0?(rq(a,b,c,d)|0)!=0:0)if((sq(a,b)|0)==0?(tq(b)|0)==0:0)e=5;else a=1;else e=5;if((e|0)==5)a=0;return a|0}function hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ro(a)|0;do if((dq(d,b)|0)!=-1?(kq(a,b)|0)!=-1:0){if((mq(a)|0)==0?(nq(a,b,c)|0)==-1:0){a=-1;break}a=eq(d,b,82293)|0}else a=-1;while(0);return a|0}function iq(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=1;break}if((Zp(a)|0)==0?en(a,b,0)|0:0){a=0;break}a=Kp(a)|0}return a|0}function jq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]&3;g=c[((e|0)==3?a:a+48|0)+40>>2]|0;e=c[((e|0)==2?a:a+-48|0)+40>>2]|0;f=ro(g)|0;do if((((((dq(f,b)|0)!=-1?(kq(g,b)|0)!=-1:0)?(lq(a,b,c[42033]|0)|0)!=-1:0)?(g=(qn(ro(g)|0)|0)!=0,(eq(f,b,g?85095:85100)|0)!=-1):0)?(kq(e,b)|0)!=-1:0)?(lq(a,b,c[42034]|0)|0)!=-1:0){if(!(mq(a)|0)){if((nq(a,b,d)|0)==-1){a=-1;break}}else if((oq(a,b,1)|0)==-1){a=-1;break}a=eq(f,b,82293)|0}else a=-1;while(0);return a|0}function kq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+32|0;g=i;d=i+8|0;e=Dn(a)|0;f=ro(a)|0;if(!e){j=a+8|0;a=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=a;pL(d,82313,g)|0;if((eq(f,b,d)|0)==-1)a=-1;else h=4}else if((pq(f,b,e)|0)==-1)a=-1;else h=4;if((h|0)==4)a=0;l=i;return a|0}function lq(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((d|0)!=0?(e=ro(b)|0,f=Jm(b,d)|0,(a[f>>0]|0)!=0):0)if((eq(e,c,93017)|0)==-1)b=-1;else{do if(cp(f)|0){if((pq(e,c,f)|0)==-1){b=-1;break a}}else{b=WJ(f,58)|0;if(!b)if((qq(e,c,f,0)|0)==-1){b=-1;break a}else break;a[b>>0]=0;if((qq(e,c,f,0)|0)==-1){b=-1;break a}if((eq(e,c,93017)|0)==-1){b=-1;break a}if((qq(e,c,b+1|0,0)|0)==-1){b=-1;break a}a[b>>0]=58}while(0);b=0}else b=0;while(0);return b|0}function mq(a){a=a|0;return (c[a>>2]|0)>>>3&1|0}function nq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!(c[a>>2]&2)){e=0;k=4}else{switch(oq(a,b,0)|0){case -1:{e=-1;break a}case 0:{e=0;k=4;break a}default:{}}e=1;k=4}while(0);b:do if((k|0)==4){f=om(a)|0;j=ro(a)|0;c:do if(f){i=f+12|0;h=bb[c[d>>2]&31](d,0,128)|0;while(1){if(!h)break c;do if(c[a>>2]&2){g=c[42033]|0;if(g|0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0)break;g=c[42034]|0;if(!((g|0)!=0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0))k=12}else k=12;while(0);if((k|0)==12){k=0;f=h+16|0;if((c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)!=(c[h+12>>2]|0)){g=e+1|0;if(e){if((eq(j,b,82308)|0)==-1){e=-1;break b}if((dq(j,b)|0)==-1){e=-1;break b}}else{if((dq(j,b)|0)==-1){e=-1;break b}if((eq(j,b,82305)|0)==-1){e=-1;break b}c[42032]=(c[42032]|0)+1}if((pq(j,b,c[h+8>>2]|0)|0)==-1){e=-1;break b}if((eq(j,b,82311)|0)==-1){e=-1;break b}if((pq(j,b,c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)|0)==-1){e=-1;break b}else e=g}}h=bb[c[d>>2]&31](d,h,8)|0}}while(0);if((e|0)>0){if((eq(j,b,82303)|0)==-1){e=-1;break}c[42032]=(c[42032]|0)+-1}c[a>>2]=c[a>>2]|8;e=0}while(0);return e|0}function oq(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Dn(b)|0;b=ro(b)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)if((eq(b,c,82296)|0)!=-1?(pq(b,c,e)|0)!=-1:0)if((d|0)!=0?(eq(b,c,82303)|0)==-1:0)b=-1;else{b=1;f=7}else b=-1;else{b=0;f=7}return b|0}function pq(a,b,c){a=a|0;b=b|0;c=c|0;return qq(a,b,c,1)|0}function qq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d)c=Vp(c,Xp(c)|0)|0;else c=Wp(c)|0;return eq(a,b,c)|0}function rq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a:do if(0<e>>>0|(0==(e|0)?(c[b>>2]|0)>>>4>>>0<d>>>0:0))b=0;else{b=Sm(a,b)|0;while(1){if(!b){b=1;break a}if(0<e>>>0|(0==(e|0)?(c[c[b+40>>2]>>2]|0)>>>4>>>0<d>>>0:0)){b=0;break a}b=Tm(a,b)|0}}while(0);return b|0}function sq(a,b){a=a|0;b=b|0;if(!(Sm(a,b)|0))a=(Pm(a,b)|0)==0&1;else a=0;return a|0}function tq(a){a=a|0;var b=0,d=0,e=0;a=om(a)|0;a:do if(!a)a=0;else{d=a+8|0;e=c[d>>2]|0;b=a+12|0;a=bb[c[e>>2]&31](e,0,128)|0;while(1){if(!a){a=0;break a}if((c[(c[b>>2]|0)+(c[a+16>>2]<<2)>>2]|0)!=(c[a+12>>2]|0)){a=1;break a}e=c[d>>2]|0;a=bb[c[e>>2]&31](e,a,8)|0}}while(0);return a|0}function uq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=jm(a,0)|0;if(e)if(((vq(a,b,96286,c[e+16>>2]|0,d)|0)!=-1?(vq(a,b,96273,c[e+8>>2]|0,d)|0)!=-1:0)?(vq(a,b,96237,c[e+12>>2]|0,d)|0)!=-1:0)f=5;else a=-1;else f=5;if((f|0)==5)a=0;return a|0}function vq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=(g|0)!=0;if(m)l=0;else l=Wl(f,0)|0;k=(l|0)==0;j=bb[c[f>>2]&31](f,0,128)|0;g=0;while(1){if(!j){n=23;break}i=j+12|0;n=c[i>>2]|0;if((n|0)!=0?(a[n>>0]|0)!=0:0)n=12;else n=7;do if((n|0)==7){n=0;if(!(a[j+22>>0]|0)){if(!k){h=bb[c[l>>2]&31](l,j,4)|0;o=c[h+12>>2]|0;if(o|0?a[o>>0]|0:0){n=12;break}if(!(a[h+22>>0]|0))n=12}}else n=12}while(0);if((n|0)==12){n=0;h=g+1|0;if(g){if((eq(b,d,82308)|0)==-1){g=-1;break}if((dq(b,d)|0)==-1){g=-1;break}}else{if((dq(b,d)|0)==-1){g=-1;break}if((eq(b,d,e)|0)==-1){g=-1;break}if((eq(b,d,82305)|0)==-1){g=-1;break}c[42032]=(c[42032]|0)+1}if((pq(b,d,c[j+8>>2]|0)|0)==-1){g=-1;break}if((eq(b,d,82311)|0)==-1){g=-1;break}if((pq(b,d,c[i>>2]|0)|0)==-1){g=-1;break}else g=h}j=bb[c[f>>2]&31](f,j,8)|0}do if((n|0)==23){if((g|0)>0){c[42032]=(c[42032]|0)+-1;if((g|0)!=1){if((eq(b,d,134901)|0)==-1){g=-1;break}if((dq(b,d)|0)==-1){g=-1;break}}g=(eq(b,d,82340)|0)==-1;if(m|g){g=g<<31>>31;break}}else if(m){g=0;break}Wl(f,l)|0;g=0}while(0);return g|0}function wq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(c[b>>2]&3){case 0:{g=19;break}case 1:{g=20;break}case 3:case 2:{g=21;break}default:{}}b=ab[g&63](a,b)|0;if(!b)b=-1;else{Aq(a,b,d,e,g,f);b=0}return b|0}function xq(a,b){a=a|0;b=b|0;if((ro(b)|0)!=(a|0))b=en(a,b,0)|0;return b|0}function yq(a,b){a=a|0;b=b|0;if((ro(b)|0)!=(a|0))b=io(a,b,0)|0;return b|0}function zq(a,b){a=a|0;b=b|0;return a|0}function Aq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=(f|0)!=0;if(h)ib[c&127](a,b,d);g=Jp(a)|0;while(1){if(!g)break;i=ab[e&63](g,b)|0;if(i|0)Aq(g,i,c,d,e,f);g=Kp(g)|0}if(!h)ib[c&127](a,b,d);return}function Bq(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[42035]=0;c[42036]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=75;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=ZI(k*6|3)|0;if(h){TN(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;TN(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{_I(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=76;break a}case 4:{s=75;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==6){e=0;s=76;break}e=a[82344+p>>0]|0;j=e<<24>>24;do if(e<<24>>24!=-18){h=c[42036]|0;if((h|0)==-2){h=hp()|0;c[42036]=h}if((h|0)>=1)if(h>>>0<269)i=d[82424+h>>0]|0;else i=2;else{c[42036]=0;i=0}h=i+j|0;if(h>>>0<=59?(i|0)==(d[82693+h>>0]|0):0){p=a[82753+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[42036]=-2;g=g+4|0;c[g>>2]=c[42037];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[82813+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[42036]|0;b:do switch(q|0){case 0:{c[42035]=(c[42035]|0)+1;Cp(125369);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=76;break a}else{h=o;break b}else{c[42036]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<24>>24==18)break;if((h|0)==(f|0)){e=1;s=76;break a}e=h+-2|0;g=g+-4|0;h=e;e=a[82344+(b[e>>1]|0)>>0]|0}g=g+4|0;c[g>>2]=c[42037];e=1;j=3}else s=23}do if((s|0)==23){s=0;i=d[82893+h>>0]|0;e=c[g+(1-i<<2)>>2]|0;c:do switch(h|0){case 2:{Cq();Dq();break}case 3:{if(c[42038]|0){Cq();Dq();ln(c[42038]|0)|0;c[41987]=0;c[42038]=0}break}case 6:{Eq(c[g>>2]|0,c[g+-4>>2]|0,c[g+-8>>2]|0);break}case 7:{e=c[g>>2]|0;break}case 8:{e=0;break}case 9:{e=1;break}case 10:{e=0;break}case 11:{e=0;break}case 12:{e=1;break}case 21:if(!(c[g+-4>>2]|0)){Gq();break c}else{Fq();break c}case 24:{Hq();break}case 25:{Hq();break}case 26:{e=1;break}case 27:{e=0;break}case 30:{Iq(c[g>>2]|0,0,0);break}case 31:{Iq(c[g+-8>>2]|0,c[g>>2]|0,0);break}case 32:{Iq(c[g+-16>>2]|0,c[g+-8>>2]|0,c[g>>2]|0);break}case 33:{Jq(c[g+-8>>2]|0,c[g+-4>>2]|0);break}case 34:{Jq(258,0);break}case 35:{e=258;break}case 36:{e=259;break}case 37:{e=260;break}case 38:{e=c[g+-4>>2]|0;break}case 39:{e=0;break}case 48:{Kq(c[g+-8>>2]|0,c[g>>2]|0);break}case 49:{Kq(c[g>>2]|0,0);break}case 51:{Lq(c[g>>2]|0);break}case 52:{Mq();break}case 53:{e=c[g>>2]|0;break}case 54:{e=0;break}case 55:{e=0;break}case 59:{e=c[g>>2]|0;break}case 60:{e=c[g>>2]|0;break}case 61:{e=c[g>>2]|0;break}case 62:{e=Nq(c[g+-8>>2]|0,c[g>>2]|0)|0;break}default:{}}while(0);i=0-i|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[82956+h>>0]|0)+-24|0;p=b[i>>1]|0;h=p+(a[83019+e>>0]|0)|0;if(h>>>0<60?(d[82693+h>>0]|0)==(p|0):0){e=a[82753+h>>0]|0;j=q;h=i;break}e=a[83054+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==75){Cp(125382);e=2;s=76}if((s|0)==76)if((f|0)!=(r|0))_I(f);l=t;return e|0}function Cq(){var a=0,b=0;a=c[42039]|0;while(1){if(!a)break;Vq(a+8|0);Vq((c[42039]|0)+24|0);Vq((c[42039]|0)+16|0);b=Oq(c[42039]|0)|0;c[42039]=b;a=b}return}function Dq(){Dp();Mn(c[42038]|0);return}function Eq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[42038]|0;if(!f){a[168160]=d&1|(e&255)<<1&2|a[168160]&-12|8;f=c[42041]|0;a[g>>0]=a[168160]|0;a[g+1>>0]=a[168161]|0;a[g+2>>0]=a[168162]|0;a[g+3>>0]=a[168163]|0;f=gn(b,g,f)|0;c[42038]=f}c[41987]=f;c[42039]=Pq(c[42039]|0,f)|0;bp(0,b)|0;l=h;return}function Fq(){var b=0,d=0,e=0,f=0,g=0,h=0;Uq(2);e=c[42039]|0;f=a[83089]|0;h=0;b=e+24|0;while(1){d=c[b>>2]|0;if(!d)break;if(((c[d>>2]|0)==267?(g=c[d+4>>2]|0,(a[g>>0]|0)==f<<24>>24):0)?(xJ(g,83089)|0)==0:0)b=c[d+8>>2]|0;else b=h;h=b;b=d+12|0}b=e+16|0;a:while(1){e=c[b>>2]|0;b=e+12|0;if(!(c[b>>2]|0))break;d=e+4|0;if((c[e>>2]|0)==262){e=c[d>>2]|0;d=co(e)|0;while(1){if(!d)continue a;g=io(c[c[42039]>>2]|0,d,0)|0;ar(g,0,c[b>>2]|0,h);d=eo(e,d)|0}}else while(1){d=c[d>>2]|0;if(!d)continue a;ar(c[d+4>>2]|0,c[d+8>>2]|0,c[b>>2]|0,h);d=d+12|0}}Vq((c[42039]|0)+8|0);Vq((c[42039]|0)+16|0);Vq((c[42039]|0)+24|0);c[(c[42039]|0)+4>>2]=0;return}function Gq(){var a=0;Uq(1);a=(c[42039]|0)+8|0;while(1){a=c[a>>2]|0;if(!a)break;$q(c[a+4>>2]|0);a=a+12|0}Vq((c[42039]|0)+8|0);Vq((c[42039]|0)+24|0);Vq((c[42039]|0)+16|0);c[(c[42039]|0)+4>>2]=0;return}function Hq(){var a=0,b=0;a=c[42039]|0;b=c[a+8>>2]|0;if(!b){b=c[a+4>>2]|0;if(!b)b=0;else{b=_q(b)|0;a=c[42039]|0}c[a+4>>2]=0}else{b=Zq(b)|0;a=c[42039]|0;c[a+12>>2]=0;c[a+8>>2]=0}if(b|0)Rq(a+16|0,b);return}function Iq(a,b,d){a=a|0;b=b|0;d=d|0;if(d)b=Xq(b,d)|0;d=Yq(no(c[c[42039]>>2]|0,a,1)|0,b)|0;Rq((c[42039]|0)+8|0,d);bp(c[42038]|0,a)|0;return}function Jq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(d|0)Tq();d=(c[42039]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;if(!(c[d+8>>2]|0))Tq();d=d+12|0}g=(b|0)==260?2:(b|0)==259&1;Uq(g);b=c[42039]|0;d=b+24|0;while(1){f=c[d>>2]|0;if(!f)break;do if((c[f>>2]|0)!=267){d=c[f+4>>2]|0;e=c[b>>2]|0;if(!((a[d+21>>0]|0)!=0&(e|0)==(c[42038]|0))){d=ym(e,g,c[d+8>>2]|0,c[f+8>>2]|0)|0;b=c[42039]|0;if((c[b>>2]|0)!=(c[42038]|0))break}a[d+22>>0]=1}while(0);d=f+12|0}Vq(b+24|0);return}function Kq(a,b){a=a|0;b=b|0;b=Qq(a,b)|0;Rq((c[42039]|0)+24|0,b);return}function Lq(a){a=a|0;var b=0;b=c[42039]|0;c[42039]=Pq(b,Ip(c[b>>2]|0,a,1)|0)|0;bp(c[42038]|0,a)|0;return}function Mq(){var a=0,b=0;a=c[42039]|0;b=c[a>>2]|0;a=Oq(a)|0;c[42039]=a;c[a+4>>2]=b;return}function Nq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+1024|0;f=g;d=rJ(a)|0;d=d+1+(rJ(b)|0)|0;if(d>>>0<1025)d=f;else d=ZI(d)|0;xK(d,a)|0;IL(d,b)|0;e=$o(c[42038]|0,d)|0;bp(c[42038]|0,a)|0;bp(c[42038]|0,b)|0;if((d|0)!=(f|0))_I(d);l=g;return e|0}function Oq(a){a=a|0;var b=0;b=c[(c[42039]|0)+32>>2]|0;Zn(c[42038]|0,a);return b|0}function Pq(a,b){a=a|0;b=b|0;var d=0;d=Yn(c[42038]|0,36)|0;c[d+32>>2]=a;c[d>>2]=b;return d|0}function Qq(a,b){a=a|0;b=b|0;return Sq(267,a,b)|0}function Rq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=c[d>>2]|0;if(e|0)c[e+12>>2]=b;c[d>>2]=b;if(!(c[a>>2]|0))c[a>>2]=b;return}function Sq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Yn(c[42038]|0,16)|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;return e|0}function Tq(){var a=0;a=l;l=l+16|0;_l(0,83093,a)|0;l=a;return}
function DI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+112|0;E=H+80|0;D=H+64|0;C=H+48|0;G=4;F=ZI(40)|0;c[F>>2]=0;w=H+32|0;x=H+16|0;y=H;A=H+96|0;G=RN(169980,1,F|0,G|0)|0;F=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1)e=z;else e=0;a:while(1){if(e|0){e=-2;break}g=a+4|0;o=0;fa(94,c[g>>2]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}c[42534]=0;c[42535]=0;o=0;fa(95,c[g>>2]<<1|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}m=(c[42537]|0)/2|0;c[42538]=m;c[42539]=m+-1;m=c[g>>2]|0;g=c[a>>2]|0;e=0;f=-1;i=t;while(1){if((e|0)>=(m|0))break;I=+h[g+(e<<4)>>3];v=i>I;u=v?e:f;e=e+1|0;f=u;i=v?I:i}v=g+(f<<4)|0;c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];v=g+(((f|0)==0?m:f)+-1<<4)|0;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=g+(((f|0)==(m+-1|0)?0:f+1|0)<<4)|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];I=+h[x>>3];if((+h[w>>3]==I?I==+h[y>>3]:0)?+h[y+8>>3]>+h[x+8>>3]:0)v=15;else v=12;b:do if((v|0)==12){v=0;o=0;e=aa(17,w|0,x|0,y|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,G|0,F|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((e|0)==1){g=c[42541]|0;e=c[42542]|0;f=0;while(1){if((f|0)>=(m|0))break b;j=c[a>>2]|0;if(!(((f|0)>0?(B=f+-1|0,+h[j+(f<<4)>>3]==+h[j+(B<<4)>>3]):0)?+h[j+(f<<4)+8>>3]==+h[j+(B<<4)+8>>3]:0)){u=c[42534]|0;c[g+(u<<3)>>2]=j+(f<<4);c[g+(u<<3)+4>>2]=g+(((u|0)%(m|0)|0)<<3);c[e+(u<<2)>>2]=g+(u<<3);c[42534]=u+1}f=f+1|0}}else v=15}while(0);c:do if((v|0)==15){v=0;j=c[42541]|0;e=c[42542]|0;g=m;while(1){f=g+-1|0;if((g|0)<=0)break c;k=c[a>>2]|0;if(((g|0)<(m|0)?+h[k+(f<<4)>>3]==+h[k+(g<<4)>>3]:0)?+h[k+(f<<4)+8>>3]==+h[k+(g<<4)+8>>3]:0){g=f;continue}g=c[42534]|0;c[j+(g<<3)>>2]=k+(f<<4);c[j+(g<<3)+4>>2]=j+(((g|0)%(m|0)|0)<<3);c[e+(g<<2)>>2]=j+(g<<3);c[42534]=g+1;g=f}}while(0);o=0;ga(27,e|0,c[42534]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}j=0;e=c[42535]|0;d:while(1){if((j|0)>=(e|0)){s=0;break}k=j+1|0;g=k;while(1){if((g|0)>=(e|0)){j=k;continue d}o=0;ga(28,j|0,g|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue a}g=g+1|0;e=c[42535]|0}}while(1){if((s|0)>=(e|0))break;o=0;f=$(39,s|0,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;s=s+1|0}if((s|0)==(e|0)){e=c[13918]|0;o=0;c[C>>2]=125503;c[C+4>>2]=192;c[C+8>>2]=125514;aa(13,e|0,125484,C|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=41;break}}u=b+16|0;k=0;while(1){if((k|0)>=(e|0))break;o=0;f=$(39,k|0,u|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;k=k+1|0}if((k|0)==(e|0)){e=c[13918]|0;o=0;c[D>>2]=125503;c[D+4>>2]=200;c[D+8>>2]=125547;aa(13,e|0,125484,D|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=48;break}}o=0;e=$(40,s|0,k|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,G|0,F|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}if(!e){e=c[13918]|0;o=0;c[E>>2]=125503;c[E+4>>2]=207;c[E+8>>2]=125585;aa(13,e|0,125484,E|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}o=0;fa(96,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=53;break}}if((s|0)==(k|0)){o=0;fa(96,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=56;break}}c[A>>2]=b;c[A+4>>2]=0;f=A+8|0;c[f>>2]=u;c[A+12>>2]=0;o=0;ga(29,1,A|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}c[42540]=c[42538];q=s;e:while(1){if((q|0)==-1){g=f;e=0;break}r=c[42544]|0;c[r+(q*52|0)>>2]=2;e=0;while(1){if((e|0)>=3){v=65;break}v=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(v|0?(c[v>>2]|0)==1:0){v=68;break}e=e+1|0}if((v|0)==65){v=0;if((e|0)==3){e=c[42536]|0;k=c[e+(c[42539]<<2)>>2]|0;o=0;e=aa(17,u|0,c[c[e+(c[42538]<<2)>>2]>>2]|0,c[k>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?f:k;j=j?k:f}else v=68}if((v|0)==68){v=0;k=c[r+(q*52|0)+4+(e<<4)>>2]|0;m=c[r+(q*52|0)+4+(e<<4)+4>>2]|0;o=0;e=aa(17,c[k>>2]|0,c[c[r+(q*52|0)+4+(((e+1|0)%3|0)<<4)+4>>2]>>2]|0,c[m>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?k:m;j=j?m:k}do if((q|0)==(s|0)){o=0;ga(29,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(29,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}e=0}else{m=c[42536]|0;if((c[m+(c[42538]<<2)>>2]|0)!=(n|0)?(c[m+(c[42539]<<2)>>2]|0)!=(n|0):0){o=0;j=_(29,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(30,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(29,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((j|0)<=(c[42540]|0)){e=0;break}c[42540]=j;e=0;break}o=0;k=_(29,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(30,1,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(29,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((k|0)>=(c[42540]|0)){e=0;break}c[42540]=k;e=0}while(0);while(1){if((e|0)>=3){q=-1;continue e}g=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(g|0?(c[g>>2]|0)==1:0)break;e=e+1|0}q=(g-(c[42544]|0)|0)/52|0}while(1){if(!g)break;g=c[g+4>>2]|0;e=e+1|0}o=0;fa(96,e|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1)e=z;else{v=94;break}}if((v|0)==41)e=-1;else if((v|0)==48)e=-1;else if((v|0)==53){c[d+4>>2]=2;e=c[42543]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==56){c[d+4>>2]=2;e=c[42543]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==94){c[d+4>>2]=e;g=c[42543]|0;while(1){e=e+-1|0;if(!f)break;F=g+(e<<4)|0;E=c[f>>2]|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];f=c[f+4>>2]|0}c[d>>2]=g;e=0}_I(G|0);l=H;return e|0}function EI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+64|0;e=h+48|0;g=h+32|0;f=h+16|0;d=h;if((c[42547]|0)<(a|0)){b=c[42541]|0;if(!b){g=ZI(a<<3)|0;c[42541]=g;if(!g){g=c[13918]|0;c[d>>2]=125503;c[d+4>>2]=523;c[d+8>>2]=125753;zL(g,125484,d)|0;Ua(169980,1)}g=ZI(a<<2)|0;c[42542]=g;if(!g){g=c[13918]|0;c[f>>2]=125503;c[f+4>>2]=527;c[f+8>>2]=125772;zL(g,125484,f)|0;Ua(169980,1)}}else{f=aJ(b,a<<3)|0;c[42541]=f;if(!f){f=c[13918]|0;c[g>>2]=125503;c[g+4>>2]=533;c[g+8>>2]=125792;zL(f,125484,g)|0;Ua(169980,1)}g=aJ(c[42542]|0,a<<2)|0;c[42542]=g;if(!g){g=c[13918]|0;c[e>>2]=125503;c[e+4>>2]=539;c[e+8>>2]=125812;zL(g,125484,e)|0;Ua(169980,1)}}c[42547]=a}l=h;return}function FI(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[42537]|0)<(a|0)){b=c[42536]|0;if(!b){e=ZI(a<<2)|0;c[42536]=e;if(!e){e=c[13918]|0;c[d>>2]=125503;c[d+4>>2]=573;c[d+8>>2]=125708;zL(e,125484,d)|0;Ua(169980,1)}}else{d=aJ(b,a<<2)|0;c[42536]=d;if(!d){d=c[13918]|0;c[e>>2]=125503;c[e+4>>2]=580;c[e+8>>2]=125730;zL(d,125484,e)|0;Ua(169980,1)}}c[42537]=a}l=f;return}function GI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>0.0?1:d<0.0?2:3)|0}function HI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a:while(1){if((b|0)>3)e=0;else{b=9;break}while(1){if((e|0)>=(b|0)){b=8;break a}f=e+1|0;d=(f|0)%(b|0)|0;g=(e+2|0)%(b|0)|0;if(!(PI(e,g,a,b)|0))e=f;else break}QI(c[a+(e<<2)>>2]|0,c[a+(d<<2)>>2]|0,c[a+(g<<2)>>2]|0);b=b+-1|0;while(1){if((d|0)>=(b|0))continue a;g=d+1|0;c[a+(d<<2)>>2]=c[a+(g<<2)>>2];d=g}}if((b|0)==8){a=c[13918]|0;c[h>>2]=125503;c[h+4>>2]=324;c[h+8>>2]=125648;zL(a,125484,h)|0}else if((b|0)==9)QI(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0);l=i;return}function II(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=c[42544]|0;j=i+(a*52|0)|0;k=i+(b*52|0)|0;g=0;while(1){if((g|0)==3)break;l=i+(a*52|0)+4+(g<<4)|0;m=i+(a*52|0)+4+(g<<4)+4|0;n=i+(a*52|0)+4+(g<<4)+12|0;f=0;while(1){if((f|0)==3)break;o=c[c[l>>2]>>2]|0;h=c[c[i+(b*52|0)+4+(f<<4)>>2]>>2]|0;if((o|0)==(h|0)){d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;if((c[c[m>>2]>>2]|0)==(d|0))e=10;else e=8}else{d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;e=8}if(((e|0)==8?(e=0,(o|0)==(d|0)):0)?(c[c[m>>2]>>2]|0)==(h|0):0)e=10;if((e|0)==10){c[n>>2]=k;c[i+(b*52|0)+4+(f<<4)+12>>2]=j}f=f+1|0}g=g+1|0}return}function JI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[42544]|0;d=0;e=0;while(1){if((e|0)==3)break;d=d+((GI(c[c[f+(a*52|0)+4+(e<<4)>>2]>>2]|0,c[c[f+(a*52|0)+4+(e<<4)+4>>2]>>2]|0,b)|0)!=2&1)|0;e=e+1|0}return ((d|0)==3|(d|0)==0)&1|0}function KI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[42544]|0;e=d+(a*52|0)|0;a:do if(!(c[e>>2]|0)){c[e>>2]=1;if((a|0)==(b|0))d=1;else{f=0;while(1){if((f|0)>=3)break;e=c[d+(a*52|0)+4+(f<<4)+12>>2]|0;if(e){if(KI((e-d|0)/52|0,b)|0){d=1;break a}d=c[42544]|0}f=f+1|0}c[d+(a*52|0)>>2]=0;d=0}}else d=0;while(0);return d|0}function LI(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[42545]|0)<(a|0)){b=c[42543]|0;if(!b){e=ZI(a<<4)|0;c[42543]=e;if(!e){e=c[13918]|0;c[d>>2]=125503;c[d+4>>2]=593;c[d+8>>2]=125611;zL(e,125484,d)|0;Ua(169980,1)}}else{d=aJ(b,a<<4)|0;c[42543]=d;if(!d){d=c[13918]|0;c[e>>2]=125503;c[e+4>>2]=599;c[e+8>>2]=125629;zL(d,125484,e)|0;Ua(169980,1)}}c[42545]=a}l=f;return}function MI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[42539]|0;e=c[42538]|0;f=(d|0)>=(e|0);if((a|0)==1)if(f){c[b+4>>2]=c[(c[42536]|0)+(e<<2)>>2];a=170152;d=-1}else{a=170152;d=-1}else if(f){c[b+4>>2]=c[(c[42536]|0)+(d<<2)>>2];a=170156;d=1}else{a=170156;d=1}f=(c[a>>2]|0)+d|0;c[a>>2]=f;c[(c[42536]|0)+(f<<2)>>2]=b;return}function NI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[42540]|0;g=c[42536]|0;b=c[42538]|0;while(1){if((b|0)>=(f|0)){e=4;break}d=b+1|0;if((GI(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==1)break;else b=d}a:do if((e|0)==4){b=c[42539]|0;while(1){if((b|0)<=(f|0)){b=f;break a}d=b+-1|0;if((GI(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==2)break;else b=d}}while(0);return b|0}function OI(a,b){a=a|0;b=b|0;c[((a|0)==1?170156:170152)>>2]=b;return}function PI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[c[d+(((a+-1+e|0)%(e|0)|0)<<2)>>2]>>2]|0;i=c[c[d+(a<<2)>>2]>>2]|0;g=c[c[d+(((a+1|0)%(e|0)|0)<<2)>>2]>>2]|0;k=(GI(f,i,g)|0)==1;j=c[c[d+(b<<2)>>2]>>2]|0;if(k)if((GI(i,j,f)|0)==1){f=GI(j,i,g)|0;g=1;h=5}else f=0;else{f=GI(i,j,g)|0;g=2;h=5}a:do if((h|0)==5)if((f|0)==(g|0)){f=0;while(1){if((f|0)>=(e|0)){f=1;break a}g=f;f=f+1|0;h=(f|0)%(e|0)|0;if((h|0)==(b|0)|((g|0)==(b|0)|((g|0)==(a|0)|(h|0)==(a|0))))continue;if(SI(i,j,c[c[d+(g<<2)>>2]>>2]|0,c[c[d+(h<<2)>>2]>>2]|0)|0){f=0;break}}}else f=0;while(0);return f|0}function QI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[42535]|0;f=c[42546]|0;if((e|0)<(f|0))h=e;else{RI(f+20|0);h=c[42535]|0}g=c[42544]|0;c[42535]=h+1;f=g+(h*52|0)|0;c[f>>2]=0;c[g+(h*52|0)+4>>2]=a;c[g+(h*52|0)+8>>2]=b;c[g+(h*52|0)+16>>2]=0;c[g+(h*52|0)+20>>2]=b;c[g+(h*52|0)+24>>2]=d;c[g+(h*52|0)+32>>2]=0;c[g+(h*52|0)+36>>2]=d;c[g+(h*52|0)+40>>2]=a;c[g+(h*52|0)+48>>2]=0;e=0;while(1){if((e|0)==3)break;c[g+(h*52|0)+4+(e<<4)+8>>2]=f;e=e+1|0}return}function RI(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[42546]|0)<(a|0)){b=c[42544]|0;if(!b){e=ZI(a*52|0)|0;c[42544]=e;if(!e){e=c[13918]|0;c[d>>2]=125503;c[d+4>>2]=552;c[d+8>>2]=125669;zL(e,125484,d)|0;Ua(169980,1)}}else{d=aJ(b,a*52|0)|0;c[42544]=d;if(!d){d=c[13918]|0;c[e>>2]=125503;c[e+4>>2]=558;c[e+8>>2]=125688;zL(d,125484,e)|0;Ua(169980,1)}}c[42546]=a}l=f;return}function SI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=GI(a,b,c)|0;if((((f|0)!=3?(g=GI(a,b,d)|0,(g|0)!=3):0)?(h=GI(c,d,a)|0,(h|0)!=3):0)?(e=GI(c,d,b)|0,(e|0)!=3):0)return ((f|0)==1^(g|0)==1)&((h|0)==1^(e|0)==1)&1|0;if(((TI(a,b,c)|0)==0?(TI(a,b,d)|0)==0:0)?(TI(c,d,a)|0)==0:0)return (TI(c,d,b)|0)!=0|0;return 1}function TI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;e=+h[a>>3];g=+h[b>>3]-e;f=+h[a+8>>3];d=+h[b+8>>3]-f;e=+h[c>>3]-e;f=+h[c+8>>3]-f;if((GI(a,b,c)|0)==3?f*d+e*g>=0.0:0)a=f*f+e*e<=d*d+g*g&1;else a=0;return a|0}function UI(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;d=+h[a+24>>3];a:do if(d<1.0e-07&d>-1.0e-07)a=VI(a,b)|0;else{g=+h[a+16>>3]/(d*3.0);f=+h[a+8>>3]/d;e=g*g;d=g*2.0*e-g*f+ +h[a>>3]/d;e=f*.3333333333333333-e;e=e*e*4.0*e;f=d*d+e;if(!(f<0.0)){i=(+C(+f)-d)*.5;e=+JJ(i);d=+JJ(-d-i)+e;h[b>>3]=d;if(f>0.0)a=1;else{d=d*-.5;h[b+16>>3]=d;a=1;c=7}}else{i=+K(+(+C(+-f)),+-d);d=+JJ(+C(+-e)*.5)*2.0;h[b>>3]=d*+E(+(i*.3333333333333333));h[b+8>>3]=+E(+((i+6.283185307179586)*.3333333333333333))*d;d=+E(+((i+-6.283185307179586)*.3333333333333333))*d;a=2;c=7}if((c|0)==7){h[b+(a<<3)>>3]=d;a=3}c=0;while(1){if((c|0)>=(a|0))break a;j=b+(c<<3)|0;h[j>>3]=+h[j>>3]-g;c=c+1|0}}while(0);return a|0}function VI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+16>>3];do if(!(c<1.0e-07&c>-1.0e-07)){d=+h[a+8>>3]/(c*2.0);c=d*d-+h[a>>3]/c;if(!(c<0.0))if(c==0.0){h[b>>3]=-d;a=1;break}else{c=+C(+c)-d;h[b>>3]=c;h[b+8>>3]=d*-2.0-c;a=2;break}else a=0}else a=WI(a,b)|0;while(0);return a|0}function WI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a+8>>3];c=+h[a>>3];if(d<1.0e-07&d>-1.0e-07)a=c<1.0e-07&c>-1.0e-07?4:0;else{h[b>>3]=-c/d;a=1}return a|0}function XI(a){a=a|0;_I(c[a>>2]|0);_I(a);return}function YI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+4>>2]|0;i=(e*3|0)+-2|0;d=c[42549]|0;if((i|0)>(c[42548]|0)){if(!d)d=ZI(i<<4)|0;else d=aJ(d,i<<4)|0;c[42549]=d;c[42548]=i;h=d;g=d}else{h=d;g=d}f=c[a>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];UN(h+16|0,f|0,16)|0;e=e+-1|0;d=1;a=2;while(1){if((d|0)>=(e|0))break;j=h+(a+2<<4)|0;k=h+(a+1<<4)|0;m=h+(a<<4)|0;l=f+(d<<4)|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];UN(k|0,l|0,16)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];d=d+1|0;a=a+3|0}l=h+(a<<4)|0;m=f+(d<<4)|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];UN(h+(a+1<<4)|0,m|0,16)|0;c[b+4>>2]=i;c[b>>2]=g;return}function ZI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;p=x;do if(a>>>0<245){m=a>>>0<11?16:a+11&-8;a=m>>>3;o=c[42550]|0;d=o>>>a;if(d&3|0){b=(d&1^1)+a|0;a=170240+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[42550]=o&~(1<<b);else{c[g+12>>2]=a;c[d>>2]=g}w=b<<3;c[e+4>>2]=w|3;w=e+w+4|0;c[w>>2]=c[w>>2]|1;w=f;l=x;return w|0}n=c[42552]|0;if(m>>>0>n>>>0){if(d|0){b=2<<a;b=d<<a&(b|0-b);b=(b&0-b)+-1|0;i=b>>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=170240+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=o&~(1<<e);c[42550]=a}else{c[d+12>>2]=b;c[a>>2]=d;a=o}w=e<<3;h=w-m|0;c[g+4>>2]=m|3;f=g+m|0;c[f+4>>2]=h|1;c[g+w>>2]=h;if(n|0){e=c[42555]|0;b=n>>>3;d=170240+(b<<1<<2)|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[42552]=h;c[42555]=f;w=i;l=x;return w|0}j=c[42551]|0;if(j){d=(j&0-j)+-1|0;i=d>>>12&16;d=d>>>i;h=d>>>5&8;d=d>>>h;k=d>>>2&4;d=d>>>k;e=d>>>1&2;d=d>>>e;a=d>>>1&1;a=c[170504+((h|i|k|e|a)+(d>>>a)<<2)>>2]|0;d=(c[a+4>>2]&-8)-m|0;e=c[a+16+(((c[a+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){k=a;h=d}else{do{i=(c[e+4>>2]&-8)-m|0;k=i>>>0<d>>>0;d=k?i:d;a=k?e:a;e=c[e+16+(((c[e+16>>2]|0)==0&1)<<2)>>2]|0}while((e|0)!=0);k=a;h=d}i=k+m|0;if(i>>>0>k>>>0){f=c[k+24>>2]|0;b=c[k+12>>2]|0;do if((b|0)==(k|0)){a=k+20|0;b=c[a>>2]|0;if(!b){a=k+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[k+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[k+28>>2]|0;a=170504+(b<<2)|0;if((k|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[42551]=j&~(1<<b);break}}else{c[f+16+(((c[f+16>>2]|0)!=(k|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[k+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[k+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(h>>>0<16){w=h+m|0;c[k+4>>2]=w|3;w=k+w+4|0;c[w>>2]=c[w>>2]|1}else{c[k+4>>2]=m|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(n|0){e=c[42555]|0;b=n>>>3;d=170240+(b<<1<<2)|0;b=1<<b;if(!(o&b)){c[42550]=o|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[42552]=h;c[42555]=i}w=k+8|0;l=x;return w|0}else n=m}else n=m}else n=m}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;k=c[42551]|0;if(k){e=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{o=(a+1048320|0)>>>16&8;v=a<<o;n=(v+520192|0)>>>16&4;v=v<<n;j=(v+245760|0)>>>16&2;j=14-(n|o|j)+(v<<j>>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;d=c[170504+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;v=57}else{a=0;i=d;h=m<<((j|0)==31?0:25-(j>>>1)|0);d=0;while(1){f=(c[i+4>>2]&-8)-m|0;if(f>>>0<e>>>0)if(!f){e=0;d=i;a=i;v=61;break a}else{a=i;e=f}f=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;d=(f|0)==0|(f|0)==(i|0)?d:f;f=(i|0)==0;if(f){v=57;break}else h=h<<((f^1)&1)}}while(0);if((v|0)==57){if((d|0)==0&(a|0)==0){a=2<<j;a=k&(a|0-a);if(!a){n=m;break}o=(a&0-a)+-1|0;i=o>>>12&16;o=o>>>i;h=o>>>5&8;o=o>>>h;j=o>>>2&4;o=o>>>j;n=o>>>1&2;o=o>>>n;d=o>>>1&1;a=0;d=c[170504+((h|i|j|n|d)+(o>>>d)<<2)>>2]|0}if(!d){i=a;h=e}else v=61}if((v|0)==61)while(1){v=0;n=(c[d+4>>2]&-8)-m|0;o=n>>>0<e>>>0;e=o?n:e;a=o?d:a;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){i=a;h=e;break}else v=61}if((i|0)!=0?h>>>0<((c[42552]|0)-m|0)>>>0:0){g=i+m|0;if(g>>>0<=i>>>0){w=0;l=x;return w|0}f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0}else{w=c[i+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(f){a=c[i+28>>2]|0;d=170504+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=k&~(1<<a);c[42551]=e;break}}else{c[f+16+(((c[f+16>>2]|0)!=(i|0)&1)<<2)>>2]=b;if(!b){e=k;break}}c[b+24>>2]=f;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b;e=k}else e=k}else e=k;while(0);do if(h>>>0>=16){c[i+4>>2]=m|3;c[g+4>>2]=h|1;c[g+h>>2]=h;b=h>>>3;if(h>>>0<256){d=170240+(b<<1<<2)|0;a=c[42550]|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=g;c[b+12>>2]=g;c[g+8>>2]=b;c[g+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;d=170504+(b<<2)|0;c[g+28>>2]=b;a=g+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<<b;if(!(e&a)){c[42551]=e|a;c[d>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=c[d>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(h|0)){v=97;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=96;break}else{a=a<<1;d=b}}if((v|0)==96){c[e>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}else if((v|0)==97){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=g;c[v>>2]=g;c[g+8>>2]=w;c[g+12>>2]=d;c[g+24>>2]=0;break}}else{w=h+m|0;c[i+4>>2]=w|3;w=i+w+4|0;c[w>>2]=c[w>>2]|1}while(0);w=i+8|0;l=x;return w|0}else n=m}else n=m}else n=-1;while(0);d=c[42552]|0;if(d>>>0>=n>>>0){b=d-n|0;a=c[42555]|0;if(b>>>0>15){w=a+n|0;c[42555]=w;c[42552]=b;c[w+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=n|3}else{c[42552]=0;c[42555]=0;c[a+4>>2]=d|3;w=a+d+4|0;c[w>>2]=c[w>>2]|1}w=a+8|0;l=x;return w|0}i=c[42553]|0;if(i>>>0>n>>>0){u=i-n|0;c[42553]=u;w=c[42556]|0;v=w+n|0;c[42556]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}if(!(c[42668]|0)){c[42670]=4096;c[42669]=4096;c[42671]=-1;c[42672]=-1;c[42673]=0;c[42661]=0;c[42668]=p&-16^1431655768;a=4096}else a=c[42670]|0;j=n+48|0;k=n+47|0;h=a+k|0;f=0-a|0;m=h&f;if(m>>>0<=n>>>0){w=0;l=x;return w|0}a=c[42660]|0;if(a|0?(o=c[42658]|0,p=o+m|0,p>>>0<=o>>>0|p>>>0>a>>>0):0){w=0;l=x;return w|0}b:do if(!(c[42661]&4)){d=c[42556]|0;c:do if(d){e=170648;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(s=e+4|0,(a+(c[s>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=h-i&f;if(b>>>0<2147483647){a=WN(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[s>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;v=135;break b}}else{e=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){d=WN(0)|0;if((d|0)!=(-1|0)?(b=d,q=c[42669]|0,r=q+-1|0,b=((r&b|0)==0?0:(r+b&0-q)-b|0)+m|0,q=c[42658]|0,r=b+q|0,b>>>0>n>>>0&b>>>0<2147483647):0){s=c[42660]|0;if(s|0?r>>>0<=q>>>0|r>>>0>s>>>0:0){b=0;break}a=WN(b|0)|0;if((a|0)==(d|0)){h=b;g=d;v=135;break b}else{e=a;v=126}}else b=0}while(0);do if((v|0)==126){d=0-b|0;if(!(j>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;v=135;break b}a=c[42670]|0;a=k-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;v=135;break b}if((WN(a|0)|0)==(-1|0)){WN(d|0)|0;b=0;break}else{h=a+b|0;g=e;v=135;break b}}while(0);c[42661]=c[42661]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?m>>>0<2147483647:0)?(g=WN(m|0)|0,s=WN(0)|0,t=s-g|0,u=t>>>0>(n+40|0)>>>0,!((g|0)==(-1|0)|u^1|g>>>0<s>>>0&((g|0)!=(-1|0)&(s|0)!=(-1|0))^1)):0){h=u?t:b;v=135}if((v|0)==135){b=(c[42658]|0)+h|0;c[42658]=b;if(b>>>0>(c[42659]|0)>>>0)c[42659]=b;j=c[42556]|0;do if(j){b=170648;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){v=143;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((v|0)==143?(c[b+12>>2]&8|0)==0:0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[d>>2]=e+h;w=(c[42553]|0)+h|0;u=j+8|0;u=(u&7|0)==0?0:0-u&7;v=j+u|0;u=w-u|0;c[42556]=v;c[42553]=u;c[v+4>>2]=u|1;c[j+w+4>>2]=40;c[42557]=c[42672];break}if(g>>>0<(c[42554]|0)>>>0)c[42554]=g;a=g+h|0;b=170648;while(1){if((c[b>>2]|0)==(a|0)){v=151;break}b=c[b+8>>2]|0;if(!b){a=170648;break}}if((v|0)==151)if(!(c[b+12>>2]&8)){c[b>>2]=g;m=b+4|0;c[m>>2]=(c[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;k=m+n|0;i=b-m-n|0;c[m+4>>2]=n|3;do if((j|0)!=(b|0)){if((c[42555]|0)==(b|0)){w=(c[42552]|0)+i|0;c[42552]=w;c[42555]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;d:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[42550]=c[42550]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=170504+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{c[e>>2]=a;if(a|0)break;c[42551]=c[42551]&~(1<<d);break d}while(0);c[a+24>>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=170240+(b<<1<<2)|0;a=c[42550]|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=170504+(b<<2)|0;c[k+28>>2]=b;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[42551]|0;d=1<<b;if(!(a&d)){c[42551]=a|d;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){v=192;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=191;break}else{a=a<<1;d=b}}if((v|0)==191){c[e>>2]=k;c[k+24>>2]=d;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((v|0)==192){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=k;c[v>>2]=k;c[k+8>>2]=w;c[k+12>>2]=d;c[k+24>>2]=0;break}}else{w=(c[42553]|0)+i|0;c[42553]=w;c[42556]=k;c[k+4>>2]=w|1}while(0);w=m+8|0;l=x;return w|0}else a=170648;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0<f>>>0?j:a;b=a+8|0;d=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=d-u|0;c[42556]=v;c[42553]=u;c[v+4>>2]=u|1;c[g+d+4>>2]=40;c[42557]=c[42672];d=a+4|0;c[d>>2]=27;c[b>>2]=c[42662];c[b+4>>2]=c[42663];c[b+8>>2]=c[42664];c[b+12>>2]=c[42665];c[42662]=g;c[42663]=h;c[42665]=0;c[42664]=b;b=a+24|0;do{v=b;b=b+4|0;c[b>>2]=7}while((v+8|0)>>>0<w>>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=170240+(b<<1<<2)|0;a=c[42550]|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;d=(w+245760|0)>>>16&2;d=14-(u|v|d)+(w<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=170504+(d<<2)|0;c[j+28>>2]=d;c[j+20>>2]=0;c[f>>2]=0;b=c[42551]|0;a=1<<d;if(!(b&a)){c[42551]=b|a;c[e>>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){v=213;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=212;break}else{a=a<<1;d=b}}if((v|0)==212){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((v|0)==213){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=j;c[v>>2]=j;c[j+8>>2]=w;c[j+12>>2]=d;c[j+24>>2]=0;break}}}else{w=c[42554]|0;if((w|0)==0|g>>>0<w>>>0)c[42554]=g;c[42662]=g;c[42663]=h;c[42665]=0;c[42559]=c[42668];c[42558]=-1;c[42563]=170240;c[42562]=170240;c[42565]=170248;c[42564]=170248;c[42567]=170256;c[42566]=170256;c[42569]=170264;c[42568]=170264;c[42571]=170272;c[42570]=170272;c[42573]=170280;c[42572]=170280;c[42575]=170288;c[42574]=170288;c[42577]=170296;c[42576]=170296;c[42579]=170304;c[42578]=170304;c[42581]=170312;c[42580]=170312;c[42583]=170320;c[42582]=170320;c[42585]=170328;c[42584]=170328;c[42587]=170336;c[42586]=170336;c[42589]=170344;c[42588]=170344;c[42591]=170352;c[42590]=170352;c[42593]=170360;c[42592]=170360;c[42595]=170368;c[42594]=170368;c[42597]=170376;c[42596]=170376;c[42599]=170384;c[42598]=170384;c[42601]=170392;c[42600]=170392;c[42603]=170400;c[42602]=170400;c[42605]=170408;c[42604]=170408;c[42607]=170416;c[42606]=170416;c[42609]=170424;c[42608]=170424;c[42611]=170432;c[42610]=170432;c[42613]=170440;c[42612]=170440;c[42615]=170448;c[42614]=170448;c[42617]=170456;c[42616]=170456;c[42619]=170464;c[42618]=170464;c[42621]=170472;c[42620]=170472;c[42623]=170480;c[42622]=170480;c[42625]=170488;c[42624]=170488;w=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=w-u|0;c[42556]=v;c[42553]=u;c[v+4>>2]=u|1;c[g+w+4>>2]=40;c[42557]=c[42672]}while(0);b=c[42553]|0;if(b>>>0>n>>>0){u=b-n|0;c[42553]=u;w=c[42556]|0;v=w+n|0;c[42556]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}}c[(jJ()|0)>>2]=12;w=0;l=x;return w|0}function _I(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[42554]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0<f>>>0)return;if((c[42555]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[42552]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[42550]=c[42550]&~(1<<d);i=h;b=g;break}else{c[a+12>>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=170504+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[42551]=c[42551]&~(1<<b);i=h;b=g;break}}else{c[f+16+(((c[f+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[42556]|0)==(j|0)){j=(c[42553]|0)+b|0;c[42553]=j;c[42556]=i;c[i+4>>2]=j|1;if((i|0)!=(c[42555]|0))return;c[42555]=0;c[42552]=0;return}if((c[42555]|0)==(j|0)){j=(c[42552]|0)+b|0;c[42552]=j;c[42555]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[42550]=c[42550]&~(1<<d);break}else{c[b+12>>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){d=j+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=170504+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[42551]=c[42551]&~(1<<a);break}}else{c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[42555]|0)){c[42552]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=170240+(a<<1<<2)|0;b=c[42550]|0;a=1<<a;if(!(b&a)){c[42550]=b|a;a=d;b=d+8|0}else{b=d+8|0;a=c[b>>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<<h;g=(j+520192|0)>>>16&4;j=j<<g;a=(j+245760|0)>>>16&2;a=14-(g|h|a)+(j<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=170504+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;b=c[42551]|0;d=1<<a;do if(b&d){b=f<<((a|0)==31?0:25-(a>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){a=73;break}e=d+16+(b>>>31<<2)|0;a=c[e>>2]|0;if(!a){a=72;break}else{b=b<<1;d=a}}if((a|0)==72){c[e>>2]=i;c[i+24>>2]=d;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((a|0)==73){h=d+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=d;c[i+24>>2]=0;break}}else{c[42551]=b|d;c[e>>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i}while(0);j=(c[42558]|0)+-1|0;c[42558]=j;if(!j)a=170656;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[42558]=-1;return}function $I(a,b){a=a|0;b=b|0;var d=0;if(a){d=O(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=ZI(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;VN(a|0,0,d|0)|0;return a|0}function aJ(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=ZI(b)|0;return b|0}if(b>>>0>4294967231){c[(jJ()|0)>>2]=12;b=0;return b|0}d=bJ(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=ZI(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;TN(d|0,a|0,(e>>>0<b>>>0?e:b)|0)|0;_I(a);b=d;return b|0}function bJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[42670]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;cJ(k,d);return a|0}if((c[42556]|0)==(i|0)){k=(c[42553]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[42556]=e;c[42553]=d;return a|0}if((c[42555]|0)==(i|0)){e=(c[42552]|0)+d|0;if(e>>>0<b>>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[42552]=d;c[42555]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0<b>>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[42550]=c[42550]&~(1<<f);break}else{c[e+12>>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){f=i+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){f=0;break}else g=f}else g=e;while(1){f=d+20|0;e=c[f>>2]|0;if(e|0){d=e;g=f;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}c[g>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=170504+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[42551]=c[42551]&~(1<<d);break}}else{c[h+16+(((c[h+16>>2]|0)!=(i|0)&1)<<2)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=j|m&1|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;cJ(i,k);return a|0}return 0}function cJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[42555]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[42552]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[42550]=c[42550]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){e=h+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=170504+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[42551]=c[42551]&~(1<<d);break}}else{c[g+16+(((c[g+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[42556]|0)==(i|0)){i=(c[42553]|0)+b|0;c[42553]=i;c[42556]=h;c[h+4>>2]=i|1;if((h|0)!=(c[42555]|0))return;c[42555]=0;c[42552]=0;return}if((c[42555]|0)==(i|0)){i=(c[42552]|0)+b|0;c[42552]=i;c[42555]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[42550]=c[42550]&~(1<<d);break}else{c[a+12>>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){d=i+16|0;a=d+4|0;b=c[a>>2]|0;if(!b){b=c[d>>2]|0;if(!b){d=0;break}else a=d}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=170504+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[42551]=c[42551]&~(1<<b);break}}else{c[g+16+(((c[g+16>>2]|0)!=(i|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[42555]|0)){c[42552]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=170240+(b<<1<<2)|0;a=c[42550]|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)b=31;else{g=(b+1048320|0)>>>16&8;i=b<<g;e=(i+520192|0)>>>16&4;i=i<<e;b=(i+245760|0)>>>16&2;b=14-(e|g|b)+(i<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}else b=0;e=170504+(b<<2)|0;c[h+28>>2]=b;c[h+20>>2]=0;c[h+16>>2]=0;a=c[42551]|0;d=1<<b;if(!(a&d)){c[42551]=a|d;c[e>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;return}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){b=69;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){b=68;break}else{a=a<<1;d=b}}if((b|0)==68){c[e>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;return}else if((b|0)==69){g=d+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=d;c[h+24>>2]=0;return}}function dJ(a,b){a=a|0;b=b|0;if(a>>>0<9){b=ZI(b)|0;return b|0}else{b=eJ(a,b)|0;return b|0}return 0}function eJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){d=16;while(1)if(d>>>0<a>>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(jJ()|0)>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=ZI(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(a+-1&d){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;cJ(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;f=b+g|0;c[a>>2]=g|d&1|2;c[f+4>>2]=i|3;h=b+h+4|0;c[h>>2]=c[h>>2]|1;cJ(f,i)}i=b+8|0;return i|0}function fJ(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=kJ(c[a+60>>2]|0)|0;a=iJ(Da(6,d|0)|0)|0;l=b;return a|0}function gJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+32|0;f=k;i=k+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;c[f>>2]=c[b+60>>2];c[f+4>>2]=i;c[f+8>>2]=2;f=iJ(ua(145,f|0)|0)|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else c[b>>2]=c[b>>2]|f&48^16;l=k;return f|0}function hJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((iJ(ta(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function iJ(a){a=a|0;if(a>>>0>4294963200){c[(jJ()|0)>>2]=0-a;a=-1}return a|0}function jJ(){return 170696}function kJ(a){a=a|0;return a|0}function lJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=9;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,Ca(54,f|0)|0):0)a[b+75>>0]=-1;f=mJ(b,d,e)|0;l=g;return f|0}function mJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=iJ(va(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=b+(o<<31>>31)|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=iJ(va(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function nJ(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=iJ(Ea(91,e|0)|0)|0;l=d;return b|0}function oJ(){return}function pJ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=l;l=l+32|0;h=i;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){c[(jJ()|0)>>2]=12;a=-1;break}c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;a=iJ(wa(192,h|0)|0)|0}else{c[(jJ()|0)>>2]=22;a=-1}while(0);l=i;return a|0}function qJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(rJ(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=O(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function rJ(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function sJ(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[125833+g>>0]|0)==(b|0)){b=2;break}f=g+1|0;if((f|0)==87){f=125921;g=87;b=5;break}else g=f}if((b|0)==2)if(!g)f=125921;else{f=125921;b=5}if((b|0)==5)while(1){do{b=f;f=f+1|0}while((a[b>>0]|0)!=0);g=g+-1|0;if(!g)break;else b=5}return tJ(f,c[e+20>>2]|0)|0}function tJ(a,b){a=a|0;b=b|0;return uJ(a,b)|0}function uJ(a,b){a=a|0;b=b|0;if(!b)b=0;else b=vJ(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function vJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=wJ(c[b+8>>2]|0,o)|0;f=wJ(c[b+12>>2]|0,o)|0;g=wJ(c[b+16>>2]|0,o)|0;a:do if((h>>>0<d>>>2>>>0?(n=d-(h<<2)|0,f>>>0<n>>>0&g>>>0<n>>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=wJ(c[b+(g<<2)>>2]|0,o)|0;g=wJ(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0<d>>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=xJ(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:k;h=f?j:h-j|0}}f=i+m|0;g=wJ(c[b+(f<<2)>>2]|0,o)|0;f=wJ(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0<d>>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function wJ(a,b){a=a|0;b=b|0;var c=0;c=QN(a|0)|0;return ((b|0)==0?a:c)|0}function xJ(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function yJ(a){a=a|0;return sJ(a,c[(zJ()|0)+188>>2]|0)|0}function zJ(){return AJ()|0}function AJ(){return 55800}function BJ(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0;f=a*a;d=f*(f*f)*(f*1.58969099521155e-10+-2.5050760253406863e-08)+(f*(f*2.7557313707070068e-06+-1.984126982985795e-04)+.00833333333332249);e=f*a;if(!c)a=e*(f*d+-.16666666666666632)+a;else a=a-(e*.16666666666666632+(f*(b*.5-e*d)-b));return +a}function CJ(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;m=+h[j>>3]+-1.0;k=m*(m*.5);i=m/(m+2.0);l=i*i;g=l*l;h[j>>3]=m-k;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=m-a-k+i*(k+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));l=a*1.4426950407214463;k=+(e+(f>>>20)|0);i=l+k;a=i+(l+(k-i)+(g*1.4426950407214463+(g+a)*1.6751713164886512e-10))}return +a}function DJ(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=NN(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){a=+DJ(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;a=+h[j>>3]}}return +a}function EJ(a,b){a=+a;b=+b;var c=0.0,d=0.0,e=0.0,f=0.0;c=a*a;d=c*c;e=c*.5;f=1.0-e;return +(f+(1.0-f-e+(c*(c*(c*(c*2.480158728947673e-05+-.001388888888887411)+.0416666666666666)+d*d*(c*(2.087572321298175e-09-c*1.1359647557788195e-11)+-2.7557314351390663e-07))-a*b)))}function FJ(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;k=+h[j>>3]+-1.0;i=k*(k*.5);l=k/(k+2.0);m=l*l;g=m*m;h[j>>3]=k-i;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=k-a-i+l*(i+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=a*.4342944818781689;i=+(e+(f>>>20)|0);l=i*.30102999566361177;k=l+m;a=k+(m+(l-k)+(g*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function GJ(a,b){a=+a;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+48|0;m=r+16|0;n=r;h[j>>3]=a;d=c[j>>2]|0;i=c[j+4>>2]|0;o=NN(d|0,i|0,63)|0;q=i&2147483647;do if(q>>>0<1074752123)if((i&1048575|0)!=598523){d=(o|0)!=0;if(q>>>0<1073928573)if(d){g=a+1.5707963267341256;k=g+6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+6.077100506506192e-11;d=-1;break}else{g=a+-1.5707963267341256;k=g+-6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+-6.077100506506192e-11;d=1;break}else if(d){g=a+3.1415926534682512;k=g+1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.2154201013012384e-10;d=-2;break}else{g=a+-3.1415926534682512;k=g+-1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.2154201013012384e-10;d=2;break}}else p=21;else{if(q>>>0<1075594812)if(q>>>0<1075183037){if((q|0)==1074977148){p=21;break}if(!o){g=a+-4.712388980202377;k=g+-1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.8231301519518578e-10;d=3;break}else{g=a+4.712388980202377;k=g+1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.8231301519518578e-10;d=-3;break}}else{if((q|0)==1075388923){p=21;break}if(!o){g=a+-6.2831853069365025;k=g+-2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+-2.430840202602477e-10;d=4;break}else{g=a+6.2831853069365025;k=g+2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+2.430840202602477e-10;d=-4;break}}if(q>>>0>=1094263291){if(q>>>0>2146435071){k=a-a;h[b+8>>3]=k;h[b>>3]=k;d=0;break}c[j>>2]=d;c[j+4>>2]=i&1048575|1096810496;a=+h[j>>3];d=0;do{k=+(~~a|0);h[m+(d<<3)>>3]=k;a=(a-k)*16777216.0;d=d+1|0}while((d|0)!=2);h[m+16>>3]=a;if(a==0.0){d=1;while(1)if(+h[m+(d<<3)>>3]==0.0)d=d+-1|0;else break}else d=2;d=HJ(m,n,(q>>>20)+-1046|0,d+1|0,1)|0;a=+h[n>>3];if(!o){h[b>>3]=a;h[b+8>>3]=+h[n+8>>3];break}else{h[b>>3]=-a;h[b+8>>3]=-+h[n+8>>3];d=0-d|0;break}}else p=21}while(0);if((p|0)==21){g=a*.6366197723675814+6755399441055744.0+-6755399441055744.0;d=~~g;e=a-g*1.5707963267341256;f=g*6.077100506506192e-11;a=e-f;h[b>>3]=a;h[j>>3]=a;p=NN(c[j>>2]|0,c[j+4>>2]|0,52)|0;i=q>>>20;if((i-(p&2047)|0)>16){f=g*6.077100506303966e-11;k=e-f;f=g*2.0222662487959506e-21-(e-k-f);a=k-f;h[b>>3]=a;h[j>>3]=a;q=NN(c[j>>2]|0,c[j+4>>2]|0,52)|0;s=g*2.0222662487111665e-21;e=k-s;g=g*8.4784276603689e-32-(k-e-s);if((i-(q&2047)|0)>49){a=e-g;h[b>>3]=a;f=g}else e=k}h[b+8>>3]=e-a-f}l=r;return d|0}function HJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+560|0;C=H+480|0;z=H+320|0;G=H+160|0;E=H;D=c[56044+(f<<2)>>2]|0;p=e+-1|0;y=(d+-3|0)/24|0;y=(y|0)>0?y:0;B=O(y,-24)|0;j=d+-24+B|0;if((D+p|0)>=0){n=D+e|0;k=y-p|0;m=0;while(1){if((k|0)<0)g=0.0;else g=+(c[56060+(k<<2)>>2]|0);h[z+(m<<3)>>3]=g;m=m+1|0;if((m|0)==(n|0))break;else k=k+1|0}}o=(e|0)>0;n=0;while(1){if(o){m=n+p|0;g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(D|0))n=n+1|0;else break}t=(j|0)>0;u=24-j|0;v=23-j|0;w=(e|0)>0;x=(j|0)==0;k=D;a:while(1){g=+h[E+(k<<3)>>3];o=(k|0)>0;if(o){m=k;n=0;while(1){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(n<<2)>>2]=~~(g-i*16777216.0);s=m;m=m+-1|0;g=+h[E+(m<<3)>>3]+i;if((s|0)<=1)break;else n=n+1|0}}g=+IJ(g,j);g=g-+A(+(g*.125))*8.0;m=~~g;g=g-+(m|0);do if(!t)if(!x)if(!(g>=.5)){p=0;s=m;break}else{n=2;F=20;break}else{n=c[C+(k+-1<<2)>>2]>>23;F=19;break}else{s=C+(k+-1<<2)|0;n=c[s>>2]|0;F=n>>u;n=n-(F<<u)|0;c[s>>2]=n;n=n>>v;m=F+m|0;F=19}while(0);if((F|0)==19){F=0;if((n|0)>0)F=20;else{p=n;s=m}}if((F|0)==20){F=0;s=m+1|0;if(o){m=0;r=0;do{p=C+(r<<2)|0;q=c[p>>2]|0;if(!m)if(!q)m=0;else{m=1;o=16777216;F=23}else{o=16777215;F=23}if((F|0)==23){F=0;c[p>>2]=o-q}r=r+1|0}while((r|0)!=(k|0))}else m=0;b:do if(t){switch(j|0){case 1:{o=8388607;break}case 2:{o=4194303;break}default:break b}r=C+(k+-1<<2)|0;c[r>>2]=c[r>>2]&o}while(0);if((n|0)==2){g=1.0-g;if(!m)p=2;else{p=2;g=g-+IJ(1.0,j)}}else p=n}if(!(g==0.0)){F=42;break}if((k|0)>(D|0)){m=0;n=k;do{n=n+-1|0;m=c[C+(n<<2)>>2]|m}while((n|0)>(D|0));if(m){F=41;break}else m=1}else m=1;while(1)if(!(c[C+(D-m<<2)>>2]|0))m=m+1|0;else break;o=m+k|0;if((m|0)<=0){k=o;continue}while(1){n=k+1|0;m=k+e|0;h[z+(m<<3)>>3]=+(c[56060+(n+y<<2)>>2]|0);if(w){g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(o|0))k=n;else{k=o;continue a}}}if((F|0)==41)while(1){F=0;j=j+-24|0;k=k+-1|0;if(!(c[C+(k<<2)>>2]|0))F=41;else{o=k;break}}else if((F|0)==42){g=+IJ(g,0-j|0);if(g>=16777216.0){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(k<<2)>>2]=~~(g-i*16777216.0);j=B+d|0;k=k+1|0;g=i}c[C+(k<<2)>>2]=~~g;o=k}g=+IJ(1.0,j);n=(o|0)>-1;if(n){j=o;while(1){h[E+(j<<3)>>3]=g*+(c[C+(j<<2)>>2]|0);if((j|0)>0){g=g*5.9604644775390625e-08;j=j+-1|0}else break}if(n){k=o;while(1){m=o-k|0;j=0;g=0.0;while(1){g=g+ +h[10840+(j<<3)>>3]*+h[E+(j+k<<3)>>3];if((j|0)>=(D|0)|(j|0)>=(m|0))break;else j=j+1|0}h[G+(m<<3)>>3]=g;if((k|0)>0)k=k+-1|0;else break}}}switch(f|0){case 0:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;i=(p|0)==0?g:-g;F=72;break}case 2:case 1:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;k=(p|0)==0;h[b>>3]=k?g:-g;g=+h[G>>3]-g;if((o|0)>=1){j=1;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)==(o|0))break;else j=j+1|0}}i=k?g:-g;b=b+8|0;F=72;break}case 3:{if((o|0)>0){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;i=+h[E>>3];I=g;g=i+g;h[G+(F<<3)>>3]=I+(i-g);h[E>>3]=g}while((F|0)>1);k=(o|0)>1;if(k){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;I=+h[E>>3];i=g;g=I+g;h[G+(F<<3)>>3]=i+(I-g);h[E>>3]=g}while((F|0)>2);if(k){j=o;i=0.0;while(1){i=i+ +h[G+(j<<3)>>3];if((j|0)>2)j=j+-1|0;else break}}else i=0.0}else i=0.0}else i=0.0;g=+h[G>>3];if(!p){h[b>>3]=g;g=+h[G+8>>3]}else{h[b>>3]=-g;i=-i;g=-+h[G+8>>3]}h[b+8>>3]=g;b=b+16|0;F=72;break}default:{}}if((F|0)==72)h[b>>3]=i;l=H;return s&7|0}function IJ(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=ON(b+1023|0,0,52)|0;e=z;c[j>>2]=d;c[j+4>>2]=e;return +(a*+h[j>>3])}function JJ(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0.0;h[j>>3]=a;d=c[j+4>>2]|0;b=d&2147483647;do if(b>>>0>2146435071)a=a+a;else{if(b>>>0<1048576){h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;b=d&2147483647;if(!b)break;else e=696219795}else e=715094163;c[j>>2]=0;c[j+4>>2]=((b>>>0)/3|0)+e|d&-2147483648;f=+h[j>>3];g=f*f*(f/a);h[j>>3]=(g*(g*g)*(g*.14599619288661245+-.758397934778766)+(g*(g*1.6214297201053545+-1.8849797954337717)+1.87595182427177))*f;d=HN(c[j>>2]|0,c[j+4>>2]|0,-2147483648,0)|0;e=z;c[j>>2]=d&-1073741824;c[j+4>>2]=e;f=+h[j>>3];a=a/(f*f);a=(a-f)/(f+f+a)*f+f}while(0);return +a}function KJ(a,b){a=+a;b=+b;var d=0,e=0;h[j>>3]=a;e=c[j>>2]|0;d=c[j+4>>2]|0;h[j>>3]=b;d=c[j+4>>2]&-2147483648|d&2147483647;c[j>>2]=e;c[j+4>>2]=d;return +(+h[j>>3])}function LJ(a,b){a=+a;b=+b;return +(+KJ(a,b))}function MJ(a,b){a=+a;b=b|0;return +(+IJ(a,b))}function NJ(a,b){a=+a;b=+b;return +(+OJ(a,b))}function OJ(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h[j>>3]=a;i=c[j>>2]|0;l=c[j+4>>2]|0;h[j>>3]=b;n=c[j>>2]|0;o=c[j+4>>2]|0;e=NN(i|0,l|0,52)|0;e=e&2047;m=NN(n|0,o|0,52)|0;m=m&2047;p=l&-2147483648;g=ON(n|0,o|0,1)|0;k=z;a:do if(!((g|0)==0&(k|0)==0)?(f=PJ(b)|0,d=z&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=ON(i|0,l|0,1)|0;f=z;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>g>>>0))return +((d|0)==(g|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=ON(i|0,l|0,12)|0;f=z;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=ON(d|0,f|0,1)|0;f=z}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;i=ON(i|0,l|0,1-e|0)|0;g=z}else g=l&1048575|1048576;if(!m){f=ON(n|0,o|0,12)|0;k=z;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=ON(f|0,k|0,1)|0;k=z}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=ON(n|0,o|0,1-d|0)|0;m=d;l=z}else l=o&1048575|1048576;f=IN(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=i;d=g}i=ON(f|0,d|0,1)|0;g=z;e=e+-1|0;f=IN(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=g;f=i}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=ON(f|0,d|0,1)|0;d=z;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=HN(f|0,d|0,0,-1048576)|0;d=z;e=ON(e|0,0,52)|0;d=d|z;e=o|e}else{e=NN(f|0,d|0,1-e|0)|0;d=z}c[j>>2]=e;c[j+4>>2]=d|p;b=+h[j>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function PJ(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function QJ(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,g=0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=l;l=l+32|0;m=q+24|0;n=q+16|0;o=q+8|0;p=q;h[j>>3]=a;t=c[j>>2]|0;g=c[j+4>>2]|0;h[j>>3]=b;e=c[j>>2]|0;g=g&2147483647;f=c[j+4>>2]&2147483647;i=g>>>0<f>>>0|(g|0)==(f|0)&t>>>0<e>>>0;s=i?e:t;r=i?f:g;e=i?t:e;f=i?g:f;g=NN(s|0,r|0,52)|0;i=NN(e|0,f|0,52)|0;c[j>>2]=s;c[j+4>>2]=r;a=+h[j>>3];c[j>>2]=e;c[j+4>>2]=f;k=+h[j>>3];do if((i|0)!=2047){if(!((e|0)==0&(f|0)==0|(g|0)==2047)){if((g-i|0)>64){a=a+k;break}if((g|0)>1533){d=5260135901548373507240989.0e186;b=a*1.90109156629516e-211;a=k*1.90109156629516e-211}else{t=(i|0)<573;d=t?1.90109156629516e-211:1.0;b=t?a*5260135901548373507240989.0e186:a;a=t?k*5260135901548373507240989.0e186:k}RJ(m,n,b);RJ(o,p,a);a=d*+C(+(+h[p>>3]+ +h[n>>3]+ +h[o>>3]+ +h[m>>3]))}}else a=k;while(0);l=q;return +a}function RJ(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=c*134217729.0;e=e+(c-e);d=c-e;c=c*c;h[a>>3]=c;h[b>>3]=d*d+(e*e-c+e*2.0*d);return}function SJ(a,b,d){a=+a;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,k=0,m=0;k=l;l=l+16|0;g=k;h[j>>3]=a;f=c[j+4>>2]&2147483647;do if(f>>>0<1072243196)if(f>>>0<1044816030){h[b>>3]=a;h[d>>3]=1.0;break}else{h[b>>3]=+BJ(a,0.0,0);h[d>>3]=+EJ(a,0.0);break}else{if(f>>>0>2146435071){i=a-a;h[d>>3]=i;h[b>>3]=i;break}f=GJ(a,g)|0;m=g+8|0;e=+BJ(+h[g>>3],+h[m>>3],1);a=+EJ(+h[g>>3],+h[m>>3]);switch(f&3){case 0:{h[b>>3]=e;i=a;break}case 1:{h[b>>3]=a;i=-e;break}case 2:{h[b>>3]=-e;i=-a;break}case 3:{h[b>>3]=-a;i=e;break}default:{}}h[d>>3]=i}while(0);l=k;return}function TJ(a,b){a=+a;b=b|0;return +(+DJ(a,b))}function UJ(a){a=a|0;if(a>>>0<131072)a=(d[127725+((d[127725+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=0;return a|0}function VJ(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)f=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);f=(f&255)-(d[c>>0]|0)|0}return f|0}function WJ(b,c){b=b|0;c=c|0;b=qJ(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function XJ(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function YJ(a,b,c){a=a|0;b=b|0;c=c|0;c=$J(a,b,c,-1,0)|0;return c|0}function ZJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=O(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function _J(a){a=a|0;return (a+-48|0)>>>0<10|0}function $J(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+128|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;aK(h,0);d=bK(h,d,1,e,f)|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));l=j;return d|0}function aK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;c[a+100>>2]=(b|0)!=0&(f|0)>(b|0)?e+b|0:d;return}function bK(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(jJ()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0}while((XJ(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=cK(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0;if((d[130894+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){aK(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if(e>>>0>(d[130894+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;aK(b,0);c[(jJ()|0)>>2]=22;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;j=e;do{i=(i*10|0)+j|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;e=d[e>>0]|0}else e=cK(b)|0;j=e+-48|0}while(j>>>0<10&i>>>0<429496729);f=0}else{e=i;i=0;f=0}k=e+-48|0;if(k>>>0<10){j=e;do{e=GN(i|0,f|0,10,0)|0;l=z;m=((k|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&e>>>0>~k>>>0){e=10;n=72;break c}i=HN(e|0,l|0,k|0,m|0)|0;f=z;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=cK(b)|0;k=j+-48|0}while(k>>>0<10&(f>>>0<429496729|(f|0)==429496729&i>>>0<2576980378));if(k>>>0>9){j=p;e=f}else{e=10;n=72}}else{j=p;e=f}}else n=46;while(0);d:do if((n|0)==46){if(!(e+-1&e)){n=a[131150+((e*23|0)>>>5&7)>>0]|0;f=a[130894+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k|i<<n;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=cK(b)|0;f=a[130894+j>>0]|0;k=f&255}while(i>>>0<134217728&e>>>0>k>>>0);k=0}else{j=i;k=0;i=0}l=NN(-1,-1,n|0)|0;m=z;if(e>>>0<=(f&255)>>>0|(m>>>0<k>>>0|(m|0)==(k|0)&l>>>0<i>>>0)){f=k;n=72;break}else j=k;while(1){i=ON(i|0,j|0,n|0)|0;k=z;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=cK(b)|0;f=a[130894+j>>0]|0;if(e>>>0<=(f&255)>>>0|(k>>>0>m>>>0|(k|0)==(m|0)&i>>>0>l>>>0)){f=k;n=72;break d}else j=k}}f=a[130894+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k+(O(i,e)|0)|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=cK(b)|0;f=a[130894+j>>0]|0;k=f&255}while(i>>>0<119304647&e>>>0>k>>>0);k=0}else{j=i;i=0;k=0}if(e>>>0>(f&255)>>>0){n=LN(-1,-1,e|0,0)|0;o=z;m=k;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&i>>>0>n>>>0){f=m;n=72;break d}k=GN(i|0,m|0,e|0,0)|0;l=z;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=m;n=72;break d}i=HN(k|0,l|0,f|0,0)|0;k=z;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=cK(b)|0;f=a[130894+j>>0]|0;if(e>>>0<=(f&255)>>>0){f=k;n=72;break}else m=k}}else{f=k;n=72}}while(0);if((n|0)==72)if(e>>>0>(d[130894+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0}while(e>>>0>(d[130894+i>>0]|0)>>>0);c[(jJ()|0)>>2]=34;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else{j=p;e=f}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0<h>>>0|(e|0)==(h|0)&i>>>0<g>>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){c[(jJ()|0)>>2]=34;g=HN(g|0,h|0,-1,-1)|0;h=z;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){c[(jJ()|0)>>2]=34;break}}g=((j|0)<0)<<31>>31;g=IN(i^j|0,e^g|0,j|0,g|0)|0;h=z}while(0);z=h;return g|0}function cK(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;h=c[f>>2]|0;if((h|0)!=0?(c[b+108>>2]|0)>=(h|0):0)i=4;else{e=dK(b)|0;if((e|0)>=0){g=c[f>>2]|0;f=b+8|0;if(g){j=c[f>>2]|0;h=c[b+4>>2]|0;f=g-(c[b+108>>2]|0)|0;g=j;if((j-h|0)<(f|0))f=g;else f=h+(f+-1)|0}else{g=c[f>>2]|0;f=g}c[b+100>>2]=f;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;j=b+108|0;c[j>>2]=g+1-f+(c[j>>2]|0)}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else i=4}if((i|0)==4){c[b+100>>2]=0;e=-1}return e|0}function dK(a){a=a|0;var b=0,e=0;e=l;l=l+16|0;b=e;if((eK(a)|0)==0?(bb[c[a+32>>2]&31](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;l=e;return a|0}function eK(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)bb[c[b+36>>2]&31](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function fK(a){a=a|0;return (a+-48|0)>>>0<10|0}function gK(a){a=a|0;if(!(hK(a)|0))a=(_J(a)|0)!=0&1;else a=1;return a|0}function hK(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function iK(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;e=a[b>>0]|0;a:do if(!(e<<24>>24))b=0;else{g=b;b=e;f=e&255;while(1){e=a[c>>0]|0;if(!(e<<24>>24))break a;if(b<<24>>24!=e<<24>>24?(f=jK(f)|0,(f|0)!=(jK(d[c>>0]|0)|0)):0)break;b=g+1|0;c=c+1|0;e=a[b>>0]|0;if(!(e<<24>>24)){b=0;break a}else{g=b;b=e;f=e&255}}b=a[g>>0]|0}while(0);g=jK(b&255)|0;return g-(jK(d[c>>0]|0)|0)|0}function jK(a){a=a|0;var b=0;b=(kK(a)|0)==0;return (b?a:a|32)|0}function kK(a){a=a|0;return (a+-65|0)>>>0<26|0}function lK(a){a=a|0;return mK(a,0)|0}function mK(c,f){c=c|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=(f<<1)+-1|0;l=f+-1|0;a:do if(!((c+-43008|0)>>>0<22272|((c+-11776|0)>>>0<30784|((c+-1536|0)>>>0<2560|(nK(c)|0)==0)))){g=(f|0)!=0;if(g&(c+-4256|0)>>>0<46){if((c|0)>4293)switch(c|0){case 4295:case 4301:break;default:break a}c=c+7264|0;break}if((c+-11520|0)>>>0<38&(g^1)){c=c+-7264|0;break}else g=0;do{i=a[59170+(g<<2)+2>>0]|0;j=i<<24>>24;h=c-(e[59170+(g<<2)>>1]|0)|0;if((h-(l&j)|0)>>>0<(d[59170+(g<<2)+3>>0]|0)>>>0){m=11;break}g=g+1|0}while((g|0)!=61);if((m|0)==11)if(i<<24>>24==1){c=f+c-(h&1)|0;break}else{c=(O(k,j)|0)+c|0;break}i=1-f|0;g=b[58682+(i<<1)>>1]|0;b:do if(g<<16>>16){h=0;while(1){if((g&65535|0)==(c|0))break;h=h+1|0;g=b[58682+(h<<2)+(i<<1)>>1]|0;if(!(g<<16>>16))break b}c=e[58682+(h<<2)+(f<<1)>>1]|0;break a}while(0);return ((c+-66600+(f*40|0)|0)>>>0<40?c+-40+(f*80|0)|0:c)|0}while(0);return c|0}function nK(a){a=a|0;if(a>>>0<131072)a=(d[131159+((d[131159+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=a>>>0<196606&1;return a|0}function oK(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function pK(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;if(!e)b=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))b=0;else{h=b;b=f;f=f&255;while(1){e=e+-1|0;g=a[c>>0]|0;if(!((e|0)!=0&g<<24>>24!=0))break a;if(b<<24>>24!=g<<24>>24?(g=jK(f)|0,(g|0)!=(jK(d[c>>0]|0)|0)):0)break;b=h+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){b=0;break a}else{h=b;b=f;f=f&255}}b=a[h>>0]|0}while(0);b=jK(b&255)|0;b=b-(jK(d[c>>0]|0)|0)|0}return b|0}function qK(a){a=a|0;if(a>>>0>=255)if((a+-57344|0)>>>0<8185|(a>>>0<8232|(a+-8234|0)>>>0<47062))a=1;else return (a&65534|0)!=65534&(a+-65532|0)>>>0<1048580&1|0;else a=(a+1&127)>>>0>32&1;return a|0}function rK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;g=k;i=(f|0)==0?170764:f;f=c[i>>2]|0;a:do if(!d)if(!f)f=0;else j=17;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;if(f<<24>>24>-1){c[h>>2]=f&255;f=f<<24>>24!=0&1;break}g=(c[c[(vK()|0)+188>>2]>>2]|0)==0;f=a[d>>0]|0;if(g){c[h>>2]=f<<24>>24&57343;f=1;break}f=(f&255)+-194|0;if(f>>>0>50){j=17;break}f=c[55208+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;j=11}}else{g=e;j=11}b:do if((j|0)==11){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){j=17;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){j=17;break a}}c[i>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[i>>2]=f;f=-2}}while(0);if((j|0)==17){c[i>>2]=0;c[(jJ()|0)>>2]=84;f=-1}l=k;return f|0}function sK(a,b){a=a|0;b=b|0;if(!a)a=0;else a=tK(a,b,0)|0;return a|0}function tK(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(!(c[c[(uK()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{c[(jJ()|0)>>2]=84;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(jJ()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function uK(){return AJ()|0}function vK(){return AJ()|0}function wK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+272|0;n=p+8|0;o=p;do if(!(a[d>>0]|0)){d=Na(134135)|0;if(d|0?a[d>>0]|0:0)break;d=Na(134142+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Na(134214)|0;if(d|0?a[d>>0]|0:0)break;d=134219}while(0);e=0;a:do{switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0}while(e>>>0<15);f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)m=15;else{k=d;m=16}else{d=134219;m=15}if((m|0)==15)if(!(a[d+1>>0]|0))m=18;else{k=d;m=16}b:do if((m|0)==16)if((xJ(k,134219)|0)!=0?(xJ(k,134227)|0)!=0:0){d=c[42692]|0;if(d|0)do{if(!(xJ(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);pa(170772);d=c[42692]|0;c:do if(d|0){while(1){if(!(xJ(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}Fa(170772);break b}while(0);d:do if(((c[42677]|0)==0?(g=Na(134233)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=qJ(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0<i>>>0){TN(n|0,f|0,g|0)|0;f=n+g|0;a[f>>0]=47;TN(f+1|0,k|0,e|0)|0;a[n+(j+g)>>0]=0;f=qa(n|0,o|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){m=41;break d}}d=ZI(28)|0;if(!d){nJ(f,c[o>>2]|0)|0;m=41;break}else{c[d>>2]=f;c[d+4>>2]=c[o>>2];o=d+8|0;TN(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[42692];c[42692]=d;break}}else m=41;while(0);if((m|0)==41){d=ZI(28)|0;if(d){c[d>>2]=c[13790];c[d+4>>2]=c[13791];o=d+8|0;TN(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[42692];c[42692]=d}}Fa(170772);d=(b|0)==0&(d|0)==0?55160:d}else{d=k;m=18}while(0);do if((m|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=55160;break}d=0}while(0);l=p;return d|0}function xK(a,b){a=a|0;b=b|0;yK(a,b)|0;return a|0}function yK(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function zK(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function AK(a){a=a|0;if(!a)a=0;else a=(BK(56324,a)|0)!=0&1;return a|0}function BK(a,b){a=a|0;b=b|0;var d=0;if(!b)a=a+((oK(a)|0)<<2)|0;else{while(1){d=c[a>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else a=a+4|0}a=d|0?a:0}return a|0}function CK(a,b){a=a|0;b=b|0;do switch(b|0){case 1:{a=DK(a)|0;break}case 2:{a=nK(a)|0;break}case 3:{a=EK(a)|0;break}case 4:{a=FK(a)|0;break}case 5:{a=fK(a)|0;break}case 6:{a=GK(a)|0;break}case 7:{a=HK(a)|0;break}case 8:{a=qK(a)|0;break}case 9:{a=UJ(a)|0;break}case 10:{a=AK(a)|0;break}case 11:{a=IK(a)|0;break}case 12:{a=JK(a)|0;break}default:a=0}while(0);return a|0}function DK(a){a=a|0;if(!(fK(a)|0))a=(nK(a)|0)!=0&1;else a=1;return a|0}function EK(a){a=a|0;return zK(a)|0}function FK(a){a=a|0;return ((a+-65529|0)>>>0<3|((a&-2|0)==8232|(a>>>0<32|(a+-127|0)>>>0<33)))&1|0}function GK(a){a=a|0;if(!(AK(a)|0))a=(qK(a)|0)!=0&1;else a=0;return a|0}function HK(a){a=a|0;return (lK(a)|0)!=(a|0)|0}function IK(a){a=a|0;return (KK(a)|0)!=(a|0)|0}function JK(a){a=a|0;return ((a+-48|0)>>>0<10|((a|32)+-97|0)>>>0<6)&1|0}function KK(a){a=a|0;return mK(a,1)|0}function LK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;g=n+124|0;m=n;h=m;i=56412;j=h+124|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;k=4}else{c[(jJ()|0)>>2]=75;d=-1}else k=4;if((k|0)==4){k=-2-b|0;k=d>>>0>k>>>0?k:d;c[m+48>>2]=k;g=m+20|0;c[g>>2]=b;c[m+44>>2]=b;d=b+k|0;b=m+16|0;c[b>>2]=d;c[m+28>>2]=d;d=MK(m,e,f)|0;if(k){m=c[g>>2]|0;a[m+(((m|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}l=n;return d|0}function MK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+224|0;n=s+120|0;p=s+80|0;q=s;r=s+136|0;f=p;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[n>>2]=c[e>>2];if((NK(0,d,n,q,p)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=OK(b)|0;else o=0;e=c[b>>2]|0;m=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;f=b+48|0;if(!(c[f>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=r;i=b+28|0;c[i>>2]=r;j=b+20|0;c[j>>2]=r;c[f>>2]=80;k=b+16|0;c[k>>2]=r+80;e=NK(b,d,n,q,p)|0;if(h){bb[c[b+36>>2]&31](b,0,0)|0;e=(c[j>>2]|0)==0?-1:e;c[g>>2]=h;c[f>>2]=0;c[k>>2]=0;c[i>>2]=0;c[j>>2]=0}}else e=NK(b,d,n,q,p)|0;f=c[b>>2]|0;c[b>>2]=f|m;if(o|0)PK(b);e=(f&32|0)==0?e:-1}l=s;return e|0}function NK(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=l;l=l+64|0;D=I+16|0;E=I;A=I+24|0;G=I+8|0;H=I+20|0;c[D>>2]=e;w=(d|0)!=0;x=A+40|0;y=x;A=A+39|0;B=G+4|0;j=0;e=0;m=0;a:while(1){do if((e|0)>-1)if((j|0)>(2147483647-e|0)){c[(jJ()|0)>>2]=75;e=-1;break}else{e=j+e|0;break}while(0);r=c[D>>2]|0;j=a[r>>0]|0;if(!(j<<24>>24)){v=88;break}else k=r;b:while(1){switch(j<<24>>24){case 37:{j=k;v=9;break b}case 0:{j=k;break b}default:{}}u=k+1|0;c[D>>2]=u;j=a[u>>0]|0;k=u}c:do if((v|0)==9)while(1){v=0;if((a[k+1>>0]|0)!=37)break c;j=j+1|0;k=k+2|0;c[D>>2]=k;if((a[k>>0]|0)!=37)break;else v=9}while(0);j=j-r|0;if(w)QK(d,r,j);if(j|0)continue;u=(_J(a[(c[D>>2]|0)+1>>0]|0)|0)==0;k=c[D>>2]|0;if(!u?(a[k+2>>0]|0)==36:0){s=(a[k+1>>0]|0)+-48|0;n=1;j=3}else{s=-1;n=m;j=1}j=k+j|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0;if(u>>>0>31|(1<<u&75913|0)==0)m=0;else{m=0;do{m=1<<(k<<24>>24)+-32|m;j=j+1|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0}while(!(u>>>0>31|(1<<u&75913|0)==0))}if(k<<24>>24==42){if((_J(a[j+1>>0]|0)|0)!=0?(F=c[D>>2]|0,(a[F+2>>0]|0)==36):0){j=F+1|0;c[i+((a[j>>0]|0)+-48<<2)>>2]=10;j=c[g+((a[j>>0]|0)+-48<<3)>>2]|0;k=1;n=F+3|0}else{if(n|0){e=-1;break}if(w){u=(c[f>>2]|0)+(4-1)&~(4-1);j=c[u>>2]|0;c[f>>2]=u+4}else j=0;k=0;n=(c[D>>2]|0)+1|0}c[D>>2]=n;t=(j|0)<0;u=t?0-j|0:j;m=t?m|8192:m;t=k;j=n}else{j=RK(D)|0;if((j|0)<0){e=-1;break}u=j;t=n;j=c[D>>2]|0}do if((a[j>>0]|0)==46){if((a[j+1>>0]|0)!=42){c[D>>2]=j+1;p=RK(D)|0;j=c[D>>2]|0;break}if(_J(a[j+2>>0]|0)|0?(C=c[D>>2]|0,(a[C+3>>0]|0)==36):0){p=C+2|0;c[i+((a[p>>0]|0)+-48<<2)>>2]=10;p=c[g+((a[p>>0]|0)+-48<<3)>>2]|0;j=C+4|0;c[D>>2]=j;break}if(t|0){e=-1;break a}if(w){q=(c[f>>2]|0)+(4-1)&~(4-1);j=c[q>>2]|0;c[f>>2]=q+4}else j=0;q=(c[D>>2]|0)+2|0;c[D>>2]=q;p=j;j=q}else p=-1;while(0);q=0;while(1){if(((a[j>>0]|0)+-65|0)>>>0>57){e=-1;break a}k=j;j=j+1|0;c[D>>2]=j;k=a[(a[k>>0]|0)+-65+(134246+(q*58|0))>>0]|0;n=k&255;if((n+-1|0)>>>0>=8)break;else q=n}if(!(k<<24>>24)){e=-1;break}o=(s|0)>-1;do if(k<<24>>24==19)if(o){e=-1;break a}else v=50;else{if(o){c[i+(s<<2)>>2]=n;o=g+(s<<3)|0;s=c[o+4>>2]|0;v=E;c[v>>2]=c[o>>2];c[v+4>>2]=s;v=50;break}if(!w){e=0;break a}SK(E,n,f);j=c[D>>2]|0}while(0);if((v|0)==50){v=0;if(!w){j=0;m=t;continue}}k=a[j+-1>>0]|0;k=(q|0)!=0&(k&15|0)==3?k&-33:k;j=m&-65537;s=(m&8192|0)==0?m:j;d:do switch(k|0){case 110:switch((q&255)<<24>>24){case 0:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 1:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 2:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}case 3:{b[c[E>>2]>>1]=e;j=0;m=t;continue a}case 4:{a[c[E>>2]>>0]=e;j=0;m=t;continue a}case 6:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 7:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}default:{j=0;m=t;continue a}}case 112:{k=120;j=p>>>0>8?p:8;m=s|8;v=62;break}case 88:case 120:{j=p;m=s;v=62;break}case 111:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;o=UK(j,k,x)|0;m=y-o|0;q=0;n=134710;p=(s&8|0)==0|(p|0)>(m|0)?p:m+1|0;m=s;v=68;break}case 105:case 100:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0){j=IN(0,0,j|0,k|0)|0;k=z;m=E;c[m>>2]=j;c[m+4>>2]=k;m=1;n=134710;v=67;break d}else{m=(s&2049|0)!=0&1;n=(s&2048|0)==0?((s&1|0)==0?134710:134712):134711;v=67;break d}}case 117:{k=E;m=0;n=134710;j=c[k>>2]|0;k=c[k+4>>2]|0;v=67;break}case 99:{a[A>>0]=c[E>>2];r=A;q=0;n=134710;o=x;k=1;break}case 109:{k=yJ(c[(jJ()|0)>>2]|0)|0;v=72;break}case 115:{k=c[E>>2]|0;k=k|0?k:134720;v=72;break}case 67:{c[G>>2]=c[E>>2];c[B>>2]=0;c[E>>2]=G;p=-1;m=G;v=76;break}case 83:{j=c[E>>2]|0;if(!p){WK(d,32,u,0,s);j=0;v=85}else{m=j;v=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{j=XK(d,+h[E>>3],u,p,s,k)|0;m=t;continue a}default:{q=0;n=134710;o=x;k=p;j=s}}while(0);e:do if((v|0)==62){s=E;r=c[s>>2]|0;s=c[s+4>>2]|0;o=TK(r,s,x,k&32)|0;n=(m&8|0)==0|(r|0)==0&(s|0)==0;q=n?0:2;n=n?134710:134710+(k>>4)|0;p=j;j=r;k=s;v=68}else if((v|0)==67){o=VK(j,k,x)|0;q=m;m=s;v=68}else if((v|0)==72){v=0;s=ZJ(k,0,p)|0;m=(s|0)==0;r=k;q=0;n=134710;o=m?k+p|0:s;k=m?p:s-k|0}else if((v|0)==76){v=0;o=m;j=0;k=0;while(1){n=c[o>>2]|0;if(!n)break;k=sK(H,n)|0;if((k|0)<0|k>>>0>(p-j|0)>>>0)break;j=k+j|0;if(p>>>0>j>>>0)o=o+4|0;else break}if((k|0)<0){e=-1;break a}WK(d,32,u,j,s);if(!j){j=0;v=85}else{n=0;while(1){k=c[m>>2]|0;if(!k){v=85;break e}k=sK(H,k)|0;n=k+n|0;if((n|0)>(j|0)){v=85;break e}QK(d,H,k);if(n>>>0>=j>>>0){v=85;break}else m=m+4|0}}}while(0);if((v|0)==68){v=0;k=(j|0)!=0|(k|0)!=0;j=(p|0)!=0|k;k=y-o+((k^1)&1)|0;r=j?o:x;o=x;k=j?((p|0)>(k|0)?p:k):p;j=(p|0)>-1?m&-65537:m}else if((v|0)==85){v=0;WK(d,32,u,j,s^8192);j=(u|0)>(j|0)?u:j;m=t;continue}p=o-r|0;o=(k|0)<(p|0)?p:k;s=o+q|0;m=(u|0)<(s|0)?s:u;WK(d,32,m,s,j);QK(d,n,q);WK(d,48,m,s,j^65536);WK(d,48,o,p,0);QK(d,r,p);WK(d,32,m,s,j^8192);j=m;m=t}f:do if((v|0)==88)if(!d)if(m){e=1;while(1){j=c[i+(e<<2)>>2]|0;if(!j)break;SK(g+(e<<3)|0,j,f);j=e+1|0;if((e|0)<9)e=j;else{e=j;break}}if((e|0)<10)while(1){if(c[i+(e<<2)>>2]|0){e=-1;break f}if((e|0)<9)e=e+1|0;else{e=1;break}}else e=1}else e=0;while(0);l=I;return e|0}function OK(a){a=a|0;return 0}function PK(a){a=a|0;return}function QK(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))ZK(b,d,a)|0;return}function RK(b){b=b|0;var d=0,e=0;if(!(_J(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((_J(a[e>>0]|0)|0)!=0)}return d|0}function SK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function TK(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[134758+(b&15)>>0]|0|f;b=NN(b|0,c|0,4)|0;c=z}while(!((b|0)==0&(c|0)==0));return e|0}function UK(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=NN(b|0,c|0,3)|0;c=z}while(!((b|0)==0&(c|0)==0));return d|0}function VK(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){while(1){e=MN(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e&255|48;e=b;b=LN(b|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=z}c=b}else c=b;if(c)while(1){d=d+-1|0;a[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function WK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;VN(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{QK(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}QK(a,f,e)}l=g;return}function XK(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+560|0;m=H+8|0;u=H;G=H+524|0;F=G;n=H+512|0;c[u>>2]=0;E=n+12|0;YK(e)|0;if((z|0)<0){e=-e;C=1;B=134727}else{C=(h&2049|0)!=0&1;B=(h&2048|0)==0?((h&1|0)==0?134728:134733):134730}YK(e)|0;do if(0==0&(z&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;WK(b,32,f,j,h&-65537);QK(b,B,C);QK(b,e!=e|0.0!=0.0?(G?134895:134754):G?134746:134750,3);WK(b,32,f,j,h^8192)}else{r=+TJ(e,u)*2.0;j=r!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;w=i|32;if((w|0)==97){p=i&32;s=(p|0)==0?B:B+9|0;q=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[s>>0]|0)==45){e=-(e+(-r-e));break}else{e=r+e-e;break}}else e=r;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=VK(j,((j|0)<0)<<31>>31,E)|0;if((j|0)==(E|0)){j=n+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;o=j+-2|0;a[o>>0]=i+15;m=(g|0)<1;n=(h&8|0)==0;j=G;do{D=~~e;k=j+1|0;a[j>>0]=p|d[134758+D>>0];e=(e-+(D|0))*16.0;if((k-F|0)==1?!(n&(m&e==0.0)):0){a[k>>0]=46;j=j+2|0}else j=k}while(e!=0.0);if((g|0)!=0?(-2-F+j|0)<(g|0):0){k=j-F|0;j=g+2|0}else{j=j-F|0;k=j}E=E-o|0;F=E+q+j|0;WK(b,32,f,F,h);QK(b,s,q);WK(b,48,f,F,h^65536);QK(b,G,k);WK(b,48,j-k|0,0,0);QK(b,o,E);WK(b,32,f,F,h^8192);j=F;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=r*268435456.0}else{e=r;j=c[u>>2]|0}D=(j|0)<0?m:m+288|0;m=D;do{y=~~e>>>0;c[m>>2]=y;m=m+4|0;e=(e-+(y>>>0))*1.0e9}while(e!=0.0);if((j|0)>0){n=D;p=m;while(1){o=(j|0)<29?j:29;j=p+-4|0;if(j>>>0>=n>>>0){m=0;do{x=ON(c[j>>2]|0,0,o|0)|0;x=HN(x|0,z|0,m|0,0)|0;y=z;v=MN(x|0,y|0,1e9,0)|0;c[j>>2]=v;m=LN(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=n>>>0);if(m){n=n+-4|0;c[n>>2]=m}}m=p;while(1){if(m>>>0<=n>>>0)break;j=m+-4|0;if(!(c[j>>2]|0))m=j;else break}j=(c[u>>2]|0)-o|0;c[u>>2]=j;if((j|0)>0)p=m;else break}}else n=D;if((j|0)<0){g=((k+25|0)/9|0)+1|0;t=(w|0)==102;do{s=0-j|0;s=(s|0)<9?s:9;if(n>>>0<m>>>0){o=(1<<s)+-1|0;p=1e9>>>s;q=0;j=n;do{y=c[j>>2]|0;c[j>>2]=(y>>>s)+q;q=O(y&o,p)|0;j=j+4|0}while(j>>>0<m>>>0);j=(c[n>>2]|0)==0?n+4|0:n;if(!q){n=j;j=m}else{c[m>>2]=q;n=j;j=m+4|0}}else{n=(c[n>>2]|0)==0?n+4|0:n;j=m}m=t?D:n;m=(j-m>>2|0)>(g|0)?m+(g<<2)|0:j;j=(c[u>>2]|0)+s|0;c[u>>2]=j}while((j|0)<0);j=n;g=m}else{j=n;g=m}y=D;if(j>>>0<g>>>0){m=(y-j>>2)*9|0;o=c[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;m=m+1|0}while(o>>>0>=n>>>0)}}else m=0;t=(w|0)==103;v=(k|0)!=0;n=k-((w|0)!=102?m:0)+((v&t)<<31>>31)|0;if((n|0)<(((g-y>>2)*9|0)+-9|0)){n=n+9216|0;s=D+4+(((n|0)/9|0)+-1024<<2)|0;n=(n|0)%9|0;if((n|0)<8){o=10;while(1){o=o*10|0;if((n|0)<7)n=n+1|0;else break}}else o=10;p=c[s>>2]|0;q=(p>>>0)%(o>>>0)|0;n=(s+4|0)==(g|0);if(!(n&(q|0)==0)){r=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;e=q>>>0<x>>>0?.5:n&(q|0)==(x|0)?1.0:1.5;if(C){x=(a[B>>0]|0)==45;e=x?-e:e;r=x?-r:r}n=p-q|0;c[s>>2]=n;if(r+e!=r){x=n+o|0;c[s>>2]=x;if(x>>>0>999999999){m=s;while(1){n=m+-4|0;c[m>>2]=0;if(n>>>0<j>>>0){j=j+-4|0;c[j>>2]=0}x=(c[n>>2]|0)+1|0;c[n>>2]=x;if(x>>>0>999999999)m=n;else break}}else n=s;m=(y-j>>2)*9|0;p=c[j>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;m=m+1|0}while(p>>>0>=o>>>0)}}else n=s}else n=s;n=n+4|0;n=g>>>0>n>>>0?n:g;x=j}else{n=g;x=j}w=n;while(1){if(w>>>0<=x>>>0){u=0;break}j=w+-4|0;if(!(c[j>>2]|0))w=j;else{u=1;break}}g=0-m|0;do if(t){j=k+((v^1)&1)|0;if((j|0)>(m|0)&(m|0)>-5){o=i+-1|0;k=j+-1-m|0}else{o=i+-2|0;k=j+-1|0}j=h&8;if(!j){if(u?(A=c[w+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){n=0;j=10;do{j=j*10|0;n=n+1|0}while(!((A>>>0)%(j>>>0)|0|0))}else n=0;else n=9;j=((w-y>>2)*9|0)+-9|0;if((o|32|0)==102){s=j-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}else{s=j+m-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}}else s=j}else{o=i;s=h&8}while(0);t=k|s;p=(t|0)!=0&1;q=(o|32|0)==102;if(q){v=0;j=(m|0)>0?m:0}else{j=(m|0)<0?g:m;j=VK(j,((j|0)<0)<<31>>31,E)|0;n=E;if((n-j|0)<2)do{j=j+-1|0;a[j>>0]=48}while((n-j|0)<2);a[j+-1>>0]=(m>>31&2)+43;j=j+-2|0;a[j>>0]=o;v=j;j=n-j|0}j=C+1+k+p+j|0;WK(b,32,f,j,h);QK(b,B,C);WK(b,48,f,j,h^65536);if(q){o=x>>>0>D>>>0?D:x;s=G+9|0;p=s;q=G+8|0;n=o;do{m=VK(c[n>>2]|0,0,s)|0;if((n|0)==(o|0)){if((m|0)==(s|0)){a[q>>0]=48;m=q}}else if(m>>>0>G>>>0){VN(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}QK(b,m,p-m|0);n=n+4|0}while(n>>>0<=D>>>0);if(t|0)QK(b,134774,1);if(n>>>0<w>>>0&(k|0)>0)while(1){m=VK(c[n>>2]|0,0,s)|0;if(m>>>0>G>>>0){VN(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}QK(b,m,(k|0)<9?k:9);n=n+4|0;m=k+-9|0;if(!(n>>>0<w>>>0&(k|0)>9)){k=m;break}else k=m}WK(b,48,k+9|0,9,0)}else{t=u?w:x+4|0;if((k|0)>-1){u=G+9|0;s=(s|0)==0;g=u;p=0-F|0;q=G+8|0;o=x;do{m=VK(c[o>>2]|0,0,u)|0;if((m|0)==(u|0)){a[q>>0]=48;m=q}do if((o|0)==(x|0)){n=m+1|0;QK(b,m,1);if(s&(k|0)<1){m=n;break}QK(b,134774,1);m=n}else{if(m>>>0<=G>>>0)break;VN(G|0,48,m+p|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}while(0);F=g-m|0;QK(b,m,(k|0)>(F|0)?F:k);k=k-F|0;o=o+4|0}while(o>>>0<t>>>0&(k|0)>-1)}WK(b,48,k+18|0,18,0);QK(b,v,E-v|0)}WK(b,32,f,j,h^8192)}while(0);l=H;return ((j|0)<(f|0)?f:j)|0}function YK(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function ZK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(_K(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0<d>>>0){f=bb[c[e+36>>2]&31](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){i=d;while(1){if(!i){h=0;g=b;break b}g=i+-1|0;if((a[b+g>>0]|0)==10)break;else i=g}f=bb[c[e+36>>2]&31](e,b,i)|0;if(f>>>0<i>>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}else{h=0;g=b}while(0);TN(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function _K(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function $K(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;TN(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function aL(b){b=b|0;var c=0,d=0,e=0,f=0;e=a[b>>0]|0;c=1;d=134776;f=97;while(1){if(e<<24>>24==f<<24>>24?(xJ(b,d)|0)==0:0)break;d=d+6|0;f=a[d>>0]|0;if(!(f<<24>>24)){c=0;break}else c=c+1|0}return c|0}function bL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;do if(b>>>0>6)d=0;else{pa(170780);if((b|0)!=6){d=cL(b,d)|0;Fa(170780);break}if(!d){d=176254;b=0}else{b=g;e=134849;f=b+16|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));f=0;do{b=qJ(d,59)|0;e=b-d|0;if((e|0)<16){TN(g|0,d|0,e|0)|0;a[g+e>>0]=0;d=(a[b>>0]|0)==0?d:b+1|0}cL(f,g)|0;f=f+1|0}while((f|0)!=6);d=176254;b=0}while(1){f=c[170740+(b<<2)>>2]|0;f=f|0?f+8|0:134865;e=rJ(f)|0;TN(d|0,f|0,e|0)|0;f=d+e|0;a[f>>0]=59;b=b+1|0;if((b|0)==6)break;else d=d+(e+1)|0}a[f>>0]=0;Fa(170780);d=176254}while(0);l=h;return d|0}function cL(a,b){a=a|0;b=b|0;if(!b)a=c[170740+(a<<2)>>2]|0;else{b=wK(a,b)|0;c[170740+(a<<2)>>2]=b;a=b}return (a|0?a+8|0:134865)|0}function dL(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function eL(a){a=a|0;return fL(a)|0}function fL(a){a=a|0;return PN(a|0)|0}function gL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=OK(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)PK(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;i=ZJ(h,10,p)|0;j=(i|0)==0;i=j?p:1-o+i|0;i=i>>>0<g>>>0?i:g;TN(e|0,h|0,i|0)|0;h=(c[k>>2]|0)+i|0;c[k>>2]=h;e=e+i|0;i=g-i|0;if(!(j&(i|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=dK(f)|0;if((g|0)<0)break;else j=g}else{c[k>>2]=h+1;j=d[h>>0]|0}g=i+-1|0;h=e+1|0;a[e>>0]=j;if(!((g|0)!=0&(j&255|0)!=10)){e=h;n=17;break a}else e=h}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)PK(f)}return b|0}function hL(b,c){b=b|0;c=c|0;var d=0;d=a[c>>0]|0;do if(d<<24>>24){b=WJ(b,d<<24>>24)|0;if(b){if(a[c+1>>0]|0)if(a[b+1>>0]|0){if(!(a[c+2>>0]|0)){b=iL(b,c)|0;break}if(a[b+2>>0]|0){if(!(a[c+3>>0]|0)){b=jL(b,c)|0;break}if(a[b+3>>0]|0)if(!(a[c+4>>0]|0)){b=kL(b,c)|0;break}else{b=lL(b,c)|0;break}else b=0}else b=0}else b=0}else b=0}while(0);return b|0}function iL(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=(d[c>>0]|0)<<8|(d[c+1>>0]|0);f=d[b>>0]|0;while(1){c=b+1|0;e=a[c>>0]|0;if(!(e<<24>>24))break;f=f<<8&65280|e&255;if((f|0)==(g|0))break;else b=c}return (e<<24>>24?b:0)|0}function jL(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8;e=b+2|0;c=a[e>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(c&255)<<8;if(!((b|0)==(f|0)|c<<24>>24==0))do{e=e+1|0;c=a[e>>0]|0;b=(b|c&255)<<8}while(!((b|0)==(f|0)|c<<24>>24==0));return (c<<24>>24?e+-2|0:0)|0}function kL(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8|(d[c+3>>0]|0);c=b+3|0;e=a[c>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8|e&255;if(!(e<<24>>24==0|(b|0)==(f|0)))do{c=c+1|0;e=a[c>>0]|0;b=b<<8|e&255}while(!(e<<24>>24==0|(b|0)==(f|0)));return (e<<24>>24?c+-3|0:0)|0}function lL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+1056|0;t=v+1024|0;u=v;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;e=a[d>>0]|0;a:do if(e<<24>>24){s=0;do{if(!(a[b+s>>0]|0)){e=0;break a}r=t+(((e&255)>>>5&255)<<2)|0;c[r>>2]=c[r>>2]|1<<(e&31);s=s+1|0;c[u+((e&255)<<2)>>2]=s;e=a[d+s>>0]|0}while(e<<24>>24!=0);m=s>>>0>1;if(m){f=0;k=-1;g=1;b:while(1){h=1;e=f;while(1){f=g;c:while(1){j=1;while(1){g=a[d+(j+k)>>0]|0;i=a[d+f>>0]|0;if(g<<24>>24!=i<<24>>24)break c;if((j|0)==(h|0))break;j=j+1|0;f=j+e|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}e=h+e|0;f=e+1|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}h=f-k|0;if((g&255)<=(i&255))break;g=f+1|0;if(g>>>0>=s>>>0){n=h;e=k;break b}else e=f}g=e+2|0;if(g>>>0>=s>>>0){n=1;break}else{f=e+1|0;k=e}}if(m){h=0;m=-1;i=1;while(1){f=1;g=h;while(1){h=i;d:while(1){k=1;while(1){i=a[d+(k+m)>>0]|0;j=a[d+h>>0]|0;if(i<<24>>24!=j<<24>>24)break d;if((k|0)==(f|0))break;k=k+1|0;h=k+g|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}g=f+g|0;h=g+1|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}f=h-m|0;if((i&255)>=(j&255))break;i=h+1|0;if(i>>>0>=s>>>0){i=n;g=m;h=26;break a}else g=h}i=g+2|0;if(i>>>0>=s>>>0){i=n;f=1;h=26;break}else{h=g+1|0;m=g}}}else{i=n;f=1;g=-1;h=26}}else{i=1;e=-1;f=1;g=-1;h=26}}else{i=1;e=-1;s=0;f=1;g=-1;h=26}while(0);e:do if((h|0)==26){q=(g+1|0)>>>0>(e+1|0)>>>0;f=q?f:i;q=q?g:e;r=q+1|0;if(!(dL(d,d+f|0,r)|0))p=s-f|0;else{f=s-q+-1|0;p=0;f=(q>>>0>f>>>0?q:f)+1|0}k=s|63;m=s+-1|0;n=(p|0)!=0;o=s-f|0;e=b;j=0;g=b;while(1){h=e;do if((g-h|0)>>>0<s>>>0){i=ZJ(g,0,k)|0;if(i)if((i-h|0)>>>0<s>>>0){e=0;break e}else break;else{i=g+k|0;break}}else i=g;while(0);g=a[e+m>>0]|0;f:do if(!(1<<(g&31)&c[t+(((g&255)>>>5&255)<<2)>>2])){h=0;g=s}else{g=s-(c[u+((g&255)<<2)>>2]|0)|0;if(g|0){h=0;g=n&(j|0)!=0&g>>>0<f>>>0?o:g;break}g=r>>>0>j>>>0?r:j;h=a[d+g>>0]|0;g:do if(!(h<<24>>24))g=r;else{while(1){if(h<<24>>24!=(a[e+g>>0]|0))break;g=g+1|0;h=a[d+g>>0]|0;if(!(h<<24>>24)){g=r;break g}}h=0;g=g-q|0;break f}while(0);while(1){if(g>>>0<=j>>>0)break e;g=g+-1|0;if((a[d+g>>0]|0)!=(a[e+g>>0]|0)){h=p;g=f;break}}}while(0);e=e+g|0;j=h;g=i}}while(0);l=v;return e|0}function mL(a,b,c){a=a|0;b=b|0;c=c|0;nL(a,b,c)|0;return a|0}function nL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=11}}else e=0}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);VN(b|0,0,e|0)|0;return b|0}function oL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[f+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);l=g;return d|0}function pL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=qL(a,b,f)|0;l=e;return d|0}function qL(a,b,c){a=a|0;b=b|0;c=c|0;return LK(a,2147483647,b,c)|0}function rL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+208|0;j=m+8|0;k=m;h=O(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0<h>>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)sL(a,d,e,f,j);else uL(a,d,e,k,f,0,j);if((f|0)==1){vL(k,1);f=0;break}else{vL(k,b);f=1;break}}else{sL(a,d,e,f,j);tL(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0<g>>>0)}else{f=1;b=1}uL(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1){if(!(c[g>>2]|0))break a}else if((f|0)>=2){vL(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;tL(k,1);uL(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);vL(k,1);b=c[k>>2]|1;c[k>>2]=b;h=a+i|0;uL(h,d,e,k,n,1,j);a=h;f=n;continue}b=wL(k)|0;tL(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}while(0);l=m;return}function sL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+240|0;m=n;c[m>>2]=a;a:do if((e|0)>1){k=0-b|0;g=a;j=e;e=1;while(1){h=g+k|0;i=j+-2|0;g=h+(0-(c[f+(i<<2)>>2]|0))|0;if((ab[d&63](a,g)|0)>-1?(ab[d&63](a,h)|0)>-1:0)break a;a=e+1|0;e=m+(e<<2)|0;if((ab[d&63](g,h)|0)>-1){c[e>>2]=g;e=j+-1|0}else{c[e>>2]=h;g=h;e=i}if((e|0)<=1){e=a;break a}j=e;e=a;a=c[m>>2]|0}}else e=1;while(0);yL(b,m,e);l=n;return}function tL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function uL(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+240|0;n=p+232|0;o=p;q=c[e>>2]|0;c[n>>2]=q;j=c[e+4>>2]|0;k=n+4|0;c[k>>2]=j;c[o>>2]=a;a:do if((q|0)!=1|(j|0)!=0?(m=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(ab[d&63](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+m|0;i=c[h+(f+-2<<2)>>2]|0;if((ab[d&63](g,j)|0)>-1){i=10;break a}if((ab[d&63](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[o+(e<<2)>>2]=j;q=wL(n)|0;tL(n,q);f=q+f|0;if(!((c[n>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((ab[d&63](a,c[o>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{q=j;e=g;g=1;j=a;a=q}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){yL(b,o,e);sL(a,b,d,f,h)}l=p;return}function vL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<<b;c[a>>2]=d<<b;return}function wL(a){a=a|0;var b=0;b=xL((c[a>>2]|0)+-1|0)|0;if(!b){b=xL(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function xL(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;do{a=a+1|0;b=b>>>1}while(!(b&1|0))}else a=0;else a=32;return a|0}function yL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;TN(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;TN(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);l=h;return}function zL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=MK(a,b,f)|0;l=e;return d|0}function AL(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;oa(0,e|0)|0;d=0;e=(c[e+4>>2]|0)*65537^(e>>>4)+b;while(1){a[b+d>>0]=(e&15)+65|e<<1&32;d=d+1|0;if((d|0)==6)break;else e=e>>>5}l=f;return b|0}function BL(a,b,c){a=a|0;b=b|0;c=c|0;c=$J(a,b,c,-2147483648,0)|0;return c|0}function CL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){VN(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{i=f+(((e&255)>>>5&255)<<2)|0;c[i>>2]=c[i>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=qJ(b,e<<24>>24)|0;l=h;return e-b|0}function DL(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[42697]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(oL(b,d)|0)|0;if(!(a[b>>0]|0)){c[42697]=0;b=0;break}d=b+(CL(b,d)|0)|0;c[42697]=d;if(!(a[d>>0]|0)){c[42697]=0;break}else{c[42697]=d+1;a[d>>0]=0;break}}while(0);return b|0}function EL(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function FL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!b){b=c[e>>2]|0;if(!b)b=0;else f=3}else f=3;do if((f|0)==3){b=b+(oL(b,d)|0)|0;if(!(a[b>>0]|0)){c[e>>2]=0;b=0;break}d=b+(CL(b,d)|0)|0;c[e>>2]=d;if(!(a[d>>0]|0)){c[e>>2]=0;break}else{c[e>>2]=d+1;a[d>>0]=0;break}}while(0);return b|0}function GL(a){a=a|0;var b=0,c=0;b=(rJ(a)|0)+1|0;c=ZI(b)|0;if(!c)a=0;else a=TN(c|0,a|0,b|0)|0;return a|0}function HL(a,b){a=a|0;b=b|0;return EL(a,b,(rJ(a)|0)+1|0)|0}function IL(a,b){a=a|0;b=b|0;xK(a+(rJ(a)|0)|0,b)|0;return a|0}function JL(b,c){b=b|0;c=c|0;c=b+(CL(b,c)|0)|0;return (a[c>>0]|0?c:0)|0}function KL(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(OK(a)|0)==0;a=(c[a>>2]|0)>>>4&1}else a=(c[a>>2]|0)>>>4&1;return a|0}function LL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=OK(a)|0;else f=0;ML(a);g=(c[a>>2]&1|0)!=0;if(!g){e=NL()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;OL()}b=PL(a)|0;b=$a[c[a+12>>2]&31](a)|0|b;d=c[a+92>>2]|0;if(d|0)_I(d);if(g){if(f|0)PK(a)}else _I(a);return b|0}function ML(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;a=a+112|0;if(b|0)c[b+112>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(RL()|0)+232|0;else a=a+116|0;c[a>>2]=b}return}function NL(){pa(170792);return 170800}function OL(){Fa(170792);return}function PL(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=QL(a)|0;break}d=(OK(a)|0)==0;b=QL(a)|0;if(!d)PK(a)}else{if(!(c[13917]|0))b=0;else b=PL(c[13917]|0)|0;a=c[(NL()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=OK(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=QL(a)|0|b;if(d|0)PK(a);a=c[a+56>>2]|0}while((a|0)!=0);OL()}while(0);return b|0}function QL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(bb[c[a+36>>2]&31](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0<g>>>0)bb[c[a+40>>2]&31](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function RL(){return AJ()|0}function SL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+64|0;j=k+40|0;h=k+24|0;g=k+16|0;f=k;i=k+56|0;if(WJ(134882,a[d>>0]|0)|0){e=ZI(1156)|0;if(!e)e=0;else{VN(e|0,0,124)|0;if(!(WJ(d,43)|0))c[e>>2]=(a[d>>0]|0)==114?8:4;if(WJ(d,101)|0){c[f>>2]=b;c[f+4>>2]=2;c[f+8>>2]=1;za(221,f|0)|0}if((a[d>>0]|0)==97){c[g>>2]=b;c[g+4>>2]=3;d=za(221,g|0)|0;if(!(d&1024)){c[h>>2]=b;c[h+4>>2]=4;c[h+8>>2]=d|1024;za(221,h|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+132;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[j>>2]=b,c[j+4>>2]=21523,c[j+8>>2]=i,(Ca(54,j|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=6;c[e+36>>2]=9;c[e+40>>2]=7;c[e+12>>2]=15;if(!(c[42676]|0))c[e+76>>2]=-1;TL(e)|0}}else{c[(jJ()|0)>>2]=22;e=0}l=k;return e|0}function TL(a){a=a|0;var b=0,d=0;b=NL()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;OL();return a|0}function UL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(c[c[(VL()|0)+188>>2]>>2]|0)==0;b=a[e>>0]|0;if(h){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[55208+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);c[(jJ()|0)>>2]=84;b=-1}while(0);l=j;return b|0}function VL(){return AJ()|0}function WL(a,b){a=a|0;b=b|0;var c=0;c=rJ(a)|0;return ((XL(a,1,c,b)|0)!=(c|0))<<31>>31|0}function XL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=O(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(OK(e)|0)==0;a=ZK(a,f,e)|0;if(!g)PK(e)}else a=ZK(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function YL(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(_K(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0<h>>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((bb[c[b+36>>2]&31](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);l=m;return f|0}function ZL(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=134867;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function _L(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g+40|0;e=g+8|0;d=g;c[d>>2]=a;c[d+4>>2]=b;d=ya(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(za(221,e|0)|0)>=0):0){ZL(e,a);c[f>>2]=e;c[f+4>>2]=b;b=iJ(xa(195,f|0)|0)|0}else b=iJ(d)|0;l=g;return b|0}function $L(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=iJ(Aa(33,e|0)|0)|0;l=d;return b|0}function aM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;h=i+32|0;g=i+16|0;e=i;if(WJ(134882,a[d>>0]|0)|0){f=bM(d)|0;c[e>>2]=b;c[e+4>>2]=f|32768;c[e+8>>2]=438;e=iJ(Ba(5,e|0)|0)|0;if((e|0)>=0){if(f&524288|0){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;za(221,g|0)|0}b=SL(e,d)|0;if(!b){c[h>>2]=e;Da(6,h|0)|0;b=0}}else b=0}else{c[(jJ()|0)>>2]=22;b=0}l=i;return b|0}function bM(b){b=b|0;var c=0,d=0,e=0;d=(WJ(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(WJ(b,120)|0)==0;d=e?d:d|128;b=(WJ(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function cM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=dM(a,b,f)|0;l=e;return d|0}function dM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+128|0;e=g;f=e;h=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=18;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=fM(e,b,d)|0;l=g;return h|0}function eM(a,b,c){a=a|0;b=b|0;c=c|0;return nM(a,b,c)|0}function fM(b,e,f){b=b|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=l;l=l+288|0;F=L+8|0;G=L+17|0;H=L;I=L+16|0;if((c[b+76>>2]|0)>-1)K=OK(b)|0;else K=0;i=a[e>>0]|0;a:do if(i<<24>>24){y=b+4|0;A=b+100|0;B=b+108|0;C=b+8|0;D=G+10|0;E=G+33|0;x=F+4|0;p=e;u=0;e=0;j=0;k=i;i=0;b:while(1){c:do if(!(XJ(k&255)|0)){k=(a[p>>0]|0)==37;d:do if(k){m=p+1|0;n=a[m>>0]|0;e:do switch(n<<24>>24){case 37:break d;case 42:{w=0;m=p+2|0;break}default:{if(_J(n&255)|0?(a[p+2>>0]|0)==36:0){w=gM(f,(d[m>>0]|0)+-48|0)|0;m=p+3|0;break e}v=(c[f>>2]|0)+(4-1)&~(4-1);w=c[v>>2]|0;c[f>>2]=v+4}}while(0);if(!(_J(d[m>>0]|0)|0))s=0;else{k=0;do{k=(k*10|0)+-48+(d[m>>0]|0)|0;m=m+1|0}while((_J(d[m>>0]|0)|0)!=0);s=k}p=a[m>>0]|0;n=m+1|0;if(p<<24>>24==109){k=(w|0)!=0&1;j=0;m=n;p=a[n>>0]|0;i=0}else k=0;n=m+1|0;switch(p<<24>>24){case 104:{v=(a[n>>0]|0)==104;p=v?-2:-1;m=v?m+2|0:n;break}case 108:{v=(a[n>>0]|0)==108;p=v?3:1;m=v?m+2|0:n;break}case 106:{p=3;m=n;break}case 116:case 122:{p=1;m=n;break}case 76:{p=2;m=n;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{p=0;break}default:{J=136;break b}}r=d[m>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:p;q=r&255;switch(q<<24>>24){case 99:{s=(s|0)>1?s:1;break}case 91:break;case 110:{hM(w,t,u,((u|0)<0)<<31>>31);n=u;break c}default:{aK(b,0);do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=cK(b)|0}while((XJ(n)|0)!=0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}u=(c[B>>2]|0)+u+n-(c[C>>2]|0)|0}}aK(b,s);p=c[y>>2]|0;n=c[A>>2]|0;if(p>>>0<n>>>0)c[y>>2]=p+1;else{if((cK(b)|0)<0){J=136;break b}n=c[A>>2]|0}if(n|0)c[y>>2]=(c[y>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{v=(r|0)==99;g:do if((r|16|0)==115){VN(G|0,-1,257)|0;a[G>>0]=0;if((r|0)==115){a[E>>0]=0;a[D>>0]=0;a[D+1>>0]=0;a[D+2>>0]=0;a[D+3>>0]=0;a[D+4>>0]=0}}else{n=m+1|0;q=(a[n>>0]|0)==94;r=q&1;m=q?m+2|0:n;VN(G|0,r|0,257)|0;a[G>>0]=0;n=a[m>>0]|0;switch(n<<24>>24){case 45:{n=46;J=65;break}case 93:{n=94;J=65;break}default:{}}while(1){if((J|0)==65){J=0;a[G+n>>0]=r^1;n=m+1|0;m=n;n=a[n>>0]|0}h:do switch(n<<24>>24){case 0:{J=136;break b}case 93:break g;case 45:{q=m+1|0;n=a[q>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){p=(r^1)&255;m=m&255;do{m=m+1|0;a[G+m>>0]=p;n=a[q>>0]|0}while((m|0)<(n&255|0));m=q}else m=q;break}default:{}}while(0);n=(n&255)+1|0;J=65}}while(0);n=v?s+1|0:31;r=(t|0)==1;t=(k|0)!=0;i:do if(r){if(t){i=ZI(n<<2)|0;if(!i){j=0;i=0;J=136;break b}}else i=w;c[F>>2]=0;c[x>>2]=0;q=n;j=0;j:while(1){p=(i|0)==0;do{k:while(1){n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=cK(b)|0;if(!(a[G+(n+1)>>0]|0))break j;a[I>>0]=n;switch(rK(H,I,1,F)|0){case -1:{j=0;J=136;break b}case -2:break;default:break k}}if(!p){c[i+(j<<2)>>2]=c[H>>2];j=j+1|0}}while(!(t&(j|0)==(q|0)));j=q<<1|1;n=aJ(i,j<<2)|0;if(!n){j=0;J=136;break b}else{p=q;q=j;i=n;j=p}}if(!(iM(F)|0)){j=0;J=136;break b}else{q=j;j=0;p=i}}else{if(t){j=ZI(n)|0;if(!j){j=0;i=0;J=136;break b}else{p=n;i=0}while(1){do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=cK(b)|0;if(!(a[G+(n+1)>>0]|0)){q=i;p=0;i=0;break i}a[j+i>>0]=n;i=i+1|0}while((i|0)!=(p|0));i=p<<1|1;n=aJ(j,i)|0;if(!n){i=0;J=136;break b}else{q=p;p=i;j=n;i=q}}}if(!w)while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0;if(!(a[G+(i+1)>>0]|0)){q=0;j=0;p=0;i=0;break i}}else j=0;while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0;if(!(a[G+(i+1)>>0]|0)){q=j;j=w;p=0;i=0;break i}a[w+j>>0]=i;j=j+1|0}}while(0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}n=n-(c[C>>2]|0)+(c[B>>2]|0)|0;if(!n)break b;if(!((n|0)==(s|0)|v^1))break b;do if(t)if(r){c[w>>2]=p;break}else{c[w>>2]=j;break}while(0);if(!v){if(p|0)c[p+(q<<2)>>2]=0;if(!j){j=0;break f}a[j+q>>0]=0}break}case 120:case 88:case 112:{n=16;J=124;break}case 111:{n=8;J=124;break}case 117:case 100:{n=10;J=124;break}case 105:{n=0;J=124;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{o=+jM(b,t,0);if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if(w)switch(t|0){case 0:{g[w>>2]=o;break f}case 1:{h[w>>3]=o;break f}case 2:{h[w>>3]=o;break f}default:break f}break}default:{}}while(0);do if((J|0)==124){J=0;n=bK(b,n,0,-1,-1)|0;if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if((w|0)!=0&(r|0)==112){c[w>>2]=n;break}else{hM(w,t,n,z);break}}while(0);e=e+((w|0)!=0&1)|0;n=(c[B>>2]|0)+u+(c[y>>2]|0)-(c[C>>2]|0)|0;break c}while(0);m=p+(k&1)|0;aK(b,0);k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=cK(b)|0;if((k|0)!=(d[m>>0]|0)){J=22;break b}n=u+1|0}else{m=p;while(1){k=m+1|0;if(!(XJ(d[k>>0]|0)|0))break;else m=k}aK(b,0);do{k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=cK(b)|0}while((XJ(k)|0)!=0);if(!(c[A>>2]|0))k=c[y>>2]|0;else{k=(c[y>>2]|0)+-1|0;c[y>>2]=k}n=(c[B>>2]|0)+u+k-(c[C>>2]|0)|0}while(0);p=m+1|0;k=a[p>>0]|0;if(!(k<<24>>24))break a;else u=n}if((J|0)==22){if(c[A>>2]|0)c[y>>2]=(c[y>>2]|0)+-1;if((e|0)!=0|(k|0)>-1)break;else{e=0;J=137}}else if((J|0)==136)if(!e){e=k;J=137}if((J|0)==137){k=e;e=-1}if(k){_I(j);_I(i)}}else e=0;while(0);if(K|0)PK(b);l=L;return e|0}function gM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}l=e;return a|0}function hM(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function iM(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function jM(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+100|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=cK(b)|0}while((XJ(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=cK(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;do{if((h|32|0)!=(a[134886+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=cK(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[134895+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=cK(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=cK(b)|0;if((e|0)==40)e=1;else{if(!(c[n>>2]|0)){g=s;break a}c[o>>2]=(c[o>>2]|0)+-1;g=s;break a}while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=cK(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){c[(jJ()|0)>>2]=22;aK(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=cK(b)|0;if((e|32|0)==120){g=+kM(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+lM(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;c[(jJ()|0)>>2]=22;aK(b,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*t}while(0);return +g}function kM(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+100|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=0}else{j=cK(a)|0;l=0}a:while(1){switch(j|0){case 46:{w=8;break a}case 48:break;default:{s=0;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=1;continue}else{j=cK(a)|0;l=1;continue}}if((w|0)==8){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0}else j=cK(a)|0;if((j|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;m=d[i>>0]|0}else m=cK(a)|0;l=HN(l|0,j|0,-1,-1)|0;j=z}while((m|0)==48);s=1;n=0;o=1.0;h=0.0;i=0;t=1;v=0;u=0}else{s=1;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0}}while(1){q=m+-48|0;p=m|32;if(q>>>0>=10){r=(m|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=o;r=t;l=u;j=v;q=u;p=v}else{m=46;break}else w=20}else w=20;if((w|0)==20){w=0;m=(m|0)>57?p+-87|0:q;do if(!((v|0)<0|(v|0)==0&u>>>0<8))if((v|0)<0|(v|0)==0&u>>>0<14){o=o*.0625;k=o;h=h+o*+(m|0);break}else{t=(n|0)!=0|(m|0)==0;n=t?n:1;k=o;h=t?h:h+o*.5;break}else{k=o;i=m+(i<<4)|0}while(0);q=HN(u|0,v|0,1,0)|0;r=1;p=z}m=c[y>>2]|0;if(m>>>0<(c[x>>2]|0)>>>0){c[y>>2]=m+1;o=k;m=d[m>>0]|0;t=r;v=p;u=q;continue}else{o=k;m=cK(a)|0;t=r;v=p;u=q;continue}}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(!((s|0)==0|i))c[y>>2]=(c[y>>2]|0)+-1}else aK(a,0);h=+(f|0)*0.0}else{p=(s|0)==0;q=p?u:l;p=p?v:j;if((v|0)<0|(v|0)==0&u>>>0<8){l=u;j=v;while(1){i=i<<4;w=l;l=HN(l|0,j|0,1,0)|0;if(!((j|0)<0|(j|0)==0&w>>>0<7)){n=i;break}else j=z}}else n=i;if((m|32|0)==112){j=mM(a,g)|0;i=z;if((j|0)==0&(i|0)==-2147483648){if(!g){aK(a,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=ON(q|0,p|0,2)|0;l=HN(l|0,z|0,-32,-1)|0;l=HN(l|0,z|0,j|0,i|0)|0;i=z;if(!n){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){c[(jJ()|0)>>2]=34;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0<y>>>0){c[(jJ()|0)>>2]=34;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((n|0)>-1){j=n;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=HN(l|0,i|0,-1,-1)|0;i=z}while((j|0)>-1);o=h;m=j}else{o=h;m=n}y=((b|0)<0)<<31>>31;e=IN(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=HN(e|0,z|0,l|0,i|0)|0;e=z;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0<b>>>0)if((i|0)>0)w=59;else{j=0;i=84;w=61}else{i=b;w=59}if((w|0)==59)if((i|0)<53){j=i;i=84-i|0;w=61}else{k=0.0;h=+(f|0)}if((w|0)==61){h=+(f|0);k=+LJ(+IJ(1.0,i),h);i=j}f=(m&1|0)==0&(o!=0.0&(i|0)<32);h=(f?0.0:o)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0))c[(jJ()|0)>>2]=34;h=+MJ(h,l)}while(0);return +h}function lM(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+512|0;G=J;H=f+e|0;I=0-H|0;D=a+4|0;E=a+100|0;k=0;a:while(1){switch(b|0){case 46:{A=6;break a}case 48:break;default:{v=0;p=k;q=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0;k=1;continue}else{b=cK(a)|0;k=1;continue}}if((A|0)==6){b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=cK(a)|0;if((b|0)==48){k=0;b=0;while(1){k=HN(k|0,b|0,-1,-1)|0;o=z;b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=cK(a)|0;if((b|0)==48)b=o;else{v=1;p=1;q=k;break}}}else{v=1;p=k;q=0;o=0}}c[G>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){C=G+496|0;w=0;k=0;u=0;x=v;y=p;A=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;q=p;o=n}else break c;else{p=HN(p|0,n|0,1,0)|0;n=z;v=(b|0)!=48;if((k|0)>=125){if(!v)break;c[C>>2]=c[C>>2]|1;break}m=G+(k<<2)|0;if(!w)b=A;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;k=k+(y&1)|0;u=v?p:u;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=cK(a)|0;A=b+-48|0;m=(b|0)==46;if(!(m|A>>>0<10)){v=x;m=y;A=29;break b}}b=w;m=(y|0)!=0;A=37}else{w=0;k=0;u=0;m=p;p=0;n=0;A=29}while(0);do if((A|0)==29){C=(v|0)==0;q=C?p:q;o=C?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;A=37;break}else{b=w;A=39;break}m=mM(a,h)|0;b=z;if((m|0)==0&(b|0)==-2147483648){if(!h){aK(a,0);i=0.0;break}if(!(c[E>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}y=HN(m|0,b|0,q|0,o|0)|0;b=w;o=z;A=41}while(0);if((A|0)==37)if(c[E>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m){y=q;A=41}else A=40}else A=39;if((A|0)==39)if(m){y=q;A=41}else A=40;do if((A|0)==40){c[(jJ()|0)>>2]=22;aK(a,0);i=0.0}else if((A|0)==41){m=c[G>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((y|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;E=((a|0)<0)<<31>>31;if((o|0)>(E|0)|(o|0)==(E|0)&y>>>0>a>>>0){c[(jJ()|0)>>2]=34;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;E=((a|0)<0)<<31>>31;if((o|0)<(E|0)|(o|0)==(E|0)&y>>>0<a>>>0){c[(jJ()|0)>>2]=34;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=G+(k<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}k=k+1|0}if((u|0)<9?(u|0)<=(y|0)&(y|0)<18:0){if((y|0)==9){i=+(g|0)*+((c[G>>2]|0)>>>0);break}if((y|0)<9){i=+(g|0)*+((c[G>>2]|0)>>>0)/+(c[56536+(8-y<<2)>>2]|0);break}a=e+27+(O(y,-3)|0)|0;b=c[G>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[56536+(y+-10<<2)>>2]|0);break}}b=(y|0)%9|0;if(!b){b=0;n=0}else{u=(y|0)>-1?b:b+9|0;p=c[56536+(8-u<<2)>>2]|0;if(k){q=1e9/(p|0)|0;n=0;o=0;m=y;b=0;do{D=G+(b<<2)|0;E=c[D>>2]|0;a=((E>>>0)/(p>>>0)|0)+n|0;c[D>>2]=a;n=O(q,(E>>>0)%(p>>>0)|0)|0;a=(b|0)==(o|0)&(a|0)==0;m=a?m+-9|0:m;o=a?o+1&127:o;b=b+1|0}while((b|0)!=(k|0));if(!n)n=o;else{c[G+(k<<2)>>2]=n;n=o;k=k+1|0}}else{n=0;k=0;m=y}b=0;y=9-u+m|0}d:while(1){u=(y|0)<18;v=(y|0)==18;w=G+(n<<2)|0;while(1){if(!u){if(!v){m=y;break d}if((c[w>>2]|0)>>>0>=9007199){m=18;break d}}m=0;x=k;k=k+127|0;while(1){o=k&127;p=G+(o<<2)|0;k=ON(c[p>>2]|0,0,29)|0;k=HN(k|0,z|0,m|0,0)|0;m=z;if(m>>>0>0|(m|0)==0&k>>>0>1e9){q=LN(k|0,m|0,1e9,0)|0;k=MN(k|0,m|0,1e9,0)|0}else q=0;c[p>>2]=k;a=(o|0)==(n|0);x=(k|0)==0&(((o|0)!=(x+127&127|0)|a)^1)?o:x;if(a)break;else{m=q;k=o+-1|0}}b=b+-29|0;if(q|0)break;else k=x}n=n+127&127;k=x+127&127;m=G+((x+126&127)<<2)|0;if((n|0)==(x|0))c[m>>2]=c[m>>2]|c[G+(k<<2)>>2];else k=x;c[G+(n<<2)>>2]=q;y=y+9|0}e:while(1){w=k+1&127;x=G+((k+127&127)<<2)|0;while(1){q=(m|0)==18;v=(m|0)>27?9:1;y=n;while(1){p=0;while(1){n=p+y&127;if((n|0)==(k|0)){F=2;A=88;break}n=c[G+(n<<2)>>2]|0;o=c[56568+(p<<2)>>2]|0;if(n>>>0<o>>>0){F=2;A=88;break}if(n>>>0>o>>>0)break;n=p+1|0;if((p|0)<1)p=n;else{F=n;A=88;break}}if((A|0)==88?(A=0,q&(F|0)==2):0){i=0.0;o=0;break e}b=v+b|0;if((y|0)==(k|0))y=k;else break}q=(1<<v)+-1|0;u=1e9>>>v;p=0;n=y;o=y;do{D=G+(o<<2)|0;E=c[D>>2]|0;a=(E>>>v)+p|0;c[D>>2]=a;p=O(E&q,u)|0;a=(o|0)==(n|0)&(a|0)==0;m=a?m+-9|0:m;n=a?n+1&127:n;o=o+1&127}while((o|0)!=(k|0));if(!p)continue;if((w|0)!=(n|0))break;c[x>>2]=c[x>>2]|1}c[G+(k<<2)>>2]=p;k=w}do{n=o+y&127;m=k+1&127;if((n|0)==(k|0)){c[G+(m+-1<<2)>>2]=0;k=m}i=i*1.0e9+ +((c[G+(n<<2)>>2]|0)>>>0);o=o+1|0}while((o|0)!=2);t=+(g|0);j=i*t;o=b+53|0;p=o-f|0;q=(p|0)<(e|0);n=q?((p|0)>0?p:0):e;if((n|0)<53){K=+LJ(+IJ(1.0,105-n|0),j);r=+NJ(j,+IJ(1.0,53-n|0));s=K;i=r;r=K+(j-r)}else{s=0.0;i=0.0;r=j}m=y+2&127;if((m|0)!=(k|0)){m=c[G+(m<<2)>>2]|0;do if(m>>>0>=5e8){if((m|0)!=5e8){i=t*.75+i;break}if((y+3&127|0)==(k|0)){i=t*.5+i;break}else{i=t*.75+i;break}}else{if((m|0)==0?(y+3&127|0)==(k|0):0)break;i=t*.25+i}while(0);if((53-n|0)>1?!(+NJ(i,1.0)!=0.0):0)j=i+1.0;else j=i}else j=i;i=r+j-s;do if((o&2147483647|0)>(-2-H|0)){H=!(+B(+i)>=9007199254740992.0);b=b+((H^1)&1)|0;i=H?i:i*.5;if((b+50|0)<=(I|0)?!(j!=0.0&(q&((n|0)!=(p|0)|H))):0)break;c[(jJ()|0)>>2]=34}while(0);i=+MJ(i,b)}while(0);l=J;return +i}function mM(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;e=c[h>>2]|0;i=a+100|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[i>>2]|0)!=0:0)c[h>>2]=(c[h>>2]|0)+-1;break}default:f=0}if((e+-48|0)>>>0>9)if(!(c[i>>2]|0)){f=-2147483648;e=0}else{c[h>>2]=(c[h>>2]|0)+-1;f=-2147483648;e=0}else{g=0;do{g=e+-48+(g*10|0)|0;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0}while((e+-48|0)>>>0<10&(g|0)<214748364);b=((g|0)<0)<<31>>31;if((e+-48|0)>>>0<10)do{b=GN(g|0,b|0,10,0)|0;g=z;e=HN(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;g=HN(e|0,z|0,b|0,g|0)|0;b=z;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&g>>>0<2061584302));if((e+-48|0)>>>0<10)do{e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0}while((e+-48|0)>>>0<10);if(c[i>>2]|0)c[h>>2]=(c[h>>2]|0)+-1;i=(f|0)!=0;e=IN(0,0,g|0,b|0)|0;f=i?z:b;e=i?e:g}z=f;return e|0}function nM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=ZJ(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0<d>>>0?f:d;TN(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function oM(a,b,c){a=a|0;b=b|0;c=c|0;return pM(a,b,c)|0}function pM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(OK(a)|0)==0;b=qM(a,b,d)|0;if(!e)PK(a)}else b=qM(a,b,d)|0;return b|0}function qM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;e=a+20|0;f=a+28|0;if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0?(bb[c[a+36>>2]&31](a,0,0)|0,(c[e>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[f>>2]=0;c[e>>2]=0;if((bb[c[a+40>>2]&31](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function rM(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(XJ(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(_J(b<<24>>24)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((_J(a[c>>0]|0)|0)!=0)}return (g|0?b:0-b|0)|0}function sM(a){a=a|0;return +(+tM(a,0))}function tM(a,b){a=a|0;b=b|0;return +(+uM(a,b,1))}function uM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;i=l;l=l+128|0;h=i;f=h;g=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=h+4|0;c[f>>2]=a;g=h+8|0;c[g>>2]=-1;c[h+44>>2]=a;c[h+76>>2]=-1;aK(h,0);e=+jM(h,d,1);d=(c[f>>2]|0)-(c[g>>2]|0)+(c[h+108>>2]|0)|0;if(b|0)c[b>>2]=d|0?a+d|0:a;l=i;return +e}function vM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!c)b=0;else{h=b;while(1){g=c>>>1;b=h+(O(g,d)|0)|0;f=ab[e&63](a,b)|0;if(!f)break a;if((c|0)==1){b=0;break a}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;break}else h=f?h:b}}while(0);return b|0}function wM(a,c){a=a|0;c=c|0;var d=0,f=0,g=0;g=a+2|0;f=a+4|0;d=GN((e[c+2>>1]|0)<<16|(e[c>>1]|0)|0,e[c+4>>1]|0|0,(e[g>>1]|0)<<16|(e[a>>1]|0)|0,e[f>>1]|0|0)|0;c=HN(d|0,z|0,e[c+6>>1]|0|0,0)|0;d=z;b[a>>1]=c;a=NN(c|0,d|0,16)|0;b[g>>1]=a;b[f>>1]=d;z=d&65535;return c|0}function xM(a){a=a|0;TN(173876,58668,6)|0;TN(58668,a|0,6)|0;return 173876}function yM(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=13070;b[d+2>>1]=a;b[d+4>>1]=a>>>16;xM(d)|0;l=c;return}function zM(a){a=a|0;var b=0;b=wM(a,58674)|0;b=ON(b|0,z|0,4)|0;a=z|1072693248;c[j>>2]=b;c[j+4>>2]=a;return +(+h[j>>3]+-1.0)}function AM(){return +(+zM(58668))}function BM(a,b){a=a|0;b=b|0;if(!a)b=$I(1,24)|0;else VN(b|0,0,24)|0;return b|0}function CM(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{_I(c[b>>2]|0);d=b;b=c[b+4>>2]|0;_I(d)}while((b|0)!=0);_I(a);return}function DM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=a+16|0;a:do if(!(c[h>>2]|0)){k=a+12|0;g=c[k>>2]|0;if(g>>>0<f>>>0){do if(b)if(!d){c[h>>2]=1;b=0;break a}else{h=a+8|0;c[h>>2]=d;g=1024;b=d;break}else{g=f<<3;g=g>>>0>1024?g:1024;j=ZI(8)|0;if(!j){c[h>>2]=1;b=0;break a}b=ZI(g)|0;c[j>>2]=b;d=b;if(!b){_I(j);c[h>>2]=1;b=0;break a}c[j+4>>2]=0;h=a+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;if(!(c[a>>2]|0))c[a>>2]=j;c[h>>2]=j;h=a+8|0;c[h>>2]=d}while(0);c[k>>2]=g}else{h=a+8|0;b=c[h>>2]|0;d=b}d=d+f&3;d=((d|0)==0?0:4-d|0)+f|0;c[h>>2]=b+d;c[k>>2]=g-d;if(e)VN(b|0,0,d|0)|0}else b=0;while(0);return b|0}function EM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=l;l=l+48|0;h=v;t=FM()|0;a:do if(!t)b=12;else{u=BM(0,0)|0;if(!u){GM(t);b=12;break}VN(h|0,0,36)|0;c[h>>2]=u;c[h+4>>2]=t;c[h+16>>2]=b;c[h+32>>2]=d;e=h+28|0;c[e>>2]=-1;b=HM(h)|0;b:do if(!b){g=h+20|0;r=c[g>>2]|0;c[a>>2]=r+-1;i=c[h+8>>2]|0;if((c[e>>2]|0)<(r|0)){r=$I(1,68)|0;if(r){q=(c[e>>2]|0)>>>31^1;c[r+60>>2]=q;c[r+64>>2]=0;c[r+28>>2]=c[g>>2];if((d&8|0)==0|(q|0)!=0){b=IM(0,t,i,r)|0;if(b|0){g=r;h=0;i=0;f=0;e=0;break}e=r+40|0;b=c[e>>2]|0;if((b|0)>0){b=ZI((b<<2)+4|0)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+32>>2]=b;VN(b|0,-1,(c[e>>2]<<2)+4|0)|0;f=b;b=c[e>>2]|0}else f=0;q=$I(b<<1|1,4)|0;c[r+36>>2]=q;if(!q){g=r;h=0;i=0;b=12;f=0;e=0;break}b=$I(c[g>>2]|0,12)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+16>>2]=b;b=IM(u,t,i,r)|0;if(!b)b=f;else{g=r;h=0;i=0;f=0;e=0;break}}else b=0;p=h+24|0;b=JM(u,t,i,p,b)|0;if(!b){b=c[p>>2]|0;c[p>>2]=b+1;b=KM(u,0,0,b)|0;if((b|0)!=0?(s=LM(u,i,b)|0,(s|0)!=0):0){b=MM(u,t,s)|0;if(!b){o=ZI(c[p>>2]<<2)|0;if(o){q=ZI(c[p>>2]<<2)|0;if(q){b=c[p>>2]|0;if((b|0)>0)VN(o|0,0,b<<2|0)|0;NM(s,0,o,0)|0;f=c[p>>2]|0;if((f|0)>0){b=0;e=0;do{c[q+(e<<2)>>2]=b;n=o+(e<<2)|0;b=b+1+(c[n>>2]|0)|0;c[n>>2]=0;e=e+1|0}while((e|0)<(f|0));k=b}else k=0;m=$I(k+1|0,32)|0;if(m){c[r>>2]=m;n=r+4|0;c[n>>2]=k;b=NM(s,m,o,q)|0;if(!b){c[r+20>>2]=0;f=s+24|0;b=c[f>>2]|0;e=0;while(1){e=e+1|0;if((c[b>>2]|0)<=-1)break;else b=b+32|0}j=$I(e,32)|0;if(!j){g=r;h=o;i=q;b=12;f=o;e=q}else{c[r+8>>2]=j;f=c[f>>2]|0;e=c[f>>2]|0;if((e|0)>-1){b=0;do{c[j+(b<<5)+8>>2]=m+(c[q+(e<<2)>>2]<<5);c[j+(b<<5)+12>>2]=e;h=j+(b<<5)+16|0;c[h>>2]=0;i=f+12|0;g=c[i>>2]|0;if(g|0){e=0;do{w=e;e=e+1|0}while((c[g+(w<<2)>>2]|0)>-1);e=e<<2;g=ZI(e)|0;c[h>>2]=g;if(!g){g=r;h=o;i=q;b=12;f=o;e=q;break b}TN(g|0,c[i>>2]|0,e|0)|0}c[j+(b<<5)+20>>2]=c[f+16>>2];b=b+1|0;f=f+32|0;e=c[f>>2]|0}while((e|0)>-1)}else b=0;c[j+(b<<5)+8>>2]=0;c[n>>2]=k;c[r+12>>2]=m+(c[q+(c[c[s+28>>2]>>2]<<2)>>2]<<5);c[r+52>>2]=c[p>>2];c[r+56>>2]=d;CM(u);GM(t);_I(o);_I(q);c[a+4>>2]=r;b=0;break a}}else{g=r;h=o;i=q;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=0}}else{g=r;h=o;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=0;h=0;i=0;b=6;f=0;e=0}}else{g=0;h=0;i=0;f=0;e=0}while(0);CM(u);GM(t);if(h|0)_I(f);if(i|0)_I(e);c[a+4>>2]=g;OM(a)}while(0);l=v;return b|0}function FM(){var a=0,b=0;a=ZI(20)|0;do if(a){b=ZI(2048)|0;c[a+16>>2]=b;if(!b){_I(a);a=0;break}else{c[a>>2]=512;c[a+4>>2]=1024e3;c[a+8>>2]=128;c[a+12>>2]=0;break}}while(0);return a|0}function GM(a){a=a|0;_I(c[a+16>>2]|0);_I(a);return}function HM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;p=u+4|0;q=u;r=c[b+32>>2]&1;s=b+16|0;e=c[s>>2]|0;t=c[b+4>>2]|0;d=SM(t,0)|0;a:do if(!d){m=(r|0)!=0;n=b+8|0;o=b+12|0;d=0;k=1;b:while(1){g=0;h=d;f=0;c:while(1){d=a[e>>0]|0;if(m){if(d<<24>>24==40)break;if((h|0)!=0&d<<24>>24==41)j=13;else j=14}else if(d<<24>>24==92)switch(a[e+1>>0]|0){case 40:break c;case 41:{j=13;break}default:j=14}else j=14;if((j|0)==13){j=0;i=KM(c[b>>2]|0,-1,-1,-1)|0;c[n>>2]=i;if(!i){d=12;break a}else i=f}else if((j|0)==14){j=0;d=fN(b,e)|0;if(d|0)break a;i=f;e=c[o>>2]|0}d:while(1){e:while(1){d=a[e>>0]|0;switch(d<<24>>24){case 42:case 92:break;default:{if(!m)break e;switch(d<<24>>24){case 123:case 63:case 43:break;default:break e}}}d=d<<24>>24==92;if(m&d)break;f=e+1|0;if(d)switch(a[f>>0]|0){case 123:case 63:case 43:break;default:break e}e=d?f:e;if((!m?(e|0)==((c[s>>2]|0)+1|0):0)?(a[e+-1>>0]|0)==94:0)break;if((a[e>>0]|0)==123){e=gN(e+1|0,r,p,q)|0;if(!e){j=28;break b}d=c[q>>2]|0;f=c[b>>2]|0;if(!d)d=KM(f,-1,-1,-1)|0;else j=36}else{c[p>>2]=0;c[q>>2]=-1;d=a[e>>0]|0;if(d<<24>>24==43){c[p>>2]=1;d=a[e>>0]|0}if(d<<24>>24==63){c[q>>2]=1;d=1}else d=-1;e=e+1|0;f=c[b>>2]|0;j=36}if((j|0)==36){j=0;d=aN(f,c[n>>2]|0,c[p>>2]|0,d,0)|0}c[n>>2]=d;if(!d){d=12;break a}}d=LM(c[b>>2]|0,g,c[n>>2]|0)|0;f=a[e>>0]|0;f:do if(m){if(f<<24>>24==124){j=40;break d}if((h|0)!=0&f<<24>>24==41|f<<24>>24==0)j=47;else{g=d;f=i;continue c}}else{switch(f<<24>>24){case 0:{j=47;break f}case 92:break;default:{g=d;f=i;continue c}}switch(a[e+1>>0]|0){case 124:case 41:break;default:{g=d;f=i;continue c}}d=bN(c[b>>2]|0,i,d)|0;if((a[e+1>>0]|0)==124){f=2;break d}if(!h){d=8;break a}e=e+2|0;f=92}while(0);if((j|0)==47){j=0;d=bN(c[b>>2]|0,i,d)|0;e=f<<24>>24==41?e+1|0:e}d=hN(b,d,TM(t)|0)|0;if(d|0)break a;d=f<<24>>24==0;f=(h|0)<1;if(f&d){j=50;break b}if(f|d){d=8;break a}g=UM(t)|0;h=h+-1|0;i=UM(t)|0}if((j|0)==40){f=1;d=bN(c[b>>2]|0,i,d)|0}g=0;e=e+f|0;f=d}d=RM(t,f)|0;if(d|0)break a;d=RM(t,g)|0;if(d|0)break a;d=SM(t,k)|0;if(d|0)break a;d=h+1|0;k=k+1|0;e=m?e+1|0:e+2|0}if((j|0)==28){d=10;break}else if((j|0)==50){c[b+20>>2]=k;d=0;break}}while(0);l=u;return d|0}function IM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=QM(d)|0;y=(b|0)==0|(f|0)==0;if(!y){c[f+48>>2]=0;c[c[f+36>>2]>>2]=-1}g=f+28|0;z=ZI((c[g>>2]<<3)+8|0)|0;do if(!z)g=12;else{c[z>>2]=-1;A=ZI((c[g>>2]<<2)+4|0)|0;if(!A){_I(z);g=12;break}c[A>>2]=-1;B=ZI((c[g>>2]<<3)+8|0)|0;if(!B){_I(z);_I(A);g=12;break}h=c[g>>2]|0;g=0;do{c[B+(g<<3)>>2]=-1;g=g+1|0}while(g>>>0<=h>>>0);RM(d,e)|0;g=SM(d,0)|0;a:do if((g|0)!=0|(QM(d)|0)<=(x|0)){e=z;n=0;h=0;m=0;l=-1}else{u=f+32|0;v=f+36|0;w=f+16|0;e=z;n=0;h=0;m=0;t=1;l=-1;s=0;while(1){b:do switch(TM(d)|0){case 6:{i=TM(d)|0;g=0;do{j=e+(g<<2)|0;g=g+1|0}while((c[j>>2]|0)>-1);c[j>>2]=i<<1|1;c[e+(g<<2)>>2]=-1;g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[A+(g+-1<<2)>>2]=-1;g=0;j=t;i=s;break}case 0:{q=UM(d)|0;r=q+12|0;j=c[r>>2]|0;if((j|0)>-1){g=0;do{i=e+(g<<2)|0;g=g+1|0}while((c[i>>2]|0)>-1);c[i>>2]=j<<1;c[e+(g<<2)>>2]=-1;if(!y){g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[(c[w>>2]|0)+(j*12|0)+8>>2]=0;if((g|0)>0){g=ZI((g<<2)+4|0)|0;if(!g){g=12;j=t;i=s;break b}c[(c[w>>2]|0)+(j*12|0)+8>>2]=g;i=c[A>>2]|0;if((i|0)>-1){k=0;j=g;do{c[j>>2]=i;k=k+1|0;i=c[A+(k<<2)>>2]|0;j=g+(k<<2)|0}while((i|0)>-1);g=j}c[g>>2]=-1}}g=SM(d,c[r>>2]|0)|0;if(g|0){j=t;i=s;break b}g=SM(d,6)|0;if(g|0){j=t;i=s;break b}}c:do switch(c[q>>2]|0){case 0:{p=c[c[q+4>>2]>>2]|0;if((p|0)>-1|(p|0)==-4?(c[e>>2]|0)>-1:0){if(y){c[q+20>>2]=1;g=0}else{g=cN(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}dN(e,f,m)}c[e>>2]=-1;p=t+1|0;o=s;n=n+1|0;m=t}else{p=t;g=0;o=s}break}case 1:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;g=RM(d,q)|0;if(!g){g=SM(d,5)|0;if(!g){g=RM(d,j)|0;if(!g){g=SM(d,0)|0;if(!g){i=k+20|0;g=SM(d,(c[i>>2]|0)+t|0)|0;if(!g){if((c[i>>2]|0)>0){i=(c[j+20>>2]|0)>0;g=i?t:-1;i=t+(i&1)|0}else{g=-1;i=t}g=SM(d,g)|0;if(!g){g=SM(d,4)|0;if(!g){g=RM(d,k)|0;if(!g){p=i;g=SM(d,0)|0;o=s}else{p=i;o=s}}else{p=i;o=s}}else{p=i;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 2:{i=c[q+4>>2]|0;if(y){if((c[e>>2]|0)>-1)g=1;else g=(a[i+12>>0]&1)!=0;g=SM(d,g&1)|0;if(g|0){p=t;o=s;break c}}else{g=SM(d,m)|0;if(g|0){p=t;o=s;break c}g=SM(d,a[i+12>>0]&1)|0;if(g|0){p=t;o=s;break c}}g=RM(d,q)|0;if(!g){g=SM(d,1)|0;if(!g){g=RM(d,c[i>>2]|0)|0;if(!g){g=SM(d,0)|0;if(!g){if((c[e>>2]|0)<=-1?(a[i+12>>0]&1)==0:0){p=t;g=0;o=0;break c}if(y)g=0;else{g=cN(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=(a[i+12>>0]&1)==0?s:1;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}dN(e,f,m)}c[e>>2]=-1;p=t+1|0;o=0;n=n+1|0;m=t}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 3:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;i=(c[e>>2]|0)>-1;p=t+1|0;g=SM(d,i?p:t)|0;if(!g){g=SM(d,i?t:m)|0;if(!g){g=RM(d,e)|0;if(!g){g=SM(d,(c[e>>2]|0)>>>31^1)|0;if(!g){g=RM(d,q)|0;if(!g){g=RM(d,j)|0;if(!g){g=RM(d,k)|0;if(!g){g=SM(d,3)|0;if(!g){g=RM(d,j)|0;if(!g){g=SM(d,0)|0;if(g|0){p=t;o=s;break c}g=SM(d,2)|0;if(g|0){p=t;o=s;break c}g=RM(d,k)|0;if(g|0){p=t;o=s;break c}g=SM(d,0)|0;if(g|0){p=t;o=s;break c}if((c[e>>2]|0)>-1){if(y)g=0;else{g=cN(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}dN(e,f,m)}c[e>>2]=-1;n=n+1|0;m=t;i=p}else{g=0;i=t}t=(c[q+16>>2]|0)>0;p=t?i+2|0:i;o=s;m=t?i+1|0:m}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}default:{p=t;g=0;o=s}}while(0);j=c[r>>2]|0;if((j|0)>-1){i=0;do{k=A+(i<<2)|0;i=i+1|0}while((c[k>>2]|0)>-1);c[k>>2]=j;c[A+(i<<2)>>2]=-1;j=p;i=o}else{j=p;i=o}break}case 1:{g=UM(d)|0;if(y){i=c[(c[c[g+4>>2]>>2]|0)+20>>2]|0;c[g+20>>2]=(TM(d)|0)+i;i=0;l=-1}else{q=TM(d)|0;r=TM(d)|0;i=q;l=(q|0)==0?l:r}g=0;j=t;i=y?s:(i|0)==0&1;break}case 4:{i=TM(d)|0;j=TM(d)|0;g=0;m=(i|0)>-1?i:m;i=s;break}case 5:{g=UM(d)|0;if(y){j=c[g+4>>2]|0;c[g+20>>2]=(c[(c[j+4>>2]|0)+20>>2]|0)+(c[(c[j>>2]|0)+20>>2]|0);g=0;j=t;i=s}else{g=0;j=t;i=s}break}case 2:{while(1)if((c[e>>2]|0)>-1)e=e+4|0;else{g=0;j=t;i=s;break}break}case 3:{j=UM(d)|0;o=UM(d)|0;g=UM(d)|0;e=TM(d)|0;if(y){r=c[g+4>>2]|0;s=g+16|0;c[g+20>>2]=(c[(c[r>>2]|0)+20>>2]|0)+e+(c[(c[r+4>>2]|0)+20>>2]|0)+((c[s>>2]|0)>0?2:0);g=s}else g=g+16|0;e=UM(d)|0;i=TM(d)|0;k=TM(d)|0;if((c[g>>2]|0)>0){if(y)g=0;else{g=eN(b,j,i)|0;c[(c[u>>2]|0)+(i<<2)>>2]=1;if(!g)g=eN(b,o,k)|0;c[(c[u>>2]|0)+(k<<2)>>2]=1}n=n+2|0;j=t;i=1}else{g=0;j=t;i=1}break}default:{g=0;j=t;i=s}}while(0);if((g|0)!=0|(QM(d)|0)<=(x|0))break a;else{t=j;s=i}}}while(0);if(!y?(dN(e,f,m),(l|0)>-1):0){i=c[f+36>>2]|0;e=0;while(1){j=i+(e<<2)|0;k=e+1|0;if((c[j>>2]|0)>-1)e=k;else break}c[j>>2]=m;c[i+(k<<2)>>2]=l;c[i+(e+2<<2)>>2]=-1;h=h+1|0}c[f+48>>2]=n;c[f+40>>2]=n;c[f+44>>2]=h;_I(z);_I(A);_I(B)}while(0);return g|0}function JM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;t=y+12|0;x=y+8|0;u=y+4|0;v=y;w=QM(b)|0;c[t>>2]=0;c[x>>2]=0;d=RM(b,d)|0;a:do if(!d){d=SM(b,0)|0;if(!d){b:do if((QM(b)|0)>(w|0)){g=0;i=0;j=0;c:while(1){q=TM(b)|0;r=UM(b)|0;d:do switch(q|0){case 0:{switch(c[r>>2]|0){case 0:{d=c[r+4>>2]|0;r=c[d>>2]|0;if(!((r|0)>-1|(r|0)==-4)){d=j;break d}r=d+8|0;d=(c[r>>2]|0)+j|0;c[r>>2]=d;if((d|0)<=(c[x>>2]|0)){d=j;break d}c[x>>2]=d;d=j;break d}case 3:{h=c[r+4>>2]|0;d=RM(b,c[h+4>>2]|0)|0;if(d|0)break b;d=SM(b,0)|0;if(d|0)break b;d=RM(b,c[h>>2]|0)|0;if(d|0)break b;break}case 1:{h=c[r+4>>2]|0;d=RM(b,c[h+4>>2]|0)|0;if(d|0)break b;d=SM(b,0)|0;if(d|0)break b;d=RM(b,c[h>>2]|0)|0;if(d|0)break b;break}case 2:{h=c[r+4>>2]|0;d=SM(b,j)|0;if(d|0)break b;d=RM(b,r)|0;if(d|0)break b;d=SM(b,1)|0;if(d|0)break b;d=RM(b,c[h>>2]|0)|0;if(d|0)break b;d=SM(b,0)|0;if(d|0)break b;if((c[h+4>>2]|0)<=1?(c[h+8>>2]|0)<=1:0)d=j;else{c[t>>2]=0;d=0}i=i+1|0;break d}default:{d=j;break d}}d=SM(b,0)|0;if(!d)d=j;else break b;break}case 1:{p=r+4|0;o=c[p>>2]|0;q=TM(b)|0;c[t>>2]=q;n=o+4|0;j=c[n>>2]|0;if((j|0)<=1)if((c[o+8>>2]|0)>1){c[u>>2]=0;if((j|0)>0)s=30;else{d=q;h=0;s=37}}else d=q;else{c[u>>2]=0;s=30}e:do if((s|0)==30){d=$M(a,b,c[o>>2]|0,(j|0)>1?1:2,t,f,v,x)|0;if(!d){h=0;k=q;m=1}else{s=34;break c}while(1){d=c[v>>2]|0;if(!h)h=d;else h=LM(a,h,d)|0;if(!h){d=12;s=34;break c}j=c[n>>2]|0;if((m|0)>=(j|0)){d=k;s=37;break e}k=c[t>>2]|0;m=m+1|0;d=$M(a,b,c[o>>2]|0,(m|0)<(j|0)?1:2,t,f,v,x)|0;if(d|0){s=34;break c}}}while(0);if((s|0)==37){s=0;n=o+8|0;k=c[n>>2]|0;if((k|0)==-1){k=c[t>>2]|0;d=$M(a,b,c[o>>2]|0,0,t,0,u,x)|0;if(d|0)break c;j=aN(a,c[u>>2]|0,0,-1,0)|0;c[u>>2]=j;if(!j){d=12;break c}else d=k}else if((j|0)<(k|0)){k=j;j=0;while(1){m=c[t>>2]|0;d=$M(a,b,c[o>>2]|0,0,t,0,v,x)|0;if(d|0){s=49;break c}if(!j){d=c[v>>2]|0;c[u>>2]=d}else{d=LM(a,c[v>>2]|0,j)|0;c[u>>2]=d}if(!d){d=12;s=49;break c}j=KM(a,-1,-1,-1)|0;if(!j){d=12;s=49;break c}j=bN(a,j,d)|0;c[u>>2]=j;if(!j){d=12;s=49;break c}k=k+1|0;if((k|0)>=(c[n>>2]|0)){d=m;break}}}else j=0;c[t>>2]=d;if(h){if(j){h=LM(a,h,j)|0;s=54}}else{h=j;s=54}if((s|0)==54){s=0;if(!h){d=12;break c}}c[p>>2]=c[h+4>>2];c[r>>2]=c[h>>2]}i=i+-1|0;h=d-q+g|0;if(!i){c[t>>2]=h;g=h;i=0;d=h}else g=h;break}default:d=j}while(0);if((QM(b)|0)>(w|0))j=d;else{d=0;break b}}break a}else{d=0;g=0}while(0);w=(c[e>>2]|0)+g|0;x=c[x>>2]|0;c[e>>2]=(x|0)>(w|0)?x:w}}while(0);l=y;return d|0}function KM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=DM(a,0,0,1,20)|0;a=_M(a,0,f)|0;if(!a)a=0;else{c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=e}return a|0}function LM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=DM(a,0,0,1,8)|0;a=_M(a,1,e)|0;if(!a)d=0;else{c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}}return d|0}function MM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;j=o+4|0;k=o;m=QM(b)|0;d=RM(b,d)|0;a:do if(!d){d=SM(b,0)|0;if(!d)if((QM(b)|0)>(m|0)){b:while(1){h=TM(b)|0;i=UM(b)|0;c:do switch(h|0){case 0:switch(c[i>>2]|0){case 0:{g=c[i+4>>2]|0;f=c[g>>2]|0;if((f|0)==-4){c[i+8>>2]=0;d=g+8|0;h=VM(a,c[d>>2]|0,0,1114111,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=VM(a,c[d>>2]|0,0,1114111,0,0,c[g+4>>2]|0)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}d=i+8|0;if((f|0)<0){c[d>>2]=1;h=WM(a)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=WM(a)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}else{c[d>>2]=0;d=g+8|0;e=g+4|0;h=VM(a,c[d>>2]|0,f,c[e>>2]|0,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=VM(a,c[d>>2]|0,c[g>>2]|0,c[e>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,-1)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}}case 3:{d=RM(b,i)|0;if(d|0)break a;d=SM(b,1)|0;if(d|0)break a;e=i+4|0;d=RM(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(d|0)break a;d=RM(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(!d)break c;else break a}case 1:{d=RM(b,i)|0;if(d|0)break a;d=SM(b,2)|0;if(d|0)break a;e=i+4|0;d=RM(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(d|0)break a;d=RM(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(!d)break c;else break a}case 2:{d=RM(b,i)|0;if(d|0)break a;d=SM(b,3)|0;if(d|0)break a;d=RM(b,c[c[i+4>>2]>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(!d)break c;else break a}default:break c}case 1:{d=c[i+4>>2]|0;e=c[d>>2]|0;f=d+4|0;g=c[f>>2]|0;if(!(c[e+8>>2]|0))h=(c[g+8>>2]|0)!=0;else h=1;c[i+8>>2]=h&1;h=XM(a,c[e+24>>2]|0,c[g+24>>2]|0,0,0)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=XM(a,c[(c[d>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,0,0)|0;c[i+28>>2]=h;if(!h){d=12;break a}break}case 3:{h=c[i+4>>2]|0;d=c[h>>2]|0;if(!(c[h+4>>2]|0))e=1;else e=(c[d+8>>2]|0)!=0&1;c[i+8>>2]=e;c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];break}case 2:{g=c[i+4>>2]|0;d=c[g>>2]|0;e=d+8|0;if(!(c[e>>2]|0))f=0;else f=(c[(c[g+4>>2]|0)+8>>2]|0)!=0;c[i+8>>2]=f&1;if(c[e>>2]|0){d=YM(b,d,0,0,j)|0;if(d|0)break b;e=ZI((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=YM(b,c[g>>2]|0,e,k,0)|0;if(d|0){n=45;break b}d=g+4|0;h=i+24|0;c[h>>2]=XM(a,c[(c[d>>2]|0)+24>>2]|0,c[(c[g>>2]|0)+24>>2]|0,e,c[k>>2]|0)|0;_I(e);if(!(c[h>>2]|0)){d=12;break b}else f=d}else{c[i+24>>2]=c[d+24>>2];f=g+4|0}d=c[f>>2]|0;if(c[d+8>>2]|0){d=YM(b,d,0,0,j)|0;if(d|0)break b;e=ZI((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=YM(b,c[f>>2]|0,e,k,0)|0;if(d|0){n=52;break b}i=i+28|0;c[i>>2]=XM(a,c[(c[g>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,e,c[k>>2]|0)|0;_I(e);if(!(c[i>>2]|0)){d=12;break b}}else c[i+28>>2]=c[d+28>>2];break}default:{}}while(0);if((QM(b)|0)<=(m|0)){d=0;break a}}if((n|0)==45)_I(e);else if((n|0)==52)_I(e)}else d=0}while(0);l=o;return d|0}function NM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){switch(c[a>>2]|0){case 2:{a=c[a+4>>2]|0;if((c[a+8>>2]|0)==-1?(h=c[a>>2]|0,h=PM(c[h+28>>2]|0,c[h+24>>2]|0,b,d,e)|0,(h|0)!=0):0){a=h;break a}break}case 3:{f=c[a+4>>2]|0;a=NM(c[f>>2]|0,b,d,e)|0;if(a|0)break a;a=f+4|0;break}case 1:{f=c[a+4>>2]|0;g=f+4|0;a=PM(c[(c[f>>2]|0)+28>>2]|0,c[(c[g>>2]|0)+24>>2]|0,b,d,e)|0;if(a|0)break a;a=NM(c[f>>2]|0,b,d,e)|0;if(!a)a=g;else break a;break}default:{a=0;break a}}a=c[a>>2]|0}return a|0}function OM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=c[a+4>>2]|0;if(h|0){e=h+4|0;a=c[h>>2]|0;if(c[e>>2]|0){d=0;do{if(c[a+(d<<5)+8>>2]|0){b=c[a+(d<<5)+16>>2]|0;if(b){_I(b);a=c[h>>2]|0}b=c[a+(d<<5)+28>>2]|0;if(b){_I(b);a=c[h>>2]|0}}d=d+1|0}while(d>>>0<(c[e>>2]|0)>>>0)}if(a|0)_I(a);d=h+8|0;a=c[d>>2]|0;if(a|0){if(c[a+8>>2]|0){while(1){b=c[a+16>>2]|0;if(b|0)_I(b);if(!(c[a+40>>2]|0))break;else a=a+32|0}a=c[d>>2]|0}_I(a)}f=h+16|0;a=c[f>>2]|0;if(a|0){g=h+28|0;b=c[g>>2]|0;if(b){e=0;do{d=c[a+(e*12|0)+8>>2]|0;if(d){_I(d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0<b>>>0)}_I(a)}a=c[h+32>>2]|0;if(a|0)_I(a);a=c[h+20>>2]|0;if(a|0)_I(a);a=c[h+36>>2]|0;if(a|0)_I(a);_I(h)}return}function PM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=c[a>>2]|0;h=(g|0)>-1;a:do if(!d)if(h){h=b+32|0;do{if((c[b>>2]|0)>-1?(y=e+(g<<2)|0,c[y>>2]=(c[y>>2]|0)+1,(c[h>>2]|0)>-1):0){g=h;do{y=e+(c[a>>2]<<2)|0;c[y>>2]=(c[y>>2]|0)+1;g=g+32|0}while((c[g>>2]|0)>-1)}a=a+32|0;g=c[a>>2]|0}while((g|0)>-1);g=0}else g=0;else if(h)while(1){h=c[b>>2]|0;b:do if((h|0)>-1){p=a+4|0;q=a+8|0;r=a+16|0;s=a+20|0;t=a+24|0;u=a+28|0;v=a+12|0;e=-1;g=b;while(1){o=h;while(1){if((o|0)!=(e|0))break;g=g+32|0;h=c[g>>2]|0;if((h|0)>-1)o=h;else break b}l=d+(c[f+(c[a>>2]<<2)>>2]<<5)|0;while(1){h=l+8|0;if(!(c[h>>2]|0))break;else l=l+32|0}c[l+40>>2]=0;c[l>>2]=c[p>>2];c[l+4>>2]=c[q>>2];c[h>>2]=d+(c[f+(o<<2)>>2]<<5);c[l+12>>2]=o;h=c[s>>2]|0;e=c[g+16>>2]|c[r>>2]|(h|0?4:0)|(c[t>>2]|0?8:0);i=l+20|0;c[i>>2]=e;j=c[u>>2]|0;if((j|0)>-1){c[i>>2]=e|256;h=j}c[l+24>>2]=h;e=c[t>>2]|0;if(!e)c[l+28>>2]=0;else{h=0;do{n=h;h=h+1|0}while((c[e+(n<<2)>>2]|0)!=0);h=ZI(h<<2)|0;c[l+28>>2]=h;if(!h){g=12;break a}k=c[t>>2]|0;e=c[k>>2]|0;if(e){j=0;i=h;do{c[i>>2]=e;j=j+1|0;e=c[k+(j<<2)>>2]|0;i=h+(j<<2)|0}while((e|0)!=0);h=i}c[h>>2]=0}e=c[v>>2]|0;if(!e)h=0;else{h=0;while(1)if((c[e+(h<<2)>>2]|0)>-1)h=h+1|0;else break}k=g+12|0;i=c[k>>2]|0;if(!i)e=0;else{e=0;while(1)if((c[i+(e<<2)>>2]|0)>-1)e=e+1|0;else break}j=l+16|0;i=c[j>>2]|0;if(i|0)_I(i);c[j>>2]=0;h=e+h|0;if((h|0)>0){n=ZI((h<<2)+4|0)|0;c[j>>2]=n;if(!n){g=12;break a}e=c[v>>2]|0;if((e|0)!=0?(w=c[e>>2]|0,(w|0)>-1):0){h=0;i=w;do{c[n+(h<<2)>>2]=i;h=h+1|0;i=c[e+(h<<2)>>2]|0}while((i|0)>-1);m=h}else m=0;j=c[k>>2]|0;if((j|0)!=0?(x=c[j>>2]|0,(x|0)>-1):0){k=(m|0)>0;h=m;i=0;l=x;do{c:do if(k){e=0;while(1){if((c[n+(e<<2)>>2]|0)==(l|0))break c;e=e+1|0;if((e|0)>=(m|0)){y=39;break}}}else y=39;while(0);if((y|0)==39){y=0;c[n+(h<<2)>>2]=l;h=h+1|0}i=i+1|0;l=c[j+(i<<2)>>2]|0}while((l|0)>-1)}else h=m;c[n+(h<<2)>>2]=-1}g=g+32|0;h=c[g>>2]|0;if((h|0)<=-1)break;else e=o}}while(0);a=a+32|0;if((c[a>>2]|0)<=-1){g=0;break}}else g=0;while(0);return g|0}function QM(a){a=a|0;return c[a+12>>2]|0}function RM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=ZM(a,e)|0;l=d;return b|0}function SM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=ZM(a,e)|0;l=d;return b|0}function TM(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function UM(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function VM(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=DM(a,0,0,1,64)|0;if(!a)a=0;else{c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+20>>2]=f;c[a+24>>2]=g;c[a+28>>2]=h;c[a+32>>2]=-1;c[a+36>>2]=-1;c[a+40>>2]=-1}return a|0}function WM(a){a=a|0;a=DM(a,0,0,1,32)|0;if(!a)a=0;else{c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=-1}return a|0}function XM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(e|0)==0;if(o)n=0;else{g=0;while(1)if((c[e+(g<<2)>>2]|0)>-1)g=g+1|0;else{n=g;break}}h=0;while(1)if((c[b+(h<<5)>>2]|0)>-1)h=h+1|0;else{g=0;break}while(1)if((c[d+(g<<5)>>2]|0)>-1)g=g+1|0;else break;g=DM(a,0,0,1,(g+h<<5)+32|0)|0;a:do if(!g)g=0;else{h=c[b>>2]|0;if((h|0)>-1){m=(n|0)>0;i=0;while(1){c[g+(i<<5)>>2]=h;c[g+(i<<5)+4>>2]=c[b+(i<<5)+4>>2];c[g+(i<<5)+8>>2]=c[b+(i<<5)+8>>2];c[g+(i<<5)+16>>2]=c[b+(i<<5)+16>>2]|f;c[g+(i<<5)+20>>2]=c[b+(i<<5)+20>>2];c[g+(i<<5)+24>>2]=c[b+(i<<5)+24>>2];c[g+(i<<5)+28>>2]=c[b+(i<<5)+28>>2];l=b+(i<<5)+12|0;j=c[l>>2]|0;h=(j|0)==0;if(o&h)h=0;else{if(h)k=0;else{h=0;while(1)if((c[j+(h<<2)>>2]|0)>-1)h=h+1|0;else{k=h;break}}h=DM(a,0,0,0,(k+n<<2)+4|0)|0;if(!h){g=0;break a}if((k|0)>0){l=c[l>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[l+(j<<2)>>2];j=j+1|0}while((j|0)!=(k|0))}else k=0;if(m){j=0;do{c[h+(j+k<<2)>>2]=c[e+(j<<2)>>2];j=j+1|0}while((j|0)!=(n|0));j=n}else j=0;c[h+(j+k<<2)>>2]=-1}c[g+(i<<5)+12>>2]=h;i=i+1|0;h=c[b+(i<<5)>>2]|0;if((h|0)<=-1){n=i;break}}}else n=0;i=c[d>>2]|0;h=g+(n<<5)|0;if((i|0)>-1){m=0;l=n;do{c[h>>2]=i;c[g+(l<<5)+4>>2]=c[d+(m<<5)+4>>2];c[g+(l<<5)+8>>2]=c[d+(m<<5)+8>>2];c[g+(l<<5)+16>>2]=c[d+(m<<5)+16>>2];c[g+(l<<5)+20>>2]=c[d+(m<<5)+20>>2];c[g+(l<<5)+24>>2]=c[d+(m<<5)+24>>2];c[g+(l<<5)+28>>2]=c[d+(m<<5)+28>>2];j=d+(m<<5)+12|0;h=c[j>>2]|0;if(!h)h=0;else{i=0;while(1)if((c[h+(i<<2)>>2]|0)>-1)i=i+1|0;else break;h=DM(a,0,0,0,(i<<2)+4|0)|0;if(!h){g=0;break a}if((i|0)>0){k=c[j>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[k+(j<<2)>>2];j=j+1|0}while((j|0)!=(i|0))}else i=0;c[h+(i<<2)>>2]=-1}c[g+(l<<5)+12>>2]=h;m=m+1|0;i=c[d+(m<<5)>>2]|0;l=m+n|0;h=g+(l<<5)|0}while((i|0)>-1)}c[h>>2]=-1}while(0);return g|0}function YM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=QM(a)|0;p=(f|0)!=0;if(p)c[f>>2]=0;b=RM(a,b)|0;a:do if(!b){m=(d|0)==0;l=(e|0)==0;if((QM(a)|0)>(o|0))while(1){b=UM(a)|0;b:do switch(c[b>>2]|0){case 0:{b=c[b+4>>2]|0;switch(c[b>>2]|0){case -3:break;case -2:{if(l)break b;c[e>>2]=c[e>>2]|c[b+4>>2];break b}default:break b}h=c[b+4>>2]|0;if((h|0)>-1){c:do if(!m){b=0;while(1){i=d+(b<<2)|0;j=c[i>>2]|0;if((j|0)<=-1)break;if((j|0)==(h|0))break c;else b=b+1|0}c[i>>2]=h;c[d+(b+1<<2)>>2]=-1}while(0);if(p)c[f>>2]=(c[f>>2]|0)+1}break}case 3:{b=c[b+4>>2]|0;h=c[b>>2]|0;if(c[h+8>>2]|0){k=h;n=6;break b}b=c[b+4>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}case 1:{b=c[b+4>>2]|0;h=RM(a,c[b>>2]|0)|0;if(h|0){g=h;break a}k=c[b+4>>2]|0;n=6;break}case 2:{b=c[c[b+4>>2]>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}default:{}}while(0);if((n|0)==6?(n=0,g=RM(a,k)|0,g|0):0)break a;if((QM(a)|0)<=(o|0)){g=0;break a}}else g=0}else g=b;while(0);return g|0}function ZM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;d=a+12|0;e=c[d>>2]|0;j=c[a>>2]|0;if((e|0)>=(j|0)){d=c[a+4>>2]|0;if((j|0)<(d|0)?(f=(c[a+8>>2]|0)+j|0,f=(f|0)>(d|0)?d:f,h=a+16|0,i=aJ(c[h>>2]|0,f<<2)|0,(i|0)!=0):0){c[a>>2]=f;c[h>>2]=i;c[g>>2]=c[b>>2];ZM(a,g)|0;d=0}else d=12}else{c[(c[a+16>>2]|0)+(e<<2)>>2]=c[b>>2];c[d>>2]=(c[d>>2]|0)+1;d=0}l=k;return d|0}function _M(a,b,d){a=a|0;b=b|0;d=d|0;a=DM(a,0,0,1,32)|0;if((d|0)!=0&(a|0)!=0){c[a+4>>2]=d;c[a>>2]=b;c[a+8>>2]=-1;c[a+12>>2]=-1}else a=0;return a|0}function $M(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=QM(d)|0;RM(d,e)|0;e=SM(d,0)|0;a:do if(!e){q=(f&1|0)==0;p=(f&2|0)!=0;o=0;l=1;e=i;while(1){if((QM(d)|0)>(r|0))n=e;else{f=o;e=0;break a}b:while(1){c:while(1){switch(TM(d)|0){case 1:{i=7;break c}case 0:{e=UM(d)|0;switch(c[e>>2]|0){case 0:{i=9;break b}case 3:{i=19;break b}case 1:{i=26;break b}case 2:{i=33;break c}default:{}}break}default:{}}if((QM(d)|0)<=(r|0)){f=o;e=0;break a}}if((i|0)==7)e=UM(d)|0;else if((i|0)==33){f=c[e+4>>2]|0;e=RM(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=SM(d,0)|0;if(e|0){f=o;break a}e=aN(b,c[f>>2]|0,c[f+4>>2]|0,c[f+8>>2]|0,a[f+12>>0]&1)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}e=c[e+4>>2]|0}if((QM(d)|0)>(r|0))n=e;else{f=o;e=0;break a}}if((i|0)==9){m=c[e+4>>2]|0;i=c[m+8>>2]|0;f=c[m>>2]|0;e=c[m+4>>2]|0;if(!((f|0)>-1|(f|0)==-4))if(q|(f|0)!=-3)if((f|0)==-3)if(p&(l|0)!=0){c[h+(e<<2)>>2]=1;f=-3;k=o;l=0}else{f=-3;k=o}else k=o;else{e=-1;f=-1;i=-1;k=o}else{i=(c[g>>2]|0)+i|0;k=o+1|0}e=KM(b,f,e,i)|0;c[n>>2]=e;if(!e)e=12;else{e=c[e+4>>2]|0;c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];e=0}if((i|0)>(c[j>>2]|0)){c[j>>2]=i;f=n}else f=n}else if((i|0)==19){i=c[e+4>>2]|0;f=i+4|0;e=bN(b,c[i>>2]|0,c[f>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}m=c[e+4>>2]|0;e=RM(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=SM(d,0)|0;if(e|0){f=o;break a}e=RM(d,m+4|0)|0;if(e|0){f=o;break a}e=SM(d,1)|0;if(e|0){f=o;break a}e=RM(d,c[i>>2]|0)|0;if(e|0){f=o;break a}k=o;f=m;e=SM(d,0)|0}else if((i|0)==26){m=c[e+4>>2]|0;i=m+4|0;e=LM(b,c[m>>2]|0,c[i>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}f=c[e+4>>2]|0;c[f>>2]=0;k=f+4|0;c[k>>2]=0;e=RM(d,c[i>>2]|0)|0;if(e|0){f=o;break a}e=SM(d,0)|0;if(e|0){f=o;break a}e=RM(d,k)|0;if(e|0){f=o;break a}e=SM(d,1)|0;if(e|0){f=o;break a}e=RM(d,c[m>>2]|0)|0;if(e|0){f=o;break a}k=o;e=SM(d,0)|0}if(!e){o=k;e=f}else{f=k;break}}}else f=0;while(0);c[g>>2]=(c[g>>2]|0)+f;return e|0}function aN(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=DM(b,0,0,1,16)|0;b=_M(b,2,h)|0;if(!b)b=0;else{c[h>>2]=d;c[h+4>>2]=e;c[h+8>>2]=f;h=h+12|0;a[h>>0]=a[h>>0]&-2|g&1;c[b+16>>2]=c[d+16>>2]}return b|0}function bN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=DM(a,0,0,1,8)|0;a=_M(a,3,e)|0;if((d|0)!=0&(a|0)!=0){c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}else d=0}return d|0}function cN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=DM(a,0,0,0,8)|0;if(((e|0)!=0?(d=KM(a,-3,d,-1)|0,c[e>>2]=d,(d|0)!=0):0)?(f=DM(a,0,0,0,32)|0,c[e+4>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function dN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=c[a>>2]|0;if((f|0)>-1){g=c[b+16>>2]|0;e=0;b=f;do{f=b>>>1;c[((b&1|0)==0?g+(f*12|0)|0:g+(f*12|0)+4|0)>>2]=d;e=e+1|0;b=c[a+(e<<2)>>2]|0}while((b|0)>-1)}c[a>>2]=-1;return}function eN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=DM(a,0,0,0,8)|0;if(((e|0)!=0?(d=KM(a,-3,d,-1)|0,c[e+4>>2]=d,(d|0)!=0):0)?(f=DM(a,0,0,0,32)|0,c[e>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function fN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;i=b+32|0;h=c[i>>2]|0;g=h&1;a:do switch(a[d>>0]|0){case 91:{e=jN(b,d+1|0)|0;break}case 92:{e=d+1|0;f=kN(e)|0;if(f|0){e=fN(b,f)|0;c[b+12>>2]=d+2;break a}f=a[e>>0]|0;switch(f|0){case 0:{e=5;break a}case 98:{f=KM(c[b>>2]|0,-2,64,-1)|0;break}case 66:{f=KM(c[b>>2]|0,-2,128,-1)|0;break}case 60:{f=KM(c[b>>2]|0,-2,16,-1)|0;break}case 62:{f=KM(c[b>>2]|0,-2,32,-1)|0;break}case 120:{h=d+2|0;i=(a[h>>0]|0)==123;g=i?8:2;h=i?d+3|0:h;e=0;f=0;do{d=lN(a[h+e>>0]|0)|0;if((d|0)<0)break;f=d+(f<<4)|0;e=e+1|0}while((f|0)<1114112&(e|0)<(g|0));e=h+e|0;if(i){if((a[e>>0]|0)!=125){e=9;break a}e=e+1|0}j=c[b>>2]|0;i=b+24|0;k=c[i>>2]|0;c[i>>2]=k+1;f=KM(j,f,f,k)|0;e=e+-1|0;break}case 63:case 43:case 123:if(!g){e=13;break a}else{k=37;break a}case 124:{if(g|0){k=37;break a}e=KM(c[b>>2]|0,-1,-1,-1)|0;k=45;break a}default:{if(!((g|0)==0&(f+-49|0)>>>0<9)){k=37;break a}j=f+-48|0;k=c[b>>2]|0;i=b+24|0;f=c[i>>2]|0;c[i>>2]=f+1;f=KM(k,-4,j,f)|0;k=b+28|0;i=c[k>>2]|0;c[k>>2]=(j|0)<(i|0)?i:j}}d=e+1|0;e=f;k=45;break}case 46:{e=c[b>>2]|0;g=b+24|0;f=c[g>>2]|0;c[g>>2]=f+1;if(h&4){f=KM(e,0,9,f)|0;k=c[b>>2]|0;e=c[g>>2]|0;c[g>>2]=e+1;e=KM(k,11,1114111,e)|0;if((f|0)!=0&(e|0)!=0)e=bN(c[b>>2]|0,f,e)|0;else e=0}else e=KM(e,0,1114111,f)|0;d=d+1|0;k=45;break}case 94:{if((g|0)==0?(c[b+16>>2]|0)!=(d|0):0){e=d;k=37;break a}d=d+1|0;e=KM(c[b>>2]|0,-2,1,-1)|0;k=45;break}case 36:{e=d+1|0;if((g|0)==0?a[e>>0]|0:0){e=d;k=37;break a}d=e;e=KM(c[b>>2]|0,-2,2,-1)|0;k=45;break}case 63:case 43:case 123:case 42:{if(!g){e=d;k=37}else e=13;break}case 124:{if(!g){e=d;k=37}else k=36;break}case 0:{k=36;break}default:{e=d;k=37}}while(0);if((k|0)==36){e=KM(c[b>>2]|0,-1,-1,-1)|0;k=45}else if((k|0)==37){h=UL(j,e,-1)|0;if((h|0)<0)e=2;else{do if(c[i>>2]&2){if((IK(c[j>>2]|0)|0)==0?(HK(c[j>>2]|0)|0)==0:0){k=43;break}i=c[b>>2]|0;n=lK(c[j>>2]|0)|0;g=lK(c[j>>2]|0)|0;f=b+24|0;g=KM(i,n,g,c[f>>2]|0)|0;n=c[b>>2]|0;i=KK(c[j>>2]|0)|0;d=KK(c[j>>2]|0)|0;d=KM(n,i,d,c[f>>2]|0)|0;if((g|0)!=0&(d|0)!=0)g=bN(c[b>>2]|0,g,d)|0;else g=0}else k=43;while(0);if((k|0)==43){g=c[j>>2]|0;f=b+24|0;g=KM(c[b>>2]|0,g,g,c[f>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1;d=e+h|0;e=g;k=45}}if((k|0)==45)if(!e)e=12;else{c[b+8>>2]=e;c[b+12>>2]=d;e=0}l=m;return e|0}function gN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+4|0;g=j;b=iN(b,i)|0;if((a[b>>0]|0)==44){b=iN(b+1|0,g)|0;h=c[g>>2]|0;g=c[i>>2]|0}else{i=c[i>>2]|0;c[g>>2]=i;h=i;g=i}do if(!(g>>>0>255|((h|0)>255|(h|0)>-1&(h|0)<(g|0)))){if(!d)if((a[b>>0]|0)==92)b=b+1|0;else{b=0;break}if((a[b>>0]|0)==125){c[e>>2]=g;c[f>>2]=h;b=b+1|0}else b=0}else b=0;while(0);l=j;return b|0}function hN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((c[b+12>>2]|0)>-1){e=KM(c[a>>2]|0,-1,-1,-1)|0;if((e|0)!=0?(f=LM(c[a>>2]|0,e,b)|0,(f|0)!=0):0){e=c[b+16>>2]|0;c[f+16>>2]=e;g=6}else e=12}else{f=b;e=c[b+16>>2]|0;g=6}if((g|0)==6){c[f+12>>2]=d;c[f+16>>2]=e+1;c[a+8>>2]=f;e=0}return e|0}function iN(b,d){b=b|0;d=d|0;var e=0;c[d>>2]=-1;a:do if(_J(a[b>>0]|0)|0){c[d>>2]=0;e=0;do{c[d>>2]=(e*10|0)+-48+(a[b>>0]|0);b=b+1|0;if(!(_J(a[b>>0]|0)|0))break a;e=c[d>>2]|0}while((e|0)<=255)}while(0);return b|0}function jN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+288|0;e=s+264|0;g=s;c[e>>2]=c[b>>2];h=e+8|0;c[h>>2]=0;c[e+12>>2]=32;p=ZI(128)|0;r=e+4|0;c[r>>2]=p;if(!p)d=12;else{f=g+4|0;c[f>>2]=0;p=(a[d>>0]|0)==94;c[g>>2]=p&1;d=mN(b,p?d+1|0:d,e,g)|0;a:do if(!d){p=(c[g>>2]|0)==0;if(!p){rL(c[r>>2]|0,c[h>>2]|0,4,41);d=oN(e)|0;if(!d){d=12;e=0;break}c[d>>2]=1114112;c[d+4>>2]=1114112;c[d+8>>2]=-1;d=c[f>>2]|0;if(d){e=d<<2;f=DM(c[b>>2]|0,0,0,0,e+4|0)|0;if(!f){d=12;e=0;break}TN(f|0,g+8|0,e|0)|0;c[f+(d<<2)>>2]=0}else f=0}else f=0;m=c[h>>2]|0;if((m|0)>0){n=c[r>>2]|0;o=b+24|0;e=0;d=0;k=0;while(1){j=c[n+(k<<2)>>2]|0;g=c[j>>2]|0;h=j+4|0;i=c[h>>2]|0;do if(!p)if((g|0)>(d|0)){c[j>>2]=d;c[h>>2]=g+-1;d=i+1|0;q=14;break}else{j=i+1|0;d=(j|0)>=(d|0)?j:d;break}else q=14;while(0);if((q|0)==14){q=0;c[j+8>>2]=c[o>>2];c[j+16>>2]=f;j=_M(c[b>>2]|0,0,j)|0;e=bN(c[b>>2]|0,e,j)|0;if(!e){d=12;e=0;break a}}k=k+1|0;if((k|0)>=(m|0)){d=0;break}}}else{d=0;e=0}}else e=0;while(0);_I(c[r>>2]|0);r=b+24|0;c[r>>2]=(c[r>>2]|0)+1;c[b+8>>2]=e}l=s;return d|0}function kN(b){b=b|0;var d=0;d=a[b>>0]|0;b=0;while(1){if((a[56576+(b<<3)>>0]|0)==d<<24>>24)break;b=b+1|0;if((b|0)==12){b=12;break}}return c[56576+(b<<3)+4>>2]|0}function lN(a){a=a|0;var b=0;b=a+-48|0;if(b>>>0<10)return b|0;else{b=a|32;return ((b+-97|0)>>>0<6?b+-87|0:-1)|0}return 0}function mN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+32|0;o=t;q=t+4|0;i=UL(o,d,-1)|0;g=a[d>>0]|0;a:do if((i|0)>=1){r=f+4|0;n=b+32|0;h=d;j=i;b:while(1){i=(h|0)==(d|0);if(!(i|g<<24>>24!=93)){s=5;break}c:do if(!(i|g<<24>>24!=45)){switch(a[h+1>>0]|0){case 93:break c;case 45:break;default:{g=11;break a}}if((a[h+2>>0]|0)==93){g=11;break a}}while(0);d:do if(g<<24>>24==91){switch(a[h+1>>0]|0){case 61:case 46:{g=3;break a}case 58:break;default:{s=17;break d}}i=h+2|0;g=0;e:while(1){switch(a[i+g>>0]|0){case 0:{s=16;break b}case 58:break e;default:{}}if((g|0)<13)g=g+1|0;else{s=16;break b}}TN(q|0,i|0,g|0)|0;a[q+g>>0]=0;j=aL(q)|0;if(!j){s=16;break b}h=i+(g+2)|0;if((a[i+(g+1)>>0]|0)!=93){s=16;break b}if(!(c[f>>2]|0)){g=1114111;m=0;k=1;s=25}else{g=c[r>>2]|0;if((g|0)>63){g=12;break a}c[r>>2]=g+1;c[f+8+(g<<2)>>2]=j}}else s=17;while(0);if((s|0)==17){s=0;i=c[o>>2]|0;h=h+j|0;if((a[h>>0]|0)==45?(p=h+1|0,(a[p>>0]|0)!=93):0){h=UL(o,p,-1)|0;g=c[o>>2]|0;if((h|0)<1|(i|0)>(g|0)){g=11;break a}j=0;m=i;h=p+h|0;k=0;s=25}else{j=0;g=i;m=i;k=0;s=25}}if((s|0)==25){s=0;i=oN(e)|0;if(!i){g=12;break a}c[i>>2]=m;c[i+4>>2]=g;c[i+12>>2]=j;c[i+8>>2]=-1;if(!(k|(c[n>>2]&2|0)==0)?(pN(e,m,g)|0)!=0:0){g=12;break a}}j=UL(o,h,-1)|0;g=a[h>>0]|0;if((j|0)<1){s=3;break a}}if((s|0)==5){c[b+12>>2]=h+1;g=0;break}else if((s|0)==16){g=4;break}}else s=3;while(0);if((s|0)==3)g=g<<24>>24?2:7;l=t;return g|0}function nN(a,b){a=a|0;b=b|0;return (c[c[a>>2]>>2]|0)-(c[c[b>>2]>>2]|0)|0}function oN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=c[h>>2]|0;e=a+12|0;f=c[e>>2]|0;if((d|0)>=(f|0))if((f|0)<=32767?(c[e>>2]=f<<1,g=a+4|0,b=aJ(c[g>>2]|0,f<<3)|0,(b|0)!=0):0){c[g>>2]=b;d=c[h>>2]|0;i=6}else b=0;else{b=c[a+4>>2]|0;i=6}if((i|0)==6){c[h>>2]=d+1;i=DM(c[a>>2]|0,0,0,1,20)|0;c[b+(d<<2)>>2]=i;b=i}return b|0}function pN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if((b|0)>(d|0))b=0;else while(1){b:do if(!(HK(b)|0)){if(!(IK(b)|0)){b=b+1|0;break}f=KK(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((KK(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}else{f=lK(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((lK(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}while(0);if((g|0)==12){g=0;f=oN(a)|0;if(!f){b=-1;break a}c[f>>2]=h;c[f+4>>2]=e+-1;c[f+8>>2]=-1}if((b|0)>(d|0)){b=0;break}}while(0);return b|0}function qN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;i=c[a+4>>2]|0;j=i+56|0;h=(c[j>>2]&8|0)==0?d:0;a=c[i+40>>2]|0;if((a|0)>0&(h|0)!=0){a=ZI(a<<2)|0;if(!a)a=12;else{g=a;d=a;m=3}}else{g=0;d=0;m=3}if((m|0)==3){if(!(c[i+60>>2]|0))a=sN(i,b,g,f,k)|0;else a=rN(i,b,g,f,k)|0;if(!a)tN(h,e,c[j>>2]|0,i,g,c[k>>2]|0);if(g)_I(d)}l=n;return a|0}function rN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=l;l=l+16|0;T=V;c[T>>2]=0;o=e&1;R=e&2;S=a+56|0;n=c[S>>2]&4;U=BM(0,0)|0;a:do if(U){p=DM(U,0,0,0,32)|0;if(!p){CM(U);e=12;break}c[p+24>>2]=0;c[p+28>>2]=0;Q=a+40|0;e=c[Q>>2]|0;if(e){e=ZI(e<<2)|0;if(!e){m=0;k=0;j=e;e=12;i=0;h=0;g=0}else{j=e;i=e;C=6}}else{j=0;i=0;C=6}b:do if((C|0)==6){e=c[a+28>>2]|0;if(e){e=ZI(e<<3)|0;if(!e){m=e;k=0;e=12;h=0;g=0;break}else{m=e;h=e}}else{m=0;h=0}P=a+52|0;e=c[P>>2]|0;if(e){e=ZI(e<<2)|0;if(!e){k=e;e=12;g=0;break}else{k=e;g=e}}else{k=0;g=0}K=a+8|0;L=a+12|0;M=(d|0)==0;N=(d|0)!=0;O=a+32|0;J=(n|0)!=0;I=(o|0)==0;r=b;e=1;q=-1;v=-1;B=0;c:while(1){n=c[Q>>2]|0;if((n|0)>0){o=0;do{c[j+(o<<2)>>2]=-1;if(!M){c[d+(o<<2)>>2]=-1;n=c[Q>>2]|0}o=o+1|0}while((o|0)<(n|0))}n=c[P>>2]|0;if((n|0)>0)VN(g|0,0,n<<2|0)|0;G=e+q|0;e=UL(T,r,4)|0;if((e|0)<1)if((e|0)<0){e=1;break b}else e=1;F=r+e|0;H=c[T>>2]|0;n=c[K>>2]|0;o=n+8|0;if(c[o>>2]|0){w=(G|0)!=0;x=(B|0)==95;y=(G|0)==0;A=J&(B|0)==10;z=(G|0)<1&I;u=n;n=0;t=0;s=o;while(1){r=u+20|0;o=c[r>>2]|0;d:do if(o)if((o&1|0)==0|z|A){if(o&2|0?(E=c[T>>2]|0,!((E|R|0)==0|J&(E|0)==10)):0){q=t;break}do if(o&16|0){if(x){q=t;break d}if(DK(B)|0){q=t;break d}o=c[T>>2]|0;if((o|0)==95)break;if(!(DK(o)|0)){q=t;break d}}while(0);o=c[r>>2]|0;if(o&32){if(x){o=c[T>>2]|0;if((o|0)==95){q=t;break}}else{E=(DK(B)|0)==0;o=c[T>>2]|0;if(E|(o|0)==95){q=t;break}}if(DK(o)|0){q=t;break}o=c[r>>2]|0}q=c[T>>2]|0;do if((q|0)!=0&(w&(o&64|0)!=0)){if(x)o=1;else{o=(DK(B)|0)!=0;q=c[T>>2]|0}if((q|0)==95)if(o){q=t;break d}else break;else if(o^(DK(q)|0)!=0)break;else{q=t;break d}}while(0);if(!(c[r>>2]&128)){C=49;break}o=c[T>>2]|0;if(y|(o|0)==0){q=t;break}if(x)q=1;else{q=(DK(B)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(q){C=49;break}else{q=t;break}else if(q^(DK(o)|0)!=0){q=t;break}else{C=49;break}}else q=t;else C=49;while(0);do if((C|0)==49){C=0;if(!t){n=c[u+16>>2]|0;q=c[s>>2]|0;break}q=p+28|0;o=c[q>>2]|0;if(!o){o=DM(U,0,0,0,32)|0;if(!o){C=53;break c}c[o+24>>2]=p;c[o+28>>2]=0;E=DM(U,0,0,0,c[Q>>2]<<2)|0;c[o+20>>2]=E;if(!E){C=60;break c}c[q>>2]=o;p=o}else p=o;c[p>>2]=G;c[p+4>>2]=F;c[p+8>>2]=c[s>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){q=c[p+20>>2]|0;o=0;do{c[q+(o<<2)>>2]=c[j+(o<<2)>>2];o=o+1|0}while((o|0)<(c[Q>>2]|0))}o=c[u+16>>2]|0;if(!o)q=t;else{q=c[o>>2]|0;if((q|0)<=-1){q=t;break}r=c[p+20>>2]|0;do{o=o+4|0;c[r+(q<<2)>>2]=G;q=c[o>>2]|0}while((q|0)>-1);q=t}}while(0);s=u+40|0;if(!(c[s>>2]|0))break;else{u=u+32|0;t=q}}if(n){o=c[n>>2]|0;if((o|0)>-1)do{c[j+(o<<2)>>2]=G;n=n+4|0;o=c[n>>2]|0}while((o|0)>-1)}else n=0;if(!q)C=171;else{s=G;r=F;w=q;x=n;C=79}}else{n=0;C=171}e:while(1){if((C|0)==79){if((w|0)==(c[L>>2]|0)){if((v|0)>=(s|0)){if(!(N&(v|0)==(s|0))){n=x;C=171;continue}n=c[Q>>2]|0;if(!(vN(n,c[O>>2]|0,j,d)|0)){n=x;C=171;continue}}else{if(M){v=s;n=x;C=171;continue}n=c[Q>>2]|0}if((n|0)>0)n=0;else{v=s;n=x;C=171;continue}while(1){c[d+(n<<2)>>2]=c[j+(n<<2)>>2];n=n+1|0;if((n|0)>=(c[Q>>2]|0)){v=s;n=x;C=171;continue e}}}u=w+8|0;if((c[u>>2]|0)!=0?(c[w+20>>2]&256|0)!=0:0){o=c[w+24>>2]|0;tN(o+1|0,m,c[S>>2]&-9,a,j,s);E=c[m+(o<<3)>>2]|0;o=(c[m+(o<<3)+4>>2]|0)-E|0;if(VJ(b+E|0,r+-1|0,o)|0){n=x;C=171;continue}E=(o|0)==0;n=E&1;q=c[w+12>>2]|0;if(E?c[k+(q<<2)>>2]|0:0){n=x;C=171;continue}c[k+(q<<2)>>2]=n;o=o+-1|0;r=r+o|0;o=o+s|0;q=c[T>>2]|0;n=UL(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;D=r+n|0;E=n}else{q=c[T>>2]|0;if(!q){n=x;C=171;continue}n=UL(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;o=s;D=r+n|0;E=n}s=o+e|0;if(!(c[u>>2]|0)){e=E;n=x;C=171;continue}y=(s|0)!=0;z=(q|0)==95;A=(s|0)==0;C=J&(q|0)==10;B=(s|0)<1&I;t=0;n=x;while(1){f:do if((c[w>>2]|0)>>>0<=q>>>0){if((c[w+4>>2]|0)>>>0<q>>>0)break;r=w+20|0;e=c[r>>2]|0;do if(e|0){if(!((e&1|0)==0|B|C))break f;if(e&2|0?(x=c[T>>2]|0,!((x|R|0)==0|J&(x|0)==10)):0)break f;do if(e&16|0){if(z)break f;if(DK(q)|0)break f;e=c[T>>2]|0;if((e|0)==95)break;if(!(DK(e)|0))break f}while(0);e=c[r>>2]|0;if(e&32){if(z){e=c[T>>2]|0;if((e|0)==95)break f}else{x=(DK(q)|0)==0;e=c[T>>2]|0;if(x|(e|0)==95)break f}if(DK(e)|0)break f;e=c[r>>2]|0}o=c[T>>2]|0;do if((o|0)!=0&(y&(e&64|0)!=0)){if(z)e=1;else{e=(DK(q)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(e)break f;else break;else if(e^(DK(o)|0)!=0)break;else break f}while(0);do if(c[r>>2]&128|0){e=c[T>>2]|0;if(A|(e|0)==0)break f;if(z)o=1;else{o=(DK(q)|0)!=0;e=c[T>>2]|0}if((e|0)==95)if(o)break;else break f;else if(o^(DK(e)|0)!=0)break f;else break}while(0);e=c[r>>2]|0;do if(e&4){if(c[S>>2]&2|0)break;if(!(CK(q,c[w+24>>2]|0)|0))break f;e=c[r>>2]|0}while(0);do if(e&4|0){if(!(c[S>>2]&2))break;x=KK(q)|0;e=w+24|0;if(CK(x,c[e>>2]|0)|0)break;x=lK(q)|0;if(!(CK(x,c[e>>2]|0)|0))break f}while(0);if(!(c[r>>2]&8))break;if(uN(c[w+28>>2]|0,q,c[S>>2]&2)|0)break f}while(0);if(!t){t=c[u>>2]|0;n=c[w+16>>2]|0;break}o=p+28|0;e=c[o>>2]|0;if(!e){e=DM(U,0,0,0,32)|0;if(!e){C=145;break c}c[e+24>>2]=p;c[e+28>>2]=0;x=DM(U,0,0,0,c[Q>>2]<<2)|0;c[e+20>>2]=x;if(!x){C=152;break c}c[o>>2]=e;p=e}else p=e;c[p>>2]=s;c[p+4>>2]=D;c[p+8>>2]=c[u>>2];c[p+12>>2]=c[w+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){o=c[p+20>>2]|0;e=0;do{c[o+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)<(c[Q>>2]|0))}e=c[w+16>>2]|0;if(!e)break;o=c[e>>2]|0;if((o|0)<=-1)break;r=c[p+20>>2]|0;do{c[r+(o<<2)>>2]=s;e=e+4|0;o=c[e>>2]|0}while((o|0)>-1)}while(0);u=w+40|0;if(!(c[u>>2]|0))break;else w=w+32|0}if(!t){e=E;C=171;continue}if(n){e=c[n>>2]|0;if((e|0)>-1){do{n=n+4|0;c[j+(e<<2)>>2]=s;e=c[n>>2]|0}while((e|0)>-1);q=v;o=D;e=E}else{q=v;o=D;e=E}}else{q=v;o=D;e=E;n=0}}else if((C|0)==171){C=0;r=c[p+24>>2]|0;if(!r)break;t=c[p+8>>2]|0;if(c[t+20>>2]&256|0)c[k+(c[p+12>>2]<<2)>>2]=0;s=c[p>>2]|0;u=c[p+4>>2]|0;c[T>>2]=c[p+16>>2];q=c[Q>>2]|0;if((q|0)>0){p=c[p+20>>2]|0;o=0;do{c[j+(o<<2)>>2]=c[p+(o<<2)>>2];o=o+1|0}while((o|0)<(q|0));p=r;q=v;o=u}else{p=r;q=v;o=u}}r=o;v=q;w=t;x=n;C=79}n=(v|0)>-1;if(n|(c[T>>2]|0)==0){C=180;break}c[T>>2]=H;r=F;q=G;B=H}if((C|0)==53){CM(U);if(j|0)_I(i);if(m|0)_I(h);if(!k){e=12;break a}_I(g);e=12;break a}else if((C|0)==60){CM(U);if(j|0)_I(i);if(m|0)_I(h);if(!k){e=12;break a}_I(g);e=12;break a}else if((C|0)==145){CM(U);if(j|0)_I(i);if(m|0)_I(h);if(!k){e=12;break a}_I(g);e=12;break a}else if((C|0)==152){CM(U);if(j|0)_I(i);if(m|0)_I(h);if(!k){e=12;break a}_I(g);e=12;break a}else if((C|0)==180){c[f>>2]=v;e=(n^1)&1;break}}while(0);CM(U);if(j|0)_I(i);if(m|0)_I(h);if(k)_I(g)}else e=12;while(0);l=V;return e|0}
function sN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+16|0;T=W;c[T>>2]=0;k=e&1;Q=e&2;R=a+56|0;j=c[R>>2]&4;if(!d)N=0;else N=c[a+40>>2]|0;P=N<<2;i=a+52|0;e=c[i>>2]|0;h=e<<3;g=h+8|0;e=P+12+h+(g+(O(P,e)|0)<<1)|0;U=ZI(e)|0;if(!U)e=12;else{VN(U|0,0,e|0)|0;e=U+P|0;m=e&3;m=e+((m|0)==0?0:4-m|0)|0;e=m+g|0;n=e&3;n=e+((n|0)==0?0:4-n|0)|0;e=n+g|0;M=e&3;M=e+((M|0)==0?0:4-M|0)|0;e=M+h|0;g=e&3;i=c[i>>2]|0;h=(i|0)>0;if(h){e=e+((g|0)==0?0:4-g|0)|0;g=0;while(1){c[n+(g<<3)+4>>2]=e;e=e+P|0;c[m+(g<<3)+4>>2]=e;g=g+1|0;if((g|0)>=(i|0))break;else e=e+P|0}if(h){e=0;do{c[M+(e<<3)>>2]=-1;e=e+1|0}while((e|0)<(i|0))}}e=UL(T,b,4)|0;if((e|0)<1)if((e|0)<0)e=1;else{i=1;V=11}else{i=e;V=11}a:do if((V|0)==11){L=a+8|0;K=(j|0)!=0;E=(k|0)==0;F=(N|0)>0;G=a+12|0;H=(N|0)<1;I=a+44|0;J=a+32|0;C=a+36|0;D=(N|0)==0;h=0;v=b+i|0;u=0;j=0;e=-1;g=m;A=U;x=m;w=n;while(1){if((e|0)<0){a=c[L>>2]|0;k=a+8|0;b:do if(c[k>>2]|0){p=(u|0)!=0;q=(h|0)==95;r=(u|0)==0;t=K&(h|0)==10;s=(u|0)<1&E;while(1){c:while(1){o=a+12|0;if((c[M+(c[o>>2]<<3)>>2]|0)>=(u|0))break;n=a+20|0;b=c[n>>2]|0;if(!b){V=46;break}d:do if((b&1|0)==0|s|t){if(b&2|0?(B=c[T>>2]|0,!((B|Q|0)==0|K&(B|0)==10)):0)break;do if(b&16|0){if(q)break d;if(DK(h)|0)break d;b=c[T>>2]|0;if((b|0)==95)break;if(!(DK(b)|0))break d}while(0);b=c[n>>2]|0;if(b&32){if(q){b=c[T>>2]|0;if((b|0)==95)break}else{B=(DK(h)|0)==0;b=c[T>>2]|0;if(B|(b|0)==95)break}if(DK(b)|0)break;b=c[n>>2]|0}m=c[T>>2]|0;do if((m|0)!=0&(p&(b&64|0)!=0)){if(q)b=1;else{b=(DK(h)|0)!=0;m=c[T>>2]|0}if((m|0)==95)if(b)break d;else break;else if(b^(DK(m)|0)!=0)break;else break d}while(0);if(!(c[n>>2]&128)){V=46;break c}b=c[T>>2]|0;if(r|(b|0)==0)break;if(q)m=1;else{m=(DK(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(m){V=46;break c}else break;else if(m^(DK(b)|0)!=0)break;else{V=46;break c}}while(0);k=a+40|0;if(!(c[k>>2]|0))break b;else a=a+32|0}if((V|0)==46){V=0;c[g>>2]=c[k>>2];if(F)VN(c[g+4>>2]|0,-1,P|0)|0;k=c[a+16>>2]|0;if(k|0?(S=c[k>>2]|0,(S|0)>-1):0){m=g+4|0;b=S;do{if((b|0)<(N|0))c[(c[m>>2]|0)+(b<<2)>>2]=u;k=k+4|0;b=c[k>>2]|0}while((b|0)>-1)}k=(c[g>>2]|0)!=(c[G>>2]|0);if(k|H){j=k?j:1;e=k?e:u;k=g+4|0}else{k=g+4|0;j=c[k>>2]|0;e=0;do{c[d+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)!=(N|0));j=1;e=u}B=c[o>>2]|0;c[M+(B<<3)>>2]=u;c[M+(B<<3)+4>>2]=k;g=g+8|0}k=a+40|0;if(!(c[k>>2]|0))break;else a=a+32|0}}while(0);c[g>>2]=0;g=c[T>>2]|0;if(!g)break;else h=g}else{if(D)break;h=c[T>>2]|0;if(!((g|0)!=(x|0)&(h|0)!=0))break}B=u+i|0;g=UL(T,v,4)|0;if((g|0)<1)if((g|0)<0){e=1;break a}else i=1;else i=g;z=v+i|0;if((j|0)!=0&(c[I>>2]|0)!=0){if(!(c[x>>2]|0))g=w;else{o=c[C>>2]|0;p=c[o>>2]|0;q=(p|0)>-1;n=x;g=w;do{m=n+4|0;e:do if(q){k=0;b=p;do{a=c[o+((k|1)<<2)>>2]|0;if((b|0)>=(N|0))break e;j=c[m>>2]|0;if((c[j+(a<<2)>>2]|0)==(c[d+(a<<2)>>2]|0)?(c[j+(b<<2)>>2]|0)<(c[d+(b<<2)>>2]|0):0)break e;k=k+2|0;b=c[o+(k<<2)>>2]|0}while((b|0)>-1);k=m;V=75}else{k=m;j=c[m>>2]|0;V=75}while(0);if((V|0)==75){V=0;c[g>>2]=c[n>>2];v=g+4|0;y=c[v>>2]|0;c[v>>2]=j;c[k>>2]=y;g=g+8|0}n=n+8|0}while((c[n>>2]|0)!=0)}c[g>>2]=0;y=x;j=0}else{y=w;w=x}k=c[w>>2]|0;if(!k){k=A;g=y}else{r=(B|0)!=0;s=(h|0)==95;t=(B|0)==0;v=K&(h|0)==10;u=(B|0)<1&E;q=w;a=A;g=y;while(1){b=k+8|0;if(c[b>>2]|0){p=q+4|0;o=a;n=b;while(1){f:do if((c[k>>2]|0)>>>0<=h>>>0?(c[k+4>>2]|0)>>>0>=h>>>0:0){m=k+20|0;a=c[m>>2]|0;do if(a|0){if(!((a&1|0)==0|u|v)){a=o;break f}if(a&2|0?(A=c[T>>2]|0,!((A|Q|0)==0|K&(A|0)==10)):0){a=o;break f}do if(a&16|0){if(s){a=o;break f}if(DK(h)|0){a=o;break f}a=c[T>>2]|0;if((a|0)==95)break;if(!(DK(a)|0)){a=o;break f}}while(0);a=c[m>>2]|0;if(a&32){if(s){a=c[T>>2]|0;if((a|0)==95){a=o;break f}}else{A=(DK(h)|0)==0;a=c[T>>2]|0;if(A|(a|0)==95){a=o;break f}}if(DK(a)|0){a=o;break f}a=c[m>>2]|0}b=c[T>>2]|0;do if((b|0)!=0&(r&(a&64|0)!=0)){if(s)a=1;else{a=(DK(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(a){a=o;break f}else break;else if(a^(DK(b)|0)!=0)break;else{a=o;break f}}while(0);do if(c[m>>2]&128|0){a=c[T>>2]|0;if(t|(a|0)==0){a=o;break f}if(s)b=1;else{b=(DK(h)|0)!=0;a=c[T>>2]|0}if((a|0)==95)if(b)break;else{a=o;break f}else if(b^(DK(a)|0)!=0){a=o;break f}else break}while(0);a=c[m>>2]|0;do if(a&4){if(c[R>>2]&2|0)break;if(!(CK(h,c[k+24>>2]|0)|0)){a=o;break f}a=c[m>>2]|0}while(0);do if(a&4|0){if(!(c[R>>2]&2))break;A=KK(h)|0;a=k+24|0;if(CK(A,c[a>>2]|0)|0)break;A=lK(h)|0;if(!(CK(A,c[a>>2]|0)|0)){a=o;break f}}while(0);if(!(c[m>>2]&8))break;if(uN(c[k+28>>2]|0,h,c[R>>2]&2)|0){a=o;break f}}while(0);if(F){b=c[p>>2]|0;a=0;do{c[o+(a<<2)>>2]=c[b+(a<<2)>>2];a=a+1|0}while((a|0)!=(N|0))}a=c[k+16>>2]|0;do if(a|0){b=c[a>>2]|0;if((b|0)<=-1)break;do{if((b|0)<(N|0))c[o+(b<<2)>>2]=B;a=a+4|0;b=c[a>>2]|0}while((b|0)>-1)}while(0);a=c[k+12>>2]|0;b=M+(a<<3)|0;if((c[b>>2]|0)>=(B|0)){a=c[M+(a<<3)+4>>2]|0;b=c[a>>2]|0;if(!(vN(N,c[J>>2]|0,o,b)|0)){a=o;break}c[a>>2]=o;if((c[n>>2]|0)!=(c[G>>2]|0)){a=b;break}if(F)e=0;else{j=1;a=b;e=B;break}while(1){c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0;if((e|0)==(N|0)){j=1;a=b;e=B;break f}}}A=c[n>>2]|0;c[g>>2]=A;x=g+4|0;m=c[x>>2]|0;c[x>>2]=o;c[b>>2]=B;c[M+(a<<3)+4>>2]=x;do if((c[G>>2]|0)==(A|0)){if((e|0)==-1)if(F)e=0;else{e=B;j=1;break}else{if(!F)break;if((c[o>>2]|0)>(c[d>>2]|0))break;else e=0}do{c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0}while((e|0)<(N|0));e=B;j=1}while(0);a=m;g=g+8|0}else a=o;while(0);n=k+40|0;if(!(c[n>>2]|0))break;else{k=k+32|0;o=a}}}q=q+8|0;k=c[q>>2]|0;if(!k){k=a;break}}}c[g>>2]=0;v=z;u=B;A=k;x=y}c[f>>2]=e;e=e>>>31}while(0);_I(U)}l=W;return e|0}function tN(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((d&8|0)==0&(g|0)>-1?(m=c[e+16>>2]|0,n=c[e+28>>2]|0,l=(a|0)!=0&(n|0)!=0,l):0){k=c[e+48>>2]|0;j=0;do{d=c[m+(j*12|0)>>2]|0;if((d|0)==(k|0))i=g;else i=c[f+(d<<2)>>2]|0;h=b+(j<<3)|0;c[h>>2]=i;d=c[m+(j*12|0)+4>>2]|0;if((d|0)==(k|0))d=g;else d=c[f+(d<<2)>>2]|0;e=b+(j<<3)+4|0;c[e>>2]=d;if((d|0)==-1|(i|0)==-1){c[e>>2]=-1;c[h>>2]=-1}j=j+1|0}while(j>>>0<a>>>0&j>>>0<n>>>0);if(l){d=0;do{i=b+(d<<3)+4|0;j=c[m+(d*12|0)+8>>2]|0;if(j|0?(o=c[j>>2]|0,(o|0)>-1):0){k=b+(d<<3)|0;h=0;f=o;e=c[k>>2]|0;do{if(!((e|0)>=(c[b+(f<<3)>>2]|0)?(c[i>>2]|0)<=(c[b+(f<<3)+4>>2]|0):0)){c[i>>2]=-1;c[k>>2]=-1;e=-1}h=h+1|0;f=c[j+(h<<2)>>2]|0}while((f|0)>-1)}d=d+1|0}while(d>>>0<a>>>0&d>>>0<n>>>0)}else d=0}else d=0;if(d>>>0<a>>>0)VN(b+(d<<3)|0,-1,a-d<<3|0)|0;return}function uN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;a:do if(!e)d=0;else{f=(d|0)==0;d=e;while(1){if(f){if(CK(b,d)|0){d=1;break a}}else{e=lK(b)|0;if(CK(e,c[a>>2]|0)|0){d=1;break a}e=KK(b)|0;if(CK(e,c[a>>2]|0)|0){d=1;break a}}a=a+4|0;d=c[a>>2]|0;if(!d){d=0;break}}}while(0);return d|0}function vN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if((a|0)>0){f=0;while(1){h=c[d+(f<<2)>>2]|0;g=c[e+(f<<2)>>2]|0;if(!(c[b+(f<<2)>>2]|0)){if((h|0)<(g|0)){f=1;break a}if((h|0)>(g|0)){f=0;break a}}else{if((h|0)>(g|0)){f=1;break a}if((h|0)<(g|0)){f=0;break a}}f=f+1|0;if((f|0)>=(a|0)){f=0;break}}}else f=0;while(0);return f|0}function wN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=O(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=OK(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0<k>>>0?i:k;TN(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(eK(f)|0)break;h=bb[c[i>>2]&31](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)PK(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)PK(f);return e|0}function xN(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(OK(a)|0)==0;a=yN(a)|0}else a=yN(a)|0;return a|0}function yN(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=bb[c[a+40>>2]&31](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function zN(a){a=a|0;(c[a+76>>2]|0)>-1?OK(a)|0:0;return c[a+60>>2]|0}function AN(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+48|0;i=k+24|0;h=k+16|0;g=k;d=k+28|0;b=d;e=134988;f=b+20|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));e=d+13|0;b=0;while(1){AL(e)|0;c[g>>2]=d;c[g+4>>2]=32962;c[g+8>>2]=384;f=iJ(Ba(5,g|0)|0)|0;if((f|0)>-1){j=4;break}if((b|0)<99)b=b+1|0;else{b=0;break}}if((j|0)==4){c[h>>2]=d;sa(10,h|0)|0;b=SL(f,135008)|0;if(!b){c[i>>2]=f;Da(6,i|0)|0;b=0}}l=k;return b|0}function BN(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(OK(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=dK(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=dK(a)|0;break}}while(0);return b|0}function CN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(OK(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=YL(d,b)|0;PK(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=YL(d,b)|0}while(0);return e|0}function DN(a){a=a|0;return xN(a)|0}function EN(){}function FN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=O(e,f)|0;d=a>>>16;a=(c>>>16)+(O(e,d)|0)|0;e=b>>>16;b=O(e,f)|0;return (z=(a>>>16)+(O(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function GN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=FN(e,f)|0;a=z;return (z=(O(b,f)|0)+(O(d,e)|0)+a|a&0,c|0|0)|0}function HN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (z=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function IN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (z=d,a-c>>>0|0)|0}function JN(b){b=b|0;var c=0;c=a[n+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b>>>24)>>0]|0)+24|0}function KN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (z=n,f)|0}else{if(!g){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (z=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<<i;b=k>>>(m>>>0)&b;g=0;i=l<<i;break}if(!f){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (z=n,f)|0}g=h-1|0;if(g&h|0){i=(R(h|0)|0)+33-(R(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<<m|l>>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<<p&j;i=(k<<p|l>>>(o>>>0))&j|l<<m&i-33>>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (z=o,p)|0}else{p=JN(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (z=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (z=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (z=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((JN(i|0)|0)>>>0);return (z=o,p)|0}g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<<i|l>>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<<i;break}if(!f){o=0;p=0;return (z=o,p)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (z=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=HN(m|0,l|0,-1,-1)|0;d=z;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;IN(k|0,d|0,e|0,n|0)|0;p=z;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=IN(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=z;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (z=o,p)|0}function LN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return KN(a,b,c,d,0)|0}function MN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g|0;KN(a,b,d,e,f)|0;l=g;return (z=c[f+4>>2]|0,c[f>>2]|0)|0}function NN(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}z=0;return b>>>c-32|0}function ON(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}z=a<<c-32;return 0}function PN(a){a=a|0;return (a&255)<<8|a>>8&255|0}function QN(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function RN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;q=q+1|0;c[a>>2]=q;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=q;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;z=e;return d|0}f=f+1|0}e=e*2|0;d=aJ(d|0,8*(e+1|0)|0)|0;d=RN(a|0,b|0,d|0,e|0)|0;z=e;return d|0}function SN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function TN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return La(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function UN(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else TN(b,c,d)|0;return b|0}function VN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function WN(a){a=a|0;var b=0,d=0;d=c[i>>2]|0;b=d+a|0;if((a|0)>0&(b|0)<(d|0)|(b|0)<0){W()|0;ra(12);return -1}c[i>>2]=b;if((b|0)>(V()|0)?(U()|0)==0:0){c[i>>2]=d;ra(12);return -1}return d|0}function XN(a){a=a|0;return +Ya[a&1]()}function YN(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return +Za[a&7](+b,+c,+d)}function ZN(a){a=a|0;return _a[a&3]()|0}function _N(a,b){a=a|0;b=b|0;return $a[a&31](b|0)|0}function $N(a,b,c){a=a|0;b=b|0;c=c|0;return ab[a&63](b|0,c|0)|0}function aO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return bb[a&31](b|0,c|0,d|0)|0}function bO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return cb[a&31](b|0,c|0,d|0,e|0)|0}function cO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return db[a&3](b|0,c|0,d|0,e|0,f|0)|0}function dO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return eb[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function eO(a){a=a|0;fb[a&15]()}function fO(a,b){a=a|0;b=b|0;gb[a&127](b|0)}function gO(a,b,c){a=a|0;b=b|0;c=c|0;hb[a&31](b|0,c|0)}function hO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ib[a&127](b|0,c|0,d|0)}function iO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;jb[a&15](b|0,c|0,d|0,+e,+f,g|0)}function jO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;kb[a&31](b|0,c|0,d|0,e|0)}function kO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;lb[a&7](b|0,c|0,d|0,e|0,f|0)}function lO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;mb[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function mO(){S(0);return 0.0}function nO(a,b,c){a=+a;b=+b;c=+c;S(1);return 0.0}function oO(){S(2);return 0}function pO(a){a=a|0;S(3);return 0}function qO(a,b){a=a|0;b=b|0;S(4);return 0}function rO(a,b,c){a=a|0;b=b|0;c=c|0;S(5);return 0}function sO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(6);return 0}function tO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(7);return 0}function uO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(8);return 0}function vO(){S(9)}function wO(a){a=a|0;S(10)}function xO(a,b){a=a|0;b=b|0;S(11)}function yO(a,b,c){a=a|0;b=b|0;c=c|0;S(12)}function zO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;S(13)}function AO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(14)}function BO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(15)}function CO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(16)}
// EMSCRIPTEN_END_FUNCS
var Ya=[mO,yA];var Za=[nO,Uu,Tu,Vu,Wu,nO,nO,nO];var _a=[oO,Fw,wx,oO];var $a=[pO,Rg,kg,Rn,Un,$B,aC,RD,SD,TD,UD,VD,WD,XD,YD,fJ,ub,or,ll,ol,Bw,Gw,nn,ww,co,NB,vw,SB,TB,NI,pO,pO];var ab=[qO,tn,Qn,Vn,yz,zz,qz,mz,Wy,mr,ag,Qg,rh,Vh,li,wk,uk,ml,pl,zq,yq,xq,Ds,Ts,Os,Ps,Ot,WL,CN,sA,uB,Im,wG,Pm,Rm,eo,OB,xJ,XE,JI,KI,nN,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO];var bb=[rO,Pl,Vl,Pn,Tn,gG,gJ,hJ,lJ,mJ,$K,_l,Xl,zL,uA,Ex,$C,GI,eM,rO,rO,rO,rO,rO,rO,rO,rO,rO,rO,rO,rO,rO];var cb=[sO,Nm,Np,Om,fn,vn,xn,In,Hn,Wn,_n,ao,yx,CC,AC,wE,iG,EG,DG,Ml,wA,sO,sO,sO,sO,sO,sO,sO,sO,sO,sO,sO];var db=[tO,un,Xy,rz];var eb=[uO,kI];var fb=[vO,xA,Cw,Dw,Ew,Iw,Jw,Kw,mG,vO,vO,vO,vO,vO,vO,vO];var gb=[wO,zb,Ab,Eb,Fb,Gb,_b,$b,xc,yc,zc,Ac,Bc,Cc,Dc,Pc,Qc,Tc,Uc,Vc,Wc,Xc,Yc,Zc,jd,kd,ld,nd,od,pd,qd,rd,sd,td,ud,Fd,Gd,Hd,Jd,Kd,Ld,Md,Nd,Od,Pd,Qd,Rd,Td,ee,fe,ge,he,se,te,ue,we,Je,Ke,Le,Ne,Oe,Pe,Qe,Re,Se,Te,Ue,Ve,cf,df,ef,ff,Jf,Ef,yn,Cy,Uy,Ey,Dy,oz,ay,dy,ZD,cE,xf,ql,lm,lG,UC,VB,zx,_I,FG,jI,EI,FI,LI,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO];var hb=[xO,Fc,Kc,$c,ed,Bd,Zd,ne,Ce,$e,mf,Xn,Yy,Az,sz,nz,Sy,Ty,wz,xz,aE,eE,bm,rs,Hw,MB,iI,HI,II,MI,OI,xO];var ib=[yO,Hb,Ib,Lb,wc,Ec,Gc,Jc,_c,ad,dd,wd,xd,Ad,Ud,Vd,Yd,ie,je,me,xe,ye,Be,We,Xe,_e,gf,hf,lf,bk,ck,dk,im,zn,$n,Jo,Op,js,Ev,xx,cy,mB,BC,zC,_D,$D,bE,dE,fE,hG,WH,VH,Bm,bn,oo,Ro,Uo,Aw,vA,Cx,QB,UB,XH,ZH,_H,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO];var jb=[zO,Ft,Gt,Ht,It,Jt,Kt,Lt,Mt,zO,zO,zO,zO,zO,zO,zO];var kb=[AO,Jb,Hc,bd,md,yd,Id,Wd,ke,ze,Me,Ye,jf,Af,zf,yf,wf,vf,uf,Zb,tf,sf,wn,Vy,pz,rL,PB,RB,AO,AO,AO,AO];var lb=[BO,Rc,vd,Cd,Sd,ve,nl,WB];var mb=[CO,Kb,Ic,cd,zd,Xd,le,Ae,Ze,kf,XB,CO,CO,CO,CO,CO];return{___errno_location:jJ,___muldi3:GN,___udivdi3:LN,___uremdi3:MN,_bitshift64Lshr:NN,_bitshift64Shl:ON,_dtdisc:Ll,_dtextract:Nl,_dtopen:Ql,_free:_I,_htons:eL,_i64Add:HN,_i64Subtract:IN,_llvm_bswap_i16:PN,_llvm_bswap_i32:QN,_malloc:ZI,_memalign:dJ,_memcpy:TN,_memmove:UN,_memset:VN,_realloc:aJ,_saveSetjmp:RN,_sbrk:WN,_testSetjmp:SN,_vizCreateFile:wb,_vizLastErrorMessage:vb,_vizRenderFromString:yb,_vizSetY_invert:xb,dynCall_d:XN,dynCall_dddd:YN,dynCall_i:ZN,dynCall_ii:_N,dynCall_iii:$N,dynCall_iiii:aO,dynCall_iiiii:bO,dynCall_iiiiii:cO,dynCall_iiiiiii:dO,dynCall_v:eO,dynCall_vi:fO,dynCall_vii:gO,dynCall_viii:hO,dynCall_viiiddi:iO,dynCall_viiii:jO,dynCall_viiiii:kO,dynCall_viiiiii:lO,establishStackSpace:qb,getTempRet0:tb,runPostSets:EN,setTempRet0:sb,setThrew:rb,stackAlloc:nb,stackRestore:pb,stackSave:ob}})
// EMSCRIPTEN_END_ASM
(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _dtdisc=Module["_dtdisc"]=asm["_dtdisc"];var _dtextract=Module["_dtextract"]=asm["_dtextract"];var _dtopen=Module["_dtopen"]=asm["_dtopen"];var _free=Module["_free"]=asm["_free"];var _htons=Module["_htons"]=asm["_htons"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i16=Module["_llvm_bswap_i16"]=asm["_llvm_bswap_i16"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memalign=Module["_memalign"]=asm["_memalign"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _realloc=Module["_realloc"]=asm["_realloc"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var _vizCreateFile=Module["_vizCreateFile"]=asm["_vizCreateFile"];var _vizLastErrorMessage=Module["_vizLastErrorMessage"]=asm["_vizLastErrorMessage"];var _vizRenderFromString=Module["_vizRenderFromString"]=asm["_vizRenderFromString"];var _vizSetY_invert=Module["_vizSetY_invert"]=asm["_vizSetY_invert"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_d=Module["dynCall_d"]=asm["dynCall_d"];var dynCall_dddd=Module["dynCall_dddd"]=asm["dynCall_dddd"];var dynCall_i=Module["dynCall_i"]=asm["dynCall_i"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiiddi=Module["dynCall_viiiddi"]=asm["dynCall_viiiddi"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];Module["asm"]=asm;Module["ccall"]=ccall;Module["Pointer_stringify"]=Pointer_stringify;Module["UTF8ToString"]=UTF8ToString;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=exit;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run()
return Module;
};
function render(instance, src, options) {
var i;
for (i = 0; i < options.files.length; i++) {
instance['ccall']('vizCreateFile', 'number', ['string', 'string'], [options.files[i].path, options.files[i].data]);
}
instance['ccall']('vizSetY_invert', 'number', ['number'], [options.yInvert ? 1 : 0]);
var resultPointer = instance['ccall']('vizRenderFromString', 'number', ['string', 'string', 'string'], [src, options.format, options.engine]);
var resultString = instance['Pointer_stringify'](resultPointer);
instance['ccall']('free', 'number', ['number'], [resultPointer]);
var errorMessagePointer = instance['ccall']('vizLastErrorMessage', 'number', [], []);
var errorMessageString = instance['Pointer_stringify'](errorMessagePointer);
instance['ccall']('free', 'number', ['number'], [errorMessagePointer]);
if (errorMessageString != '') {
throw new Error(errorMessageString);
}
return resultString;
}
if (typeof importScripts === "function") {
var instance = Module();
onmessage = function(event) {
var id = event.data.id;
var src = event.data.src;
var options = event.data.options;
try {
var result = render(instance, src, options);
postMessage({ id: id, result: result });
} catch (error) {
postMessage({ id: id, error: { message: error.message, fileName: error.fileName, lineNumber: error.lineNumber } });
}
}
}
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = { render: render, Module: Module };
} else if (typeof define === 'function' && define.amd) {
define(function() { return { render: render, Module: Module }; });
}
if (typeof global.Viz !== 'undefined') {
global.Viz.render = render;
global.Viz.Module = Module;
}
})(typeof self !== 'undefined' ? self : this);
Plugin based on grapviz library:
https://github.com/mdaines/viz.js/
For syntax of graphviz:
* https://graphs.grevian.org/example
* https://graphviz.gitlab.io/documentation/
* https://www.graphviz.org/
```
<$viz text=' digraph G {
Consola->nginx [label="Pide encriptar url para cliente", color=green]
nginx [shape=box];
nginx->Consola [color=red]
client-> HAPROXY [color=red]
STUPID [shape=box];
HAPROXY -> STUPID [color=red]
STUPID -> Prelanderred
STUPID -> STUPID [color=green, label="Pasa del nginx al hhvm desdencriptado"]
vsh [shape=box];
STUPID->vsh [color=red]
}' class="myexample"/>
```
<$viz text=' digraph G {
Consola->nginx [label="Pide encriptar url para cliente", color=green]
nginx [shape=box];
nginx->Consola [color=red]
client-> HAPROXY [color=red]
STUPID [shape=box];
HAPROXY -> STUPID [color=red]
STUPID -> Prelanderred
STUPID -> STUPID [color=green, label="Pasa del nginx al hhvm desdencriptado"]
vsh [shape=box];
STUPID->vsh [color=red]
}' class="myexample"/>
/*
Viz.js 2.0.0 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36)
Copyright (c) 2014-2018 Michael Daines
Licensed under MIT license
This distribution contains other software in object code form:
Graphviz
Licensed under Eclipse Public License - v 1.0
http://www.graphviz.org
Expat
Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
Licensed under MIT license
http://www.libexpat.org
zlib
Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
http://www.zlib.net/zlib_license.html
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.Viz = factory());
}(this, (function () { 'use strict';
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
var classCallCheck = function (instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
};
var createClass = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
var _extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
var WorkerWrapper = function () {
function WorkerWrapper(worker) {
var _this = this;
classCallCheck(this, WorkerWrapper);
this.worker = worker;
this.listeners = [];
this.nextId = 0;
this.worker.addEventListener('message', function (event) {
var id = event.data.id;
var error = event.data.error;
var result = event.data.result;
_this.listeners[id](error, result);
delete _this.listeners[id];
});
}
createClass(WorkerWrapper, [{
key: 'render',
value: function render(src, options) {
var _this2 = this;
return new Promise(function (resolve, reject) {
var id = _this2.nextId++;
_this2.listeners[id] = function (error, result) {
if (error) {
reject(new Error(error.message, error.fileName, error.lineNumber));
return;
}
resolve(result);
};
_this2.worker.postMessage({ id: id, src: src, options: options });
});
}
}]);
return WorkerWrapper;
}();
var ModuleWrapper = function ModuleWrapper(module, render) {
classCallCheck(this, ModuleWrapper);
var instance = module();
this.render = function (src, options) {
return new Promise(function (resolve, reject) {
try {
resolve(render(instance, src, options));
} catch (error) {
reject(error);
}
});
};
};
// https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
function b64EncodeUnicode(str) {
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {
return String.fromCharCode('0x' + p1);
}));
}
function defaultScale() {
if ('devicePixelRatio' in window && window.devicePixelRatio > 1) {
return window.devicePixelRatio;
} else {
return 1;
}
}
function svgXmlToImageElement(svgXml) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$scale = _ref.scale,
scale = _ref$scale === undefined ? defaultScale() : _ref$scale,
_ref$mimeType = _ref.mimeType,
mimeType = _ref$mimeType === undefined ? "image/png" : _ref$mimeType,
_ref$quality = _ref.quality,
quality = _ref$quality === undefined ? 1 : _ref$quality;
return new Promise(function (resolve, reject) {
var svgImage = new Image();
svgImage.onload = function () {
var canvas = document.createElement('canvas');
canvas.width = svgImage.width * scale;
canvas.height = svgImage.height * scale;
var context = canvas.getContext("2d");
context.drawImage(svgImage, 0, 0, canvas.width, canvas.height);
canvas.toBlob(function (blob) {
var image = new Image();
image.src = URL.createObjectURL(blob);
image.width = svgImage.width;
image.height = svgImage.height;
resolve(image);
}, mimeType, quality);
};
svgImage.onerror = function (e) {
var error;
if ('error' in e) {
error = e.error;
} else {
error = new Error('Error loading SVG');
}
reject(error);
};
svgImage.src = 'data:image/svg+xml;base64,' + b64EncodeUnicode(svgXml);
});
}
function svgXmlToImageElementFabric(svgXml) {
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref2$scale = _ref2.scale,
scale = _ref2$scale === undefined ? defaultScale() : _ref2$scale,
_ref2$mimeType = _ref2.mimeType,
mimeType = _ref2$mimeType === undefined ? 'image/png' : _ref2$mimeType,
_ref2$quality = _ref2.quality,
quality = _ref2$quality === undefined ? 1 : _ref2$quality;
var multiplier = scale;
var format = void 0;
if (mimeType == 'image/jpeg') {
format = 'jpeg';
} else if (mimeType == 'image/png') {
format = 'png';
}
return new Promise(function (resolve, reject) {
fabric.loadSVGFromString(svgXml, function (objects, options) {
// If there's something wrong with the SVG, Fabric may return an empty array of objects. Graphviz appears to give us at least one <g> element back even given an empty graph, so we will assume an error in this case.
if (objects.length == 0) {
reject(new Error('Error loading SVG with Fabric'));
}
var element = document.createElement("canvas");
element.width = options.width;
element.height = options.height;
var canvas = new fabric.Canvas(element, { enableRetinaScaling: false });
var obj = fabric.util.groupSVGElements(objects, options);
canvas.add(obj).renderAll();
var image = new Image();
image.src = canvas.toDataURL({ format: format, multiplier: multiplier, quality: quality });
image.width = options.width;
image.height = options.height;
resolve(image);
});
});
}
var Viz = function () {
function Viz() {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
workerURL = _ref3.workerURL,
worker = _ref3.worker,
Module = _ref3.Module,
render = _ref3.render;
classCallCheck(this, Viz);
if (typeof workerURL !== 'undefined') {
this.wrapper = new WorkerWrapper(new Worker(workerURL));
} else if (typeof worker !== 'undefined') {
this.wrapper = new WorkerWrapper(worker);
} else if (typeof Module !== 'undefined' && typeof render !== 'undefined') {
this.wrapper = new ModuleWrapper(Module, render);
} else if (typeof Viz.Module !== 'undefined' && typeof Viz.render !== 'undefined') {
this.wrapper = new ModuleWrapper(Viz.Module, Viz.render);
} else {
throw new Error('Must specify workerURL or worker option, Module and render options, or include one of full.render.js or lite.render.js after viz.js.');
}
}
createClass(Viz, [{
key: 'renderString',
value: function renderString(src) {
var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref4$format = _ref4.format,
format = _ref4$format === undefined ? 'svg' : _ref4$format,
_ref4$engine = _ref4.engine,
engine = _ref4$engine === undefined ? 'dot' : _ref4$engine,
_ref4$files = _ref4.files,
files = _ref4$files === undefined ? [] : _ref4$files,
_ref4$images = _ref4.images,
images = _ref4$images === undefined ? [] : _ref4$images,
_ref4$yInvert = _ref4.yInvert,
yInvert = _ref4$yInvert === undefined ? false : _ref4$yInvert;
for (var i = 0; i < images.length; i++) {
files.push({
path: images[i].path,
data: '<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n<svg width="' + images[i].width + '" height="' + images[i].height + '"></svg>'
});
}
return this.wrapper.render(src, { format: format, engine: engine, files: files, images: images, yInvert: yInvert });
}
}, {
key: 'renderSVGElement',
value: function renderSVGElement(src) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) {
var parser = new DOMParser();
return parser.parseFromString(str, 'image/svg+xml').documentElement;
});
}
}, {
key: 'renderImageElement',
value: function renderImageElement(src) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var scale = options.scale,
mimeType = options.mimeType,
quality = options.quality;
return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) {
if ((typeof fabric === 'undefined' ? 'undefined' : _typeof(fabric)) === "object" && fabric.loadSVGFromString) {
return svgXmlToImageElementFabric(str, { scale: scale, mimeType: mimeType, quality: quality });
} else {
return svgXmlToImageElement(str, { scale: scale, mimeType: mimeType, quality: quality });
}
});
}
}, {
key: 'renderJSONObject',
value: function renderJSONObject(src) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var format = options.format;
if (format !== 'json' || format !== 'json0') {
format = 'json';
}
return this.renderString(src, _extends({}, options, { format: format })).then(function (str) {
return JSON.parse(str);
});
}
}]);
return Viz;
}();
return Viz;
})));
(function(){
var Widget = require("$:/core/modules/widgets/widget.js").widget;
var Viz = require("$:/plugins/chanilino/viz/viz.js");
var {Module, render } = require("$:/plugins/chanilino/viz/lite.render.js");
var viz = new Viz({ Module, render });
var VizWidget = function(parseTreeNode,options) {
this.initialise(parseTreeNode,options);
};
VizWidget.prototype = new Widget();
VizWidget.prototype.render = function(parent,nextSibling) {
this.parentDomNode = parent;
this.computeAttributes();
this.execute();
var domNode = this.create(parent, nextSibling);
this.domNodes.push(domNode);
parent.insertBefore(domNode,nextSibling);
this.renderChildren(domNode,null);
};
VizWidget.prototype.execute = function() {
// get attributes
this.my_text = this.getAttribute("text");
this.selectClass = this.getAttribute("class");
this.tiddler = this.getAttribute("tiddler",this.getVariable("currentTiddler"));
this.setName = this.getAttribute("name","currentTiddler");
// make child widgets
//this.makeChildWidgets();
};
//refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
VizWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
if(changedAttributes.my_text || changedAttributes.tiddler) {
this.refreshSelf();
return true;
} else {
return this.refreshChildren(changedTiddlers);
}
};
VizWidget.prototype.removeChildDomNodes = function() {
$tw.utils.each(this.domNodes,function(domNode) {
domNode.parentNode.removeChild(domNode);
});
this.domNodes = [];
};
VizWidget.prototype.create = function() {
// create a <div> container for the image
var domNode = $tw.utils.domMaker("div",{class:this.selectClass});
viz.renderSVGElement(this.my_text).then(
element => {
domNode.appendChild(element);
}).catch(
error => {
viz = new Viz({ Module, render });
});
return domNode;
};
VizWidget.prototype.handleChangeEvent = function(event) {
// set the widget variable to inform the children
this.setVariable(this.setName,event.target.value,this.parseTreeNode.params);
// refresh this widget, and thereby the child widgets AND the enclosed content of this widget
this.refreshSelf();
return true;
};
exports.viz = VizWidget;
})();
/*BOXES*/
html body.tc-body .graybox {display:block;background-color:#eee;padding:5px;padding-left:20px;padding-top:10px;margin-top:5px;margin-bottom:5px;width:95%;}
code {color: #b0a;}
/*TIGHT NOTES*/
html body.tc-body h1, html body.tc-body h2, html body.tc-body h3, html body.tc-body h4 { margin-top: 0.3em; margin-bottom: 0.3em; }
/*FONT SUBTITLES*/
.serif {font-family: 'Arial', sans-serif;color:#bbb;font-size:10pt;}
html body.tc-body .serif a.tc-tiddlylink-external {font-family: 'Arial', sans-serif;font-size:12pt; line-height:normal;font-weight:normal;color:#666;}
/*FONT STUFF (colors)*/
html body.tc-body .lightgraybk {background:#eee;padding:1px 4px px 4px;margin-bottom:2px;font-family:'Arial', sans-serif;}
.red {color:red;}
/*FONT STUFF SOURCES*/
html body.tc-body .source {color:#777;font-size:10pt;}
/*HORIZONTAL RULE*/
html body.tc-body hr {border:0px;}
html body.tc-body hr {
border-top: 1px solid #bbb;
text-align: center;
width:100%; margin-top:15px; margin-bottom:15px;
}
/*ICON COLORS*/
html body.tc-body .tc-image-new-button {stroke: white;fill:#7897fc;}
html body.tc-body .tc-image-timestamp-on {stroke: white;fill:#7897fc;}
html body.tc-body .tc-image-chevron-up {stroke: white;fill:#ccc;}
html body.tc-body .tc-image-chevron-down {stroke: white;fill:#ccc;}
html body.tc-body .tc-image-fold-button {stroke: white;fill:#ccc;}
html body.tc-body .tc-image-unfold-button {stroke: white;fill:#ccc;}
html body.tc-body .tc-image-preview-open {stroke: white;fill:#d9c;}
/*INDENTING*/
html body.tc-body .indent1 {margin-left:1.5em;display:block;}
/*LINKS*/
html body.tc-body a.tc-tiddlylink {text-decoration: none;font-style: normal;font-weight: normal;}
html body.tc-body a.tc-tiddlylink-missing {font-weight:normal; background-color:#ffd; color:#66f;font-style:normal;}
html body.tc-body a.tc-tiddlylink-external {text-decoration: none;font-weight: normal;color: #109;}
html body.tc-body a.tc-tiddlylink-visited {text-decoration: none;font-weight: normal;color: #66f;}
html body.tc-body .source a.tc-tiddlylink-external {font-weight: normal;font-size:10pt;}
/*TABLES BASIC*/
html body.tc-body th {color:#000;}
html body.tc-body td {color:#000;}
/*TABLES GREENALTROWS*/
html body.tc-body .greenaltrows th {padding: 10px; border: 1px solid #aaa; vertical-align:top;text-align:left;}
html body.tc-body .greenaltrows td {padding: 10px; border: 1px solid #aaa; vertical-align:top;}
html body.tc-body .greenaltrows tr:nth-child(even) td {background-color:#F3F6F5;}
html body.tc-body .greenaltrows tr:nth-child(odd) td {background-color:#E7EDEB;}
html body.tc-body .greenaltrows {
-moz-box-shadow: 10px 10px 5px #bbb;
-webkit-box-shadow: 10px 10px 5px #bbb;
box-shadow: 10px 10px 5px #bbb;
}
/*TIDDLER TITLES*/
.tc-tiddler-missing .tc-title { font-style: normal; font-weight: bold; }
/*HIDE SECTIONS FOR PRINTING*/
@media print {#tc-page-background {display: none ! important;}}
@media print {.tc-tags-wrapper {display: none ! important;}}
@media print { body.tc-body {background-color: transparent;}}
@media print {.tc-image-chevron-up {display: none ! important;}}
@media print {.tc-image-chevron-down {display: none ! important;}}
@media print {button.sidebar-toggle {display: none ! important;}}
@media print {.hideprint {display: none ! important;}}
@media print {.tc-btn-invisible {display: none ! important;}}
@media print {
.story-river {
margin: 0;
padding: 0;
}
html body.tc-body .tc-tiddler-frame {
margin: 0;
border-bottom: 1px solid #fff;
padding: 5px;}
html body.tc-body a.tc-tiddlylink-external:hover {
border: 1px solid <<colour tiddler-border>>;
}
html body.tc-body .tc-tiddler-info {
padding: 14px 42px 14px 42px;
background-color: <<colour tiddler-info-background>>;}
}
}
<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags}} journalText="">
<$wikify name="journalTitle" text="""<$macrocall $name="now" format=<<journalTitleTemplate>>/>""">
<$reveal type="nomatch" state=<<journalTitle>> text="">
<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags="" text={{{ [<journalTitle>get[]] }}}/>
</$reveal>
<$reveal type="match" state=<<journalTitle>> text="">
<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags="" text=<<journalText>>/>
</$reveal>
</$wikify>
</$vars>
\define journalButton()
<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/.giffmex/actions/new-journal}}>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/timestamp-on}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>
</$list>
</$button>
\end
<<journalButton>>
<span class="doublelist">
*''2-28-2020''
**Thanks to help from Mark S. at the ~TiddlyWiki Google group (and Thomas Elmiger, Mohammad and ~TonyM), the checkboxes for changing the way to view references now work the way I have always wanted them to: choosing one view closes the other views.
**Added a TiddlyBlink palette and a palette switcher in the 'gear' tab.
**Changed tiddlers: $:/.giffmex/sidebar/tabs/tiddlyblinkcontrols, $:/.giffmex/ViewTemplate/refstranscludeclean, $:/.giffmex/ViewTemplate/refstranscludecollapse, $:/.giffmex/ViewToolbar/viewrefscheckboxes.
*''1-29-2020:''
**Added CSS in $:/.giffmex/.Stylesheet4tiddlyblink for tighter padding around transcluded notes.
**Added $:/sk/WhiteList so users can add wikiwords they don't want to automatically turn into links
**Moved the checkboxes for toggling notes as context / transclude / links to the ~TiddlyBlink tab in the sidebar.
**With the help of ~TonyM and Eric Shulman at the ~TiddlyWiki Google group, I was able to fix a problem with the button at the top of the tiddlers that creates new tiddlers with a date and time stamp for the title.
**Improved instructions, including an example file at http://giffmex.org/gifts/tiddlyblinkexample.html
*''1-30-2020:''
**Made tiddler titles above transclusions into links, by popular demand.
*''1-31-2020''
**With the help fo ~MarkS at the ~TiddlyWiki Google group, I added a new way of viewing references: transclusion with open and close buttons.
**Added the home page and more documentation, accessible from the 'Start here' tab.
*''2-1-2020''
**Changed .outlinesList to .hideList
**Added documentation to .hideList, .sourcesList and .topicList
**Other minor documentation changes (2 and 3)
**Link to upcoming Spanish version
**Updated [[$:/.giffmex/meta/How.to.add.TiddlyBlink.to.your.TiddlyWiki]] (the list there will soon be replaced with a plugin!)
*''2-4-2020''
**Now when you save a tiddler, any links in that tiddler to non-existent (missing) tiddlers automatically cause the creation of those tiddlers. So you don't need to open the links, click edit, and click save, as before.
*''2-6-2020''
**Added the parallel tab in the sidebar ($:/.giffmex/sidebar/parallel) for viewing tiddlers side by side. See [[3. See tiddlers side by side]]. Use by tagging and untagging a tiddler with `parallel`
**Adjusted relative width of story river and sidebar, and hide sitetitle and sitesubtitle from sidebar, to make room for the parallel tab.
*''2-7-2020''
**Replaced yesterday's parallel tab with an even better one! Courtesy of A Gloom from the TiddlyWiki Google group. Now just paste a tiddler title into the parallel tab field, and view the tiddler's contents for side-by-side reading. ($:/.giffmex/sidebar/parallel and $:/.giffmex/sidebar/parallel2)
**Hid 'meta' tags from References, per suggestion by Mark S at the TiddlyWiki Google group.
*''2-12-2020''
**Changed TB so that only linked references appear in the reference section. Added $:/.giffmex/meta/hack.tiddlyblink with instructions on how to put it back in. See $:/.giffmex/ViewTemplate/refscontext, $:/.giffmex/ViewTemplate/refslinks, $:/.giffmex/ViewTemplate/refstranscludeclean, and $:/.giffmex/ViewTemplate/refstranscludecollapse
**Made available from the tiddler view toolbar, the checkboxes for showing and hiding references. See the {{$:/core/images/preview-open}} menu at the top of the tiddlers. $:/.giffmex/viewtoolbar/viewrefs, $:/.giffmex/ViewToolbar/viewrefscheckboxes, and $:/config/ViewToolbarButtons/Visibility/$:/.giffmex/ViewToolbar/viewrefscheckboxes
</span>
*Change the title and subtitle of this file
**Edit [[$:/SiteTitle]] and [[$:/SiteSubtitle]]
*Customize the date and time stamp when creating new notes
**Open [[$:/config/NewJournal/Title]] and adjust. The guide to formatting dates and times is here: https://tiddlywiki.com/#DateFormat
**Make changes to the Custom Stylesheet: edit [[$:/.giffmex/.Stylesheet4tiddlyblink]] and/or create a tiddler and tag it `$:/tags/Stylesheet` and choose 'text/css' in the type field.
*Keep WikiWords (CamelCase words like McDonalds ) from becoming links
**Add `~` before a wikiword to keep it from becoming a link
**To add to a word-by-word list of frequent wikiwords that should not be links, add them, comma-separated, to $:/sk/WhiteList
**Nuclear option: To turn off //all //automatic wikiword linking, open $:/ControlPanel > Settings > uncheck the Camel Case Wiki Links checkbox
!!All references, in links and in regular text.
We disabled references that do not appear in links. This was a feature in early versions of TiddlyBlink, but we and others found it produced a lot of unwanted references, and confusion as people clicked the link and did not have a link to return back to the previous tiddler.
But if you would like to have this feature back in your TiddlyBlink, just edit the following tiddlers:
"""
$:/.giffmex/ViewTemplate/refscontext
$:/.giffmex/ViewTemplate/refslinks
$:/.giffmex/ViewTemplate/refstranscludeclean
$:/.giffmex/ViewTemplate/refstranscludecollapse
"""
And replace
`all[current]backlinks[]`
with
`regexp:text<mycrit>`
To get this experience on your own TiddlyWiki or an empty one, drag these links from here to the other TiddlyWiki.
"""
[[.hideList]]
[[.sourcesList]]
[[.topicList]]
[[1. Download and set up TiddlyBlink]]
[[2. Lightning-fast linking and navigating]]
[[3. See tiddlers side by side]]
[[4. Topics, sources and hiding?]]
[[5. My own notetaking process in TiddlyBlink]]
[[6. Learn more about TiddlyWiki]]
[[TiddlyBlink]]
[[TiddlyBlink home]]
TiddlyBlinkFoldData
$:/.giffmex/.Stylesheet4tiddlyblink
$:/.giffmex/actions/new-journal
$:/.giffmex/buttons/newnote-datetime
$:/.giffmex/Change
$:/.giffmex/Change.log
$:/.giffmex/Customize
$:/.giffmex/Customize.TiddlyBlink
$:/.giffmex/meta/hack.tiddlyblink
$:/.giffmex/meta/How
$:/.giffmex/meta/How.to.add.TiddlyBlink.to.your.TiddlyWiki
$:/.giffmex/meta/TiddlyBlink
$:/.giffmex/meta/TiddlyBlink.gears.and.doo-hickeys
$:/.giffmex/sidebar/parallel
$:/.giffmex/sidebar/parallel2
$:/.giffmex/sidebar/tabs/tiddlyblinkcontrols
$:/.giffmex/ViewTemplate/refscontext
$:/.giffmex/ViewTemplate/refslinks
$:/.giffmex/ViewTemplate/refstranscludeclean
$:/.giffmex/ViewTemplate/refstranscludecollapse
$:/.giffmex/ViewToolbar/new-note-here
$:/.giffmex/ViewToolbar/new-note-here-datetime
$:/.giffmex/viewtoolbar/viewrefs
$:/.giffmex/ViewToolbar/viewrefscheckboxes
$:/.tb/macros/list-search
$:/config/AnimationDuration
$:/config/EditorTypeMappings/text/vnd.tiddlywiki
$:/config/NewJournal/Title
$:/config/RelinkOnRename
$:/config/ViewToolbarButtons/Visibility/$:/.giffmex/ViewToolbar/viewrefscheckboxes
$:/config/WikiParserRules/Inline/wikilink
$:/core/ui/Buttons/save
$:/core/ui/EditTemplate
$:/DefaultTiddlers
$:/fullscreen-editor
$:/jd/fullscreen-editor/EditButton
$:/plugins/danielo515/context/css
$:/plugins/danielo515/ContextPlugin
$:/plugins/danielo515/ContextPlugin/Caption
$:/plugins/danielo515/ContextPlugin/widgets/context.js
$:/plugins/flibbles/relink
$:/plugins/jd/fullscreen-editor
$:/plugins/sk/WhiteList
$:/plugins/snowgoon88/edit-comptext
$:/plugins/snowgoon88/edit-comptext/config
$:/SiteSubtitle
$:/SiteTitle
$:/sk/WhiteList
$:/tags/EditToolbar
$:/tags/PageControls
$:/tags/ViewTemplate
$:/tags/ViewToolbar
$:/view
"""
For those who want to understand ~TiddlyBlink better, tinker with it and customize it, here is the basic information (assuming you already know how ~TiddlyWiki works).
''General''
*CSS styles can be found and edited in $:/.giffmex/.Stylesheet4tiddlyblink
''Tiddler toolbar in view mode''
*The + icon activates $:/.giffmex/ViewToolbar/new-note-here and the clock icon activates $:/.giffmex/ViewToolbar/new-note-here-datetime . These create new tiddlers whose text field contains a link to the tiddler used to create them. So the 'child' tiddler contains a link to the 'parent' tiddler. The title field is either empty or contains a date and time stamp, depending on which button is chosen.
*The {{$:/core/images/full-screen-button}} icon activates the [[Fullscreen editor plugin|$:/plugins/jd/fullscreen-editor]]. This opens the current tiddler in edit mode that occupies the entire screen.
''Link creation and editing''
*Typing `[[` activates autocomplete, executed by the [[comptext plugin|$:/plugins/snowgoon88/edit-comptext]]. If the tiddler already exists, you can hit enter if the desired tiddler is the first entry, or navigate with the down arrow key until you reach it. Then hit enter. The opening and closing brackets that get created by this plugin can be modified using the tiddler $:/plugins/snowgoon88/edit-comptext/config .
**Note that the comptext plugin relies on $:/config/EditorTypeMappings/text/vnd.tiddlywiki set to `comptext`
*When you rename a tiddler, this activates the [[Relink plugin|$:/plugins/flibbles/relink]]. This changes all the references to the renamed tiddler title found as links in all the other tiddlers. It does not change references that are not found in links.
*WikiWords in CamelCase automatically turn into links. $:/sk/WhiteList is a list run by the [[Whitelist plugin|$:/plugins/sk/WhiteList]] that allows you to list all WikiWords you do not want turned into links. Other options: manually insert `~` before the WikiWords as they occur in tidders, or, if you are like me and find WikiWords annoying rather than helpful, uncheck the first checkbox in the $:/ControlPanel > settings tab.
''Sidebar''
*The ~TiddlyBlink sidebar is found in the $:/.giffmex/sidebar/tabs/tiddlyblinkcontrols tiddler.
*The blue clock button in the sidebar activates $:/.giffmex/buttons/newnote-datetime . This is set up to create a new tiddler with a date and timestamp in the title.
*Clicking on a checkmark in the ~TiddlyBlink tab tags one of three tiddlers ($:/.giffmex/ViewTemplate/refscontext, $:/.giffmex/ViewTemplate/refslinks, $:/.giffmex/ViewTemplate/refstranscludeclean and $:/.giffmex/ViewTemplate/refstranscludecollapse) with the tag ~$:/tags/ViewTemplate, making them show up under the tiddler. Those three tiddlers grab all the text references to the current tiddler, and format them into either links, transclusions, or highlighted search results in context. The latter uses the [[ContextPlugin|$:/plugins/danielo515/ContextPlugin]].
Paste a tiddler title to view tiddler in tab: <$edit-text tiddler="$:/temp/sbartidddisplayvalue" placeholder="tiddler title" tag="input" type="text"/>
{{$:/.giffmex/sidebar/parallel}} <br><h2><$list filter="[{$:/temp/sbartidddisplayvalue}is[tiddler]]" emptyMessage="tiddler doesn't exist" ></$list></h2>
<$transclude tiddler={{$:/temp/sbartidddisplayvalue}} mode="block" />
\define tagreset()
<$list filter="[tag[refs]sort[created]] -[[$(currentTiddler)$]]" variable="removeme">
<$action-listops $tiddler=<<removeme>> $tags="+[remove[$:/tags/ViewTemplate]]"/>
</$list>
<$action-deletefield dummy/>
\end
Click the palette icon below to ''select a color palette'' from a dropdown. Default is ~TiddlyBlink. TiddlyWiki default is Vanilla. Note that dark themes may obscure some features.
Click here: {{$:/core/ui/Buttons/palette}}
<hr>
<span class="graybox">
''View references as:''
<$list filter="[tag[refs]sort[created]]">
<$list filter="[all[current]tag[$:/tags/ViewTemplate]]">
<$checkbox field=dummy checked="yes" unchecked="yes" default="yes"></$checkbox>
<$link><$view field="caption"/></$link><br/>
</$list>
<$list filter="[all[current]!tag[$:/tags/ViewTemplate]]">
<$checkbox tag="$:/tags/ViewTemplate" xinvertTag="yes" checkactions=<<tagreset>>/><$link> <$view field="caption"/></$link><br/>
</$list>
</$list>
<br>Note that the gray boxes in the context and transclude options are links to their respective tiddlers.
</span>
\define mycrit() (?i)\b$(searchspx)$\b
<hr>References:
<$vars searchme=<<currentTiddler>> searchspx={{{ [<currentTiddler>escaperegexp[]]}}} >
<$list filter="[!is[system]all[current]backlinks[]!tag[outlines]!tag[hide]sort[title]] -[is[current]]"><$link><$view field="title"/></$link><span class="indent1"><$link><span class="graybox"><$context term=<<searchme>> /></span></$link></span></$list>
</$vars>
\define mycrit() (?i)\b$(searchspx)$\b
<hr>References:
<$vars searchme=<<currentTiddler>> searchspx={{{ [<currentTiddler>escaperegexp[]]}}} >
<$list filter="[!is[system]all[current]backlinks[]!tag[hide]sort[title]] -[is[current]]"><$link><$view field="title" /></$link><br></$list>
</$vars>
<hr>
References: <br>
<$list filter="[!is[system]all[current]backlinks[]!tag[hide]!tag[outlines]sort[title]] -[is[current]]"><$link><$view field="title"/></$link><span class="indent1"><$link><span class="graybox"><$transclude field="text" mode="block" /></span></$link></span></$list>
<hr>
References: <br>
<$list filter="[!is[system]all[current]backlinks[]!tag[hide]!tag[outlines]sort[title]] -[is[current]]"><$link><$view field="title"/></$link>
<$reveal type="nomatch" stateTitle="TiddlyBlinkFoldData" stateIndex=<<currentTiddler>> text="show">
<$button class=<<tv-config-toolbar-class>> setTitle="TiddlyBlinkFoldData" setIndex=<<currentTiddler>> setTo="show">{{$:/core/images/unfold-button}}</$button><br/>
</$reveal>
<$reveal type="match" stateTitle="TiddlyBlinkFoldData" stateIndex=<<currentTiddler>> text="show">
<$button class=<<tv-config-toolbar-class>> setTitle="TiddlyBlinkFoldData" setIndex=<<currentTiddler>> setTo="hide">{{$:/core/images/fold-button}}</$button>
<span class="indent1">
<$link><span class="graybox">
<$transclude field="text" mode="block" /></span></$link></span>
</$reveal>
</$list>
\define button()
<$button class=<<tv-config-toolbar-class>> actions=<<actions>>>
{{$:/core/images/new-button}}
</$button>
\end
\define actions()
<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> text="""[[$(tid)$]]"""/>
\end
<$wikify name=tid text=<<currentTiddler>>>
<<button>>
</$wikify>
\whitespace trim
\define journalButtonActions()
<$action-sendmessage $message="tm-new-tiddler" title=<<now """$(journalTitleTemplate)$""">> text="""[[$(tid)$]]""" />
\end
\define journalButtonTags()
[[$(currentTiddlerTag)$]] $(journalTags)$
\end
\define journalButton()
<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}}
aria-label={{$:/language/Buttons/NewJournalHere/Caption}}
class=<<tv-config-toolbar-class>>
actions=<<journalButtonActions>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/timestamp-on}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text">
<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>
</span>
</$list>
</$button>
\end
<$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}>
<$set name="tid" value=<<currentTiddler>>>
<<journalButton>>
</$set>
</$set>
\whitespace trim
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<$button popup=<<qualify "$:/state/popup/more">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/preview-open}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text">
<$text text=" "/>
<$text text={{$:/language/Buttons/More/Caption}}/>
</span>
</$list>
</$button>
<$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="belowleft" animate="yes">
<div class="tc-drop-down">
<$set name="tv-config-toolbar-icons" value="yes">
<$set name="tv-config-toolbar-text" value="yes">
<$set name="tv-config-toolbar-class" value="tc-btn-invisible">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] +[tag[refview]] -[[$:/core/ui/Buttons/more-tiddler-actions]]" variable="listItem">
<$reveal type="match" state=<<config-title>> text="hide">
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
<$transclude tiddler=<<listItem>> mode="inline"/>
</$set>
</$reveal>
</$list>
</$set>
</$set>
</$set>
</div>
</$reveal>
\define tagreset()
<$list filter="[tag[refs]sort[created]] -[[$(currentTiddler)$]]" variable="removeme">
<$action-listops $tiddler=<<removeme>> $tags="+[remove[$:/tags/ViewTemplate]]"/>
</$list>
<$action-deletefield dummy/>
\end
<span style="font-size:12pt;">
<span class="graybox">
''View references as:''
<$list filter="[tag[refs]sort[created]]"><$list filter="[all[current]tag[$:/tags/ViewTemplate]]">
<$checkbox field=dummy checked="yes" unchecked="yes" default="yes"></$checkbox><$link><$view field="caption"/></$link></$list><$list filter="[all[current]!tag[$:/tags/ViewTemplate]]"><$checkbox tag="$:/tags/ViewTemplate" xinvertTag="yes" checkactions=<<tagreset>>/><$link><$view field="caption"/></$link> </$list></$list>
</span>
</span>
{{build-and-export}}
\define list-search(
filter:"[tags[]]",
search:"search:title",
state:"$:/temp/list-search",
template:"$:/core/ui/ListItemTemplate",
placeholder:"Filter",
limit:100000
)
<div>
<$edit-text
tiddler="$state$"
type="search"
tag="input"
default=""
placeholder="$placeholder$"/>
</div>
<$reveal state="$state$" type="match" text="">
<$list filter="$filter$+[limit[$limit$]]" template="$template$"/>
</$reveal>
<$reveal state="$state$" type="nomatch" text="">
<$list filter="$filter$+[$search${$state$}]+[limit[$limit$]]" template="$template$"/>
</$reveal>
\end
Built from branch 'tiddlywiki-com' at commit 71a827eead948c959d3f8e4b243d28ded03db2c5 of https://github.com/Jermolene/TiddlyWiki5.git at 2020-05-06 08:53:29 UTC
YYYY-0MM / 0DD / 0hh:0mm:0ss /
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
},
"$:/core/copyright.txt": {
"title": "$:/core/copyright.txt",
"type": "text/plain",
"text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
},
"$:/core/icon": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
},
"$:/core/images/add-comment": {
"title": "$:/core/images/add-comment",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
},
"$:/core/images/gitter": {
"title": "$:/core/images/gitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
},
"$:/core/images/left-arrow": {
"title": "$:/core/images/left-arrow",
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
},
"$:/core/images/linkify": {
"title": "$:/core/images/linkify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
},
"$:/core/images/rotate-left": {
"title": "$:/core/images/rotate-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
},
"$:/core/images/transcludify": {
"title": "$:/core/images/transcludify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/up-arrow": {
"title": "$:/core/images/up-arrow",
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copy to clipboard"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copy this text to the clipboard"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Select the sidebar search field"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import many types of file including text, image, TiddlyWiki or JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilink"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Wrap selection in square brackets"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "rotate left"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Rotate image left by 90 degrees"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Toggle the sidebar visibility"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Wrap selection in curly brackets"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration"
},
"$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Default focus field for new tiddlers"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Title of new tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags for new tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "It is recommended that you clone this shadow palette before editing it"
},
"$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "delete this entry from the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
"text": "Show color names that are not part of the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Also requires:"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "downgrade"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(requires reload)"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "update"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Updates"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Available updates to installed plugins"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Update <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "With <<count>> sub-plugins available"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
},
"$:/language/ControlPanel/Saving/GitService/Branch": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Target branch for saving"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Saved by TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "These settings are only used when saving to <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Filename of target file (e.g. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Path to target file (e.g. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "Server API URL"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Username"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "~GitHub Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
"text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "~GitLab Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
"text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Gitea Saver"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Permalink/permaview Mode"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choose how permalink/permaview is handled:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copy permalink/permaview URL to clipboard"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Update address bar with permalink/permaview URL"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Default More Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Specify which More sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Stylesheets"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Expand All"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restore"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Defines how requests are authenticated by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Defines how individual URL patterns are handled by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Menu bar background"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Menu bar foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "`<select>` element background"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "`<select>` element text"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "field list"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Show field list"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Add the new field to the tiddler"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "add tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following references to this tiddler will not be automatically updated:"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hide-body": {
"title": "$:/language/Docs/Fields/hide-body",
"text": "The view template will hide bodies of tiddlers if set to: ''yes''"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "If present, throttles refreshes of this tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/language/Docs/Fields/toc-link",
"text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "If present, indicates that the tiddler text field must be loaded from the server"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SessionTiddlers": {
"title": "$:/language/Filters/SessionTiddlers",
"text": "Tiddlers modified since the wiki was loaded"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Automatically run configured commands",
"text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Deletes a group of tiddlers",
"text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Lists the available editions of TiddlyWiki",
"text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/language/Help/fetch",
"description": "Fetch tiddlers from wiki by URL",
"text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/import": {
"title": "$:/language/Help/import",
"description": "Import tiddlers from a file",
"text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise a new wiki folder",
"text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
},
"$:/language/Help/listen": {
"title": "$:/language/Help/listen",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construct library plugin required by upgrade process",
"text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Set the base output directory for subsequent commands",
"text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
},
"$:/language/Help/render": {
"title": "$:/language/Help/render",
"description": "Renders individual tiddlers to files",
"text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/save": {
"title": "$:/language/Help/save",
"description": "Saves individual raw tiddlers to files",
"text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Saves a group of raw tiddlers to a directory",
"text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/savewikifolder": {
"title": "$:/language/Help/savewikifolder",
"description": "Saves a wiki to a new wiki folder",
"text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
"text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepares external tiddlers for use",
"text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Unpack the payload tiddlers from a plugin",
"text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Preview:"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Text"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Text (Raw)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Fields"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (Fields)"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler"
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler"
},
"$:/language/Import/Upgrader/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Core module tiddler"
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/language/Import/Upgrader/System/Alert",
"text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable"
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>"
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> differences"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "None"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/SavingChanges.html",
"text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"tags": "Journal"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copied to clipboard!"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "Failed to copy to clipboard!"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorer"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table with 4 columns by 3 rows",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Editor font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "References"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/languages/en-GB",
"name": "en-GB",
"description": "English (British)",
"author": "JeremyRuston",
"core-version": ">=5.0.0\"",
"text": "Stub pseudo-plugin for the default language"
},
"$:/core/modules/commander.js": {
"title": "$:/core/modules/commander.js",
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"title": "$:/core/modules/commands/build.js",
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"title": "$:/core/modules/commands/clearpassword.js",
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/deletetiddlers.js": {
"title": "$:/core/modules/commands/deletetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"title": "$:/core/modules/commands/editions.js",
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"title": "$:/core/modules/commands/fetch.js",
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = $tw.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tdata = [];\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t data.push(chunk);\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(Buffer.concat(data),type,options,url);\n\t\t callback(null);\n\t } else {\n\t \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t \t} else {\n\t\t \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t \t\t\n\t \t}\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"title": "$:/core/modules/commands/help.js",
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/import.js": {
"title": "$:/core/modules/commands/import.js",
"text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"title": "$:/core/modules/commands/init.js",
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/listen.js": {
"title": "$:/core/modules/commands/listen.js",
"text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"title": "$:/core/modules/commands/load.js",
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"title": "$:/core/modules/commands/makelibrary.js",
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"title": "$:/core/modules/commands/output.js",
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"title": "$:/core/modules/commands/password.js",
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/render.js": {
"title": "$:/core/modules/commands/render.js",
"text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"title": "$:/core/modules/commands/rendertiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"title": "$:/core/modules/commands/rendertiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/save.js": {
"title": "$:/core/modules/commands/save.js",
"text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!$tw.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"title": "$:/core/modules/commands/savetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"title": "$:/core/modules/commands/savetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savewikifolder.js": {
"title": "$:/core/modules/commands/savewikifolder.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"title": "$:/core/modules/commands/server.js",
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"title": "$:/core/modules/commands/setfield.js",
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"title": "$:/core/modules/commands/unpackplugin.js",
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"title": "$:/core/modules/commands/verbose.js",
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"title": "$:/core/modules/commands/version.js",
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"title": "$:/core/modules/config.js",
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"title": "$:/core/modules/deserializers.js",
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"title": "$:/core/modules/editor/engines/framed.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\tthis.domNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"title": "$:/core/modules/editor/engines/simple.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"title": "$:/core/modules/editor/factory.js",
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/rotate-left.js": {
"title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"title": "$:/core/modules/editor/operations/text/excise.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"title": "$:/core/modules/editor/operations/text/make-link.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/save-selection.js": {
"title": "$:/core/modules/editor/operations/text/save-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filters/addprefix.js": {
"title": "$:/core/modules/filters/addprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"title": "$:/core/modules/filters/addsuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"title": "$:/core/modules/filters/after.js",
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"title": "$:/core/modules/filters/all/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"title": "$:/core/modules/filters/all/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"title": "$:/core/modules/filters/all/orphans.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"title": "$:/core/modules/filters/all/shadows.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"title": "$:/core/modules/filters/all/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"title": "$:/core/modules/filters/all/tiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"title": "$:/core/modules/filters/all.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"title": "$:/core/modules/filters/backlinks.js",
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"title": "$:/core/modules/filters/before.js",
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"title": "$:/core/modules/filters/commands.js",
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/compare.js": {
"title": "$:/core/modules/filters/compare.js",
"text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = types[type] || types.number,\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar types = {\n\t\"number\": function(a,b) {\n\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t},\n\t\"integer\": function(a,b) {\n\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t},\n\t\"string\": function(a,b) {\n\t\treturn compare(\"\" + a,\"\" +b);\n\t},\n\t\"date\": function(a,b) {\n\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\tdateB = $tw.utils.parseDate(b);\n\t\tif(!isFinite(dateA)) {\n\t\t\tdateA = new Date(0);\n\t\t}\n\t\tif(!isFinite(dateB)) {\n\t\t\tdateB = new Date(0);\n\t\t}\n\t\treturn compare(dateA,dateB);\n\t},\n\t\"version\": function(a,b) {\n\t\treturn $tw.utils.compareVersions(a,b);\n\t}\n};\n\nfunction compare(a,b) {\n\tif(a > b) {\n\t\treturn +1;\n\t} else if(a < b) {\n\t\treturn -1;\n\t} else {\n\t\treturn 0;\n\t}\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/contains.js": {
"title": "$:/core/modules/filters/contains.js",
"text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"title": "$:/core/modules/filters/count.js",
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"title": "$:/core/modules/filters/days.js",
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"title": "$:/core/modules/filters/each.js",
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"title": "$:/core/modules/filters/eachday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"title": "$:/core/modules/filters/editiondescription.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"title": "$:/core/modules/filters/editions.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/else.js": {
"title": "$:/core/modules/filters/else.js",
"text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"title": "$:/core/modules/filters/decodeuricomponent.js",
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"title": "$:/core/modules/filters/enlist.js",
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"title": "$:/core/modules/filters/field.js",
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"title": "$:/core/modules/filters/fields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"title": "$:/core/modules/filters/get.js",
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"title": "$:/core/modules/filters/getindex.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getvariable.js": {
"title": "$:/core/modules/filters/getvariable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"title": "$:/core/modules/filters/has.js",
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === \"\")) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === \"\" || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"title": "$:/core/modules/filters/haschanged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"title": "$:/core/modules/filters/indexes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"title": "$:/core/modules/filters/insertbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/binary.js": {
"title": "$:/core/modules/filters/is/binary.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/blank.js": {
"title": "$:/core/modules/filters/is/blank.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/current.js": {
"title": "$:/core/modules/filters/is/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"title": "$:/core/modules/filters/is/image.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"title": "$:/core/modules/filters/is/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"title": "$:/core/modules/filters/is/orphan.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"title": "$:/core/modules/filters/is/shadow.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"title": "$:/core/modules/filters/is/system.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"title": "$:/core/modules/filters/is/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"title": "$:/core/modules/filters/is/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/variable.js": {
"title": "$:/core/modules/filters/is/variable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"title": "$:/core/modules/filters/is.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"title": "$:/core/modules/filters/limit.js",
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"title": "$:/core/modules/filters/links.js",
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"title": "$:/core/modules/filters/list.js",
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"title": "$:/core/modules/filters/listed.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"title": "$:/core/modules/filters/listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/lookup.js": {
"title": "$:/core/modules/filters/lookup.js",
"text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || options.wiki.getTiddlerText(operator.operand + operator.suffix));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/match.js": {
"title": "$:/core/modules/filters/match.js",
"text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/math.js": {
"title": "$:/core/modules/filters/math.js",
"text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"title": "$:/core/modules/filters/minlength.js",
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"title": "$:/core/modules/filters/modules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"title": "$:/core/modules/filters/moduletypes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"title": "$:/core/modules/filters/next.js",
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"title": "$:/core/modules/filters/plugintiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"title": "$:/core/modules/filters/prefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"title": "$:/core/modules/filters/previous.js",
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/range.js": {
"title": "$:/core/modules/filters/range.js",
"text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"title": "$:/core/modules/filters/regexp.js",
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"title": "$:/core/modules/filters/removeprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"title": "$:/core/modules/filters/removesuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"title": "$:/core/modules/filters/sameday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"title": "$:/core/modules/filters/search.js",
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"title": "$:/core/modules/filters/shadowsource.js",
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"title": "$:/core/modules/filters/sort.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"title": "$:/core/modules/filters/splitbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"title": "$:/core/modules/filters/storyviews.js",
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/strings.js": {
"title": "$:/core/modules/filters/strings.js",
"text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.trim(a)];}\n);\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subfilter.js": {
"title": "$:/core/modules/filters/subfilter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subtiddlerfields.js": {
"title": "$:/core/modules/filters/subtiddlerfields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"title": "$:/core/modules/filters/suffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"title": "$:/core/modules/filters/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"title": "$:/core/modules/filters/tagging.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"title": "$:/core/modules/filters/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/then.js": {
"title": "$:/core/modules/filters/then.js",
"text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"title": "$:/core/modules/filters/title.js",
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"title": "$:/core/modules/filters/untagged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/variables.js": {
"title": "$:/core/modules/filters/variables.js",
"text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"title": "$:/core/modules/filters/wikiparserrules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"title": "$:/core/modules/filters/x-listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n /*\n Fetch titles from the current list\n */\n var prepare_results = function (source) {\n var results = [];\n source(function (tiddler, title) {\n results.push(title);\n });\n return results;\n };\n\n /*\n Moves a number of items from the tail of the current list before the item named in the operand\n */\n exports.putbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list after the item named in the operand\n */\n exports.putafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Replaces the item named in the operand with a number of items from the tail of the current list\n */\n exports.replace = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -count) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list to the head of the list\n */\n exports.putfirst = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(-count).concat(results.slice(0, -count));\n };\n\n /*\n Moves a number of items from the head of the current list to the tail of the list\n */\n exports.putlast = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(count).concat(results.slice(0, count));\n };\n\n /*\n Moves the item named in the operand a number of places forward or backward in the list\n */\n exports.move = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1),\n marker = results.splice(index, 1),\n offset = (index + count) > 0 ? index + count : 0;\n return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n };\n\n /*\n Returns the items from the current list that are after the item named in the operand\n */\n exports.allafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(index) :\n results.slice(index + 1);\n };\n\n /*\n Returns the items from the current list that are before the item named in the operand\n */\n exports.allbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(0, index + 1) :\n results.slice(0, index);\n };\n\n /*\n Appends the items listed in the operand array to the tail of the current list\n */\n exports.append = function (source, operator) {\n var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || append.length;\n return (append.length === 0) ? results :\n (operator.prefix) ? results.concat(append.slice(-count)) :\n results.concat(append.slice(0, count));\n };\n\n /*\n Prepends the items listed in the operand array to the head of the current list\n */\n exports.prepend = function (source, operator) {\n var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,prepend.length);\n return (prepend.length === 0) ? results :\n (operator.prefix) ? prepend.slice(-count).concat(results) :\n prepend.slice(0, count).concat(results);\n };\n\n /*\n Returns all items from the current list except the items listed in the operand array\n */\n exports.remove = function (source, operator) {\n var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || array.length,\n p,\n len,\n index;\n len = array.length - 1;\n for (p = 0; p < count; ++p) {\n if (operator.prefix) {\n index = results.indexOf(array[len - p]);\n } else {\n index = results.indexOf(array[p]);\n }\n if (index !== -1) {\n results.splice(index, 1);\n }\n }\n return results;\n };\n\n /*\n Returns all items from the current list sorted in the order of the items in the operand array\n */\n exports.sortby = function (source, operator) {\n var results = prepare_results(source);\n if (!results || results.length < 2) {\n return results;\n }\n var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n results.sort(function (a, b) {\n return lookup.indexOf(a) - lookup.indexOf(b);\n });\n return results;\n };\n\n /*\n Removes all duplicate items from the current list\n */\n exports.unique = function (source, operator) {\n var results = prepare_results(source);\n var set = results.reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n return a;\n }, []);\n return set;\n };\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"title": "$:/core/modules/filters.js",
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tArray.prototype.push.apply(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tif(results.length === 0) {\n\t\t\t\t\t\t\t// Main result so far is empty\n\t\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/indexers/backlinks-indexer.js": {
"title": "$:/core/modules/indexers/backlinks-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t oldLinks = [],\n\t self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/field-indexer.js": {
"title": "$:/core/modules/indexers/field-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/tag-indexer.js": {
"title": "$:/core/modules/indexers/tag-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/info/platform.js": {
"title": "$:/core/modules/info/platform.js",
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"title": "$:/core/modules/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"title": "$:/core/modules/language.js",
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"title": "$:/core/modules/macros/changecount.js",
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"title": "$:/core/modules/macros/contrastcolour.js",
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"title": "$:/core/modules/macros/csvtiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"title": "$:/core/modules/macros/displayshortcuts.js",
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"title": "$:/core/modules/macros/jsontiddler.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"title": "$:/core/modules/macros/jsontiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"title": "$:/core/modules/macros/makedatauri.js",
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"title": "$:/core/modules/macros/now.js",
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"title": "$:/core/modules/macros/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"title": "$:/core/modules/macros/resolvepath.js",
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/unusedtitle.js": {
"title": "$:/core/modules/macros/unusedtitle.js",
"text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"title": "$:/core/modules/macros/version.js",
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"title": "$:/core/modules/parsers/audioparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/binaryparser.js": {
"title": "$:/core/modules/parsers/binaryparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"title": "$:/core/modules/parsers/csvparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"title": "$:/core/modules/parsers/htmlparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"title": "$:/core/modules/parsers/imageparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"title": "$:/core/modules/utils/parseutils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"title": "$:/core/modules/parsers/pdfparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"title": "$:/core/modules/parsers/textparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"title": "$:/core/modules/parsers/videoparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/import.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/import.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"title": "$:/core/modules/pluginswitcher.js",
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"title": "$:/core/modules/saver-handler.js",
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"title": "$:/core/modules/savers/andtidwiki.js",
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"title": "$:/core/modules/savers/beaker.js",
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"title": "$:/core/modules/savers/download.js",
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"title": "$:/core/modules/savers/fsosaver.js",
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitea.js": {
"title": "$:/core/modules/savers/gitea.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/github.js": {
"title": "$:/core/modules/savers/github.js",
"text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitlab.js": {
"title": "$:/core/modules/savers/gitlab.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"title": "$:/core/modules/savers/manualdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"title": "$:/core/modules/savers/msdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"title": "$:/core/modules/savers/put.js",
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"title": "$:/core/modules/savers/tiddlyfox.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"title": "$:/core/modules/savers/tiddlyie.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"title": "$:/core/modules/savers/twedit.js",
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"title": "$:/core/modules/savers/upload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/server/authenticators/basic.js": {
"title": "$:/core/modules/server/authenticators/basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve($tw.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/authenticators/header.js": {
"title": "$:/core/modules/server/authenticators/header.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\");\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/routes/delete-tiddler.js": {
"title": "$:/core/modules/server/routes/delete-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-favicon.js": {
"title": "$:/core/modules/server/routes/get-favicon.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-file.js": {
"title": "$:/core/modules/server/routes/get-file.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve($tw.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-index.js": {
"title": "$:/core/modules/server/routes/get-index.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-login-basic.js": {
"title": "$:/core/modules/server/routes/get-login-basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-status.js": {
"title": "$:/core/modules/server/routes/get-status.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler-html.js": {
"title": "$:/core/modules/server/routes/get-tiddler-html.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler.js": {
"title": "$:/core/modules/server/routes/get-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddlers-json.js": {
"title": "$:/core/modules/server/routes/get-tiddlers-json.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif($tw.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif($tw.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/put-tiddler.js": {
"title": "$:/core/modules/server/routes/put-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/server.js": {
"title": "$:/core/modules/server/server.js",
"text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"path-prefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/browser-messaging.js": {
"title": "$:/core/modules/browser-messaging.js",
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"title": "$:/core/modules/startup/commands.js",
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/CSSescape.js": {
"title": "$:/core/modules/startup/CSSescape.js",
"text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"title": "$:/core/modules/startup/favicon.js",
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"title": "$:/core/modules/startup/info.js",
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\tvar fields = {\n\t\ttitle: TITLE_INFO_PLUGIN,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"title": "$:/core/modules/startup/load-modules.js",
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"title": "$:/core/modules/startup/password.js",
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/plugins.js": {
"title": "$:/core/modules/startup/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"title": "$:/core/modules/startup/render.js",
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"title": "$:/core/modules/startup/rootwidget.js",
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"title": "$:/core/modules/startup.js",
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\tvar executeStartupTiddlers = function(tag) {\n\t\t$tw.utils.each($tw.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\t\t$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);\n\t\t});\n\t};\n\texecuteStartupTiddlers(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"title": "$:/core/modules/startup/story.js",
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\t$tw.wiki.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"title": "$:/core/modules/startup/windows.js",
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t},{\n\t\t\tname: \"click\",\n\t\t\thandlerObject: $tw.popup,\n\t\t\thandlerMethod: \"handleEvent\"\n\t\t}]);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"title": "$:/core/modules/story.js",
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"title": "$:/core/modules/storyviews/classic.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"title": "$:/core/modules/storyviews/pop.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"title": "$:/core/modules/storyviews/zoomin.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"title": "$:/core/modules/syncer.js",
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && $tw.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t};\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif($tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t};\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || $tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"title": "$:/core/modules/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"title": "$:/core/modules/upgraders/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = $tw.wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? ($tw.wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"title": "$:/core/modules/upgraders/system.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"title": "$:/core/modules/upgraders/themetweaks.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
"text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)(e=r.charCodeAt(t))<128?o+=String.fromCharCode(e):e>127&&e<2048?(o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128)):(o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128));return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)(t=r.charCodeAt(o))<128?(e+=String.fromCharCode(t),o++):t>191&&t<224?(e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2):(e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3);return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var n=0;n<t.length;n++)o[t[n]]=o.require(t[n]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,n,i,d,f,a,h,c=\"\",u=0;u<r.length;)d=(t=r.charCodeAt(u++))>>2,f=(3&t)<<4|(n=r.charCodeAt(u++))>>4,a=(15&n)<<2|(i=r.charCodeAt(u++))>>6,h=63&i,isNaN(n)?a=h=64:isNaN(i)&&(h=64),c+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return c},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,n,i,d,f,a,h=\"\",c=0;c<r.length;)t=o.indexOf(r.charAt(c++))<<2|(d=o.indexOf(r.charAt(c++)))>>4,n=(15&d)<<4|(f=o.indexOf(r.charAt(c++)))>>2,i=(3&f)<<6|(a=o.indexOf(r.charAt(c++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(n)),64!=a&&(h+=String.fromCharCode(i));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
"module-type": "library"
},
"$:/core/modules/utils/crypto.js": {
"title": "$:/core/modules/utils/crypto.js",
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/csv.js": {
"title": "$:/core/modules/utils/csv.js",
"text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
"text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&\").replace(d,\"<\").replace(e,\">\").replace(f,\"¶<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
"module-type": "library"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"title": "$:/core/modules/utils/dom/animations/slide.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"title": "$:/core/modules/utils/dom/animator.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"title": "$:/core/modules/utils/dom/browser.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"title": "$:/core/modules/utils/dom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"title": "$:/core/modules/utils/dom/dragndrop.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"title": "$:/core/modules/utils/dom/http.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!$tw.utils.hop(headers,\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"title": "$:/core/modules/utils/dom/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"title": "$:/core/modules/utils/dom/modal.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"title": "$:/core/modules/utils/dom/notifier.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"title": "$:/core/modules/utils/dom/popup.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"title": "$:/core/modules/utils/dom/scroller.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"title": "$:/core/modules/utils/edition-info.js",
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"title": "$:/core/modules/utils/fakedom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"title": "$:/core/modules/utils/filesystem.js",
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {};\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\tfilepath;\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// If not, generate a base pathname\n\tif(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t// Don't let the filename start with a dot because such files are invisible on *nix\n\tfilepath = filepath.replace(/^\\./g,\"_\");\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/logger.js": {
"title": "$:/core/modules/utils/logger.js",
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"title": "$:/core/modules/utils/parsetree.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"title": "$:/core/modules/utils/performance.js",
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"title": "$:/core/modules/utils/pluginmaker.js",
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/transliterate.js": {
"title": "$:/core/modules/utils/transliterate.js",
"text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"title": "$:/core/modules/utils/utils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s) {\n\t// See http://www.json.org/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/\\x08/g, '\\\\b') // backspace\n\t\t.replace(/\\x0c/g, '\\\\f') // formfeed\n\t\t.replace(/\\t/g, '\\\\t') // tab\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"title": "$:/core/modules/widgets/action-createtiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"title": "$:/core/modules/widgets/action-deletefield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"title": "$:/core/modules/widgets/action-listops.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"title": "$:/core/modules/widgets/action-navigate.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-popup.js": {
"title": "$:/core/modules/widgets/action-popup.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords);\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"title": "$:/core/modules/widgets/action-sendmessage.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"title": "$:/core/modules/widgets/action-setfield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"title": "$:/core/modules/widgets/browse.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"title": "$:/core/modules/widgets/button.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\t\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"title": "$:/core/modules/widgets/checkbox.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"title": "$:/core/modules/widgets/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"title": "$:/core/modules/widgets/count.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/diff-text.js": {
"title": "$:/core/modules/widgets/diff-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"title": "$:/core/modules/widgets/draggable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"title": "$:/core/modules/widgets/droppable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = event.ctrlKey && ! event.shiftKey ? \"ctrl\" : event.shiftKey && !event.ctrlKey ? \"shift\" : \n\t\t\t\tevent.ctrlKey && event.shiftKey ? \"ctrl-shift\" : \"normal\" ;\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag || changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"title": "$:/core/modules/widgets/dropzone.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"title": "$:/core/modules/widgets/edit-binary.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"title": "$:/core/modules/widgets/edit-bitmap.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"title": "$:/core/modules/widgets/edit-shortcut.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"title": "$:/core/modules/widgets/edit-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"title": "$:/core/modules/widgets/edit.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder},\n\t\t\t\"tabindex\": {type: \"string\", value: this.editTabIndex},\n\t\t\t\"focus\": {type: \"string\", value: this.editFocus}\n\t\t},\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"title": "$:/core/modules/widgets/element.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\ttag = \"h\" + headingLevel;\n\t}\n\t// Create the DOM node\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"title": "$:/core/modules/widgets/encrypt.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"title": "$:/core/modules/widgets/entity.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"title": "$:/core/modules/widgets/fieldmangler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"title": "$:/core/modules/widgets/fields.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"title": "$:/core/modules/widgets/image.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"title": "$:/core/modules/widgets/importvariables.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.makeChildWidgets([node]);\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"title": "$:/core/modules/widgets/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"title": "$:/core/modules/widgets/link.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"title": "$:/core/modules/widgets/linkcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"title": "$:/core/modules/widgets/list.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/macrocall.js": {
"title": "$:/core/modules/widgets/macrocall.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"title": "$:/core/modules/widgets/navigator.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.wiki.addToStory(title,fromTitle,this.storyTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\tthis.wiki.renameTiddler(from,to);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"title": "$:/core/modules/widgets/password.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/qualify.js": {
"title": "$:/core/modules/widgets/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"title": "$:/core/modules/widgets/radio.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n \t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n \t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/range.js": {
"title": "$:/core/modules/widgets/range.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\t\t\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField || \"text\",\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue || \"\");\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue || \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes['min'] || changedAttributes['max'] || changedAttributes['increment'] || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\t\t\t\t\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/core/modules/widgets/raw.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"title": "$:/core/modules/widgets/reveal.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"title": "$:/core/modules/widgets/scrollable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"title": "$:/core/modules/widgets/select.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"title": "$:/core/modules/widgets/set.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/core/modules/widgets/text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"title": "$:/core/modules/widgets/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"title": "$:/core/modules/widgets/transclude.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"title": "$:/core/modules/widgets/vars.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"title": "$:/core/modules/widgets/view.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"title": "$:/core/modules/widgets/widget.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"title": "$:/core/modules/widgets/wikify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"title": "$:/core/modules/wiki-bulkops.js",
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"title": "$:/core/modules/wiki.js",
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t// indexOf unless we have a new\n\t\t\t\t\t// position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\t\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\t\t\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n})();\n\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"description": "A clean white palette to let you focus",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Blue": {
"title": "$:/palettes/Blue",
"name": "Blue",
"description": "A blue theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Muted": {
"title": "$:/palettes/Muted",
"name": "Muted",
"description": "Bright tiddlers on a muted background",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastLight": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/DarkPhotos": {
"title": "$:/palettes/DarkPhotos",
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/GruvboxDark": {
"title": "$:/palettes/GruvboxDark",
"name": "Gruvbox Dark",
"description": "Retro groove color scheme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "https://github.com/morhetz/gruvbox",
"text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #504945\nbutton-foreground: #fbf1c7\nbutton-border: transparent\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: #7c6f64\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #282828\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: <<colour button-background>>\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>"
},
"$:/palettes/Nord": {
"title": "$:/palettes/Nord",
"name": "Nord",
"description": "An arctic, north-bluish color palette.",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
"text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #4C566A\nbutton-foreground: #D8DEE9\nbutton-border: transparent\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #2e3440\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\n"
},
"$:/palettes/Rocker": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"description": "A dark theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarFlare": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"description": "Warm, relaxing earth colours",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarizedLight": {
"title": "$:/palettes/SolarizedLight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedLight",
"text": "alert-background: #eee8d5\nalert-border: #073642\nalert-highlight: #cb4b16\nalert-muted-foreground: #586e75\nbackground: #fdf6e3\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #cb4b16\nbutton-foreground: #fdf6e3\nbutton-border: transparent\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #d33682\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #859900\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #D08770\ndownload-background: #859900\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #fdf6e3\ndropdown-tab-background: #93a1a1\ndropzone-background: #859900\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: #d33682\nexternal-link-foreground-visited: #b58900\nexternal-link-foreground: #cb4b16\nforeground: #839496\nmessage-background: #586e75\nmessage-border: #586e75\nmessage-foreground: #eee8d5\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #eee8d5\nmodal-footer-background: #eee8d5\nmodal-footer-border: #eee8d5\nmodal-header-border: #eee8d5\nmuted-foreground: #93a1a1\nnotification-background: #EBCB8B\nnotification-border: #D08770\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #93a1a1\nprimary: #2aa198\nselect-tag-background: #eee8d5\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: #eee8d5\nsidebar-controls-foreground-hover: #268bd2\nsidebar-controls-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #839496\nsidebar-muted-foreground-hover: #657b83\nsidebar-muted-foreground: #93a1a1\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-background: #839496\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #657b83\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #839496\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #859900\nsidebar-tiddler-link-foreground: #268bd2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #dc322f\ntab-background-selected: #fdf6e3\ntab-background: #839496\ntab-border-selected: #93a1a1\ntab-border: #93a1a1\ntab-divider: #fdf6e3\ntab-foreground-selected: #839496\ntab-foreground: #eee8d5\ntable-border: #657b83\ntable-footer-background: #657b83\ntable-header-background: #93a1a1\ntag-background: #6c71c4\ntag-foreground: #eee8d5\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #b58900\ntiddler-controls-foreground-selected: #b58900\ntiddler-controls-foreground: #073642\ntiddler-editor-background: #eee8d5\ntiddler-editor-border-image: #eee8d5\ntiddler-editor-border: #eee8d5\ntiddler-editor-fields-even: #eee8d5\ntiddler-editor-fields-odd: #fdf6e3\ntiddler-info-background: #eee8d5\ntiddler-info-border: #eee8d5\ntiddler-info-tab-background: #586e75\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #586e75\ntiddler-title-foreground: #073642\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #839496\nvery-muted-foreground: #93a1a1\n"
},
"$:/palettes/SpartanDay": {
"title": "$:/palettes/SpartanDay",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Cold, spartan day colors",
"name": "Spartan Day",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
},
"$:/palettes/SpartanNight": {
"title": "$:/palettes/SpartanNight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Dark spartan colors",
"name": "Spartan Night",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
},
"$:/palettes/Twilight": {
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"author": "Thomas Elmiger",
"type": "application/x-tiddler-dictionary",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
},
"$:/palettes/Vanilla": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
},
"$:/library/sjcl.js/license": {
"title": "$:/library/sjcl.js/license",
"type": "text/plain",
"text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
},
"$:/core/templates/MOTW.html": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-raw": {
"title": "$:/core/templates/canonical-uri-external-raw",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/core/templates/exporters/StaticRiver",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/StaticRiver}}",
"extension": ".html",
"text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
},
"$:/core/save/all-external-js": {
"title": "$:/core/save/all-external-js",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
},
"$:/core/templates/tiddlywiki5.js": {
"title": "$:/core/templates/tiddlywiki5.js",
"text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
},
"$:/core/templates/tiddlywiki5.js/tiddlers": {
"title": "$:/core/templates/tiddlywiki5.js/tiddlers",
"text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n$tw.preloadTiddlerArray([{\n\ttitle: \"$:/config/SaveWikiButton/Template\",\n\ttext: \"$:/core/save/all-external-js\"\n}]);\n`\n"
},
"$:/core/templates/tiddlywiki5-external-js.html": {
"title": "$:/core/templates/tiddlywiki5-external-js.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
},
"$:/core/templates/html-div-skinny-tiddler": {
"title": "$:/core/templates/html-div-skinny-tiddler",
"text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/server/static.sidebar.wikitext": {
"title": "$:/core/templates/server/static.sidebar.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
},
"$:/core/templates/server/static.tiddler.html": {
"title": "$:/core/templates/server/static.tiddler.html",
"text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
},
"$:/core/templates/server/static.tiddler.wikitext": {
"title": "$:/core/templates/server/static.tiddler.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/core/templates/static.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/core/templates/static.tiddler.html",
"text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/Actions/new-image": {
"title": "$:/core/ui/Actions/new-image",
"tags": "$:/tags/Actions",
"description": "create a new image tiddler",
"text": "\\define get-type()\nimage/$(imageType)$\n\\end\n<$vars imageType={{$:/config/NewImageType}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags={{$:/config/NewTiddler/Tags!!tags}}/>\n</$vars>\n"
},
"$:/core/ui/Actions/new-journal": {
"title": "$:/core/ui/Actions/new-journal",
"tags": "$:/tags/Actions",
"description": "create a new journal tiddler",
"text": "<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
},
"$:/core/ui/Actions/new-tiddler": {
"title": "$:/core/ui/Actions/new-tiddler",
"tags": "$:/tags/Actions",
"description": "create a new empty tiddler",
"text": "<$action-sendmessage $message=\"tm-new-tiddler\" tags={{$:/config/NewTiddler/Tags!!tags}}/>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/core/ui/AdvancedSearch/Standard",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Standard/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewTiddler/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewJournal/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[title]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[title]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Updates": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
"caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
"text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[title]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/core/ui/ControlPanel/Saving/General",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
"list-before": "",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/GitHub": {
"title": "$:/core/ui/ControlPanel/Saving/GitHub",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/GitLab": {
"title": "$:/core/ui/ControlPanel/Saving/GitLab",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
},
"$:/core/ui/ControlPanel/Saving/Gitea": {
"title": "$:/core/ui/ControlPanel/Saving/Gitea",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Stylesheets": {
"title": "$:/core/ui/ControlPanel/Stylesheets",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-current": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
"tags": "$:/tags/EditPreview",
"caption": "differences from current",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
"tags": "$:/tags/EditPreview",
"caption": "differences from shadow (if any)",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/state/showeditpreview": {
"title": "$:/state/showeditpreview",
"text": "no"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}}></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>> \n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=<<newFieldNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}}/>\n</span> \n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> \n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}}/>\n</$keyboard>\n</$set>\n</span> \n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon)\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\"/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>\n</$list>\n<$set name=\"tabIndex\" value={{$:/config/EditTabIndex}}>\n<$macrocall $name=\"tag-picker\"/>\n</$set>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}}/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\whitespace trim\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}}/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save": {
"title": "$:/core/ui/Buttons/save",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
"description": "{{$:/language/Buttons/Save/Hint}}",
"text": "\\define save-tiddler-button()\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/core/ui/EditorToolbar/editor-height",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/fixed-height",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
"description": "{{$:/language/Buttons/EditorHeight/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $tiddler=<<dropdown-state>> />\n<$action-deletetiddler $tiddler=<<searchTiddler>> />\n<$action-deletetiddler $tiddler=<<linkTiddler>> />\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"ENTER\" actions=<<add-link-actions>>>\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$keyboard>\n</$vars>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((link))",
"dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/linkify": {
"title": "$:/core/ui/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Linkify/Hint}}",
"icon": "$:/core/images/linkify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((linkify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/core/ui/EditorToolbar/preview-type",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/chevron-down",
"caption": "{{$:/language/Buttons/PreviewType/Caption}}",
"description": "{{$:/language/Buttons/PreviewType/Hint}}",
"condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
"button-classes": "tc-text-editor-toolbar-item-adjunct",
"dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
},
"$:/core/ui/EditorToolbar/preview": {
"title": "$:/core/ui/EditorToolbar/preview",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/preview-open",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/Preview/Caption}}",
"description": "{{$:/language/Buttons/Preview/Hint}}",
"condition": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/rotate-left": {
"title": "$:/core/ui/EditorToolbar/rotate-left",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/rotate-left",
"caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
"description": "{{$:/language/Buttons/RotateLeft/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/transcludify": {
"title": "$:/core/ui/EditorToolbar/transcludify",
"caption": "{{$:/language/Buttons/Transcludify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Transcludify/Hint}}",
"icon": "$:/core/images/transcludify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((transcludify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/SessionTiddlers": {
"title": "$:/core/Filters/SessionTiddlers",
"tags": "$:/tags/Filter",
"filter": "[haschanged[]]",
"description": "{{$:/language/Filters/SessionTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/core/Filters/TypedTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Filters/TypedTiddlers}}",
"text": ""
},
"$:/core/ui/ImportListing": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" stateTitle=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Diff": {
"title": "$:/core/ui/ImportPreviews/Diff",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Diff}}",
"text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
},
"$:/core/ui/ImportPreviews/DiffFields": {
"title": "$:/core/ui/ImportPreviews/DiffFields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
"text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
},
"$:/core/ui/ImportPreviews/Fields": {
"title": "$:/core/ui/ImportPreviews/Fields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Fields}}",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Text": {
"title": "$:/core/ui/ImportPreviews/Text",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Text}}",
"text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
},
"$:/core/ui/ImportPreviews/TextRaw": {
"title": "$:/core/ui/ImportPreviews/TextRaw",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
"text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
},
"$:/core/ui/KeyboardShortcuts/advanced-search": {
"title": "$:/core/ui/KeyboardShortcuts/advanced-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((advanced-search))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\"/>\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-image": {
"title": "$:/core/ui/KeyboardShortcuts/new-image",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-image))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-journal": {
"title": "$:/core/ui/KeyboardShortcuts/new-journal",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-journal))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-tiddler": {
"title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-tiddler))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/sidebar-search": {
"title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((sidebar-search))",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
},
"$:/core/ui/KeyboardShortcut/toggle-sidebar": {
"title": "$:/core/ui/KeyboardShortcut/toggle-sidebar",
"tags": "$:/tags/KeyboardShortcut",
"key": "((toggle-sidebar))",
"text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Explorer": {
"title": "$:/core/ui/MoreSideBar/Explorer",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Explorer/Caption}}",
"text": "<<tree \"$:/\">>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/fold-all": {
"title": "$:/core/ui/Buttons/fold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
"description": "{{$:/language/Buttons/FoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/core/ui/Buttons/more-page-actions",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/drafts": {
"title": "$:/core/ui/PageTemplate/drafts",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-enable-drag-and-drop\" value={{$:/config/DragAndDrop/Enable}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/PaletteManager": {
"title": "$:/PaletteManager",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}} <$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}} <$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip=<<lingo Delete/Hint>> aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"> <<lingo Names/External/Show>></$checkbox>\n\n<<palette-manager-table>>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" />\n</div>"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">{{$:/core/images/close-button}}</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
},
"$:/core/ui/SideBarSegments/page-controls": {
"title": "$:/core/ui/SideBarSegments/page-controls",
"tags": "$:/tags/SideBarSegment",
"text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
},
"$:/core/ui/SideBarSegments/search": {
"title": "$:/core/ui/SideBarSegments/search",
"tags": "$:/tags/SideBarSegment",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"searchTerm\" value={{{ [<searchTiddler>get[text]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search<searchTerm>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-subtitle": {
"title": "$:/core/ui/SideBarSegments/site-subtitle",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-title": {
"title": "$:/core/ui/SideBarSegments/site-title",
"tags": "$:/tags/SideBarSegment",
"text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
},
"$:/core/ui/SideBarSegments/tabs": {
"title": "$:/core/ui/SideBarSegments/tabs",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\"/>\n\n</div>\n"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/core/ui/Buttons/export-tiddler",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
"description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
"text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/fold-bar": {
"title": "$:/core/ui/Buttons/fold-bar",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
"description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
"text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags!!tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/core/ui/Buttons/new-journal-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
"description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
"text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags!!tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoFocus": {
"title": "$:/config/AutoFocus",
"text": "title"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/config/BitmapEditor/ImageSizes",
"text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/config/BitmapEditor/Opacities",
"text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
},
"$:/config/BitmapEditor/Opacity": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultMoreSidebarTab": {
"title": "$:/config/DefaultMoreSidebarTab",
"text": "$:/core/ui/MoreSideBar/Tags"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/webp": {
"title": "$:/config/EditorTypeMappings/image/webp",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heic": {
"title": "$:/config/EditorTypeMappings/image/heic",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heif": {
"title": "$:/config/EditorTypeMappings/image/heif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/NewImageType": {
"title": "$:/config/NewImageType",
"text": "jpeg"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "https://tiddlywiki.com/library/v5.1.22/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/RegisterPluginType/plugin": {
"title": "$:/config/RegisterPluginType/plugin",
"text": "yes"
},
"$:/config/RegisterPluginType/theme": {
"title": "$:/config/RegisterPluginType/theme",
"text": "no"
},
"$:/config/RegisterPluginType/language": {
"title": "$:/config/RegisterPluginType/language",
"text": "no"
},
"$:/config/RegisterPluginType/info": {
"title": "$:/config/RegisterPluginType/info",
"text": "no"
},
"$:/config/RegisterPluginType/import": {
"title": "$:/config/RegisterPluginType/import",
"text": "no"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
"title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
"text": "yes"
},
"$:/config/ShortcutInfo/add-field": {
"title": "$:/config/ShortcutInfo/add-field",
"text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search": {
"title": "$:/config/ShortcutInfo/advanced-search",
"text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/new-image": {
"title": "$:/config/ShortcutInfo/new-image",
"text": "{{$:/language/Buttons/NewImage/Hint}}"
},
"$:/config/ShortcutInfo/new-journal": {
"title": "$:/config/ShortcutInfo/new-journal",
"text": "{{$:/language/Buttons/NewJournal/Hint}}"
},
"$:/config/ShortcutInfo/new-tiddler": {
"title": "$:/config/ShortcutInfo/new-tiddler",
"text": "{{$:/language/Buttons/NewTiddler/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/sidebar-search": {
"title": "$:/config/ShortcutInfo/sidebar-search",
"text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/toggle-sidebar": {
"title": "$:/config/ShortcutInfo/toggle-sidebar",
"text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Tags/MinLength": {
"title": "$:/config/Tags/MinLength",
"text": "0"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-mac/new-image": {
"title": "$:/config/shortcuts-mac/new-image",
"text": "ctrl-I"
},
"$:/config/shortcuts-mac/new-journal": {
"title": "$:/config/shortcuts-mac/new-journal",
"text": "ctrl-J"
},
"$:/config/shortcuts-mac/new-tiddler": {
"title": "$:/config/shortcuts-mac/new-tiddler",
"text": "ctrl-N"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts-not-mac/new-image": {
"title": "$:/config/shortcuts-not-mac/new-image",
"text": "alt-I"
},
"$:/config/shortcuts-not-mac/new-journal": {
"title": "$:/config/shortcuts-not-mac/new-journal",
"text": "alt-J"
},
"$:/config/shortcuts-not-mac/new-tiddler": {
"title": "$:/config/shortcuts-not-mac/new-tiddler",
"text": "alt-N"
},
"$:/config/shortcuts/add-field": {
"title": "$:/config/shortcuts/add-field",
"text": "enter"
},
"$:/config/shortcuts/advanced-search": {
"title": "$:/config/shortcuts/advanced-search",
"text": "ctrl-shift-A"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": "ctrl-shift-F"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/linkify": {
"title": "$:/config/shortcuts/linkify",
"text": "alt-shift-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/shortcuts/toggle-sidebar": {
"title": "$:/config/shortcuts/toggle-sidebar",
"text": "alt-shift-S"
},
"$:/config/shortcuts/transcludify": {
"title": "$:/config/shortcuts/transcludify",
"text": "alt-shift-T"
},
"$:/config/ui/EditTemplate": {
"title": "$:/config/ui/EditTemplate",
"text": "$:/core/ui/EditTemplate"
},
"$:/config/ui/ViewTemplate": {
"title": "$:/config/ui/ViewTemplate",
"text": "$:/core/ui/ViewTemplate"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}\n><div class=\"tc-swatch\" style=<<swatchStyle>> title=<<colour>>/></$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/copy-to-clipboard": {
"title": "$:/core/macros/copy-to-clipboard",
"tags": "$:/tags/Macro",
"text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
},
"$:/core/macros/diff": {
"title": "$:/core/macros/diff",
"tags": "$:/tags/Macro",
"text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
},
"$:/core/macros/dumpvariables": {
"title": "$:/core/macros/dumpvariables",
"tags": "$:/tags/Macro",
"text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"created": "20170715180840889",
"modified": "20170715180914005",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n</$type$>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<tag>>/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker-inner()\n\\whitespace trim\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=<<newTagNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n<<add-tag-actions>>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$set name=\"newTagName\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]!is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n<hr>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n\\end\n\\define tag-picker()\n\\whitespace trim\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=<<tag-picker-inner>>>\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<<tag-picker-inner>>\n</$set>\n</$list>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"title": "$:/core/macros/timeline",
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=<<__selectedTiddler__>>>\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=<<__template__>>>\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tree": {
"title": "$:/core/macros/tree",
"tags": "$:/tags/Macro",
"text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/utils": {
"title": "$:/core/macros/utils",
"text": "\\define colour(colour)\n$colour$\n\\end\n"
},
"$:/snippets/minifocusswitcher": {
"title": "$:/snippets/minifocusswitcher",
"text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/snippets/peek-stylesheets": {
"title": "$:/snippets/peek-stylesheets",
"text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/AdvancedSearch/FilterButton": {
"title": "$:/tags/AdvancedSearch/FilterButton",
"list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
},
"$:/tags/ControlPanel": {
"title": "$:/tags/ControlPanel",
"list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
},
"$:/tags/ControlPanel/Info": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/tags/EditTemplate",
"list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
},
"$:/tags/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/EditorToolbar": {
"title": "$:/tags/EditorToolbar",
"list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
},
"$:/tags/Manager/ItemMain": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/tags/MoreSideBar": {
"title": "$:/tags/MoreSideBar",
"list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
},
"$:/tags/PageTemplate": {
"title": "$:/tags/PageTemplate",
"list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
"text": ""
},
"$:/tags/PluginLibrary": {
"title": "$:/tags/PluginLibrary",
"list": "$:/config/OfficialPluginLibrary"
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/SideBarSegment": {
"title": "$:/tags/SideBarSegment",
"list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
},
"$:/tags/TiddlerInfo": {
"title": "$:/tags/TiddlerInfo",
"list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
"text": ""
},
"$:/tags/TiddlerInfo/Advanced": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/tags/ViewTemplate",
"list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
},
"$:/tags/ViewToolbar": {
"title": "$:/tags/ViewToolbar",
"list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
}
}
}
<div class="tc-site-subtitle">
<$transclude tiddler="$:/SiteSubtitle" mode="inline"/>
</div>
<h1 class="tc-site-title">
<$transclude tiddler="$:/SiteTitle" mode="inline"/>
</h1>
The following tiddlers were imported:
# [[$:/plugins/bimlas/asciidoctor]]
\whitespace trim
<$navigator story="$:/fullscreen-editor">
<$button message="tm-edit-tiddler" tooltip="Edit in full screen mode" class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/full-screen-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text">
<$text text=" "/>
<$text text="edit in full screen"/>
</span>
</$list>
</$button>
</$navigator>
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background:
button-foreground:
button-border:
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
diff-delete-background: #ffc9c9
diff-delete-foreground: <<colour foreground>>
diff-equal-background:
diff-equal-foreground: <<colour foreground>>
diff-insert-background: #aaefad
diff-insert-foreground: <<colour foreground>>
diff-invisible-background:
diff-invisible-foreground: <<colour muted-foreground>>
dirty-indicator: #ff0000
download-background: #34c734
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #0000ee
foreground: #333333
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #bbb
notification-background: #ffffdd
notification-border: #999999
page-background: #fff
pre-background: #f5f5f5
pre-border: #cccccc
primary: #5778d8
select-tag-background:
select-tag-foreground:
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #f4f4f4
sidebar-tab-background: #e0e0e0
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #999999
site-title-foreground: <<colour tiddler-title-foreground>>
static-alert-foreground: #aaaaaa
tab-background-selected: #ffffff
tab-background: #d8d8d8
tab-border-selected: #d8d8d8
tab-border: #cccccc
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #ec6
tag-foreground: #ffffff
tiddler-background: #f1f1f1
tiddler-border: #b1b1b1
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #eee
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #00c
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
{
"tiddlers": {
"$:/plugins/bimlas/asciidoctor/EditorToolbar/bold": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"*\"\n\tsuffix=\"*\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-2": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"=\"\n\tcount=\"2\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-3": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"=\"\n\tcount=\"3\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-4": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"=\"\n\tcount=\"4\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-5": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"=\"\n\tcount=\"5\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-6": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"=\"\n\tcount=\"6\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/italic": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"_\"\n\tsuffix=\"_\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/linkify": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}} (Asciidoctor)",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"description": "{{$:/language/Buttons/Linkify/Hint}}",
"icon": "$:/core/images/linkify",
"list-before": "$:/plugins/bimlas/asciidoctor/EditorToolbar/mono-block",
"shortcuts": "((linkify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"link:#\"\n\tsuffix=\"[]\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/list-bullet": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/list-number": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\".\"\n\tcount=\"1\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/mono-block": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n[source]\n----\"\n\tsuffix=\"----\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/mono-line": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/picture-dropdown": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\nimage::$(imageTitle)$[]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/picture": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((picture))",
"dropdown": "$:/plugins/bimlas/asciidoctor/EditorToolbar/picture-dropdown"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/quote": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n____\"\n\tsuffix=\"____\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/strikethrough": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"+++<strike>\"\n\tsuffix=\"</strike>+++\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/subscript": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~\"\n\tsuffix=\"~\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/superscript": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^\"\n\tsuffix=\"^\"\n/>\n"
},
"$:/plugins/bimlas/asciidoctor/EditorToolbar/underline": {
"title": "$:/plugins/bimlas/asciidoctor/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}} (Asciidoctor)",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>type[text/asciidoc]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"+++<u>\"\n\tsuffix=\"</u>+++\"\n/>\n"
},
"$:/language/Docs/Types/text/asciidoc": {
"title": "$:/language/Docs/Types/text/asciidoc",
"description": "Asciidoctor",
"name": "text/asciidoc",
"group": "Text"
},
"$:/plugins/bimlas/asciidoctor/asciidoctor.js": {
"text": "// if (typeof Opal === 'undefined' && typeof module === 'object' && module.exports) {\n// Opal = require('opal-runtime').Opal;\n// }\n\nif (typeof Opal === 'undefined') {\n(function(undefined) {\n // @note\n // A few conventions for the documentation of this file:\n // 1. Always use \"//\" (in contrast with \"/**/\")\n // 2. The syntax used is Yardoc (yardoc.org), which is intended for Ruby (se below)\n // 3. `@param` and `@return` types should be preceded by `JS.` when referring to\n // JavaScript constructors (e.g. `JS.Function`) otherwise Ruby is assumed.\n // 4. `nil` and `null` being unambiguous refer to the respective\n // objects/values in Ruby and JavaScript\n // 5. This is still WIP :) so please give feedback and suggestions on how\n // to improve or for alternative solutions\n //\n // The way the code is digested before going through Yardoc is a secret kept\n // in the docs repo (https://github.com/opal/docs/tree/master).\n\n var global_object = this, console;\n\n // Detect the global object\n if (typeof(global) !== 'undefined') { global_object = global; }\n if (typeof(window) !== 'undefined') { global_object = window; }\n\n // Setup a dummy console object if missing\n if (typeof(global_object.console) === 'object') {\n console = global_object.console;\n } else if (global_object.console == null) {\n console = global_object.console = {};\n } else {\n console = {};\n }\n\n if (!('log' in console)) { console.log = function () {}; }\n if (!('warn' in console)) { console.warn = console.log; }\n\n if (typeof(this.Opal) !== 'undefined') {\n console.warn('Opal already loaded. Loading twice can cause troubles, please fix your setup.');\n return this.Opal;\n }\n\n var nil;\n\n // The actual class for BasicObject\n var BasicObject;\n\n // The actual Object class.\n // The leading underscore is to avoid confusion with window.Object()\n var _Object;\n\n // The actual Module class\n var Module;\n\n // The actual Class class\n var Class;\n\n // Constructor for instances of BasicObject\n function BasicObject_alloc(){}\n\n // Constructor for instances of Object\n function Object_alloc(){}\n\n // Constructor for instances of Class\n function Class_alloc(){}\n\n // Constructor for instances of Module\n function Module_alloc(){}\n\n // Constructor for instances of NilClass (nil)\n function NilClass_alloc(){}\n\n // The Opal object that is exposed globally\n var Opal = this.Opal = {};\n\n // All bridged classes - keep track to donate methods from Object\n var BridgedClasses = {};\n\n // This is a useful reference to global object inside ruby files\n Opal.global = global_object;\n global_object.Opal = Opal;\n\n // Configure runtime behavior with regards to require and unsupported fearures\n Opal.config = {\n missing_require_severity: 'error', // error, warning, ignore\n unsupported_features_severity: 'warning', // error, warning, ignore\n enable_stack_trace: true // true, false\n }\n\n // Minify common function calls\n var $hasOwn = Object.hasOwnProperty;\n var $slice = Opal.slice = Array.prototype.slice;\n\n // Nil object id is always 4\n var nil_id = 4;\n\n // Generates even sequential numbers greater than 4\n // (nil_id) to serve as unique ids for ruby objects\n var unique_id = nil_id;\n\n // Return next unique id\n Opal.uid = function() {\n unique_id += 2;\n return unique_id;\n };\n\n // Retrieve or assign the id of an object\n Opal.id = function(obj) {\n if (obj.$$is_number) return (obj * 2)+1;\n return obj.$$id || (obj.$$id = Opal.uid());\n };\n\n // Globals table\n Opal.gvars = {};\n\n // Exit function, this should be replaced by platform specific implementation\n // (See nodejs and chrome for examples)\n Opal.exit = function(status) { if (Opal.gvars.DEBUG) console.log('Exited with status '+status); };\n\n // keeps track of exceptions for $!\n Opal.exceptions = [];\n\n // @private\n // Pops an exception from the stack and updates `$!`.\n Opal.pop_exception = function() {\n Opal.gvars[\"!\"] = Opal.exceptions.pop() || nil;\n }\n\n // Inspect any kind of object, including non Ruby ones\n Opal.inspect = function(obj) {\n if (obj === undefined) {\n return \"undefined\";\n }\n else if (obj === null) {\n return \"null\";\n }\n else if (!obj.$$class) {\n return obj.toString();\n }\n else {\n return obj.$inspect();\n }\n }\n\n\n // Truth\n // -----\n\n Opal.truthy = function(val) {\n return (val !== nil && val != null && (!val.$$is_boolean || val == true));\n };\n\n Opal.falsy = function(val) {\n return (val === nil || val == null || (val.$$is_boolean && val == false))\n };\n\n\n // Constants\n // ---------\n //\n // For future reference:\n // - The Rails autoloading guide (http://guides.rubyonrails.org/v5.0/autoloading_and_reloading_constants.html)\n // - @ConradIrwin's 2012 post on “Everything you ever wanted to know about constant lookup in Ruby” (http://cirw.in/blog/constant-lookup.html)\n //\n // Legend of MRI concepts/names:\n // - constant reference (cref): the module/class that acts as a namespace\n // - nesting: the namespaces wrapping the current scope, e.g. nesting inside\n // `module A; module B::C; end; end` is `[B::C, A]`\n\n // Get the constant in the scope of the current cref\n function const_get_name(cref, name) {\n if (cref) return cref.$$const[name];\n }\n\n // Walk up the nesting array looking for the constant\n function const_lookup_nesting(nesting, name) {\n var i, ii, result, constant;\n\n if (nesting.length === 0) return;\n\n // If the nesting is not empty the constant is looked up in its elements\n // and in order. The ancestors of those elements are ignored.\n for (i = 0, ii = nesting.length; i < ii; i++) {\n constant = nesting[i].$$const[name];\n if (constant != null) return constant;\n }\n }\n\n // Walk up the ancestors chain looking for the constant\n function const_lookup_ancestors(cref, name) {\n var i, ii, result, ancestors;\n\n if (cref == null) return;\n\n ancestors = Opal.ancestors(cref);\n\n for (i = 0, ii = ancestors.length; i < ii; i++) {\n if (ancestors[i].$$const && $hasOwn.call(ancestors[i].$$const, name)) {\n return ancestors[i].$$const[name];\n }\n }\n }\n\n // Walk up Object's ancestors chain looking for the constant,\n // but only if cref is missing or a module.\n function const_lookup_Object(cref, name) {\n if (cref == null || cref.$$is_module) {\n return const_lookup_ancestors(_Object, name);\n }\n }\n\n // Call const_missing if nothing else worked\n function const_missing(cref, name, skip_missing) {\n if (!skip_missing) {\n return (cref || _Object).$const_missing(name);\n }\n }\n\n // Look for the constant just in the current cref or call `#const_missing`\n Opal.const_get_local = function(cref, name, skip_missing) {\n var result;\n\n if (cref == null) return;\n\n if (cref === '::') cref = _Object;\n\n if (!cref.$$is_a_module) {\n throw new Opal.TypeError(cref.toString() + \" is not a class/module\");\n }\n\n result = const_get_name(cref, name); if (result != null) return result;\n result = const_missing(cref, name, skip_missing); if (result != null) return result;\n }\n\n // Look for the constant relative to a cref or call `#const_missing` (when the\n // constant is prefixed by `::`).\n Opal.const_get_qualified = function(cref, name, skip_missing) {\n var result, cache, cached, current_version = Opal.const_cache_version;\n\n if (cref == null) return;\n\n if (cref === '::') cref = _Object;\n\n if (!cref.$$is_a_module) {\n throw new Opal.TypeError(cref.toString() + \" is not a class/module\");\n }\n\n if ((cache = cref.$$const_cache) == null) {\n cache = cref.$$const_cache = Object.create(null);\n }\n cached = cache[name];\n\n if (cached == null || cached[0] !== current_version) {\n ((result = const_get_name(cref, name)) != null) ||\n ((result = const_lookup_ancestors(cref, name)) != null);\n cache[name] = [current_version, result];\n } else {\n result = cached[1];\n }\n\n return result != null ? result : const_missing(cref, name, skip_missing);\n };\n\n // Initialize the top level constant cache generation counter\n Opal.const_cache_version = 1;\n\n // Look for the constant in the open using the current nesting and the nearest\n // cref ancestors or call `#const_missing` (when the constant has no :: prefix).\n Opal.const_get_relative = function(nesting, name, skip_missing) {\n var cref = nesting[0], result, current_version = Opal.const_cache_version, cache, cached;\n\n if ((cache = nesting.$$const_cache) == null) {\n cache = nesting.$$const_cache = Object.create(null);\n }\n cached = cache[name];\n\n if (cached == null || cached[0] !== current_version) {\n ((result = const_get_name(cref, name)) != null) ||\n ((result = const_lookup_nesting(nesting, name)) != null) ||\n ((result = const_lookup_ancestors(cref, name)) != null) ||\n ((result = const_lookup_Object(cref, name)) != null);\n\n cache[name] = [current_version, result];\n } else {\n result = cached[1];\n }\n\n return result != null ? result : const_missing(cref, name, skip_missing);\n };\n\n // Register the constant on a cref and opportunistically set the name of\n // unnamed classes/modules.\n Opal.const_set = function(cref, name, value) {\n if (cref == null || cref === '::') cref = _Object;\n\n if (value.$$is_a_module) {\n if (value.$$name == null || value.$$name === nil) value.$$name = name;\n if (value.$$base_module == null) value.$$base_module = cref;\n }\n\n cref.$$const = (cref.$$const || Object.create(null));\n cref.$$const[name] = value;\n\n // Add a short helper to navigate constants manually.\n // @example\n // Opal.$$.Regexp.$$.IGNORECASE\n cref.$$ = cref.$$const;\n\n Opal.const_cache_version++;\n\n // Expose top level constants onto the Opal object\n if (cref === _Object) Opal[name] = value;\n\n return value;\n };\n\n // Get all the constants reachable from a given cref, by default will include\n // inherited constants.\n Opal.constants = function(cref, inherit) {\n if (inherit == null) inherit = true;\n\n var module, modules = [cref], module_constants, i, ii, constants = {}, constant;\n\n if (inherit) modules = modules.concat(Opal.ancestors(cref));\n if (inherit && cref.$$is_module) modules = modules.concat([Opal.Object]).concat(Opal.ancestors(Opal.Object));\n\n for (i = 0, ii = modules.length; i < ii; i++) {\n module = modules[i];\n\n // Don not show Objects constants unless we're querying Object itself\n if (cref !== _Object && module == _Object) break;\n\n for (constant in module.$$const) {\n constants[constant] = true;\n }\n }\n\n return Object.keys(constants);\n };\n\n // Remove a constant from a cref.\n Opal.const_remove = function(cref, name) {\n Opal.const_cache_version++;\n\n if (cref.$$const[name] != null) {\n var old = cref.$$const[name];\n delete cref.$$const[name];\n return old;\n }\n\n if (cref.$$autoload != null && cref.$$autoload[name] != null) {\n delete cref.$$autoload[name];\n return nil;\n }\n\n throw Opal.NameError.$new(\"constant \"+cref+\"::\"+cref.$name()+\" not defined\");\n };\n\n\n // Modules & Classes\n // -----------------\n\n // A `class Foo; end` expression in ruby is compiled to call this runtime\n // method which either returns an existing class of the given name, or creates\n // a new class in the given `base` scope.\n //\n // If a constant with the given name exists, then we check to make sure that\n // it is a class and also that the superclasses match. If either of these\n // fail, then we raise a `TypeError`. Note, `superclass` may be null if one\n // was not specified in the ruby code.\n //\n // We pass a constructor to this method of the form `function ClassName() {}`\n // simply so that classes show up with nicely formatted names inside debuggers\n // in the web browser (or node/sprockets).\n //\n // The `base` is the current `self` value where the class is being created\n // from. We use this to get the scope for where the class should be created.\n // If `base` is an object (not a class/module), we simple get its class and\n // use that as the base instead.\n //\n // @param base [Object] where the class is being created\n // @param superclass [Class,null] superclass of the new class (may be null)\n // @param id [String] the name of the class to be created\n // @param constructor [JS.Function] function to use as constructor\n //\n // @return new [Class] or existing ruby class\n //\n Opal.klass = function(base, superclass, name, constructor) {\n var klass, bridged, alloc;\n\n if (base == null) {\n base = _Object;\n }\n\n // If base is an object, use its class\n if (!base.$$is_class && !base.$$is_module) {\n base = base.$$class;\n }\n\n // If the superclass is a function then we're bridging a native JS class\n if (typeof(superclass) === 'function') {\n bridged = superclass;\n superclass = _Object;\n }\n\n // Try to find the class in the current scope\n klass = const_get_name(base, name);\n\n // If the class exists in the scope, then we must use that\n if (klass) {\n // Make sure the existing constant is a class, or raise error\n if (!klass.$$is_class) {\n throw Opal.TypeError.$new(name + \" is not a class\");\n }\n\n // Make sure existing class has same superclass\n if (superclass && klass.$$super !== superclass) {\n throw Opal.TypeError.$new(\"superclass mismatch for class \" + name);\n }\n\n return klass;\n }\n\n // Class doesnt exist, create a new one with given superclass...\n\n // Not specifying a superclass means we can assume it to be Object\n if (superclass == null) {\n superclass = _Object;\n }\n\n // If bridged the JS class will also be the alloc function\n alloc = bridged || Opal.boot_class_alloc(name, constructor, superclass);\n\n // Create the class object (instance of Class)\n klass = Opal.setup_class_object(name, alloc, superclass.$$name, superclass.constructor);\n\n // @property $$super the superclass, doesn't get changed by module inclusions\n klass.$$super = superclass;\n\n // @property $$parent direct parent class\n // starts with the superclass, after klass inclusion is\n // the last included klass\n klass.$$parent = superclass;\n\n Opal.const_set(base, name, klass);\n\n // Name new class directly onto current scope (Opal.Foo.Baz = klass)\n base[name] = klass;\n\n if (bridged) {\n Opal.bridge(klass, alloc);\n }\n else {\n // Call .inherited() hook with new class on the superclass\n if (superclass.$inherited) {\n superclass.$inherited(klass);\n }\n }\n\n return klass;\n };\n\n // Boot a base class (makes instances).\n //\n // @param name [String,null] the class name\n // @param constructor [JS.Function] the class' instances constructor/alloc function\n // @param superclass [Class,null] the superclass object\n // @return [JS.Function] the consturctor holding the prototype for the class' instances\n Opal.boot_class_alloc = function(name, constructor, superclass) {\n if (superclass) {\n var alloc_proxy = function() {};\n alloc_proxy.prototype = superclass.$$proto || superclass.prototype;\n constructor.prototype = new alloc_proxy();\n }\n\n if (name) {\n constructor.displayName = name+'_alloc';\n }\n\n constructor.prototype.constructor = constructor;\n\n return constructor;\n };\n\n Opal.setup_module_or_class = function(module) {\n // @property $$id Each class/module is assigned a unique `id` that helps\n // comparation and implementation of `#object_id`\n module.$$id = Opal.uid();\n\n // @property $$is_a_module Will be true for Module and its subclasses\n // instances (namely: Class).\n module.$$is_a_module = true;\n\n // @property $$inc included modules\n module.$$inc = [];\n\n // initialize the name with nil\n module.$$name = nil;\n\n // Initialize the constants table\n module.$$const = Object.create(null);\n\n // @property $$cvars class variables defined in the current module\n module.$$cvars = Object.create(null);\n }\n\n\n\n // Adds common/required properties to class object (as in `Class.new`)\n //\n // @param name [String,null] The name of the class\n //\n // @param alloc [JS.Function] The constructor of the class' instances\n //\n // @param superclass_name [String,null]\n // The name of the super class, this is\n // usefule to build the `.displayName` of the singleton class\n //\n // @param superclass_alloc [JS.Function]\n // The constructor of the superclass from which the singleton_class is\n // derived.\n //\n // @return [Class]\n Opal.setup_class_object = function(name, alloc, superclass_name, superclass_alloc) {\n // Grab the superclass prototype and use it to build an intermediary object\n // in the prototype chain.\n var superclass_alloc_proxy = function() {};\n superclass_alloc_proxy.prototype = superclass_alloc.prototype;\n superclass_alloc_proxy.displayName = superclass_name;\n\n var singleton_class_alloc = function() {}\n singleton_class_alloc.prototype = new superclass_alloc_proxy();\n\n // The built class is the only instance of its singleton_class\n var klass = new singleton_class_alloc();\n\n Opal.setup_module_or_class(klass);\n\n // @property $$alloc This is the constructor of instances of the current\n // class. Its prototype will be used for method lookup\n klass.$$alloc = alloc;\n\n klass.$$name = name || nil;\n\n // Set a displayName for the singleton_class\n singleton_class_alloc.displayName = \"#<Class:\"+(name || (\"#<Class:\"+klass.$$id+\">\"))+\">\";\n\n // @property $$proto This is the prototype on which methods will be defined\n klass.$$proto = alloc.prototype;\n\n // @property $$proto.$$class Make available to instances a reference to the\n // class they belong to.\n klass.$$proto.$$class = klass;\n\n // @property constructor keeps a ref to the constructor, but apparently the\n // constructor is already set on:\n //\n // `var klass = new constructor` is called.\n //\n // Maybe there are some browsers not abiding (IE6?)\n klass.constructor = singleton_class_alloc;\n\n // @property $$is_class Clearly mark this as a class\n klass.$$is_class = true;\n\n // @property $$class Classes are instances of the class Class\n klass.$$class = Class;\n\n return klass;\n };\n\n // Define new module (or return existing module). The given `base` is basically\n // the current `self` value the `module` statement was defined in. If this is\n // a ruby module or class, then it is used, otherwise if the base is a ruby\n // object then that objects real ruby class is used (e.g. if the base is the\n // main object, then the top level `Object` class is used as the base).\n //\n // If a module of the given name is already defined in the base, then that\n // instance is just returned.\n //\n // If there is a class of the given name in the base, then an error is\n // generated instead (cannot have a class and module of same name in same base).\n //\n // Otherwise, a new module is created in the base with the given name, and that\n // new instance is returned back (to be referenced at runtime).\n //\n // @param base [Module, Class] class or module this definition is inside\n // @param id [String] the name of the new (or existing) module\n //\n // @return [Module]\n Opal.module = function(base, name) {\n var module;\n\n if (base == null) {\n base = _Object;\n }\n\n if (!base.$$is_class && !base.$$is_module) {\n base = base.$$class;\n }\n\n module = const_get_name(base, name);\n if (module == null && base === _Object) module = const_lookup_ancestors(_Object, name);\n\n if (module) {\n if (!module.$$is_module && module !== _Object) {\n throw Opal.TypeError.$new(name + \" is not a module\");\n }\n }\n else {\n module = Opal.module_allocate(Module);\n Opal.const_set(base, name, module);\n }\n\n return module;\n };\n\n // The implementation for Module#initialize\n // @param module [Module]\n // @param block [Proc,nil]\n // @return nil\n Opal.module_initialize = function(module, block) {\n if (block !== nil) {\n var block_self = block.$$s;\n block.$$s = null;\n block.call(module);\n block.$$s = block_self;\n }\n return nil;\n };\n\n // Internal function to create a new module instance. This simply sets up\n // the prototype hierarchy and method tables.\n //\n Opal.module_allocate = function(superclass) {\n var mtor = function() {};\n mtor.prototype = superclass.$$alloc.prototype;\n\n var module_constructor = function() {};\n module_constructor.prototype = new mtor();\n\n var module = new module_constructor();\n var module_prototype = {};\n\n Opal.setup_module_or_class(module);\n\n // initialize dependency tracking\n module.$$included_in = [];\n\n // Set the display name of the singleton prototype holder\n module_constructor.displayName = \"#<Class:#<Module:\"+module.$$id+\">>\"\n\n // @property $$proto This is the prototype on which methods will be defined\n module.$$proto = module_prototype;\n\n // @property constructor\n // keeps a ref to the constructor, but apparently the\n // constructor is already set on:\n //\n // `var module = new constructor` is called.\n //\n // Maybe there are some browsers not abiding (IE6?)\n module.constructor = module_constructor;\n\n // @property $$is_module Clearly mark this as a module\n module.$$is_module = true;\n module.$$class = Module;\n\n // @property $$super\n // the superclass, doesn't get changed by module inclusions\n module.$$super = superclass;\n\n // @property $$parent\n // direct parent class or module\n // starts with the superclass, after module inclusion is\n // the last included module\n module.$$parent = superclass;\n\n return module;\n };\n\n // Return the singleton class for the passed object.\n //\n // If the given object alredy has a singleton class, then it will be stored on\n // the object as the `$$meta` property. If this exists, then it is simply\n // returned back.\n //\n // Otherwise, a new singleton object for the class or object is created, set on\n // the object at `$$meta` for future use, and then returned.\n //\n // @param object [Object] the ruby object\n // @return [Class] the singleton class for object\n Opal.get_singleton_class = function(object) {\n if (object.$$meta) {\n return object.$$meta;\n }\n\n if (object.$$is_class || object.$$is_module) {\n return Opal.build_class_singleton_class(object);\n }\n\n return Opal.build_object_singleton_class(object);\n };\n\n // Build the singleton class for an existing class. Class object are built\n // with their singleton class already in the prototype chain and inheriting\n // from their superclass object (up to `Class` itself).\n //\n // NOTE: Actually in MRI a class' singleton class inherits from its\n // superclass' singleton class which in turn inherits from Class.\n //\n // @param klass [Class]\n // @return [Class]\n Opal.build_class_singleton_class = function(object) {\n var alloc, superclass, klass;\n\n if (object.$$meta) {\n return object.$$meta;\n }\n\n // The constructor and prototype of the singleton_class instances is the\n // current class constructor and prototype.\n alloc = object.constructor;\n\n // The singleton_class superclass is the singleton_class of its superclass;\n // but BasicObject has no superclass (its `$$super` is null), thus we\n // fallback on `Class`.\n superclass = object === BasicObject ? Class : Opal.build_class_singleton_class(object.$$super);\n\n klass = Opal.setup_class_object(null, alloc, superclass.$$name, superclass.constructor);\n klass.$$super = superclass;\n klass.$$parent = superclass;\n\n klass.$$is_singleton = true;\n klass.$$singleton_of = object;\n\n return object.$$meta = klass;\n };\n\n // Build the singleton class for a Ruby (non class) Object.\n //\n // @param object [Object]\n // @return [Class]\n Opal.build_object_singleton_class = function(object) {\n var superclass = object.$$class,\n name = \"#<Class:#<\" + superclass.$$name + \":\" + superclass.$$id + \">>\";\n\n var alloc = Opal.boot_class_alloc(name, function(){}, superclass)\n var klass = Opal.setup_class_object(name, alloc, superclass.$$name, superclass.constructor);\n\n klass.$$super = superclass;\n klass.$$parent = superclass;\n klass.$$class = superclass.$$class;\n klass.$$proto = object;\n\n klass.$$is_singleton = true;\n klass.$$singleton_of = object;\n\n return object.$$meta = klass;\n };\n\n // Returns an object containing all pairs of names/values\n // for all class variables defined in provided +module+\n // and its ancestors.\n //\n // @param module [Module]\n // @return [Object]\n Opal.class_variables = function(module) {\n var ancestors = Opal.ancestors(module),\n i, length = ancestors.length,\n result = {};\n\n for (i = length - 1; i >= 0; i--) {\n var ancestor = ancestors[i];\n\n for (var cvar in ancestor.$$cvars) {\n result[cvar] = ancestor.$$cvars[cvar];\n }\n }\n\n return result;\n }\n\n // Sets class variable with specified +name+ to +value+\n // in provided +module+\n //\n // @param module [Module]\n // @param name [String]\n // @param value [Object]\n Opal.class_variable_set = function(module, name, value) {\n var ancestors = Opal.ancestors(module),\n i, length = ancestors.length;\n\n for (i = length - 2; i >= 0; i--) {\n var ancestor = ancestors[i];\n\n if ($hasOwn.call(ancestor.$$cvars, name)) {\n ancestor.$$cvars[name] = value;\n return value;\n }\n }\n\n module.$$cvars[name] = value;\n\n return value;\n }\n\n // Bridges a single method.\n //\n // @param target [JS::Function] the constructor of the bridged class\n // @param from [Module] the module/class we are importing the method from\n // @param name [String] the method name in JS land (i.e. starting with $)\n // @param body [JS::Function] the body of the method\n Opal.bridge_method = function(target_constructor, from, name, body) {\n var ancestors, i, ancestor, length;\n\n ancestors = target_constructor.$$bridge.$ancestors();\n\n // order important here, we have to check for method presence in\n // ancestors from the bridged class to the last ancestor\n for (i = 0, length = ancestors.length; i < length; i++) {\n ancestor = ancestors[i];\n\n if ($hasOwn.call(ancestor.$$proto, name) &&\n ancestor.$$proto[name] &&\n !ancestor.$$proto[name].$$donated &&\n !ancestor.$$proto[name].$$stub &&\n ancestor !== from) {\n break;\n }\n\n if (ancestor === from) {\n target_constructor.prototype[name] = body\n break;\n }\n }\n };\n\n // Bridges from *donator* to a *target*.\n //\n // @param target [Module] the potentially associated with bridged classes module\n // @param donator [Module] the module/class source of the methods that should be bridged\n Opal.bridge_methods = function(target, donator) {\n var i,\n bridged = BridgedClasses[target.$__id__()],\n donator_id = donator.$__id__();\n\n if (bridged) {\n BridgedClasses[donator_id] = bridged.slice();\n\n for (i = bridged.length - 1; i >= 0; i--) {\n Opal_bridge_methods_to_constructor(bridged[i], donator)\n }\n }\n };\n\n // Actually bridge methods to the bridged (shared) prototype.\n function Opal_bridge_methods_to_constructor(target_constructor, donator) {\n var i,\n method,\n methods = donator.$instance_methods();\n\n for (i = methods.length - 1; i >= 0; i--) {\n method = '$' + methods[i];\n Opal.bridge_method(target_constructor, donator, method, donator.$$proto[method]);\n }\n }\n\n // Associate the target as a bridged class for the current \"donator\"\n function Opal_add_bridged_constructor(target_constructor, donator) {\n var donator_id = donator.$__id__();\n\n if (!BridgedClasses[donator_id]) {\n BridgedClasses[donator_id] = [];\n }\n BridgedClasses[donator_id].push(target_constructor);\n }\n\n // Walks the dependency tree detecting the presence of the base among its\n // own dependencies.\n //\n // @param [Integer] base_id The id of the base module (eg. the \"includer\")\n // @param [Array<Module>] deps The array of dependencies (eg. the included module, included.$$deps)\n // @param [String] prop The property that holds dependencies (eg. \"$$deps\")\n // @param [JS::Object] seen A JS object holding the cache of already visited objects\n // @return [Boolean] true if a cyclic dependency is present\n Opal.has_cyclic_dep = function has_cyclic_dep(base_id, deps, prop, seen) {\n var i, dep_id, dep;\n\n for (i = deps.length - 1; i >= 0; i--) {\n dep = deps[i];\n dep_id = dep.$$id;\n\n if (seen[dep_id]) {\n continue;\n }\n seen[dep_id] = true;\n\n if (dep_id === base_id) {\n return true;\n }\n\n if (has_cyclic_dep(base_id, dep[prop], prop, seen)) {\n return true;\n }\n }\n\n return false;\n }\n\n // The actual inclusion of a module into a class.\n //\n // ## Class `$$parent` and `iclass`\n //\n // To handle `super` calls, every class has a `$$parent`. This parent is\n // used to resolve the next class for a super call. A normal class would\n // have this point to its superclass. However, if a class includes a module\n // then this would need to take into account the module. The module would\n // also have to then point its `$$parent` to the actual superclass. We\n // cannot modify modules like this, because it might be included in more\n // then one class. To fix this, we actually insert an `iclass` as the class'\n // `$$parent` which can then point to the superclass. The `iclass` acts as\n // a proxy to the actual module, so the `super` chain can then search it for\n // the required method.\n //\n // @param module [Module] the module to include\n // @param includer [Module] the target class to include module into\n // @return [null]\n Opal.append_features = function(module, includer) {\n var iclass, donator, prototype, methods, id, i;\n\n // check if this module is already included in the class\n for (i = includer.$$inc.length - 1; i >= 0; i--) {\n if (includer.$$inc[i] === module) {\n return;\n }\n }\n\n // Check that the base module is not also a dependency, classes can't be\n // dependencies so we have a special case for them.\n if (!includer.$$is_class && Opal.has_cyclic_dep(includer.$$id, [module], '$$inc', {})) {\n throw Opal.ArgumentError.$new('cyclic include detected')\n }\n\n Opal.const_cache_version++;\n includer.$$inc.push(module);\n module.$$included_in.push(includer);\n Opal.bridge_methods(includer, module);\n\n // iclass\n iclass = {\n $$name: module.$$name,\n $$proto: module.$$proto,\n $$parent: includer.$$parent,\n $$module: module,\n $$iclass: true\n };\n\n includer.$$parent = iclass;\n\n methods = module.$instance_methods();\n\n for (i = methods.length - 1; i >= 0; i--) {\n Opal.update_includer(module, includer, '$' + methods[i])\n }\n };\n\n // Table that holds all methods that have been defined on all objects\n // It is used for defining method stubs for new coming native classes\n Opal.stubs = {};\n\n // For performance, some core Ruby classes are toll-free bridged to their\n // native JavaScript counterparts (e.g. a Ruby Array is a JavaScript Array).\n //\n // This method is used to setup a native constructor (e.g. Array), to have\n // its prototype act like a normal Ruby class. Firstly, a new Ruby class is\n // created using the native constructor so that its prototype is set as the\n // target for th new class. Note: all bridged classes are set to inherit\n // from Object.\n //\n // Example:\n //\n // Opal.bridge(self, Function);\n //\n // @param klass [Class] the Ruby class to bridge\n // @param constructor [JS.Function] native JavaScript constructor to use\n // @return [Class] returns the passed Ruby class\n //\n Opal.bridge = function(klass, constructor) {\n if (constructor.$$bridge) {\n throw Opal.ArgumentError.$new(\"already bridged\");\n }\n\n Opal.stub_subscribers.push(constructor.prototype);\n\n // Populate constructor with previously stored stubs\n for (var method_name in Opal.stubs) {\n if (!(method_name in constructor.prototype)) {\n constructor.prototype[method_name] = Opal.stub_for(method_name);\n }\n }\n\n constructor.prototype.$$class = klass;\n constructor.$$bridge = klass;\n\n var ancestors = klass.$ancestors();\n\n // order important here, we have to bridge from the last ancestor to the\n // bridged class\n for (var i = ancestors.length - 1; i >= 0; i--) {\n Opal_add_bridged_constructor(constructor, ancestors[i]);\n Opal_bridge_methods_to_constructor(constructor, ancestors[i]);\n }\n\n for (var name in BasicObject_alloc.prototype) {\n var method = BasicObject_alloc.prototype[method];\n\n if (method && method.$$stub && !(name in constructor.prototype)) {\n constructor.prototype[name] = method;\n }\n }\n\n return klass;\n };\n\n // Update `jsid` method cache of all classes / modules including `module`.\n Opal.update_includer = function(module, includer, jsid) {\n var dest, current, body,\n klass_includees, j, jj, current_owner_index, module_index;\n\n body = module.$$proto[jsid];\n dest = includer.$$proto;\n current = dest[jsid];\n\n if (dest.hasOwnProperty(jsid) && !current.$$donated && !current.$$stub) {\n // target class has already defined the same method name - do nothing\n }\n else if (dest.hasOwnProperty(jsid) && !current.$$stub) {\n // target class includes another module that has defined this method\n klass_includees = includer.$$inc;\n\n for (j = 0, jj = klass_includees.length; j < jj; j++) {\n if (klass_includees[j] === current.$$donated) {\n current_owner_index = j;\n }\n if (klass_includees[j] === module) {\n module_index = j;\n }\n }\n\n // only redefine method on class if the module was included AFTER\n // the module which defined the current method body. Also make sure\n // a module can overwrite a method it defined before\n if (current_owner_index <= module_index) {\n dest[jsid] = body;\n dest[jsid].$$donated = module;\n }\n }\n else {\n // neither a class, or module included by class, has defined method\n dest[jsid] = body;\n dest[jsid].$$donated = module;\n }\n\n // if the includer is a module, recursively update all of its includres.\n if (includer.$$included_in) {\n Opal.update_includers(includer, jsid);\n }\n };\n\n // Update `jsid` method cache of all classes / modules including `module`.\n Opal.update_includers = function(module, jsid) {\n var i, ii, includee, included_in;\n\n included_in = module.$$included_in;\n\n if (!included_in) {\n return;\n }\n\n for (i = 0, ii = included_in.length; i < ii; i++) {\n includee = included_in[i];\n Opal.update_includer(module, includee, jsid);\n }\n };\n\n // The Array of ancestors for a given module/class\n Opal.ancestors = function(module_or_class) {\n var parent = module_or_class,\n result = [],\n modules, i, ii, j, jj;\n\n while (parent) {\n result.push(parent);\n for (i = parent.$$inc.length-1; i >= 0; i--) {\n modules = Opal.ancestors(parent.$$inc[i]);\n\n for(j = 0, jj = modules.length; j < jj; j++) {\n result.push(modules[j]);\n }\n }\n\n // only the actual singleton class gets included in its ancestry\n // after that, traverse the normal class hierarchy\n if (parent.$$is_singleton && parent.$$singleton_of.$$is_module) {\n parent = parent.$$singleton_of.$$super;\n }\n else {\n parent = parent.$$is_class ? parent.$$super : null;\n }\n }\n\n return result;\n };\n\n\n // Method Missing\n // --------------\n\n // Methods stubs are used to facilitate method_missing in opal. A stub is a\n // placeholder function which just calls `method_missing` on the receiver.\n // If no method with the given name is actually defined on an object, then it\n // is obvious to say that the stub will be called instead, and then in turn\n // method_missing will be called.\n //\n // When a file in ruby gets compiled to javascript, it includes a call to\n // this function which adds stubs for every method name in the compiled file.\n // It should then be safe to assume that method_missing will work for any\n // method call detected.\n //\n // Method stubs are added to the BasicObject prototype, which every other\n // ruby object inherits, so all objects should handle method missing. A stub\n // is only added if the given property name (method name) is not already\n // defined.\n //\n // Note: all ruby methods have a `$` prefix in javascript, so all stubs will\n // have this prefix as well (to make this method more performant).\n //\n // Opal.add_stubs([\"$foo\", \"$bar\", \"$baz=\"]);\n //\n // All stub functions will have a private `$$stub` property set to true so\n // that other internal methods can detect if a method is just a stub or not.\n // `Kernel#respond_to?` uses this property to detect a methods presence.\n //\n // @param stubs [Array] an array of method stubs to add\n // @return [undefined]\n Opal.add_stubs = function(stubs) {\n var subscriber, subscribers = Opal.stub_subscribers,\n i, ilength = stubs.length,\n j, jlength = subscribers.length,\n method_name, stub,\n opal_stubs = Opal.stubs;\n\n for (i = 0; i < ilength; i++) {\n method_name = stubs[i];\n\n if(!opal_stubs.hasOwnProperty(method_name)) {\n // Save method name to populate other subscribers with this stub\n opal_stubs[method_name] = true;\n stub = Opal.stub_for(method_name);\n\n for (j = 0; j < jlength; j++) {\n subscriber = subscribers[j];\n\n if (!(method_name in subscriber)) {\n subscriber[method_name] = stub;\n }\n }\n }\n }\n };\n\n // Keep a list of prototypes that want method_missing stubs to be added.\n //\n // @default [Prototype List] BasicObject_alloc.prototype\n //\n Opal.stub_subscribers = [BasicObject_alloc.prototype];\n\n // Add a method_missing stub function to the given prototype for the\n // given name.\n //\n // @param prototype [Prototype] the target prototype\n // @param stub [String] stub name to add (e.g. \"$foo\")\n // @return [undefined]\n Opal.add_stub_for = function(prototype, stub) {\n var method_missing_stub = Opal.stub_for(stub);\n prototype[stub] = method_missing_stub;\n };\n\n // Generate the method_missing stub for a given method name.\n //\n // @param method_name [String] The js-name of the method to stub (e.g. \"$foo\")\n // @return [undefined]\n Opal.stub_for = function(method_name) {\n function method_missing_stub() {\n // Copy any given block onto the method_missing dispatcher\n this.$method_missing.$$p = method_missing_stub.$$p;\n\n // Set block property to null ready for the next call (stop false-positives)\n method_missing_stub.$$p = null;\n\n // call method missing with correct args (remove '$' prefix on method name)\n var args_ary = new Array(arguments.length);\n for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = arguments[i]; }\n\n return this.$method_missing.apply(this, [method_name.slice(1)].concat(args_ary));\n }\n\n method_missing_stub.$$stub = true;\n\n return method_missing_stub;\n };\n\n\n // Methods\n // -------\n\n // Arity count error dispatcher for methods\n //\n // @param actual [Fixnum] number of arguments given to method\n // @param expected [Fixnum] expected number of arguments\n // @param object [Object] owner of the method +meth+\n // @param meth [String] method name that got wrong number of arguments\n // @raise [ArgumentError]\n Opal.ac = function(actual, expected, object, meth) {\n var inspect = '';\n if (object.$$is_class || object.$$is_module) {\n inspect += object.$$name + '.';\n }\n else {\n inspect += object.$$class.$$name + '#';\n }\n inspect += meth;\n\n throw Opal.ArgumentError.$new('[' + inspect + '] wrong number of arguments(' + actual + ' for ' + expected + ')');\n };\n\n // Arity count error dispatcher for blocks\n //\n // @param actual [Fixnum] number of arguments given to block\n // @param expected [Fixnum] expected number of arguments\n // @param context [Object] context of the block definition\n // @raise [ArgumentError]\n Opal.block_ac = function(actual, expected, context) {\n var inspect = \"`block in \" + context + \"'\";\n\n throw Opal.ArgumentError.$new(inspect + ': wrong number of arguments (' + actual + ' for ' + expected + ')');\n };\n\n // Super dispatcher\n Opal.find_super_dispatcher = function(obj, mid, current_func, defcheck, defs) {\n var dispatcher, super_method;\n\n if (defs) {\n if (obj.$$is_class || obj.$$is_module) {\n dispatcher = defs.$$super;\n }\n else {\n dispatcher = obj.$$class.$$proto;\n }\n }\n else {\n dispatcher = Opal.find_obj_super_dispatcher(obj, mid, current_func);\n }\n\n super_method = dispatcher['$' + mid];\n\n if (!defcheck && super_method.$$stub && Opal.Kernel.$method_missing === obj.$method_missing) {\n // method_missing hasn't been explicitly defined\n throw Opal.NoMethodError.$new('super: no superclass method `'+mid+\"' for \"+obj, mid);\n }\n\n return super_method;\n };\n\n // Iter dispatcher for super in a block\n Opal.find_iter_super_dispatcher = function(obj, jsid, current_func, defcheck, implicit) {\n var call_jsid = jsid;\n\n if (!current_func) {\n throw Opal.RuntimeError.$new(\"super called outside of method\");\n }\n\n if (implicit && current_func.$$define_meth) {\n throw Opal.RuntimeError.$new(\"implicit argument passing of super from method defined by define_method() is not supported. Specify all arguments explicitly\");\n }\n\n if (current_func.$$def) {\n call_jsid = current_func.$$jsid;\n }\n\n return Opal.find_super_dispatcher(obj, call_jsid, current_func, defcheck);\n };\n\n Opal.find_obj_super_dispatcher = function(obj, mid, current_func) {\n var klass = obj.$$meta || obj.$$class;\n\n // first we need to find the class/module current_func is located on\n klass = Opal.find_owning_class(klass, current_func);\n\n if (!klass) {\n throw new Error(\"could not find current class for super()\");\n }\n\n return Opal.find_super_func(klass, '$' + mid, current_func);\n };\n\n Opal.find_owning_class = function(klass, current_func) {\n var owner = current_func.$$owner;\n\n while (klass) {\n // repeating for readability\n\n if (klass.$$iclass && klass.$$module === current_func.$$donated) {\n // this klass was the last one the module donated to\n // case is also hit with multiple module includes\n break;\n }\n else if (klass.$$iclass && klass.$$module === owner) {\n // module has donated to other classes but klass isn't one of those\n break;\n }\n else if (owner.$$is_singleton && klass === owner.$$singleton_of.$$class) {\n // cases like stdlib `Singleton::included` that use a singleton of a singleton\n break;\n }\n else if (klass === owner) {\n // no modules, pure class inheritance\n break;\n }\n\n klass = klass.$$parent;\n }\n\n return klass;\n };\n\n Opal.find_super_func = function(owning_klass, jsid, current_func) {\n var klass = owning_klass.$$parent;\n\n // now we can find the super\n while (klass) {\n var working = klass.$$proto[jsid];\n\n if (working && working !== current_func) {\n // ok\n break;\n }\n\n klass = klass.$$parent;\n }\n\n return klass.$$proto;\n };\n\n // Used to return as an expression. Sometimes, we can't simply return from\n // a javascript function as if we were a method, as the return is used as\n // an expression, or even inside a block which must \"return\" to the outer\n // method. This helper simply throws an error which is then caught by the\n // method. This approach is expensive, so it is only used when absolutely\n // needed.\n //\n Opal.ret = function(val) {\n Opal.returner.$v = val;\n throw Opal.returner;\n };\n\n // Used to break out of a block.\n Opal.brk = function(val, breaker) {\n breaker.$v = val;\n throw breaker;\n };\n\n // Builds a new unique breaker, this is to avoid multiple nested breaks to get\n // in the way of each other.\n Opal.new_brk = function() {\n return new Error('unexpected break');\n };\n\n // handles yield calls for 1 yielded arg\n Opal.yield1 = function(block, arg) {\n if (typeof(block) !== \"function\") {\n throw Opal.LocalJumpError.$new(\"no block given\");\n }\n\n var has_mlhs = block.$$has_top_level_mlhs_arg,\n has_trailing_comma = block.$$has_trailing_comma_in_args;\n\n if (block.length > 1 || ((has_mlhs || has_trailing_comma) && block.length === 1)) {\n arg = Opal.to_ary(arg);\n }\n\n if ((block.length > 1 || (has_trailing_comma && block.length === 1)) && arg.$$is_array) {\n return block.apply(null, arg);\n }\n else {\n return block(arg);\n }\n };\n\n // handles yield for > 1 yielded arg\n Opal.yieldX = function(block, args) {\n if (typeof(block) !== \"function\") {\n throw Opal.LocalJumpError.$new(\"no block given\");\n }\n\n if (block.length > 1 && args.length === 1) {\n if (args[0].$$is_array) {\n return block.apply(null, args[0]);\n }\n }\n\n if (!args.$$is_array) {\n var args_ary = new Array(args.length);\n for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = args[i]; }\n\n return block.apply(null, args_ary);\n }\n\n return block.apply(null, args);\n };\n\n // Finds the corresponding exception match in candidates. Each candidate can\n // be a value, or an array of values. Returns null if not found.\n Opal.rescue = function(exception, candidates) {\n for (var i = 0; i < candidates.length; i++) {\n var candidate = candidates[i];\n\n if (candidate.$$is_array) {\n var result = Opal.rescue(exception, candidate);\n\n if (result) {\n return result;\n }\n }\n else if (candidate === Opal.JS.Error) {\n return candidate;\n }\n else if (candidate['$==='](exception)) {\n return candidate;\n }\n }\n\n return null;\n };\n\n Opal.is_a = function(object, klass) {\n if (object.$$meta === klass || object.$$class === klass) {\n return true;\n }\n\n if (object.$$is_number && klass.$$is_number_class) {\n return true;\n }\n\n var i, length, ancestors = Opal.ancestors(object.$$is_class ? Opal.get_singleton_class(object) : (object.$$meta || object.$$class));\n\n for (i = 0, length = ancestors.length; i < length; i++) {\n if (ancestors[i] === klass) {\n return true;\n }\n }\n\n return false;\n };\n\n // Helpers for extracting kwsplats\n // Used for: { **h }\n Opal.to_hash = function(value) {\n if (value.$$is_hash) {\n return value;\n }\n else if (value['$respond_to?']('to_hash', true)) {\n var hash = value.$to_hash();\n if (hash.$$is_hash) {\n return hash;\n }\n else {\n throw Opal.TypeError.$new(\"Can't convert \" + value.$$class +\n \" to Hash (\" + value.$$class + \"#to_hash gives \" + hash.$$class + \")\");\n }\n }\n else {\n throw Opal.TypeError.$new(\"no implicit conversion of \" + value.$$class + \" into Hash\");\n }\n };\n\n // Helpers for implementing multiple assignment\n // Our code for extracting the values and assigning them only works if the\n // return value is a JS array.\n // So if we get an Array subclass, extract the wrapped JS array from it\n\n // Used for: a, b = something (no splat)\n Opal.to_ary = function(value) {\n if (value.$$is_array) {\n return value;\n }\n else if (value['$respond_to?']('to_ary', true)) {\n var ary = value.$to_ary();\n if (ary === nil) {\n return [value];\n }\n else if (ary.$$is_array) {\n return ary;\n }\n else {\n throw Opal.TypeError.$new(\"Can't convert \" + value.$$class +\n \" to Array (\" + value.$$class + \"#to_ary gives \" + ary.$$class + \")\");\n }\n }\n else {\n return [value];\n }\n };\n\n // Used for: a, b = *something (with splat)\n Opal.to_a = function(value) {\n if (value.$$is_array) {\n // A splatted array must be copied\n return value.slice();\n }\n else if (value['$respond_to?']('to_a', true)) {\n var ary = value.$to_a();\n if (ary === nil) {\n return [value];\n }\n else if (ary.$$is_array) {\n return ary;\n }\n else {\n throw Opal.TypeError.$new(\"Can't convert \" + value.$$class +\n \" to Array (\" + value.$$class + \"#to_a gives \" + ary.$$class + \")\");\n }\n }\n else {\n return [value];\n }\n };\n\n // Used for extracting keyword arguments from arguments passed to\n // JS function. If provided +arguments+ list doesn't have a Hash\n // as a last item, returns a blank Hash.\n //\n // @param parameters [Array]\n // @return [Hash]\n //\n Opal.extract_kwargs = function(parameters) {\n var kwargs = parameters[parameters.length - 1];\n if (kwargs != null && kwargs['$respond_to?']('to_hash', true)) {\n Array.prototype.splice.call(parameters, parameters.length - 1, 1);\n return kwargs.$to_hash();\n }\n else {\n return Opal.hash2([], {});\n }\n }\n\n // Used to get a list of rest keyword arguments. Method takes the given\n // keyword args, i.e. the hash literal passed to the method containing all\n // keyword arguemnts passed to method, as well as the used args which are\n // the names of required and optional arguments defined. This method then\n // just returns all key/value pairs which have not been used, in a new\n // hash literal.\n //\n // @param given_args [Hash] all kwargs given to method\n // @param used_args [Object<String: true>] all keys used as named kwargs\n // @return [Hash]\n //\n Opal.kwrestargs = function(given_args, used_args) {\n var keys = [],\n map = {},\n key = null,\n given_map = given_args.$$smap;\n\n for (key in given_map) {\n if (!used_args[key]) {\n keys.push(key);\n map[key] = given_map[key];\n }\n }\n\n return Opal.hash2(keys, map);\n };\n\n // Calls passed method on a ruby object with arguments and block:\n //\n // Can take a method or a method name.\n //\n // 1. When method name gets passed it invokes it by its name\n // and calls 'method_missing' when object doesn't have this method.\n // Used internally by Opal to invoke method that takes a block or a splat.\n // 2. When method (i.e. method body) gets passed, it doesn't trigger 'method_missing'\n // because it doesn't know the name of the actual method.\n // Used internally by Opal to invoke 'super'.\n //\n // @example\n // var my_array = [1, 2, 3, 4]\n // Opal.send(my_array, 'length') # => 4\n // Opal.send(my_array, my_array.$length) # => 4\n //\n // Opal.send(my_array, 'reverse!') # => [4, 3, 2, 1]\n // Opal.send(my_array, my_array['$reverse!']') # => [4, 3, 2, 1]\n //\n // @param recv [Object] ruby object\n // @param method [Function, String] method body or name of the method\n // @param args [Array] arguments that will be passed to the method call\n // @param block [Function] ruby block\n // @return [Object] returning value of the method call\n Opal.send = function(recv, method, args, block) {\n var body = (typeof(method) === 'string') ? recv['$'+method] : method;\n\n if (body != null) {\n body.$$p = block;\n return body.apply(recv, args);\n }\n\n return recv.$method_missing.apply(recv, [method].concat(args));\n }\n\n Opal.lambda = function(block) {\n block.$$is_lambda = true;\n return block;\n }\n\n // Used to define methods on an object. This is a helper method, used by the\n // compiled source to define methods on special case objects when the compiler\n // can not determine the destination object, or the object is a Module\n // instance. This can get called by `Module#define_method` as well.\n //\n // ## Modules\n //\n // Any method defined on a module will come through this runtime helper.\n // The method is added to the module body, and the owner of the method is\n // set to be the module itself. This is used later when choosing which\n // method should show on a class if more than 1 included modules define\n // the same method. Finally, if the module is in `module_function` mode,\n // then the method is also defined onto the module itself.\n //\n // ## Classes\n //\n // This helper will only be called for classes when a method is being\n // defined indirectly; either through `Module#define_method`, or by a\n // literal `def` method inside an `instance_eval` or `class_eval` body. In\n // either case, the method is simply added to the class' prototype. A special\n // exception exists for `BasicObject` and `Object`. These two classes are\n // special because they are used in toll-free bridged classes. In each of\n // these two cases, extra work is required to define the methods on toll-free\n // bridged class' prototypes as well.\n //\n // ## Objects\n //\n // If a simple ruby object is the object, then the method is simply just\n // defined on the object as a singleton method. This would be the case when\n // a method is defined inside an `instance_eval` block.\n //\n // @param obj [Object, Class] the actual obj to define method for\n // @param jsid [String] the JavaScript friendly method name (e.g. '$foo')\n // @param body [JS.Function] the literal JavaScript function used as method\n // @return [null]\n //\n Opal.def = function(obj, jsid, body) {\n // Special case for a method definition in the\n // top-level namespace\n if (obj === Opal.top) {\n Opal.defn(Opal.Object, jsid, body)\n }\n // if instance_eval is invoked on a module/class, it sets inst_eval_mod\n else if (!obj.$$eval && (obj.$$is_class || obj.$$is_module)) {\n Opal.defn(obj, jsid, body);\n }\n else {\n Opal.defs(obj, jsid, body);\n }\n };\n\n // Define method on a module or class (see Opal.def).\n Opal.defn = function(obj, jsid, body) {\n obj.$$proto[jsid] = body;\n // for super dispatcher, etc.\n body.$$owner = obj;\n if (body.displayName == null) body.displayName = jsid.substr(1);\n\n // is it a module?\n if (obj.$$is_module) {\n Opal.update_includers(obj, jsid);\n\n if (obj.$$module_function) {\n Opal.defs(obj, jsid, body);\n }\n }\n\n // is it a bridged class?\n var bridged = obj.$__id__ && !obj.$__id__.$$stub && BridgedClasses[obj.$__id__()];\n if (bridged) {\n for (var i = bridged.length - 1; i >= 0; i--) {\n Opal.bridge_method(bridged[i], obj, jsid, body);\n }\n }\n\n // method_added/singleton_method_added hooks\n var singleton_of = obj.$$singleton_of;\n if (obj.$method_added && !obj.$method_added.$$stub && !singleton_of) {\n obj.$method_added(jsid.substr(1));\n }\n else if (singleton_of && singleton_of.$singleton_method_added && !singleton_of.$singleton_method_added.$$stub) {\n singleton_of.$singleton_method_added(jsid.substr(1));\n }\n\n return nil;\n };\n\n // Define a singleton method on the given object (see Opal.def).\n Opal.defs = function(obj, jsid, body) {\n Opal.defn(Opal.get_singleton_class(obj), jsid, body)\n };\n\n // Called from #remove_method.\n Opal.rdef = function(obj, jsid) {\n // TODO: remove from BridgedClasses as well\n\n if (!$hasOwn.call(obj.$$proto, jsid)) {\n throw Opal.NameError.$new(\"method '\" + jsid.substr(1) + \"' not defined in \" + obj.$name());\n }\n\n delete obj.$$proto[jsid];\n\n if (obj.$$is_singleton) {\n if (obj.$$proto.$singleton_method_removed && !obj.$$proto.$singleton_method_removed.$$stub) {\n obj.$$proto.$singleton_method_removed(jsid.substr(1));\n }\n }\n else {\n if (obj.$method_removed && !obj.$method_removed.$$stub) {\n obj.$method_removed(jsid.substr(1));\n }\n }\n };\n\n // Called from #undef_method.\n Opal.udef = function(obj, jsid) {\n if (!obj.$$proto[jsid] || obj.$$proto[jsid].$$stub) {\n throw Opal.NameError.$new(\"method '\" + jsid.substr(1) + \"' not defined in \" + obj.$name());\n }\n\n Opal.add_stub_for(obj.$$proto, jsid);\n\n if (obj.$$is_singleton) {\n if (obj.$$proto.$singleton_method_undefined && !obj.$$proto.$singleton_method_undefined.$$stub) {\n obj.$$proto.$singleton_method_undefined(jsid.substr(1));\n }\n }\n else {\n if (obj.$method_undefined && !obj.$method_undefined.$$stub) {\n obj.$method_undefined(jsid.substr(1));\n }\n }\n };\n\n Opal.alias = function(obj, name, old) {\n var id = '$' + name,\n old_id = '$' + old,\n body = obj.$$proto['$' + old],\n alias;\n\n // When running inside #instance_eval the alias refers to class methods.\n if (obj.$$eval) {\n return Opal.alias(Opal.get_singleton_class(obj), name, old);\n }\n\n if (typeof(body) !== \"function\" || body.$$stub) {\n var ancestor = obj.$$super;\n\n while (typeof(body) !== \"function\" && ancestor) {\n body = ancestor[old_id];\n ancestor = ancestor.$$super;\n }\n\n if (typeof(body) !== \"function\" || body.$$stub) {\n throw Opal.NameError.$new(\"undefined method `\" + old + \"' for class `\" + obj.$name() + \"'\")\n }\n }\n\n // If the body is itself an alias use the original body\n // to keep the max depth at 1.\n if (body.$$alias_of) body = body.$$alias_of;\n\n // We need a wrapper because otherwise method $$owner and other properties\n // would be ovrewritten on the original body.\n alias = function() {\n var block = alias.$$p, args, i, ii;\n\n args = new Array(arguments.length);\n for(i = 0, ii = arguments.length; i < ii; i++) {\n args[i] = arguments[i];\n }\n\n if (block != null) { alias.$$p = null }\n\n return Opal.send(this, body, args, block);\n };\n\n // Try to make the browser pick the right name\n alias.displayName = name;\n alias.length = body.length;\n alias.$$arity = body.$$arity;\n alias.$$parameters = body.$$parameters;\n alias.$$source_location = body.$$source_location;\n alias.$$alias_of = body;\n alias.$$alias_name = name;\n\n Opal.defn(obj, id, alias);\n\n return obj;\n };\n\n Opal.alias_native = function(obj, name, native_name) {\n var id = '$' + name,\n body = obj.$$proto[native_name];\n\n if (typeof(body) !== \"function\" || body.$$stub) {\n throw Opal.NameError.$new(\"undefined native method `\" + native_name + \"' for class `\" + obj.$name() + \"'\")\n }\n\n Opal.defn(obj, id, body);\n\n return obj;\n };\n\n\n // Hashes\n // ------\n\n Opal.hash_init = function(hash) {\n hash.$$smap = Object.create(null);\n hash.$$map = Object.create(null);\n hash.$$keys = [];\n };\n\n Opal.hash_clone = function(from_hash, to_hash) {\n to_hash.$$none = from_hash.$$none;\n to_hash.$$proc = from_hash.$$proc;\n\n for (var i = 0, keys = from_hash.$$keys, smap = from_hash.$$smap, len = keys.length, key, value; i < len; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n Opal.hash_put(to_hash, key, value);\n }\n };\n\n Opal.hash_put = function(hash, key, value) {\n if (key.$$is_string) {\n if (!$hasOwn.call(hash.$$smap, key)) {\n hash.$$keys.push(key);\n }\n hash.$$smap[key] = value;\n return;\n }\n\n var key_hash, bucket, last_bucket;\n key_hash = hash.$$by_identity ? Opal.id(key) : key.$hash();\n\n if (!$hasOwn.call(hash.$$map, key_hash)) {\n bucket = {key: key, key_hash: key_hash, value: value};\n hash.$$keys.push(bucket);\n hash.$$map[key_hash] = bucket;\n return;\n }\n\n bucket = hash.$$map[key_hash];\n\n while (bucket) {\n if (key === bucket.key || key['$eql?'](bucket.key)) {\n last_bucket = undefined;\n bucket.value = value;\n break;\n }\n last_bucket = bucket;\n bucket = bucket.next;\n }\n\n if (last_bucket) {\n bucket = {key: key, key_hash: key_hash, value: value};\n hash.$$keys.push(bucket);\n last_bucket.next = bucket;\n }\n };\n\n Opal.hash_get = function(hash, key) {\n if (key.$$is_string) {\n if ($hasOwn.call(hash.$$smap, key)) {\n return hash.$$smap[key];\n }\n return;\n }\n\n var key_hash, bucket;\n key_hash = hash.$$by_identity ? Opal.id(key) : key.$hash();\n\n if ($hasOwn.call(hash.$$map, key_hash)) {\n bucket = hash.$$map[key_hash];\n\n while (bucket) {\n if (key === bucket.key || key['$eql?'](bucket.key)) {\n return bucket.value;\n }\n bucket = bucket.next;\n }\n }\n };\n\n Opal.hash_delete = function(hash, key) {\n var i, keys = hash.$$keys, length = keys.length, value;\n\n if (key.$$is_string) {\n if (!$hasOwn.call(hash.$$smap, key)) {\n return;\n }\n\n for (i = 0; i < length; i++) {\n if (keys[i] === key) {\n keys.splice(i, 1);\n break;\n }\n }\n\n value = hash.$$smap[key];\n delete hash.$$smap[key];\n return value;\n }\n\n var key_hash = key.$hash();\n\n if (!$hasOwn.call(hash.$$map, key_hash)) {\n return;\n }\n\n var bucket = hash.$$map[key_hash], last_bucket;\n\n while (bucket) {\n if (key === bucket.key || key['$eql?'](bucket.key)) {\n value = bucket.value;\n\n for (i = 0; i < length; i++) {\n if (keys[i] === bucket) {\n keys.splice(i, 1);\n break;\n }\n }\n\n if (last_bucket && bucket.next) {\n last_bucket.next = bucket.next;\n }\n else if (last_bucket) {\n delete last_bucket.next;\n }\n else if (bucket.next) {\n hash.$$map[key_hash] = bucket.next;\n }\n else {\n delete hash.$$map[key_hash];\n }\n\n return value;\n }\n last_bucket = bucket;\n bucket = bucket.next;\n }\n };\n\n Opal.hash_rehash = function(hash) {\n for (var i = 0, length = hash.$$keys.length, key_hash, bucket, last_bucket; i < length; i++) {\n\n if (hash.$$keys[i].$$is_string) {\n continue;\n }\n\n key_hash = hash.$$keys[i].key.$hash();\n\n if (key_hash === hash.$$keys[i].key_hash) {\n continue;\n }\n\n bucket = hash.$$map[hash.$$keys[i].key_hash];\n last_bucket = undefined;\n\n while (bucket) {\n if (bucket === hash.$$keys[i]) {\n if (last_bucket && bucket.next) {\n last_bucket.next = bucket.next;\n }\n else if (last_bucket) {\n delete last_bucket.next;\n }\n else if (bucket.next) {\n hash.$$map[hash.$$keys[i].key_hash] = bucket.next;\n }\n else {\n delete hash.$$map[hash.$$keys[i].key_hash];\n }\n break;\n }\n last_bucket = bucket;\n bucket = bucket.next;\n }\n\n hash.$$keys[i].key_hash = key_hash;\n\n if (!$hasOwn.call(hash.$$map, key_hash)) {\n hash.$$map[key_hash] = hash.$$keys[i];\n continue;\n }\n\n bucket = hash.$$map[key_hash];\n last_bucket = undefined;\n\n while (bucket) {\n if (bucket === hash.$$keys[i]) {\n last_bucket = undefined;\n break;\n }\n last_bucket = bucket;\n bucket = bucket.next;\n }\n\n if (last_bucket) {\n last_bucket.next = hash.$$keys[i];\n }\n }\n };\n\n Opal.hash = function() {\n var arguments_length = arguments.length, args, hash, i, length, key, value;\n\n if (arguments_length === 1 && arguments[0].$$is_hash) {\n return arguments[0];\n }\n\n hash = new Opal.Hash.$$alloc();\n Opal.hash_init(hash);\n\n if (arguments_length === 1 && arguments[0].$$is_array) {\n args = arguments[0];\n length = args.length;\n\n for (i = 0; i < length; i++) {\n if (args[i].length !== 2) {\n throw Opal.ArgumentError.$new(\"value not of length 2: \" + args[i].$inspect());\n }\n\n key = args[i][0];\n value = args[i][1];\n\n Opal.hash_put(hash, key, value);\n }\n\n return hash;\n }\n\n if (arguments_length === 1) {\n args = arguments[0];\n for (key in args) {\n if ($hasOwn.call(args, key)) {\n value = args[key];\n\n Opal.hash_put(hash, key, value);\n }\n }\n\n return hash;\n }\n\n if (arguments_length % 2 !== 0) {\n throw Opal.ArgumentError.$new(\"odd number of arguments for Hash\");\n }\n\n for (i = 0; i < arguments_length; i += 2) {\n key = arguments[i];\n value = arguments[i + 1];\n\n Opal.hash_put(hash, key, value);\n }\n\n return hash;\n };\n\n // A faster Hash creator for hashes that just use symbols and\n // strings as keys. The map and keys array can be constructed at\n // compile time, so they are just added here by the constructor\n // function.\n //\n Opal.hash2 = function(keys, smap) {\n var hash = new Opal.Hash.$$alloc();\n\n hash.$$smap = smap;\n hash.$$map = Object.create(null);\n hash.$$keys = keys;\n\n return hash;\n };\n\n // Create a new range instance with first and last values, and whether the\n // range excludes the last value.\n //\n Opal.range = function(first, last, exc) {\n var range = new Opal.Range.$$alloc();\n range.begin = first;\n range.end = last;\n range.excl = exc;\n\n return range;\n };\n\n // Get the ivar name for a given name.\n // Mostly adds a trailing $ to reserved names.\n //\n Opal.ivar = function(name) {\n if (\n // properties\n name === \"constructor\" ||\n name === \"displayName\" ||\n name === \"__count__\" ||\n name === \"__noSuchMethod__\" ||\n name === \"__parent__\" ||\n name === \"__proto__\" ||\n\n // methods\n name === \"hasOwnProperty\" ||\n name === \"valueOf\"\n )\n {\n return name + \"$\";\n }\n\n return name;\n };\n\n\n // Regexps\n // -------\n\n // Escape Regexp special chars letting the resulting string be used to build\n // a new Regexp.\n //\n Opal.escape_regexp = function(str) {\n return str.replace(/([-[\\]\\/{}()*+?.^$\\\\| ])/g, '\\\\$1')\n .replace(/[\\n]/g, '\\\\n')\n .replace(/[\\r]/g, '\\\\r')\n .replace(/[\\f]/g, '\\\\f')\n .replace(/[\\t]/g, '\\\\t');\n }\n\n\n // Require system\n // --------------\n\n Opal.modules = {};\n Opal.loaded_features = ['corelib/runtime'];\n Opal.current_dir = '.'\n Opal.require_table = {'corelib/runtime': true};\n\n Opal.normalize = function(path) {\n var parts, part, new_parts = [], SEPARATOR = '/';\n\n if (Opal.current_dir !== '.') {\n path = Opal.current_dir.replace(/\\/*$/, '/') + path;\n }\n\n path = path.replace(/^\\.\\//, '');\n path = path.replace(/\\.(rb|opal|js)$/, '');\n parts = path.split(SEPARATOR);\n\n for (var i = 0, ii = parts.length; i < ii; i++) {\n part = parts[i];\n if (part === '') continue;\n (part === '..') ? new_parts.pop() : new_parts.push(part)\n }\n\n return new_parts.join(SEPARATOR);\n };\n\n Opal.loaded = function(paths) {\n var i, l, path;\n\n for (i = 0, l = paths.length; i < l; i++) {\n path = Opal.normalize(paths[i]);\n\n if (Opal.require_table[path]) {\n return;\n }\n\n Opal.loaded_features.push(path);\n Opal.require_table[path] = true;\n }\n };\n\n Opal.load = function(path) {\n path = Opal.normalize(path);\n\n Opal.loaded([path]);\n\n var module = Opal.modules[path];\n\n if (module) {\n module(Opal);\n }\n else {\n var severity = Opal.config.missing_require_severity;\n var message = 'cannot load such file -- ' + path;\n\n if (severity === \"error\") {\n if (Opal.LoadError) {\n throw Opal.LoadError.$new(message)\n } else {\n throw message\n }\n }\n else if (severity === \"warning\") {\n console.warn('WARNING: LoadError: ' + message);\n }\n }\n\n return true;\n };\n\n Opal.require = function(path) {\n path = Opal.normalize(path);\n\n if (Opal.require_table[path]) {\n return false;\n }\n\n return Opal.load(path);\n };\n\n\n // Initialization\n // --------------\n\n // Constructors for *instances* of core objects\n Opal.boot_class_alloc('BasicObject', BasicObject_alloc);\n Opal.boot_class_alloc('Object', Object_alloc, BasicObject_alloc);\n Opal.boot_class_alloc('Module', Module_alloc, Object_alloc);\n Opal.boot_class_alloc('Class', Class_alloc, Module_alloc);\n\n // Constructors for *classes* of core objects\n Opal.BasicObject = BasicObject = Opal.setup_class_object('BasicObject', BasicObject_alloc, 'Class', Class_alloc);\n Opal.Object = _Object = Opal.setup_class_object('Object', Object_alloc, 'BasicObject', BasicObject.constructor);\n Opal.Module = Module = Opal.setup_class_object('Module', Module_alloc, 'Object', _Object.constructor);\n Opal.Class = Class = Opal.setup_class_object('Class', Class_alloc, 'Module', Module.constructor);\n\n // BasicObject can reach itself, avoid const_set to skip the $$base_module logic\n BasicObject.$$const[\"BasicObject\"] = BasicObject;\n\n // Assign basic constants\n Opal.const_set(_Object, \"BasicObject\", BasicObject);\n Opal.const_set(_Object, \"Object\", _Object);\n Opal.const_set(_Object, \"Module\", Module);\n Opal.const_set(_Object, \"Class\", Class);\n\n\n // Fix booted classes to use their metaclass\n BasicObject.$$class = Class;\n _Object.$$class = Class;\n Module.$$class = Class;\n Class.$$class = Class;\n\n // Fix superclasses of booted classes\n BasicObject.$$super = null;\n _Object.$$super = BasicObject;\n Module.$$super = _Object;\n Class.$$super = Module;\n\n BasicObject.$$parent = null;\n _Object.$$parent = BasicObject;\n Module.$$parent = _Object;\n Class.$$parent = Module;\n\n // Forward .toString() to #to_s\n _Object.$$proto.toString = function() {\n var to_s = this.$to_s();\n if (to_s.$$is_string && typeof(to_s) === 'object') {\n // a string created using new String('string')\n return to_s.valueOf();\n } else {\n return to_s;\n }\n };\n\n // Make Kernel#require immediately available as it's needed to require all the\n // other corelib files.\n _Object.$$proto.$require = Opal.require;\n\n // Add a short helper to navigate constants manually.\n // @example\n // Opal.$$.Regexp.$$.IGNORECASE\n Opal.$$ = _Object.$$;\n\n // Instantiate the main object\n Opal.top = new _Object.$$alloc();\n Opal.top.$to_s = Opal.top.$inspect = function() { return 'main' };\n\n // Nil\n Opal.klass(_Object, _Object, 'NilClass', NilClass_alloc);\n nil = Opal.nil = new NilClass_alloc();\n nil.$$id = nil_id;\n nil.call = nil.apply = function() { throw Opal.LocalJumpError.$new('no block given'); };\n\n // Errors\n Opal.breaker = new Error('unexpected break (old)');\n Opal.returner = new Error('unexpected return');\n TypeError.$$super = Error;\n}).call(this);\nOpal.loaded([\"corelib/runtime\"]);\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/helpers\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$new', '$class', '$===', '$respond_to?', '$raise', '$type_error', '$__send__', '$coerce_to', '$nil?', '$<=>', '$coerce_to!', '$!=', '$[]', '$upcase']);\n return (function($base, $parent_nesting) {\n var $Opal, self = $Opal = $module($base, 'Opal');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Opal_bridge_1, TMP_Opal_type_error_2, TMP_Opal_coerce_to_3, TMP_Opal_coerce_to$B_4, TMP_Opal_coerce_to$q_5, TMP_Opal_try_convert_6, TMP_Opal_compare_7, TMP_Opal_destructure_8, TMP_Opal_respond_to$q_9, TMP_Opal_inspect_obj_10, TMP_Opal_instance_variable_name$B_11, TMP_Opal_class_variable_name$B_12, TMP_Opal_const_name$B_13, TMP_Opal_pristine_14;\n\n \n Opal.defs(self, '$bridge', TMP_Opal_bridge_1 = function $$bridge(klass, constructor) {\n var self = this;\n\n return Opal.bridge(klass, constructor);\n }, TMP_Opal_bridge_1.$$arity = 2);\n Opal.defs(self, '$type_error', TMP_Opal_type_error_2 = function $$type_error(object, type, method, coerced) {\n var $a, self = this;\n\n if (method == null) {\n method = nil;\n }\n if (coerced == null) {\n coerced = nil;\n }\n if ($truthy(($truthy($a = method) ? coerced : $a))) {\n return $$($nesting, 'TypeError').$new(\"\" + \"can't convert \" + (object.$class()) + \" into \" + (type) + \" (\" + (object.$class()) + \"#\" + (method) + \" gives \" + (coerced.$class()) + \")\")\n } else {\n return $$($nesting, 'TypeError').$new(\"\" + \"no implicit conversion of \" + (object.$class()) + \" into \" + (type))\n }\n }, TMP_Opal_type_error_2.$$arity = -3);\n Opal.defs(self, '$coerce_to', TMP_Opal_coerce_to_3 = function $$coerce_to(object, type, method) {\n var self = this;\n\n \n if ($truthy(type['$==='](object))) {\n return object};\n if ($truthy(object['$respond_to?'](method))) {\n } else {\n self.$raise(self.$type_error(object, type))\n };\n return object.$__send__(method);\n }, TMP_Opal_coerce_to_3.$$arity = 3);\n Opal.defs(self, '$coerce_to!', TMP_Opal_coerce_to$B_4 = function(object, type, method) {\n var self = this, coerced = nil;\n\n \n coerced = self.$coerce_to(object, type, method);\n if ($truthy(type['$==='](coerced))) {\n } else {\n self.$raise(self.$type_error(object, type, method, coerced))\n };\n return coerced;\n }, TMP_Opal_coerce_to$B_4.$$arity = 3);\n Opal.defs(self, '$coerce_to?', TMP_Opal_coerce_to$q_5 = function(object, type, method) {\n var self = this, coerced = nil;\n\n \n if ($truthy(object['$respond_to?'](method))) {\n } else {\n return nil\n };\n coerced = self.$coerce_to(object, type, method);\n if ($truthy(coerced['$nil?']())) {\n return nil};\n if ($truthy(type['$==='](coerced))) {\n } else {\n self.$raise(self.$type_error(object, type, method, coerced))\n };\n return coerced;\n }, TMP_Opal_coerce_to$q_5.$$arity = 3);\n Opal.defs(self, '$try_convert', TMP_Opal_try_convert_6 = function $$try_convert(object, type, method) {\n var self = this;\n\n \n if ($truthy(type['$==='](object))) {\n return object};\n if ($truthy(object['$respond_to?'](method))) {\n return object.$__send__(method)\n } else {\n return nil\n };\n }, TMP_Opal_try_convert_6.$$arity = 3);\n Opal.defs(self, '$compare', TMP_Opal_compare_7 = function $$compare(a, b) {\n var self = this, compare = nil;\n\n \n compare = a['$<=>'](b);\n if ($truthy(compare === nil)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (a.$class()) + \" with \" + (b.$class()) + \" failed\")};\n return compare;\n }, TMP_Opal_compare_7.$$arity = 2);\n Opal.defs(self, '$destructure', TMP_Opal_destructure_8 = function $$destructure(args) {\n var self = this;\n\n \n if (args.length == 1) {\n return args[0];\n }\n else if (args.$$is_array) {\n return args;\n }\n else {\n var args_ary = new Array(args.length);\n for(var i = 0, l = args_ary.length; i < l; i++) { args_ary[i] = args[i]; }\n\n return args_ary;\n }\n \n }, TMP_Opal_destructure_8.$$arity = 1);\n Opal.defs(self, '$respond_to?', TMP_Opal_respond_to$q_9 = function(obj, method, include_all) {\n var self = this;\n\n if (include_all == null) {\n include_all = false;\n }\n \n \n if (obj == null || !obj.$$class) {\n return false;\n }\n ;\n return obj['$respond_to?'](method, include_all);\n }, TMP_Opal_respond_to$q_9.$$arity = -3);\n Opal.defs(self, '$inspect_obj', TMP_Opal_inspect_obj_10 = function $$inspect_obj(obj) {\n var self = this;\n\n return Opal.inspect(obj);\n }, TMP_Opal_inspect_obj_10.$$arity = 1);\n Opal.defs(self, '$instance_variable_name!', TMP_Opal_instance_variable_name$B_11 = function(name) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), \"to_str\");\n if ($truthy(/^@[a-zA-Z_][a-zA-Z0-9_]*?$/.test(name))) {\n } else {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"'\" + (name) + \"' is not allowed as an instance variable name\", name))\n };\n return name;\n }, TMP_Opal_instance_variable_name$B_11.$$arity = 1);\n Opal.defs(self, '$class_variable_name!', TMP_Opal_class_variable_name$B_12 = function(name) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), \"to_str\");\n if ($truthy(name.length < 3 || name.slice(0,2) !== '@@')) {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"`\" + (name) + \"' is not allowed as a class variable name\", name))};\n return name;\n }, TMP_Opal_class_variable_name$B_12.$$arity = 1);\n Opal.defs(self, '$const_name!', TMP_Opal_const_name$B_13 = function(const_name) {\n var self = this;\n\n \n const_name = $$($nesting, 'Opal')['$coerce_to!'](const_name, $$($nesting, 'String'), \"to_str\");\n if ($truthy(const_name['$[]'](0)['$!='](const_name['$[]'](0).$upcase()))) {\n self.$raise($$($nesting, 'NameError'), \"\" + \"wrong constant name \" + (const_name))};\n return const_name;\n }, TMP_Opal_const_name$B_13.$$arity = 1);\n Opal.defs(self, '$pristine', TMP_Opal_pristine_14 = function $$pristine(owner_class, $a_rest) {\n var self = this, method_names;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n method_names = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n method_names[$arg_idx - 1] = arguments[$arg_idx];\n }\n \n \n var method_name, method;\n for (var i = method_names.length - 1; i >= 0; i--) {\n method_name = method_names[i];\n method = owner_class.$$proto['$'+method_name];\n\n if (method && !method.$$stub) {\n method.$$pristine = true;\n }\n }\n ;\n return nil;\n }, TMP_Opal_pristine_14.$$arity = -2);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/module\"] = function(Opal) {\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $lambda = Opal.lambda, $range = Opal.range, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$===', '$raise', '$equal?', '$<', '$>', '$nil?', '$attr_reader', '$attr_writer', '$class_variable_name!', '$new', '$const_name!', '$=~', '$inject', '$split', '$const_get', '$==', '$!~', '$start_with?', '$to_proc', '$bind', '$call', '$class', '$append_features', '$included', '$name', '$cover?', '$size', '$merge', '$compile', '$proc', '$any?', '$to_s', '$__id__', '$constants', '$include?', '$copy_class_variables', '$copy_constants']);\n return (function($base, $super, $parent_nesting) {\n function $Module(){};\n var self = $Module = $klass($base, $super, 'Module', $Module);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Module_allocate_1, TMP_Module_initialize_2, TMP_Module_$eq$eq$eq_3, TMP_Module_$lt_4, TMP_Module_$lt$eq_5, TMP_Module_$gt_6, TMP_Module_$gt$eq_7, TMP_Module_$lt$eq$gt_8, TMP_Module_alias_method_9, TMP_Module_alias_native_10, TMP_Module_ancestors_11, TMP_Module_append_features_12, TMP_Module_attr_accessor_13, TMP_Module_attr_reader_14, TMP_Module_attr_writer_15, TMP_Module_autoload_16, TMP_Module_class_variables_17, TMP_Module_class_variable_get_18, TMP_Module_class_variable_set_19, TMP_Module_class_variable_defined$q_20, TMP_Module_remove_class_variable_21, TMP_Module_constants_22, TMP_Module_constants_23, TMP_Module_nesting_24, TMP_Module_const_defined$q_25, TMP_Module_const_get_27, TMP_Module_const_missing_28, TMP_Module_const_set_29, TMP_Module_public_constant_30, TMP_Module_define_method_31, TMP_Module_remove_method_33, TMP_Module_singleton_class$q_34, TMP_Module_include_35, TMP_Module_included_modules_36, TMP_Module_include$q_37, TMP_Module_instance_method_38, TMP_Module_instance_methods_39, TMP_Module_included_40, TMP_Module_extended_41, TMP_Module_extend_object_42, TMP_Module_method_added_43, TMP_Module_method_removed_44, TMP_Module_method_undefined_45, TMP_Module_module_eval_46, TMP_Module_module_exec_48, TMP_Module_method_defined$q_49, TMP_Module_module_function_50, TMP_Module_name_51, TMP_Module_remove_const_52, TMP_Module_to_s_53, TMP_Module_undef_method_54, TMP_Module_instance_variables_55, TMP_Module_dup_56, TMP_Module_copy_class_variables_57, TMP_Module_copy_constants_58;\n\n \n Opal.defs(self, '$allocate', TMP_Module_allocate_1 = function $$allocate() {\n var self = this;\n\n \n var module;\n\n module = Opal.module_allocate(self);\n return module;\n \n }, TMP_Module_allocate_1.$$arity = 0);\n \n Opal.def(self, '$initialize', TMP_Module_initialize_2 = function $$initialize() {\n var self = this, $iter = TMP_Module_initialize_2.$$p, block = $iter || nil;\n\n if ($iter) TMP_Module_initialize_2.$$p = null;\n return Opal.module_initialize(self, block);\n }, TMP_Module_initialize_2.$$arity = 0);\n \n Opal.def(self, '$===', TMP_Module_$eq$eq$eq_3 = function(object) {\n var self = this;\n\n \n if ($truthy(object == null)) {\n return false};\n return Opal.is_a(object, self);;\n }, TMP_Module_$eq$eq$eq_3.$$arity = 1);\n \n Opal.def(self, '$<', TMP_Module_$lt_4 = function(other) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Module')['$==='](other))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"compared with non class/module\")\n };\n \n var working = self,\n ancestors,\n i, length;\n\n if (working === other) {\n return false;\n }\n\n for (i = 0, ancestors = Opal.ancestors(self), length = ancestors.length; i < length; i++) {\n if (ancestors[i] === other) {\n return true;\n }\n }\n\n for (i = 0, ancestors = Opal.ancestors(other), length = ancestors.length; i < length; i++) {\n if (ancestors[i] === self) {\n return false;\n }\n }\n\n return nil;\n ;\n }, TMP_Module_$lt_4.$$arity = 1);\n \n Opal.def(self, '$<=', TMP_Module_$lt$eq_5 = function(other) {\n var $a, self = this;\n\n return ($truthy($a = self['$equal?'](other)) ? $a : $rb_lt(self, other))\n }, TMP_Module_$lt$eq_5.$$arity = 1);\n \n Opal.def(self, '$>', TMP_Module_$gt_6 = function(other) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Module')['$==='](other))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"compared with non class/module\")\n };\n return $rb_lt(other, self);\n }, TMP_Module_$gt_6.$$arity = 1);\n \n Opal.def(self, '$>=', TMP_Module_$gt$eq_7 = function(other) {\n var $a, self = this;\n\n return ($truthy($a = self['$equal?'](other)) ? $a : $rb_gt(self, other))\n }, TMP_Module_$gt$eq_7.$$arity = 1);\n \n Opal.def(self, '$<=>', TMP_Module_$lt$eq$gt_8 = function(other) {\n var self = this, lt = nil;\n\n \n \n if (self === other) {\n return 0;\n }\n ;\n if ($truthy($$($nesting, 'Module')['$==='](other))) {\n } else {\n return nil\n };\n lt = $rb_lt(self, other);\n if ($truthy(lt['$nil?']())) {\n return nil};\n if ($truthy(lt)) {\n return -1\n } else {\n return 1\n };\n }, TMP_Module_$lt$eq$gt_8.$$arity = 1);\n \n Opal.def(self, '$alias_method', TMP_Module_alias_method_9 = function $$alias_method(newname, oldname) {\n var self = this;\n\n \n Opal.alias(self, newname, oldname);\n return self;\n }, TMP_Module_alias_method_9.$$arity = 2);\n \n Opal.def(self, '$alias_native', TMP_Module_alias_native_10 = function $$alias_native(mid, jsid) {\n var self = this;\n\n if (jsid == null) {\n jsid = mid;\n }\n \n Opal.alias_native(self, mid, jsid);\n return self;\n }, TMP_Module_alias_native_10.$$arity = -2);\n \n Opal.def(self, '$ancestors', TMP_Module_ancestors_11 = function $$ancestors() {\n var self = this;\n\n return Opal.ancestors(self);\n }, TMP_Module_ancestors_11.$$arity = 0);\n \n Opal.def(self, '$append_features', TMP_Module_append_features_12 = function $$append_features(includer) {\n var self = this;\n\n \n Opal.append_features(self, includer);\n return self;\n }, TMP_Module_append_features_12.$$arity = 1);\n \n Opal.def(self, '$attr_accessor', TMP_Module_attr_accessor_13 = function $$attr_accessor($a_rest) {\n var self = this, names;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n names = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n names[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n $send(self, 'attr_reader', Opal.to_a(names));\n return $send(self, 'attr_writer', Opal.to_a(names));\n }, TMP_Module_attr_accessor_13.$$arity = -1);\n Opal.alias(self, \"attr\", \"attr_accessor\");\n \n Opal.def(self, '$attr_reader', TMP_Module_attr_reader_14 = function $$attr_reader($a_rest) {\n var self = this, names;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n names = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n names[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n var proto = self.$$proto;\n\n for (var i = names.length - 1; i >= 0; i--) {\n var name = names[i],\n id = '$' + name,\n ivar = Opal.ivar(name);\n\n // the closure here is needed because name will change at the next\n // cycle, I wish we could use let.\n var body = (function(ivar) {\n return function() {\n if (this[ivar] == null) {\n return nil;\n }\n else {\n return this[ivar];\n }\n };\n })(ivar);\n\n // initialize the instance variable as nil\n proto[ivar] = nil;\n\n body.$$parameters = [];\n body.$$arity = 0;\n\n if (self.$$is_singleton) {\n proto.constructor.prototype[id] = body;\n }\n else {\n Opal.defn(self, id, body);\n }\n }\n ;\n return nil;\n }, TMP_Module_attr_reader_14.$$arity = -1);\n \n Opal.def(self, '$attr_writer', TMP_Module_attr_writer_15 = function $$attr_writer($a_rest) {\n var self = this, names;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n names = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n names[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n var proto = self.$$proto;\n\n for (var i = names.length - 1; i >= 0; i--) {\n var name = names[i],\n id = '$' + name + '=',\n ivar = Opal.ivar(name);\n\n // the closure here is needed because name will change at the next\n // cycle, I wish we could use let.\n var body = (function(ivar){\n return function(value) {\n return this[ivar] = value;\n }\n })(ivar);\n\n body.$$parameters = [['req']];\n body.$$arity = 1;\n\n // initialize the instance variable as nil\n proto[ivar] = nil;\n\n if (self.$$is_singleton) {\n proto.constructor.prototype[id] = body;\n }\n else {\n Opal.defn(self, id, body);\n }\n }\n ;\n return nil;\n }, TMP_Module_attr_writer_15.$$arity = -1);\n \n Opal.def(self, '$autoload', TMP_Module_autoload_16 = function $$autoload(const$, path) {\n var self = this;\n\n \n if (self.$$autoload == null) self.$$autoload = {};\n Opal.const_cache_version++;\n self.$$autoload[const$] = path;\n return nil;\n \n }, TMP_Module_autoload_16.$$arity = 2);\n \n Opal.def(self, '$class_variables', TMP_Module_class_variables_17 = function $$class_variables() {\n var self = this;\n\n return Object.keys(Opal.class_variables(self));\n }, TMP_Module_class_variables_17.$$arity = 0);\n \n Opal.def(self, '$class_variable_get', TMP_Module_class_variable_get_18 = function $$class_variable_get(name) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$class_variable_name!'](name);\n \n var value = Opal.class_variables(self)[name];\n if (value == null) {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"uninitialized class variable \" + (name) + \" in \" + (self), name))\n }\n return value;\n ;\n }, TMP_Module_class_variable_get_18.$$arity = 1);\n \n Opal.def(self, '$class_variable_set', TMP_Module_class_variable_set_19 = function $$class_variable_set(name, value) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$class_variable_name!'](name);\n return Opal.class_variable_set(self, name, value);;\n }, TMP_Module_class_variable_set_19.$$arity = 2);\n \n Opal.def(self, '$class_variable_defined?', TMP_Module_class_variable_defined$q_20 = function(name) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$class_variable_name!'](name);\n return Opal.class_variables(self).hasOwnProperty(name);;\n }, TMP_Module_class_variable_defined$q_20.$$arity = 1);\n \n Opal.def(self, '$remove_class_variable', TMP_Module_remove_class_variable_21 = function $$remove_class_variable(name) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$class_variable_name!'](name);\n \n if (Opal.hasOwnProperty.call(self.$$cvars, name)) {\n var value = self.$$cvars[name];\n delete self.$$cvars[name];\n return value;\n } else {\n self.$raise($$($nesting, 'NameError'), \"\" + \"cannot remove \" + (name) + \" for \" + (self))\n }\n ;\n }, TMP_Module_remove_class_variable_21.$$arity = 1);\n \n Opal.def(self, '$constants', TMP_Module_constants_22 = function $$constants(inherit) {\n var self = this;\n\n if (inherit == null) {\n inherit = true;\n }\n return Opal.constants(self, inherit);\n }, TMP_Module_constants_22.$$arity = -1);\n Opal.defs(self, '$constants', TMP_Module_constants_23 = function $$constants(inherit) {\n var self = this;\n\n \n if (inherit == null) {\n var nesting = (self.$$nesting || []).concat(Opal.Object),\n constant, constants = {},\n i, ii;\n\n for(i = 0, ii = nesting.length; i < ii; i++) {\n for (constant in nesting[i].$$const) {\n constants[constant] = true;\n }\n }\n return Object.keys(constants);\n } else {\n return Opal.constants(self, inherit)\n }\n \n }, TMP_Module_constants_23.$$arity = -1);\n Opal.defs(self, '$nesting', TMP_Module_nesting_24 = function $$nesting() {\n var self = this;\n\n return self.$$nesting || [];\n }, TMP_Module_nesting_24.$$arity = 0);\n \n Opal.def(self, '$const_defined?', TMP_Module_const_defined$q_25 = function(name, inherit) {\n var self = this;\n\n if (inherit == null) {\n inherit = true;\n }\n \n name = $$($nesting, 'Opal')['$const_name!'](name);\n if ($truthy(name['$=~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP')))) {\n } else {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"wrong constant name \" + (name), name))\n };\n \n var module, modules = [self], module_constants, i, ii;\n\n // Add up ancestors if inherit is true\n if (inherit) {\n modules = modules.concat(Opal.ancestors(self));\n\n // Add Object's ancestors if it's a module – modules have no ancestors otherwise\n if (self.$$is_module) {\n modules = modules.concat([Opal.Object]).concat(Opal.ancestors(Opal.Object));\n }\n }\n\n for (i = 0, ii = modules.length; i < ii; i++) {\n module = modules[i];\n if (module.$$const[name] != null) {\n return true;\n }\n }\n\n return false;\n ;\n }, TMP_Module_const_defined$q_25.$$arity = -2);\n \n Opal.def(self, '$const_get', TMP_Module_const_get_27 = function $$const_get(name, inherit) {\n var TMP_26, self = this;\n\n if (inherit == null) {\n inherit = true;\n }\n \n name = $$($nesting, 'Opal')['$const_name!'](name);\n \n if (name.indexOf('::') === 0 && name !== '::'){\n name = name.slice(2);\n }\n ;\n if ($truthy(name.indexOf('::') != -1 && name != '::')) {\n return $send(name.$split(\"::\"), 'inject', [self], (TMP_26 = function(o, c){var self = TMP_26.$$s || this;\nif (o == null) o = nil;if (c == null) c = nil;\n return o.$const_get(c)}, TMP_26.$$s = self, TMP_26.$$arity = 2, TMP_26))};\n if ($truthy(name['$=~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP')))) {\n } else {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"wrong constant name \" + (name), name))\n };\n \n if (inherit) {\n return $$([self], name);\n } else {\n return Opal.const_get_local(self, name);\n }\n ;\n }, TMP_Module_const_get_27.$$arity = -2);\n \n Opal.def(self, '$const_missing', TMP_Module_const_missing_28 = function $$const_missing(name) {\n var self = this, full_const_name = nil;\n\n \n \n if (self.$$autoload) {\n var file = self.$$autoload[name];\n\n if (file) {\n self.$require(file);\n\n return self.$const_get(name);\n }\n }\n ;\n full_const_name = (function() {if (self['$==']($$($nesting, 'Object'))) {\n return name\n } else {\n return \"\" + (self) + \"::\" + (name)\n }; return nil; })();\n return self.$raise($$($nesting, 'NameError').$new(\"\" + \"uninitialized constant \" + (full_const_name), name));\n }, TMP_Module_const_missing_28.$$arity = 1);\n \n Opal.def(self, '$const_set', TMP_Module_const_set_29 = function $$const_set(name, value) {\n var $a, self = this;\n\n \n name = $$($nesting, 'Opal')['$const_name!'](name);\n if ($truthy(($truthy($a = name['$!~']($$$($$($nesting, 'Opal'), 'CONST_NAME_REGEXP'))) ? $a : name['$start_with?'](\"::\")))) {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"wrong constant name \" + (name), name))};\n Opal.const_set(self, name, value);\n return value;\n }, TMP_Module_const_set_29.$$arity = 2);\n \n Opal.def(self, '$public_constant', TMP_Module_public_constant_30 = function $$public_constant(const_name) {\n var self = this;\n\n return nil\n }, TMP_Module_public_constant_30.$$arity = 1);\n \n Opal.def(self, '$define_method', TMP_Module_define_method_31 = function $$define_method(name, method) {\n var $a, TMP_32, self = this, $iter = TMP_Module_define_method_31.$$p, block = $iter || nil, $case = nil;\n\n if ($iter) TMP_Module_define_method_31.$$p = null;\n \n if ($truthy(method === undefined && block === nil)) {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to create a Proc object without a block\")};\n block = ($truthy($a = block) ? $a : (function() {$case = method;\n if ($$($nesting, 'Proc')['$===']($case)) {return method}\n else if ($$($nesting, 'Method')['$===']($case)) {return method.$to_proc().$$unbound}\n else if ($$($nesting, 'UnboundMethod')['$===']($case)) {return $lambda((TMP_32 = function($b_rest){var self = TMP_32.$$s || this, args, bound = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n bound = method.$bind(self);\n return $send(bound, 'call', Opal.to_a(args));}, TMP_32.$$s = self, TMP_32.$$arity = -1, TMP_32))}\n else {return self.$raise($$($nesting, 'TypeError'), \"\" + \"wrong argument type \" + (block.$class()) + \" (expected Proc/Method)\")}})());\n \n var id = '$' + name;\n\n block.$$jsid = name;\n block.$$s = null;\n block.$$def = block;\n block.$$define_meth = true;\n\n Opal.defn(self, id, block);\n\n return name;\n ;\n }, TMP_Module_define_method_31.$$arity = -2);\n \n Opal.def(self, '$remove_method', TMP_Module_remove_method_33 = function $$remove_method($a_rest) {\n var self = this, names;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n names = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n names[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n for (var i = 0, length = names.length; i < length; i++) {\n Opal.rdef(self, \"$\" + names[i]);\n }\n ;\n return self;\n }, TMP_Module_remove_method_33.$$arity = -1);\n \n Opal.def(self, '$singleton_class?', TMP_Module_singleton_class$q_34 = function() {\n var self = this;\n\n return !!self.$$is_singleton;\n }, TMP_Module_singleton_class$q_34.$$arity = 0);\n \n Opal.def(self, '$include', TMP_Module_include_35 = function $$include($a_rest) {\n var self = this, mods;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n mods = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n mods[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n for (var i = mods.length - 1; i >= 0; i--) {\n var mod = mods[i];\n\n if (!mod.$$is_module) {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"wrong argument type \" + ((mod).$class()) + \" (expected Module)\");\n }\n\n (mod).$append_features(self);\n (mod).$included(self);\n }\n ;\n return self;\n }, TMP_Module_include_35.$$arity = -1);\n \n Opal.def(self, '$included_modules', TMP_Module_included_modules_36 = function $$included_modules() {\n var self = this;\n\n \n var results;\n\n var module_chain = function(klass) {\n var included = [];\n\n for (var i = 0, ii = klass.$$inc.length; i < ii; i++) {\n var mod_or_class = klass.$$inc[i];\n included.push(mod_or_class);\n included = included.concat(module_chain(mod_or_class));\n }\n\n return included;\n };\n\n results = module_chain(self);\n\n // need superclass's modules\n if (self.$$is_class) {\n for (var cls = self; cls; cls = cls.$$super) {\n results = results.concat(module_chain(cls));\n }\n }\n\n return results;\n \n }, TMP_Module_included_modules_36.$$arity = 0);\n \n Opal.def(self, '$include?', TMP_Module_include$q_37 = function(mod) {\n var self = this;\n\n \n if (!mod.$$is_module) {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"wrong argument type \" + ((mod).$class()) + \" (expected Module)\");\n }\n\n var i, ii, mod2, ancestors = Opal.ancestors(self);\n\n for (i = 0, ii = ancestors.length; i < ii; i++) {\n mod2 = ancestors[i];\n if (mod2 === mod && mod2 !== self) {\n return true;\n }\n }\n\n return false;\n \n }, TMP_Module_include$q_37.$$arity = 1);\n \n Opal.def(self, '$instance_method', TMP_Module_instance_method_38 = function $$instance_method(name) {\n var self = this;\n\n \n var meth = self.$$proto['$' + name];\n\n if (!meth || meth.$$stub) {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"undefined method `\" + (name) + \"' for class `\" + (self.$name()) + \"'\", name));\n }\n\n return $$($nesting, 'UnboundMethod').$new(self, meth.$$owner || self, meth, name);\n \n }, TMP_Module_instance_method_38.$$arity = 1);\n \n Opal.def(self, '$instance_methods', TMP_Module_instance_methods_39 = function $$instance_methods(include_super) {\n var self = this;\n\n if (include_super == null) {\n include_super = true;\n }\n \n var value,\n methods = [],\n proto = self.$$proto;\n\n for (var prop in proto) {\n if (prop.charAt(0) !== '$' || prop.charAt(1) === '$') {\n continue;\n }\n\n value = proto[prop];\n\n if (typeof(value) !== \"function\") {\n continue;\n }\n\n if (value.$$stub) {\n continue;\n }\n\n if (!self.$$is_module) {\n if (self !== Opal.BasicObject && value === Opal.BasicObject.$$proto[prop]) {\n continue;\n }\n\n if (!include_super && !proto.hasOwnProperty(prop)) {\n continue;\n }\n\n if (!include_super && value.$$donated) {\n continue;\n }\n }\n\n methods.push(prop.substr(1));\n }\n\n return methods;\n \n }, TMP_Module_instance_methods_39.$$arity = -1);\n \n Opal.def(self, '$included', TMP_Module_included_40 = function $$included(mod) {\n var self = this;\n\n return nil\n }, TMP_Module_included_40.$$arity = 1);\n \n Opal.def(self, '$extended', TMP_Module_extended_41 = function $$extended(mod) {\n var self = this;\n\n return nil\n }, TMP_Module_extended_41.$$arity = 1);\n \n Opal.def(self, '$extend_object', TMP_Module_extend_object_42 = function $$extend_object(object) {\n var self = this;\n\n return nil\n }, TMP_Module_extend_object_42.$$arity = 1);\n \n Opal.def(self, '$method_added', TMP_Module_method_added_43 = function $$method_added($a_rest) {\n var self = this;\n\n return nil\n }, TMP_Module_method_added_43.$$arity = -1);\n \n Opal.def(self, '$method_removed', TMP_Module_method_removed_44 = function $$method_removed($a_rest) {\n var self = this;\n\n return nil\n }, TMP_Module_method_removed_44.$$arity = -1);\n \n Opal.def(self, '$method_undefined', TMP_Module_method_undefined_45 = function $$method_undefined($a_rest) {\n var self = this;\n\n return nil\n }, TMP_Module_method_undefined_45.$$arity = -1);\n \n Opal.def(self, '$module_eval', TMP_Module_module_eval_46 = function $$module_eval($a_rest) {\n var $b, TMP_47, self = this, args, $iter = TMP_Module_module_eval_46.$$p, block = $iter || nil, string = nil, file = nil, _lineno = nil, default_eval_options = nil, compiling_options = nil, compiled = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Module_module_eval_46.$$p = null;\n \n if ($truthy(($truthy($b = block['$nil?']()) ? !!Opal.compile : $b))) {\n \n if ($truthy($range(1, 3, false)['$cover?'](args.$size()))) {\n } else {\n $$($nesting, 'Kernel').$raise($$($nesting, 'ArgumentError'), \"wrong number of arguments (0 for 1..3)\")\n };\n $b = [].concat(Opal.to_a(args)), (string = ($b[0] == null ? nil : $b[0])), (file = ($b[1] == null ? nil : $b[1])), (_lineno = ($b[2] == null ? nil : $b[2])), $b;\n default_eval_options = $hash2([\"file\", \"eval\"], {\"file\": ($truthy($b = file) ? $b : \"(eval)\"), \"eval\": true});\n compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options);\n compiled = $$($nesting, 'Opal').$compile(string, compiling_options);\n block = $send($$($nesting, 'Kernel'), 'proc', [], (TMP_47 = function(){var self = TMP_47.$$s || this;\n\n \n return (function(self) {\n return eval(compiled);\n })(self)\n }, TMP_47.$$s = self, TMP_47.$$arity = 0, TMP_47));\n } else if ($truthy(args['$any?']())) {\n $$($nesting, 'Kernel').$raise($$($nesting, 'ArgumentError'), \"\" + (\"\" + \"wrong number of arguments (\" + (args.$size()) + \" for 0)\") + \"\\n\\n NOTE:If you want to enable passing a String argument please add \\\"require 'opal-parser'\\\" to your script\\n\")};\n \n var old = block.$$s,\n result;\n\n block.$$s = null;\n result = block.apply(self, [self]);\n block.$$s = old;\n\n return result;\n ;\n }, TMP_Module_module_eval_46.$$arity = -1);\n Opal.alias(self, \"class_eval\", \"module_eval\");\n \n Opal.def(self, '$module_exec', TMP_Module_module_exec_48 = function $$module_exec($a_rest) {\n var self = this, args, $iter = TMP_Module_module_exec_48.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Module_module_exec_48.$$p = null;\n \n if (block === nil) {\n self.$raise($$($nesting, 'LocalJumpError'), \"no block given\")\n }\n\n var block_self = block.$$s, result;\n\n block.$$s = null;\n result = block.apply(self, args);\n block.$$s = block_self;\n\n return result;\n \n }, TMP_Module_module_exec_48.$$arity = -1);\n Opal.alias(self, \"class_exec\", \"module_exec\");\n \n Opal.def(self, '$method_defined?', TMP_Module_method_defined$q_49 = function(method) {\n var self = this;\n\n \n var body = self.$$proto['$' + method];\n return (!!body) && !body.$$stub;\n \n }, TMP_Module_method_defined$q_49.$$arity = 1);\n \n Opal.def(self, '$module_function', TMP_Module_module_function_50 = function $$module_function($a_rest) {\n var self = this, methods;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n methods = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n methods[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if (methods.length === 0) {\n self.$$module_function = true;\n }\n else {\n for (var i = 0, length = methods.length; i < length; i++) {\n var meth = methods[i],\n id = '$' + meth,\n func = self.$$proto[id];\n\n Opal.defs(self, id, func);\n }\n }\n\n return self;\n \n }, TMP_Module_module_function_50.$$arity = -1);\n \n Opal.def(self, '$name', TMP_Module_name_51 = function $$name() {\n var self = this;\n\n \n if (self.$$full_name) {\n return self.$$full_name;\n }\n\n var result = [], base = self;\n\n while (base) {\n // Give up if any of the ancestors is unnamed\n if (base.$$name === nil || base.$$name == null) return nil;\n\n result.unshift(base.$$name);\n\n base = base.$$base_module;\n\n if (base === Opal.Object) {\n break;\n }\n }\n\n if (result.length === 0) {\n return nil;\n }\n\n return self.$$full_name = result.join('::');\n \n }, TMP_Module_name_51.$$arity = 0);\n \n Opal.def(self, '$remove_const', TMP_Module_remove_const_52 = function $$remove_const(name) {\n var self = this;\n\n return Opal.const_remove(self, name);\n }, TMP_Module_remove_const_52.$$arity = 1);\n \n Opal.def(self, '$to_s', TMP_Module_to_s_53 = function $$to_s() {\n var $a, self = this;\n\n return ($truthy($a = Opal.Module.$name.call(self)) ? $a : \"\" + \"#<\" + (self.$$is_module ? 'Module' : 'Class') + \":0x\" + (self.$__id__().$to_s(16)) + \">\")\n }, TMP_Module_to_s_53.$$arity = 0);\n \n Opal.def(self, '$undef_method', TMP_Module_undef_method_54 = function $$undef_method($a_rest) {\n var self = this, names;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n names = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n names[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n for (var i = 0, length = names.length; i < length; i++) {\n Opal.udef(self, \"$\" + names[i]);\n }\n ;\n return self;\n }, TMP_Module_undef_method_54.$$arity = -1);\n \n Opal.def(self, '$instance_variables', TMP_Module_instance_variables_55 = function $$instance_variables() {\n var self = this, consts = nil;\n\n \n consts = (Opal.Module.$$nesting = $nesting, self.$constants());\n \n var result = [];\n\n for (var name in self) {\n if (self.hasOwnProperty(name) && name.charAt(0) !== '$' && name !== 'constructor' && !consts['$include?'](name)) {\n result.push('@' + name);\n }\n }\n\n return result;\n ;\n }, TMP_Module_instance_variables_55.$$arity = 0);\n \n Opal.def(self, '$dup', TMP_Module_dup_56 = function $$dup() {\n var self = this, $iter = TMP_Module_dup_56.$$p, $yield = $iter || nil, copy = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Module_dup_56.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n copy = $send(self, Opal.find_super_dispatcher(self, 'dup', TMP_Module_dup_56, false), $zuper, $iter);\n copy.$copy_class_variables(self);\n copy.$copy_constants(self);\n return copy;\n }, TMP_Module_dup_56.$$arity = 0);\n \n Opal.def(self, '$copy_class_variables', TMP_Module_copy_class_variables_57 = function $$copy_class_variables(other) {\n var self = this;\n\n \n for (var name in other.$$cvars) {\n self.$$cvars[name] = other.$$cvars[name];\n }\n \n }, TMP_Module_copy_class_variables_57.$$arity = 1);\n return (Opal.def(self, '$copy_constants', TMP_Module_copy_constants_58 = function $$copy_constants(other) {\n var self = this;\n\n \n var name, other_constants = other.$$const;\n\n for (name in other_constants) {\n Opal.const_set(self, name, other_constants[name]);\n }\n \n }, TMP_Module_copy_constants_58.$$arity = 1), nil) && 'copy_constants';\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/class\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send;\n\n Opal.add_stubs(['$require', '$initialize_copy', '$allocate', '$name', '$to_s']);\n \n self.$require(\"corelib/module\");\n return (function($base, $super, $parent_nesting) {\n function $Class(){};\n var self = $Class = $klass($base, $super, 'Class', $Class);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Class_new_1, TMP_Class_allocate_2, TMP_Class_inherited_3, TMP_Class_initialize_dup_4, TMP_Class_new_5, TMP_Class_superclass_6, TMP_Class_to_s_7;\n\n \n Opal.defs(self, '$new', TMP_Class_new_1 = function(superclass) {\n var self = this, $iter = TMP_Class_new_1.$$p, block = $iter || nil;\n\n if (superclass == null) {\n superclass = $$($nesting, 'Object');\n }\n if ($iter) TMP_Class_new_1.$$p = null;\n \n if (!superclass.$$is_class) {\n throw Opal.TypeError.$new(\"superclass must be a Class\");\n }\n\n var alloc = Opal.boot_class_alloc(null, function(){}, superclass);\n var klass = Opal.setup_class_object(null, alloc, superclass.$$name, superclass.constructor);\n\n klass.$$super = superclass;\n klass.$$parent = superclass;\n\n superclass.$inherited(klass);\n Opal.module_initialize(klass, block);\n\n return klass;\n \n }, TMP_Class_new_1.$$arity = -1);\n \n Opal.def(self, '$allocate', TMP_Class_allocate_2 = function $$allocate() {\n var self = this;\n\n \n var obj = new self.$$alloc();\n obj.$$id = Opal.uid();\n return obj;\n \n }, TMP_Class_allocate_2.$$arity = 0);\n \n Opal.def(self, '$inherited', TMP_Class_inherited_3 = function $$inherited(cls) {\n var self = this;\n\n return nil\n }, TMP_Class_inherited_3.$$arity = 1);\n \n Opal.def(self, '$initialize_dup', TMP_Class_initialize_dup_4 = function $$initialize_dup(original) {\n var self = this;\n\n \n self.$initialize_copy(original);\n \n self.$$name = null;\n self.$$full_name = null;\n ;\n }, TMP_Class_initialize_dup_4.$$arity = 1);\n \n Opal.def(self, '$new', TMP_Class_new_5 = function($a_rest) {\n var self = this, args, $iter = TMP_Class_new_5.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Class_new_5.$$p = null;\n \n var object = self.$allocate();\n Opal.send(object, object.$initialize, args, block);\n return object;\n \n }, TMP_Class_new_5.$$arity = -1);\n \n Opal.def(self, '$superclass', TMP_Class_superclass_6 = function $$superclass() {\n var self = this;\n\n return self.$$super || nil;\n }, TMP_Class_superclass_6.$$arity = 0);\n return (Opal.def(self, '$to_s', TMP_Class_to_s_7 = function $$to_s() {\n var self = this, $iter = TMP_Class_to_s_7.$$p, $yield = $iter || nil;\n\n if ($iter) TMP_Class_to_s_7.$$p = null;\n \n var singleton_of = self.$$singleton_of;\n\n if (singleton_of && (singleton_of.$$is_class || singleton_of.$$is_module)) {\n return \"\" + \"#<Class:\" + ((singleton_of).$name()) + \">\";\n }\n else if (singleton_of) {\n // a singleton class created from an object\n return \"\" + \"#<Class:#<\" + ((singleton_of.$$class).$name()) + \":0x\" + ((Opal.id(singleton_of)).$to_s(16)) + \">>\";\n }\n return $send(self, Opal.find_super_dispatcher(self, 'to_s', TMP_Class_to_s_7, false), [], null);\n \n }, TMP_Class_to_s_7.$$arity = 0), nil) && 'to_s';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/basic_object\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2, $send = Opal.send;\n\n Opal.add_stubs(['$==', '$!', '$nil?', '$cover?', '$size', '$raise', '$merge', '$compile', '$proc', '$any?', '$inspect', '$new']);\n return (function($base, $super, $parent_nesting) {\n function $BasicObject(){};\n var self = $BasicObject = $klass($base, $super, 'BasicObject', $BasicObject);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BasicObject_initialize_1, TMP_BasicObject_$eq$eq_2, TMP_BasicObject_eql$q_3, TMP_BasicObject___id___4, TMP_BasicObject___send___5, TMP_BasicObject_$B_6, TMP_BasicObject_$B$eq_7, TMP_BasicObject_instance_eval_8, TMP_BasicObject_instance_exec_10, TMP_BasicObject_singleton_method_added_11, TMP_BasicObject_singleton_method_removed_12, TMP_BasicObject_singleton_method_undefined_13, TMP_BasicObject_method_missing_14;\n\n \n \n Opal.def(self, '$initialize', TMP_BasicObject_initialize_1 = function $$initialize($a_rest) {\n var self = this;\n\n return nil\n }, TMP_BasicObject_initialize_1.$$arity = -1);\n \n Opal.def(self, '$==', TMP_BasicObject_$eq$eq_2 = function(other) {\n var self = this;\n\n return self === other;\n }, TMP_BasicObject_$eq$eq_2.$$arity = 1);\n \n Opal.def(self, '$eql?', TMP_BasicObject_eql$q_3 = function(other) {\n var self = this;\n\n return self['$=='](other)\n }, TMP_BasicObject_eql$q_3.$$arity = 1);\n Opal.alias(self, \"equal?\", \"==\");\n \n Opal.def(self, '$__id__', TMP_BasicObject___id___4 = function $$__id__() {\n var self = this;\n\n return self.$$id || (self.$$id = Opal.uid());\n }, TMP_BasicObject___id___4.$$arity = 0);\n \n Opal.def(self, '$__send__', TMP_BasicObject___send___5 = function $$__send__(symbol, $a_rest) {\n var self = this, args, $iter = TMP_BasicObject___send___5.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }\n if ($iter) TMP_BasicObject___send___5.$$p = null;\n \n var func = self['$' + symbol]\n\n if (func) {\n if (block !== nil) {\n func.$$p = block;\n }\n\n return func.apply(self, args);\n }\n\n if (block !== nil) {\n self.$method_missing.$$p = block;\n }\n\n return self.$method_missing.apply(self, [symbol].concat(args));\n \n }, TMP_BasicObject___send___5.$$arity = -2);\n \n Opal.def(self, '$!', TMP_BasicObject_$B_6 = function() {\n var self = this;\n\n return false\n }, TMP_BasicObject_$B_6.$$arity = 0);\n \n Opal.def(self, '$!=', TMP_BasicObject_$B$eq_7 = function(other) {\n var self = this;\n\n return self['$=='](other)['$!']()\n }, TMP_BasicObject_$B$eq_7.$$arity = 1);\n \n Opal.def(self, '$instance_eval', TMP_BasicObject_instance_eval_8 = function $$instance_eval($a_rest) {\n var $b, TMP_9, self = this, args, $iter = TMP_BasicObject_instance_eval_8.$$p, block = $iter || nil, string = nil, file = nil, _lineno = nil, default_eval_options = nil, compiling_options = nil, compiled = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_BasicObject_instance_eval_8.$$p = null;\n \n if ($truthy(($truthy($b = block['$nil?']()) ? !!Opal.compile : $b))) {\n \n if ($truthy($range(1, 3, false)['$cover?'](args.$size()))) {\n } else {\n $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), \"wrong number of arguments (0 for 1..3)\")\n };\n $b = [].concat(Opal.to_a(args)), (string = ($b[0] == null ? nil : $b[0])), (file = ($b[1] == null ? nil : $b[1])), (_lineno = ($b[2] == null ? nil : $b[2])), $b;\n default_eval_options = $hash2([\"file\", \"eval\"], {\"file\": ($truthy($b = file) ? $b : \"(eval)\"), \"eval\": true});\n compiling_options = Opal.hash({ arity_check: false }).$merge(default_eval_options);\n compiled = $$$('::', 'Opal').$compile(string, compiling_options);\n block = $send($$$('::', 'Kernel'), 'proc', [], (TMP_9 = function(){var self = TMP_9.$$s || this;\n\n \n return (function(self) {\n return eval(compiled);\n })(self)\n }, TMP_9.$$s = self, TMP_9.$$arity = 0, TMP_9));\n } else if ($truthy(args['$any?']())) {\n $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (args.$size()) + \" for 0)\")};\n \n var old = block.$$s,\n result;\n\n block.$$s = null;\n\n // Need to pass $$eval so that method definitions know if this is\n // being done on a class/module. Cannot be compiler driven since\n // send(:instance_eval) needs to work.\n if (self.$$is_class || self.$$is_module) {\n self.$$eval = true;\n try {\n result = block.call(self, self);\n }\n finally {\n self.$$eval = false;\n }\n }\n else {\n result = block.call(self, self);\n }\n\n block.$$s = old;\n\n return result;\n ;\n }, TMP_BasicObject_instance_eval_8.$$arity = -1);\n \n Opal.def(self, '$instance_exec', TMP_BasicObject_instance_exec_10 = function $$instance_exec($a_rest) {\n var self = this, args, $iter = TMP_BasicObject_instance_exec_10.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_BasicObject_instance_exec_10.$$p = null;\n \n if ($truthy(block)) {\n } else {\n $$$('::', 'Kernel').$raise($$$('::', 'ArgumentError'), \"no block given\")\n };\n \n var block_self = block.$$s,\n result;\n\n block.$$s = null;\n\n if (self.$$is_class || self.$$is_module) {\n self.$$eval = true;\n try {\n result = block.apply(self, args);\n }\n finally {\n self.$$eval = false;\n }\n }\n else {\n result = block.apply(self, args);\n }\n\n block.$$s = block_self;\n\n return result;\n ;\n }, TMP_BasicObject_instance_exec_10.$$arity = -1);\n \n Opal.def(self, '$singleton_method_added', TMP_BasicObject_singleton_method_added_11 = function $$singleton_method_added($a_rest) {\n var self = this;\n\n return nil\n }, TMP_BasicObject_singleton_method_added_11.$$arity = -1);\n \n Opal.def(self, '$singleton_method_removed', TMP_BasicObject_singleton_method_removed_12 = function $$singleton_method_removed($a_rest) {\n var self = this;\n\n return nil\n }, TMP_BasicObject_singleton_method_removed_12.$$arity = -1);\n \n Opal.def(self, '$singleton_method_undefined', TMP_BasicObject_singleton_method_undefined_13 = function $$singleton_method_undefined($a_rest) {\n var self = this;\n\n return nil\n }, TMP_BasicObject_singleton_method_undefined_13.$$arity = -1);\n return (Opal.def(self, '$method_missing', TMP_BasicObject_method_missing_14 = function $$method_missing(symbol, $a_rest) {\n var self = this, args, $iter = TMP_BasicObject_method_missing_14.$$p, block = $iter || nil, message = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }\n if ($iter) TMP_BasicObject_method_missing_14.$$p = null;\n \n message = (function() {if ($truthy(self.$inspect && !self.$inspect.$$stub)) {\n return \"\" + \"undefined method `\" + (symbol) + \"' for \" + (self.$inspect()) + \":\" + (self.$$class)\n } else {\n return \"\" + \"undefined method `\" + (symbol) + \"' for \" + (self.$$class)\n }; return nil; })();\n return $$$('::', 'Kernel').$raise($$$('::', 'NoMethodError').$new(message, symbol));\n }, TMP_BasicObject_method_missing_14.$$arity = -2), nil) && 'method_missing';\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/kernel\"] = function(Opal) {\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $gvars = Opal.gvars, $hash2 = Opal.hash2, $send = Opal.send, $klass = Opal.klass;\n\n Opal.add_stubs(['$raise', '$new', '$inspect', '$!', '$=~', '$==', '$object_id', '$class', '$coerce_to?', '$<<', '$allocate', '$copy_instance_variables', '$copy_singleton_methods', '$initialize_clone', '$initialize_copy', '$define_method', '$singleton_class', '$to_proc', '$initialize_dup', '$for', '$empty?', '$pop', '$call', '$append_features', '$extend_object', '$extended', '$length', '$respond_to?', '$[]', '$nil?', '$to_a', '$to_int', '$fetch', '$Integer', '$Float', '$to_ary', '$to_str', '$coerce_to', '$to_s', '$__id__', '$instance_variable_name!', '$coerce_to!', '$===', '$enum_for', '$result', '$any?', '$print', '$format', '$puts', '$each', '$<=', '$exception', '$is_a?', '$rand', '$respond_to_missing?', '$try_convert!', '$expand_path', '$join', '$start_with?', '$srand', '$new_seed', '$sym', '$arg', '$open', '$include']);\n \n (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_method_missing_1, TMP_Kernel_$eq$_2, TMP_Kernel_$B$_3, TMP_Kernel_$eq$eq$eq_4, TMP_Kernel_$lt$eq$gt_5, TMP_Kernel_method_6, TMP_Kernel_methods_7, TMP_Kernel_Array_8, TMP_Kernel_at_exit_9, TMP_Kernel_caller_10, TMP_Kernel_class_11, TMP_Kernel_copy_instance_variables_12, TMP_Kernel_copy_singleton_methods_13, TMP_Kernel_clone_14, TMP_Kernel_initialize_clone_15, TMP_Kernel_define_singleton_method_16, TMP_Kernel_dup_17, TMP_Kernel_initialize_dup_18, TMP_Kernel_enum_for_19, TMP_Kernel_equal$q_20, TMP_Kernel_exit_21, TMP_Kernel_extend_22, TMP_Kernel_format_23, TMP_Kernel_hash_24, TMP_Kernel_initialize_copy_25, TMP_Kernel_inspect_26, TMP_Kernel_instance_of$q_27, TMP_Kernel_instance_variable_defined$q_28, TMP_Kernel_instance_variable_get_29, TMP_Kernel_instance_variable_set_30, TMP_Kernel_remove_instance_variable_31, TMP_Kernel_instance_variables_32, TMP_Kernel_Integer_33, TMP_Kernel_Float_34, TMP_Kernel_Hash_35, TMP_Kernel_is_a$q_36, TMP_Kernel_itself_37, TMP_Kernel_lambda_38, TMP_Kernel_load_39, TMP_Kernel_loop_40, TMP_Kernel_nil$q_42, TMP_Kernel_printf_43, TMP_Kernel_proc_44, TMP_Kernel_puts_45, TMP_Kernel_p_47, TMP_Kernel_print_48, TMP_Kernel_warn_49, TMP_Kernel_raise_50, TMP_Kernel_rand_51, TMP_Kernel_respond_to$q_52, TMP_Kernel_respond_to_missing$q_53, TMP_Kernel_require_54, TMP_Kernel_require_relative_55, TMP_Kernel_require_tree_56, TMP_Kernel_singleton_class_57, TMP_Kernel_sleep_58, TMP_Kernel_srand_59, TMP_Kernel_String_60, TMP_Kernel_tap_61, TMP_Kernel_to_proc_62, TMP_Kernel_to_s_63, TMP_Kernel_catch_64, TMP_Kernel_throw_65, TMP_Kernel_open_66, TMP_Kernel_yield_self_67;\n\n \n \n Opal.def(self, '$method_missing', TMP_Kernel_method_missing_1 = function $$method_missing(symbol, $a_rest) {\n var self = this, args, $iter = TMP_Kernel_method_missing_1.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }\n if ($iter) TMP_Kernel_method_missing_1.$$p = null;\n return self.$raise($$($nesting, 'NoMethodError').$new(\"\" + \"undefined method `\" + (symbol) + \"' for \" + (self.$inspect()), symbol, args))\n }, TMP_Kernel_method_missing_1.$$arity = -2);\n \n Opal.def(self, '$=~', TMP_Kernel_$eq$_2 = function(obj) {\n var self = this;\n\n return false\n }, TMP_Kernel_$eq$_2.$$arity = 1);\n \n Opal.def(self, '$!~', TMP_Kernel_$B$_3 = function(obj) {\n var self = this;\n\n return self['$=~'](obj)['$!']()\n }, TMP_Kernel_$B$_3.$$arity = 1);\n \n Opal.def(self, '$===', TMP_Kernel_$eq$eq$eq_4 = function(other) {\n var $a, self = this;\n\n return ($truthy($a = self.$object_id()['$=='](other.$object_id())) ? $a : self['$=='](other))\n }, TMP_Kernel_$eq$eq$eq_4.$$arity = 1);\n \n Opal.def(self, '$<=>', TMP_Kernel_$lt$eq$gt_5 = function(other) {\n var self = this;\n\n \n // set guard for infinite recursion\n self.$$comparable = true;\n\n var x = self['$=='](other);\n\n if (x && x !== nil) {\n return 0;\n }\n\n return nil;\n \n }, TMP_Kernel_$lt$eq$gt_5.$$arity = 1);\n \n Opal.def(self, '$method', TMP_Kernel_method_6 = function $$method(name) {\n var self = this;\n\n \n var meth = self['$' + name];\n\n if (!meth || meth.$$stub) {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"undefined method `\" + (name) + \"' for class `\" + (self.$class()) + \"'\", name));\n }\n\n return $$($nesting, 'Method').$new(self, meth.$$owner || self.$class(), meth, name);\n \n }, TMP_Kernel_method_6.$$arity = 1);\n \n Opal.def(self, '$methods', TMP_Kernel_methods_7 = function $$methods(all) {\n var self = this;\n\n if (all == null) {\n all = true;\n }\n \n var methods = [];\n\n for (var key in self) {\n if (key[0] == \"$\" && typeof(self[key]) === \"function\") {\n if (all == false || all === nil) {\n if (!Opal.hasOwnProperty.call(self, key)) {\n continue;\n }\n }\n if (self[key].$$stub === undefined) {\n methods.push(key.substr(1));\n }\n }\n }\n\n return methods;\n \n }, TMP_Kernel_methods_7.$$arity = -1);\n Opal.alias(self, \"public_methods\", \"methods\");\n \n Opal.def(self, '$Array', TMP_Kernel_Array_8 = function $$Array(object) {\n var self = this;\n\n \n var coerced;\n\n if (object === nil) {\n return [];\n }\n\n if (object.$$is_array) {\n return object;\n }\n\n coerced = $$($nesting, 'Opal')['$coerce_to?'](object, $$($nesting, 'Array'), \"to_ary\");\n if (coerced !== nil) { return coerced; }\n\n coerced = $$($nesting, 'Opal')['$coerce_to?'](object, $$($nesting, 'Array'), \"to_a\");\n if (coerced !== nil) { return coerced; }\n\n return [object];\n \n }, TMP_Kernel_Array_8.$$arity = 1);\n \n Opal.def(self, '$at_exit', TMP_Kernel_at_exit_9 = function $$at_exit() {\n var $a, self = this, $iter = TMP_Kernel_at_exit_9.$$p, block = $iter || nil;\n if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil;\n\n if ($iter) TMP_Kernel_at_exit_9.$$p = null;\n \n $gvars.__at_exit__ = ($truthy($a = $gvars.__at_exit__) ? $a : []);\n return $gvars.__at_exit__['$<<'](block);\n }, TMP_Kernel_at_exit_9.$$arity = 0);\n \n Opal.def(self, '$caller', TMP_Kernel_caller_10 = function $$caller($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return []\n }, TMP_Kernel_caller_10.$$arity = -1);\n \n Opal.def(self, '$class', TMP_Kernel_class_11 = function() {\n var self = this;\n\n return self.$$class;\n }, TMP_Kernel_class_11.$$arity = 0);\n \n Opal.def(self, '$copy_instance_variables', TMP_Kernel_copy_instance_variables_12 = function $$copy_instance_variables(other) {\n var self = this;\n\n \n var keys = Object.keys(other), i, ii, name;\n for (i = 0, ii = keys.length; i < ii; i++) {\n name = keys[i];\n if (name.charAt(0) !== '$' && other.hasOwnProperty(name)) {\n self[name] = other[name];\n }\n }\n \n }, TMP_Kernel_copy_instance_variables_12.$$arity = 1);\n \n Opal.def(self, '$copy_singleton_methods', TMP_Kernel_copy_singleton_methods_13 = function $$copy_singleton_methods(other) {\n var self = this;\n\n \n var name;\n\n if (other.hasOwnProperty('$$meta')) {\n var other_singleton_class_proto = Opal.get_singleton_class(other).$$proto;\n var self_singleton_class_proto = Opal.get_singleton_class(self).$$proto;\n\n for (name in other_singleton_class_proto) {\n if (name.charAt(0) === '$' && other_singleton_class_proto.hasOwnProperty(name)) {\n self_singleton_class_proto[name] = other_singleton_class_proto[name];\n }\n }\n }\n\n for (name in other) {\n if (name.charAt(0) === '$' && name.charAt(1) !== '$' && other.hasOwnProperty(name)) {\n self[name] = other[name];\n }\n }\n \n }, TMP_Kernel_copy_singleton_methods_13.$$arity = 1);\n \n Opal.def(self, '$clone', TMP_Kernel_clone_14 = function $$clone($kwargs) {\n var self = this, freeze, copy = nil;\n\n if ($kwargs == null || !$kwargs.$$is_hash) {\n if ($kwargs == null) {\n $kwargs = $hash2([], {});\n } else {\n throw Opal.ArgumentError.$new('expected kwargs');\n }\n }\n freeze = $kwargs.$$smap[\"freeze\"];\n if (freeze == null) {\n freeze = true\n }\n \n copy = self.$class().$allocate();\n copy.$copy_instance_variables(self);\n copy.$copy_singleton_methods(self);\n copy.$initialize_clone(self);\n return copy;\n }, TMP_Kernel_clone_14.$$arity = -1);\n \n Opal.def(self, '$initialize_clone', TMP_Kernel_initialize_clone_15 = function $$initialize_clone(other) {\n var self = this;\n\n return self.$initialize_copy(other)\n }, TMP_Kernel_initialize_clone_15.$$arity = 1);\n \n Opal.def(self, '$define_singleton_method', TMP_Kernel_define_singleton_method_16 = function $$define_singleton_method(name, method) {\n var self = this, $iter = TMP_Kernel_define_singleton_method_16.$$p, block = $iter || nil;\n\n if ($iter) TMP_Kernel_define_singleton_method_16.$$p = null;\n return $send(self.$singleton_class(), 'define_method', [name, method], block.$to_proc())\n }, TMP_Kernel_define_singleton_method_16.$$arity = -2);\n \n Opal.def(self, '$dup', TMP_Kernel_dup_17 = function $$dup() {\n var self = this, copy = nil;\n\n \n copy = self.$class().$allocate();\n copy.$copy_instance_variables(self);\n copy.$initialize_dup(self);\n return copy;\n }, TMP_Kernel_dup_17.$$arity = 0);\n \n Opal.def(self, '$initialize_dup', TMP_Kernel_initialize_dup_18 = function $$initialize_dup(other) {\n var self = this;\n\n return self.$initialize_copy(other)\n }, TMP_Kernel_initialize_dup_18.$$arity = 1);\n \n Opal.def(self, '$enum_for', TMP_Kernel_enum_for_19 = function $$enum_for(method, $a_rest) {\n var self = this, args, $iter = TMP_Kernel_enum_for_19.$$p, block = $iter || nil;\n\n if (method == null) {\n method = \"each\";\n }\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }\n if ($iter) TMP_Kernel_enum_for_19.$$p = null;\n return $send($$($nesting, 'Enumerator'), 'for', [self, method].concat(Opal.to_a(args)), block.$to_proc())\n }, TMP_Kernel_enum_for_19.$$arity = -1);\n Opal.alias(self, \"to_enum\", \"enum_for\");\n \n Opal.def(self, '$equal?', TMP_Kernel_equal$q_20 = function(other) {\n var self = this;\n\n return self === other;\n }, TMP_Kernel_equal$q_20.$$arity = 1);\n \n Opal.def(self, '$exit', TMP_Kernel_exit_21 = function $$exit(status) {\n var $a, self = this, block = nil;\n if ($gvars.__at_exit__ == null) $gvars.__at_exit__ = nil;\n\n if (status == null) {\n status = true;\n }\n \n $gvars.__at_exit__ = ($truthy($a = $gvars.__at_exit__) ? $a : []);\n while (!($truthy($gvars.__at_exit__['$empty?']()))) {\n \n block = $gvars.__at_exit__.$pop();\n block.$call();\n };\n \n if (status == null) {\n status = 0\n } else if (status.$$is_boolean) {\n status = status ? 0 : 1;\n } else if (status.$$is_numeric) {\n status = status.$to_i();\n } else {\n status = 0\n }\n\n Opal.exit(status);\n ;\n return nil;\n }, TMP_Kernel_exit_21.$$arity = -1);\n \n Opal.def(self, '$extend', TMP_Kernel_extend_22 = function $$extend($a_rest) {\n var self = this, mods;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n mods = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n mods[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n var singleton = self.$singleton_class();\n\n for (var i = mods.length - 1; i >= 0; i--) {\n var mod = mods[i];\n\n if (!mod.$$is_module) {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"wrong argument type \" + ((mod).$class()) + \" (expected Module)\");\n }\n\n (mod).$append_features(singleton);\n (mod).$extend_object(self);\n (mod).$extended(self);\n }\n ;\n return self;\n }, TMP_Kernel_extend_22.$$arity = -1);\n \n Opal.def(self, '$format', TMP_Kernel_format_23 = function $$format(format_string, $a_rest) {\n var $b, self = this, args, ary = nil;\n if ($gvars.DEBUG == null) $gvars.DEBUG = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }\n \n if ($truthy((($b = args.$length()['$=='](1)) ? args['$[]'](0)['$respond_to?'](\"to_ary\") : args.$length()['$=='](1)))) {\n \n ary = $$($nesting, 'Opal')['$coerce_to?'](args['$[]'](0), $$($nesting, 'Array'), \"to_ary\");\n if ($truthy(ary['$nil?']())) {\n } else {\n args = ary.$to_a()\n };};\n \n var result = '',\n //used for slicing:\n begin_slice = 0,\n end_slice,\n //used for iterating over the format string:\n i,\n len = format_string.length,\n //used for processing field values:\n arg,\n str,\n //used for processing %g and %G fields:\n exponent,\n //used for keeping track of width and precision:\n width,\n precision,\n //used for holding temporary values:\n tmp_num,\n //used for processing %{} and %<> fileds:\n hash_parameter_key,\n closing_brace_char,\n //used for processing %b, %B, %o, %x, and %X fields:\n base_number,\n base_prefix,\n base_neg_zero_regex,\n base_neg_zero_digit,\n //used for processing arguments:\n next_arg,\n seq_arg_num = 1,\n pos_arg_num = 0,\n //used for keeping track of flags:\n flags,\n FNONE = 0,\n FSHARP = 1,\n FMINUS = 2,\n FPLUS = 4,\n FZERO = 8,\n FSPACE = 16,\n FWIDTH = 32,\n FPREC = 64,\n FPREC0 = 128;\n\n function CHECK_FOR_FLAGS() {\n if (flags&FWIDTH) { self.$raise($$($nesting, 'ArgumentError'), \"flag after width\") }\n if (flags&FPREC0) { self.$raise($$($nesting, 'ArgumentError'), \"flag after precision\") }\n }\n\n function CHECK_FOR_WIDTH() {\n if (flags&FWIDTH) { self.$raise($$($nesting, 'ArgumentError'), \"width given twice\") }\n if (flags&FPREC0) { self.$raise($$($nesting, 'ArgumentError'), \"width after precision\") }\n }\n\n function GET_NTH_ARG(num) {\n if (num >= args.length) { self.$raise($$($nesting, 'ArgumentError'), \"too few arguments\") }\n return args[num];\n }\n\n function GET_NEXT_ARG() {\n switch (pos_arg_num) {\n case -1: self.$raise($$($nesting, 'ArgumentError'), \"\" + \"unnumbered(\" + (seq_arg_num) + \") mixed with numbered\")\n case -2: self.$raise($$($nesting, 'ArgumentError'), \"\" + \"unnumbered(\" + (seq_arg_num) + \") mixed with named\")\n }\n pos_arg_num = seq_arg_num++;\n return GET_NTH_ARG(pos_arg_num - 1);\n }\n\n function GET_POS_ARG(num) {\n if (pos_arg_num > 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"numbered(\" + (num) + \") after unnumbered(\" + (pos_arg_num) + \")\")\n }\n if (pos_arg_num === -2) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"numbered(\" + (num) + \") after named\")\n }\n if (num < 1) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid index - \" + (num) + \"$\")\n }\n pos_arg_num = -1;\n return GET_NTH_ARG(num - 1);\n }\n\n function GET_ARG() {\n return (next_arg === undefined ? GET_NEXT_ARG() : next_arg);\n }\n\n function READ_NUM(label) {\n var num, str = '';\n for (;; i++) {\n if (i === len) {\n self.$raise($$($nesting, 'ArgumentError'), \"malformed format string - %*[0-9]\")\n }\n if (format_string.charCodeAt(i) < 48 || format_string.charCodeAt(i) > 57) {\n i--;\n num = parseInt(str, 10) || 0;\n if (num > 2147483647) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + (label) + \" too big\")\n }\n return num;\n }\n str += format_string.charAt(i);\n }\n }\n\n function READ_NUM_AFTER_ASTER(label) {\n var arg, num = READ_NUM(label);\n if (format_string.charAt(i + 1) === '$') {\n i++;\n arg = GET_POS_ARG(num);\n } else {\n arg = GET_NEXT_ARG();\n }\n return (arg).$to_int();\n }\n\n for (i = format_string.indexOf('%'); i !== -1; i = format_string.indexOf('%', i)) {\n str = undefined;\n\n flags = FNONE;\n width = -1;\n precision = -1;\n next_arg = undefined;\n\n end_slice = i;\n\n i++;\n\n switch (format_string.charAt(i)) {\n case '%':\n begin_slice = i;\n case '':\n case '\\n':\n case '\\0':\n i++;\n continue;\n }\n\n format_sequence: for (; i < len; i++) {\n switch (format_string.charAt(i)) {\n\n case ' ':\n CHECK_FOR_FLAGS();\n flags |= FSPACE;\n continue format_sequence;\n\n case '#':\n CHECK_FOR_FLAGS();\n flags |= FSHARP;\n continue format_sequence;\n\n case '+':\n CHECK_FOR_FLAGS();\n flags |= FPLUS;\n continue format_sequence;\n\n case '-':\n CHECK_FOR_FLAGS();\n flags |= FMINUS;\n continue format_sequence;\n\n case '0':\n CHECK_FOR_FLAGS();\n flags |= FZERO;\n continue format_sequence;\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n tmp_num = READ_NUM('width');\n if (format_string.charAt(i + 1) === '$') {\n if (i + 2 === len) {\n str = '%';\n i++;\n break format_sequence;\n }\n if (next_arg !== undefined) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"value given twice - %\" + (tmp_num) + \"$\")\n }\n next_arg = GET_POS_ARG(tmp_num);\n i++;\n } else {\n CHECK_FOR_WIDTH();\n flags |= FWIDTH;\n width = tmp_num;\n }\n continue format_sequence;\n\n case '<':\n case '\\{':\n closing_brace_char = (format_string.charAt(i) === '<' ? '>' : '\\}');\n hash_parameter_key = '';\n\n i++;\n\n for (;; i++) {\n if (i === len) {\n self.$raise($$($nesting, 'ArgumentError'), \"malformed name - unmatched parenthesis\")\n }\n if (format_string.charAt(i) === closing_brace_char) {\n\n if (pos_arg_num > 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"named \" + (hash_parameter_key) + \" after unnumbered(\" + (pos_arg_num) + \")\")\n }\n if (pos_arg_num === -1) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"named \" + (hash_parameter_key) + \" after numbered\")\n }\n pos_arg_num = -2;\n\n if (args[0] === undefined || !args[0].$$is_hash) {\n self.$raise($$($nesting, 'ArgumentError'), \"one hash required\")\n }\n\n next_arg = (args[0]).$fetch(hash_parameter_key);\n\n if (closing_brace_char === '>') {\n continue format_sequence;\n } else {\n str = next_arg.toString();\n if (precision !== -1) { str = str.slice(0, precision); }\n if (flags&FMINUS) {\n while (str.length < width) { str = str + ' '; }\n } else {\n while (str.length < width) { str = ' ' + str; }\n }\n break format_sequence;\n }\n }\n hash_parameter_key += format_string.charAt(i);\n }\n\n case '*':\n i++;\n CHECK_FOR_WIDTH();\n flags |= FWIDTH;\n width = READ_NUM_AFTER_ASTER('width');\n if (width < 0) {\n flags |= FMINUS;\n width = -width;\n }\n continue format_sequence;\n\n case '.':\n if (flags&FPREC0) {\n self.$raise($$($nesting, 'ArgumentError'), \"precision given twice\")\n }\n flags |= FPREC|FPREC0;\n precision = 0;\n i++;\n if (format_string.charAt(i) === '*') {\n i++;\n precision = READ_NUM_AFTER_ASTER('precision');\n if (precision < 0) {\n flags &= ~FPREC;\n }\n continue format_sequence;\n }\n precision = READ_NUM('precision');\n continue format_sequence;\n\n case 'd':\n case 'i':\n case 'u':\n arg = self.$Integer(GET_ARG());\n if (arg >= 0) {\n str = arg.toString();\n while (str.length < precision) { str = '0' + str; }\n if (flags&FMINUS) {\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n while (str.length < width) { str = str + ' '; }\n } else {\n if (flags&FZERO && precision === -1) {\n while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; }\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n } else {\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n while (str.length < width) { str = ' ' + str; }\n }\n }\n } else {\n str = (-arg).toString();\n while (str.length < precision) { str = '0' + str; }\n if (flags&FMINUS) {\n str = '-' + str;\n while (str.length < width) { str = str + ' '; }\n } else {\n if (flags&FZERO && precision === -1) {\n while (str.length < width - 1) { str = '0' + str; }\n str = '-' + str;\n } else {\n str = '-' + str;\n while (str.length < width) { str = ' ' + str; }\n }\n }\n }\n break format_sequence;\n\n case 'b':\n case 'B':\n case 'o':\n case 'x':\n case 'X':\n switch (format_string.charAt(i)) {\n case 'b':\n case 'B':\n base_number = 2;\n base_prefix = '0b';\n base_neg_zero_regex = /^1+/;\n base_neg_zero_digit = '1';\n break;\n case 'o':\n base_number = 8;\n base_prefix = '0';\n base_neg_zero_regex = /^3?7+/;\n base_neg_zero_digit = '7';\n break;\n case 'x':\n case 'X':\n base_number = 16;\n base_prefix = '0x';\n base_neg_zero_regex = /^f+/;\n base_neg_zero_digit = 'f';\n break;\n }\n arg = self.$Integer(GET_ARG());\n if (arg >= 0) {\n str = arg.toString(base_number);\n while (str.length < precision) { str = '0' + str; }\n if (flags&FMINUS) {\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n if (flags&FSHARP && arg !== 0) { str = base_prefix + str; }\n while (str.length < width) { str = str + ' '; }\n } else {\n if (flags&FZERO && precision === -1) {\n while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0) - ((flags&FSHARP && arg !== 0) ? base_prefix.length : 0)) { str = '0' + str; }\n if (flags&FSHARP && arg !== 0) { str = base_prefix + str; }\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n } else {\n if (flags&FSHARP && arg !== 0) { str = base_prefix + str; }\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n while (str.length < width) { str = ' ' + str; }\n }\n }\n } else {\n if (flags&FPLUS || flags&FSPACE) {\n str = (-arg).toString(base_number);\n while (str.length < precision) { str = '0' + str; }\n if (flags&FMINUS) {\n if (flags&FSHARP) { str = base_prefix + str; }\n str = '-' + str;\n while (str.length < width) { str = str + ' '; }\n } else {\n if (flags&FZERO && precision === -1) {\n while (str.length < width - 1 - (flags&FSHARP ? 2 : 0)) { str = '0' + str; }\n if (flags&FSHARP) { str = base_prefix + str; }\n str = '-' + str;\n } else {\n if (flags&FSHARP) { str = base_prefix + str; }\n str = '-' + str;\n while (str.length < width) { str = ' ' + str; }\n }\n }\n } else {\n str = (arg >>> 0).toString(base_number).replace(base_neg_zero_regex, base_neg_zero_digit);\n while (str.length < precision - 2) { str = base_neg_zero_digit + str; }\n if (flags&FMINUS) {\n str = '..' + str;\n if (flags&FSHARP) { str = base_prefix + str; }\n while (str.length < width) { str = str + ' '; }\n } else {\n if (flags&FZERO && precision === -1) {\n while (str.length < width - 2 - (flags&FSHARP ? base_prefix.length : 0)) { str = base_neg_zero_digit + str; }\n str = '..' + str;\n if (flags&FSHARP) { str = base_prefix + str; }\n } else {\n str = '..' + str;\n if (flags&FSHARP) { str = base_prefix + str; }\n while (str.length < width) { str = ' ' + str; }\n }\n }\n }\n }\n if (format_string.charAt(i) === format_string.charAt(i).toUpperCase()) {\n str = str.toUpperCase();\n }\n break format_sequence;\n\n case 'f':\n case 'e':\n case 'E':\n case 'g':\n case 'G':\n arg = self.$Float(GET_ARG());\n if (arg >= 0 || isNaN(arg)) {\n if (arg === Infinity) {\n str = 'Inf';\n } else {\n switch (format_string.charAt(i)) {\n case 'f':\n str = arg.toFixed(precision === -1 ? 6 : precision);\n break;\n case 'e':\n case 'E':\n str = arg.toExponential(precision === -1 ? 6 : precision);\n break;\n case 'g':\n case 'G':\n str = arg.toExponential();\n exponent = parseInt(str.split('e')[1], 10);\n if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) {\n str = arg.toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision);\n }\n break;\n }\n }\n if (flags&FMINUS) {\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n while (str.length < width) { str = str + ' '; }\n } else {\n if (flags&FZERO && arg !== Infinity && !isNaN(arg)) {\n while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; }\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n } else {\n if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }\n while (str.length < width) { str = ' ' + str; }\n }\n }\n } else {\n if (arg === -Infinity) {\n str = 'Inf';\n } else {\n switch (format_string.charAt(i)) {\n case 'f':\n str = (-arg).toFixed(precision === -1 ? 6 : precision);\n break;\n case 'e':\n case 'E':\n str = (-arg).toExponential(precision === -1 ? 6 : precision);\n break;\n case 'g':\n case 'G':\n str = (-arg).toExponential();\n exponent = parseInt(str.split('e')[1], 10);\n if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) {\n str = (-arg).toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision);\n }\n break;\n }\n }\n if (flags&FMINUS) {\n str = '-' + str;\n while (str.length < width) { str = str + ' '; }\n } else {\n if (flags&FZERO && arg !== -Infinity) {\n while (str.length < width - 1) { str = '0' + str; }\n str = '-' + str;\n } else {\n str = '-' + str;\n while (str.length < width) { str = ' ' + str; }\n }\n }\n }\n if (format_string.charAt(i) === format_string.charAt(i).toUpperCase() && arg !== Infinity && arg !== -Infinity && !isNaN(arg)) {\n str = str.toUpperCase();\n }\n str = str.replace(/([eE][-+]?)([0-9])$/, '$10$2');\n break format_sequence;\n\n case 'a':\n case 'A':\n // Not implemented because there are no specs for this field type.\n self.$raise($$($nesting, 'NotImplementedError'), \"`A` and `a` format field types are not implemented in Opal yet\")\n\n case 'c':\n arg = GET_ARG();\n if ((arg)['$respond_to?'](\"to_ary\")) { arg = (arg).$to_ary()[0]; }\n if ((arg)['$respond_to?'](\"to_str\")) {\n str = (arg).$to_str();\n } else {\n str = String.fromCharCode($$($nesting, 'Opal').$coerce_to(arg, $$($nesting, 'Integer'), \"to_int\"));\n }\n if (str.length !== 1) {\n self.$raise($$($nesting, 'ArgumentError'), \"%c requires a character\")\n }\n if (flags&FMINUS) {\n while (str.length < width) { str = str + ' '; }\n } else {\n while (str.length < width) { str = ' ' + str; }\n }\n break format_sequence;\n\n case 'p':\n str = (GET_ARG()).$inspect();\n if (precision !== -1) { str = str.slice(0, precision); }\n if (flags&FMINUS) {\n while (str.length < width) { str = str + ' '; }\n } else {\n while (str.length < width) { str = ' ' + str; }\n }\n break format_sequence;\n\n case 's':\n str = (GET_ARG()).$to_s();\n if (precision !== -1) { str = str.slice(0, precision); }\n if (flags&FMINUS) {\n while (str.length < width) { str = str + ' '; }\n } else {\n while (str.length < width) { str = ' ' + str; }\n }\n break format_sequence;\n\n default:\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"malformed format string - %\" + (format_string.charAt(i)))\n }\n }\n\n if (str === undefined) {\n self.$raise($$($nesting, 'ArgumentError'), \"malformed format string - %\")\n }\n\n result += format_string.slice(begin_slice, end_slice) + str;\n begin_slice = i + 1;\n }\n\n if ($gvars.DEBUG && pos_arg_num >= 0 && seq_arg_num < args.length) {\n self.$raise($$($nesting, 'ArgumentError'), \"too many arguments for format string\")\n }\n\n return result + format_string.slice(begin_slice);\n ;\n }, TMP_Kernel_format_23.$$arity = -2);\n \n Opal.def(self, '$hash', TMP_Kernel_hash_24 = function $$hash() {\n var self = this;\n\n return self.$__id__()\n }, TMP_Kernel_hash_24.$$arity = 0);\n \n Opal.def(self, '$initialize_copy', TMP_Kernel_initialize_copy_25 = function $$initialize_copy(other) {\n var self = this;\n\n return nil\n }, TMP_Kernel_initialize_copy_25.$$arity = 1);\n \n Opal.def(self, '$inspect', TMP_Kernel_inspect_26 = function $$inspect() {\n var self = this;\n\n return self.$to_s()\n }, TMP_Kernel_inspect_26.$$arity = 0);\n \n Opal.def(self, '$instance_of?', TMP_Kernel_instance_of$q_27 = function(klass) {\n var self = this;\n\n \n if (!klass.$$is_class && !klass.$$is_module) {\n self.$raise($$($nesting, 'TypeError'), \"class or module required\");\n }\n\n return self.$$class === klass;\n \n }, TMP_Kernel_instance_of$q_27.$$arity = 1);\n \n Opal.def(self, '$instance_variable_defined?', TMP_Kernel_instance_variable_defined$q_28 = function(name) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$instance_variable_name!'](name);\n return Opal.hasOwnProperty.call(self, name.substr(1));;\n }, TMP_Kernel_instance_variable_defined$q_28.$$arity = 1);\n \n Opal.def(self, '$instance_variable_get', TMP_Kernel_instance_variable_get_29 = function $$instance_variable_get(name) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$instance_variable_name!'](name);\n \n var ivar = self[Opal.ivar(name.substr(1))];\n\n return ivar == null ? nil : ivar;\n ;\n }, TMP_Kernel_instance_variable_get_29.$$arity = 1);\n \n Opal.def(self, '$instance_variable_set', TMP_Kernel_instance_variable_set_30 = function $$instance_variable_set(name, value) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$instance_variable_name!'](name);\n return self[Opal.ivar(name.substr(1))] = value;;\n }, TMP_Kernel_instance_variable_set_30.$$arity = 2);\n \n Opal.def(self, '$remove_instance_variable', TMP_Kernel_remove_instance_variable_31 = function $$remove_instance_variable(name) {\n var self = this;\n\n \n name = $$($nesting, 'Opal')['$instance_variable_name!'](name);\n \n var key = Opal.ivar(name.substr(1)),\n val;\n if (self.hasOwnProperty(key)) {\n val = self[key];\n delete self[key];\n return val;\n }\n ;\n return self.$raise($$($nesting, 'NameError'), \"\" + \"instance variable \" + (name) + \" not defined\");\n }, TMP_Kernel_remove_instance_variable_31.$$arity = 1);\n \n Opal.def(self, '$instance_variables', TMP_Kernel_instance_variables_32 = function $$instance_variables() {\n var self = this;\n\n \n var result = [], ivar;\n\n for (var name in self) {\n if (self.hasOwnProperty(name) && name.charAt(0) !== '$') {\n if (name.substr(-1) === '$') {\n ivar = name.slice(0, name.length - 1);\n } else {\n ivar = name;\n }\n result.push('@' + ivar);\n }\n }\n\n return result;\n \n }, TMP_Kernel_instance_variables_32.$$arity = 0);\n \n Opal.def(self, '$Integer', TMP_Kernel_Integer_33 = function $$Integer(value, base) {\n var self = this;\n\n \n var i, str, base_digits;\n\n if (!value.$$is_string) {\n if (base !== undefined) {\n self.$raise($$($nesting, 'ArgumentError'), \"base specified for non string value\")\n }\n if (value === nil) {\n self.$raise($$($nesting, 'TypeError'), \"can't convert nil into Integer\")\n }\n if (value.$$is_number) {\n if (value === Infinity || value === -Infinity || isNaN(value)) {\n self.$raise($$($nesting, 'FloatDomainError'), value)\n }\n return Math.floor(value);\n }\n if (value['$respond_to?'](\"to_int\")) {\n i = value.$to_int();\n if (i !== nil) {\n return i;\n }\n }\n return $$($nesting, 'Opal')['$coerce_to!'](value, $$($nesting, 'Integer'), \"to_i\");\n }\n\n if (value === \"0\") {\n return 0;\n }\n\n if (base === undefined) {\n base = 0;\n } else {\n base = $$($nesting, 'Opal').$coerce_to(base, $$($nesting, 'Integer'), \"to_int\");\n if (base === 1 || base < 0 || base > 36) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid radix \" + (base))\n }\n }\n\n str = value.toLowerCase();\n\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\n\n str = str.replace(/^(\\s*[+-]?)(0[bodx]?)/, function (_, head, flag) {\n switch (flag) {\n case '0b':\n if (base === 0 || base === 2) {\n base = 2;\n return head;\n }\n case '0':\n case '0o':\n if (base === 0 || base === 8) {\n base = 8;\n return head;\n }\n case '0d':\n if (base === 0 || base === 10) {\n base = 10;\n return head;\n }\n case '0x':\n if (base === 0 || base === 16) {\n base = 16;\n return head;\n }\n }\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid value for Integer(): \\\"\" + (value) + \"\\\"\")\n });\n\n base = (base === 0 ? 10 : base);\n\n base_digits = '0-' + (base <= 10 ? base - 1 : '9a-' + String.fromCharCode(97 + (base - 11)));\n\n if (!(new RegExp('^\\\\s*[+-]?[' + base_digits + ']+\\\\s*$')).test(str)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid value for Integer(): \\\"\" + (value) + \"\\\"\")\n }\n\n i = parseInt(str, base);\n\n if (isNaN(i)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid value for Integer(): \\\"\" + (value) + \"\\\"\")\n }\n\n return i;\n \n }, TMP_Kernel_Integer_33.$$arity = -2);\n \n Opal.def(self, '$Float', TMP_Kernel_Float_34 = function $$Float(value) {\n var self = this;\n\n \n var str;\n\n if (value === nil) {\n self.$raise($$($nesting, 'TypeError'), \"can't convert nil into Float\")\n }\n\n if (value.$$is_string) {\n str = value.toString();\n\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\n\n //Special case for hex strings only:\n if (/^\\s*[-+]?0[xX][0-9a-fA-F]+\\s*$/.test(str)) {\n return self.$Integer(str);\n }\n\n if (!/^\\s*[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?\\s*$/.test(str)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid value for Float(): \\\"\" + (value) + \"\\\"\")\n }\n\n return parseFloat(str);\n }\n\n return $$($nesting, 'Opal')['$coerce_to!'](value, $$($nesting, 'Float'), \"to_f\");\n \n }, TMP_Kernel_Float_34.$$arity = 1);\n \n Opal.def(self, '$Hash', TMP_Kernel_Hash_35 = function $$Hash(arg) {\n var $a, self = this;\n\n \n if ($truthy(($truthy($a = arg['$nil?']()) ? $a : arg['$==']([])))) {\n return $hash2([], {})};\n if ($truthy($$($nesting, 'Hash')['$==='](arg))) {\n return arg};\n return $$($nesting, 'Opal')['$coerce_to!'](arg, $$($nesting, 'Hash'), \"to_hash\");\n }, TMP_Kernel_Hash_35.$$arity = 1);\n \n Opal.def(self, '$is_a?', TMP_Kernel_is_a$q_36 = function(klass) {\n var self = this;\n\n \n if (!klass.$$is_class && !klass.$$is_module) {\n self.$raise($$($nesting, 'TypeError'), \"class or module required\");\n }\n\n return Opal.is_a(self, klass);\n \n }, TMP_Kernel_is_a$q_36.$$arity = 1);\n \n Opal.def(self, '$itself', TMP_Kernel_itself_37 = function $$itself() {\n var self = this;\n\n return self\n }, TMP_Kernel_itself_37.$$arity = 0);\n Opal.alias(self, \"kind_of?\", \"is_a?\");\n \n Opal.def(self, '$lambda', TMP_Kernel_lambda_38 = function $$lambda() {\n var self = this, $iter = TMP_Kernel_lambda_38.$$p, block = $iter || nil;\n\n if ($iter) TMP_Kernel_lambda_38.$$p = null;\n return Opal.lambda(block);\n }, TMP_Kernel_lambda_38.$$arity = 0);\n \n Opal.def(self, '$load', TMP_Kernel_load_39 = function $$load(file) {\n var self = this;\n\n \n file = $$($nesting, 'Opal')['$coerce_to!'](file, $$($nesting, 'String'), \"to_str\");\n return Opal.load(file);\n }, TMP_Kernel_load_39.$$arity = 1);\n \n Opal.def(self, '$loop', TMP_Kernel_loop_40 = function $$loop() {\n var TMP_41, $a, self = this, $iter = TMP_Kernel_loop_40.$$p, $yield = $iter || nil, e = nil;\n\n if ($iter) TMP_Kernel_loop_40.$$p = null;\n \n if (($yield !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"loop\"], (TMP_41 = function(){var self = TMP_41.$$s || this;\n\n return $$$($$($nesting, 'Float'), 'INFINITY')}, TMP_41.$$s = self, TMP_41.$$arity = 0, TMP_41))\n };\n while ($truthy(true)) {\n \n try {\n Opal.yieldX($yield, [])\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StopIteration')])) {e = $err;\n try {\n return e.$result()\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };\n };\n return self;\n }, TMP_Kernel_loop_40.$$arity = 0);\n \n Opal.def(self, '$nil?', TMP_Kernel_nil$q_42 = function() {\n var self = this;\n\n return false\n }, TMP_Kernel_nil$q_42.$$arity = 0);\n Opal.alias(self, \"object_id\", \"__id__\");\n \n Opal.def(self, '$printf', TMP_Kernel_printf_43 = function $$printf($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if ($truthy(args['$any?']())) {\n self.$print($send(self, 'format', Opal.to_a(args)))};\n return nil;\n }, TMP_Kernel_printf_43.$$arity = -1);\n \n Opal.def(self, '$proc', TMP_Kernel_proc_44 = function $$proc() {\n var self = this, $iter = TMP_Kernel_proc_44.$$p, block = $iter || nil;\n\n if ($iter) TMP_Kernel_proc_44.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to create Proc object without a block\")\n };\n block.$$is_lambda = false;\n return block;\n }, TMP_Kernel_proc_44.$$arity = 0);\n \n Opal.def(self, '$puts', TMP_Kernel_puts_45 = function $$puts($a_rest) {\n var self = this, strs;\n if ($gvars.stdout == null) $gvars.stdout = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n strs = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n strs[$arg_idx - 0] = arguments[$arg_idx];\n }\n return $send($gvars.stdout, 'puts', Opal.to_a(strs))\n }, TMP_Kernel_puts_45.$$arity = -1);\n \n Opal.def(self, '$p', TMP_Kernel_p_47 = function $$p($a_rest) {\n var TMP_46, self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n $send(args, 'each', [], (TMP_46 = function(obj){var self = TMP_46.$$s || this;\n if ($gvars.stdout == null) $gvars.stdout = nil;\nif (obj == null) obj = nil;\n return $gvars.stdout.$puts(obj.$inspect())}, TMP_46.$$s = self, TMP_46.$$arity = 1, TMP_46));\n if ($truthy($rb_le(args.$length(), 1))) {\n return args['$[]'](0)\n } else {\n return args\n };\n }, TMP_Kernel_p_47.$$arity = -1);\n \n Opal.def(self, '$print', TMP_Kernel_print_48 = function $$print($a_rest) {\n var self = this, strs;\n if ($gvars.stdout == null) $gvars.stdout = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n strs = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n strs[$arg_idx - 0] = arguments[$arg_idx];\n }\n return $send($gvars.stdout, 'print', Opal.to_a(strs))\n }, TMP_Kernel_print_48.$$arity = -1);\n \n Opal.def(self, '$warn', TMP_Kernel_warn_49 = function $$warn($a_rest) {\n var $b, self = this, strs;\n if ($gvars.VERBOSE == null) $gvars.VERBOSE = nil;\n if ($gvars.stderr == null) $gvars.stderr = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n strs = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n strs[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($truthy(($truthy($b = $gvars.VERBOSE['$nil?']()) ? $b : strs['$empty?']()))) {\n return nil\n } else {\n return $send($gvars.stderr, 'puts', Opal.to_a(strs))\n }\n }, TMP_Kernel_warn_49.$$arity = -1);\n \n Opal.def(self, '$raise', TMP_Kernel_raise_50 = function $$raise(exception, string, _backtrace) {\n var self = this;\n if ($gvars[\"!\"] == null) $gvars[\"!\"] = nil;\n\n if (string == null) {\n string = nil;\n }\n if (_backtrace == null) {\n _backtrace = nil;\n }\n \n if (exception == null && $gvars[\"!\"] !== nil) {\n throw $gvars[\"!\"];\n }\n if (exception == null) {\n exception = $$($nesting, 'RuntimeError').$new();\n }\n else if (exception.$$is_string) {\n exception = $$($nesting, 'RuntimeError').$new(exception);\n }\n // using respond_to? and not an undefined check to avoid method_missing matching as true\n else if (exception.$$is_class && exception['$respond_to?'](\"exception\")) {\n exception = exception.$exception(string);\n }\n else if (exception['$is_a?']($$($nesting, 'Exception'))) {\n // exception is fine\n }\n else {\n exception = $$($nesting, 'TypeError').$new(\"exception class/object expected\");\n }\n\n if ($gvars[\"!\"] !== nil) {\n Opal.exceptions.push($gvars[\"!\"]);\n }\n\n $gvars[\"!\"] = exception;\n\n throw exception;\n \n }, TMP_Kernel_raise_50.$$arity = -1);\n Opal.alias(self, \"fail\", \"raise\");\n \n Opal.def(self, '$rand', TMP_Kernel_rand_51 = function $$rand(max) {\n var self = this;\n\n \n \n if (max === undefined) {\n return $$$($$($nesting, 'Random'), 'DEFAULT').$rand();\n }\n\n if (max.$$is_number) {\n if (max < 0) {\n max = Math.abs(max);\n }\n\n if (max % 1 !== 0) {\n max = max.$to_i();\n }\n\n if (max === 0) {\n max = undefined;\n }\n }\n ;\n return $$$($$($nesting, 'Random'), 'DEFAULT').$rand(max);\n }, TMP_Kernel_rand_51.$$arity = -1);\n \n Opal.def(self, '$respond_to?', TMP_Kernel_respond_to$q_52 = function(name, include_all) {\n var self = this;\n\n if (include_all == null) {\n include_all = false;\n }\n \n if ($truthy(self['$respond_to_missing?'](name, include_all))) {\n return true};\n \n var body = self['$' + name];\n\n if (typeof(body) === \"function\" && !body.$$stub) {\n return true;\n }\n ;\n return false;\n }, TMP_Kernel_respond_to$q_52.$$arity = -2);\n \n Opal.def(self, '$respond_to_missing?', TMP_Kernel_respond_to_missing$q_53 = function(method_name, include_all) {\n var self = this;\n\n if (include_all == null) {\n include_all = false;\n }\n return false\n }, TMP_Kernel_respond_to_missing$q_53.$$arity = -2);\n \n Opal.def(self, '$require', TMP_Kernel_require_54 = function $$require(file) {\n var self = this;\n\n \n file = $$($nesting, 'Opal')['$coerce_to!'](file, $$($nesting, 'String'), \"to_str\");\n return Opal.require(file);\n }, TMP_Kernel_require_54.$$arity = 1);\n \n Opal.def(self, '$require_relative', TMP_Kernel_require_relative_55 = function $$require_relative(file) {\n var self = this;\n\n \n $$($nesting, 'Opal')['$try_convert!'](file, $$($nesting, 'String'), \"to_str\");\n file = $$($nesting, 'File').$expand_path($$($nesting, 'File').$join(Opal.current_file, \"..\", file));\n return Opal.require(file);\n }, TMP_Kernel_require_relative_55.$$arity = 1);\n \n Opal.def(self, '$require_tree', TMP_Kernel_require_tree_56 = function $$require_tree(path) {\n var self = this;\n\n \n var result = [];\n\n path = $$($nesting, 'File').$expand_path(path)\n path = Opal.normalize(path);\n if (path === '.') path = '';\n for (var name in Opal.modules) {\n if ((name)['$start_with?'](path)) {\n result.push([name, Opal.require(name)]);\n }\n }\n\n return result;\n \n }, TMP_Kernel_require_tree_56.$$arity = 1);\n Opal.alias(self, \"send\", \"__send__\");\n Opal.alias(self, \"public_send\", \"__send__\");\n \n Opal.def(self, '$singleton_class', TMP_Kernel_singleton_class_57 = function $$singleton_class() {\n var self = this;\n\n return Opal.get_singleton_class(self);\n }, TMP_Kernel_singleton_class_57.$$arity = 0);\n \n Opal.def(self, '$sleep', TMP_Kernel_sleep_58 = function $$sleep(seconds) {\n var self = this;\n\n if (seconds == null) {\n seconds = nil;\n }\n \n if (seconds === nil) {\n self.$raise($$($nesting, 'TypeError'), \"can't convert NilClass into time interval\")\n }\n if (!seconds.$$is_number) {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"can't convert \" + (seconds.$class()) + \" into time interval\")\n }\n if (seconds < 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"time interval must be positive\")\n }\n var get_time = Opal.global.performance ?\n function() {return performance.now()} :\n function() {return new Date()}\n\n var t = get_time();\n while (get_time() - t <= seconds * 1000);\n return seconds;\n \n }, TMP_Kernel_sleep_58.$$arity = -1);\n Opal.alias(self, \"sprintf\", \"format\");\n \n Opal.def(self, '$srand', TMP_Kernel_srand_59 = function $$srand(seed) {\n var self = this;\n\n if (seed == null) {\n seed = $$($nesting, 'Random').$new_seed();\n }\n return $$($nesting, 'Random').$srand(seed)\n }, TMP_Kernel_srand_59.$$arity = -1);\n \n Opal.def(self, '$String', TMP_Kernel_String_60 = function $$String(str) {\n var $a, self = this;\n\n return ($truthy($a = $$($nesting, 'Opal')['$coerce_to?'](str, $$($nesting, 'String'), \"to_str\")) ? $a : $$($nesting, 'Opal')['$coerce_to!'](str, $$($nesting, 'String'), \"to_s\"))\n }, TMP_Kernel_String_60.$$arity = 1);\n \n Opal.def(self, '$tap', TMP_Kernel_tap_61 = function $$tap() {\n var self = this, $iter = TMP_Kernel_tap_61.$$p, block = $iter || nil;\n\n if ($iter) TMP_Kernel_tap_61.$$p = null;\n \n Opal.yield1(block, self);\n return self;\n }, TMP_Kernel_tap_61.$$arity = 0);\n \n Opal.def(self, '$to_proc', TMP_Kernel_to_proc_62 = function $$to_proc() {\n var self = this;\n\n return self\n }, TMP_Kernel_to_proc_62.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_Kernel_to_s_63 = function $$to_s() {\n var self = this;\n\n return \"\" + \"#<\" + (self.$class()) + \":0x\" + (self.$__id__().$to_s(16)) + \">\"\n }, TMP_Kernel_to_s_63.$$arity = 0);\n \n Opal.def(self, '$catch', TMP_Kernel_catch_64 = function(sym) {\n var self = this, $iter = TMP_Kernel_catch_64.$$p, $yield = $iter || nil, e = nil;\n\n if ($iter) TMP_Kernel_catch_64.$$p = null;\n try {\n return Opal.yieldX($yield, []);\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'UncaughtThrowError')])) {e = $err;\n try {\n \n if (e.$sym()['$=='](sym)) {\n return e.$arg()};\n return self.$raise();\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }\n }, TMP_Kernel_catch_64.$$arity = 1);\n \n Opal.def(self, '$throw', TMP_Kernel_throw_65 = function($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return self.$raise($$($nesting, 'UncaughtThrowError'), args)\n }, TMP_Kernel_throw_65.$$arity = -1);\n \n Opal.def(self, '$open', TMP_Kernel_open_66 = function $$open($a_rest) {\n var self = this, args, $iter = TMP_Kernel_open_66.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Kernel_open_66.$$p = null;\n return $send($$($nesting, 'File'), 'open', Opal.to_a(args), block.$to_proc())\n }, TMP_Kernel_open_66.$$arity = -1);\n \n Opal.def(self, '$yield_self', TMP_Kernel_yield_self_67 = function $$yield_self() {\n var TMP_68, self = this, $iter = TMP_Kernel_yield_self_67.$$p, $yield = $iter || nil;\n\n if ($iter) TMP_Kernel_yield_self_67.$$p = null;\n \n if (($yield !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"yield_self\"], (TMP_68 = function(){var self = TMP_68.$$s || this;\n\n return 1}, TMP_68.$$s = self, TMP_68.$$arity = 0, TMP_68))\n };\n return Opal.yield1($yield, self);;\n }, TMP_Kernel_yield_self_67.$$arity = 0);\n })($nesting[0], $nesting);\n return (function($base, $super, $parent_nesting) {\n function $Object(){};\n var self = $Object = $klass($base, $super, 'Object', $Object);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return self.$include($$($nesting, 'Kernel'))\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/error\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $module = Opal.module, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$new', '$clone', '$to_s', '$empty?', '$class', '$+', '$attr_reader', '$[]', '$>', '$length', '$inspect', '$raise']);\n \n (function($base, $super, $parent_nesting) {\n function $Exception(){};\n var self = $Exception = $klass($base, $super, 'Exception', $Exception);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Exception_new_1, TMP_Exception_exception_2, TMP_Exception_initialize_3, TMP_Exception_backtrace_4, TMP_Exception_exception_5, TMP_Exception_message_6, TMP_Exception_inspect_7, TMP_Exception_to_s_8;\n\n def.message = nil;\n \n var stack_trace_limit;\n Opal.defs(self, '$new', TMP_Exception_new_1 = function($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n var message = (args.length > 0) ? args[0] : nil;\n var error = new self.$$alloc(message);\n error.name = self.$$name;\n error.message = message;\n Opal.send(error, error.$initialize, args);\n\n // Error.captureStackTrace() will use .name and .toString to build the\n // first line of the stack trace so it must be called after the error\n // has been initialized.\n // https://nodejs.org/dist/latest-v6.x/docs/api/errors.html\n if (Opal.config.enable_stack_trace && Error.captureStackTrace) {\n // Passing Kernel.raise will cut the stack trace from that point above\n Error.captureStackTrace(error, stack_trace_limit);\n }\n\n return error;\n \n }, TMP_Exception_new_1.$$arity = -1);\n stack_trace_limit = self.$new;\n Opal.defs(self, '$exception', TMP_Exception_exception_2 = function $$exception($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return $send(self, 'new', Opal.to_a(args))\n }, TMP_Exception_exception_2.$$arity = -1);\n \n Opal.def(self, '$initialize', TMP_Exception_initialize_3 = function $$initialize($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return self.message = (args.length > 0) ? args[0] : nil;\n }, TMP_Exception_initialize_3.$$arity = -1);\n \n Opal.def(self, '$backtrace', TMP_Exception_backtrace_4 = function $$backtrace() {\n var self = this;\n\n \n var backtrace = self.stack;\n\n if (typeof(backtrace) === 'string') {\n return backtrace.split(\"\\n\").slice(0, 15);\n }\n else if (backtrace) {\n return backtrace.slice(0, 15);\n }\n\n return [];\n \n }, TMP_Exception_backtrace_4.$$arity = 0);\n \n Opal.def(self, '$exception', TMP_Exception_exception_5 = function $$exception(str) {\n var self = this;\n\n if (str == null) {\n str = nil;\n }\n \n if (str === nil || self === str) {\n return self;\n }\n\n var cloned = self.$clone();\n cloned.message = str;\n return cloned;\n \n }, TMP_Exception_exception_5.$$arity = -1);\n \n Opal.def(self, '$message', TMP_Exception_message_6 = function $$message() {\n var self = this;\n\n return self.$to_s()\n }, TMP_Exception_message_6.$$arity = 0);\n \n Opal.def(self, '$inspect', TMP_Exception_inspect_7 = function $$inspect() {\n var self = this, as_str = nil;\n\n \n as_str = self.$to_s();\n if ($truthy(as_str['$empty?']())) {\n return self.$class().$to_s()\n } else {\n return \"\" + \"#<\" + (self.$class().$to_s()) + \": \" + (self.$to_s()) + \">\"\n };\n }, TMP_Exception_inspect_7.$$arity = 0);\n return (Opal.def(self, '$to_s', TMP_Exception_to_s_8 = function $$to_s() {\n var $a, $b, self = this;\n\n return ($truthy($a = ($truthy($b = self.message) ? self.message.$to_s() : $b)) ? $a : self.$class().$to_s())\n }, TMP_Exception_to_s_8.$$arity = 0), nil) && 'to_s';\n })($nesting[0], Error, $nesting);\n (function($base, $super, $parent_nesting) {\n function $ScriptError(){};\n var self = $ScriptError = $klass($base, $super, 'ScriptError', $ScriptError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'Exception'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $SyntaxError(){};\n var self = $SyntaxError = $klass($base, $super, 'SyntaxError', $SyntaxError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'ScriptError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $LoadError(){};\n var self = $LoadError = $klass($base, $super, 'LoadError', $LoadError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'ScriptError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $NotImplementedError(){};\n var self = $NotImplementedError = $klass($base, $super, 'NotImplementedError', $NotImplementedError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'ScriptError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $SystemExit(){};\n var self = $SystemExit = $klass($base, $super, 'SystemExit', $SystemExit);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'Exception'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $NoMemoryError(){};\n var self = $NoMemoryError = $klass($base, $super, 'NoMemoryError', $NoMemoryError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'Exception'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $SignalException(){};\n var self = $SignalException = $klass($base, $super, 'SignalException', $SignalException);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'Exception'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $Interrupt(){};\n var self = $Interrupt = $klass($base, $super, 'Interrupt', $Interrupt);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'Exception'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $SecurityError(){};\n var self = $SecurityError = $klass($base, $super, 'SecurityError', $SecurityError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'Exception'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $StandardError(){};\n var self = $StandardError = $klass($base, $super, 'StandardError', $StandardError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'Exception'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $EncodingError(){};\n var self = $EncodingError = $klass($base, $super, 'EncodingError', $EncodingError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $ZeroDivisionError(){};\n var self = $ZeroDivisionError = $klass($base, $super, 'ZeroDivisionError', $ZeroDivisionError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $NameError(){};\n var self = $NameError = $klass($base, $super, 'NameError', $NameError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $NoMethodError(){};\n var self = $NoMethodError = $klass($base, $super, 'NoMethodError', $NoMethodError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'NameError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $RuntimeError(){};\n var self = $RuntimeError = $klass($base, $super, 'RuntimeError', $RuntimeError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $FrozenError(){};\n var self = $FrozenError = $klass($base, $super, 'FrozenError', $FrozenError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'RuntimeError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $LocalJumpError(){};\n var self = $LocalJumpError = $klass($base, $super, 'LocalJumpError', $LocalJumpError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $TypeError(){};\n var self = $TypeError = $klass($base, $super, 'TypeError', $TypeError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $ArgumentError(){};\n var self = $ArgumentError = $klass($base, $super, 'ArgumentError', $ArgumentError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $IndexError(){};\n var self = $IndexError = $klass($base, $super, 'IndexError', $IndexError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $StopIteration(){};\n var self = $StopIteration = $klass($base, $super, 'StopIteration', $StopIteration);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'IndexError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $KeyError(){};\n var self = $KeyError = $klass($base, $super, 'KeyError', $KeyError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'IndexError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $RangeError(){};\n var self = $RangeError = $klass($base, $super, 'RangeError', $RangeError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $FloatDomainError(){};\n var self = $FloatDomainError = $klass($base, $super, 'FloatDomainError', $FloatDomainError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'RangeError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $IOError(){};\n var self = $IOError = $klass($base, $super, 'IOError', $IOError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $SystemCallError(){};\n var self = $SystemCallError = $klass($base, $super, 'SystemCallError', $SystemCallError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $parent_nesting) {\n var $Errno, self = $Errno = $module($base, 'Errno');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $EINVAL(){};\n var self = $EINVAL = $klass($base, $super, 'EINVAL', $EINVAL);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_EINVAL_new_9;\n\n return (Opal.defs(self, '$new', TMP_EINVAL_new_9 = function(name) {\n var self = this, $iter = TMP_EINVAL_new_9.$$p, $yield = $iter || nil, message = nil;\n\n if (name == null) {\n name = nil;\n }\n if ($iter) TMP_EINVAL_new_9.$$p = null;\n \n message = \"Invalid argument\";\n if ($truthy(name)) {\n message = $rb_plus(message, \"\" + \" - \" + (name))};\n return $send(self, Opal.find_super_dispatcher(self, 'new', TMP_EINVAL_new_9, false, $EINVAL), [message], null);\n }, TMP_EINVAL_new_9.$$arity = -1), nil) && 'new'\n })($nesting[0], $$($nesting, 'SystemCallError'), $nesting)\n })($nesting[0], $nesting);\n (function($base, $super, $parent_nesting) {\n function $UncaughtThrowError(){};\n var self = $UncaughtThrowError = $klass($base, $super, 'UncaughtThrowError', $UncaughtThrowError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_UncaughtThrowError_initialize_10;\n\n def.sym = nil;\n \n self.$attr_reader(\"sym\", \"arg\");\n return (Opal.def(self, '$initialize', TMP_UncaughtThrowError_initialize_10 = function $$initialize(args) {\n var self = this, $iter = TMP_UncaughtThrowError_initialize_10.$$p, $yield = $iter || nil;\n\n if ($iter) TMP_UncaughtThrowError_initialize_10.$$p = null;\n \n self.sym = args['$[]'](0);\n if ($truthy($rb_gt(args.$length(), 1))) {\n self.arg = args['$[]'](1)};\n return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_UncaughtThrowError_initialize_10, false), [\"\" + \"uncaught throw \" + (self.sym.$inspect())], null);\n }, TMP_UncaughtThrowError_initialize_10.$$arity = 1), nil) && 'initialize';\n })($nesting[0], $$($nesting, 'ArgumentError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $NameError(){};\n var self = $NameError = $klass($base, $super, 'NameError', $NameError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NameError_initialize_11;\n\n \n self.$attr_reader(\"name\");\n return (Opal.def(self, '$initialize', TMP_NameError_initialize_11 = function $$initialize(message, name) {\n var self = this, $iter = TMP_NameError_initialize_11.$$p, $yield = $iter || nil;\n\n if (name == null) {\n name = nil;\n }\n if ($iter) TMP_NameError_initialize_11.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_NameError_initialize_11, false), [message], null);\n return (self.name = name);\n }, TMP_NameError_initialize_11.$$arity = -2), nil) && 'initialize';\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $NoMethodError(){};\n var self = $NoMethodError = $klass($base, $super, 'NoMethodError', $NoMethodError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NoMethodError_initialize_12;\n\n \n self.$attr_reader(\"args\");\n return (Opal.def(self, '$initialize', TMP_NoMethodError_initialize_12 = function $$initialize(message, name, args) {\n var self = this, $iter = TMP_NoMethodError_initialize_12.$$p, $yield = $iter || nil;\n\n if (name == null) {\n name = nil;\n }\n if (args == null) {\n args = [];\n }\n if ($iter) TMP_NoMethodError_initialize_12.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_NoMethodError_initialize_12, false), [message, name], null);\n return (self.args = args);\n }, TMP_NoMethodError_initialize_12.$$arity = -2), nil) && 'initialize';\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $StopIteration(){};\n var self = $StopIteration = $klass($base, $super, 'StopIteration', $StopIteration);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return self.$attr_reader(\"result\")\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $KeyError(){};\n var self = $KeyError = $klass($base, $super, 'KeyError', $KeyError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_KeyError_initialize_13, TMP_KeyError_receiver_14, TMP_KeyError_key_15;\n\n def.receiver = def.key = nil;\n \n \n Opal.def(self, '$initialize', TMP_KeyError_initialize_13 = function $$initialize(message, $kwargs) {\n var self = this, receiver, key, $iter = TMP_KeyError_initialize_13.$$p, $yield = $iter || nil;\n\n if ($kwargs == null || !$kwargs.$$is_hash) {\n if ($kwargs == null) {\n $kwargs = $hash2([], {});\n } else {\n throw Opal.ArgumentError.$new('expected kwargs');\n }\n }\n receiver = $kwargs.$$smap[\"receiver\"];\n if (receiver == null) {\n receiver = nil\n }\n key = $kwargs.$$smap[\"key\"];\n if (key == null) {\n key = nil\n }\n if ($iter) TMP_KeyError_initialize_13.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_KeyError_initialize_13, false), [message], null);\n self.receiver = receiver;\n return (self.key = key);\n }, TMP_KeyError_initialize_13.$$arity = -2);\n \n Opal.def(self, '$receiver', TMP_KeyError_receiver_14 = function $$receiver() {\n var $a, self = this;\n\n return ($truthy($a = self.receiver) ? $a : self.$raise($$($nesting, 'ArgumentError'), \"no receiver is available\"))\n }, TMP_KeyError_receiver_14.$$arity = 0);\n return (Opal.def(self, '$key', TMP_KeyError_key_15 = function $$key() {\n var $a, self = this;\n\n return ($truthy($a = self.key) ? $a : self.$raise($$($nesting, 'ArgumentError'), \"no key is available\"))\n }, TMP_KeyError_key_15.$$arity = 0), nil) && 'key';\n })($nesting[0], null, $nesting);\n return (function($base, $parent_nesting) {\n var $JS, self = $JS = $module($base, 'JS');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Error(){};\n var self = $Error = $klass($base, $super, 'Error', $Error);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/constants\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n \n Opal.const_set($nesting[0], 'RUBY_PLATFORM', \"opal\");\n Opal.const_set($nesting[0], 'RUBY_ENGINE', \"opal\");\n Opal.const_set($nesting[0], 'RUBY_VERSION', \"2.5.0\");\n Opal.const_set($nesting[0], 'RUBY_ENGINE_VERSION', \"0.11.1.dev\");\n Opal.const_set($nesting[0], 'RUBY_RELEASE_DATE', \"2018-03-06\");\n Opal.const_set($nesting[0], 'RUBY_PATCHLEVEL', 0);\n Opal.const_set($nesting[0], 'RUBY_REVISION', 0);\n Opal.const_set($nesting[0], 'RUBY_COPYRIGHT', \"opal - Copyright (C) 2013-2015 Adam Beynon\");\n return Opal.const_set($nesting[0], 'RUBY_DESCRIPTION', \"\" + \"opal \" + ($$($nesting, 'RUBY_ENGINE_VERSION')) + \" (\" + ($$($nesting, 'RUBY_RELEASE_DATE')) + \" revision \" + ($$($nesting, 'RUBY_REVISION')) + \")\");\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"opal/base\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n Opal.add_stubs(['$require']);\n \n self.$require(\"corelib/runtime\");\n self.$require(\"corelib/helpers\");\n self.$require(\"corelib/module\");\n self.$require(\"corelib/class\");\n self.$require(\"corelib/basic_object\");\n self.$require(\"corelib/kernel\");\n self.$require(\"corelib/error\");\n return self.$require(\"corelib/constants\");\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/nil\"] = function(Opal) {\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$raise', '$name', '$new', '$>', '$length', '$Rational']);\n \n (function($base, $super, $parent_nesting) {\n function $NilClass(){};\n var self = $NilClass = $klass($base, $super, 'NilClass', $NilClass);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_NilClass_$B_2, TMP_NilClass_$_3, TMP_NilClass_$_4, TMP_NilClass_$_5, TMP_NilClass_$eq$eq_6, TMP_NilClass_dup_7, TMP_NilClass_clone_8, TMP_NilClass_inspect_9, TMP_NilClass_nil$q_10, TMP_NilClass_singleton_class_11, TMP_NilClass_to_a_12, TMP_NilClass_to_h_13, TMP_NilClass_to_i_14, TMP_NilClass_to_s_15, TMP_NilClass_to_c_16, TMP_NilClass_rationalize_17, TMP_NilClass_to_r_18, TMP_NilClass_instance_variables_19;\n\n \n def.$$meta = self;\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_1;\n\n \n \n Opal.def(self, '$allocate', TMP_allocate_1 = function $$allocate() {\n var self = this;\n\n return self.$raise($$($nesting, 'TypeError'), \"\" + \"allocator undefined for \" + (self.$name()))\n }, TMP_allocate_1.$$arity = 0);\n \n \n Opal.udef(self, '$' + \"new\");;\n return nil;;\n })(Opal.get_singleton_class(self), $nesting);\n \n Opal.def(self, '$!', TMP_NilClass_$B_2 = function() {\n var self = this;\n\n return true\n }, TMP_NilClass_$B_2.$$arity = 0);\n \n Opal.def(self, '$&', TMP_NilClass_$_3 = function(other) {\n var self = this;\n\n return false\n }, TMP_NilClass_$_3.$$arity = 1);\n \n Opal.def(self, '$|', TMP_NilClass_$_4 = function(other) {\n var self = this;\n\n return other !== false && other !== nil;\n }, TMP_NilClass_$_4.$$arity = 1);\n \n Opal.def(self, '$^', TMP_NilClass_$_5 = function(other) {\n var self = this;\n\n return other !== false && other !== nil;\n }, TMP_NilClass_$_5.$$arity = 1);\n \n Opal.def(self, '$==', TMP_NilClass_$eq$eq_6 = function(other) {\n var self = this;\n\n return other === nil;\n }, TMP_NilClass_$eq$eq_6.$$arity = 1);\n \n Opal.def(self, '$dup', TMP_NilClass_dup_7 = function $$dup() {\n var self = this;\n\n return nil\n }, TMP_NilClass_dup_7.$$arity = 0);\n \n Opal.def(self, '$clone', TMP_NilClass_clone_8 = function $$clone($kwargs) {\n var self = this, freeze;\n\n if ($kwargs == null || !$kwargs.$$is_hash) {\n if ($kwargs == null) {\n $kwargs = $hash2([], {});\n } else {\n throw Opal.ArgumentError.$new('expected kwargs');\n }\n }\n freeze = $kwargs.$$smap[\"freeze\"];\n if (freeze == null) {\n freeze = true\n }\n return nil\n }, TMP_NilClass_clone_8.$$arity = -1);\n \n Opal.def(self, '$inspect', TMP_NilClass_inspect_9 = function $$inspect() {\n var self = this;\n\n return \"nil\"\n }, TMP_NilClass_inspect_9.$$arity = 0);\n \n Opal.def(self, '$nil?', TMP_NilClass_nil$q_10 = function() {\n var self = this;\n\n return true\n }, TMP_NilClass_nil$q_10.$$arity = 0);\n \n Opal.def(self, '$singleton_class', TMP_NilClass_singleton_class_11 = function $$singleton_class() {\n var self = this;\n\n return $$($nesting, 'NilClass')\n }, TMP_NilClass_singleton_class_11.$$arity = 0);\n \n Opal.def(self, '$to_a', TMP_NilClass_to_a_12 = function $$to_a() {\n var self = this;\n\n return []\n }, TMP_NilClass_to_a_12.$$arity = 0);\n \n Opal.def(self, '$to_h', TMP_NilClass_to_h_13 = function $$to_h() {\n var self = this;\n\n return Opal.hash();\n }, TMP_NilClass_to_h_13.$$arity = 0);\n \n Opal.def(self, '$to_i', TMP_NilClass_to_i_14 = function $$to_i() {\n var self = this;\n\n return 0\n }, TMP_NilClass_to_i_14.$$arity = 0);\n Opal.alias(self, \"to_f\", \"to_i\");\n \n Opal.def(self, '$to_s', TMP_NilClass_to_s_15 = function $$to_s() {\n var self = this;\n\n return \"\"\n }, TMP_NilClass_to_s_15.$$arity = 0);\n \n Opal.def(self, '$to_c', TMP_NilClass_to_c_16 = function $$to_c() {\n var self = this;\n\n return $$($nesting, 'Complex').$new(0, 0)\n }, TMP_NilClass_to_c_16.$$arity = 0);\n \n Opal.def(self, '$rationalize', TMP_NilClass_rationalize_17 = function $$rationalize($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if ($truthy($rb_gt(args.$length(), 1))) {\n self.$raise($$($nesting, 'ArgumentError'))};\n return self.$Rational(0, 1);\n }, TMP_NilClass_rationalize_17.$$arity = -1);\n \n Opal.def(self, '$to_r', TMP_NilClass_to_r_18 = function $$to_r() {\n var self = this;\n\n return self.$Rational(0, 1)\n }, TMP_NilClass_to_r_18.$$arity = 0);\n return (Opal.def(self, '$instance_variables', TMP_NilClass_instance_variables_19 = function $$instance_variables() {\n var self = this;\n\n return []\n }, TMP_NilClass_instance_variables_19.$$arity = 0), nil) && 'instance_variables';\n })($nesting[0], null, $nesting);\n return Opal.const_set($nesting[0], 'NIL', nil);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/boolean\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$raise', '$name']);\n \n (function($base, $super, $parent_nesting) {\n function $Boolean(){};\n var self = $Boolean = $klass($base, $super, 'Boolean', $Boolean);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Boolean___id___2, TMP_Boolean_$B_3, TMP_Boolean_$_4, TMP_Boolean_$_5, TMP_Boolean_$_6, TMP_Boolean_$eq$eq_7, TMP_Boolean_singleton_class_8, TMP_Boolean_to_s_9, TMP_Boolean_dup_10, TMP_Boolean_clone_11;\n\n \n def.$$is_boolean = true;\n def.$$meta = self;\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_1;\n\n \n \n Opal.def(self, '$allocate', TMP_allocate_1 = function $$allocate() {\n var self = this;\n\n return self.$raise($$($nesting, 'TypeError'), \"\" + \"allocator undefined for \" + (self.$name()))\n }, TMP_allocate_1.$$arity = 0);\n \n \n Opal.udef(self, '$' + \"new\");;\n return nil;;\n })(Opal.get_singleton_class(self), $nesting);\n \n Opal.def(self, '$__id__', TMP_Boolean___id___2 = function $$__id__() {\n var self = this;\n\n return self.valueOf() ? 2 : 0;\n }, TMP_Boolean___id___2.$$arity = 0);\n Opal.alias(self, \"object_id\", \"__id__\");\n \n Opal.def(self, '$!', TMP_Boolean_$B_3 = function() {\n var self = this;\n\n return self != true;\n }, TMP_Boolean_$B_3.$$arity = 0);\n \n Opal.def(self, '$&', TMP_Boolean_$_4 = function(other) {\n var self = this;\n\n return (self == true) ? (other !== false && other !== nil) : false;\n }, TMP_Boolean_$_4.$$arity = 1);\n \n Opal.def(self, '$|', TMP_Boolean_$_5 = function(other) {\n var self = this;\n\n return (self == true) ? true : (other !== false && other !== nil);\n }, TMP_Boolean_$_5.$$arity = 1);\n \n Opal.def(self, '$^', TMP_Boolean_$_6 = function(other) {\n var self = this;\n\n return (self == true) ? (other === false || other === nil) : (other !== false && other !== nil);\n }, TMP_Boolean_$_6.$$arity = 1);\n \n Opal.def(self, '$==', TMP_Boolean_$eq$eq_7 = function(other) {\n var self = this;\n\n return (self == true) === other.valueOf();\n }, TMP_Boolean_$eq$eq_7.$$arity = 1);\n Opal.alias(self, \"equal?\", \"==\");\n Opal.alias(self, \"eql?\", \"==\");\n \n Opal.def(self, '$singleton_class', TMP_Boolean_singleton_class_8 = function $$singleton_class() {\n var self = this;\n\n return $$($nesting, 'Boolean')\n }, TMP_Boolean_singleton_class_8.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_Boolean_to_s_9 = function $$to_s() {\n var self = this;\n\n return (self == true) ? 'true' : 'false';\n }, TMP_Boolean_to_s_9.$$arity = 0);\n \n Opal.def(self, '$dup', TMP_Boolean_dup_10 = function $$dup() {\n var self = this;\n\n return self\n }, TMP_Boolean_dup_10.$$arity = 0);\n return (Opal.def(self, '$clone', TMP_Boolean_clone_11 = function $$clone($kwargs) {\n var self = this, freeze;\n\n if ($kwargs == null || !$kwargs.$$is_hash) {\n if ($kwargs == null) {\n $kwargs = $hash2([], {});\n } else {\n throw Opal.ArgumentError.$new('expected kwargs');\n }\n }\n freeze = $kwargs.$$smap[\"freeze\"];\n if (freeze == null) {\n freeze = true\n }\n return self\n }, TMP_Boolean_clone_11.$$arity = -1), nil) && 'clone';\n })($nesting[0], Boolean, $nesting);\n Opal.const_set($nesting[0], 'TrueClass', $$($nesting, 'Boolean'));\n Opal.const_set($nesting[0], 'FalseClass', $$($nesting, 'Boolean'));\n Opal.const_set($nesting[0], 'TRUE', true);\n return Opal.const_set($nesting[0], 'FALSE', false);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/comparable\"] = function(Opal) {\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$===', '$>', '$<', '$equal?', '$<=>', '$normalize', '$raise', '$class']);\n return (function($base, $parent_nesting) {\n var $Comparable, self = $Comparable = $module($base, 'Comparable');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Comparable_normalize_1, TMP_Comparable_$eq$eq_2, TMP_Comparable_$gt_3, TMP_Comparable_$gt$eq_4, TMP_Comparable_$lt_5, TMP_Comparable_$lt$eq_6, TMP_Comparable_between$q_7, TMP_Comparable_clamp_8;\n\n \n Opal.defs(self, '$normalize', TMP_Comparable_normalize_1 = function $$normalize(what) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Integer')['$==='](what))) {\n return what};\n if ($truthy($rb_gt(what, 0))) {\n return 1};\n if ($truthy($rb_lt(what, 0))) {\n return -1};\n return 0;\n }, TMP_Comparable_normalize_1.$$arity = 1);\n \n Opal.def(self, '$==', TMP_Comparable_$eq$eq_2 = function(other) {\n var self = this, cmp = nil;\n\n try {\n \n if ($truthy(self['$equal?'](other))) {\n return true};\n \n if (self[\"$<=>\"] == Opal.Kernel[\"$<=>\"]) {\n return false;\n }\n\n // check for infinite recursion\n if (self.$$comparable) {\n delete self.$$comparable;\n return false;\n }\n ;\n if ($truthy((cmp = self['$<=>'](other)))) {\n } else {\n return false\n };\n return $$($nesting, 'Comparable').$normalize(cmp) == 0;\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n return false\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }\n }, TMP_Comparable_$eq$eq_2.$$arity = 1);\n \n Opal.def(self, '$>', TMP_Comparable_$gt_3 = function(other) {\n var self = this, cmp = nil;\n\n \n if ($truthy((cmp = self['$<=>'](other)))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (other.$class()) + \" failed\")\n };\n return $$($nesting, 'Comparable').$normalize(cmp) > 0;\n }, TMP_Comparable_$gt_3.$$arity = 1);\n \n Opal.def(self, '$>=', TMP_Comparable_$gt$eq_4 = function(other) {\n var self = this, cmp = nil;\n\n \n if ($truthy((cmp = self['$<=>'](other)))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (other.$class()) + \" failed\")\n };\n return $$($nesting, 'Comparable').$normalize(cmp) >= 0;\n }, TMP_Comparable_$gt$eq_4.$$arity = 1);\n \n Opal.def(self, '$<', TMP_Comparable_$lt_5 = function(other) {\n var self = this, cmp = nil;\n\n \n if ($truthy((cmp = self['$<=>'](other)))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (other.$class()) + \" failed\")\n };\n return $$($nesting, 'Comparable').$normalize(cmp) < 0;\n }, TMP_Comparable_$lt_5.$$arity = 1);\n \n Opal.def(self, '$<=', TMP_Comparable_$lt$eq_6 = function(other) {\n var self = this, cmp = nil;\n\n \n if ($truthy((cmp = self['$<=>'](other)))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (other.$class()) + \" failed\")\n };\n return $$($nesting, 'Comparable').$normalize(cmp) <= 0;\n }, TMP_Comparable_$lt$eq_6.$$arity = 1);\n \n Opal.def(self, '$between?', TMP_Comparable_between$q_7 = function(min, max) {\n var self = this;\n\n \n if ($rb_lt(self, min)) {\n return false};\n if ($rb_gt(self, max)) {\n return false};\n return true;\n }, TMP_Comparable_between$q_7.$$arity = 2);\n \n Opal.def(self, '$clamp', TMP_Comparable_clamp_8 = function $$clamp(min, max) {\n var self = this, cmp = nil;\n\n \n cmp = min['$<=>'](max);\n if ($truthy(cmp)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (min.$class()) + \" with \" + (max.$class()) + \" failed\")\n };\n if ($truthy($rb_gt($$($nesting, 'Comparable').$normalize(cmp), 0))) {\n self.$raise($$($nesting, 'ArgumentError'), \"min argument must be smaller than max argument\")};\n if ($truthy($rb_lt($$($nesting, 'Comparable').$normalize(self['$<=>'](min)), 0))) {\n return min};\n if ($truthy($rb_gt($$($nesting, 'Comparable').$normalize(self['$<=>'](max)), 0))) {\n return max};\n return self;\n }, TMP_Comparable_clamp_8.$$arity = 2);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/regexp\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $gvars = Opal.gvars;\n\n Opal.add_stubs(['$nil?', '$[]', '$raise', '$escape', '$options', '$to_str', '$new', '$join', '$coerce_to!', '$!', '$match', '$coerce_to?', '$begin', '$coerce_to', '$=~', '$attr_reader', '$===', '$inspect', '$to_a']);\n \n (function($base, $super, $parent_nesting) {\n function $RegexpError(){};\n var self = $RegexpError = $klass($base, $super, 'RegexpError', $RegexpError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $Regexp(){};\n var self = $Regexp = $klass($base, $super, 'Regexp', $Regexp);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Regexp_$eq$eq_6, TMP_Regexp_$eq$eq$eq_7, TMP_Regexp_$eq$_8, TMP_Regexp_inspect_9, TMP_Regexp_match_10, TMP_Regexp_match$q_11, TMP_Regexp_$_12, TMP_Regexp_source_13, TMP_Regexp_options_14, TMP_Regexp_casefold$q_15;\n\n \n Opal.const_set($nesting[0], 'IGNORECASE', 1);\n Opal.const_set($nesting[0], 'EXTENDED', 2);\n Opal.const_set($nesting[0], 'MULTILINE', 4);\n def.$$is_regexp = true;\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_1, TMP_escape_2, TMP_last_match_3, TMP_union_4, TMP_new_5;\n\n \n \n Opal.def(self, '$allocate', TMP_allocate_1 = function $$allocate() {\n var self = this, $iter = TMP_allocate_1.$$p, $yield = $iter || nil, allocated = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_allocate_1.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n allocated = $send(self, Opal.find_super_dispatcher(self, 'allocate', TMP_allocate_1, false), $zuper, $iter);\n allocated.uninitialized = true;\n return allocated;\n }, TMP_allocate_1.$$arity = 0);\n \n Opal.def(self, '$escape', TMP_escape_2 = function $$escape(string) {\n var self = this;\n\n return Opal.escape_regexp(string);\n }, TMP_escape_2.$$arity = 1);\n \n Opal.def(self, '$last_match', TMP_last_match_3 = function $$last_match(n) {\n var self = this;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n if (n == null) {\n n = nil;\n }\n if ($truthy(n['$nil?']())) {\n return $gvars[\"~\"]\n } else {\n return $gvars[\"~\"]['$[]'](n)\n }\n }, TMP_last_match_3.$$arity = -1);\n Opal.alias(self, \"quote\", \"escape\");\n \n Opal.def(self, '$union', TMP_union_4 = function $$union($a_rest) {\n var self = this, parts;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n parts = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n parts[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n var is_first_part_array, quoted_validated, part, options, each_part_options;\n if (parts.length == 0) {\n return /(?!)/;\n }\n // return fast if there's only one element\n if (parts.length == 1 && parts[0].$$is_regexp) {\n return parts[0];\n }\n // cover the 2 arrays passed as arguments case\n is_first_part_array = parts[0].$$is_array;\n if (parts.length > 1 && is_first_part_array) {\n self.$raise($$($nesting, 'TypeError'), \"no implicit conversion of Array into String\")\n }\n // deal with splat issues (related to https://github.com/opal/opal/issues/858)\n if (is_first_part_array) {\n parts = parts[0];\n }\n options = undefined;\n quoted_validated = [];\n for (var i=0; i < parts.length; i++) {\n part = parts[i];\n if (part.$$is_string) {\n quoted_validated.push(self.$escape(part));\n }\n else if (part.$$is_regexp) {\n each_part_options = (part).$options();\n if (options != undefined && options != each_part_options) {\n self.$raise($$($nesting, 'TypeError'), \"All expressions must use the same options\")\n }\n options = each_part_options;\n quoted_validated.push('('+part.source+')');\n }\n else {\n quoted_validated.push(self.$escape((part).$to_str()));\n }\n }\n ;\n return self.$new((quoted_validated).$join(\"|\"), options);\n }, TMP_union_4.$$arity = -1);\n return (Opal.def(self, '$new', TMP_new_5 = function(regexp, options) {\n var self = this;\n\n \n if (regexp.$$is_regexp) {\n return new RegExp(regexp);\n }\n\n regexp = $$($nesting, 'Opal')['$coerce_to!'](regexp, $$($nesting, 'String'), \"to_str\");\n\n if (regexp.charAt(regexp.length - 1) === '\\\\' && regexp.charAt(regexp.length - 2) !== '\\\\') {\n self.$raise($$($nesting, 'RegexpError'), \"\" + \"too short escape sequence: /\" + (regexp) + \"/\")\n }\n\n if (options === undefined || options['$!']()) {\n return new RegExp(regexp);\n }\n\n if (options.$$is_number) {\n var temp = '';\n if ($$($nesting, 'IGNORECASE') & options) { temp += 'i'; }\n if ($$($nesting, 'MULTILINE') & options) { temp += 'm'; }\n options = temp;\n }\n else {\n options = 'i';\n }\n\n return new RegExp(regexp, options);\n \n }, TMP_new_5.$$arity = -2), nil) && 'new';\n })(Opal.get_singleton_class(self), $nesting);\n \n Opal.def(self, '$==', TMP_Regexp_$eq$eq_6 = function(other) {\n var self = this;\n\n return other.constructor == RegExp && self.toString() === other.toString();\n }, TMP_Regexp_$eq$eq_6.$$arity = 1);\n \n Opal.def(self, '$===', TMP_Regexp_$eq$eq$eq_7 = function(string) {\n var self = this;\n\n return self.$match($$($nesting, 'Opal')['$coerce_to?'](string, $$($nesting, 'String'), \"to_str\")) !== nil\n }, TMP_Regexp_$eq$eq$eq_7.$$arity = 1);\n \n Opal.def(self, '$=~', TMP_Regexp_$eq$_8 = function(string) {\n var $a, self = this;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n return ($truthy($a = self.$match(string)) ? $gvars[\"~\"].$begin(0) : $a)\n }, TMP_Regexp_$eq$_8.$$arity = 1);\n Opal.alias(self, \"eql?\", \"==\");\n \n Opal.def(self, '$inspect', TMP_Regexp_inspect_9 = function $$inspect() {\n var self = this;\n\n \n var regexp_format = /^\\/(.*)\\/([^\\/]*)$/;\n var value = self.toString();\n var matches = regexp_format.exec(value);\n if (matches) {\n var regexp_pattern = matches[1];\n var regexp_flags = matches[2];\n var chars = regexp_pattern.split('');\n var chars_length = chars.length;\n var char_escaped = false;\n var regexp_pattern_escaped = '';\n for (var i = 0; i < chars_length; i++) {\n var current_char = chars[i];\n if (!char_escaped && current_char == '/') {\n regexp_pattern_escaped = regexp_pattern_escaped.concat('\\\\');\n }\n regexp_pattern_escaped = regexp_pattern_escaped.concat(current_char);\n if (current_char == '\\\\') {\n if (char_escaped) {\n // does not over escape\n char_escaped = false;\n } else {\n char_escaped = true;\n }\n } else {\n char_escaped = false;\n }\n }\n return '/' + regexp_pattern_escaped + '/' + regexp_flags;\n } else {\n return value;\n }\n \n }, TMP_Regexp_inspect_9.$$arity = 0);\n \n Opal.def(self, '$match', TMP_Regexp_match_10 = function $$match(string, pos) {\n var self = this, $iter = TMP_Regexp_match_10.$$p, block = $iter || nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n if ($iter) TMP_Regexp_match_10.$$p = null;\n \n if (self.uninitialized) {\n self.$raise($$($nesting, 'TypeError'), \"uninitialized Regexp\")\n }\n\n if (pos === undefined) {\n if (string === nil) return ($gvars[\"~\"] = nil);\n var m = self.exec($$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), \"to_str\"));\n if (m) {\n ($gvars[\"~\"] = $$($nesting, 'MatchData').$new(self, m));\n return block === nil ? $gvars[\"~\"] : Opal.yield1(block, $gvars[\"~\"]);\n } else {\n return ($gvars[\"~\"] = nil);\n }\n }\n\n pos = $$($nesting, 'Opal').$coerce_to(pos, $$($nesting, 'Integer'), \"to_int\");\n\n if (string === nil) {\n return ($gvars[\"~\"] = nil);\n }\n\n string = $$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), \"to_str\");\n\n if (pos < 0) {\n pos += string.length;\n if (pos < 0) {\n return ($gvars[\"~\"] = nil);\n }\n }\n\n var source = self.source;\n var flags = self.multiline ? 'gm' : 'g';\n\n // global RegExp maintains state, so not using self/this\n var md, re = new RegExp(source, flags + (self.ignoreCase ? 'i' : ''));\n\n while (true) {\n md = re.exec(string);\n if (md === null) {\n return ($gvars[\"~\"] = nil);\n }\n if (md.index >= pos) {\n ($gvars[\"~\"] = $$($nesting, 'MatchData').$new(re, md));\n return block === nil ? $gvars[\"~\"] : Opal.yield1(block, $gvars[\"~\"]);\n }\n re.lastIndex = md.index + 1;\n }\n \n }, TMP_Regexp_match_10.$$arity = -2);\n \n Opal.def(self, '$match?', TMP_Regexp_match$q_11 = function(string, pos) {\n var self = this;\n\n \n if (self.uninitialized) {\n self.$raise($$($nesting, 'TypeError'), \"uninitialized Regexp\")\n }\n\n if (pos === undefined) {\n return string === nil ? false : self.test($$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), \"to_str\"));\n }\n\n pos = $$($nesting, 'Opal').$coerce_to(pos, $$($nesting, 'Integer'), \"to_int\");\n\n if (string === nil) {\n return false;\n }\n\n string = $$($nesting, 'Opal').$coerce_to(string, $$($nesting, 'String'), \"to_str\");\n\n if (pos < 0) {\n pos += string.length;\n if (pos < 0) {\n return false;\n }\n }\n\n var source = self.source;\n var flags = self.multiline ? 'gm' : 'g';\n\n // global RegExp maintains state, so not using self/this\n var md, re = new RegExp(source, flags + (self.ignoreCase ? 'i' : ''));\n\n md = re.exec(string);\n if (md === null || md.index < pos) {\n return false;\n } else {\n return true;\n }\n \n }, TMP_Regexp_match$q_11.$$arity = -2);\n \n Opal.def(self, '$~', TMP_Regexp_$_12 = function() {\n var self = this;\n if ($gvars._ == null) $gvars._ = nil;\n\n return self['$=~']($gvars._)\n }, TMP_Regexp_$_12.$$arity = 0);\n \n Opal.def(self, '$source', TMP_Regexp_source_13 = function $$source() {\n var self = this;\n\n return self.source;\n }, TMP_Regexp_source_13.$$arity = 0);\n \n Opal.def(self, '$options', TMP_Regexp_options_14 = function $$options() {\n var self = this;\n\n \n if (self.uninitialized) {\n self.$raise($$($nesting, 'TypeError'), \"uninitialized Regexp\")\n }\n var result = 0;\n // should be supported in IE6 according to https://msdn.microsoft.com/en-us/library/7f5z26w4(v=vs.94).aspx\n if (self.multiline) {\n result |= $$($nesting, 'MULTILINE');\n }\n if (self.ignoreCase) {\n result |= $$($nesting, 'IGNORECASE');\n }\n return result;\n \n }, TMP_Regexp_options_14.$$arity = 0);\n \n Opal.def(self, '$casefold?', TMP_Regexp_casefold$q_15 = function() {\n var self = this;\n\n return self.ignoreCase;\n }, TMP_Regexp_casefold$q_15.$$arity = 0);\n return Opal.alias(self, \"to_s\", \"source\");\n })($nesting[0], RegExp, $nesting);\n return (function($base, $super, $parent_nesting) {\n function $MatchData(){};\n var self = $MatchData = $klass($base, $super, 'MatchData', $MatchData);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MatchData_initialize_16, TMP_MatchData_$$_17, TMP_MatchData_offset_18, TMP_MatchData_$eq$eq_19, TMP_MatchData_begin_20, TMP_MatchData_end_21, TMP_MatchData_captures_22, TMP_MatchData_inspect_23, TMP_MatchData_length_24, TMP_MatchData_to_a_25, TMP_MatchData_to_s_26, TMP_MatchData_values_at_27;\n\n def.matches = nil;\n \n self.$attr_reader(\"post_match\", \"pre_match\", \"regexp\", \"string\");\n \n Opal.def(self, '$initialize', TMP_MatchData_initialize_16 = function $$initialize(regexp, match_groups) {\n var self = this;\n\n \n $gvars[\"~\"] = self;\n self.regexp = regexp;\n self.begin = match_groups.index;\n self.string = match_groups.input;\n self.pre_match = match_groups.input.slice(0, match_groups.index);\n self.post_match = match_groups.input.slice(match_groups.index + match_groups[0].length);\n self.matches = [];\n \n for (var i = 0, length = match_groups.length; i < length; i++) {\n var group = match_groups[i];\n\n if (group == null) {\n self.matches.push(nil);\n }\n else {\n self.matches.push(group);\n }\n }\n ;\n }, TMP_MatchData_initialize_16.$$arity = 2);\n \n Opal.def(self, '$[]', TMP_MatchData_$$_17 = function($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return $send(self.matches, '[]', Opal.to_a(args))\n }, TMP_MatchData_$$_17.$$arity = -1);\n \n Opal.def(self, '$offset', TMP_MatchData_offset_18 = function $$offset(n) {\n var self = this;\n\n \n if (n !== 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"MatchData#offset only supports 0th element\")\n }\n return [self.begin, self.begin + self.matches[n].length];\n \n }, TMP_MatchData_offset_18.$$arity = 1);\n \n Opal.def(self, '$==', TMP_MatchData_$eq$eq_19 = function(other) {\n var $a, $b, $c, $d, self = this;\n\n \n if ($truthy($$($nesting, 'MatchData')['$==='](other))) {\n } else {\n return false\n };\n return ($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = self.string == other.string) ? self.regexp.toString() == other.regexp.toString() : $d)) ? self.pre_match == other.pre_match : $c)) ? self.post_match == other.post_match : $b)) ? self.begin == other.begin : $a);\n }, TMP_MatchData_$eq$eq_19.$$arity = 1);\n Opal.alias(self, \"eql?\", \"==\");\n \n Opal.def(self, '$begin', TMP_MatchData_begin_20 = function $$begin(n) {\n var self = this;\n\n \n if (n !== 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"MatchData#begin only supports 0th element\")\n }\n return self.begin;\n \n }, TMP_MatchData_begin_20.$$arity = 1);\n \n Opal.def(self, '$end', TMP_MatchData_end_21 = function $$end(n) {\n var self = this;\n\n \n if (n !== 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"MatchData#end only supports 0th element\")\n }\n return self.begin + self.matches[n].length;\n \n }, TMP_MatchData_end_21.$$arity = 1);\n \n Opal.def(self, '$captures', TMP_MatchData_captures_22 = function $$captures() {\n var self = this;\n\n return self.matches.slice(1)\n }, TMP_MatchData_captures_22.$$arity = 0);\n \n Opal.def(self, '$inspect', TMP_MatchData_inspect_23 = function $$inspect() {\n var self = this;\n\n \n var str = \"#<MatchData \" + (self.matches[0]).$inspect();\n\n for (var i = 1, length = self.matches.length; i < length; i++) {\n str += \" \" + i + \":\" + (self.matches[i]).$inspect();\n }\n\n return str + \">\";\n \n }, TMP_MatchData_inspect_23.$$arity = 0);\n \n Opal.def(self, '$length', TMP_MatchData_length_24 = function $$length() {\n var self = this;\n\n return self.matches.length\n }, TMP_MatchData_length_24.$$arity = 0);\n Opal.alias(self, \"size\", \"length\");\n \n Opal.def(self, '$to_a', TMP_MatchData_to_a_25 = function $$to_a() {\n var self = this;\n\n return self.matches\n }, TMP_MatchData_to_a_25.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_MatchData_to_s_26 = function $$to_s() {\n var self = this;\n\n return self.matches[0]\n }, TMP_MatchData_to_s_26.$$arity = 0);\n return (Opal.def(self, '$values_at', TMP_MatchData_values_at_27 = function $$values_at($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n var i, a, index, values = [];\n\n for (i = 0; i < args.length; i++) {\n\n if (args[i].$$is_range) {\n a = (args[i]).$to_a();\n a.unshift(i, 1);\n Array.prototype.splice.apply(args, a);\n }\n\n index = $$($nesting, 'Opal')['$coerce_to!'](args[i], $$($nesting, 'Integer'), \"to_int\");\n\n if (index < 0) {\n index += self.matches.length;\n if (index < 0) {\n values.push(nil);\n continue;\n }\n }\n\n values.push(self.matches[index]);\n }\n\n return values;\n \n }, TMP_MatchData_values_at_27.$$arity = -1), nil) && 'values_at';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/string\"] = function(Opal) {\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars;\n\n Opal.add_stubs(['$require', '$include', '$coerce_to?', '$coerce_to', '$raise', '$===', '$format', '$to_s', '$respond_to?', '$to_str', '$<=>', '$==', '$=~', '$new', '$force_encoding', '$casecmp', '$empty?', '$ljust', '$ceil', '$/', '$+', '$rjust', '$floor', '$to_a', '$each_char', '$to_proc', '$coerce_to!', '$copy_singleton_methods', '$initialize_clone', '$initialize_dup', '$enum_for', '$size', '$chomp', '$[]', '$to_i', '$each_line', '$class', '$match', '$captures', '$proc', '$succ', '$escape']);\n \n self.$require(\"corelib/comparable\");\n self.$require(\"corelib/regexp\");\n (function($base, $super, $parent_nesting) {\n function $String(){};\n var self = $String = $klass($base, $super, 'String', $String);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String___id___1, TMP_String_try_convert_2, TMP_String_new_3, TMP_String_initialize_4, TMP_String_$_5, TMP_String_$_6, TMP_String_$_7, TMP_String_$lt$eq$gt_8, TMP_String_$eq$eq_9, TMP_String_$eq$_10, TMP_String_$$_11, TMP_String_b_12, TMP_String_capitalize_13, TMP_String_casecmp_14, TMP_String_casecmp$q_15, TMP_String_center_16, TMP_String_chars_17, TMP_String_chomp_18, TMP_String_chop_19, TMP_String_chr_20, TMP_String_clone_21, TMP_String_dup_22, TMP_String_count_23, TMP_String_delete_24, TMP_String_delete_prefix_25, TMP_String_delete_suffix_26, TMP_String_downcase_27, TMP_String_each_char_28, TMP_String_each_line_30, TMP_String_empty$q_31, TMP_String_end_with$q_32, TMP_String_gsub_33, TMP_String_hash_34, TMP_String_hex_35, TMP_String_include$q_36, TMP_String_index_37, TMP_String_inspect_38, TMP_String_intern_39, TMP_String_lines_40, TMP_String_length_41, TMP_String_ljust_42, TMP_String_lstrip_43, TMP_String_ascii_only$q_44, TMP_String_match_45, TMP_String_next_46, TMP_String_oct_47, TMP_String_ord_48, TMP_String_partition_49, TMP_String_reverse_50, TMP_String_rindex_51, TMP_String_rjust_52, TMP_String_rpartition_53, TMP_String_rstrip_54, TMP_String_scan_55, TMP_String_split_56, TMP_String_squeeze_57, TMP_String_start_with$q_58, TMP_String_strip_59, TMP_String_sub_60, TMP_String_sum_61, TMP_String_swapcase_62, TMP_String_to_f_63, TMP_String_to_i_64, TMP_String_to_proc_66, TMP_String_to_s_67, TMP_String_tr_68, TMP_String_tr_s_69, TMP_String_upcase_70, TMP_String_upto_71, TMP_String_instance_variables_72, TMP_String__load_73, TMP_String_unpack_74, TMP_String_unpack1_75;\n\n def.length = nil;\n \n self.$include($$($nesting, 'Comparable'));\n def.$$is_string = true;\n \n Opal.def(self, '$__id__', TMP_String___id___1 = function $$__id__() {\n var self = this;\n\n return self.toString();\n }, TMP_String___id___1.$$arity = 0);\n Opal.alias(self, \"object_id\", \"__id__\");\n Opal.defs(self, '$try_convert', TMP_String_try_convert_2 = function $$try_convert(what) {\n var self = this;\n\n return $$($nesting, 'Opal')['$coerce_to?'](what, $$($nesting, 'String'), \"to_str\")\n }, TMP_String_try_convert_2.$$arity = 1);\n Opal.defs(self, '$new', TMP_String_new_3 = function(str) {\n var self = this;\n\n if (str == null) {\n str = \"\";\n }\n \n str = $$($nesting, 'Opal').$coerce_to(str, $$($nesting, 'String'), \"to_str\");\n return new String(str);;\n }, TMP_String_new_3.$$arity = -1);\n \n Opal.def(self, '$initialize', TMP_String_initialize_4 = function $$initialize(str) {\n var self = this;\n\n \n \n if (str === undefined) {\n return self;\n }\n ;\n return self.$raise($$($nesting, 'NotImplementedError'), \"Mutable strings are not supported in Opal.\");\n }, TMP_String_initialize_4.$$arity = -1);\n \n Opal.def(self, '$%', TMP_String_$_5 = function(data) {\n var self = this;\n\n if ($truthy($$($nesting, 'Array')['$==='](data))) {\n return $send(self, 'format', [self].concat(Opal.to_a(data)))\n } else {\n return self.$format(self, data)\n }\n }, TMP_String_$_5.$$arity = 1);\n \n Opal.def(self, '$*', TMP_String_$_6 = function(count) {\n var self = this;\n\n \n count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), \"to_int\");\n\n if (count < 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"negative argument\")\n }\n\n if (count === 0) {\n return '';\n }\n\n var result = '',\n string = self.toString();\n\n // All credit for the bit-twiddling magic code below goes to Mozilla\n // polyfill implementation of String.prototype.repeat() posted here:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n if (string.length * count >= 1 << 28) {\n self.$raise($$($nesting, 'RangeError'), \"multiply count must not overflow maximum string size\")\n }\n\n for (;;) {\n if ((count & 1) === 1) {\n result += string;\n }\n count >>>= 1;\n if (count === 0) {\n break;\n }\n string += string;\n }\n\n return result;\n \n }, TMP_String_$_6.$$arity = 1);\n \n Opal.def(self, '$+', TMP_String_$_7 = function(other) {\n var self = this;\n\n \n other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), \"to_str\");\n return self + other.$to_s();\n }, TMP_String_$_7.$$arity = 1);\n \n Opal.def(self, '$<=>', TMP_String_$lt$eq$gt_8 = function(other) {\n var self = this;\n\n if ($truthy(other['$respond_to?'](\"to_str\"))) {\n \n other = other.$to_str().$to_s();\n return self > other ? 1 : (self < other ? -1 : 0);;\n } else {\n \n var cmp = other['$<=>'](self);\n\n if (cmp === nil) {\n return nil;\n }\n else {\n return cmp > 0 ? -1 : (cmp < 0 ? 1 : 0);\n }\n \n }\n }, TMP_String_$lt$eq$gt_8.$$arity = 1);\n \n Opal.def(self, '$==', TMP_String_$eq$eq_9 = function(other) {\n var self = this;\n\n \n if (other.$$is_string) {\n return self.toString() === other.toString();\n }\n if ($$($nesting, 'Opal')['$respond_to?'](other, \"to_str\")) {\n return other['$=='](self);\n }\n return false;\n \n }, TMP_String_$eq$eq_9.$$arity = 1);\n Opal.alias(self, \"eql?\", \"==\");\n Opal.alias(self, \"===\", \"==\");\n \n Opal.def(self, '$=~', TMP_String_$eq$_10 = function(other) {\n var self = this;\n\n \n if (other.$$is_string) {\n self.$raise($$($nesting, 'TypeError'), \"type mismatch: String given\");\n }\n\n return other['$=~'](self);\n \n }, TMP_String_$eq$_10.$$arity = 1);\n \n Opal.def(self, '$[]', TMP_String_$$_11 = function(index, length) {\n var self = this;\n\n \n var size = self.length, exclude;\n\n if (index.$$is_range) {\n exclude = index.excl;\n length = $$($nesting, 'Opal').$coerce_to(index.end, $$($nesting, 'Integer'), \"to_int\");\n index = $$($nesting, 'Opal').$coerce_to(index.begin, $$($nesting, 'Integer'), \"to_int\");\n\n if (Math.abs(index) > size) {\n return nil;\n }\n\n if (index < 0) {\n index += size;\n }\n\n if (length < 0) {\n length += size;\n }\n\n if (!exclude) {\n length += 1;\n }\n\n length = length - index;\n\n if (length < 0) {\n length = 0;\n }\n\n return self.substr(index, length);\n }\n\n\n if (index.$$is_string) {\n if (length != null) {\n self.$raise($$($nesting, 'TypeError'))\n }\n return self.indexOf(index) !== -1 ? index : nil;\n }\n\n\n if (index.$$is_regexp) {\n var match = self.match(index);\n\n if (match === null) {\n ($gvars[\"~\"] = nil)\n return nil;\n }\n\n ($gvars[\"~\"] = $$($nesting, 'MatchData').$new(index, match))\n\n if (length == null) {\n return match[0];\n }\n\n length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), \"to_int\");\n\n if (length < 0 && -length < match.length) {\n return match[length += match.length];\n }\n\n if (length >= 0 && length < match.length) {\n return match[length];\n }\n\n return nil;\n }\n\n\n index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), \"to_int\");\n\n if (index < 0) {\n index += size;\n }\n\n if (length == null) {\n if (index >= size || index < 0) {\n return nil;\n }\n return self.substr(index, 1);\n }\n\n length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), \"to_int\");\n\n if (length < 0) {\n return nil;\n }\n\n if (index > size || index < 0) {\n return nil;\n }\n\n return self.substr(index, length);\n \n }, TMP_String_$$_11.$$arity = -2);\n Opal.alias(self, \"byteslice\", \"[]\");\n \n Opal.def(self, '$b', TMP_String_b_12 = function $$b() {\n var self = this;\n\n return self.$force_encoding(\"binary\")\n }, TMP_String_b_12.$$arity = 0);\n \n Opal.def(self, '$capitalize', TMP_String_capitalize_13 = function $$capitalize() {\n var self = this;\n\n return self.charAt(0).toUpperCase() + self.substr(1).toLowerCase();\n }, TMP_String_capitalize_13.$$arity = 0);\n \n Opal.def(self, '$casecmp', TMP_String_casecmp_14 = function $$casecmp(other) {\n var self = this;\n\n \n if ($truthy(other['$respond_to?'](\"to_str\"))) {\n } else {\n return nil\n };\n other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), \"to_str\").$to_s();\n \n var ascii_only = /^[\\x00-\\x7F]*$/;\n if (ascii_only.test(self) && ascii_only.test(other)) {\n self = self.toLowerCase();\n other = other.toLowerCase();\n }\n ;\n return self['$<=>'](other);\n }, TMP_String_casecmp_14.$$arity = 1);\n \n Opal.def(self, '$casecmp?', TMP_String_casecmp$q_15 = function(other) {\n var self = this;\n\n \n var cmp = self.$casecmp(other);\n if (cmp === nil) {\n return nil;\n } else {\n return cmp === 0;\n }\n \n }, TMP_String_casecmp$q_15.$$arity = 1);\n \n Opal.def(self, '$center', TMP_String_center_16 = function $$center(width, padstr) {\n var self = this;\n\n if (padstr == null) {\n padstr = \" \";\n }\n \n width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), \"to_int\");\n padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), \"to_str\").$to_s();\n if ($truthy(padstr['$empty?']())) {\n self.$raise($$($nesting, 'ArgumentError'), \"zero width padding\")};\n if ($truthy(width <= self.length)) {\n return self};\n \n var ljustified = self.$ljust($rb_divide($rb_plus(width, self.length), 2).$ceil(), padstr),\n rjustified = self.$rjust($rb_divide($rb_plus(width, self.length), 2).$floor(), padstr);\n\n return rjustified + ljustified.slice(self.length);\n ;\n }, TMP_String_center_16.$$arity = -2);\n \n Opal.def(self, '$chars', TMP_String_chars_17 = function $$chars() {\n var self = this, $iter = TMP_String_chars_17.$$p, block = $iter || nil;\n\n if ($iter) TMP_String_chars_17.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return self.$each_char().$to_a()\n };\n return $send(self, 'each_char', [], block.$to_proc());\n }, TMP_String_chars_17.$$arity = 0);\n \n Opal.def(self, '$chomp', TMP_String_chomp_18 = function $$chomp(separator) {\n var self = this;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n if (separator == null) {\n separator = $gvars[\"/\"];\n }\n \n if ($truthy(separator === nil || self.length === 0)) {\n return self};\n separator = $$($nesting, 'Opal')['$coerce_to!'](separator, $$($nesting, 'String'), \"to_str\").$to_s();\n \n if (separator === \"\\n\") {\n return self.replace(/\\r?\\n?$/, '');\n }\n else if (separator === \"\") {\n return self.replace(/(\\r?\\n)+$/, '');\n }\n else if (self.length > separator.length) {\n var tail = self.substr(self.length - separator.length, separator.length);\n\n if (tail === separator) {\n return self.substr(0, self.length - separator.length);\n }\n }\n ;\n return self;\n }, TMP_String_chomp_18.$$arity = -1);\n \n Opal.def(self, '$chop', TMP_String_chop_19 = function $$chop() {\n var self = this;\n\n \n var length = self.length;\n\n if (length <= 1) {\n return \"\";\n }\n\n if (self.charAt(length - 1) === \"\\n\" && self.charAt(length - 2) === \"\\r\") {\n return self.substr(0, length - 2);\n }\n else {\n return self.substr(0, length - 1);\n }\n \n }, TMP_String_chop_19.$$arity = 0);\n \n Opal.def(self, '$chr', TMP_String_chr_20 = function $$chr() {\n var self = this;\n\n return self.charAt(0);\n }, TMP_String_chr_20.$$arity = 0);\n \n Opal.def(self, '$clone', TMP_String_clone_21 = function $$clone() {\n var self = this, copy = nil;\n\n \n copy = self.slice();\n copy.$copy_singleton_methods(self);\n copy.$initialize_clone(self);\n return copy;\n }, TMP_String_clone_21.$$arity = 0);\n \n Opal.def(self, '$dup', TMP_String_dup_22 = function $$dup() {\n var self = this, copy = nil;\n\n \n copy = self.slice();\n copy.$initialize_dup(self);\n return copy;\n }, TMP_String_dup_22.$$arity = 0);\n \n Opal.def(self, '$count', TMP_String_count_23 = function $$count($a_rest) {\n var self = this, sets;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n sets = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n sets[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if (sets.length === 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"ArgumentError: wrong number of arguments (0 for 1+)\")\n }\n var char_class = char_class_from_char_sets(sets);\n if (char_class === null) {\n return 0;\n }\n return self.length - self.replace(new RegExp(char_class, 'g'), '').length;\n \n }, TMP_String_count_23.$$arity = -1);\n \n Opal.def(self, '$delete', TMP_String_delete_24 = function($a_rest) {\n var self = this, sets;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n sets = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n sets[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if (sets.length === 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"ArgumentError: wrong number of arguments (0 for 1+)\")\n }\n var char_class = char_class_from_char_sets(sets);\n if (char_class === null) {\n return self;\n }\n return self.replace(new RegExp(char_class, 'g'), '');\n \n }, TMP_String_delete_24.$$arity = -1);\n \n Opal.def(self, '$delete_prefix', TMP_String_delete_prefix_25 = function $$delete_prefix(prefix) {\n var self = this;\n\n \n if (!prefix.$$is_string) {\n (prefix = $$($nesting, 'Opal').$coerce_to(prefix, $$($nesting, 'String'), \"to_str\"))\n }\n\n if (self.slice(0, prefix.length) === prefix) {\n return self.slice(prefix.length);\n } else {\n return self;\n }\n \n }, TMP_String_delete_prefix_25.$$arity = 1);\n \n Opal.def(self, '$delete_suffix', TMP_String_delete_suffix_26 = function $$delete_suffix(suffix) {\n var self = this;\n\n \n if (!suffix.$$is_string) {\n (suffix = $$($nesting, 'Opal').$coerce_to(suffix, $$($nesting, 'String'), \"to_str\"))\n }\n\n if (self.slice(self.length - suffix.length) === suffix) {\n return self.slice(0, self.length - suffix.length);\n } else {\n return self;\n }\n \n }, TMP_String_delete_suffix_26.$$arity = 1);\n \n Opal.def(self, '$downcase', TMP_String_downcase_27 = function $$downcase() {\n var self = this;\n\n return self.toLowerCase();\n }, TMP_String_downcase_27.$$arity = 0);\n \n Opal.def(self, '$each_char', TMP_String_each_char_28 = function $$each_char() {\n var TMP_29, self = this, $iter = TMP_String_each_char_28.$$p, block = $iter || nil;\n\n if ($iter) TMP_String_each_char_28.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each_char\"], (TMP_29 = function(){var self = TMP_29.$$s || this;\n\n return self.$size()}, TMP_29.$$s = self, TMP_29.$$arity = 0, TMP_29))\n };\n \n for (var i = 0, length = self.length; i < length; i++) {\n Opal.yield1(block, self.charAt(i));\n }\n ;\n return self;\n }, TMP_String_each_char_28.$$arity = 0);\n \n Opal.def(self, '$each_line', TMP_String_each_line_30 = function $$each_line(separator) {\n var self = this, $iter = TMP_String_each_line_30.$$p, block = $iter || nil;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n if (separator == null) {\n separator = $gvars[\"/\"];\n }\n if ($iter) TMP_String_each_line_30.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"each_line\", separator)\n };\n \n if (separator === nil) {\n Opal.yield1(block, self);\n\n return self;\n }\n\n separator = $$($nesting, 'Opal').$coerce_to(separator, $$($nesting, 'String'), \"to_str\")\n\n var a, i, n, length, chomped, trailing, splitted;\n\n if (separator.length === 0) {\n for (a = self.split(/(\\n{2,})/), i = 0, n = a.length; i < n; i += 2) {\n if (a[i] || a[i + 1]) {\n Opal.yield1(block, (a[i] || \"\") + (a[i + 1] || \"\"));\n }\n }\n\n return self;\n }\n\n chomped = self.$chomp(separator);\n trailing = self.length != chomped.length;\n splitted = chomped.split(separator);\n\n for (i = 0, length = splitted.length; i < length; i++) {\n if (i < length - 1 || trailing) {\n Opal.yield1(block, splitted[i] + separator);\n }\n else {\n Opal.yield1(block, splitted[i]);\n }\n }\n ;\n return self;\n }, TMP_String_each_line_30.$$arity = -1);\n \n Opal.def(self, '$empty?', TMP_String_empty$q_31 = function() {\n var self = this;\n\n return self.length === 0;\n }, TMP_String_empty$q_31.$$arity = 0);\n \n Opal.def(self, '$end_with?', TMP_String_end_with$q_32 = function($a_rest) {\n var self = this, suffixes;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n suffixes = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n suffixes[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n for (var i = 0, length = suffixes.length; i < length; i++) {\n var suffix = $$($nesting, 'Opal').$coerce_to(suffixes[i], $$($nesting, 'String'), \"to_str\").$to_s();\n\n if (self.length >= suffix.length &&\n self.substr(self.length - suffix.length, suffix.length) == suffix) {\n return true;\n }\n }\n ;\n return false;\n }, TMP_String_end_with$q_32.$$arity = -1);\n Opal.alias(self, \"equal?\", \"===\");\n \n Opal.def(self, '$gsub', TMP_String_gsub_33 = function $$gsub(pattern, replacement) {\n var self = this, $iter = TMP_String_gsub_33.$$p, block = $iter || nil;\n\n if ($iter) TMP_String_gsub_33.$$p = null;\n \n if (replacement === undefined && block === nil) {\n return self.$enum_for(\"gsub\", pattern);\n }\n\n var result = '', match_data = nil, index = 0, match, _replacement;\n\n if (pattern.$$is_regexp) {\n pattern = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : ''));\n } else {\n pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), \"to_str\");\n pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'gm');\n }\n\n while (true) {\n match = pattern.exec(self);\n\n if (match === null) {\n ($gvars[\"~\"] = nil)\n result += self.slice(index);\n break;\n }\n\n match_data = $$($nesting, 'MatchData').$new(pattern, match);\n\n if (replacement === undefined) {\n _replacement = block(match[0]);\n }\n else if (replacement.$$is_hash) {\n _replacement = (replacement)['$[]'](match[0]).$to_s();\n }\n else {\n if (!replacement.$$is_string) {\n replacement = $$($nesting, 'Opal').$coerce_to(replacement, $$($nesting, 'String'), \"to_str\");\n }\n _replacement = replacement.replace(/([\\\\]+)([0-9+&`'])/g, function (original, slashes, command) {\n if (slashes.length % 2 === 0) {\n return original;\n }\n switch (command) {\n case \"+\":\n for (var i = match.length - 1; i > 0; i--) {\n if (match[i] !== undefined) {\n return slashes.slice(1) + match[i];\n }\n }\n return '';\n case \"&\": return slashes.slice(1) + match[0];\n case \"`\": return slashes.slice(1) + self.slice(0, match.index);\n case \"'\": return slashes.slice(1) + self.slice(match.index + match[0].length);\n default: return slashes.slice(1) + (match[command] || '');\n }\n }).replace(/\\\\\\\\/g, '\\\\');\n }\n\n if (pattern.lastIndex === match.index) {\n result += (_replacement + self.slice(index, match.index + 1))\n pattern.lastIndex += 1;\n }\n else {\n result += (self.slice(index, match.index) + _replacement)\n }\n index = pattern.lastIndex;\n }\n\n ($gvars[\"~\"] = match_data)\n return result;\n \n }, TMP_String_gsub_33.$$arity = -2);\n \n Opal.def(self, '$hash', TMP_String_hash_34 = function $$hash() {\n var self = this;\n\n return self.toString();\n }, TMP_String_hash_34.$$arity = 0);\n \n Opal.def(self, '$hex', TMP_String_hex_35 = function $$hex() {\n var self = this;\n\n return self.$to_i(16)\n }, TMP_String_hex_35.$$arity = 0);\n \n Opal.def(self, '$include?', TMP_String_include$q_36 = function(other) {\n var self = this;\n\n \n if (!other.$$is_string) {\n (other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'String'), \"to_str\"))\n }\n return self.indexOf(other) !== -1;\n \n }, TMP_String_include$q_36.$$arity = 1);\n \n Opal.def(self, '$index', TMP_String_index_37 = function $$index(search, offset) {\n var self = this;\n\n \n var index,\n match,\n regex;\n\n if (offset === undefined) {\n offset = 0;\n } else {\n offset = $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), \"to_int\");\n if (offset < 0) {\n offset += self.length;\n if (offset < 0) {\n return nil;\n }\n }\n }\n\n if (search.$$is_regexp) {\n regex = new RegExp(search.source, 'gm' + (search.ignoreCase ? 'i' : ''));\n while (true) {\n match = regex.exec(self);\n if (match === null) {\n ($gvars[\"~\"] = nil);\n index = -1;\n break;\n }\n if (match.index >= offset) {\n ($gvars[\"~\"] = $$($nesting, 'MatchData').$new(regex, match))\n index = match.index;\n break;\n }\n regex.lastIndex = match.index + 1;\n }\n } else {\n search = $$($nesting, 'Opal').$coerce_to(search, $$($nesting, 'String'), \"to_str\");\n if (search.length === 0 && offset > self.length) {\n index = -1;\n } else {\n index = self.indexOf(search, offset);\n }\n }\n\n return index === -1 ? nil : index;\n \n }, TMP_String_index_37.$$arity = -2);\n \n Opal.def(self, '$inspect', TMP_String_inspect_38 = function $$inspect() {\n var self = this;\n\n \n var escapable = /[\\\\\\\"\\x00-\\x1f\\u007F-\\u009F\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n meta = {\n '\\u0007': '\\\\a',\n '\\u001b': '\\\\e',\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\\v': '\\\\v',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n escaped = self.replace(escapable, function (chr) {\n return meta[chr] || '\\\\u' + ('0000' + chr.charCodeAt(0).toString(16).toUpperCase()).slice(-4);\n });\n return '\"' + escaped.replace(/\\#[\\$\\@\\{]/g, '\\\\$&') + '\"';\n \n }, TMP_String_inspect_38.$$arity = 0);\n \n Opal.def(self, '$intern', TMP_String_intern_39 = function $$intern() {\n var self = this;\n\n return self\n }, TMP_String_intern_39.$$arity = 0);\n \n Opal.def(self, '$lines', TMP_String_lines_40 = function $$lines(separator) {\n var self = this, $iter = TMP_String_lines_40.$$p, block = $iter || nil, e = nil;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n if (separator == null) {\n separator = $gvars[\"/\"];\n }\n if ($iter) TMP_String_lines_40.$$p = null;\n \n e = $send(self, 'each_line', [separator], block.$to_proc());\n if ($truthy(block)) {\n return self\n } else {\n return e.$to_a()\n };\n }, TMP_String_lines_40.$$arity = -1);\n \n Opal.def(self, '$length', TMP_String_length_41 = function $$length() {\n var self = this;\n\n return self.length;\n }, TMP_String_length_41.$$arity = 0);\n \n Opal.def(self, '$ljust', TMP_String_ljust_42 = function $$ljust(width, padstr) {\n var self = this;\n\n if (padstr == null) {\n padstr = \" \";\n }\n \n width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), \"to_int\");\n padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), \"to_str\").$to_s();\n if ($truthy(padstr['$empty?']())) {\n self.$raise($$($nesting, 'ArgumentError'), \"zero width padding\")};\n if ($truthy(width <= self.length)) {\n return self};\n \n var index = -1,\n result = \"\";\n\n width -= self.length;\n\n while (++index < width) {\n result += padstr;\n }\n\n return self + result.slice(0, width);\n ;\n }, TMP_String_ljust_42.$$arity = -2);\n \n Opal.def(self, '$lstrip', TMP_String_lstrip_43 = function $$lstrip() {\n var self = this;\n\n return self.replace(/^\\s*/, '');\n }, TMP_String_lstrip_43.$$arity = 0);\n \n Opal.def(self, '$ascii_only?', TMP_String_ascii_only$q_44 = function() {\n var self = this;\n\n return self.match(/[ -~\\n]*/)[0] === self;\n }, TMP_String_ascii_only$q_44.$$arity = 0);\n \n Opal.def(self, '$match', TMP_String_match_45 = function $$match(pattern, pos) {\n var $a, self = this, $iter = TMP_String_match_45.$$p, block = $iter || nil;\n\n if ($iter) TMP_String_match_45.$$p = null;\n \n if ($truthy(($truthy($a = $$($nesting, 'String')['$==='](pattern)) ? $a : pattern['$respond_to?'](\"to_str\")))) {\n pattern = $$($nesting, 'Regexp').$new(pattern.$to_str())};\n if ($truthy($$($nesting, 'Regexp')['$==='](pattern))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"wrong argument type \" + (pattern.$class()) + \" (expected Regexp)\")\n };\n return $send(pattern, 'match', [self, pos], block.$to_proc());\n }, TMP_String_match_45.$$arity = -2);\n \n Opal.def(self, '$next', TMP_String_next_46 = function $$next() {\n var self = this;\n\n \n var i = self.length;\n if (i === 0) {\n return '';\n }\n var result = self;\n var first_alphanum_char_index = self.search(/[a-zA-Z0-9]/);\n var carry = false;\n var code;\n while (i--) {\n code = self.charCodeAt(i);\n if ((code >= 48 && code <= 57) ||\n (code >= 65 && code <= 90) ||\n (code >= 97 && code <= 122)) {\n switch (code) {\n case 57:\n carry = true;\n code = 48;\n break;\n case 90:\n carry = true;\n code = 65;\n break;\n case 122:\n carry = true;\n code = 97;\n break;\n default:\n carry = false;\n code += 1;\n }\n } else {\n if (first_alphanum_char_index === -1) {\n if (code === 255) {\n carry = true;\n code = 0;\n } else {\n carry = false;\n code += 1;\n }\n } else {\n carry = true;\n }\n }\n result = result.slice(0, i) + String.fromCharCode(code) + result.slice(i + 1);\n if (carry && (i === 0 || i === first_alphanum_char_index)) {\n switch (code) {\n case 65:\n break;\n case 97:\n break;\n default:\n code += 1;\n }\n if (i === 0) {\n result = String.fromCharCode(code) + result;\n } else {\n result = result.slice(0, i) + String.fromCharCode(code) + result.slice(i);\n }\n carry = false;\n }\n if (!carry) {\n break;\n }\n }\n return result;\n \n }, TMP_String_next_46.$$arity = 0);\n \n Opal.def(self, '$oct', TMP_String_oct_47 = function $$oct() {\n var self = this;\n\n \n var result,\n string = self,\n radix = 8;\n\n if (/^\\s*_/.test(string)) {\n return 0;\n }\n\n string = string.replace(/^(\\s*[+-]?)(0[bodx]?)(.+)$/i, function (original, head, flag, tail) {\n switch (tail.charAt(0)) {\n case '+':\n case '-':\n return original;\n case '0':\n if (tail.charAt(1) === 'x' && flag === '0x') {\n return original;\n }\n }\n switch (flag) {\n case '0b':\n radix = 2;\n break;\n case '0':\n case '0o':\n radix = 8;\n break;\n case '0d':\n radix = 10;\n break;\n case '0x':\n radix = 16;\n break;\n }\n return head + tail;\n });\n\n result = parseInt(string.replace(/_(?!_)/g, ''), radix);\n return isNaN(result) ? 0 : result;\n \n }, TMP_String_oct_47.$$arity = 0);\n \n Opal.def(self, '$ord', TMP_String_ord_48 = function $$ord() {\n var self = this;\n\n return self.charCodeAt(0);\n }, TMP_String_ord_48.$$arity = 0);\n \n Opal.def(self, '$partition', TMP_String_partition_49 = function $$partition(sep) {\n var self = this;\n\n \n var i, m;\n\n if (sep.$$is_regexp) {\n m = sep.exec(self);\n if (m === null) {\n i = -1;\n } else {\n $$($nesting, 'MatchData').$new(sep, m);\n sep = m[0];\n i = m.index;\n }\n } else {\n sep = $$($nesting, 'Opal').$coerce_to(sep, $$($nesting, 'String'), \"to_str\");\n i = self.indexOf(sep);\n }\n\n if (i === -1) {\n return [self, '', ''];\n }\n\n return [\n self.slice(0, i),\n self.slice(i, i + sep.length),\n self.slice(i + sep.length)\n ];\n \n }, TMP_String_partition_49.$$arity = 1);\n \n Opal.def(self, '$reverse', TMP_String_reverse_50 = function $$reverse() {\n var self = this;\n\n return self.split('').reverse().join('');\n }, TMP_String_reverse_50.$$arity = 0);\n \n Opal.def(self, '$rindex', TMP_String_rindex_51 = function $$rindex(search, offset) {\n var self = this;\n\n \n var i, m, r, _m;\n\n if (offset === undefined) {\n offset = self.length;\n } else {\n offset = $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), \"to_int\");\n if (offset < 0) {\n offset += self.length;\n if (offset < 0) {\n return nil;\n }\n }\n }\n\n if (search.$$is_regexp) {\n m = null;\n r = new RegExp(search.source, 'gm' + (search.ignoreCase ? 'i' : ''));\n while (true) {\n _m = r.exec(self);\n if (_m === null || _m.index > offset) {\n break;\n }\n m = _m;\n r.lastIndex = m.index + 1;\n }\n if (m === null) {\n ($gvars[\"~\"] = nil)\n i = -1;\n } else {\n $$($nesting, 'MatchData').$new(r, m);\n i = m.index;\n }\n } else {\n search = $$($nesting, 'Opal').$coerce_to(search, $$($nesting, 'String'), \"to_str\");\n i = self.lastIndexOf(search, offset);\n }\n\n return i === -1 ? nil : i;\n \n }, TMP_String_rindex_51.$$arity = -2);\n \n Opal.def(self, '$rjust', TMP_String_rjust_52 = function $$rjust(width, padstr) {\n var self = this;\n\n if (padstr == null) {\n padstr = \" \";\n }\n \n width = $$($nesting, 'Opal').$coerce_to(width, $$($nesting, 'Integer'), \"to_int\");\n padstr = $$($nesting, 'Opal').$coerce_to(padstr, $$($nesting, 'String'), \"to_str\").$to_s();\n if ($truthy(padstr['$empty?']())) {\n self.$raise($$($nesting, 'ArgumentError'), \"zero width padding\")};\n if ($truthy(width <= self.length)) {\n return self};\n \n var chars = Math.floor(width - self.length),\n patterns = Math.floor(chars / padstr.length),\n result = Array(patterns + 1).join(padstr),\n remaining = chars - result.length;\n\n return result + padstr.slice(0, remaining) + self;\n ;\n }, TMP_String_rjust_52.$$arity = -2);\n \n Opal.def(self, '$rpartition', TMP_String_rpartition_53 = function $$rpartition(sep) {\n var self = this;\n\n \n var i, m, r, _m;\n\n if (sep.$$is_regexp) {\n m = null;\n r = new RegExp(sep.source, 'gm' + (sep.ignoreCase ? 'i' : ''));\n\n while (true) {\n _m = r.exec(self);\n if (_m === null) {\n break;\n }\n m = _m;\n r.lastIndex = m.index + 1;\n }\n\n if (m === null) {\n i = -1;\n } else {\n $$($nesting, 'MatchData').$new(r, m);\n sep = m[0];\n i = m.index;\n }\n\n } else {\n sep = $$($nesting, 'Opal').$coerce_to(sep, $$($nesting, 'String'), \"to_str\");\n i = self.lastIndexOf(sep);\n }\n\n if (i === -1) {\n return ['', '', self];\n }\n\n return [\n self.slice(0, i),\n self.slice(i, i + sep.length),\n self.slice(i + sep.length)\n ];\n \n }, TMP_String_rpartition_53.$$arity = 1);\n \n Opal.def(self, '$rstrip', TMP_String_rstrip_54 = function $$rstrip() {\n var self = this;\n\n return self.replace(/[\\s\\u0000]*$/, '');\n }, TMP_String_rstrip_54.$$arity = 0);\n \n Opal.def(self, '$scan', TMP_String_scan_55 = function $$scan(pattern) {\n var self = this, $iter = TMP_String_scan_55.$$p, block = $iter || nil;\n\n if ($iter) TMP_String_scan_55.$$p = null;\n \n var result = [],\n match_data = nil,\n match;\n\n if (pattern.$$is_regexp) {\n pattern = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : ''));\n } else {\n pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), \"to_str\");\n pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'gm');\n }\n\n while ((match = pattern.exec(self)) != null) {\n match_data = $$($nesting, 'MatchData').$new(pattern, match);\n if (block === nil) {\n match.length == 1 ? result.push(match[0]) : result.push((match_data).$captures());\n } else {\n match.length == 1 ? block(match[0]) : block.call(self, (match_data).$captures());\n }\n if (pattern.lastIndex === match.index) {\n pattern.lastIndex += 1;\n }\n }\n\n ($gvars[\"~\"] = match_data)\n\n return (block !== nil ? self : result);\n \n }, TMP_String_scan_55.$$arity = 1);\n Opal.alias(self, \"size\", \"length\");\n Opal.alias(self, \"slice\", \"[]\");\n \n Opal.def(self, '$split', TMP_String_split_56 = function $$split(pattern, limit) {\n var $a, self = this;\n if ($gvars[\";\"] == null) $gvars[\";\"] = nil;\n\n \n if (self.length === 0) {\n return [];\n }\n\n if (limit === undefined) {\n limit = 0;\n } else {\n limit = $$($nesting, 'Opal')['$coerce_to!'](limit, $$($nesting, 'Integer'), \"to_int\");\n if (limit === 1) {\n return [self];\n }\n }\n\n if (pattern === undefined || pattern === nil) {\n pattern = ($truthy($a = $gvars[\";\"]) ? $a : \" \");\n }\n\n var result = [],\n string = self.toString(),\n index = 0,\n match,\n i, ii;\n\n if (pattern.$$is_regexp) {\n pattern = new RegExp(pattern.source, 'gm' + (pattern.ignoreCase ? 'i' : ''));\n } else {\n pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), \"to_str\").$to_s();\n if (pattern === ' ') {\n pattern = /\\s+/gm;\n string = string.replace(/^\\s+/, '');\n } else {\n pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'gm');\n }\n }\n\n result = string.split(pattern);\n\n if (result.length === 1 && result[0] === string) {\n return result;\n }\n\n while ((i = result.indexOf(undefined)) !== -1) {\n result.splice(i, 1);\n }\n\n if (limit === 0) {\n while (result[result.length - 1] === '') {\n result.length -= 1;\n }\n return result;\n }\n\n match = pattern.exec(string);\n\n if (limit < 0) {\n if (match !== null && match[0] === '' && pattern.source.indexOf('(?=') === -1) {\n for (i = 0, ii = match.length; i < ii; i++) {\n result.push('');\n }\n }\n return result;\n }\n\n if (match !== null && match[0] === '') {\n result.splice(limit - 1, result.length - 1, result.slice(limit - 1).join(''));\n return result;\n }\n\n if (limit >= result.length) {\n return result;\n }\n\n i = 0;\n while (match !== null) {\n i++;\n index = pattern.lastIndex;\n if (i + 1 === limit) {\n break;\n }\n match = pattern.exec(string);\n }\n result.splice(limit - 1, result.length - 1, string.slice(index));\n return result;\n \n }, TMP_String_split_56.$$arity = -1);\n \n Opal.def(self, '$squeeze', TMP_String_squeeze_57 = function $$squeeze($a_rest) {\n var self = this, sets;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n sets = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n sets[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if (sets.length === 0) {\n return self.replace(/(.)\\1+/g, '$1');\n }\n var char_class = char_class_from_char_sets(sets);\n if (char_class === null) {\n return self;\n }\n return self.replace(new RegExp('(' + char_class + ')\\\\1+', 'g'), '$1');\n \n }, TMP_String_squeeze_57.$$arity = -1);\n \n Opal.def(self, '$start_with?', TMP_String_start_with$q_58 = function($a_rest) {\n var self = this, prefixes;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n prefixes = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n prefixes[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n for (var i = 0, length = prefixes.length; i < length; i++) {\n var prefix = $$($nesting, 'Opal').$coerce_to(prefixes[i], $$($nesting, 'String'), \"to_str\").$to_s();\n\n if (self.indexOf(prefix) === 0) {\n return true;\n }\n }\n\n return false;\n \n }, TMP_String_start_with$q_58.$$arity = -1);\n \n Opal.def(self, '$strip', TMP_String_strip_59 = function $$strip() {\n var self = this;\n\n return self.replace(/^\\s*/, '').replace(/[\\s\\u0000]*$/, '');\n }, TMP_String_strip_59.$$arity = 0);\n \n Opal.def(self, '$sub', TMP_String_sub_60 = function $$sub(pattern, replacement) {\n var self = this, $iter = TMP_String_sub_60.$$p, block = $iter || nil;\n\n if ($iter) TMP_String_sub_60.$$p = null;\n \n if (!pattern.$$is_regexp) {\n pattern = $$($nesting, 'Opal').$coerce_to(pattern, $$($nesting, 'String'), \"to_str\");\n pattern = new RegExp(pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n }\n\n var result = pattern.exec(self);\n\n if (result === null) {\n ($gvars[\"~\"] = nil)\n return self.toString();\n }\n\n $$($nesting, 'MatchData').$new(pattern, result)\n\n if (replacement === undefined) {\n if (block === nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"wrong number of arguments (1 for 2)\")\n }\n return self.slice(0, result.index) + block(result[0]) + self.slice(result.index + result[0].length);\n }\n\n if (replacement.$$is_hash) {\n return self.slice(0, result.index) + (replacement)['$[]'](result[0]).$to_s() + self.slice(result.index + result[0].length);\n }\n\n replacement = $$($nesting, 'Opal').$coerce_to(replacement, $$($nesting, 'String'), \"to_str\");\n\n replacement = replacement.replace(/([\\\\]+)([0-9+&`'])/g, function (original, slashes, command) {\n if (slashes.length % 2 === 0) {\n return original;\n }\n switch (command) {\n case \"+\":\n for (var i = result.length - 1; i > 0; i--) {\n if (result[i] !== undefined) {\n return slashes.slice(1) + result[i];\n }\n }\n return '';\n case \"&\": return slashes.slice(1) + result[0];\n case \"`\": return slashes.slice(1) + self.slice(0, result.index);\n case \"'\": return slashes.slice(1) + self.slice(result.index + result[0].length);\n default: return slashes.slice(1) + (result[command] || '');\n }\n }).replace(/\\\\\\\\/g, '\\\\');\n\n return self.slice(0, result.index) + replacement + self.slice(result.index + result[0].length);\n \n }, TMP_String_sub_60.$$arity = -2);\n Opal.alias(self, \"succ\", \"next\");\n \n Opal.def(self, '$sum', TMP_String_sum_61 = function $$sum(n) {\n var self = this;\n\n if (n == null) {\n n = 16;\n }\n \n n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), \"to_int\");\n\n var result = 0,\n length = self.length,\n i = 0;\n\n for (; i < length; i++) {\n result += self.charCodeAt(i);\n }\n\n if (n <= 0) {\n return result;\n }\n\n return result & (Math.pow(2, n) - 1);\n \n }, TMP_String_sum_61.$$arity = -1);\n \n Opal.def(self, '$swapcase', TMP_String_swapcase_62 = function $$swapcase() {\n var self = this;\n\n \n var str = self.replace(/([a-z]+)|([A-Z]+)/g, function($0,$1,$2) {\n return $1 ? $0.toUpperCase() : $0.toLowerCase();\n });\n\n if (self.constructor === String) {\n return str;\n }\n\n return self.$class().$new(str);\n \n }, TMP_String_swapcase_62.$$arity = 0);\n \n Opal.def(self, '$to_f', TMP_String_to_f_63 = function $$to_f() {\n var self = this;\n\n \n if (self.charAt(0) === '_') {\n return 0;\n }\n\n var result = parseFloat(self.replace(/_/g, ''));\n\n if (isNaN(result) || result == Infinity || result == -Infinity) {\n return 0;\n }\n else {\n return result;\n }\n \n }, TMP_String_to_f_63.$$arity = 0);\n \n Opal.def(self, '$to_i', TMP_String_to_i_64 = function $$to_i(base) {\n var self = this;\n\n if (base == null) {\n base = 10;\n }\n \n var result,\n string = self.toLowerCase(),\n radix = $$($nesting, 'Opal').$coerce_to(base, $$($nesting, 'Integer'), \"to_int\");\n\n if (radix === 1 || radix < 0 || radix > 36) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid radix \" + (radix))\n }\n\n if (/^\\s*_/.test(string)) {\n return 0;\n }\n\n string = string.replace(/^(\\s*[+-]?)(0[bodx]?)(.+)$/, function (original, head, flag, tail) {\n switch (tail.charAt(0)) {\n case '+':\n case '-':\n return original;\n case '0':\n if (tail.charAt(1) === 'x' && flag === '0x' && (radix === 0 || radix === 16)) {\n return original;\n }\n }\n switch (flag) {\n case '0b':\n if (radix === 0 || radix === 2) {\n radix = 2;\n return head + tail;\n }\n break;\n case '0':\n case '0o':\n if (radix === 0 || radix === 8) {\n radix = 8;\n return head + tail;\n }\n break;\n case '0d':\n if (radix === 0 || radix === 10) {\n radix = 10;\n return head + tail;\n }\n break;\n case '0x':\n if (radix === 0 || radix === 16) {\n radix = 16;\n return head + tail;\n }\n break;\n }\n return original\n });\n\n result = parseInt(string.replace(/_(?!_)/g, ''), radix);\n return isNaN(result) ? 0 : result;\n \n }, TMP_String_to_i_64.$$arity = -1);\n \n Opal.def(self, '$to_proc', TMP_String_to_proc_66 = function $$to_proc() {\n var TMP_65, self = this, sym = nil;\n\n \n sym = self.valueOf();\n return $send(self, 'proc', [], (TMP_65 = function($a_rest){var self = TMP_65.$$s || this, block, args;\n\n block = TMP_65.$$p || nil;\n if (block) TMP_65.$$p = null;\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if (args.length === 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"no receiver given\")\n }\n var obj = args.shift();\n if (obj == null) obj = nil;\n return Opal.send(obj, sym, args, block);\n }, TMP_65.$$s = self, TMP_65.$$arity = -1, TMP_65));\n }, TMP_String_to_proc_66.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_String_to_s_67 = function $$to_s() {\n var self = this;\n\n return self.toString();\n }, TMP_String_to_s_67.$$arity = 0);\n Opal.alias(self, \"to_str\", \"to_s\");\n Opal.alias(self, \"to_sym\", \"intern\");\n \n Opal.def(self, '$tr', TMP_String_tr_68 = function $$tr(from, to) {\n var self = this;\n\n \n from = $$($nesting, 'Opal').$coerce_to(from, $$($nesting, 'String'), \"to_str\").$to_s();\n to = $$($nesting, 'Opal').$coerce_to(to, $$($nesting, 'String'), \"to_str\").$to_s();\n \n if (from.length == 0 || from === to) {\n return self;\n }\n\n var i, in_range, c, ch, start, end, length;\n var subs = {};\n var from_chars = from.split('');\n var from_length = from_chars.length;\n var to_chars = to.split('');\n var to_length = to_chars.length;\n\n var inverse = false;\n var global_sub = null;\n if (from_chars[0] === '^' && from_chars.length > 1) {\n inverse = true;\n from_chars.shift();\n global_sub = to_chars[to_length - 1]\n from_length -= 1;\n }\n\n var from_chars_expanded = [];\n var last_from = null;\n in_range = false;\n for (i = 0; i < from_length; i++) {\n ch = from_chars[i];\n if (last_from == null) {\n last_from = ch;\n from_chars_expanded.push(ch);\n }\n else if (ch === '-') {\n if (last_from === '-') {\n from_chars_expanded.push('-');\n from_chars_expanded.push('-');\n }\n else if (i == from_length - 1) {\n from_chars_expanded.push('-');\n }\n else {\n in_range = true;\n }\n }\n else if (in_range) {\n start = last_from.charCodeAt(0);\n end = ch.charCodeAt(0);\n if (start > end) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid range \\\"\" + (String.fromCharCode(start)) + \"-\" + (String.fromCharCode(end)) + \"\\\" in string transliteration\")\n }\n for (c = start + 1; c < end; c++) {\n from_chars_expanded.push(String.fromCharCode(c));\n }\n from_chars_expanded.push(ch);\n in_range = null;\n last_from = null;\n }\n else {\n from_chars_expanded.push(ch);\n }\n }\n\n from_chars = from_chars_expanded;\n from_length = from_chars.length;\n\n if (inverse) {\n for (i = 0; i < from_length; i++) {\n subs[from_chars[i]] = true;\n }\n }\n else {\n if (to_length > 0) {\n var to_chars_expanded = [];\n var last_to = null;\n in_range = false;\n for (i = 0; i < to_length; i++) {\n ch = to_chars[i];\n if (last_to == null) {\n last_to = ch;\n to_chars_expanded.push(ch);\n }\n else if (ch === '-') {\n if (last_to === '-') {\n to_chars_expanded.push('-');\n to_chars_expanded.push('-');\n }\n else if (i == to_length - 1) {\n to_chars_expanded.push('-');\n }\n else {\n in_range = true;\n }\n }\n else if (in_range) {\n start = last_to.charCodeAt(0);\n end = ch.charCodeAt(0);\n if (start > end) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid range \\\"\" + (String.fromCharCode(start)) + \"-\" + (String.fromCharCode(end)) + \"\\\" in string transliteration\")\n }\n for (c = start + 1; c < end; c++) {\n to_chars_expanded.push(String.fromCharCode(c));\n }\n to_chars_expanded.push(ch);\n in_range = null;\n last_to = null;\n }\n else {\n to_chars_expanded.push(ch);\n }\n }\n\n to_chars = to_chars_expanded;\n to_length = to_chars.length;\n }\n\n var length_diff = from_length - to_length;\n if (length_diff > 0) {\n var pad_char = (to_length > 0 ? to_chars[to_length - 1] : '');\n for (i = 0; i < length_diff; i++) {\n to_chars.push(pad_char);\n }\n }\n\n for (i = 0; i < from_length; i++) {\n subs[from_chars[i]] = to_chars[i];\n }\n }\n\n var new_str = ''\n for (i = 0, length = self.length; i < length; i++) {\n ch = self.charAt(i);\n var sub = subs[ch];\n if (inverse) {\n new_str += (sub == null ? global_sub : ch);\n }\n else {\n new_str += (sub != null ? sub : ch);\n }\n }\n return new_str;\n ;\n }, TMP_String_tr_68.$$arity = 2);\n \n Opal.def(self, '$tr_s', TMP_String_tr_s_69 = function $$tr_s(from, to) {\n var self = this;\n\n \n from = $$($nesting, 'Opal').$coerce_to(from, $$($nesting, 'String'), \"to_str\").$to_s();\n to = $$($nesting, 'Opal').$coerce_to(to, $$($nesting, 'String'), \"to_str\").$to_s();\n \n if (from.length == 0) {\n return self;\n }\n\n var i, in_range, c, ch, start, end, length;\n var subs = {};\n var from_chars = from.split('');\n var from_length = from_chars.length;\n var to_chars = to.split('');\n var to_length = to_chars.length;\n\n var inverse = false;\n var global_sub = null;\n if (from_chars[0] === '^' && from_chars.length > 1) {\n inverse = true;\n from_chars.shift();\n global_sub = to_chars[to_length - 1]\n from_length -= 1;\n }\n\n var from_chars_expanded = [];\n var last_from = null;\n in_range = false;\n for (i = 0; i < from_length; i++) {\n ch = from_chars[i];\n if (last_from == null) {\n last_from = ch;\n from_chars_expanded.push(ch);\n }\n else if (ch === '-') {\n if (last_from === '-') {\n from_chars_expanded.push('-');\n from_chars_expanded.push('-');\n }\n else if (i == from_length - 1) {\n from_chars_expanded.push('-');\n }\n else {\n in_range = true;\n }\n }\n else if (in_range) {\n start = last_from.charCodeAt(0);\n end = ch.charCodeAt(0);\n if (start > end) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid range \\\"\" + (String.fromCharCode(start)) + \"-\" + (String.fromCharCode(end)) + \"\\\" in string transliteration\")\n }\n for (c = start + 1; c < end; c++) {\n from_chars_expanded.push(String.fromCharCode(c));\n }\n from_chars_expanded.push(ch);\n in_range = null;\n last_from = null;\n }\n else {\n from_chars_expanded.push(ch);\n }\n }\n\n from_chars = from_chars_expanded;\n from_length = from_chars.length;\n\n if (inverse) {\n for (i = 0; i < from_length; i++) {\n subs[from_chars[i]] = true;\n }\n }\n else {\n if (to_length > 0) {\n var to_chars_expanded = [];\n var last_to = null;\n in_range = false;\n for (i = 0; i < to_length; i++) {\n ch = to_chars[i];\n if (last_from == null) {\n last_from = ch;\n to_chars_expanded.push(ch);\n }\n else if (ch === '-') {\n if (last_to === '-') {\n to_chars_expanded.push('-');\n to_chars_expanded.push('-');\n }\n else if (i == to_length - 1) {\n to_chars_expanded.push('-');\n }\n else {\n in_range = true;\n }\n }\n else if (in_range) {\n start = last_from.charCodeAt(0);\n end = ch.charCodeAt(0);\n if (start > end) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid range \\\"\" + (String.fromCharCode(start)) + \"-\" + (String.fromCharCode(end)) + \"\\\" in string transliteration\")\n }\n for (c = start + 1; c < end; c++) {\n to_chars_expanded.push(String.fromCharCode(c));\n }\n to_chars_expanded.push(ch);\n in_range = null;\n last_from = null;\n }\n else {\n to_chars_expanded.push(ch);\n }\n }\n\n to_chars = to_chars_expanded;\n to_length = to_chars.length;\n }\n\n var length_diff = from_length - to_length;\n if (length_diff > 0) {\n var pad_char = (to_length > 0 ? to_chars[to_length - 1] : '');\n for (i = 0; i < length_diff; i++) {\n to_chars.push(pad_char);\n }\n }\n\n for (i = 0; i < from_length; i++) {\n subs[from_chars[i]] = to_chars[i];\n }\n }\n var new_str = ''\n var last_substitute = null\n for (i = 0, length = self.length; i < length; i++) {\n ch = self.charAt(i);\n var sub = subs[ch]\n if (inverse) {\n if (sub == null) {\n if (last_substitute == null) {\n new_str += global_sub;\n last_substitute = true;\n }\n }\n else {\n new_str += ch;\n last_substitute = null;\n }\n }\n else {\n if (sub != null) {\n if (last_substitute == null || last_substitute !== sub) {\n new_str += sub;\n last_substitute = sub;\n }\n }\n else {\n new_str += ch;\n last_substitute = null;\n }\n }\n }\n return new_str;\n ;\n }, TMP_String_tr_s_69.$$arity = 2);\n \n Opal.def(self, '$upcase', TMP_String_upcase_70 = function $$upcase() {\n var self = this;\n\n return self.toUpperCase();\n }, TMP_String_upcase_70.$$arity = 0);\n \n Opal.def(self, '$upto', TMP_String_upto_71 = function $$upto(stop, excl) {\n var self = this, $iter = TMP_String_upto_71.$$p, block = $iter || nil;\n\n if (excl == null) {\n excl = false;\n }\n if ($iter) TMP_String_upto_71.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"upto\", stop, excl)\n };\n stop = $$($nesting, 'Opal').$coerce_to(stop, $$($nesting, 'String'), \"to_str\");\n \n var a, b, s = self.toString();\n\n if (s.length === 1 && stop.length === 1) {\n\n a = s.charCodeAt(0);\n b = stop.charCodeAt(0);\n\n while (a <= b) {\n if (excl && a === b) {\n break;\n }\n\n block(String.fromCharCode(a));\n\n a += 1;\n }\n\n } else if (parseInt(s, 10).toString() === s && parseInt(stop, 10).toString() === stop) {\n\n a = parseInt(s, 10);\n b = parseInt(stop, 10);\n\n while (a <= b) {\n if (excl && a === b) {\n break;\n }\n\n block(a.toString());\n\n a += 1;\n }\n\n } else {\n\n while (s.length <= stop.length && s <= stop) {\n if (excl && s === stop) {\n break;\n }\n\n block(s);\n\n s = (s).$succ();\n }\n\n }\n return self;\n ;\n }, TMP_String_upto_71.$$arity = -2);\n \n function char_class_from_char_sets(sets) {\n function explode_sequences_in_character_set(set) {\n var result = '',\n i, len = set.length,\n curr_char,\n skip_next_dash,\n char_code_from,\n char_code_upto,\n char_code;\n for (i = 0; i < len; i++) {\n curr_char = set.charAt(i);\n if (curr_char === '-' && i > 0 && i < (len - 1) && !skip_next_dash) {\n char_code_from = set.charCodeAt(i - 1);\n char_code_upto = set.charCodeAt(i + 1);\n if (char_code_from > char_code_upto) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid range \\\"\" + (char_code_from) + \"-\" + (char_code_upto) + \"\\\" in string transliteration\")\n }\n for (char_code = char_code_from + 1; char_code < char_code_upto + 1; char_code++) {\n result += String.fromCharCode(char_code);\n }\n skip_next_dash = true;\n i++;\n } else {\n skip_next_dash = (curr_char === '\\\\');\n result += curr_char;\n }\n }\n return result;\n }\n\n function intersection(setA, setB) {\n if (setA.length === 0) {\n return setB;\n }\n var result = '',\n i, len = setA.length,\n chr;\n for (i = 0; i < len; i++) {\n chr = setA.charAt(i);\n if (setB.indexOf(chr) !== -1) {\n result += chr;\n }\n }\n return result;\n }\n\n var i, len, set, neg, chr, tmp,\n pos_intersection = '',\n neg_intersection = '';\n\n for (i = 0, len = sets.length; i < len; i++) {\n set = $$($nesting, 'Opal').$coerce_to(sets[i], $$($nesting, 'String'), \"to_str\");\n neg = (set.charAt(0) === '^' && set.length > 1);\n set = explode_sequences_in_character_set(neg ? set.slice(1) : set);\n if (neg) {\n neg_intersection = intersection(neg_intersection, set);\n } else {\n pos_intersection = intersection(pos_intersection, set);\n }\n }\n\n if (pos_intersection.length > 0 && neg_intersection.length > 0) {\n tmp = '';\n for (i = 0, len = pos_intersection.length; i < len; i++) {\n chr = pos_intersection.charAt(i);\n if (neg_intersection.indexOf(chr) === -1) {\n tmp += chr;\n }\n }\n pos_intersection = tmp;\n neg_intersection = '';\n }\n\n if (pos_intersection.length > 0) {\n return '[' + $$($nesting, 'Regexp').$escape(pos_intersection) + ']';\n }\n\n if (neg_intersection.length > 0) {\n return '[^' + $$($nesting, 'Regexp').$escape(neg_intersection) + ']';\n }\n\n return null;\n }\n ;\n \n Opal.def(self, '$instance_variables', TMP_String_instance_variables_72 = function $$instance_variables() {\n var self = this;\n\n return []\n }, TMP_String_instance_variables_72.$$arity = 0);\n Opal.defs(self, '$_load', TMP_String__load_73 = function $$_load($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return $send(self, 'new', Opal.to_a(args))\n }, TMP_String__load_73.$$arity = -1);\n \n Opal.def(self, '$unpack', TMP_String_unpack_74 = function $$unpack(format) {\n var self = this;\n\n return self.$raise(\"To use String#unpack, you must first require 'corelib/string/unpack'.\")\n }, TMP_String_unpack_74.$$arity = 1);\n return (Opal.def(self, '$unpack1', TMP_String_unpack1_75 = function $$unpack1(format) {\n var self = this;\n\n return self.$raise(\"To use String#unpack1, you must first require 'corelib/string/unpack'.\")\n }, TMP_String_unpack1_75.$$arity = 1), nil) && 'unpack1';\n })($nesting[0], String, $nesting);\n return Opal.const_set($nesting[0], 'Symbol', $$($nesting, 'String'));\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/enumerable\"] = function(Opal) {\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send, $falsy = Opal.falsy, $hash2 = Opal.hash2, $lambda = Opal.lambda;\n\n Opal.add_stubs(['$each', '$public_send', '$destructure', '$to_enum', '$enumerator_size', '$new', '$yield', '$raise', '$slice_when', '$!', '$enum_for', '$flatten', '$map', '$warn', '$proc', '$==', '$nil?', '$respond_to?', '$coerce_to!', '$>', '$*', '$coerce_to', '$try_convert', '$<', '$+', '$-', '$ceil', '$/', '$size', '$__send__', '$length', '$<=', '$[]', '$push', '$<<', '$[]=', '$===', '$inspect', '$<=>', '$first', '$reverse', '$sort', '$to_proc', '$compare', '$call', '$dup', '$to_a', '$sort!', '$map!', '$key?', '$values', '$zip']);\n return (function($base, $parent_nesting) {\n var $Enumerable, self = $Enumerable = $module($base, 'Enumerable');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Enumerable_all$q_1, TMP_Enumerable_any$q_5, TMP_Enumerable_chunk_9, TMP_Enumerable_chunk_while_12, TMP_Enumerable_collect_14, TMP_Enumerable_collect_concat_16, TMP_Enumerable_count_19, TMP_Enumerable_cycle_23, TMP_Enumerable_detect_25, TMP_Enumerable_drop_27, TMP_Enumerable_drop_while_28, TMP_Enumerable_each_cons_29, TMP_Enumerable_each_entry_31, TMP_Enumerable_each_slice_33, TMP_Enumerable_each_with_index_35, TMP_Enumerable_each_with_object_37, TMP_Enumerable_entries_39, TMP_Enumerable_find_all_40, TMP_Enumerable_find_index_42, TMP_Enumerable_first_47, TMP_Enumerable_grep_48, TMP_Enumerable_grep_v_50, TMP_Enumerable_group_by_52, TMP_Enumerable_include$q_55, TMP_Enumerable_inject_56, TMP_Enumerable_lazy_58, TMP_Enumerable_enumerator_size_59, TMP_Enumerable_max_60, TMP_Enumerable_max_by_61, TMP_Enumerable_min_63, TMP_Enumerable_min_by_64, TMP_Enumerable_minmax_66, TMP_Enumerable_minmax_by_68, TMP_Enumerable_none$q_69, TMP_Enumerable_one$q_73, TMP_Enumerable_partition_77, TMP_Enumerable_reject_79, TMP_Enumerable_reverse_each_81, TMP_Enumerable_slice_before_83, TMP_Enumerable_slice_after_85, TMP_Enumerable_slice_when_88, TMP_Enumerable_sort_90, TMP_Enumerable_sort_by_92, TMP_Enumerable_sum_98, TMP_Enumerable_take_99, TMP_Enumerable_take_while_100, TMP_Enumerable_uniq_102, TMP_Enumerable_zip_104;\n\n \n \n function comparableForPattern(value) {\n if (value.length === 0) {\n value = [nil];\n }\n\n if (value.length > 1) {\n value = [value];\n }\n\n return value;\n }\n ;\n \n Opal.def(self, '$all?', TMP_Enumerable_all$q_1 = function(pattern) {try {\n\n var TMP_2, TMP_3, TMP_4, self = this, $iter = TMP_Enumerable_all$q_1.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_all$q_1.$$p = null;\n \n if ($truthy(pattern !== undefined)) {\n $send(self, 'each', [], (TMP_2 = function($a_rest){var self = TMP_2.$$s || this, value, comparable = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n comparable = comparableForPattern(value);\n if ($truthy($send(pattern, 'public_send', [\"===\"].concat(Opal.to_a(comparable))))) {\n return nil\n } else {\n Opal.ret(false)\n };}, TMP_2.$$s = self, TMP_2.$$arity = -1, TMP_2))\n } else if ((block !== nil)) {\n $send(self, 'each', [], (TMP_3 = function($a_rest){var self = TMP_3.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) {\n return nil\n } else {\n Opal.ret(false)\n }}, TMP_3.$$s = self, TMP_3.$$arity = -1, TMP_3))\n } else {\n $send(self, 'each', [], (TMP_4 = function($a_rest){var self = TMP_4.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($truthy($$($nesting, 'Opal').$destructure(value))) {\n return nil\n } else {\n Opal.ret(false)\n }}, TMP_4.$$s = self, TMP_4.$$arity = -1, TMP_4))\n };\n return true;\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_all$q_1.$$arity = -1);\n \n Opal.def(self, '$any?', TMP_Enumerable_any$q_5 = function(pattern) {try {\n\n var TMP_6, TMP_7, TMP_8, self = this, $iter = TMP_Enumerable_any$q_5.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_any$q_5.$$p = null;\n \n if ($truthy(pattern !== undefined)) {\n $send(self, 'each', [], (TMP_6 = function($a_rest){var self = TMP_6.$$s || this, value, comparable = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n comparable = comparableForPattern(value);\n if ($truthy($send(pattern, 'public_send', [\"===\"].concat(Opal.to_a(comparable))))) {\n Opal.ret(true)\n } else {\n return nil\n };}, TMP_6.$$s = self, TMP_6.$$arity = -1, TMP_6))\n } else if ((block !== nil)) {\n $send(self, 'each', [], (TMP_7 = function($a_rest){var self = TMP_7.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) {\n Opal.ret(true)\n } else {\n return nil\n }}, TMP_7.$$s = self, TMP_7.$$arity = -1, TMP_7))\n } else {\n $send(self, 'each', [], (TMP_8 = function($a_rest){var self = TMP_8.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($truthy($$($nesting, 'Opal').$destructure(value))) {\n Opal.ret(true)\n } else {\n return nil\n }}, TMP_8.$$s = self, TMP_8.$$arity = -1, TMP_8))\n };\n return false;\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_any$q_5.$$arity = -1);\n \n Opal.def(self, '$chunk', TMP_Enumerable_chunk_9 = function $$chunk() {\n var TMP_10, TMP_11, self = this, $iter = TMP_Enumerable_chunk_9.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_chunk_9.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'to_enum', [\"chunk\"], (TMP_10 = function(){var self = TMP_10.$$s || this;\n\n return self.$enumerator_size()}, TMP_10.$$s = self, TMP_10.$$arity = 0, TMP_10))\n };\n return $send($$$('::', 'Enumerator'), 'new', [], (TMP_11 = function(yielder){var self = TMP_11.$$s || this;\nif (yielder == null) yielder = nil;\n \n var previous = nil, accumulate = [];\n\n function releaseAccumulate() {\n if (accumulate.length > 0) {\n yielder.$yield(previous, accumulate)\n }\n }\n\n self.$each.$$p = function(value) {\n var key = Opal.yield1(block, value);\n\n if (key === nil) {\n releaseAccumulate();\n accumulate = [];\n previous = nil;\n } else {\n if (previous === nil || previous === key) {\n accumulate.push(value);\n } else {\n releaseAccumulate();\n accumulate = [value];\n }\n\n previous = key;\n }\n }\n\n self.$each();\n\n releaseAccumulate();\n }, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11));\n }, TMP_Enumerable_chunk_9.$$arity = 0);\n \n Opal.def(self, '$chunk_while', TMP_Enumerable_chunk_while_12 = function $$chunk_while() {\n var TMP_13, self = this, $iter = TMP_Enumerable_chunk_while_12.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_chunk_while_12.$$p = null;\n \n if ((block !== nil)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"no block given\")\n };\n return $send(self, 'slice_when', [], (TMP_13 = function(before, after){var self = TMP_13.$$s || this;\nif (before == null) before = nil;if (after == null) after = nil;\n return Opal.yieldX(block, [before, after])['$!']()}, TMP_13.$$s = self, TMP_13.$$arity = 2, TMP_13));\n }, TMP_Enumerable_chunk_while_12.$$arity = 0);\n \n Opal.def(self, '$collect', TMP_Enumerable_collect_14 = function $$collect() {\n var TMP_15, self = this, $iter = TMP_Enumerable_collect_14.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_collect_14.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"collect\"], (TMP_15 = function(){var self = TMP_15.$$s || this;\n\n return self.$enumerator_size()}, TMP_15.$$s = self, TMP_15.$$arity = 0, TMP_15))\n };\n \n var result = [];\n\n self.$each.$$p = function() {\n var value = Opal.yieldX(block, arguments);\n\n result.push(value);\n };\n\n self.$each();\n\n return result;\n ;\n }, TMP_Enumerable_collect_14.$$arity = 0);\n \n Opal.def(self, '$collect_concat', TMP_Enumerable_collect_concat_16 = function $$collect_concat() {\n var TMP_17, TMP_18, self = this, $iter = TMP_Enumerable_collect_concat_16.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_collect_concat_16.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"collect_concat\"], (TMP_17 = function(){var self = TMP_17.$$s || this;\n\n return self.$enumerator_size()}, TMP_17.$$s = self, TMP_17.$$arity = 0, TMP_17))\n };\n return $send(self, 'map', [], (TMP_18 = function(item){var self = TMP_18.$$s || this;\nif (item == null) item = nil;\n return Opal.yield1(block, item);}, TMP_18.$$s = self, TMP_18.$$arity = 1, TMP_18)).$flatten(1);\n }, TMP_Enumerable_collect_concat_16.$$arity = 0);\n \n Opal.def(self, '$count', TMP_Enumerable_count_19 = function $$count(object) {\n var TMP_20, TMP_21, TMP_22, self = this, $iter = TMP_Enumerable_count_19.$$p, block = $iter || nil, result = nil;\n\n if ($iter) TMP_Enumerable_count_19.$$p = null;\n \n result = 0;\n \n if (object != null && block !== nil) {\n self.$warn(\"warning: given block not used\")\n }\n ;\n if ($truthy(object != null)) {\n block = $send(self, 'proc', [], (TMP_20 = function($a_rest){var self = TMP_20.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return $$($nesting, 'Opal').$destructure(args)['$=='](object)}, TMP_20.$$s = self, TMP_20.$$arity = -1, TMP_20))\n } else if ($truthy(block['$nil?']())) {\n block = $send(self, 'proc', [], (TMP_21 = function(){var self = TMP_21.$$s || this;\n\n return true}, TMP_21.$$s = self, TMP_21.$$arity = 0, TMP_21))};\n $send(self, 'each', [], (TMP_22 = function($a_rest){var self = TMP_22.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($truthy(Opal.yieldX(block, args))) {\n return result++;\n } else {\n return nil\n }}, TMP_22.$$s = self, TMP_22.$$arity = -1, TMP_22));\n return result;\n }, TMP_Enumerable_count_19.$$arity = -1);\n \n Opal.def(self, '$cycle', TMP_Enumerable_cycle_23 = function $$cycle(n) {\n var TMP_24, self = this, $iter = TMP_Enumerable_cycle_23.$$p, block = $iter || nil;\n\n if (n == null) {\n n = nil;\n }\n if ($iter) TMP_Enumerable_cycle_23.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"cycle\", n], (TMP_24 = function(){var self = TMP_24.$$s || this;\n\n if ($truthy(n['$nil?']())) {\n if ($truthy(self['$respond_to?'](\"size\"))) {\n return $$$($$($nesting, 'Float'), 'INFINITY')\n } else {\n return nil\n }\n } else {\n \n n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy($rb_gt(n, 0))) {\n return $rb_times(self.$enumerator_size(), n)\n } else {\n return 0\n };\n }}, TMP_24.$$s = self, TMP_24.$$arity = 0, TMP_24))\n };\n if ($truthy(n['$nil?']())) {\n } else {\n \n n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(n <= 0)) {\n return nil};\n };\n \n var result,\n all = [], i, length, value;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = Opal.yield1(block, param);\n\n all.push(param);\n }\n\n self.$each();\n\n if (result !== undefined) {\n return result;\n }\n\n if (all.length === 0) {\n return nil;\n }\n\n if (n === nil) {\n while (true) {\n for (i = 0, length = all.length; i < length; i++) {\n value = Opal.yield1(block, all[i]);\n }\n }\n }\n else {\n while (n > 1) {\n for (i = 0, length = all.length; i < length; i++) {\n value = Opal.yield1(block, all[i]);\n }\n\n n--;\n }\n }\n ;\n }, TMP_Enumerable_cycle_23.$$arity = -1);\n \n Opal.def(self, '$detect', TMP_Enumerable_detect_25 = function $$detect(ifnone) {try {\n\n var TMP_26, self = this, $iter = TMP_Enumerable_detect_25.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_detect_25.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"detect\", ifnone)\n };\n $send(self, 'each', [], (TMP_26 = function($a_rest){var self = TMP_26.$$s || this, args, value = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n value = $$($nesting, 'Opal').$destructure(args);\n if ($truthy(Opal.yield1(block, value))) {\n Opal.ret(value)\n } else {\n return nil\n };}, TMP_26.$$s = self, TMP_26.$$arity = -1, TMP_26));\n \n if (ifnone !== undefined) {\n if (typeof(ifnone) === 'function') {\n return ifnone();\n } else {\n return ifnone;\n }\n }\n ;\n return nil;\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_detect_25.$$arity = -1);\n \n Opal.def(self, '$drop', TMP_Enumerable_drop_27 = function $$drop(number) {\n var self = this;\n\n \n number = $$($nesting, 'Opal').$coerce_to(number, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(number < 0)) {\n self.$raise($$($nesting, 'ArgumentError'), \"attempt to drop negative size\")};\n \n var result = [],\n current = 0;\n\n self.$each.$$p = function() {\n if (number <= current) {\n result.push($$($nesting, 'Opal').$destructure(arguments));\n }\n\n current++;\n };\n\n self.$each()\n\n return result;\n ;\n }, TMP_Enumerable_drop_27.$$arity = 1);\n \n Opal.def(self, '$drop_while', TMP_Enumerable_drop_while_28 = function $$drop_while() {\n var self = this, $iter = TMP_Enumerable_drop_while_28.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_drop_while_28.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"drop_while\")\n };\n \n var result = [],\n dropping = true;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments);\n\n if (dropping) {\n var value = Opal.yield1(block, param);\n\n if ($falsy(value)) {\n dropping = false;\n result.push(param);\n }\n }\n else {\n result.push(param);\n }\n };\n\n self.$each();\n\n return result;\n ;\n }, TMP_Enumerable_drop_while_28.$$arity = 0);\n \n Opal.def(self, '$each_cons', TMP_Enumerable_each_cons_29 = function $$each_cons(n) {\n var TMP_30, self = this, $iter = TMP_Enumerable_each_cons_29.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_each_cons_29.$$p = null;\n \n if ($truthy(arguments.length != 1)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (arguments.length) + \" for 1)\")};\n n = $$($nesting, 'Opal').$try_convert(n, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(n <= 0)) {\n self.$raise($$($nesting, 'ArgumentError'), \"invalid size\")};\n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each_cons\", n], (TMP_30 = function(){var self = TMP_30.$$s || this, $a, enum_size = nil;\n\n \n enum_size = self.$enumerator_size();\n if ($truthy(enum_size['$nil?']())) {\n return nil\n } else if ($truthy(($truthy($a = enum_size['$=='](0)) ? $a : $rb_lt(enum_size, n)))) {\n return 0\n } else {\n return $rb_plus($rb_minus(enum_size, n), 1)\n };}, TMP_30.$$s = self, TMP_30.$$arity = 0, TMP_30))\n };\n \n var buffer = [], result = nil;\n\n self.$each.$$p = function() {\n var element = $$($nesting, 'Opal').$destructure(arguments);\n buffer.push(element);\n if (buffer.length > n) {\n buffer.shift();\n }\n if (buffer.length == n) {\n Opal.yield1(block, buffer.slice(0, n));\n }\n }\n\n self.$each();\n\n return result;\n ;\n }, TMP_Enumerable_each_cons_29.$$arity = 1);\n \n Opal.def(self, '$each_entry', TMP_Enumerable_each_entry_31 = function $$each_entry($a_rest) {\n var TMP_32, self = this, data, $iter = TMP_Enumerable_each_entry_31.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n data = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n data[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Enumerable_each_entry_31.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'to_enum', [\"each_entry\"].concat(Opal.to_a(data)), (TMP_32 = function(){var self = TMP_32.$$s || this;\n\n return self.$enumerator_size()}, TMP_32.$$s = self, TMP_32.$$arity = 0, TMP_32))\n };\n \n self.$each.$$p = function() {\n var item = $$($nesting, 'Opal').$destructure(arguments);\n\n Opal.yield1(block, item);\n }\n\n self.$each.apply(self, data);\n\n return self;\n ;\n }, TMP_Enumerable_each_entry_31.$$arity = -1);\n \n Opal.def(self, '$each_slice', TMP_Enumerable_each_slice_33 = function $$each_slice(n) {\n var TMP_34, self = this, $iter = TMP_Enumerable_each_slice_33.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_each_slice_33.$$p = null;\n \n n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(n <= 0)) {\n self.$raise($$($nesting, 'ArgumentError'), \"invalid slice size\")};\n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each_slice\", n], (TMP_34 = function(){var self = TMP_34.$$s || this;\n\n if ($truthy(self['$respond_to?'](\"size\"))) {\n return $rb_divide(self.$size(), n).$ceil()\n } else {\n return nil\n }}, TMP_34.$$s = self, TMP_34.$$arity = 0, TMP_34))\n };\n \n var result,\n slice = []\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments);\n\n slice.push(param);\n\n if (slice.length === n) {\n Opal.yield1(block, slice);\n slice = [];\n }\n };\n\n self.$each();\n\n if (result !== undefined) {\n return result;\n }\n\n // our \"last\" group, if smaller than n then won't have been yielded\n if (slice.length > 0) {\n Opal.yield1(block, slice);\n }\n ;\n return nil;\n }, TMP_Enumerable_each_slice_33.$$arity = 1);\n \n Opal.def(self, '$each_with_index', TMP_Enumerable_each_with_index_35 = function $$each_with_index($a_rest) {\n var TMP_36, self = this, args, $iter = TMP_Enumerable_each_with_index_35.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Enumerable_each_with_index_35.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each_with_index\"].concat(Opal.to_a(args)), (TMP_36 = function(){var self = TMP_36.$$s || this;\n\n return self.$enumerator_size()}, TMP_36.$$s = self, TMP_36.$$arity = 0, TMP_36))\n };\n \n var result,\n index = 0;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments);\n\n block(param, index);\n\n index++;\n };\n\n self.$each.apply(self, args);\n\n if (result !== undefined) {\n return result;\n }\n ;\n return self;\n }, TMP_Enumerable_each_with_index_35.$$arity = -1);\n \n Opal.def(self, '$each_with_object', TMP_Enumerable_each_with_object_37 = function $$each_with_object(object) {\n var TMP_38, self = this, $iter = TMP_Enumerable_each_with_object_37.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_each_with_object_37.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each_with_object\", object], (TMP_38 = function(){var self = TMP_38.$$s || this;\n\n return self.$enumerator_size()}, TMP_38.$$s = self, TMP_38.$$arity = 0, TMP_38))\n };\n \n var result;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments);\n\n block(param, object);\n };\n\n self.$each();\n\n if (result !== undefined) {\n return result;\n }\n ;\n return object;\n }, TMP_Enumerable_each_with_object_37.$$arity = 1);\n \n Opal.def(self, '$entries', TMP_Enumerable_entries_39 = function $$entries($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n var result = [];\n\n self.$each.$$p = function() {\n result.push($$($nesting, 'Opal').$destructure(arguments));\n };\n\n self.$each.apply(self, args);\n\n return result;\n \n }, TMP_Enumerable_entries_39.$$arity = -1);\n Opal.alias(self, \"find\", \"detect\");\n \n Opal.def(self, '$find_all', TMP_Enumerable_find_all_40 = function $$find_all() {\n var TMP_41, self = this, $iter = TMP_Enumerable_find_all_40.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_find_all_40.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"find_all\"], (TMP_41 = function(){var self = TMP_41.$$s || this;\n\n return self.$enumerator_size()}, TMP_41.$$s = self, TMP_41.$$arity = 0, TMP_41))\n };\n \n var result = [];\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = Opal.yield1(block, param);\n\n if ($truthy(value)) {\n result.push(param);\n }\n };\n\n self.$each();\n\n return result;\n ;\n }, TMP_Enumerable_find_all_40.$$arity = 0);\n \n Opal.def(self, '$find_index', TMP_Enumerable_find_index_42 = function $$find_index(object) {try {\n\n var TMP_43, TMP_44, self = this, $iter = TMP_Enumerable_find_index_42.$$p, block = $iter || nil, index = nil;\n\n if ($iter) TMP_Enumerable_find_index_42.$$p = null;\n \n if ($truthy(object === undefined && block === nil)) {\n return self.$enum_for(\"find_index\")};\n \n if (object != null && block !== nil) {\n self.$warn(\"warning: given block not used\")\n }\n ;\n index = 0;\n if ($truthy(object != null)) {\n $send(self, 'each', [], (TMP_43 = function($a_rest){var self = TMP_43.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if ($$($nesting, 'Opal').$destructure(value)['$=='](object)) {\n Opal.ret(index)};\n return index += 1;;}, TMP_43.$$s = self, TMP_43.$$arity = -1, TMP_43))\n } else {\n $send(self, 'each', [], (TMP_44 = function($a_rest){var self = TMP_44.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) {\n Opal.ret(index)};\n return index += 1;;}, TMP_44.$$s = self, TMP_44.$$arity = -1, TMP_44))\n };\n return nil;\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_find_index_42.$$arity = -1);\n \n Opal.def(self, '$first', TMP_Enumerable_first_47 = function $$first(number) {try {\n\n var TMP_45, TMP_46, self = this, result = nil, current = nil;\n\n if ($truthy(number === undefined)) {\n return $send(self, 'each', [], (TMP_45 = function(value){var self = TMP_45.$$s || this;\nif (value == null) value = nil;\n Opal.ret(value)}, TMP_45.$$s = self, TMP_45.$$arity = 1, TMP_45))\n } else {\n \n result = [];\n number = $$($nesting, 'Opal').$coerce_to(number, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(number < 0)) {\n self.$raise($$($nesting, 'ArgumentError'), \"attempt to take negative size\")};\n if ($truthy(number == 0)) {\n return []};\n current = 0;\n $send(self, 'each', [], (TMP_46 = function($a_rest){var self = TMP_46.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n result.push($$($nesting, 'Opal').$destructure(args));\n if ($truthy(number <= ++current)) {\n Opal.ret(result)\n } else {\n return nil\n };}, TMP_46.$$s = self, TMP_46.$$arity = -1, TMP_46));\n return result;\n }\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_first_47.$$arity = -1);\n Opal.alias(self, \"flat_map\", \"collect_concat\");\n \n Opal.def(self, '$grep', TMP_Enumerable_grep_48 = function $$grep(pattern) {\n var TMP_49, self = this, $iter = TMP_Enumerable_grep_48.$$p, block = $iter || nil, result = nil;\n\n if ($iter) TMP_Enumerable_grep_48.$$p = null;\n \n result = [];\n $send(self, 'each', [], (TMP_49 = function($a_rest){var self = TMP_49.$$s || this, value, cmp = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n cmp = comparableForPattern(value);\n if ($truthy($send(pattern, '__send__', [\"===\"].concat(Opal.to_a(cmp))))) {\n } else {\n return nil;\n };\n if ((block !== nil)) {\n \n if ($truthy($rb_gt(value.$length(), 1))) {\n value = [value]};\n value = Opal.yieldX(block, Opal.to_a(value));\n } else if ($truthy($rb_le(value.$length(), 1))) {\n value = value['$[]'](0)};\n return result.$push(value);}, TMP_49.$$s = self, TMP_49.$$arity = -1, TMP_49));\n return result;\n }, TMP_Enumerable_grep_48.$$arity = 1);\n \n Opal.def(self, '$grep_v', TMP_Enumerable_grep_v_50 = function $$grep_v(pattern) {\n var TMP_51, self = this, $iter = TMP_Enumerable_grep_v_50.$$p, block = $iter || nil, result = nil;\n\n if ($iter) TMP_Enumerable_grep_v_50.$$p = null;\n \n result = [];\n $send(self, 'each', [], (TMP_51 = function($a_rest){var self = TMP_51.$$s || this, value, cmp = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n cmp = comparableForPattern(value);\n if ($truthy($send(pattern, '__send__', [\"===\"].concat(Opal.to_a(cmp))))) {\n return nil;};\n if ((block !== nil)) {\n \n if ($truthy($rb_gt(value.$length(), 1))) {\n value = [value]};\n value = Opal.yieldX(block, Opal.to_a(value));\n } else if ($truthy($rb_le(value.$length(), 1))) {\n value = value['$[]'](0)};\n return result.$push(value);}, TMP_51.$$s = self, TMP_51.$$arity = -1, TMP_51));\n return result;\n }, TMP_Enumerable_grep_v_50.$$arity = 1);\n \n Opal.def(self, '$group_by', TMP_Enumerable_group_by_52 = function $$group_by() {\n var TMP_53, $a, self = this, $iter = TMP_Enumerable_group_by_52.$$p, block = $iter || nil, hash = nil, $writer = nil;\n\n if ($iter) TMP_Enumerable_group_by_52.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"group_by\"], (TMP_53 = function(){var self = TMP_53.$$s || this;\n\n return self.$enumerator_size()}, TMP_53.$$s = self, TMP_53.$$arity = 0, TMP_53))\n };\n hash = $hash2([], {});\n \n var result;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = Opal.yield1(block, param);\n\n ($truthy($a = hash['$[]'](value)) ? $a : (($writer = [value, []]), $send(hash, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))['$<<'](param);\n }\n\n self.$each();\n\n if (result !== undefined) {\n return result;\n }\n ;\n return hash;\n }, TMP_Enumerable_group_by_52.$$arity = 0);\n \n Opal.def(self, '$include?', TMP_Enumerable_include$q_55 = function(obj) {try {\n\n var TMP_54, self = this;\n\n \n $send(self, 'each', [], (TMP_54 = function($a_rest){var self = TMP_54.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($$($nesting, 'Opal').$destructure(args)['$=='](obj)) {\n Opal.ret(true)\n } else {\n return nil\n }}, TMP_54.$$s = self, TMP_54.$$arity = -1, TMP_54));\n return false;\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_include$q_55.$$arity = 1);\n \n Opal.def(self, '$inject', TMP_Enumerable_inject_56 = function $$inject(object, sym) {\n var self = this, $iter = TMP_Enumerable_inject_56.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_inject_56.$$p = null;\n \n var result = object;\n\n if (block !== nil && sym === undefined) {\n self.$each.$$p = function() {\n var value = $$($nesting, 'Opal').$destructure(arguments);\n\n if (result === undefined) {\n result = value;\n return;\n }\n\n value = Opal.yieldX(block, [result, value]);\n\n result = value;\n };\n }\n else {\n if (sym === undefined) {\n if (!$$($nesting, 'Symbol')['$==='](object)) {\n self.$raise($$($nesting, 'TypeError'), \"\" + (object.$inspect()) + \" is not a Symbol\");\n }\n\n sym = object;\n result = undefined;\n }\n\n self.$each.$$p = function() {\n var value = $$($nesting, 'Opal').$destructure(arguments);\n\n if (result === undefined) {\n result = value;\n return;\n }\n\n result = (result).$__send__(sym, value);\n };\n }\n\n self.$each();\n\n return result == undefined ? nil : result;\n \n }, TMP_Enumerable_inject_56.$$arity = -1);\n \n Opal.def(self, '$lazy', TMP_Enumerable_lazy_58 = function $$lazy() {\n var TMP_57, self = this;\n\n return $send($$$($$($nesting, 'Enumerator'), 'Lazy'), 'new', [self, self.$enumerator_size()], (TMP_57 = function(enum$, $a_rest){var self = TMP_57.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n return $send(enum$, 'yield', Opal.to_a(args))}, TMP_57.$$s = self, TMP_57.$$arity = -2, TMP_57))\n }, TMP_Enumerable_lazy_58.$$arity = 0);\n \n Opal.def(self, '$enumerator_size', TMP_Enumerable_enumerator_size_59 = function $$enumerator_size() {\n var self = this;\n\n if ($truthy(self['$respond_to?'](\"size\"))) {\n return self.$size()\n } else {\n return nil\n }\n }, TMP_Enumerable_enumerator_size_59.$$arity = 0);\n Opal.alias(self, \"map\", \"collect\");\n \n Opal.def(self, '$max', TMP_Enumerable_max_60 = function $$max(n) {\n var self = this, $iter = TMP_Enumerable_max_60.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_max_60.$$p = null;\n \n \n if (n === undefined || n === nil) {\n var result, value;\n\n self.$each.$$p = function() {\n var item = $$($nesting, 'Opal').$destructure(arguments);\n\n if (result === undefined) {\n result = item;\n return;\n }\n\n if (block !== nil) {\n value = Opal.yieldX(block, [item, result]);\n } else {\n value = (item)['$<=>'](result);\n }\n\n if (value === nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"comparison failed\");\n }\n\n if (value > 0) {\n result = item;\n }\n }\n\n self.$each();\n\n if (result === undefined) {\n return nil;\n } else {\n return result;\n }\n }\n ;\n n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), \"to_int\");\n return $send(self, 'sort', [], block.$to_proc()).$reverse().$first(n);\n }, TMP_Enumerable_max_60.$$arity = -1);\n \n Opal.def(self, '$max_by', TMP_Enumerable_max_by_61 = function $$max_by() {\n var TMP_62, self = this, $iter = TMP_Enumerable_max_by_61.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_max_by_61.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"max_by\"], (TMP_62 = function(){var self = TMP_62.$$s || this;\n\n return self.$enumerator_size()}, TMP_62.$$s = self, TMP_62.$$arity = 0, TMP_62))\n };\n \n var result,\n by;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = Opal.yield1(block, param);\n\n if (result === undefined) {\n result = param;\n by = value;\n return;\n }\n\n if ((value)['$<=>'](by) > 0) {\n result = param\n by = value;\n }\n };\n\n self.$each();\n\n return result === undefined ? nil : result;\n ;\n }, TMP_Enumerable_max_by_61.$$arity = 0);\n Opal.alias(self, \"member?\", \"include?\");\n \n Opal.def(self, '$min', TMP_Enumerable_min_63 = function $$min() {\n var self = this, $iter = TMP_Enumerable_min_63.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_min_63.$$p = null;\n \n var result;\n\n if (block !== nil) {\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments);\n\n if (result === undefined) {\n result = param;\n return;\n }\n\n var value = block(param, result);\n\n if (value === nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"comparison failed\");\n }\n\n if (value < 0) {\n result = param;\n }\n };\n }\n else {\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments);\n\n if (result === undefined) {\n result = param;\n return;\n }\n\n if ($$($nesting, 'Opal').$compare(param, result) < 0) {\n result = param;\n }\n };\n }\n\n self.$each();\n\n return result === undefined ? nil : result;\n \n }, TMP_Enumerable_min_63.$$arity = 0);\n \n Opal.def(self, '$min_by', TMP_Enumerable_min_by_64 = function $$min_by() {\n var TMP_65, self = this, $iter = TMP_Enumerable_min_by_64.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_min_by_64.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"min_by\"], (TMP_65 = function(){var self = TMP_65.$$s || this;\n\n return self.$enumerator_size()}, TMP_65.$$s = self, TMP_65.$$arity = 0, TMP_65))\n };\n \n var result,\n by;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = Opal.yield1(block, param);\n\n if (result === undefined) {\n result = param;\n by = value;\n return;\n }\n\n if ((value)['$<=>'](by) < 0) {\n result = param\n by = value;\n }\n };\n\n self.$each();\n\n return result === undefined ? nil : result;\n ;\n }, TMP_Enumerable_min_by_64.$$arity = 0);\n \n Opal.def(self, '$minmax', TMP_Enumerable_minmax_66 = function $$minmax() {\n var $a, TMP_67, self = this, $iter = TMP_Enumerable_minmax_66.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_minmax_66.$$p = null;\n \n block = ($truthy($a = block) ? $a : $send(self, 'proc', [], (TMP_67 = function(a, b){var self = TMP_67.$$s || this;\nif (a == null) a = nil;if (b == null) b = nil;\n return a['$<=>'](b)}, TMP_67.$$s = self, TMP_67.$$arity = 2, TMP_67)));\n \n var min = nil, max = nil, first_time = true;\n\n self.$each.$$p = function() {\n var element = $$($nesting, 'Opal').$destructure(arguments);\n if (first_time) {\n min = max = element;\n first_time = false;\n } else {\n var min_cmp = block.$call(min, element);\n\n if (min_cmp === nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"comparison failed\")\n } else if (min_cmp > 0) {\n min = element;\n }\n\n var max_cmp = block.$call(max, element);\n\n if (max_cmp === nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"comparison failed\")\n } else if (max_cmp < 0) {\n max = element;\n }\n }\n }\n\n self.$each();\n\n return [min, max];\n ;\n }, TMP_Enumerable_minmax_66.$$arity = 0);\n \n Opal.def(self, '$minmax_by', TMP_Enumerable_minmax_by_68 = function $$minmax_by() {\n var self = this, $iter = TMP_Enumerable_minmax_by_68.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_minmax_by_68.$$p = null;\n return self.$raise($$($nesting, 'NotImplementedError'))\n }, TMP_Enumerable_minmax_by_68.$$arity = 0);\n \n Opal.def(self, '$none?', TMP_Enumerable_none$q_69 = function(pattern) {try {\n\n var TMP_70, TMP_71, TMP_72, self = this, $iter = TMP_Enumerable_none$q_69.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_none$q_69.$$p = null;\n \n if ($truthy(pattern !== undefined)) {\n $send(self, 'each', [], (TMP_70 = function($a_rest){var self = TMP_70.$$s || this, value, comparable = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n comparable = comparableForPattern(value);\n if ($truthy($send(pattern, 'public_send', [\"===\"].concat(Opal.to_a(comparable))))) {\n Opal.ret(false)\n } else {\n return nil\n };}, TMP_70.$$s = self, TMP_70.$$arity = -1, TMP_70))\n } else if ((block !== nil)) {\n $send(self, 'each', [], (TMP_71 = function($a_rest){var self = TMP_71.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) {\n Opal.ret(false)\n } else {\n return nil\n }}, TMP_71.$$s = self, TMP_71.$$arity = -1, TMP_71))\n } else {\n $send(self, 'each', [], (TMP_72 = function($a_rest){var self = TMP_72.$$s || this, value, item = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n item = $$($nesting, 'Opal').$destructure(value);\n if ($truthy(item)) {\n Opal.ret(false)\n } else {\n return nil\n };}, TMP_72.$$s = self, TMP_72.$$arity = -1, TMP_72))\n };\n return true;\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_none$q_69.$$arity = -1);\n \n Opal.def(self, '$one?', TMP_Enumerable_one$q_73 = function(pattern) {try {\n\n var TMP_74, TMP_75, TMP_76, self = this, $iter = TMP_Enumerable_one$q_73.$$p, block = $iter || nil, count = nil;\n\n if ($iter) TMP_Enumerable_one$q_73.$$p = null;\n \n count = 0;\n if ($truthy(pattern !== undefined)) {\n $send(self, 'each', [], (TMP_74 = function($a_rest){var self = TMP_74.$$s || this, value, comparable = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n comparable = comparableForPattern(value);\n if ($truthy($send(pattern, 'public_send', [\"===\"].concat(Opal.to_a(comparable))))) {\n \n count = $rb_plus(count, 1);\n if ($truthy($rb_gt(count, 1))) {\n Opal.ret(false)\n } else {\n return nil\n };\n } else {\n return nil\n };}, TMP_74.$$s = self, TMP_74.$$arity = -1, TMP_74))\n } else if ((block !== nil)) {\n $send(self, 'each', [], (TMP_75 = function($a_rest){var self = TMP_75.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if ($truthy(Opal.yieldX(block, Opal.to_a(value)))) {\n } else {\n return nil;\n };\n count = $rb_plus(count, 1);\n if ($truthy($rb_gt(count, 1))) {\n Opal.ret(false)\n } else {\n return nil\n };}, TMP_75.$$s = self, TMP_75.$$arity = -1, TMP_75))\n } else {\n $send(self, 'each', [], (TMP_76 = function($a_rest){var self = TMP_76.$$s || this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if ($truthy($$($nesting, 'Opal').$destructure(value))) {\n } else {\n return nil;\n };\n count = $rb_plus(count, 1);\n if ($truthy($rb_gt(count, 1))) {\n Opal.ret(false)\n } else {\n return nil\n };}, TMP_76.$$s = self, TMP_76.$$arity = -1, TMP_76))\n };\n return count['$=='](1);\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_one$q_73.$$arity = -1);\n \n Opal.def(self, '$partition', TMP_Enumerable_partition_77 = function $$partition() {\n var TMP_78, self = this, $iter = TMP_Enumerable_partition_77.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_partition_77.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"partition\"], (TMP_78 = function(){var self = TMP_78.$$s || this;\n\n return self.$enumerator_size()}, TMP_78.$$s = self, TMP_78.$$arity = 0, TMP_78))\n };\n \n var truthy = [], falsy = [], result;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = Opal.yield1(block, param);\n\n if ($truthy(value)) {\n truthy.push(param);\n }\n else {\n falsy.push(param);\n }\n };\n\n self.$each();\n\n return [truthy, falsy];\n ;\n }, TMP_Enumerable_partition_77.$$arity = 0);\n Opal.alias(self, \"reduce\", \"inject\");\n \n Opal.def(self, '$reject', TMP_Enumerable_reject_79 = function $$reject() {\n var TMP_80, self = this, $iter = TMP_Enumerable_reject_79.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_reject_79.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"reject\"], (TMP_80 = function(){var self = TMP_80.$$s || this;\n\n return self.$enumerator_size()}, TMP_80.$$s = self, TMP_80.$$arity = 0, TMP_80))\n };\n \n var result = [];\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = Opal.yield1(block, param);\n\n if ($falsy(value)) {\n result.push(param);\n }\n };\n\n self.$each();\n\n return result;\n ;\n }, TMP_Enumerable_reject_79.$$arity = 0);\n \n Opal.def(self, '$reverse_each', TMP_Enumerable_reverse_each_81 = function $$reverse_each() {\n var TMP_82, self = this, $iter = TMP_Enumerable_reverse_each_81.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_reverse_each_81.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"reverse_each\"], (TMP_82 = function(){var self = TMP_82.$$s || this;\n\n return self.$enumerator_size()}, TMP_82.$$s = self, TMP_82.$$arity = 0, TMP_82))\n };\n \n var result = [];\n\n self.$each.$$p = function() {\n result.push(arguments);\n };\n\n self.$each();\n\n for (var i = result.length - 1; i >= 0; i--) {\n Opal.yieldX(block, result[i]);\n }\n\n return result;\n ;\n }, TMP_Enumerable_reverse_each_81.$$arity = 0);\n Opal.alias(self, \"select\", \"find_all\");\n \n Opal.def(self, '$slice_before', TMP_Enumerable_slice_before_83 = function $$slice_before(pattern) {\n var TMP_84, self = this, $iter = TMP_Enumerable_slice_before_83.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_slice_before_83.$$p = null;\n \n if ($truthy(pattern === undefined && block === nil)) {\n self.$raise($$($nesting, 'ArgumentError'), \"both pattern and block are given\")};\n if ($truthy(pattern !== undefined && block !== nil || arguments.length > 1)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (arguments.length) + \" expected 1)\")};\n return $send($$($nesting, 'Enumerator'), 'new', [], (TMP_84 = function(e){var self = TMP_84.$$s || this;\nif (e == null) e = nil;\n \n var slice = [];\n\n if (block !== nil) {\n if (pattern === undefined) {\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = Opal.yield1(block, param);\n\n if ($truthy(value) && slice.length > 0) {\n e['$<<'](slice);\n slice = [];\n }\n\n slice.push(param);\n };\n }\n else {\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = block(param, pattern.$dup());\n\n if ($truthy(value) && slice.length > 0) {\n e['$<<'](slice);\n slice = [];\n }\n\n slice.push(param);\n };\n }\n }\n else {\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = pattern['$==='](param);\n\n if ($truthy(value) && slice.length > 0) {\n e['$<<'](slice);\n slice = [];\n }\n\n slice.push(param);\n };\n }\n\n self.$each();\n\n if (slice.length > 0) {\n e['$<<'](slice);\n }\n }, TMP_84.$$s = self, TMP_84.$$arity = 1, TMP_84));\n }, TMP_Enumerable_slice_before_83.$$arity = -1);\n \n Opal.def(self, '$slice_after', TMP_Enumerable_slice_after_85 = function $$slice_after(pattern) {\n var TMP_86, TMP_87, self = this, $iter = TMP_Enumerable_slice_after_85.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_slice_after_85.$$p = null;\n \n if ($truthy(pattern === undefined && block === nil)) {\n self.$raise($$($nesting, 'ArgumentError'), \"both pattern and block are given\")};\n if ($truthy(pattern !== undefined && block !== nil || arguments.length > 1)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (arguments.length) + \" expected 1)\")};\n if ($truthy(pattern !== undefined)) {\n block = $send(self, 'proc', [], (TMP_86 = function(e){var self = TMP_86.$$s || this;\nif (e == null) e = nil;\n return pattern['$==='](e)}, TMP_86.$$s = self, TMP_86.$$arity = 1, TMP_86))};\n return $send($$($nesting, 'Enumerator'), 'new', [], (TMP_87 = function(yielder){var self = TMP_87.$$s || this;\nif (yielder == null) yielder = nil;\n \n var accumulate;\n\n self.$each.$$p = function() {\n var element = $$($nesting, 'Opal').$destructure(arguments),\n end_chunk = Opal.yield1(block, element);\n\n if (accumulate == null) {\n accumulate = [];\n }\n\n if ($truthy(end_chunk)) {\n accumulate.push(element);\n yielder.$yield(accumulate);\n accumulate = null;\n } else {\n accumulate.push(element)\n }\n }\n\n self.$each();\n\n if (accumulate != null) {\n yielder.$yield(accumulate);\n }\n }, TMP_87.$$s = self, TMP_87.$$arity = 1, TMP_87));\n }, TMP_Enumerable_slice_after_85.$$arity = -1);\n \n Opal.def(self, '$slice_when', TMP_Enumerable_slice_when_88 = function $$slice_when() {\n var TMP_89, self = this, $iter = TMP_Enumerable_slice_when_88.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerable_slice_when_88.$$p = null;\n \n if ((block !== nil)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"wrong number of arguments (0 for 1)\")\n };\n return $send($$($nesting, 'Enumerator'), 'new', [], (TMP_89 = function(yielder){var self = TMP_89.$$s || this;\nif (yielder == null) yielder = nil;\n \n var slice = nil, last_after = nil;\n\n self.$each_cons.$$p = function() {\n var params = $$($nesting, 'Opal').$destructure(arguments),\n before = params[0],\n after = params[1],\n match = Opal.yieldX(block, [before, after]);\n\n last_after = after;\n\n if (slice === nil) {\n slice = [];\n }\n\n if ($truthy(match)) {\n slice.push(before);\n yielder.$yield(slice);\n slice = [];\n } else {\n slice.push(before);\n }\n }\n\n self.$each_cons(2);\n\n if (slice !== nil) {\n slice.push(last_after);\n yielder.$yield(slice);\n }\n }, TMP_89.$$s = self, TMP_89.$$arity = 1, TMP_89));\n }, TMP_Enumerable_slice_when_88.$$arity = 0);\n \n Opal.def(self, '$sort', TMP_Enumerable_sort_90 = function $$sort() {\n var TMP_91, self = this, $iter = TMP_Enumerable_sort_90.$$p, block = $iter || nil, ary = nil;\n\n if ($iter) TMP_Enumerable_sort_90.$$p = null;\n \n ary = self.$to_a();\n if ((block !== nil)) {\n } else {\n block = $lambda((TMP_91 = function(a, b){var self = TMP_91.$$s || this;\nif (a == null) a = nil;if (b == null) b = nil;\n return a['$<=>'](b)}, TMP_91.$$s = self, TMP_91.$$arity = 2, TMP_91))\n };\n return $send(ary, 'sort', [], block.$to_proc());\n }, TMP_Enumerable_sort_90.$$arity = 0);\n \n Opal.def(self, '$sort_by', TMP_Enumerable_sort_by_92 = function $$sort_by() {\n var TMP_93, TMP_94, TMP_95, TMP_96, self = this, $iter = TMP_Enumerable_sort_by_92.$$p, block = $iter || nil, dup = nil;\n\n if ($iter) TMP_Enumerable_sort_by_92.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"sort_by\"], (TMP_93 = function(){var self = TMP_93.$$s || this;\n\n return self.$enumerator_size()}, TMP_93.$$s = self, TMP_93.$$arity = 0, TMP_93))\n };\n dup = $send(self, 'map', [], (TMP_94 = function(){var self = TMP_94.$$s || this, arg = nil;\n\n \n arg = $$($nesting, 'Opal').$destructure(arguments);\n return [Opal.yield1(block, arg), arg];}, TMP_94.$$s = self, TMP_94.$$arity = 0, TMP_94));\n $send(dup, 'sort!', [], (TMP_95 = function(a, b){var self = TMP_95.$$s || this;\nif (a == null) a = nil;if (b == null) b = nil;\n return (a[0])['$<=>'](b[0])}, TMP_95.$$s = self, TMP_95.$$arity = 2, TMP_95));\n return $send(dup, 'map!', [], (TMP_96 = function(i){var self = TMP_96.$$s || this;\nif (i == null) i = nil;\n return i[1];}, TMP_96.$$s = self, TMP_96.$$arity = 1, TMP_96));\n }, TMP_Enumerable_sort_by_92.$$arity = 0);\n \n Opal.def(self, '$sum', TMP_Enumerable_sum_98 = function $$sum(initial) {\n var TMP_97, self = this, $iter = TMP_Enumerable_sum_98.$$p, $yield = $iter || nil, result = nil;\n\n if (initial == null) {\n initial = 0;\n }\n if ($iter) TMP_Enumerable_sum_98.$$p = null;\n \n result = initial;\n $send(self, 'each', [], (TMP_97 = function($a_rest){var self = TMP_97.$$s || this, args, item = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n item = (function() {if (($yield !== nil)) {\n return Opal.yieldX($yield, Opal.to_a(args));\n } else {\n return $$($nesting, 'Opal').$destructure(args)\n }; return nil; })();\n return (result = $rb_plus(result, item));}, TMP_97.$$s = self, TMP_97.$$arity = -1, TMP_97));\n return result;\n }, TMP_Enumerable_sum_98.$$arity = -1);\n \n Opal.def(self, '$take', TMP_Enumerable_take_99 = function $$take(num) {\n var self = this;\n\n return self.$first(num)\n }, TMP_Enumerable_take_99.$$arity = 1);\n \n Opal.def(self, '$take_while', TMP_Enumerable_take_while_100 = function $$take_while() {try {\n\n var TMP_101, self = this, $iter = TMP_Enumerable_take_while_100.$$p, block = $iter || nil, result = nil;\n\n if ($iter) TMP_Enumerable_take_while_100.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return self.$enum_for(\"take_while\")\n };\n result = [];\n return $send(self, 'each', [], (TMP_101 = function($a_rest){var self = TMP_101.$$s || this, args, value = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n value = $$($nesting, 'Opal').$destructure(args);\n if ($truthy(Opal.yield1(block, value))) {\n } else {\n Opal.ret(result)\n };\n return result.push(value);;}, TMP_101.$$s = self, TMP_101.$$arity = -1, TMP_101));\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Enumerable_take_while_100.$$arity = 0);\n \n Opal.def(self, '$uniq', TMP_Enumerable_uniq_102 = function $$uniq() {\n var TMP_103, self = this, $iter = TMP_Enumerable_uniq_102.$$p, block = $iter || nil, hash = nil;\n\n if ($iter) TMP_Enumerable_uniq_102.$$p = null;\n \n hash = $hash2([], {});\n $send(self, 'each', [], (TMP_103 = function($a_rest){var self = TMP_103.$$s || this, args, value = nil, produced = nil, $writer = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n value = $$($nesting, 'Opal').$destructure(args);\n produced = (function() {if ((block !== nil)) {\n return Opal.yield1(block, value);\n } else {\n return value\n }; return nil; })();\n if ($truthy(hash['$key?'](produced))) {\n return nil\n } else {\n \n $writer = [produced, value];\n $send(hash, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n };}, TMP_103.$$s = self, TMP_103.$$arity = -1, TMP_103));\n return hash.$values();\n }, TMP_Enumerable_uniq_102.$$arity = 0);\n Opal.alias(self, \"to_a\", \"entries\");\n \n Opal.def(self, '$zip', TMP_Enumerable_zip_104 = function $$zip($a_rest) {\n var self = this, others, $iter = TMP_Enumerable_zip_104.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n others = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n others[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Enumerable_zip_104.$$p = null;\n return $send(self.$to_a(), 'zip', Opal.to_a(others))\n }, TMP_Enumerable_zip_104.$$arity = -1);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/enumerator\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $falsy = Opal.falsy;\n\n Opal.add_stubs(['$require', '$include', '$allocate', '$new', '$to_proc', '$coerce_to', '$nil?', '$empty?', '$+', '$class', '$__send__', '$===', '$call', '$enum_for', '$size', '$destructure', '$inspect', '$any?', '$[]', '$raise', '$yield', '$each', '$enumerator_size', '$respond_to?', '$try_convert', '$<', '$for']);\n \n self.$require(\"corelib/enumerable\");\n return (function($base, $super, $parent_nesting) {\n function $Enumerator(){};\n var self = $Enumerator = $klass($base, $super, 'Enumerator', $Enumerator);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Enumerator_for_1, TMP_Enumerator_initialize_2, TMP_Enumerator_each_3, TMP_Enumerator_size_4, TMP_Enumerator_with_index_5, TMP_Enumerator_inspect_7;\n\n def.size = def.args = def.object = def.method = nil;\n \n self.$include($$($nesting, 'Enumerable'));\n def.$$is_enumerator = true;\n Opal.defs(self, '$for', TMP_Enumerator_for_1 = function(object, method, $a_rest) {\n var self = this, args, $iter = TMP_Enumerator_for_1.$$p, block = $iter || nil;\n\n if (method == null) {\n method = \"each\";\n }\n var $args_len = arguments.length, $rest_len = $args_len - 2;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 2; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 2] = arguments[$arg_idx];\n }\n if ($iter) TMP_Enumerator_for_1.$$p = null;\n \n var obj = self.$allocate();\n\n obj.object = object;\n obj.size = block;\n obj.method = method;\n obj.args = args;\n\n return obj;\n \n }, TMP_Enumerator_for_1.$$arity = -2);\n \n Opal.def(self, '$initialize', TMP_Enumerator_initialize_2 = function $$initialize($a_rest) {\n var self = this, $iter = TMP_Enumerator_initialize_2.$$p, block = $iter || nil;\n\n if ($iter) TMP_Enumerator_initialize_2.$$p = null;\n if ($truthy(block)) {\n \n self.object = $send($$($nesting, 'Generator'), 'new', [], block.$to_proc());\n self.method = \"each\";\n self.args = [];\n self.size = arguments[0] || nil;\n if ($truthy(self.size)) {\n return (self.size = $$($nesting, 'Opal').$coerce_to(self.size, $$($nesting, 'Integer'), \"to_int\"))\n } else {\n return nil\n };\n } else {\n \n self.object = arguments[0];\n self.method = arguments[1] || \"each\";\n self.args = $slice.call(arguments, 2);\n return (self.size = nil);\n }\n }, TMP_Enumerator_initialize_2.$$arity = -1);\n \n Opal.def(self, '$each', TMP_Enumerator_each_3 = function $$each($a_rest) {\n var $b, self = this, args, $iter = TMP_Enumerator_each_3.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Enumerator_each_3.$$p = null;\n \n if ($truthy(($truthy($b = block['$nil?']()) ? args['$empty?']() : $b))) {\n return self};\n args = $rb_plus(self.args, args);\n if ($truthy(block['$nil?']())) {\n return $send(self.$class(), 'new', [self.object, self.method].concat(Opal.to_a(args)))};\n return $send(self.object, '__send__', [self.method].concat(Opal.to_a(args)), block.$to_proc());\n }, TMP_Enumerator_each_3.$$arity = -1);\n \n Opal.def(self, '$size', TMP_Enumerator_size_4 = function $$size() {\n var self = this;\n\n if ($truthy($$($nesting, 'Proc')['$==='](self.size))) {\n return $send(self.size, 'call', Opal.to_a(self.args))\n } else {\n return self.size\n }\n }, TMP_Enumerator_size_4.$$arity = 0);\n \n Opal.def(self, '$with_index', TMP_Enumerator_with_index_5 = function $$with_index(offset) {\n var TMP_6, self = this, $iter = TMP_Enumerator_with_index_5.$$p, block = $iter || nil;\n\n if (offset == null) {\n offset = 0;\n }\n if ($iter) TMP_Enumerator_with_index_5.$$p = null;\n \n offset = (function() {if ($truthy(offset)) {\n return $$($nesting, 'Opal').$coerce_to(offset, $$($nesting, 'Integer'), \"to_int\")\n } else {\n return 0\n }; return nil; })();\n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"with_index\", offset], (TMP_6 = function(){var self = TMP_6.$$s || this;\n\n return self.$size()}, TMP_6.$$s = self, TMP_6.$$arity = 0, TMP_6))\n };\n \n var result, index = offset;\n\n self.$each.$$p = function() {\n var param = $$($nesting, 'Opal').$destructure(arguments),\n value = block(param, index);\n\n index++;\n\n return value;\n }\n\n return self.$each();\n ;\n }, TMP_Enumerator_with_index_5.$$arity = -1);\n Opal.alias(self, \"with_object\", \"each_with_object\");\n \n Opal.def(self, '$inspect', TMP_Enumerator_inspect_7 = function $$inspect() {\n var self = this, result = nil;\n\n \n result = \"\" + \"#<\" + (self.$class()) + \": \" + (self.object.$inspect()) + \":\" + (self.method);\n if ($truthy(self.args['$any?']())) {\n result = $rb_plus(result, \"\" + \"(\" + (self.args.$inspect()['$[]']($$($nesting, 'Range').$new(1, -2))) + \")\")};\n return $rb_plus(result, \">\");\n }, TMP_Enumerator_inspect_7.$$arity = 0);\n (function($base, $super, $parent_nesting) {\n function $Generator(){};\n var self = $Generator = $klass($base, $super, 'Generator', $Generator);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Generator_initialize_8, TMP_Generator_each_9;\n\n def.block = nil;\n \n self.$include($$($nesting, 'Enumerable'));\n \n Opal.def(self, '$initialize', TMP_Generator_initialize_8 = function $$initialize() {\n var self = this, $iter = TMP_Generator_initialize_8.$$p, block = $iter || nil;\n\n if ($iter) TMP_Generator_initialize_8.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'LocalJumpError'), \"no block given\")\n };\n return (self.block = block);\n }, TMP_Generator_initialize_8.$$arity = 0);\n return (Opal.def(self, '$each', TMP_Generator_each_9 = function $$each($a_rest) {\n var self = this, args, $iter = TMP_Generator_each_9.$$p, block = $iter || nil, yielder = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Generator_each_9.$$p = null;\n \n yielder = $send($$($nesting, 'Yielder'), 'new', [], block.$to_proc());\n \n try {\n args.unshift(yielder);\n\n Opal.yieldX(self.block, args);\n }\n catch (e) {\n if (e === $breaker) {\n return $breaker.$v;\n }\n else {\n throw e;\n }\n }\n ;\n return self;\n }, TMP_Generator_each_9.$$arity = -1), nil) && 'each';\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $Yielder(){};\n var self = $Yielder = $klass($base, $super, 'Yielder', $Yielder);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Yielder_initialize_10, TMP_Yielder_yield_11, TMP_Yielder_$lt$lt_12;\n\n def.block = nil;\n \n \n Opal.def(self, '$initialize', TMP_Yielder_initialize_10 = function $$initialize() {\n var self = this, $iter = TMP_Yielder_initialize_10.$$p, block = $iter || nil;\n\n if ($iter) TMP_Yielder_initialize_10.$$p = null;\n return (self.block = block)\n }, TMP_Yielder_initialize_10.$$arity = 0);\n \n Opal.def(self, '$yield', TMP_Yielder_yield_11 = function($a_rest) {\n var self = this, values;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n values = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n values[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n var value = Opal.yieldX(self.block, values);\n\n if (value === $breaker) {\n throw $breaker;\n }\n\n return value;\n \n }, TMP_Yielder_yield_11.$$arity = -1);\n return (Opal.def(self, '$<<', TMP_Yielder_$lt$lt_12 = function($a_rest) {\n var self = this, values;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n values = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n values[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n $send(self, 'yield', Opal.to_a(values));\n return self;\n }, TMP_Yielder_$lt$lt_12.$$arity = -1), nil) && '<<';\n })($nesting[0], null, $nesting);\n return (function($base, $super, $parent_nesting) {\n function $Lazy(){};\n var self = $Lazy = $klass($base, $super, 'Lazy', $Lazy);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Lazy_initialize_13, TMP_Lazy_lazy_16, TMP_Lazy_collect_17, TMP_Lazy_collect_concat_19, TMP_Lazy_drop_24, TMP_Lazy_drop_while_25, TMP_Lazy_enum_for_27, TMP_Lazy_find_all_28, TMP_Lazy_grep_30, TMP_Lazy_reject_33, TMP_Lazy_take_36, TMP_Lazy_take_while_37, TMP_Lazy_inspect_39;\n\n def.enumerator = nil;\n \n (function($base, $super, $parent_nesting) {\n function $StopLazyError(){};\n var self = $StopLazyError = $klass($base, $super, 'StopLazyError', $StopLazyError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'Exception'), $nesting);\n \n Opal.def(self, '$initialize', TMP_Lazy_initialize_13 = function $$initialize(object, size) {\n var TMP_14, self = this, $iter = TMP_Lazy_initialize_13.$$p, block = $iter || nil;\n\n if (size == null) {\n size = nil;\n }\n if ($iter) TMP_Lazy_initialize_13.$$p = null;\n \n if ((block !== nil)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to call lazy new without a block\")\n };\n self.enumerator = object;\n return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Lazy_initialize_13, false), [size], (TMP_14 = function(yielder, $a_rest){var self = TMP_14.$$s || this, each_args, TMP_15;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n each_args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n each_args[$arg_idx - 1] = arguments[$arg_idx];\n }if (yielder == null) yielder = nil;\n try {\n return $send(object, 'each', Opal.to_a(each_args), (TMP_15 = function($a_rest){var self = TMP_15.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n args.unshift(yielder);\n\n Opal.yieldX(block, args);\n }, TMP_15.$$s = self, TMP_15.$$arity = -1, TMP_15))\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'Exception')])) {\n try {\n return nil\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }}, TMP_14.$$s = self, TMP_14.$$arity = -2, TMP_14));\n }, TMP_Lazy_initialize_13.$$arity = -2);\n Opal.alias(self, \"force\", \"to_a\");\n \n Opal.def(self, '$lazy', TMP_Lazy_lazy_16 = function $$lazy() {\n var self = this;\n\n return self\n }, TMP_Lazy_lazy_16.$$arity = 0);\n \n Opal.def(self, '$collect', TMP_Lazy_collect_17 = function $$collect() {\n var TMP_18, self = this, $iter = TMP_Lazy_collect_17.$$p, block = $iter || nil;\n\n if ($iter) TMP_Lazy_collect_17.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to call lazy map without a block\")\n };\n return $send($$($nesting, 'Lazy'), 'new', [self, self.$enumerator_size()], (TMP_18 = function(enum$, $a_rest){var self = TMP_18.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n \n var value = Opal.yieldX(block, args);\n\n enum$.$yield(value);\n }, TMP_18.$$s = self, TMP_18.$$arity = -2, TMP_18));\n }, TMP_Lazy_collect_17.$$arity = 0);\n \n Opal.def(self, '$collect_concat', TMP_Lazy_collect_concat_19 = function $$collect_concat() {\n var TMP_20, self = this, $iter = TMP_Lazy_collect_concat_19.$$p, block = $iter || nil;\n\n if ($iter) TMP_Lazy_collect_concat_19.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to call lazy map without a block\")\n };\n return $send($$($nesting, 'Lazy'), 'new', [self, nil], (TMP_20 = function(enum$, $a_rest){var self = TMP_20.$$s || this, args, TMP_21, TMP_22;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n \n var value = Opal.yieldX(block, args);\n\n if ((value)['$respond_to?'](\"force\") && (value)['$respond_to?'](\"each\")) {\n $send((value), 'each', [], (TMP_21 = function(v){var self = TMP_21.$$s || this;\nif (v == null) v = nil;\n return enum$.$yield(v)}, TMP_21.$$s = self, TMP_21.$$arity = 1, TMP_21))\n }\n else {\n var array = $$($nesting, 'Opal').$try_convert(value, $$($nesting, 'Array'), \"to_ary\");\n\n if (array === nil) {\n enum$.$yield(value);\n }\n else {\n $send((value), 'each', [], (TMP_22 = function(v){var self = TMP_22.$$s || this;\nif (v == null) v = nil;\n return enum$.$yield(v)}, TMP_22.$$s = self, TMP_22.$$arity = 1, TMP_22));\n }\n }\n }, TMP_20.$$s = self, TMP_20.$$arity = -2, TMP_20));\n }, TMP_Lazy_collect_concat_19.$$arity = 0);\n \n Opal.def(self, '$drop', TMP_Lazy_drop_24 = function $$drop(n) {\n var TMP_23, self = this, current_size = nil, set_size = nil, dropped = nil;\n\n \n n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy($rb_lt(n, 0))) {\n self.$raise($$($nesting, 'ArgumentError'), \"attempt to drop negative size\")};\n current_size = self.$enumerator_size();\n set_size = (function() {if ($truthy($$($nesting, 'Integer')['$==='](current_size))) {\n if ($truthy($rb_lt(n, current_size))) {\n return n\n } else {\n return current_size\n }\n } else {\n return current_size\n }; return nil; })();\n dropped = 0;\n return $send($$($nesting, 'Lazy'), 'new', [self, set_size], (TMP_23 = function(enum$, $a_rest){var self = TMP_23.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n if ($truthy($rb_lt(dropped, n))) {\n return (dropped = $rb_plus(dropped, 1))\n } else {\n return $send(enum$, 'yield', Opal.to_a(args))\n }}, TMP_23.$$s = self, TMP_23.$$arity = -2, TMP_23));\n }, TMP_Lazy_drop_24.$$arity = 1);\n \n Opal.def(self, '$drop_while', TMP_Lazy_drop_while_25 = function $$drop_while() {\n var TMP_26, self = this, $iter = TMP_Lazy_drop_while_25.$$p, block = $iter || nil, succeeding = nil;\n\n if ($iter) TMP_Lazy_drop_while_25.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to call lazy drop_while without a block\")\n };\n succeeding = true;\n return $send($$($nesting, 'Lazy'), 'new', [self, nil], (TMP_26 = function(enum$, $a_rest){var self = TMP_26.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n if ($truthy(succeeding)) {\n \n var value = Opal.yieldX(block, args);\n\n if ($falsy(value)) {\n succeeding = false;\n\n $send(enum$, 'yield', Opal.to_a(args));\n }\n \n } else {\n return $send(enum$, 'yield', Opal.to_a(args))\n }}, TMP_26.$$s = self, TMP_26.$$arity = -2, TMP_26));\n }, TMP_Lazy_drop_while_25.$$arity = 0);\n \n Opal.def(self, '$enum_for', TMP_Lazy_enum_for_27 = function $$enum_for(method, $a_rest) {\n var self = this, args, $iter = TMP_Lazy_enum_for_27.$$p, block = $iter || nil;\n\n if (method == null) {\n method = \"each\";\n }\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }\n if ($iter) TMP_Lazy_enum_for_27.$$p = null;\n return $send(self.$class(), 'for', [self, method].concat(Opal.to_a(args)), block.$to_proc())\n }, TMP_Lazy_enum_for_27.$$arity = -1);\n \n Opal.def(self, '$find_all', TMP_Lazy_find_all_28 = function $$find_all() {\n var TMP_29, self = this, $iter = TMP_Lazy_find_all_28.$$p, block = $iter || nil;\n\n if ($iter) TMP_Lazy_find_all_28.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to call lazy select without a block\")\n };\n return $send($$($nesting, 'Lazy'), 'new', [self, nil], (TMP_29 = function(enum$, $a_rest){var self = TMP_29.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n \n var value = Opal.yieldX(block, args);\n\n if ($truthy(value)) {\n $send(enum$, 'yield', Opal.to_a(args));\n }\n }, TMP_29.$$s = self, TMP_29.$$arity = -2, TMP_29));\n }, TMP_Lazy_find_all_28.$$arity = 0);\n Opal.alias(self, \"flat_map\", \"collect_concat\");\n \n Opal.def(self, '$grep', TMP_Lazy_grep_30 = function $$grep(pattern) {\n var TMP_31, TMP_32, self = this, $iter = TMP_Lazy_grep_30.$$p, block = $iter || nil;\n\n if ($iter) TMP_Lazy_grep_30.$$p = null;\n if ($truthy(block)) {\n return $send($$($nesting, 'Lazy'), 'new', [self, nil], (TMP_31 = function(enum$, $a_rest){var self = TMP_31.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n \n var param = $$($nesting, 'Opal').$destructure(args),\n value = pattern['$==='](param);\n\n if ($truthy(value)) {\n value = Opal.yield1(block, param);\n\n enum$.$yield(Opal.yield1(block, param));\n }\n }, TMP_31.$$s = self, TMP_31.$$arity = -2, TMP_31))\n } else {\n return $send($$($nesting, 'Lazy'), 'new', [self, nil], (TMP_32 = function(enum$, $a_rest){var self = TMP_32.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n \n var param = $$($nesting, 'Opal').$destructure(args),\n value = pattern['$==='](param);\n\n if ($truthy(value)) {\n enum$.$yield(param);\n }\n }, TMP_32.$$s = self, TMP_32.$$arity = -2, TMP_32))\n }\n }, TMP_Lazy_grep_30.$$arity = 1);\n Opal.alias(self, \"map\", \"collect\");\n Opal.alias(self, \"select\", \"find_all\");\n \n Opal.def(self, '$reject', TMP_Lazy_reject_33 = function $$reject() {\n var TMP_34, self = this, $iter = TMP_Lazy_reject_33.$$p, block = $iter || nil;\n\n if ($iter) TMP_Lazy_reject_33.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to call lazy reject without a block\")\n };\n return $send($$($nesting, 'Lazy'), 'new', [self, nil], (TMP_34 = function(enum$, $a_rest){var self = TMP_34.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n \n var value = Opal.yieldX(block, args);\n\n if ($falsy(value)) {\n $send(enum$, 'yield', Opal.to_a(args));\n }\n }, TMP_34.$$s = self, TMP_34.$$arity = -2, TMP_34));\n }, TMP_Lazy_reject_33.$$arity = 0);\n \n Opal.def(self, '$take', TMP_Lazy_take_36 = function $$take(n) {\n var TMP_35, self = this, current_size = nil, set_size = nil, taken = nil;\n\n \n n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy($rb_lt(n, 0))) {\n self.$raise($$($nesting, 'ArgumentError'), \"attempt to take negative size\")};\n current_size = self.$enumerator_size();\n set_size = (function() {if ($truthy($$($nesting, 'Integer')['$==='](current_size))) {\n if ($truthy($rb_lt(n, current_size))) {\n return n\n } else {\n return current_size\n }\n } else {\n return current_size\n }; return nil; })();\n taken = 0;\n return $send($$($nesting, 'Lazy'), 'new', [self, set_size], (TMP_35 = function(enum$, $a_rest){var self = TMP_35.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n if ($truthy($rb_lt(taken, n))) {\n \n $send(enum$, 'yield', Opal.to_a(args));\n return (taken = $rb_plus(taken, 1));\n } else {\n return self.$raise($$($nesting, 'StopLazyError'))\n }}, TMP_35.$$s = self, TMP_35.$$arity = -2, TMP_35));\n }, TMP_Lazy_take_36.$$arity = 1);\n \n Opal.def(self, '$take_while', TMP_Lazy_take_while_37 = function $$take_while() {\n var TMP_38, self = this, $iter = TMP_Lazy_take_while_37.$$p, block = $iter || nil;\n\n if ($iter) TMP_Lazy_take_while_37.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to call lazy take_while without a block\")\n };\n return $send($$($nesting, 'Lazy'), 'new', [self, nil], (TMP_38 = function(enum$, $a_rest){var self = TMP_38.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }if (enum$ == null) enum$ = nil;\n \n var value = Opal.yieldX(block, args);\n\n if ($truthy(value)) {\n $send(enum$, 'yield', Opal.to_a(args));\n }\n else {\n self.$raise($$($nesting, 'StopLazyError'));\n }\n }, TMP_38.$$s = self, TMP_38.$$arity = -2, TMP_38));\n }, TMP_Lazy_take_while_37.$$arity = 0);\n Opal.alias(self, \"to_enum\", \"enum_for\");\n return (Opal.def(self, '$inspect', TMP_Lazy_inspect_39 = function $$inspect() {\n var self = this;\n\n return \"\" + \"#<\" + (self.$class()) + \": \" + (self.enumerator.$inspect()) + \">\"\n }, TMP_Lazy_inspect_39.$$arity = 0), nil) && 'inspect';\n })($nesting[0], self, $nesting);\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/numeric\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$require', '$include', '$instance_of?', '$class', '$Float', '$respond_to?', '$coerce', '$__send__', '$===', '$raise', '$equal?', '$-', '$*', '$div', '$<', '$-@', '$ceil', '$to_f', '$denominator', '$to_r', '$==', '$floor', '$/', '$%', '$Complex', '$zero?', '$numerator', '$abs', '$arg', '$coerce_to!', '$round', '$to_i', '$truncate', '$>']);\n \n self.$require(\"corelib/comparable\");\n return (function($base, $super, $parent_nesting) {\n function $Numeric(){};\n var self = $Numeric = $klass($base, $super, 'Numeric', $Numeric);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Numeric_coerce_1, TMP_Numeric___coerced___2, TMP_Numeric_$lt$eq$gt_3, TMP_Numeric_$$_4, TMP_Numeric_$$_5, TMP_Numeric_$_6, TMP_Numeric_abs_7, TMP_Numeric_abs2_8, TMP_Numeric_angle_9, TMP_Numeric_ceil_10, TMP_Numeric_conj_11, TMP_Numeric_denominator_12, TMP_Numeric_div_13, TMP_Numeric_divmod_14, TMP_Numeric_fdiv_15, TMP_Numeric_floor_16, TMP_Numeric_i_17, TMP_Numeric_imag_18, TMP_Numeric_integer$q_19, TMP_Numeric_nonzero$q_20, TMP_Numeric_numerator_21, TMP_Numeric_polar_22, TMP_Numeric_quo_23, TMP_Numeric_real_24, TMP_Numeric_real$q_25, TMP_Numeric_rect_26, TMP_Numeric_round_27, TMP_Numeric_to_c_28, TMP_Numeric_to_int_29, TMP_Numeric_truncate_30, TMP_Numeric_zero$q_31, TMP_Numeric_positive$q_32, TMP_Numeric_negative$q_33, TMP_Numeric_dup_34, TMP_Numeric_clone_35, TMP_Numeric_finite$q_36, TMP_Numeric_infinite$q_37;\n\n \n self.$include($$($nesting, 'Comparable'));\n \n Opal.def(self, '$coerce', TMP_Numeric_coerce_1 = function $$coerce(other) {\n var self = this;\n\n \n if ($truthy(other['$instance_of?'](self.$class()))) {\n return [other, self]};\n return [self.$Float(other), self.$Float(self)];\n }, TMP_Numeric_coerce_1.$$arity = 1);\n \n Opal.def(self, '$__coerced__', TMP_Numeric___coerced___2 = function $$__coerced__(method, other) {\n var $a, $b, self = this, a = nil, b = nil, $case = nil;\n\n if ($truthy(other['$respond_to?'](\"coerce\"))) {\n \n $b = other.$coerce(self), $a = Opal.to_ary($b), (a = ($a[0] == null ? nil : $a[0])), (b = ($a[1] == null ? nil : $a[1])), $b;\n return a.$__send__(method, b);\n } else {\n return (function() {$case = method;\n if (\"+\"['$===']($case) || \"-\"['$===']($case) || \"*\"['$===']($case) || \"/\"['$===']($case) || \"%\"['$===']($case) || \"&\"['$===']($case) || \"|\"['$===']($case) || \"^\"['$===']($case) || \"**\"['$===']($case)) {return self.$raise($$($nesting, 'TypeError'), \"\" + (other.$class()) + \" can't be coerced into Numeric\")}\n else if (\">\"['$===']($case) || \">=\"['$===']($case) || \"<\"['$===']($case) || \"<=\"['$===']($case) || \"<=>\"['$===']($case)) {return self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (other.$class()) + \" failed\")}\n else { return nil }})()\n }\n }, TMP_Numeric___coerced___2.$$arity = 2);\n \n Opal.def(self, '$<=>', TMP_Numeric_$lt$eq$gt_3 = function(other) {\n var self = this;\n\n \n if ($truthy(self['$equal?'](other))) {\n return 0};\n return nil;\n }, TMP_Numeric_$lt$eq$gt_3.$$arity = 1);\n \n Opal.def(self, '$+@', TMP_Numeric_$$_4 = function() {\n var self = this;\n\n return self\n }, TMP_Numeric_$$_4.$$arity = 0);\n \n Opal.def(self, '$-@', TMP_Numeric_$$_5 = function() {\n var self = this;\n\n return $rb_minus(0, self)\n }, TMP_Numeric_$$_5.$$arity = 0);\n \n Opal.def(self, '$%', TMP_Numeric_$_6 = function(other) {\n var self = this;\n\n return $rb_minus(self, $rb_times(other, self.$div(other)))\n }, TMP_Numeric_$_6.$$arity = 1);\n \n Opal.def(self, '$abs', TMP_Numeric_abs_7 = function $$abs() {\n var self = this;\n\n if ($rb_lt(self, 0)) {\n return self['$-@']()\n } else {\n return self\n }\n }, TMP_Numeric_abs_7.$$arity = 0);\n \n Opal.def(self, '$abs2', TMP_Numeric_abs2_8 = function $$abs2() {\n var self = this;\n\n return $rb_times(self, self)\n }, TMP_Numeric_abs2_8.$$arity = 0);\n \n Opal.def(self, '$angle', TMP_Numeric_angle_9 = function $$angle() {\n var self = this;\n\n if ($rb_lt(self, 0)) {\n return $$$($$($nesting, 'Math'), 'PI')\n } else {\n return 0\n }\n }, TMP_Numeric_angle_9.$$arity = 0);\n Opal.alias(self, \"arg\", \"angle\");\n \n Opal.def(self, '$ceil', TMP_Numeric_ceil_10 = function $$ceil(ndigits) {\n var self = this;\n\n if (ndigits == null) {\n ndigits = 0;\n }\n return self.$to_f().$ceil(ndigits)\n }, TMP_Numeric_ceil_10.$$arity = -1);\n \n Opal.def(self, '$conj', TMP_Numeric_conj_11 = function $$conj() {\n var self = this;\n\n return self\n }, TMP_Numeric_conj_11.$$arity = 0);\n Opal.alias(self, \"conjugate\", \"conj\");\n \n Opal.def(self, '$denominator', TMP_Numeric_denominator_12 = function $$denominator() {\n var self = this;\n\n return self.$to_r().$denominator()\n }, TMP_Numeric_denominator_12.$$arity = 0);\n \n Opal.def(self, '$div', TMP_Numeric_div_13 = function $$div(other) {\n var self = this;\n\n \n if (other['$=='](0)) {\n self.$raise($$($nesting, 'ZeroDivisionError'), \"divided by o\")};\n return $rb_divide(self, other).$floor();\n }, TMP_Numeric_div_13.$$arity = 1);\n \n Opal.def(self, '$divmod', TMP_Numeric_divmod_14 = function $$divmod(other) {\n var self = this;\n\n return [self.$div(other), self['$%'](other)]\n }, TMP_Numeric_divmod_14.$$arity = 1);\n \n Opal.def(self, '$fdiv', TMP_Numeric_fdiv_15 = function $$fdiv(other) {\n var self = this;\n\n return $rb_divide(self.$to_f(), other)\n }, TMP_Numeric_fdiv_15.$$arity = 1);\n \n Opal.def(self, '$floor', TMP_Numeric_floor_16 = function $$floor(ndigits) {\n var self = this;\n\n if (ndigits == null) {\n ndigits = 0;\n }\n return self.$to_f().$floor(ndigits)\n }, TMP_Numeric_floor_16.$$arity = -1);\n \n Opal.def(self, '$i', TMP_Numeric_i_17 = function $$i() {\n var self = this;\n\n return self.$Complex(0, self)\n }, TMP_Numeric_i_17.$$arity = 0);\n \n Opal.def(self, '$imag', TMP_Numeric_imag_18 = function $$imag() {\n var self = this;\n\n return 0\n }, TMP_Numeric_imag_18.$$arity = 0);\n Opal.alias(self, \"imaginary\", \"imag\");\n \n Opal.def(self, '$integer?', TMP_Numeric_integer$q_19 = function() {\n var self = this;\n\n return false\n }, TMP_Numeric_integer$q_19.$$arity = 0);\n Opal.alias(self, \"magnitude\", \"abs\");\n Opal.alias(self, \"modulo\", \"%\");\n \n Opal.def(self, '$nonzero?', TMP_Numeric_nonzero$q_20 = function() {\n var self = this;\n\n if ($truthy(self['$zero?']())) {\n return nil\n } else {\n return self\n }\n }, TMP_Numeric_nonzero$q_20.$$arity = 0);\n \n Opal.def(self, '$numerator', TMP_Numeric_numerator_21 = function $$numerator() {\n var self = this;\n\n return self.$to_r().$numerator()\n }, TMP_Numeric_numerator_21.$$arity = 0);\n Opal.alias(self, \"phase\", \"arg\");\n \n Opal.def(self, '$polar', TMP_Numeric_polar_22 = function $$polar() {\n var self = this;\n\n return [self.$abs(), self.$arg()]\n }, TMP_Numeric_polar_22.$$arity = 0);\n \n Opal.def(self, '$quo', TMP_Numeric_quo_23 = function $$quo(other) {\n var self = this;\n\n return $rb_divide($$($nesting, 'Opal')['$coerce_to!'](self, $$($nesting, 'Rational'), \"to_r\"), other)\n }, TMP_Numeric_quo_23.$$arity = 1);\n \n Opal.def(self, '$real', TMP_Numeric_real_24 = function $$real() {\n var self = this;\n\n return self\n }, TMP_Numeric_real_24.$$arity = 0);\n \n Opal.def(self, '$real?', TMP_Numeric_real$q_25 = function() {\n var self = this;\n\n return true\n }, TMP_Numeric_real$q_25.$$arity = 0);\n \n Opal.def(self, '$rect', TMP_Numeric_rect_26 = function $$rect() {\n var self = this;\n\n return [self, 0]\n }, TMP_Numeric_rect_26.$$arity = 0);\n Opal.alias(self, \"rectangular\", \"rect\");\n \n Opal.def(self, '$round', TMP_Numeric_round_27 = function $$round(digits) {\n var self = this;\n\n return self.$to_f().$round(digits)\n }, TMP_Numeric_round_27.$$arity = -1);\n \n Opal.def(self, '$to_c', TMP_Numeric_to_c_28 = function $$to_c() {\n var self = this;\n\n return self.$Complex(self, 0)\n }, TMP_Numeric_to_c_28.$$arity = 0);\n \n Opal.def(self, '$to_int', TMP_Numeric_to_int_29 = function $$to_int() {\n var self = this;\n\n return self.$to_i()\n }, TMP_Numeric_to_int_29.$$arity = 0);\n \n Opal.def(self, '$truncate', TMP_Numeric_truncate_30 = function $$truncate(ndigits) {\n var self = this;\n\n if (ndigits == null) {\n ndigits = 0;\n }\n return self.$to_f().$truncate(ndigits)\n }, TMP_Numeric_truncate_30.$$arity = -1);\n \n Opal.def(self, '$zero?', TMP_Numeric_zero$q_31 = function() {\n var self = this;\n\n return self['$=='](0)\n }, TMP_Numeric_zero$q_31.$$arity = 0);\n \n Opal.def(self, '$positive?', TMP_Numeric_positive$q_32 = function() {\n var self = this;\n\n return $rb_gt(self, 0)\n }, TMP_Numeric_positive$q_32.$$arity = 0);\n \n Opal.def(self, '$negative?', TMP_Numeric_negative$q_33 = function() {\n var self = this;\n\n return $rb_lt(self, 0)\n }, TMP_Numeric_negative$q_33.$$arity = 0);\n \n Opal.def(self, '$dup', TMP_Numeric_dup_34 = function $$dup() {\n var self = this;\n\n return self\n }, TMP_Numeric_dup_34.$$arity = 0);\n \n Opal.def(self, '$clone', TMP_Numeric_clone_35 = function $$clone($kwargs) {\n var self = this, freeze;\n\n if ($kwargs == null || !$kwargs.$$is_hash) {\n if ($kwargs == null) {\n $kwargs = $hash2([], {});\n } else {\n throw Opal.ArgumentError.$new('expected kwargs');\n }\n }\n freeze = $kwargs.$$smap[\"freeze\"];\n if (freeze == null) {\n freeze = true\n }\n return self\n }, TMP_Numeric_clone_35.$$arity = -1);\n \n Opal.def(self, '$finite?', TMP_Numeric_finite$q_36 = function() {\n var self = this;\n\n return true\n }, TMP_Numeric_finite$q_36.$$arity = 0);\n return (Opal.def(self, '$infinite?', TMP_Numeric_infinite$q_37 = function() {\n var self = this;\n\n return nil\n }, TMP_Numeric_infinite$q_37.$$arity = 0), nil) && 'infinite?';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/array\"] = function(Opal) {\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $gvars = Opal.gvars;\n\n Opal.add_stubs(['$require', '$include', '$to_a', '$warn', '$raise', '$replace', '$respond_to?', '$to_ary', '$coerce_to', '$coerce_to?', '$===', '$join', '$to_str', '$class', '$hash', '$<=>', '$==', '$object_id', '$inspect', '$enum_for', '$bsearch_index', '$to_proc', '$nil?', '$coerce_to!', '$>', '$*', '$enumerator_size', '$empty?', '$size', '$map', '$equal?', '$dup', '$each', '$[]', '$dig', '$eql?', '$length', '$begin', '$end', '$exclude_end?', '$flatten', '$__id__', '$to_s', '$new', '$max', '$min', '$!', '$>=', '$**', '$delete_if', '$reverse', '$rotate', '$rand', '$at', '$keep_if', '$shuffle!', '$<', '$sort', '$sort_by', '$!=', '$times', '$[]=', '$-', '$<<', '$values', '$is_a?', '$last', '$first', '$upto', '$reject', '$pristine', '$singleton_class']);\n \n self.$require(\"corelib/enumerable\");\n self.$require(\"corelib/numeric\");\n return (function($base, $super, $parent_nesting) {\n function $Array(){};\n var self = $Array = $klass($base, $super, 'Array', $Array);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Array_$$_1, TMP_Array_initialize_2, TMP_Array_try_convert_3, TMP_Array_$_4, TMP_Array_$_5, TMP_Array_$_6, TMP_Array_$_7, TMP_Array_$_8, TMP_Array_$lt$lt_9, TMP_Array_$lt$eq$gt_10, TMP_Array_$eq$eq_11, TMP_Array_$$_12, TMP_Array_$$$eq_13, TMP_Array_any$q_14, TMP_Array_assoc_15, TMP_Array_at_16, TMP_Array_bsearch_index_17, TMP_Array_bsearch_18, TMP_Array_cycle_19, TMP_Array_clear_21, TMP_Array_count_22, TMP_Array_initialize_copy_23, TMP_Array_collect_24, TMP_Array_collect$B_26, TMP_Array_combination_28, TMP_Array_repeated_combination_30, TMP_Array_compact_32, TMP_Array_compact$B_33, TMP_Array_concat_36, TMP_Array_delete_37, TMP_Array_delete_at_38, TMP_Array_delete_if_39, TMP_Array_dig_41, TMP_Array_drop_42, TMP_Array_dup_43, TMP_Array_each_44, TMP_Array_each_index_46, TMP_Array_empty$q_48, TMP_Array_eql$q_49, TMP_Array_fetch_50, TMP_Array_fill_51, TMP_Array_first_52, TMP_Array_flatten_53, TMP_Array_flatten$B_54, TMP_Array_hash_55, TMP_Array_include$q_56, TMP_Array_index_57, TMP_Array_insert_58, TMP_Array_inspect_59, TMP_Array_join_60, TMP_Array_keep_if_61, TMP_Array_last_63, TMP_Array_length_64, TMP_Array_max_65, TMP_Array_min_66, TMP_Array_permutation_67, TMP_Array_repeated_permutation_69, TMP_Array_pop_71, TMP_Array_product_72, TMP_Array_push_73, TMP_Array_rassoc_74, TMP_Array_reject_75, TMP_Array_reject$B_77, TMP_Array_replace_79, TMP_Array_reverse_80, TMP_Array_reverse$B_81, TMP_Array_reverse_each_82, TMP_Array_rindex_84, TMP_Array_rotate_85, TMP_Array_rotate$B_86, TMP_Array_sample_89, TMP_Array_select_90, TMP_Array_select$B_92, TMP_Array_shift_94, TMP_Array_shuffle_95, TMP_Array_shuffle$B_96, TMP_Array_slice$B_97, TMP_Array_sort_98, TMP_Array_sort$B_99, TMP_Array_sort_by$B_100, TMP_Array_take_102, TMP_Array_take_while_103, TMP_Array_to_a_104, TMP_Array_to_h_105, TMP_Array_transpose_108, TMP_Array_uniq_109, TMP_Array_uniq$B_110, TMP_Array_unshift_111, TMP_Array_values_at_114, TMP_Array_zip_115, TMP_Array_inherited_116, TMP_Array_instance_variables_117, TMP_Array_pack_119;\n\n \n self.$include($$($nesting, 'Enumerable'));\n def.$$is_array = true;\n \n function toArraySubclass(obj, klass) {\n if (klass.$$name === Opal.Array) {\n return obj;\n } else {\n return klass.$allocate().$replace((obj).$to_a());\n }\n }\n ;\n Opal.defs(self, '$[]', TMP_Array_$$_1 = function($a_rest) {\n var self = this, objects;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n objects = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n objects[$arg_idx - 0] = arguments[$arg_idx];\n }\n return toArraySubclass(objects, self);\n }, TMP_Array_$$_1.$$arity = -1);\n \n Opal.def(self, '$initialize', TMP_Array_initialize_2 = function $$initialize(size, obj) {\n var self = this, $iter = TMP_Array_initialize_2.$$p, block = $iter || nil;\n\n if (size == null) {\n size = nil;\n }\n if (obj == null) {\n obj = nil;\n }\n if ($iter) TMP_Array_initialize_2.$$p = null;\n \n if (obj !== nil && block !== nil) {\n self.$warn(\"warning: block supersedes default value argument\")\n }\n\n if (size > $$$($$($nesting, 'Integer'), 'MAX')) {\n self.$raise($$($nesting, 'ArgumentError'), \"array size too big\")\n }\n\n if (arguments.length > 2) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (arguments.length) + \" for 0..2)\")\n }\n\n if (arguments.length === 0) {\n self.splice(0, self.length);\n return self;\n }\n\n if (arguments.length === 1) {\n if (size.$$is_array) {\n self.$replace(size.$to_a())\n return self;\n } else if (size['$respond_to?'](\"to_ary\")) {\n self.$replace(size.$to_ary())\n return self;\n }\n }\n\n size = $$($nesting, 'Opal').$coerce_to(size, $$($nesting, 'Integer'), \"to_int\")\n\n if (size < 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"negative array size\")\n }\n\n self.splice(0, self.length);\n var i, value;\n\n if (block === nil) {\n for (i = 0; i < size; i++) {\n self.push(obj);\n }\n }\n else {\n for (i = 0, value; i < size; i++) {\n value = block(i);\n self[i] = value;\n }\n }\n\n return self;\n \n }, TMP_Array_initialize_2.$$arity = -1);\n Opal.defs(self, '$try_convert', TMP_Array_try_convert_3 = function $$try_convert(obj) {\n var self = this;\n\n return $$($nesting, 'Opal')['$coerce_to?'](obj, $$($nesting, 'Array'), \"to_ary\")\n }, TMP_Array_try_convert_3.$$arity = 1);\n \n Opal.def(self, '$&', TMP_Array_$_4 = function(other) {\n var self = this;\n\n \n other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) {\n return other.$to_a()\n } else {\n return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), \"to_ary\").$to_a()\n }; return nil; })();\n \n var result = [], hash = $hash2([], {}), i, length, item;\n\n for (i = 0, length = other.length; i < length; i++) {\n Opal.hash_put(hash, other[i], true);\n }\n\n for (i = 0, length = self.length; i < length; i++) {\n item = self[i];\n if (Opal.hash_delete(hash, item) !== undefined) {\n result.push(item);\n }\n }\n\n return result;\n ;\n }, TMP_Array_$_4.$$arity = 1);\n \n Opal.def(self, '$|', TMP_Array_$_5 = function(other) {\n var self = this;\n\n \n other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) {\n return other.$to_a()\n } else {\n return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), \"to_ary\").$to_a()\n }; return nil; })();\n \n var hash = $hash2([], {}), i, length, item;\n\n for (i = 0, length = self.length; i < length; i++) {\n Opal.hash_put(hash, self[i], true);\n }\n\n for (i = 0, length = other.length; i < length; i++) {\n Opal.hash_put(hash, other[i], true);\n }\n\n return hash.$keys();\n ;\n }, TMP_Array_$_5.$$arity = 1);\n \n Opal.def(self, '$*', TMP_Array_$_6 = function(other) {\n var self = this;\n\n \n if ($truthy(other['$respond_to?'](\"to_str\"))) {\n return self.$join(other.$to_str())};\n other = $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(other < 0)) {\n self.$raise($$($nesting, 'ArgumentError'), \"negative argument\")};\n \n var result = [],\n converted = self.$to_a();\n\n for (var i = 0; i < other; i++) {\n result = result.concat(converted);\n }\n\n return toArraySubclass(result, self.$class());\n ;\n }, TMP_Array_$_6.$$arity = 1);\n \n Opal.def(self, '$+', TMP_Array_$_7 = function(other) {\n var self = this;\n\n \n other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) {\n return other.$to_a()\n } else {\n return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), \"to_ary\").$to_a()\n }; return nil; })();\n return self.concat(other);;\n }, TMP_Array_$_7.$$arity = 1);\n \n Opal.def(self, '$-', TMP_Array_$_8 = function(other) {\n var self = this;\n\n \n other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) {\n return other.$to_a()\n } else {\n return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), \"to_ary\").$to_a()\n }; return nil; })();\n if ($truthy(self.length === 0)) {\n return []};\n if ($truthy(other.length === 0)) {\n return self.slice()};\n \n var result = [], hash = $hash2([], {}), i, length, item;\n\n for (i = 0, length = other.length; i < length; i++) {\n Opal.hash_put(hash, other[i], true);\n }\n\n for (i = 0, length = self.length; i < length; i++) {\n item = self[i];\n if (Opal.hash_get(hash, item) === undefined) {\n result.push(item);\n }\n }\n\n return result;\n ;\n }, TMP_Array_$_8.$$arity = 1);\n \n Opal.def(self, '$<<', TMP_Array_$lt$lt_9 = function(object) {\n var self = this;\n\n \n self.push(object);\n return self;\n }, TMP_Array_$lt$lt_9.$$arity = 1);\n \n Opal.def(self, '$<=>', TMP_Array_$lt$eq$gt_10 = function(other) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Array')['$==='](other))) {\n other = other.$to_a()\n } else if ($truthy(other['$respond_to?'](\"to_ary\"))) {\n other = other.$to_ary().$to_a()\n } else {\n return nil\n };\n \n if (self.$hash() === other.$hash()) {\n return 0;\n }\n\n var count = Math.min(self.length, other.length);\n\n for (var i = 0; i < count; i++) {\n var tmp = (self[i])['$<=>'](other[i]);\n\n if (tmp !== 0) {\n return tmp;\n }\n }\n\n return (self.length)['$<=>'](other.length);\n ;\n }, TMP_Array_$lt$eq$gt_10.$$arity = 1);\n \n Opal.def(self, '$==', TMP_Array_$eq$eq_11 = function(other) {\n var self = this;\n\n \n var recursed = {};\n\n function _eqeq(array, other) {\n var i, length, a, b;\n\n if (array === other)\n return true;\n\n if (!other.$$is_array) {\n if ($$($nesting, 'Opal')['$respond_to?'](other, \"to_ary\")) {\n return (other)['$=='](array);\n } else {\n return false;\n }\n }\n\n if (array.constructor !== Array)\n array = (array).$to_a();\n if (other.constructor !== Array)\n other = (other).$to_a();\n\n if (array.length !== other.length) {\n return false;\n }\n\n recursed[(array).$object_id()] = true;\n\n for (i = 0, length = array.length; i < length; i++) {\n a = array[i];\n b = other[i];\n if (a.$$is_array) {\n if (b.$$is_array && b.length !== a.length) {\n return false;\n }\n if (!recursed.hasOwnProperty((a).$object_id())) {\n if (!_eqeq(a, b)) {\n return false;\n }\n }\n } else {\n if (!(a)['$=='](b)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n return _eqeq(self, other);\n \n }, TMP_Array_$eq$eq_11.$$arity = 1);\n \n function $array_slice_range(self, index) {\n var size = self.length,\n exclude, from, to, result;\n\n exclude = index.excl;\n from = Opal.Opal.$coerce_to(index.begin, Opal.Integer, 'to_int');\n to = Opal.Opal.$coerce_to(index.end, Opal.Integer, 'to_int');\n\n if (from < 0) {\n from += size;\n\n if (from < 0) {\n return nil;\n }\n }\n\n if (from > size) {\n return nil;\n }\n\n if (to < 0) {\n to += size;\n\n if (to < 0) {\n return [];\n }\n }\n\n if (!exclude) {\n to += 1;\n }\n\n result = self.slice(from, to);\n return toArraySubclass(result, self.$class());\n }\n\n function $array_slice_index_length(self, index, length) {\n var size = self.length,\n exclude, from, to, result;\n\n index = Opal.Opal.$coerce_to(index, Opal.Integer, 'to_int');\n\n if (index < 0) {\n index += size;\n\n if (index < 0) {\n return nil;\n }\n }\n\n if (length === undefined) {\n if (index >= size || index < 0) {\n return nil;\n }\n\n return self[index];\n }\n else {\n length = Opal.Opal.$coerce_to(length, Opal.Integer, 'to_int');\n\n if (length < 0 || index > size || index < 0) {\n return nil;\n }\n\n result = self.slice(index, index + length);\n }\n return toArraySubclass(result, self.$class());\n }\n ;\n \n Opal.def(self, '$[]', TMP_Array_$$_12 = function(index, length) {\n var self = this;\n\n \n if (index.$$is_range) {\n return $array_slice_range(self, index);\n }\n else {\n return $array_slice_index_length(self, index, length);\n }\n \n }, TMP_Array_$$_12.$$arity = -2);\n \n Opal.def(self, '$[]=', TMP_Array_$$$eq_13 = function(index, value, extra) {\n var self = this, data = nil, length = nil;\n\n \n var i, size = self.length;;\n if ($truthy($$($nesting, 'Range')['$==='](index))) {\n \n data = (function() {if ($truthy($$($nesting, 'Array')['$==='](value))) {\n return value.$to_a()\n } else if ($truthy(value['$respond_to?'](\"to_ary\"))) {\n return value.$to_ary().$to_a()\n } else {\n return [value]\n }; return nil; })();\n \n var exclude = index.excl,\n from = $$($nesting, 'Opal').$coerce_to(index.begin, $$($nesting, 'Integer'), \"to_int\"),\n to = $$($nesting, 'Opal').$coerce_to(index.end, $$($nesting, 'Integer'), \"to_int\");\n\n if (from < 0) {\n from += size;\n\n if (from < 0) {\n self.$raise($$($nesting, 'RangeError'), \"\" + (index.$inspect()) + \" out of range\");\n }\n }\n\n if (to < 0) {\n to += size;\n }\n\n if (!exclude) {\n to += 1;\n }\n\n if (from > size) {\n for (i = size; i < from; i++) {\n self[i] = nil;\n }\n }\n\n if (to < 0) {\n self.splice.apply(self, [from, 0].concat(data));\n }\n else {\n self.splice.apply(self, [from, to - from].concat(data));\n }\n\n return value;\n ;\n } else {\n \n if ($truthy(extra === undefined)) {\n length = 1\n } else {\n \n length = value;\n value = extra;\n data = (function() {if ($truthy($$($nesting, 'Array')['$==='](value))) {\n return value.$to_a()\n } else if ($truthy(value['$respond_to?'](\"to_ary\"))) {\n return value.$to_ary().$to_a()\n } else {\n return [value]\n }; return nil; })();\n };\n \n var old;\n\n index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), \"to_int\");\n length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), \"to_int\");\n\n if (index < 0) {\n old = index;\n index += size;\n\n if (index < 0) {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"index \" + (old) + \" too small for array; minimum \" + (-self.length));\n }\n }\n\n if (length < 0) {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"negative length (\" + (length) + \")\")\n }\n\n if (index > size) {\n for (i = size; i < index; i++) {\n self[i] = nil;\n }\n }\n\n if (extra === undefined) {\n self[index] = value;\n }\n else {\n self.splice.apply(self, [index, length].concat(data));\n }\n\n return value;\n ;\n };\n }, TMP_Array_$$$eq_13.$$arity = -3);\n \n Opal.def(self, '$any?', TMP_Array_any$q_14 = function(pattern) {\n var self = this, $iter = TMP_Array_any$q_14.$$p, block = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Array_any$q_14.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n if (self.length === 0) return false;\n return $send(self, Opal.find_super_dispatcher(self, 'any?', TMP_Array_any$q_14, false), $zuper, $iter);\n }, TMP_Array_any$q_14.$$arity = -1);\n \n Opal.def(self, '$assoc', TMP_Array_assoc_15 = function $$assoc(object) {\n var self = this;\n\n \n for (var i = 0, length = self.length, item; i < length; i++) {\n if (item = self[i], item.length && (item[0])['$=='](object)) {\n return item;\n }\n }\n\n return nil;\n \n }, TMP_Array_assoc_15.$$arity = 1);\n \n Opal.def(self, '$at', TMP_Array_at_16 = function $$at(index) {\n var self = this;\n\n \n index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), \"to_int\");\n \n if (index < 0) {\n index += self.length;\n }\n\n if (index < 0 || index >= self.length) {\n return nil;\n }\n\n return self[index];\n ;\n }, TMP_Array_at_16.$$arity = 1);\n \n Opal.def(self, '$bsearch_index', TMP_Array_bsearch_index_17 = function $$bsearch_index() {\n var self = this, $iter = TMP_Array_bsearch_index_17.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_bsearch_index_17.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"bsearch_index\")\n };\n \n var min = 0,\n max = self.length,\n mid,\n val,\n ret,\n smaller = false,\n satisfied = nil;\n\n while (min < max) {\n mid = min + Math.floor((max - min) / 2);\n val = self[mid];\n ret = Opal.yield1(block, val);\n\n if (ret === true) {\n satisfied = mid;\n smaller = true;\n }\n else if (ret === false || ret === nil) {\n smaller = false;\n }\n else if (ret.$$is_number) {\n if (ret === 0) { return mid; }\n smaller = (ret < 0);\n }\n else {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"wrong argument type \" + ((ret).$class()) + \" (must be numeric, true, false or nil)\")\n }\n\n if (smaller) { max = mid; } else { min = mid + 1; }\n }\n\n return satisfied;\n ;\n }, TMP_Array_bsearch_index_17.$$arity = 0);\n \n Opal.def(self, '$bsearch', TMP_Array_bsearch_18 = function $$bsearch() {\n var self = this, $iter = TMP_Array_bsearch_18.$$p, block = $iter || nil, index = nil;\n\n if ($iter) TMP_Array_bsearch_18.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"bsearch\")\n };\n index = $send(self, 'bsearch_index', [], block.$to_proc());\n \n if (index != null && index.$$is_number) {\n return self[index];\n } else {\n return index;\n }\n ;\n }, TMP_Array_bsearch_18.$$arity = 0);\n \n Opal.def(self, '$cycle', TMP_Array_cycle_19 = function $$cycle(n) {\n var TMP_20, $a, self = this, $iter = TMP_Array_cycle_19.$$p, block = $iter || nil;\n\n if (n == null) {\n n = nil;\n }\n if ($iter) TMP_Array_cycle_19.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"cycle\", n], (TMP_20 = function(){var self = TMP_20.$$s || this;\n\n if ($truthy(n['$nil?']())) {\n return $$$($$($nesting, 'Float'), 'INFINITY')\n } else {\n \n n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy($rb_gt(n, 0))) {\n return $rb_times(self.$enumerator_size(), n)\n } else {\n return 0\n };\n }}, TMP_20.$$s = self, TMP_20.$$arity = 0, TMP_20))\n };\n if ($truthy(($truthy($a = self['$empty?']()) ? $a : n['$=='](0)))) {\n return nil};\n \n var i, length, value;\n\n if (n === nil) {\n while (true) {\n for (i = 0, length = self.length; i < length; i++) {\n value = Opal.yield1(block, self[i]);\n }\n }\n }\n else {\n n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n if (n <= 0) {\n return self;\n }\n\n while (n > 0) {\n for (i = 0, length = self.length; i < length; i++) {\n value = Opal.yield1(block, self[i]);\n }\n\n n--;\n }\n }\n ;\n return self;\n }, TMP_Array_cycle_19.$$arity = -1);\n \n Opal.def(self, '$clear', TMP_Array_clear_21 = function $$clear() {\n var self = this;\n\n \n self.splice(0, self.length);\n return self;\n }, TMP_Array_clear_21.$$arity = 0);\n \n Opal.def(self, '$count', TMP_Array_count_22 = function $$count(object) {\n var $a, self = this, $iter = TMP_Array_count_22.$$p, block = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if (object == null) {\n object = nil;\n }\n if ($iter) TMP_Array_count_22.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if ($truthy(($truthy($a = object) ? $a : block))) {\n return $send(self, Opal.find_super_dispatcher(self, 'count', TMP_Array_count_22, false), $zuper, $iter)\n } else {\n return self.$size()\n }\n }, TMP_Array_count_22.$$arity = -1);\n \n Opal.def(self, '$initialize_copy', TMP_Array_initialize_copy_23 = function $$initialize_copy(other) {\n var self = this;\n\n return self.$replace(other)\n }, TMP_Array_initialize_copy_23.$$arity = 1);\n \n Opal.def(self, '$collect', TMP_Array_collect_24 = function $$collect() {\n var TMP_25, self = this, $iter = TMP_Array_collect_24.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_collect_24.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"collect\"], (TMP_25 = function(){var self = TMP_25.$$s || this;\n\n return self.$size()}, TMP_25.$$s = self, TMP_25.$$arity = 0, TMP_25))\n };\n \n var result = [];\n\n for (var i = 0, length = self.length; i < length; i++) {\n var value = Opal.yield1(block, self[i]);\n result.push(value);\n }\n\n return result;\n ;\n }, TMP_Array_collect_24.$$arity = 0);\n \n Opal.def(self, '$collect!', TMP_Array_collect$B_26 = function() {\n var TMP_27, self = this, $iter = TMP_Array_collect$B_26.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_collect$B_26.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"collect!\"], (TMP_27 = function(){var self = TMP_27.$$s || this;\n\n return self.$size()}, TMP_27.$$s = self, TMP_27.$$arity = 0, TMP_27))\n };\n \n for (var i = 0, length = self.length; i < length; i++) {\n var value = Opal.yield1(block, self[i]);\n self[i] = value;\n }\n ;\n return self;\n }, TMP_Array_collect$B_26.$$arity = 0);\n \n function binomial_coefficient(n, k) {\n if (n === k || k === 0) {\n return 1;\n }\n\n if (k > 0 && n > k) {\n return binomial_coefficient(n - 1, k - 1) + binomial_coefficient(n - 1, k);\n }\n\n return 0;\n }\n ;\n \n Opal.def(self, '$combination', TMP_Array_combination_28 = function $$combination(n) {\n var TMP_29, self = this, $iter = TMP_Array_combination_28.$$p, $yield = $iter || nil, num = nil;\n\n if ($iter) TMP_Array_combination_28.$$p = null;\n \n num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n if (($yield !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"combination\", num], (TMP_29 = function(){var self = TMP_29.$$s || this;\n\n return binomial_coefficient(self.length, num)}, TMP_29.$$s = self, TMP_29.$$arity = 0, TMP_29))\n };\n \n var i, length, stack, chosen, lev, done, next;\n\n if (num === 0) {\n Opal.yield1($yield, [])\n } else if (num === 1) {\n for (i = 0, length = self.length; i < length; i++) {\n Opal.yield1($yield, [self[i]])\n }\n }\n else if (num === self.length) {\n Opal.yield1($yield, self.slice())\n }\n else if (num >= 0 && num < self.length) {\n stack = [];\n for (i = 0; i <= num + 1; i++) {\n stack.push(0);\n }\n\n chosen = [];\n lev = 0;\n done = false;\n stack[0] = -1;\n\n while (!done) {\n chosen[lev] = self[stack[lev+1]];\n while (lev < num - 1) {\n lev++;\n next = stack[lev+1] = stack[lev] + 1;\n chosen[lev] = self[next];\n }\n Opal.yield1($yield, chosen.slice())\n lev++;\n do {\n done = (lev === 0);\n stack[lev]++;\n lev--;\n } while ( stack[lev+1] + num === self.length + lev + 1 );\n }\n }\n ;\n return self;\n }, TMP_Array_combination_28.$$arity = 1);\n \n Opal.def(self, '$repeated_combination', TMP_Array_repeated_combination_30 = function $$repeated_combination(n) {\n var TMP_31, self = this, $iter = TMP_Array_repeated_combination_30.$$p, $yield = $iter || nil, num = nil;\n\n if ($iter) TMP_Array_repeated_combination_30.$$p = null;\n \n num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n if (($yield !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"repeated_combination\", num], (TMP_31 = function(){var self = TMP_31.$$s || this;\n\n return binomial_coefficient(self.length + num - 1, num);}, TMP_31.$$s = self, TMP_31.$$arity = 0, TMP_31))\n };\n \n function iterate(max, from, buffer, self) {\n if (buffer.length == max) {\n var copy = buffer.slice();\n Opal.yield1($yield, copy)\n return;\n }\n for (var i = from; i < self.length; i++) {\n buffer.push(self[i]);\n iterate(max, i, buffer, self);\n buffer.pop();\n }\n }\n\n if (num >= 0) {\n iterate(num, 0, [], self);\n }\n ;\n return self;\n }, TMP_Array_repeated_combination_30.$$arity = 1);\n \n Opal.def(self, '$compact', TMP_Array_compact_32 = function $$compact() {\n var self = this;\n\n \n var result = [];\n\n for (var i = 0, length = self.length, item; i < length; i++) {\n if ((item = self[i]) !== nil) {\n result.push(item);\n }\n }\n\n return result;\n \n }, TMP_Array_compact_32.$$arity = 0);\n \n Opal.def(self, '$compact!', TMP_Array_compact$B_33 = function() {\n var self = this;\n\n \n var original = self.length;\n\n for (var i = 0, length = self.length; i < length; i++) {\n if (self[i] === nil) {\n self.splice(i, 1);\n\n length--;\n i--;\n }\n }\n\n return self.length === original ? nil : self;\n \n }, TMP_Array_compact$B_33.$$arity = 0);\n \n Opal.def(self, '$concat', TMP_Array_concat_36 = function $$concat($a_rest) {\n var TMP_34, TMP_35, self = this, others;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n others = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n others[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n others = $send(others, 'map', [], (TMP_34 = function(other){var self = TMP_34.$$s || this;\nif (other == null) other = nil;\n \n other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) {\n return other.$to_a()\n } else {\n return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), \"to_ary\").$to_a()\n }; return nil; })();\n if ($truthy(other['$equal?'](self))) {\n other = other.$dup()};\n return other;}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34));\n $send(others, 'each', [], (TMP_35 = function(other){var self = TMP_35.$$s || this;\nif (other == null) other = nil;\n \n for (var i = 0, length = other.length; i < length; i++) {\n self.push(other[i]);\n }\n }, TMP_35.$$s = self, TMP_35.$$arity = 1, TMP_35));\n return self;\n }, TMP_Array_concat_36.$$arity = -1);\n \n Opal.def(self, '$delete', TMP_Array_delete_37 = function(object) {\n var self = this, $iter = TMP_Array_delete_37.$$p, $yield = $iter || nil;\n\n if ($iter) TMP_Array_delete_37.$$p = null;\n \n var original = self.length;\n\n for (var i = 0, length = original; i < length; i++) {\n if ((self[i])['$=='](object)) {\n self.splice(i, 1);\n\n length--;\n i--;\n }\n }\n\n if (self.length === original) {\n if (($yield !== nil)) {\n return Opal.yieldX($yield, []);\n }\n return nil;\n }\n return object;\n \n }, TMP_Array_delete_37.$$arity = 1);\n \n Opal.def(self, '$delete_at', TMP_Array_delete_at_38 = function $$delete_at(index) {\n var self = this;\n\n \n index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), \"to_int\");\n\n if (index < 0) {\n index += self.length;\n }\n\n if (index < 0 || index >= self.length) {\n return nil;\n }\n\n var result = self[index];\n\n self.splice(index, 1);\n\n return result;\n \n }, TMP_Array_delete_at_38.$$arity = 1);\n \n Opal.def(self, '$delete_if', TMP_Array_delete_if_39 = function $$delete_if() {\n var TMP_40, self = this, $iter = TMP_Array_delete_if_39.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_delete_if_39.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"delete_if\"], (TMP_40 = function(){var self = TMP_40.$$s || this;\n\n return self.$size()}, TMP_40.$$s = self, TMP_40.$$arity = 0, TMP_40))\n };\n \n for (var i = 0, length = self.length, value; i < length; i++) {\n value = block(self[i]);\n\n if (value !== false && value !== nil) {\n self.splice(i, 1);\n\n length--;\n i--;\n }\n }\n ;\n return self;\n }, TMP_Array_delete_if_39.$$arity = 0);\n \n Opal.def(self, '$dig', TMP_Array_dig_41 = function $$dig(idx, $a_rest) {\n var self = this, idxs, item = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n idxs = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n idxs[$arg_idx - 1] = arguments[$arg_idx];\n }\n \n item = self['$[]'](idx);\n \n if (item === nil || idxs.length === 0) {\n return item;\n }\n ;\n if ($truthy(item['$respond_to?'](\"dig\"))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + (item.$class()) + \" does not have #dig method\")\n };\n return $send(item, 'dig', Opal.to_a(idxs));\n }, TMP_Array_dig_41.$$arity = -2);\n \n Opal.def(self, '$drop', TMP_Array_drop_42 = function $$drop(number) {\n var self = this;\n\n \n if (number < 0) {\n self.$raise($$($nesting, 'ArgumentError'))\n }\n\n return self.slice(number);\n \n }, TMP_Array_drop_42.$$arity = 1);\n \n Opal.def(self, '$dup', TMP_Array_dup_43 = function $$dup() {\n var self = this, $iter = TMP_Array_dup_43.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Array_dup_43.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n \n if (self.$$class === Opal.Array &&\n self.$$class.$allocate.$$pristine &&\n self.$copy_instance_variables.$$pristine &&\n self.$initialize_dup.$$pristine) {\n return self.slice(0);\n }\n ;\n return $send(self, Opal.find_super_dispatcher(self, 'dup', TMP_Array_dup_43, false), $zuper, $iter);\n }, TMP_Array_dup_43.$$arity = 0);\n \n Opal.def(self, '$each', TMP_Array_each_44 = function $$each() {\n var TMP_45, self = this, $iter = TMP_Array_each_44.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_each_44.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each\"], (TMP_45 = function(){var self = TMP_45.$$s || this;\n\n return self.$size()}, TMP_45.$$s = self, TMP_45.$$arity = 0, TMP_45))\n };\n \n for (var i = 0, length = self.length; i < length; i++) {\n var value = Opal.yield1(block, self[i]);\n }\n ;\n return self;\n }, TMP_Array_each_44.$$arity = 0);\n \n Opal.def(self, '$each_index', TMP_Array_each_index_46 = function $$each_index() {\n var TMP_47, self = this, $iter = TMP_Array_each_index_46.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_each_index_46.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each_index\"], (TMP_47 = function(){var self = TMP_47.$$s || this;\n\n return self.$size()}, TMP_47.$$s = self, TMP_47.$$arity = 0, TMP_47))\n };\n \n for (var i = 0, length = self.length; i < length; i++) {\n var value = Opal.yield1(block, i);\n }\n ;\n return self;\n }, TMP_Array_each_index_46.$$arity = 0);\n \n Opal.def(self, '$empty?', TMP_Array_empty$q_48 = function() {\n var self = this;\n\n return self.length === 0;\n }, TMP_Array_empty$q_48.$$arity = 0);\n \n Opal.def(self, '$eql?', TMP_Array_eql$q_49 = function(other) {\n var self = this;\n\n \n var recursed = {};\n\n function _eql(array, other) {\n var i, length, a, b;\n\n if (!other.$$is_array) {\n return false;\n }\n\n other = other.$to_a();\n\n if (array.length !== other.length) {\n return false;\n }\n\n recursed[(array).$object_id()] = true;\n\n for (i = 0, length = array.length; i < length; i++) {\n a = array[i];\n b = other[i];\n if (a.$$is_array) {\n if (b.$$is_array && b.length !== a.length) {\n return false;\n }\n if (!recursed.hasOwnProperty((a).$object_id())) {\n if (!_eql(a, b)) {\n return false;\n }\n }\n } else {\n if (!(a)['$eql?'](b)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n return _eql(self, other);\n \n }, TMP_Array_eql$q_49.$$arity = 1);\n \n Opal.def(self, '$fetch', TMP_Array_fetch_50 = function $$fetch(index, defaults) {\n var self = this, $iter = TMP_Array_fetch_50.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_fetch_50.$$p = null;\n \n var original = index;\n\n index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), \"to_int\");\n\n if (index < 0) {\n index += self.length;\n }\n\n if (index >= 0 && index < self.length) {\n return self[index];\n }\n\n if (block !== nil && defaults != null) {\n self.$warn(\"warning: block supersedes default value argument\")\n }\n\n if (block !== nil) {\n return block(original);\n }\n\n if (defaults != null) {\n return defaults;\n }\n\n if (self.length === 0) {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"index \" + (original) + \" outside of array bounds: 0...0\")\n }\n else {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"index \" + (original) + \" outside of array bounds: -\" + (self.length) + \"...\" + (self.length));\n }\n \n }, TMP_Array_fetch_50.$$arity = -2);\n \n Opal.def(self, '$fill', TMP_Array_fill_51 = function $$fill($a_rest) {\n var $b, $c, self = this, args, $iter = TMP_Array_fill_51.$$p, block = $iter || nil, one = nil, two = nil, obj = nil, left = nil, right = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Array_fill_51.$$p = null;\n \n var i, length, value;;\n if ($truthy(block)) {\n \n if ($truthy(args.length > 2)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (args.$length()) + \" for 0..2)\")};\n $c = args, $b = Opal.to_ary($c), (one = ($b[0] == null ? nil : $b[0])), (two = ($b[1] == null ? nil : $b[1])), $c;\n } else {\n \n if ($truthy(args.length == 0)) {\n self.$raise($$($nesting, 'ArgumentError'), \"wrong number of arguments (0 for 1..3)\")\n } else if ($truthy(args.length > 3)) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (args.$length()) + \" for 1..3)\")};\n $c = args, $b = Opal.to_ary($c), (obj = ($b[0] == null ? nil : $b[0])), (one = ($b[1] == null ? nil : $b[1])), (two = ($b[2] == null ? nil : $b[2])), $c;\n };\n if ($truthy($$($nesting, 'Range')['$==='](one))) {\n \n if ($truthy(two)) {\n self.$raise($$($nesting, 'TypeError'), \"length invalid with range\")};\n left = $$($nesting, 'Opal').$coerce_to(one.$begin(), $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(left < 0)) {\n left += this.length};\n if ($truthy(left < 0)) {\n self.$raise($$($nesting, 'RangeError'), \"\" + (one.$inspect()) + \" out of range\")};\n right = $$($nesting, 'Opal').$coerce_to(one.$end(), $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(right < 0)) {\n right += this.length};\n if ($truthy(one['$exclude_end?']())) {\n } else {\n right += 1\n };\n if ($truthy(right <= left)) {\n return self};\n } else if ($truthy(one)) {\n \n left = $$($nesting, 'Opal').$coerce_to(one, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(left < 0)) {\n left += this.length};\n if ($truthy(left < 0)) {\n left = 0};\n if ($truthy(two)) {\n \n right = $$($nesting, 'Opal').$coerce_to(two, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(right == 0)) {\n return self};\n right += left;\n } else {\n right = this.length\n };\n } else {\n \n left = 0;\n right = this.length;\n };\n if ($truthy(left > this.length)) {\n \n for (i = this.length; i < right; i++) {\n self[i] = nil;\n }\n };\n if ($truthy(right > this.length)) {\n this.length = right};\n if ($truthy(block)) {\n \n for (length = this.length; left < right; left++) {\n value = block(left);\n self[left] = value;\n }\n \n } else {\n \n for (length = this.length; left < right; left++) {\n self[left] = obj;\n }\n \n };\n return self;\n }, TMP_Array_fill_51.$$arity = -1);\n \n Opal.def(self, '$first', TMP_Array_first_52 = function $$first(count) {\n var self = this;\n\n \n if (count == null) {\n return self.length === 0 ? nil : self[0];\n }\n\n count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), \"to_int\");\n\n if (count < 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"negative array size\");\n }\n\n return self.slice(0, count);\n \n }, TMP_Array_first_52.$$arity = -1);\n \n Opal.def(self, '$flatten', TMP_Array_flatten_53 = function $$flatten(level) {\n var self = this;\n\n \n function _flatten(array, level) {\n var result = [],\n i, length,\n item, ary;\n\n array = (array).$to_a();\n\n for (i = 0, length = array.length; i < length; i++) {\n item = array[i];\n\n if (!$$($nesting, 'Opal')['$respond_to?'](item, \"to_ary\", true)) {\n result.push(item);\n continue;\n }\n\n ary = (item).$to_ary();\n\n if (ary === nil) {\n result.push(item);\n continue;\n }\n\n if (!ary.$$is_array) {\n self.$raise($$($nesting, 'TypeError'));\n }\n\n if (ary === self) {\n self.$raise($$($nesting, 'ArgumentError'));\n }\n\n switch (level) {\n case undefined:\n result = result.concat(_flatten(ary));\n break;\n case 0:\n result.push(ary);\n break;\n default:\n result.push.apply(result, _flatten(ary, level - 1));\n }\n }\n return result;\n }\n\n if (level !== undefined) {\n level = $$($nesting, 'Opal').$coerce_to(level, $$($nesting, 'Integer'), \"to_int\");\n }\n\n return toArraySubclass(_flatten(self, level), self.$class());\n \n }, TMP_Array_flatten_53.$$arity = -1);\n \n Opal.def(self, '$flatten!', TMP_Array_flatten$B_54 = function(level) {\n var self = this;\n\n \n \n var flattened = self.$flatten(level);\n\n if (self.length == flattened.length) {\n for (var i = 0, length = self.length; i < length; i++) {\n if (self[i] !== flattened[i]) {\n break;\n }\n }\n\n if (i == length) {\n return nil;\n }\n }\n\n self.$replace(flattened);\n ;\n return self;\n }, TMP_Array_flatten$B_54.$$arity = -1);\n \n Opal.def(self, '$hash', TMP_Array_hash_55 = function $$hash() {\n var self = this;\n\n \n var top = (Opal.hash_ids === undefined),\n result = ['A'],\n hash_id = self.$object_id(),\n item, i, key;\n\n try {\n if (top) {\n Opal.hash_ids = Object.create(null);\n }\n\n // return early for recursive structures\n if (Opal.hash_ids[hash_id]) {\n return 'self';\n }\n\n for (key in Opal.hash_ids) {\n item = Opal.hash_ids[key];\n if (self['$eql?'](item)) {\n return 'self';\n }\n }\n\n Opal.hash_ids[hash_id] = self;\n\n for (i = 0; i < self.length; i++) {\n item = self[i];\n result.push(item.$hash());\n }\n\n return result.join(',');\n } finally {\n if (top) {\n Opal.hash_ids = undefined;\n }\n }\n \n }, TMP_Array_hash_55.$$arity = 0);\n \n Opal.def(self, '$include?', TMP_Array_include$q_56 = function(member) {\n var self = this;\n\n \n for (var i = 0, length = self.length; i < length; i++) {\n if ((self[i])['$=='](member)) {\n return true;\n }\n }\n\n return false;\n \n }, TMP_Array_include$q_56.$$arity = 1);\n \n Opal.def(self, '$index', TMP_Array_index_57 = function $$index(object) {\n var self = this, $iter = TMP_Array_index_57.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_index_57.$$p = null;\n \n var i, length, value;\n\n if (object != null && block !== nil) {\n self.$warn(\"warning: given block not used\")\n }\n\n if (object != null) {\n for (i = 0, length = self.length; i < length; i++) {\n if ((self[i])['$=='](object)) {\n return i;\n }\n }\n }\n else if (block !== nil) {\n for (i = 0, length = self.length; i < length; i++) {\n value = block(self[i]);\n\n if (value !== false && value !== nil) {\n return i;\n }\n }\n }\n else {\n return self.$enum_for(\"index\");\n }\n\n return nil;\n \n }, TMP_Array_index_57.$$arity = -1);\n \n Opal.def(self, '$insert', TMP_Array_insert_58 = function $$insert(index, $a_rest) {\n var self = this, objects;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n objects = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n objects[$arg_idx - 1] = arguments[$arg_idx];\n }\n \n \n index = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), \"to_int\");\n\n if (objects.length > 0) {\n if (index < 0) {\n index += self.length + 1;\n\n if (index < 0) {\n self.$raise($$($nesting, 'IndexError'), \"\" + (index) + \" is out of bounds\");\n }\n }\n if (index > self.length) {\n for (var i = self.length; i < index; i++) {\n self.push(nil);\n }\n }\n\n self.splice.apply(self, [index, 0].concat(objects));\n }\n ;\n return self;\n }, TMP_Array_insert_58.$$arity = -2);\n \n Opal.def(self, '$inspect', TMP_Array_inspect_59 = function $$inspect() {\n var self = this;\n\n \n var result = [],\n id = self.$__id__();\n\n for (var i = 0, length = self.length; i < length; i++) {\n var item = self['$[]'](i);\n\n if ((item).$__id__() === id) {\n result.push('[...]');\n }\n else {\n result.push((item).$inspect());\n }\n }\n\n return '[' + result.join(', ') + ']';\n \n }, TMP_Array_inspect_59.$$arity = 0);\n \n Opal.def(self, '$join', TMP_Array_join_60 = function $$join(sep) {\n var self = this;\n if ($gvars[\",\"] == null) $gvars[\",\"] = nil;\n\n if (sep == null) {\n sep = nil;\n }\n \n if ($truthy(self.length === 0)) {\n return \"\"};\n if ($truthy(sep === nil)) {\n sep = $gvars[\",\"]};\n \n var result = [];\n var i, length, item, tmp;\n\n for (i = 0, length = self.length; i < length; i++) {\n item = self[i];\n\n if ($$($nesting, 'Opal')['$respond_to?'](item, \"to_str\")) {\n tmp = (item).$to_str();\n\n if (tmp !== nil) {\n result.push((tmp).$to_s());\n\n continue;\n }\n }\n\n if ($$($nesting, 'Opal')['$respond_to?'](item, \"to_ary\")) {\n tmp = (item).$to_ary();\n\n if (tmp === self) {\n self.$raise($$($nesting, 'ArgumentError'));\n }\n\n if (tmp !== nil) {\n result.push((tmp).$join(sep));\n\n continue;\n }\n }\n\n if ($$($nesting, 'Opal')['$respond_to?'](item, \"to_s\")) {\n tmp = (item).$to_s();\n\n if (tmp !== nil) {\n result.push(tmp);\n\n continue;\n }\n }\n\n self.$raise($$($nesting, 'NoMethodError').$new(\"\" + (Opal.inspect(item)) + \" doesn't respond to #to_str, #to_ary or #to_s\", \"to_str\"));\n }\n\n if (sep === nil) {\n return result.join('');\n }\n else {\n return result.join($$($nesting, 'Opal')['$coerce_to!'](sep, $$($nesting, 'String'), \"to_str\").$to_s());\n }\n ;\n }, TMP_Array_join_60.$$arity = -1);\n \n Opal.def(self, '$keep_if', TMP_Array_keep_if_61 = function $$keep_if() {\n var TMP_62, self = this, $iter = TMP_Array_keep_if_61.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_keep_if_61.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"keep_if\"], (TMP_62 = function(){var self = TMP_62.$$s || this;\n\n return self.$size()}, TMP_62.$$s = self, TMP_62.$$arity = 0, TMP_62))\n };\n \n for (var i = 0, length = self.length, value; i < length; i++) {\n value = block(self[i]);\n\n if (value === false || value === nil) {\n self.splice(i, 1);\n\n length--;\n i--;\n }\n }\n ;\n return self;\n }, TMP_Array_keep_if_61.$$arity = 0);\n \n Opal.def(self, '$last', TMP_Array_last_63 = function $$last(count) {\n var self = this;\n\n \n if (count == null) {\n return self.length === 0 ? nil : self[self.length - 1];\n }\n\n count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), \"to_int\");\n\n if (count < 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"negative array size\");\n }\n\n if (count > self.length) {\n count = self.length;\n }\n\n return self.slice(self.length - count, self.length);\n \n }, TMP_Array_last_63.$$arity = -1);\n \n Opal.def(self, '$length', TMP_Array_length_64 = function $$length() {\n var self = this;\n\n return self.length;\n }, TMP_Array_length_64.$$arity = 0);\n Opal.alias(self, \"map\", \"collect\");\n Opal.alias(self, \"map!\", \"collect!\");\n \n Opal.def(self, '$max', TMP_Array_max_65 = function $$max(n) {\n var self = this, $iter = TMP_Array_max_65.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_max_65.$$p = null;\n return $send(self.$each(), 'max', [n], block.$to_proc())\n }, TMP_Array_max_65.$$arity = -1);\n \n Opal.def(self, '$min', TMP_Array_min_66 = function $$min() {\n var self = this, $iter = TMP_Array_min_66.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_min_66.$$p = null;\n return $send(self.$each(), 'min', [], block.$to_proc())\n }, TMP_Array_min_66.$$arity = 0);\n \n // Returns the product of from, from-1, ..., from - how_many + 1.\n function descending_factorial(from, how_many) {\n var count = how_many >= 0 ? 1 : 0;\n while (how_many) {\n count *= from;\n from--;\n how_many--;\n }\n return count;\n }\n ;\n \n Opal.def(self, '$permutation', TMP_Array_permutation_67 = function $$permutation(num) {\n var TMP_68, self = this, $iter = TMP_Array_permutation_67.$$p, block = $iter || nil, perm = nil, used = nil;\n\n if ($iter) TMP_Array_permutation_67.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"permutation\", num], (TMP_68 = function(){var self = TMP_68.$$s || this;\n\n return descending_factorial(self.length, num === undefined ? self.length : num);}, TMP_68.$$s = self, TMP_68.$$arity = 0, TMP_68))\n };\n \n var permute, offensive, output;\n\n if (num === undefined) {\n num = self.length;\n }\n else {\n num = $$($nesting, 'Opal').$coerce_to(num, $$($nesting, 'Integer'), \"to_int\")\n }\n\n if (num < 0 || self.length < num) {\n // no permutations, yield nothing\n }\n else if (num === 0) {\n // exactly one permutation: the zero-length array\n Opal.yield1(block, [])\n }\n else if (num === 1) {\n // this is a special, easy case\n for (var i = 0; i < self.length; i++) {\n Opal.yield1(block, [self[i]])\n }\n }\n else {\n // this is the general case\n (perm = $$($nesting, 'Array').$new(num));\n (used = $$($nesting, 'Array').$new(self.length, false));\n\n permute = function(num, perm, index, used, blk) {\n self = this;\n for(var i = 0; i < self.length; i++){\n if(used['$[]'](i)['$!']()) {\n perm[index] = i;\n if(index < num - 1) {\n used[i] = true;\n permute.call(self, num, perm, index + 1, used, blk);\n used[i] = false;\n }\n else {\n output = [];\n for (var j = 0; j < perm.length; j++) {\n output.push(self[perm[j]]);\n }\n Opal.yield1(blk, output);\n }\n }\n }\n }\n\n if ((block !== nil)) {\n // offensive (both definitions) copy.\n offensive = self.slice();\n permute.call(offensive, num, perm, 0, used, block);\n }\n else {\n permute.call(self, num, perm, 0, used, block);\n }\n }\n ;\n return self;\n }, TMP_Array_permutation_67.$$arity = -1);\n \n Opal.def(self, '$repeated_permutation', TMP_Array_repeated_permutation_69 = function $$repeated_permutation(n) {\n var TMP_70, self = this, $iter = TMP_Array_repeated_permutation_69.$$p, $yield = $iter || nil, num = nil;\n\n if ($iter) TMP_Array_repeated_permutation_69.$$p = null;\n \n num = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n if (($yield !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"repeated_permutation\", num], (TMP_70 = function(){var self = TMP_70.$$s || this;\n\n if ($truthy($rb_ge(num, 0))) {\n return self.$size()['$**'](num)\n } else {\n return 0\n }}, TMP_70.$$s = self, TMP_70.$$arity = 0, TMP_70))\n };\n \n function iterate(max, buffer, self) {\n if (buffer.length == max) {\n var copy = buffer.slice();\n Opal.yield1($yield, copy)\n return;\n }\n for (var i = 0; i < self.length; i++) {\n buffer.push(self[i]);\n iterate(max, buffer, self);\n buffer.pop();\n }\n }\n\n iterate(num, [], self.slice());\n ;\n return self;\n }, TMP_Array_repeated_permutation_69.$$arity = 1);\n \n Opal.def(self, '$pop', TMP_Array_pop_71 = function $$pop(count) {\n var self = this;\n\n \n if ($truthy(count === undefined)) {\n \n if ($truthy(self.length === 0)) {\n return nil};\n return self.pop();};\n count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(count < 0)) {\n self.$raise($$($nesting, 'ArgumentError'), \"negative array size\")};\n if ($truthy(self.length === 0)) {\n return []};\n if ($truthy(count > self.length)) {\n return self.splice(0, self.length);\n } else {\n return self.splice(self.length - count, self.length);\n };\n }, TMP_Array_pop_71.$$arity = -1);\n \n Opal.def(self, '$product', TMP_Array_product_72 = function $$product($a_rest) {\n var self = this, args, $iter = TMP_Array_product_72.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Array_product_72.$$p = null;\n \n var result = (block !== nil) ? null : [],\n n = args.length + 1,\n counters = new Array(n),\n lengths = new Array(n),\n arrays = new Array(n),\n i, m, subarray, len, resultlen = 1;\n\n arrays[0] = self;\n for (i = 1; i < n; i++) {\n arrays[i] = $$($nesting, 'Opal').$coerce_to(args[i - 1], $$($nesting, 'Array'), \"to_ary\");\n }\n\n for (i = 0; i < n; i++) {\n len = arrays[i].length;\n if (len === 0) {\n return result || self;\n }\n resultlen *= len;\n if (resultlen > 2147483647) {\n self.$raise($$($nesting, 'RangeError'), \"too big to product\")\n }\n lengths[i] = len;\n counters[i] = 0;\n }\n\n outer_loop: for (;;) {\n subarray = [];\n for (i = 0; i < n; i++) {\n subarray.push(arrays[i][counters[i]]);\n }\n if (result) {\n result.push(subarray);\n } else {\n Opal.yield1(block, subarray)\n }\n m = n - 1;\n counters[m]++;\n while (counters[m] === lengths[m]) {\n counters[m] = 0;\n if (--m < 0) break outer_loop;\n counters[m]++;\n }\n }\n\n return result || self;\n \n }, TMP_Array_product_72.$$arity = -1);\n \n Opal.def(self, '$push', TMP_Array_push_73 = function $$push($a_rest) {\n var self = this, objects;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n objects = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n objects[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n for (var i = 0, length = objects.length; i < length; i++) {\n self.push(objects[i]);\n }\n ;\n return self;\n }, TMP_Array_push_73.$$arity = -1);\n Opal.alias(self, \"append\", \"push\");\n \n Opal.def(self, '$rassoc', TMP_Array_rassoc_74 = function $$rassoc(object) {\n var self = this;\n\n \n for (var i = 0, length = self.length, item; i < length; i++) {\n item = self[i];\n\n if (item.length && item[1] !== undefined) {\n if ((item[1])['$=='](object)) {\n return item;\n }\n }\n }\n\n return nil;\n \n }, TMP_Array_rassoc_74.$$arity = 1);\n \n Opal.def(self, '$reject', TMP_Array_reject_75 = function $$reject() {\n var TMP_76, self = this, $iter = TMP_Array_reject_75.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_reject_75.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"reject\"], (TMP_76 = function(){var self = TMP_76.$$s || this;\n\n return self.$size()}, TMP_76.$$s = self, TMP_76.$$arity = 0, TMP_76))\n };\n \n var result = [];\n\n for (var i = 0, length = self.length, value; i < length; i++) {\n value = block(self[i]);\n\n if (value === false || value === nil) {\n result.push(self[i]);\n }\n }\n return result;\n ;\n }, TMP_Array_reject_75.$$arity = 0);\n \n Opal.def(self, '$reject!', TMP_Array_reject$B_77 = function() {\n var TMP_78, self = this, $iter = TMP_Array_reject$B_77.$$p, block = $iter || nil, original = nil;\n\n if ($iter) TMP_Array_reject$B_77.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"reject!\"], (TMP_78 = function(){var self = TMP_78.$$s || this;\n\n return self.$size()}, TMP_78.$$s = self, TMP_78.$$arity = 0, TMP_78))\n };\n original = self.$length();\n $send(self, 'delete_if', [], block.$to_proc());\n if (self.$length()['$=='](original)) {\n return nil\n } else {\n return self\n };\n }, TMP_Array_reject$B_77.$$arity = 0);\n \n Opal.def(self, '$replace', TMP_Array_replace_79 = function $$replace(other) {\n var self = this;\n\n \n other = (function() {if ($truthy($$($nesting, 'Array')['$==='](other))) {\n return other.$to_a()\n } else {\n return $$($nesting, 'Opal').$coerce_to(other, $$($nesting, 'Array'), \"to_ary\").$to_a()\n }; return nil; })();\n \n self.splice(0, self.length);\n self.push.apply(self, other);\n ;\n return self;\n }, TMP_Array_replace_79.$$arity = 1);\n \n Opal.def(self, '$reverse', TMP_Array_reverse_80 = function $$reverse() {\n var self = this;\n\n return self.slice(0).reverse();\n }, TMP_Array_reverse_80.$$arity = 0);\n \n Opal.def(self, '$reverse!', TMP_Array_reverse$B_81 = function() {\n var self = this;\n\n return self.reverse();\n }, TMP_Array_reverse$B_81.$$arity = 0);\n \n Opal.def(self, '$reverse_each', TMP_Array_reverse_each_82 = function $$reverse_each() {\n var TMP_83, self = this, $iter = TMP_Array_reverse_each_82.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_reverse_each_82.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"reverse_each\"], (TMP_83 = function(){var self = TMP_83.$$s || this;\n\n return self.$size()}, TMP_83.$$s = self, TMP_83.$$arity = 0, TMP_83))\n };\n $send(self.$reverse(), 'each', [], block.$to_proc());\n return self;\n }, TMP_Array_reverse_each_82.$$arity = 0);\n \n Opal.def(self, '$rindex', TMP_Array_rindex_84 = function $$rindex(object) {\n var self = this, $iter = TMP_Array_rindex_84.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_rindex_84.$$p = null;\n \n var i, value;\n\n if (object != null && block !== nil) {\n self.$warn(\"warning: given block not used\")\n }\n\n if (object != null) {\n for (i = self.length - 1; i >= 0; i--) {\n if (i >= self.length) {\n break;\n }\n if ((self[i])['$=='](object)) {\n return i;\n }\n }\n }\n else if (block !== nil) {\n for (i = self.length - 1; i >= 0; i--) {\n if (i >= self.length) {\n break;\n }\n\n value = block(self[i]);\n\n if (value !== false && value !== nil) {\n return i;\n }\n }\n }\n else if (object == null) {\n return self.$enum_for(\"rindex\");\n }\n\n return nil;\n \n }, TMP_Array_rindex_84.$$arity = -1);\n \n Opal.def(self, '$rotate', TMP_Array_rotate_85 = function $$rotate(n) {\n var self = this;\n\n if (n == null) {\n n = 1;\n }\n \n n = $$($nesting, 'Opal').$coerce_to(n, $$($nesting, 'Integer'), \"to_int\");\n \n var ary, idx, firstPart, lastPart;\n\n if (self.length === 1) {\n return self.slice();\n }\n if (self.length === 0) {\n return [];\n }\n\n ary = self.slice();\n idx = n % ary.length;\n\n firstPart = ary.slice(idx);\n lastPart = ary.slice(0, idx);\n return firstPart.concat(lastPart);\n ;\n }, TMP_Array_rotate_85.$$arity = -1);\n \n Opal.def(self, '$rotate!', TMP_Array_rotate$B_86 = function(cnt) {\n var self = this, ary = nil;\n\n if (cnt == null) {\n cnt = 1;\n }\n \n \n if (self.length === 0 || self.length === 1) {\n return self;\n }\n ;\n cnt = $$($nesting, 'Opal').$coerce_to(cnt, $$($nesting, 'Integer'), \"to_int\");\n ary = self.$rotate(cnt);\n return self.$replace(ary);\n }, TMP_Array_rotate$B_86.$$arity = -1);\n (function($base, $super, $parent_nesting) {\n function $SampleRandom(){};\n var self = $SampleRandom = $klass($base, $super, 'SampleRandom', $SampleRandom);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SampleRandom_initialize_87, TMP_SampleRandom_rand_88;\n\n def.rng = nil;\n \n \n Opal.def(self, '$initialize', TMP_SampleRandom_initialize_87 = function $$initialize(rng) {\n var self = this;\n\n return (self.rng = rng)\n }, TMP_SampleRandom_initialize_87.$$arity = 1);\n return (Opal.def(self, '$rand', TMP_SampleRandom_rand_88 = function $$rand(size) {\n var self = this, random = nil;\n\n \n random = $$($nesting, 'Opal').$coerce_to(self.rng.$rand(size), $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(random < 0)) {\n self.$raise($$($nesting, 'RangeError'), \"random value must be >= 0\")};\n if ($truthy(random < size)) {\n } else {\n self.$raise($$($nesting, 'RangeError'), \"random value must be less than Array size\")\n };\n return random;\n }, TMP_SampleRandom_rand_88.$$arity = 1), nil) && 'rand';\n })($nesting[0], null, $nesting);\n \n Opal.def(self, '$sample', TMP_Array_sample_89 = function $$sample(count, options) {\n var $a, self = this, o = nil, rng = nil;\n\n \n if ($truthy(count === undefined)) {\n return self.$at($$($nesting, 'Kernel').$rand(self.length))};\n if ($truthy(options === undefined)) {\n if ($truthy((o = $$($nesting, 'Opal')['$coerce_to?'](count, $$($nesting, 'Hash'), \"to_hash\")))) {\n \n options = o;\n count = nil;\n } else {\n \n options = nil;\n count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), \"to_int\");\n }\n } else {\n \n count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), \"to_int\");\n options = $$($nesting, 'Opal').$coerce_to(options, $$($nesting, 'Hash'), \"to_hash\");\n };\n if ($truthy(($truthy($a = count) ? count < 0 : $a))) {\n self.$raise($$($nesting, 'ArgumentError'), \"count must be greater than 0\")};\n if ($truthy(options)) {\n rng = options['$[]'](\"random\")};\n rng = (function() {if ($truthy(($truthy($a = rng) ? rng['$respond_to?'](\"rand\") : $a))) {\n return $$($nesting, 'SampleRandom').$new(rng)\n } else {\n return $$($nesting, 'Kernel')\n }; return nil; })();\n if ($truthy(count)) {\n } else {\n return self[rng.$rand(self.length)]\n };\n \n\n var abandon, spin, result, i, j, k, targetIndex, oldValue;\n\n if (count > self.length) {\n count = self.length;\n }\n\n switch (count) {\n case 0:\n return [];\n break;\n case 1:\n return [self[rng.$rand(self.length)]];\n break;\n case 2:\n i = rng.$rand(self.length);\n j = rng.$rand(self.length);\n if (i === j) {\n j = i === 0 ? i + 1 : i - 1;\n }\n return [self[i], self[j]];\n break;\n default:\n if (self.length / count > 3) {\n abandon = false;\n spin = 0;\n\n result = $$($nesting, 'Array').$new(count);\n i = 1;\n\n result[0] = rng.$rand(self.length);\n while (i < count) {\n k = rng.$rand(self.length);\n j = 0;\n\n while (j < i) {\n while (k === result[j]) {\n spin++;\n if (spin > 100) {\n abandon = true;\n break;\n }\n k = rng.$rand(self.length);\n }\n if (abandon) { break; }\n\n j++;\n }\n\n if (abandon) { break; }\n\n result[i] = k;\n\n i++;\n }\n\n if (!abandon) {\n i = 0;\n while (i < count) {\n result[i] = self[result[i]];\n i++;\n }\n\n return result;\n }\n }\n\n result = self.slice();\n\n for (var c = 0; c < count; c++) {\n targetIndex = rng.$rand(self.length);\n oldValue = result[c];\n result[c] = result[targetIndex];\n result[targetIndex] = oldValue;\n }\n\n return count === self.length ? result : (result)['$[]'](0, count);\n }\n ;\n }, TMP_Array_sample_89.$$arity = -1);\n \n Opal.def(self, '$select', TMP_Array_select_90 = function $$select() {\n var TMP_91, self = this, $iter = TMP_Array_select_90.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_select_90.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"select\"], (TMP_91 = function(){var self = TMP_91.$$s || this;\n\n return self.$size()}, TMP_91.$$s = self, TMP_91.$$arity = 0, TMP_91))\n };\n \n var result = [];\n\n for (var i = 0, length = self.length, item, value; i < length; i++) {\n item = self[i];\n\n value = Opal.yield1(block, item);\n\n if (value !== false && value !== nil) {\n result.push(item);\n }\n }\n\n return result;\n ;\n }, TMP_Array_select_90.$$arity = 0);\n \n Opal.def(self, '$select!', TMP_Array_select$B_92 = function() {\n var TMP_93, self = this, $iter = TMP_Array_select$B_92.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_select$B_92.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"select!\"], (TMP_93 = function(){var self = TMP_93.$$s || this;\n\n return self.$size()}, TMP_93.$$s = self, TMP_93.$$arity = 0, TMP_93))\n };\n \n var original = self.length;\n $send(self, 'keep_if', [], block.$to_proc());\n return self.length === original ? nil : self;\n ;\n }, TMP_Array_select$B_92.$$arity = 0);\n \n Opal.def(self, '$shift', TMP_Array_shift_94 = function $$shift(count) {\n var self = this;\n\n \n if ($truthy(count === undefined)) {\n \n if ($truthy(self.length === 0)) {\n return nil};\n return self.shift();};\n count = $$($nesting, 'Opal').$coerce_to(count, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(count < 0)) {\n self.$raise($$($nesting, 'ArgumentError'), \"negative array size\")};\n if ($truthy(self.length === 0)) {\n return []};\n return self.splice(0, count);;\n }, TMP_Array_shift_94.$$arity = -1);\n Opal.alias(self, \"size\", \"length\");\n \n Opal.def(self, '$shuffle', TMP_Array_shuffle_95 = function $$shuffle(rng) {\n var self = this;\n\n return self.$dup().$to_a()['$shuffle!'](rng)\n }, TMP_Array_shuffle_95.$$arity = -1);\n \n Opal.def(self, '$shuffle!', TMP_Array_shuffle$B_96 = function(rng) {\n var self = this;\n\n \n var randgen, i = self.length, j, tmp;\n\n if (rng !== undefined) {\n rng = $$($nesting, 'Opal')['$coerce_to?'](rng, $$($nesting, 'Hash'), \"to_hash\");\n\n if (rng !== nil) {\n rng = rng['$[]'](\"random\");\n\n if (rng !== nil && rng['$respond_to?'](\"rand\")) {\n randgen = rng;\n }\n }\n }\n\n while (i) {\n if (randgen) {\n j = randgen.$rand(i).$to_int();\n\n if (j < 0) {\n self.$raise($$($nesting, 'RangeError'), \"\" + \"random number too small \" + (j))\n }\n\n if (j >= i) {\n self.$raise($$($nesting, 'RangeError'), \"\" + \"random number too big \" + (j))\n }\n }\n else {\n j = self.$rand(i);\n }\n\n tmp = self[--i];\n self[i] = self[j];\n self[j] = tmp;\n }\n\n return self;\n \n }, TMP_Array_shuffle$B_96.$$arity = -1);\n Opal.alias(self, \"slice\", \"[]\");\n \n Opal.def(self, '$slice!', TMP_Array_slice$B_97 = function(index, length) {\n var self = this, result = nil, range = nil, range_start = nil, range_end = nil, start = nil;\n\n \n result = nil;\n if ($truthy(length === undefined)) {\n if ($truthy($$($nesting, 'Range')['$==='](index))) {\n \n range = index;\n result = self['$[]'](range);\n range_start = $$($nesting, 'Opal').$coerce_to(range.$begin(), $$($nesting, 'Integer'), \"to_int\");\n range_end = $$($nesting, 'Opal').$coerce_to(range.$end(), $$($nesting, 'Integer'), \"to_int\");\n \n if (range_start < 0) {\n range_start += self.length;\n }\n\n if (range_end < 0) {\n range_end += self.length;\n } else if (range_end >= self.length) {\n range_end = self.length - 1;\n if (range.excl) {\n range_end += 1;\n }\n }\n\n var range_length = range_end - range_start;\n if (range.excl) {\n range_end -= 1;\n } else {\n range_length += 1;\n }\n\n if (range_start < self.length && range_start >= 0 && range_end < self.length && range_end >= 0 && range_length > 0) {\n self.splice(range_start, range_length);\n }\n ;\n } else {\n \n start = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), \"to_int\");\n \n if (start < 0) {\n start += self.length;\n }\n\n if (start < 0 || start >= self.length) {\n return nil;\n }\n\n result = self[start];\n\n if (start === 0) {\n self.shift();\n } else {\n self.splice(start, 1);\n }\n ;\n }\n } else {\n \n start = $$($nesting, 'Opal').$coerce_to(index, $$($nesting, 'Integer'), \"to_int\");\n length = $$($nesting, 'Opal').$coerce_to(length, $$($nesting, 'Integer'), \"to_int\");\n \n if (length < 0) {\n return nil;\n }\n\n var end = start + length;\n\n result = self['$[]'](start, length);\n\n if (start < 0) {\n start += self.length;\n }\n\n if (start + length > self.length) {\n length = self.length - start;\n }\n\n if (start < self.length && start >= 0) {\n self.splice(start, length);\n }\n ;\n };\n return result;\n }, TMP_Array_slice$B_97.$$arity = -2);\n \n Opal.def(self, '$sort', TMP_Array_sort_98 = function $$sort() {\n var self = this, $iter = TMP_Array_sort_98.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_sort_98.$$p = null;\n \n if ($truthy(self.length > 1)) {\n } else {\n return self\n };\n \n if (block === nil) {\n block = function(a, b) {\n return (a)['$<=>'](b);\n };\n }\n\n return self.slice().sort(function(x, y) {\n var ret = block(x, y);\n\n if (ret === nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + ((x).$inspect()) + \" with \" + ((y).$inspect()) + \" failed\");\n }\n\n return $rb_gt(ret, 0) ? 1 : ($rb_lt(ret, 0) ? -1 : 0);\n });\n ;\n }, TMP_Array_sort_98.$$arity = 0);\n \n Opal.def(self, '$sort!', TMP_Array_sort$B_99 = function() {\n var self = this, $iter = TMP_Array_sort$B_99.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_sort$B_99.$$p = null;\n \n var result;\n\n if ((block !== nil)) {\n result = $send((self.slice()), 'sort', [], block.$to_proc());\n }\n else {\n result = (self.slice()).$sort();\n }\n\n self.length = 0;\n for(var i = 0, length = result.length; i < length; i++) {\n self.push(result[i]);\n }\n\n return self;\n \n }, TMP_Array_sort$B_99.$$arity = 0);\n \n Opal.def(self, '$sort_by!', TMP_Array_sort_by$B_100 = function() {\n var TMP_101, self = this, $iter = TMP_Array_sort_by$B_100.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_sort_by$B_100.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"sort_by!\"], (TMP_101 = function(){var self = TMP_101.$$s || this;\n\n return self.$size()}, TMP_101.$$s = self, TMP_101.$$arity = 0, TMP_101))\n };\n return self.$replace($send(self, 'sort_by', [], block.$to_proc()));\n }, TMP_Array_sort_by$B_100.$$arity = 0);\n \n Opal.def(self, '$take', TMP_Array_take_102 = function $$take(count) {\n var self = this;\n\n \n if (count < 0) {\n self.$raise($$($nesting, 'ArgumentError'));\n }\n\n return self.slice(0, count);\n \n }, TMP_Array_take_102.$$arity = 1);\n \n Opal.def(self, '$take_while', TMP_Array_take_while_103 = function $$take_while() {\n var self = this, $iter = TMP_Array_take_while_103.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_take_while_103.$$p = null;\n \n var result = [];\n\n for (var i = 0, length = self.length, item, value; i < length; i++) {\n item = self[i];\n\n value = block(item);\n\n if (value === false || value === nil) {\n return result;\n }\n\n result.push(item);\n }\n\n return result;\n \n }, TMP_Array_take_while_103.$$arity = 0);\n \n Opal.def(self, '$to_a', TMP_Array_to_a_104 = function $$to_a() {\n var self = this;\n\n return self\n }, TMP_Array_to_a_104.$$arity = 0);\n Opal.alias(self, \"to_ary\", \"to_a\");\n \n Opal.def(self, '$to_h', TMP_Array_to_h_105 = function $$to_h() {\n var self = this;\n\n \n var i, len = self.length, ary, key, val, hash = $hash2([], {});\n\n for (i = 0; i < len; i++) {\n ary = $$($nesting, 'Opal')['$coerce_to?'](self[i], $$($nesting, 'Array'), \"to_ary\");\n if (!ary.$$is_array) {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"wrong element type \" + ((ary).$class()) + \" at \" + (i) + \" (expected array)\")\n }\n if (ary.length !== 2) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong array length at \" + (i) + \" (expected 2, was \" + ((ary).$length()) + \")\")\n }\n key = ary[0];\n val = ary[1];\n Opal.hash_put(hash, key, val);\n }\n\n return hash;\n \n }, TMP_Array_to_h_105.$$arity = 0);\n Opal.alias(self, \"to_s\", \"inspect\");\n \n Opal.def(self, '$transpose', TMP_Array_transpose_108 = function $$transpose() {\n var TMP_106, self = this, result = nil, max = nil;\n\n \n if ($truthy(self['$empty?']())) {\n return []};\n result = [];\n max = nil;\n $send(self, 'each', [], (TMP_106 = function(row){var self = TMP_106.$$s || this, $a, TMP_107;\nif (row == null) row = nil;\n \n row = (function() {if ($truthy($$($nesting, 'Array')['$==='](row))) {\n return row.$to_a()\n } else {\n return $$($nesting, 'Opal').$coerce_to(row, $$($nesting, 'Array'), \"to_ary\").$to_a()\n }; return nil; })();\n max = ($truthy($a = max) ? $a : row.length);\n if ($truthy((row.length)['$!='](max))) {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"element size differs (\" + (row.length) + \" should be \" + (max) + \")\")};\n return $send((row.length), 'times', [], (TMP_107 = function(i){var self = TMP_107.$$s || this, $b, entry = nil, $writer = nil;\nif (i == null) i = nil;\n \n entry = ($truthy($b = result['$[]'](i)) ? $b : (($writer = [i, []]), $send(result, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n return entry['$<<'](row.$at(i));}, TMP_107.$$s = self, TMP_107.$$arity = 1, TMP_107));}, TMP_106.$$s = self, TMP_106.$$arity = 1, TMP_106));\n return result;\n }, TMP_Array_transpose_108.$$arity = 0);\n \n Opal.def(self, '$uniq', TMP_Array_uniq_109 = function $$uniq() {\n var self = this, $iter = TMP_Array_uniq_109.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_uniq_109.$$p = null;\n \n var hash = $hash2([], {}), i, length, item, key;\n\n if (block === nil) {\n for (i = 0, length = self.length; i < length; i++) {\n item = self[i];\n if (Opal.hash_get(hash, item) === undefined) {\n Opal.hash_put(hash, item, item);\n }\n }\n }\n else {\n for (i = 0, length = self.length; i < length; i++) {\n item = self[i];\n key = Opal.yield1(block, item);\n if (Opal.hash_get(hash, key) === undefined) {\n Opal.hash_put(hash, key, item);\n }\n }\n }\n\n return toArraySubclass((hash).$values(), self.$class());\n \n }, TMP_Array_uniq_109.$$arity = 0);\n \n Opal.def(self, '$uniq!', TMP_Array_uniq$B_110 = function() {\n var self = this, $iter = TMP_Array_uniq$B_110.$$p, block = $iter || nil;\n\n if ($iter) TMP_Array_uniq$B_110.$$p = null;\n \n var original_length = self.length, hash = $hash2([], {}), i, length, item, key;\n\n for (i = 0, length = original_length; i < length; i++) {\n item = self[i];\n key = (block === nil ? item : Opal.yield1(block, item));\n\n if (Opal.hash_get(hash, key) === undefined) {\n Opal.hash_put(hash, key, item);\n continue;\n }\n\n self.splice(i, 1);\n length--;\n i--;\n }\n\n return self.length === original_length ? nil : self;\n \n }, TMP_Array_uniq$B_110.$$arity = 0);\n \n Opal.def(self, '$unshift', TMP_Array_unshift_111 = function $$unshift($a_rest) {\n var self = this, objects;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n objects = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n objects[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n \n for (var i = objects.length - 1; i >= 0; i--) {\n self.unshift(objects[i]);\n }\n ;\n return self;\n }, TMP_Array_unshift_111.$$arity = -1);\n Opal.alias(self, \"prepend\", \"unshift\");\n \n Opal.def(self, '$values_at', TMP_Array_values_at_114 = function $$values_at($a_rest) {\n var TMP_112, self = this, args, out = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n out = [];\n $send(args, 'each', [], (TMP_112 = function(elem){var self = TMP_112.$$s || this, TMP_113, finish = nil, start = nil, i = nil;\nif (elem == null) elem = nil;\n if ($truthy(elem['$is_a?']($$($nesting, 'Range')))) {\n \n finish = $$($nesting, 'Opal').$coerce_to(elem.$last(), $$($nesting, 'Integer'), \"to_int\");\n start = $$($nesting, 'Opal').$coerce_to(elem.$first(), $$($nesting, 'Integer'), \"to_int\");\n \n if (start < 0) {\n start = start + self.length;\n return nil;;\n }\n ;\n \n if (finish < 0) {\n finish = finish + self.length;\n }\n if (elem['$exclude_end?']()) {\n finish--;\n }\n if (finish < start) {\n return nil;;\n }\n ;\n return $send(start, 'upto', [finish], (TMP_113 = function(i){var self = TMP_113.$$s || this;\nif (i == null) i = nil;\n return out['$<<'](self.$at(i))}, TMP_113.$$s = self, TMP_113.$$arity = 1, TMP_113));\n } else {\n \n i = $$($nesting, 'Opal').$coerce_to(elem, $$($nesting, 'Integer'), \"to_int\");\n return out['$<<'](self.$at(i));\n }}, TMP_112.$$s = self, TMP_112.$$arity = 1, TMP_112));\n return out;\n }, TMP_Array_values_at_114.$$arity = -1);\n \n Opal.def(self, '$zip', TMP_Array_zip_115 = function $$zip($a_rest) {\n var $b, self = this, others, $iter = TMP_Array_zip_115.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n others = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n others[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Array_zip_115.$$p = null;\n \n var result = [], size = self.length, part, o, i, j, jj;\n\n for (j = 0, jj = others.length; j < jj; j++) {\n o = others[j];\n if (o.$$is_array) {\n continue;\n }\n if (o.$$is_enumerator) {\n if (o.$size() === Infinity) {\n others[j] = o.$take(size);\n } else {\n others[j] = o.$to_a();\n }\n continue;\n }\n others[j] = ($truthy($b = $$($nesting, 'Opal')['$coerce_to?'](o, $$($nesting, 'Array'), \"to_ary\")) ? $b : $$($nesting, 'Opal')['$coerce_to!'](o, $$($nesting, 'Enumerator'), \"each\")).$to_a();\n }\n\n for (i = 0; i < size; i++) {\n part = [self[i]];\n\n for (j = 0, jj = others.length; j < jj; j++) {\n o = others[j][i];\n\n if (o == null) {\n o = nil;\n }\n\n part[j + 1] = o;\n }\n\n result[i] = part;\n }\n\n if (block !== nil) {\n for (i = 0; i < size; i++) {\n block(result[i]);\n }\n\n return nil;\n }\n\n return result;\n \n }, TMP_Array_zip_115.$$arity = -1);\n Opal.defs(self, '$inherited', TMP_Array_inherited_116 = function $$inherited(klass) {\n var self = this;\n\n \n klass.$$proto.$to_a = function() {\n return this.slice(0, this.length);\n }\n \n }, TMP_Array_inherited_116.$$arity = 1);\n \n Opal.def(self, '$instance_variables', TMP_Array_instance_variables_117 = function $$instance_variables() {\n var TMP_118, self = this, $iter = TMP_Array_instance_variables_117.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Array_instance_variables_117.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n return $send($send(self, Opal.find_super_dispatcher(self, 'instance_variables', TMP_Array_instance_variables_117, false), $zuper, $iter), 'reject', [], (TMP_118 = function(ivar){var self = TMP_118.$$s || this, $a;\nif (ivar == null) ivar = nil;\n return ($truthy($a = /^@\\d+$/.test(ivar)) ? $a : ivar['$=='](\"@length\"))}, TMP_118.$$s = self, TMP_118.$$arity = 1, TMP_118))\n }, TMP_Array_instance_variables_117.$$arity = 0);\n $$($nesting, 'Opal').$pristine(self.$singleton_class(), \"allocate\");\n $$($nesting, 'Opal').$pristine(self, \"copy_instance_variables\", \"initialize_dup\");\n return (Opal.def(self, '$pack', TMP_Array_pack_119 = function $$pack($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return self.$raise(\"To use Array#pack, you must first require 'corelib/array/pack'.\")\n }, TMP_Array_pack_119.$$arity = -1), nil) && 'pack';\n })($nesting[0], Array, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/hash\"] = function(Opal) {\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$require', '$include', '$coerce_to?', '$[]', '$merge!', '$allocate', '$raise', '$coerce_to!', '$each', '$fetch', '$>=', '$>', '$==', '$compare_by_identity', '$lambda?', '$abs', '$arity', '$enum_for', '$size', '$respond_to?', '$class', '$dig', '$new', '$inspect', '$map', '$to_proc', '$flatten', '$eql?', '$default', '$dup', '$default_proc', '$default_proc=', '$-', '$default=', '$proc']);\n \n self.$require(\"corelib/enumerable\");\n return (function($base, $super, $parent_nesting) {\n function $Hash(){};\n var self = $Hash = $klass($base, $super, 'Hash', $Hash);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Hash_$$_1, TMP_Hash_allocate_2, TMP_Hash_try_convert_3, TMP_Hash_initialize_4, TMP_Hash_$eq$eq_5, TMP_Hash_$gt$eq_7, TMP_Hash_$gt_8, TMP_Hash_$lt_9, TMP_Hash_$lt$eq_10, TMP_Hash_$$_11, TMP_Hash_$$$eq_12, TMP_Hash_assoc_13, TMP_Hash_clear_14, TMP_Hash_clone_15, TMP_Hash_compact_16, TMP_Hash_compact$B_17, TMP_Hash_compare_by_identity_18, TMP_Hash_compare_by_identity$q_19, TMP_Hash_default_20, TMP_Hash_default$eq_21, TMP_Hash_default_proc_22, TMP_Hash_default_proc$eq_23, TMP_Hash_delete_24, TMP_Hash_delete_if_25, TMP_Hash_dig_27, TMP_Hash_each_28, TMP_Hash_each_key_30, TMP_Hash_each_value_32, TMP_Hash_empty$q_34, TMP_Hash_fetch_35, TMP_Hash_fetch_values_36, TMP_Hash_flatten_38, TMP_Hash_has_key$q_39, TMP_Hash_has_value$q_40, TMP_Hash_hash_41, TMP_Hash_index_42, TMP_Hash_indexes_43, TMP_Hash_inspect_44, TMP_Hash_invert_45, TMP_Hash_keep_if_46, TMP_Hash_keys_48, TMP_Hash_length_49, TMP_Hash_merge_50, TMP_Hash_merge$B_51, TMP_Hash_rassoc_52, TMP_Hash_rehash_53, TMP_Hash_reject_54, TMP_Hash_reject$B_56, TMP_Hash_replace_58, TMP_Hash_select_59, TMP_Hash_select$B_61, TMP_Hash_shift_63, TMP_Hash_slice_64, TMP_Hash_to_a_65, TMP_Hash_to_h_66, TMP_Hash_to_hash_67, TMP_Hash_to_proc_69, TMP_Hash_transform_keys_70, TMP_Hash_transform_keys$B_72, TMP_Hash_transform_values_74, TMP_Hash_transform_values$B_76, TMP_Hash_values_78;\n\n \n self.$include($$($nesting, 'Enumerable'));\n def.$$is_hash = true;\n Opal.defs(self, '$[]', TMP_Hash_$$_1 = function($a_rest) {\n var self = this, argv;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n argv = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n argv[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n var hash, argc = argv.length, i;\n\n if (argc === 1) {\n hash = $$($nesting, 'Opal')['$coerce_to?'](argv['$[]'](0), $$($nesting, 'Hash'), \"to_hash\");\n if (hash !== nil) {\n return self.$allocate()['$merge!'](hash);\n }\n\n argv = $$($nesting, 'Opal')['$coerce_to?'](argv['$[]'](0), $$($nesting, 'Array'), \"to_ary\");\n if (argv === nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"odd number of arguments for Hash\")\n }\n\n argc = argv.length;\n hash = self.$allocate();\n\n for (i = 0; i < argc; i++) {\n if (!argv[i].$$is_array) continue;\n switch(argv[i].length) {\n case 1:\n hash.$store(argv[i][0], nil);\n break;\n case 2:\n hash.$store(argv[i][0], argv[i][1]);\n break;\n default:\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid number of elements (\" + (argv[i].length) + \" for 1..2)\")\n }\n }\n\n return hash;\n }\n\n if (argc % 2 !== 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"odd number of arguments for Hash\")\n }\n\n hash = self.$allocate();\n\n for (i = 0; i < argc; i += 2) {\n hash.$store(argv[i], argv[i + 1]);\n }\n\n return hash;\n \n }, TMP_Hash_$$_1.$$arity = -1);\n Opal.defs(self, '$allocate', TMP_Hash_allocate_2 = function $$allocate() {\n var self = this;\n\n \n var hash = new self.$$alloc();\n\n Opal.hash_init(hash);\n\n hash.$$none = nil;\n hash.$$proc = nil;\n\n return hash;\n \n }, TMP_Hash_allocate_2.$$arity = 0);\n Opal.defs(self, '$try_convert', TMP_Hash_try_convert_3 = function $$try_convert(obj) {\n var self = this;\n\n return $$($nesting, 'Opal')['$coerce_to?'](obj, $$($nesting, 'Hash'), \"to_hash\")\n }, TMP_Hash_try_convert_3.$$arity = 1);\n \n Opal.def(self, '$initialize', TMP_Hash_initialize_4 = function $$initialize(defaults) {\n var self = this, $iter = TMP_Hash_initialize_4.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_initialize_4.$$p = null;\n \n if (defaults !== undefined && block !== nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"wrong number of arguments (1 for 0)\")\n }\n self.$$none = (defaults === undefined ? nil : defaults);\n self.$$proc = block;\n\n return self;\n \n }, TMP_Hash_initialize_4.$$arity = -1);\n \n Opal.def(self, '$==', TMP_Hash_$eq$eq_5 = function(other) {\n var self = this;\n\n \n if (self === other) {\n return true;\n }\n\n if (!other.$$is_hash) {\n return false;\n }\n\n if (self.$$keys.length !== other.$$keys.length) {\n return false;\n }\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, other_value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n other_value = other.$$smap[key];\n } else {\n value = key.value;\n other_value = Opal.hash_get(other, key.key);\n }\n\n if (other_value === undefined || !value['$eql?'](other_value)) {\n return false;\n }\n }\n\n return true;\n \n }, TMP_Hash_$eq$eq_5.$$arity = 1);\n \n Opal.def(self, '$>=', TMP_Hash_$gt$eq_7 = function(other) {\n var TMP_6, self = this, result = nil;\n\n \n other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), \"to_hash\");\n \n if (self.$$keys.length < other.$$keys.length) {\n return false\n }\n ;\n result = true;\n $send(other, 'each', [], (TMP_6 = function(other_key, other_val){var self = TMP_6.$$s || this, val = nil;\nif (other_key == null) other_key = nil;if (other_val == null) other_val = nil;\n \n val = self.$fetch(other_key, null);\n \n if (val == null || val !== other_val) {\n result = false;\n return;\n }\n ;}, TMP_6.$$s = self, TMP_6.$$arity = 2, TMP_6));\n return result;\n }, TMP_Hash_$gt$eq_7.$$arity = 1);\n \n Opal.def(self, '$>', TMP_Hash_$gt_8 = function(other) {\n var self = this;\n\n \n other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), \"to_hash\");\n \n if (self.$$keys.length <= other.$$keys.length) {\n return false\n }\n ;\n return $rb_ge(self, other);\n }, TMP_Hash_$gt_8.$$arity = 1);\n \n Opal.def(self, '$<', TMP_Hash_$lt_9 = function(other) {\n var self = this;\n\n \n other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), \"to_hash\");\n return $rb_gt(other, self);\n }, TMP_Hash_$lt_9.$$arity = 1);\n \n Opal.def(self, '$<=', TMP_Hash_$lt$eq_10 = function(other) {\n var self = this;\n\n \n other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), \"to_hash\");\n return $rb_ge(other, self);\n }, TMP_Hash_$lt$eq_10.$$arity = 1);\n \n Opal.def(self, '$[]', TMP_Hash_$$_11 = function(key) {\n var self = this;\n\n \n var value = Opal.hash_get(self, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return self.$default(key);\n \n }, TMP_Hash_$$_11.$$arity = 1);\n \n Opal.def(self, '$[]=', TMP_Hash_$$$eq_12 = function(key, value) {\n var self = this;\n\n \n Opal.hash_put(self, key, value);\n return value;\n \n }, TMP_Hash_$$$eq_12.$$arity = 2);\n \n Opal.def(self, '$assoc', TMP_Hash_assoc_13 = function $$assoc(object) {\n var self = this;\n\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n if ((key)['$=='](object)) {\n return [key, self.$$smap[key]];\n }\n } else {\n if ((key.key)['$=='](object)) {\n return [key.key, key.value];\n }\n }\n }\n\n return nil;\n \n }, TMP_Hash_assoc_13.$$arity = 1);\n \n Opal.def(self, '$clear', TMP_Hash_clear_14 = function $$clear() {\n var self = this;\n\n \n Opal.hash_init(self);\n return self;\n \n }, TMP_Hash_clear_14.$$arity = 0);\n \n Opal.def(self, '$clone', TMP_Hash_clone_15 = function $$clone() {\n var self = this;\n\n \n var hash = new self.$$class.$$alloc();\n\n Opal.hash_init(hash);\n Opal.hash_clone(self, hash);\n\n return hash;\n \n }, TMP_Hash_clone_15.$$arity = 0);\n \n Opal.def(self, '$compact', TMP_Hash_compact_16 = function $$compact() {\n var self = this;\n\n \n var hash = Opal.hash();\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n if (value !== nil) {\n Opal.hash_put(hash, key, value);\n }\n }\n\n return hash;\n \n }, TMP_Hash_compact_16.$$arity = 0);\n \n Opal.def(self, '$compact!', TMP_Hash_compact$B_17 = function() {\n var self = this;\n\n \n var changes_were_made = false;\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n if (value === nil) {\n if (Opal.hash_delete(self, key) !== undefined) {\n changes_were_made = true;\n length--;\n i--;\n }\n }\n }\n\n return changes_were_made ? self : nil;\n \n }, TMP_Hash_compact$B_17.$$arity = 0);\n \n Opal.def(self, '$compare_by_identity', TMP_Hash_compare_by_identity_18 = function $$compare_by_identity() {\n var self = this;\n\n \n var i, ii, key, keys = self.$$keys, identity_hash;\n\n if (self.$$by_identity) return self;\n if (self.$$keys.length === 0) {\n self.$$by_identity = true\n return self;\n }\n\n identity_hash = $hash2([], {}).$compare_by_identity();\n for(i = 0, ii = keys.length; i < ii; i++) {\n key = keys[i];\n if (!key.$$is_string) key = key.key;\n Opal.hash_put(identity_hash, key, Opal.hash_get(self, key));\n }\n\n self.$$by_identity = true;\n self.$$map = identity_hash.$$map;\n self.$$smap = identity_hash.$$smap;\n return self;\n \n }, TMP_Hash_compare_by_identity_18.$$arity = 0);\n \n Opal.def(self, '$compare_by_identity?', TMP_Hash_compare_by_identity$q_19 = function() {\n var self = this;\n\n return self.$$by_identity === true;\n }, TMP_Hash_compare_by_identity$q_19.$$arity = 0);\n \n Opal.def(self, '$default', TMP_Hash_default_20 = function(key) {\n var self = this;\n\n \n if (key !== undefined && self.$$proc !== nil && self.$$proc !== undefined) {\n return self.$$proc.$call(self, key);\n }\n if (self.$$none === undefined) {\n return nil;\n }\n return self.$$none;\n \n }, TMP_Hash_default_20.$$arity = -1);\n \n Opal.def(self, '$default=', TMP_Hash_default$eq_21 = function(object) {\n var self = this;\n\n \n self.$$proc = nil;\n self.$$none = object;\n\n return object;\n \n }, TMP_Hash_default$eq_21.$$arity = 1);\n \n Opal.def(self, '$default_proc', TMP_Hash_default_proc_22 = function $$default_proc() {\n var self = this;\n\n \n if (self.$$proc !== undefined) {\n return self.$$proc;\n }\n return nil;\n \n }, TMP_Hash_default_proc_22.$$arity = 0);\n \n Opal.def(self, '$default_proc=', TMP_Hash_default_proc$eq_23 = function(default_proc) {\n var self = this;\n\n \n var proc = default_proc;\n\n if (proc !== nil) {\n proc = $$($nesting, 'Opal')['$coerce_to!'](proc, $$($nesting, 'Proc'), \"to_proc\");\n\n if ((proc)['$lambda?']() && (proc).$arity().$abs() !== 2) {\n self.$raise($$($nesting, 'TypeError'), \"default_proc takes two arguments\");\n }\n }\n\n self.$$none = nil;\n self.$$proc = proc;\n\n return default_proc;\n \n }, TMP_Hash_default_proc$eq_23.$$arity = 1);\n \n Opal.def(self, '$delete', TMP_Hash_delete_24 = function(key) {\n var self = this, $iter = TMP_Hash_delete_24.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_delete_24.$$p = null;\n \n var value = Opal.hash_delete(self, key);\n\n if (value !== undefined) {\n return value;\n }\n\n if (block !== nil) {\n return Opal.yield1(block, key);\n }\n\n return nil;\n \n }, TMP_Hash_delete_24.$$arity = 1);\n \n Opal.def(self, '$delete_if', TMP_Hash_delete_if_25 = function $$delete_if() {\n var TMP_26, self = this, $iter = TMP_Hash_delete_if_25.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_delete_if_25.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"delete_if\"], (TMP_26 = function(){var self = TMP_26.$$s || this;\n\n return self.$size()}, TMP_26.$$s = self, TMP_26.$$arity = 0, TMP_26))\n };\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n obj = block(key, value);\n\n if (obj !== false && obj !== nil) {\n if (Opal.hash_delete(self, key) !== undefined) {\n length--;\n i--;\n }\n }\n }\n\n return self;\n ;\n }, TMP_Hash_delete_if_25.$$arity = 0);\n Opal.alias(self, \"dup\", \"clone\");\n \n Opal.def(self, '$dig', TMP_Hash_dig_27 = function $$dig(key, $a_rest) {\n var self = this, keys, item = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n keys = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n keys[$arg_idx - 1] = arguments[$arg_idx];\n }\n \n item = self['$[]'](key);\n \n if (item === nil || keys.length === 0) {\n return item;\n }\n ;\n if ($truthy(item['$respond_to?'](\"dig\"))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + (item.$class()) + \" does not have #dig method\")\n };\n return $send(item, 'dig', Opal.to_a(keys));\n }, TMP_Hash_dig_27.$$arity = -2);\n \n Opal.def(self, '$each', TMP_Hash_each_28 = function $$each() {\n var TMP_29, self = this, $iter = TMP_Hash_each_28.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_each_28.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"each\"], (TMP_29 = function(){var self = TMP_29.$$s || this;\n\n return self.$size()}, TMP_29.$$s = self, TMP_29.$$arity = 0, TMP_29))\n };\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n Opal.yield1(block, [key, value]);\n }\n\n return self;\n ;\n }, TMP_Hash_each_28.$$arity = 0);\n \n Opal.def(self, '$each_key', TMP_Hash_each_key_30 = function $$each_key() {\n var TMP_31, self = this, $iter = TMP_Hash_each_key_30.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_each_key_30.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"each_key\"], (TMP_31 = function(){var self = TMP_31.$$s || this;\n\n return self.$size()}, TMP_31.$$s = self, TMP_31.$$arity = 0, TMP_31))\n };\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) {\n key = keys[i];\n\n block(key.$$is_string ? key : key.key);\n }\n\n return self;\n ;\n }, TMP_Hash_each_key_30.$$arity = 0);\n Opal.alias(self, \"each_pair\", \"each\");\n \n Opal.def(self, '$each_value', TMP_Hash_each_value_32 = function $$each_value() {\n var TMP_33, self = this, $iter = TMP_Hash_each_value_32.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_each_value_32.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"each_value\"], (TMP_33 = function(){var self = TMP_33.$$s || this;\n\n return self.$size()}, TMP_33.$$s = self, TMP_33.$$arity = 0, TMP_33))\n };\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) {\n key = keys[i];\n\n block(key.$$is_string ? self.$$smap[key] : key.value);\n }\n\n return self;\n ;\n }, TMP_Hash_each_value_32.$$arity = 0);\n \n Opal.def(self, '$empty?', TMP_Hash_empty$q_34 = function() {\n var self = this;\n\n return self.$$keys.length === 0;\n }, TMP_Hash_empty$q_34.$$arity = 0);\n Opal.alias(self, \"eql?\", \"==\");\n \n Opal.def(self, '$fetch', TMP_Hash_fetch_35 = function $$fetch(key, defaults) {\n var self = this, $iter = TMP_Hash_fetch_35.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_fetch_35.$$p = null;\n \n \n var value = Opal.hash_get(self, key);\n\n if (value !== undefined) {\n return value;\n }\n\n if (block !== nil) {\n return block(key);\n }\n\n if (defaults !== undefined) {\n return defaults;\n }\n ;\n return self.$raise($$($nesting, 'KeyError').$new(\"\" + \"key not found: \" + (key.$inspect()), $hash2([\"key\", \"receiver\"], {\"key\": key, \"receiver\": self})));\n }, TMP_Hash_fetch_35.$$arity = -2);\n \n Opal.def(self, '$fetch_values', TMP_Hash_fetch_values_36 = function $$fetch_values($a_rest) {\n var TMP_37, self = this, keys, $iter = TMP_Hash_fetch_values_36.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n keys = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n keys[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Hash_fetch_values_36.$$p = null;\n return $send(keys, 'map', [], (TMP_37 = function(key){var self = TMP_37.$$s || this;\nif (key == null) key = nil;\n return $send(self, 'fetch', [key], block.$to_proc())}, TMP_37.$$s = self, TMP_37.$$arity = 1, TMP_37))\n }, TMP_Hash_fetch_values_36.$$arity = -1);\n \n Opal.def(self, '$flatten', TMP_Hash_flatten_38 = function $$flatten(level) {\n var self = this;\n\n if (level == null) {\n level = 1;\n }\n \n level = $$($nesting, 'Opal')['$coerce_to!'](level, $$($nesting, 'Integer'), \"to_int\");\n \n var result = [];\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n result.push(key);\n\n if (value.$$is_array) {\n if (level === 1) {\n result.push(value);\n continue;\n }\n\n result = result.concat((value).$flatten(level - 2));\n continue;\n }\n\n result.push(value);\n }\n\n return result;\n ;\n }, TMP_Hash_flatten_38.$$arity = -1);\n \n Opal.def(self, '$has_key?', TMP_Hash_has_key$q_39 = function(key) {\n var self = this;\n\n return Opal.hash_get(self, key) !== undefined;\n }, TMP_Hash_has_key$q_39.$$arity = 1);\n \n Opal.def(self, '$has_value?', TMP_Hash_has_value$q_40 = function(value) {\n var self = this;\n\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) {\n key = keys[i];\n\n if (((key.$$is_string ? self.$$smap[key] : key.value))['$=='](value)) {\n return true;\n }\n }\n\n return false;\n \n }, TMP_Hash_has_value$q_40.$$arity = 1);\n \n Opal.def(self, '$hash', TMP_Hash_hash_41 = function $$hash() {\n var self = this;\n\n \n var top = (Opal.hash_ids === undefined),\n hash_id = self.$object_id(),\n result = ['Hash'],\n key, item;\n\n try {\n if (top) {\n Opal.hash_ids = Object.create(null);\n }\n\n if (Opal[hash_id]) {\n return 'self';\n }\n\n for (key in Opal.hash_ids) {\n item = Opal.hash_ids[key];\n if (self['$eql?'](item)) {\n return 'self';\n }\n }\n\n Opal.hash_ids[hash_id] = self;\n\n for (var i = 0, keys = self.$$keys, length = keys.length; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n result.push([key, self.$$smap[key].$hash()]);\n } else {\n result.push([key.key_hash, key.value.$hash()]);\n }\n }\n\n return result.sort().join();\n\n } finally {\n if (top) {\n Opal.hash_ids = undefined;\n }\n }\n \n }, TMP_Hash_hash_41.$$arity = 0);\n Opal.alias(self, \"include?\", \"has_key?\");\n \n Opal.def(self, '$index', TMP_Hash_index_42 = function $$index(object) {\n var self = this;\n\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n if ((value)['$=='](object)) {\n return key;\n }\n }\n\n return nil;\n \n }, TMP_Hash_index_42.$$arity = 1);\n \n Opal.def(self, '$indexes', TMP_Hash_indexes_43 = function $$indexes($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n var result = [];\n\n for (var i = 0, length = args.length, key, value; i < length; i++) {\n key = args[i];\n value = Opal.hash_get(self, key);\n\n if (value === undefined) {\n result.push(self.$default());\n continue;\n }\n\n result.push(value);\n }\n\n return result;\n \n }, TMP_Hash_indexes_43.$$arity = -1);\n Opal.alias(self, \"indices\", \"indexes\");\n var inspect_ids;\n \n Opal.def(self, '$inspect', TMP_Hash_inspect_44 = function $$inspect() {\n var self = this;\n\n \n var top = (inspect_ids === undefined),\n hash_id = self.$object_id(),\n result = [];\n\n try {\n if (top) {\n inspect_ids = {};\n }\n\n if (inspect_ids.hasOwnProperty(hash_id)) {\n return '{...}';\n }\n\n inspect_ids[hash_id] = true;\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n result.push(key.$inspect() + '=>' + value.$inspect());\n }\n\n return '{' + result.join(', ') + '}';\n\n } finally {\n if (top) {\n inspect_ids = undefined;\n }\n }\n \n }, TMP_Hash_inspect_44.$$arity = 0);\n \n Opal.def(self, '$invert', TMP_Hash_invert_45 = function $$invert() {\n var self = this;\n\n \n var hash = Opal.hash();\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n Opal.hash_put(hash, value, key);\n }\n\n return hash;\n \n }, TMP_Hash_invert_45.$$arity = 0);\n \n Opal.def(self, '$keep_if', TMP_Hash_keep_if_46 = function $$keep_if() {\n var TMP_47, self = this, $iter = TMP_Hash_keep_if_46.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_keep_if_46.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"keep_if\"], (TMP_47 = function(){var self = TMP_47.$$s || this;\n\n return self.$size()}, TMP_47.$$s = self, TMP_47.$$arity = 0, TMP_47))\n };\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n obj = block(key, value);\n\n if (obj === false || obj === nil) {\n if (Opal.hash_delete(self, key) !== undefined) {\n length--;\n i--;\n }\n }\n }\n\n return self;\n ;\n }, TMP_Hash_keep_if_46.$$arity = 0);\n Opal.alias(self, \"key\", \"index\");\n Opal.alias(self, \"key?\", \"has_key?\");\n \n Opal.def(self, '$keys', TMP_Hash_keys_48 = function $$keys() {\n var self = this;\n\n \n var result = [];\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n result.push(key);\n } else {\n result.push(key.key);\n }\n }\n\n return result;\n \n }, TMP_Hash_keys_48.$$arity = 0);\n \n Opal.def(self, '$length', TMP_Hash_length_49 = function $$length() {\n var self = this;\n\n return self.$$keys.length;\n }, TMP_Hash_length_49.$$arity = 0);\n Opal.alias(self, \"member?\", \"has_key?\");\n \n Opal.def(self, '$merge', TMP_Hash_merge_50 = function $$merge(other) {\n var self = this, $iter = TMP_Hash_merge_50.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_merge_50.$$p = null;\n return $send(self.$dup(), 'merge!', [other], block.$to_proc())\n }, TMP_Hash_merge_50.$$arity = 1);\n \n Opal.def(self, '$merge!', TMP_Hash_merge$B_51 = function(other) {\n var self = this, $iter = TMP_Hash_merge$B_51.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_merge$B_51.$$p = null;\n \n if (!other.$$is_hash) {\n other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), \"to_hash\");\n }\n\n var i, other_keys = other.$$keys, length = other_keys.length, key, value, other_value;\n\n if (block === nil) {\n for (i = 0; i < length; i++) {\n key = other_keys[i];\n\n if (key.$$is_string) {\n other_value = other.$$smap[key];\n } else {\n other_value = key.value;\n key = key.key;\n }\n\n Opal.hash_put(self, key, other_value);\n }\n\n return self;\n }\n\n for (i = 0; i < length; i++) {\n key = other_keys[i];\n\n if (key.$$is_string) {\n other_value = other.$$smap[key];\n } else {\n other_value = key.value;\n key = key.key;\n }\n\n value = Opal.hash_get(self, key);\n\n if (value === undefined) {\n Opal.hash_put(self, key, other_value);\n continue;\n }\n\n Opal.hash_put(self, key, block(key, value, other_value));\n }\n\n return self;\n \n }, TMP_Hash_merge$B_51.$$arity = 1);\n \n Opal.def(self, '$rassoc', TMP_Hash_rassoc_52 = function $$rassoc(object) {\n var self = this;\n\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n if ((value)['$=='](object)) {\n return [key, value];\n }\n }\n\n return nil;\n \n }, TMP_Hash_rassoc_52.$$arity = 1);\n \n Opal.def(self, '$rehash', TMP_Hash_rehash_53 = function $$rehash() {\n var self = this;\n\n \n Opal.hash_rehash(self);\n return self;\n \n }, TMP_Hash_rehash_53.$$arity = 0);\n \n Opal.def(self, '$reject', TMP_Hash_reject_54 = function $$reject() {\n var TMP_55, self = this, $iter = TMP_Hash_reject_54.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_reject_54.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"reject\"], (TMP_55 = function(){var self = TMP_55.$$s || this;\n\n return self.$size()}, TMP_55.$$s = self, TMP_55.$$arity = 0, TMP_55))\n };\n \n var hash = Opal.hash();\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n obj = block(key, value);\n\n if (obj === false || obj === nil) {\n Opal.hash_put(hash, key, value);\n }\n }\n\n return hash;\n ;\n }, TMP_Hash_reject_54.$$arity = 0);\n \n Opal.def(self, '$reject!', TMP_Hash_reject$B_56 = function() {\n var TMP_57, self = this, $iter = TMP_Hash_reject$B_56.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_reject$B_56.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"reject!\"], (TMP_57 = function(){var self = TMP_57.$$s || this;\n\n return self.$size()}, TMP_57.$$s = self, TMP_57.$$arity = 0, TMP_57))\n };\n \n var changes_were_made = false;\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n obj = block(key, value);\n\n if (obj !== false && obj !== nil) {\n if (Opal.hash_delete(self, key) !== undefined) {\n changes_were_made = true;\n length--;\n i--;\n }\n }\n }\n\n return changes_were_made ? self : nil;\n ;\n }, TMP_Hash_reject$B_56.$$arity = 0);\n \n Opal.def(self, '$replace', TMP_Hash_replace_58 = function $$replace(other) {\n var self = this, $writer = nil;\n\n \n other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Hash'), \"to_hash\");\n \n Opal.hash_init(self);\n\n for (var i = 0, other_keys = other.$$keys, length = other_keys.length, key, value, other_value; i < length; i++) {\n key = other_keys[i];\n\n if (key.$$is_string) {\n other_value = other.$$smap[key];\n } else {\n other_value = key.value;\n key = key.key;\n }\n\n Opal.hash_put(self, key, other_value);\n }\n ;\n if ($truthy(other.$default_proc())) {\n \n $writer = [other.$default_proc()];\n $send(self, 'default_proc=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [other.$default()];\n $send(self, 'default=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n return self;\n }, TMP_Hash_replace_58.$$arity = 1);\n \n Opal.def(self, '$select', TMP_Hash_select_59 = function $$select() {\n var TMP_60, self = this, $iter = TMP_Hash_select_59.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_select_59.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"select\"], (TMP_60 = function(){var self = TMP_60.$$s || this;\n\n return self.$size()}, TMP_60.$$s = self, TMP_60.$$arity = 0, TMP_60))\n };\n \n var hash = Opal.hash();\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n obj = block(key, value);\n\n if (obj !== false && obj !== nil) {\n Opal.hash_put(hash, key, value);\n }\n }\n\n return hash;\n ;\n }, TMP_Hash_select_59.$$arity = 0);\n \n Opal.def(self, '$select!', TMP_Hash_select$B_61 = function() {\n var TMP_62, self = this, $iter = TMP_Hash_select$B_61.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_select$B_61.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"select!\"], (TMP_62 = function(){var self = TMP_62.$$s || this;\n\n return self.$size()}, TMP_62.$$s = self, TMP_62.$$arity = 0, TMP_62))\n };\n \n var result = nil;\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n obj = block(key, value);\n\n if (obj === false || obj === nil) {\n if (Opal.hash_delete(self, key) !== undefined) {\n length--;\n i--;\n }\n result = self;\n }\n }\n\n return result;\n ;\n }, TMP_Hash_select$B_61.$$arity = 0);\n \n Opal.def(self, '$shift', TMP_Hash_shift_63 = function $$shift() {\n var self = this;\n\n \n var keys = self.$$keys,\n key;\n\n if (keys.length > 0) {\n key = keys[0];\n\n key = key.$$is_string ? key : key.key;\n\n return [key, Opal.hash_delete(self, key)];\n }\n\n return self.$default(nil);\n \n }, TMP_Hash_shift_63.$$arity = 0);\n Opal.alias(self, \"size\", \"length\");\n \n Opal.def(self, '$slice', TMP_Hash_slice_64 = function $$slice($a_rest) {\n var self = this, keys;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n keys = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n keys[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n var result = Opal.hash();\n\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i], value = Opal.hash_get(self, key);\n\n if (value !== undefined) {\n Opal.hash_put(result, key, value);\n }\n }\n\n return result;\n \n }, TMP_Hash_slice_64.$$arity = -1);\n Opal.alias(self, \"store\", \"[]=\");\n \n Opal.def(self, '$to_a', TMP_Hash_to_a_65 = function $$to_a() {\n var self = this;\n\n \n var result = [];\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n result.push([key, value]);\n }\n\n return result;\n \n }, TMP_Hash_to_a_65.$$arity = 0);\n \n Opal.def(self, '$to_h', TMP_Hash_to_h_66 = function $$to_h() {\n var self = this;\n\n \n if (self.$$class === Opal.Hash) {\n return self;\n }\n\n var hash = new Opal.Hash.$$alloc();\n\n Opal.hash_init(hash);\n Opal.hash_clone(self, hash);\n\n return hash;\n \n }, TMP_Hash_to_h_66.$$arity = 0);\n \n Opal.def(self, '$to_hash', TMP_Hash_to_hash_67 = function $$to_hash() {\n var self = this;\n\n return self\n }, TMP_Hash_to_hash_67.$$arity = 0);\n \n Opal.def(self, '$to_proc', TMP_Hash_to_proc_69 = function $$to_proc() {\n var TMP_68, self = this;\n\n return $send(self, 'proc', [], (TMP_68 = function(key){var self = TMP_68.$$s || this;\n\n \n \n if (key == null) {\n self.$raise($$($nesting, 'ArgumentError'), \"no key given\")\n }\n ;\n return self['$[]'](key);}, TMP_68.$$s = self, TMP_68.$$arity = -1, TMP_68))\n }, TMP_Hash_to_proc_69.$$arity = 0);\n Opal.alias(self, \"to_s\", \"inspect\");\n \n Opal.def(self, '$transform_keys', TMP_Hash_transform_keys_70 = function $$transform_keys() {\n var TMP_71, self = this, $iter = TMP_Hash_transform_keys_70.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_transform_keys_70.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"transform_keys\"], (TMP_71 = function(){var self = TMP_71.$$s || this;\n\n return self.$size()}, TMP_71.$$s = self, TMP_71.$$arity = 0, TMP_71))\n };\n \n var result = Opal.hash();\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n key = Opal.yield1(block, key);\n\n Opal.hash_put(result, key, value);\n }\n\n return result;\n ;\n }, TMP_Hash_transform_keys_70.$$arity = 0);\n \n Opal.def(self, '$transform_keys!', TMP_Hash_transform_keys$B_72 = function() {\n var TMP_73, self = this, $iter = TMP_Hash_transform_keys$B_72.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_transform_keys$B_72.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"transform_keys!\"], (TMP_73 = function(){var self = TMP_73.$$s || this;\n\n return self.$size()}, TMP_73.$$s = self, TMP_73.$$arity = 0, TMP_73))\n };\n \n var keys = Opal.slice.call(self.$$keys),\n i, length = keys.length, key, value, new_key;\n\n for (i = 0; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n new_key = Opal.yield1(block, key);\n\n Opal.hash_delete(self, key);\n Opal.hash_put(self, new_key, value);\n }\n\n return self;\n ;\n }, TMP_Hash_transform_keys$B_72.$$arity = 0);\n \n Opal.def(self, '$transform_values', TMP_Hash_transform_values_74 = function $$transform_values() {\n var TMP_75, self = this, $iter = TMP_Hash_transform_values_74.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_transform_values_74.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"transform_values\"], (TMP_75 = function(){var self = TMP_75.$$s || this;\n\n return self.$size()}, TMP_75.$$s = self, TMP_75.$$arity = 0, TMP_75))\n };\n \n var result = Opal.hash();\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n value = Opal.yield1(block, value);\n\n Opal.hash_put(result, key, value);\n }\n\n return result;\n ;\n }, TMP_Hash_transform_values_74.$$arity = 0);\n \n Opal.def(self, '$transform_values!', TMP_Hash_transform_values$B_76 = function() {\n var TMP_77, self = this, $iter = TMP_Hash_transform_values$B_76.$$p, block = $iter || nil;\n\n if ($iter) TMP_Hash_transform_values$B_76.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"transform_values!\"], (TMP_77 = function(){var self = TMP_77.$$s || this;\n\n return self.$size()}, TMP_77.$$s = self, TMP_77.$$arity = 0, TMP_77))\n };\n \n for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n value = self.$$smap[key];\n } else {\n value = key.value;\n key = key.key;\n }\n\n value = Opal.yield1(block, value);\n\n Opal.hash_put(self, key, value);\n }\n\n return self;\n ;\n }, TMP_Hash_transform_values$B_76.$$arity = 0);\n Opal.alias(self, \"update\", \"merge!\");\n Opal.alias(self, \"value?\", \"has_value?\");\n Opal.alias(self, \"values_at\", \"indexes\");\n return (Opal.def(self, '$values', TMP_Hash_values_78 = function $$values() {\n var self = this;\n\n \n var result = [];\n\n for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) {\n key = keys[i];\n\n if (key.$$is_string) {\n result.push(self.$$smap[key]);\n } else {\n result.push(key.value);\n }\n }\n\n return result;\n \n }, TMP_Hash_values_78.$$arity = 0), nil) && 'values';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/number\"] = function(Opal) {\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$require', '$bridge', '$raise', '$name', '$class', '$Float', '$respond_to?', '$coerce_to!', '$__coerced__', '$===', '$!', '$>', '$**', '$new', '$<', '$to_f', '$==', '$nan?', '$infinite?', '$enum_for', '$+', '$-', '$gcd', '$lcm', '$%', '$/', '$frexp', '$to_i', '$ldexp', '$rationalize', '$*', '$<<', '$to_r', '$truncate', '$-@', '$size', '$<=', '$>=', '$<=>', '$compare', '$any?']);\n \n self.$require(\"corelib/numeric\");\n (function($base, $super, $parent_nesting) {\n function $Number(){};\n var self = $Number = $klass($base, $super, 'Number', $Number);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Number_coerce_2, TMP_Number___id___3, TMP_Number_$_4, TMP_Number_$_5, TMP_Number_$_6, TMP_Number_$_7, TMP_Number_$_8, TMP_Number_$_9, TMP_Number_$_10, TMP_Number_$_11, TMP_Number_$lt_12, TMP_Number_$lt$eq_13, TMP_Number_$gt_14, TMP_Number_$gt$eq_15, TMP_Number_$lt$eq$gt_16, TMP_Number_$lt$lt_17, TMP_Number_$gt$gt_18, TMP_Number_$$_19, TMP_Number_$$_20, TMP_Number_$$_21, TMP_Number_$_22, TMP_Number_$$_23, TMP_Number_$eq$eq$eq_24, TMP_Number_$eq$eq_25, TMP_Number_abs_26, TMP_Number_abs2_27, TMP_Number_allbits$q_28, TMP_Number_anybits$q_29, TMP_Number_angle_30, TMP_Number_bit_length_31, TMP_Number_ceil_32, TMP_Number_chr_33, TMP_Number_denominator_34, TMP_Number_downto_35, TMP_Number_equal$q_37, TMP_Number_even$q_38, TMP_Number_floor_39, TMP_Number_gcd_40, TMP_Number_gcdlcm_41, TMP_Number_integer$q_42, TMP_Number_is_a$q_43, TMP_Number_instance_of$q_44, TMP_Number_lcm_45, TMP_Number_next_46, TMP_Number_nobits$q_47, TMP_Number_nonzero$q_48, TMP_Number_numerator_49, TMP_Number_odd$q_50, TMP_Number_ord_51, TMP_Number_pow_52, TMP_Number_pred_53, TMP_Number_quo_54, TMP_Number_rationalize_55, TMP_Number_remainder_56, TMP_Number_round_57, TMP_Number_step_58, TMP_Number_times_60, TMP_Number_to_f_62, TMP_Number_to_i_63, TMP_Number_to_r_64, TMP_Number_to_s_65, TMP_Number_truncate_66, TMP_Number_digits_67, TMP_Number_divmod_68, TMP_Number_upto_69, TMP_Number_zero$q_71, TMP_Number_size_72, TMP_Number_nan$q_73, TMP_Number_finite$q_74, TMP_Number_infinite$q_75, TMP_Number_positive$q_76, TMP_Number_negative$q_77;\n\n \n $$($nesting, 'Opal').$bridge(self, Number);\n Number.prototype.$$is_number = true;\n self.$$is_number_class = true;\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_1;\n\n \n \n Opal.def(self, '$allocate', TMP_allocate_1 = function $$allocate() {\n var self = this;\n\n return self.$raise($$($nesting, 'TypeError'), \"\" + \"allocator undefined for \" + (self.$name()))\n }, TMP_allocate_1.$$arity = 0);\n \n \n Opal.udef(self, '$' + \"new\");;\n return nil;;\n })(Opal.get_singleton_class(self), $nesting);\n \n Opal.def(self, '$coerce', TMP_Number_coerce_2 = function $$coerce(other) {\n var self = this;\n\n \n if (other === nil) {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"can't convert \" + (other.$class()) + \" into Float\");\n }\n else if (other.$$is_string) {\n return [self.$Float(other), self];\n }\n else if (other['$respond_to?'](\"to_f\")) {\n return [$$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Float'), \"to_f\"), self];\n }\n else if (other.$$is_number) {\n return [other, self];\n }\n else {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"can't convert \" + (other.$class()) + \" into Float\");\n }\n \n }, TMP_Number_coerce_2.$$arity = 1);\n \n Opal.def(self, '$__id__', TMP_Number___id___3 = function $$__id__() {\n var self = this;\n\n return (self * 2) + 1;\n }, TMP_Number___id___3.$$arity = 0);\n Opal.alias(self, \"object_id\", \"__id__\");\n \n Opal.def(self, '$+', TMP_Number_$_4 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self + other;\n }\n else {\n return self.$__coerced__(\"+\", other);\n }\n \n }, TMP_Number_$_4.$$arity = 1);\n \n Opal.def(self, '$-', TMP_Number_$_5 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self - other;\n }\n else {\n return self.$__coerced__(\"-\", other);\n }\n \n }, TMP_Number_$_5.$$arity = 1);\n \n Opal.def(self, '$*', TMP_Number_$_6 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self * other;\n }\n else {\n return self.$__coerced__(\"*\", other);\n }\n \n }, TMP_Number_$_6.$$arity = 1);\n \n Opal.def(self, '$/', TMP_Number_$_7 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self / other;\n }\n else {\n return self.$__coerced__(\"/\", other);\n }\n \n }, TMP_Number_$_7.$$arity = 1);\n Opal.alias(self, \"fdiv\", \"/\");\n \n Opal.def(self, '$%', TMP_Number_$_8 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n if (other == -Infinity) {\n return other;\n }\n else if (other == 0) {\n self.$raise($$($nesting, 'ZeroDivisionError'), \"divided by 0\");\n }\n else if (other < 0 || self < 0) {\n return (self % other + other) % other;\n }\n else {\n return self % other;\n }\n }\n else {\n return self.$__coerced__(\"%\", other);\n }\n \n }, TMP_Number_$_8.$$arity = 1);\n \n Opal.def(self, '$&', TMP_Number_$_9 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self & other;\n }\n else {\n return self.$__coerced__(\"&\", other);\n }\n \n }, TMP_Number_$_9.$$arity = 1);\n \n Opal.def(self, '$|', TMP_Number_$_10 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self | other;\n }\n else {\n return self.$__coerced__(\"|\", other);\n }\n \n }, TMP_Number_$_10.$$arity = 1);\n \n Opal.def(self, '$^', TMP_Number_$_11 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self ^ other;\n }\n else {\n return self.$__coerced__(\"^\", other);\n }\n \n }, TMP_Number_$_11.$$arity = 1);\n \n Opal.def(self, '$<', TMP_Number_$lt_12 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self < other;\n }\n else {\n return self.$__coerced__(\"<\", other);\n }\n \n }, TMP_Number_$lt_12.$$arity = 1);\n \n Opal.def(self, '$<=', TMP_Number_$lt$eq_13 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self <= other;\n }\n else {\n return self.$__coerced__(\"<=\", other);\n }\n \n }, TMP_Number_$lt$eq_13.$$arity = 1);\n \n Opal.def(self, '$>', TMP_Number_$gt_14 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self > other;\n }\n else {\n return self.$__coerced__(\">\", other);\n }\n \n }, TMP_Number_$gt_14.$$arity = 1);\n \n Opal.def(self, '$>=', TMP_Number_$gt$eq_15 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self >= other;\n }\n else {\n return self.$__coerced__(\">=\", other);\n }\n \n }, TMP_Number_$gt$eq_15.$$arity = 1);\n \n var spaceship_operator = function(self, other) {\n if (other.$$is_number) {\n if (isNaN(self) || isNaN(other)) {\n return nil;\n }\n\n if (self > other) {\n return 1;\n } else if (self < other) {\n return -1;\n } else {\n return 0;\n }\n }\n else {\n return self.$__coerced__(\"<=>\", other);\n }\n }\n ;\n \n Opal.def(self, '$<=>', TMP_Number_$lt$eq$gt_16 = function(other) {\n var self = this;\n\n try {\n return spaceship_operator(self, other);\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) {\n try {\n return nil\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }\n }, TMP_Number_$lt$eq$gt_16.$$arity = 1);\n \n Opal.def(self, '$<<', TMP_Number_$lt$lt_17 = function(count) {\n var self = this;\n\n \n count = $$($nesting, 'Opal')['$coerce_to!'](count, $$($nesting, 'Integer'), \"to_int\");\n return count > 0 ? self << count : self >> -count;\n }, TMP_Number_$lt$lt_17.$$arity = 1);\n \n Opal.def(self, '$>>', TMP_Number_$gt$gt_18 = function(count) {\n var self = this;\n\n \n count = $$($nesting, 'Opal')['$coerce_to!'](count, $$($nesting, 'Integer'), \"to_int\");\n return count > 0 ? self >> count : self << -count;\n }, TMP_Number_$gt$gt_18.$$arity = 1);\n \n Opal.def(self, '$[]', TMP_Number_$$_19 = function(bit) {\n var self = this;\n\n \n bit = $$($nesting, 'Opal')['$coerce_to!'](bit, $$($nesting, 'Integer'), \"to_int\");\n \n if (bit < 0) {\n return 0;\n }\n if (bit >= 32) {\n return self < 0 ? 1 : 0;\n }\n return (self >> bit) & 1;\n ;\n }, TMP_Number_$$_19.$$arity = 1);\n \n Opal.def(self, '$+@', TMP_Number_$$_20 = function() {\n var self = this;\n\n return +self;\n }, TMP_Number_$$_20.$$arity = 0);\n \n Opal.def(self, '$-@', TMP_Number_$$_21 = function() {\n var self = this;\n\n return -self;\n }, TMP_Number_$$_21.$$arity = 0);\n \n Opal.def(self, '$~', TMP_Number_$_22 = function() {\n var self = this;\n\n return ~self;\n }, TMP_Number_$_22.$$arity = 0);\n \n Opal.def(self, '$**', TMP_Number_$$_23 = function(other) {\n var $a, $b, self = this;\n\n if ($truthy($$($nesting, 'Integer')['$==='](other))) {\n if ($truthy(($truthy($a = $$($nesting, 'Integer')['$==='](self)['$!']()) ? $a : $rb_gt(other, 0)))) {\n return Math.pow(self, other);\n } else {\n return $$($nesting, 'Rational').$new(self, 1)['$**'](other)\n }\n } else if ($truthy((($a = $rb_lt(self, 0)) ? ($truthy($b = $$($nesting, 'Float')['$==='](other)) ? $b : $$($nesting, 'Rational')['$==='](other)) : $rb_lt(self, 0)))) {\n return $$($nesting, 'Complex').$new(self, 0)['$**'](other.$to_f())\n } else if ($truthy(other.$$is_number != null)) {\n return Math.pow(self, other);\n } else {\n return self.$__coerced__(\"**\", other)\n }\n }, TMP_Number_$$_23.$$arity = 1);\n \n Opal.def(self, '$===', TMP_Number_$eq$eq$eq_24 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self.valueOf() === other.valueOf();\n }\n else if (other['$respond_to?'](\"==\")) {\n return other['$=='](self);\n }\n else {\n return false;\n }\n \n }, TMP_Number_$eq$eq$eq_24.$$arity = 1);\n \n Opal.def(self, '$==', TMP_Number_$eq$eq_25 = function(other) {\n var self = this;\n\n \n if (other.$$is_number) {\n return self.valueOf() === other.valueOf();\n }\n else if (other['$respond_to?'](\"==\")) {\n return other['$=='](self);\n }\n else {\n return false;\n }\n \n }, TMP_Number_$eq$eq_25.$$arity = 1);\n \n Opal.def(self, '$abs', TMP_Number_abs_26 = function $$abs() {\n var self = this;\n\n return Math.abs(self);\n }, TMP_Number_abs_26.$$arity = 0);\n \n Opal.def(self, '$abs2', TMP_Number_abs2_27 = function $$abs2() {\n var self = this;\n\n return Math.abs(self * self);\n }, TMP_Number_abs2_27.$$arity = 0);\n \n Opal.def(self, '$allbits?', TMP_Number_allbits$q_28 = function(mask) {\n var self = this;\n\n \n mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), \"to_int\");\n return (self & mask) == mask;;\n }, TMP_Number_allbits$q_28.$$arity = 1);\n \n Opal.def(self, '$anybits?', TMP_Number_anybits$q_29 = function(mask) {\n var self = this;\n\n \n mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), \"to_int\");\n return (self & mask) !== 0;;\n }, TMP_Number_anybits$q_29.$$arity = 1);\n \n Opal.def(self, '$angle', TMP_Number_angle_30 = function $$angle() {\n var self = this;\n\n \n if ($truthy(self['$nan?']())) {\n return self};\n \n if (self == 0) {\n if (1 / self > 0) {\n return 0;\n }\n else {\n return Math.PI;\n }\n }\n else if (self < 0) {\n return Math.PI;\n }\n else {\n return 0;\n }\n ;\n }, TMP_Number_angle_30.$$arity = 0);\n Opal.alias(self, \"arg\", \"angle\");\n Opal.alias(self, \"phase\", \"angle\");\n \n Opal.def(self, '$bit_length', TMP_Number_bit_length_31 = function $$bit_length() {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Integer')['$==='](self))) {\n } else {\n self.$raise($$($nesting, 'NoMethodError').$new(\"\" + \"undefined method `bit_length` for \" + (self) + \":Float\", \"bit_length\"))\n };\n \n if (self === 0 || self === -1) {\n return 0;\n }\n\n var result = 0,\n value = self < 0 ? ~self : self;\n\n while (value != 0) {\n result += 1;\n value >>>= 1;\n }\n\n return result;\n ;\n }, TMP_Number_bit_length_31.$$arity = 0);\n \n Opal.def(self, '$ceil', TMP_Number_ceil_32 = function $$ceil(ndigits) {\n var self = this;\n\n if (ndigits == null) {\n ndigits = 0;\n }\n \n var f = self.$to_f();\n\n if (f % 1 === 0 && ndigits >= 0) {\n return f;\n }\n\n var factor = Math.pow(10, ndigits),\n result = Math.ceil(f * factor) / factor;\n\n if (f % 1 === 0) {\n result = Math.round(result);\n }\n\n return result;\n \n }, TMP_Number_ceil_32.$$arity = -1);\n \n Opal.def(self, '$chr', TMP_Number_chr_33 = function $$chr(encoding) {\n var self = this;\n\n return String.fromCharCode(self);\n }, TMP_Number_chr_33.$$arity = -1);\n \n Opal.def(self, '$denominator', TMP_Number_denominator_34 = function $$denominator() {\n var $a, self = this, $iter = TMP_Number_denominator_34.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Number_denominator_34.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) {\n return 1\n } else {\n return $send(self, Opal.find_super_dispatcher(self, 'denominator', TMP_Number_denominator_34, false), $zuper, $iter)\n }\n }, TMP_Number_denominator_34.$$arity = 0);\n \n Opal.def(self, '$downto', TMP_Number_downto_35 = function $$downto(stop) {\n var TMP_36, self = this, $iter = TMP_Number_downto_35.$$p, block = $iter || nil;\n\n if ($iter) TMP_Number_downto_35.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"downto\", stop], (TMP_36 = function(){var self = TMP_36.$$s || this;\n\n \n if ($truthy($$($nesting, 'Numeric')['$==='](stop))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (stop.$class()) + \" failed\")\n };\n if ($truthy($rb_gt(stop, self))) {\n return 0\n } else {\n return $rb_plus($rb_minus(self, stop), 1)\n };}, TMP_36.$$s = self, TMP_36.$$arity = 0, TMP_36))\n };\n \n if (!stop.$$is_number) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (stop.$class()) + \" failed\")\n }\n for (var i = self; i >= stop; i--) {\n block(i);\n }\n ;\n return self;\n }, TMP_Number_downto_35.$$arity = 1);\n Opal.alias(self, \"eql?\", \"==\");\n \n Opal.def(self, '$equal?', TMP_Number_equal$q_37 = function(other) {\n var $a, self = this;\n\n return ($truthy($a = self['$=='](other)) ? $a : isNaN(self) && isNaN(other))\n }, TMP_Number_equal$q_37.$$arity = 1);\n \n Opal.def(self, '$even?', TMP_Number_even$q_38 = function() {\n var self = this;\n\n return self % 2 === 0;\n }, TMP_Number_even$q_38.$$arity = 0);\n \n Opal.def(self, '$floor', TMP_Number_floor_39 = function $$floor(ndigits) {\n var self = this;\n\n if (ndigits == null) {\n ndigits = 0;\n }\n \n var f = self.$to_f();\n\n if (f % 1 === 0 && ndigits >= 0) {\n return f;\n }\n\n var factor = Math.pow(10, ndigits),\n result = Math.floor(f * factor) / factor;\n\n if (f % 1 === 0) {\n result = Math.round(result);\n }\n\n return result;\n \n }, TMP_Number_floor_39.$$arity = -1);\n \n Opal.def(self, '$gcd', TMP_Number_gcd_40 = function $$gcd(other) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Integer')['$==='](other))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"not an integer\")\n };\n \n var min = Math.abs(self),\n max = Math.abs(other);\n\n while (min > 0) {\n var tmp = min;\n\n min = max % min;\n max = tmp;\n }\n\n return max;\n ;\n }, TMP_Number_gcd_40.$$arity = 1);\n \n Opal.def(self, '$gcdlcm', TMP_Number_gcdlcm_41 = function $$gcdlcm(other) {\n var self = this;\n\n return [self.$gcd(), self.$lcm()]\n }, TMP_Number_gcdlcm_41.$$arity = 1);\n \n Opal.def(self, '$integer?', TMP_Number_integer$q_42 = function() {\n var self = this;\n\n return self % 1 === 0;\n }, TMP_Number_integer$q_42.$$arity = 0);\n \n Opal.def(self, '$is_a?', TMP_Number_is_a$q_43 = function(klass) {\n var $a, self = this, $iter = TMP_Number_is_a$q_43.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Number_is_a$q_43.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) {\n return true};\n if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) {\n return true};\n if ($truthy((($a = klass['$==']($$($nesting, 'Float'))) ? $$($nesting, 'Float')['$==='](self) : klass['$==']($$($nesting, 'Float'))))) {\n return true};\n return $send(self, Opal.find_super_dispatcher(self, 'is_a?', TMP_Number_is_a$q_43, false), $zuper, $iter);\n }, TMP_Number_is_a$q_43.$$arity = 1);\n Opal.alias(self, \"kind_of?\", \"is_a?\");\n \n Opal.def(self, '$instance_of?', TMP_Number_instance_of$q_44 = function(klass) {\n var $a, self = this, $iter = TMP_Number_instance_of$q_44.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Number_instance_of$q_44.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) {\n return true};\n if ($truthy((($a = klass['$==']($$($nesting, 'Integer'))) ? $$($nesting, 'Integer')['$==='](self) : klass['$==']($$($nesting, 'Integer'))))) {\n return true};\n if ($truthy((($a = klass['$==']($$($nesting, 'Float'))) ? $$($nesting, 'Float')['$==='](self) : klass['$==']($$($nesting, 'Float'))))) {\n return true};\n return $send(self, Opal.find_super_dispatcher(self, 'instance_of?', TMP_Number_instance_of$q_44, false), $zuper, $iter);\n }, TMP_Number_instance_of$q_44.$$arity = 1);\n \n Opal.def(self, '$lcm', TMP_Number_lcm_45 = function $$lcm(other) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Integer')['$==='](other))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"not an integer\")\n };\n \n if (self == 0 || other == 0) {\n return 0;\n }\n else {\n return Math.abs(self * other / self.$gcd(other));\n }\n ;\n }, TMP_Number_lcm_45.$$arity = 1);\n Opal.alias(self, \"magnitude\", \"abs\");\n Opal.alias(self, \"modulo\", \"%\");\n \n Opal.def(self, '$next', TMP_Number_next_46 = function $$next() {\n var self = this;\n\n return self + 1;\n }, TMP_Number_next_46.$$arity = 0);\n \n Opal.def(self, '$nobits?', TMP_Number_nobits$q_47 = function(mask) {\n var self = this;\n\n \n mask = $$($nesting, 'Opal')['$coerce_to!'](mask, $$($nesting, 'Integer'), \"to_int\");\n return (self & mask) == 0;;\n }, TMP_Number_nobits$q_47.$$arity = 1);\n \n Opal.def(self, '$nonzero?', TMP_Number_nonzero$q_48 = function() {\n var self = this;\n\n return self == 0 ? nil : self;\n }, TMP_Number_nonzero$q_48.$$arity = 0);\n \n Opal.def(self, '$numerator', TMP_Number_numerator_49 = function $$numerator() {\n var $a, self = this, $iter = TMP_Number_numerator_49.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Number_numerator_49.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) {\n return self\n } else {\n return $send(self, Opal.find_super_dispatcher(self, 'numerator', TMP_Number_numerator_49, false), $zuper, $iter)\n }\n }, TMP_Number_numerator_49.$$arity = 0);\n \n Opal.def(self, '$odd?', TMP_Number_odd$q_50 = function() {\n var self = this;\n\n return self % 2 !== 0;\n }, TMP_Number_odd$q_50.$$arity = 0);\n \n Opal.def(self, '$ord', TMP_Number_ord_51 = function $$ord() {\n var self = this;\n\n return self\n }, TMP_Number_ord_51.$$arity = 0);\n \n Opal.def(self, '$pow', TMP_Number_pow_52 = function $$pow(b, m) {\n var self = this;\n\n \n if (self == 0) {\n self.$raise($$($nesting, 'ZeroDivisionError'), \"divided by 0\")\n }\n\n if (m === undefined) {\n return self['$**'](b);\n } else {\n if (!($$($nesting, 'Integer')['$==='](b))) {\n self.$raise($$($nesting, 'TypeError'), \"Integer#pow() 2nd argument not allowed unless a 1st argument is integer\")\n }\n\n if (b < 0) {\n self.$raise($$($nesting, 'TypeError'), \"Integer#pow() 1st argument cannot be negative when 2nd argument specified\")\n }\n\n if (!($$($nesting, 'Integer')['$==='](m))) {\n self.$raise($$($nesting, 'TypeError'), \"Integer#pow() 2nd argument not allowed unless all arguments are integers\")\n }\n\n if (m === 0) {\n self.$raise($$($nesting, 'ZeroDivisionError'), \"divided by 0\")\n }\n\n return self['$**'](b)['$%'](m)\n }\n \n }, TMP_Number_pow_52.$$arity = -2);\n \n Opal.def(self, '$pred', TMP_Number_pred_53 = function $$pred() {\n var self = this;\n\n return self - 1;\n }, TMP_Number_pred_53.$$arity = 0);\n \n Opal.def(self, '$quo', TMP_Number_quo_54 = function $$quo(other) {\n var self = this, $iter = TMP_Number_quo_54.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Number_quo_54.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if ($truthy($$($nesting, 'Integer')['$==='](self))) {\n return $send(self, Opal.find_super_dispatcher(self, 'quo', TMP_Number_quo_54, false), $zuper, $iter)\n } else {\n return $rb_divide(self, other)\n }\n }, TMP_Number_quo_54.$$arity = 1);\n \n Opal.def(self, '$rationalize', TMP_Number_rationalize_55 = function $$rationalize(eps) {\n var $a, $b, self = this, f = nil, n = nil;\n\n \n \n if (arguments.length > 1) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (arguments.length) + \" for 0..1)\");\n }\n ;\n if ($truthy($$($nesting, 'Integer')['$==='](self))) {\n return $$($nesting, 'Rational').$new(self, 1)\n } else if ($truthy(self['$infinite?']())) {\n return self.$raise($$($nesting, 'FloatDomainError'), \"Infinity\")\n } else if ($truthy(self['$nan?']())) {\n return self.$raise($$($nesting, 'FloatDomainError'), \"NaN\")\n } else if ($truthy(eps == null)) {\n \n $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (n = ($a[1] == null ? nil : $a[1])), $b;\n f = $$($nesting, 'Math').$ldexp(f, $$$($$($nesting, 'Float'), 'MANT_DIG')).$to_i();\n n = $rb_minus(n, $$$($$($nesting, 'Float'), 'MANT_DIG'));\n return $$($nesting, 'Rational').$new($rb_times(2, f), (1)['$<<']($rb_minus(1, n))).$rationalize($$($nesting, 'Rational').$new(1, (1)['$<<']($rb_minus(1, n))));\n } else {\n return self.$to_r().$rationalize(eps)\n };\n }, TMP_Number_rationalize_55.$$arity = -1);\n \n Opal.def(self, '$remainder', TMP_Number_remainder_56 = function $$remainder(y) {\n var self = this;\n\n return $rb_minus(self, $rb_times(y, $rb_divide(self, y).$truncate()))\n }, TMP_Number_remainder_56.$$arity = 1);\n \n Opal.def(self, '$round', TMP_Number_round_57 = function $$round(ndigits) {\n var $a, $b, self = this, _ = nil, exp = nil;\n\n if ($truthy($$($nesting, 'Integer')['$==='](self))) {\n \n if ($truthy(ndigits == null)) {\n return self};\n if ($truthy(($truthy($a = $$($nesting, 'Float')['$==='](ndigits)) ? ndigits['$infinite?']() : $a))) {\n self.$raise($$($nesting, 'RangeError'), \"Infinity\")};\n ndigits = $$($nesting, 'Opal')['$coerce_to!'](ndigits, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy($rb_lt(ndigits, $$$($$($nesting, 'Integer'), 'MIN')))) {\n self.$raise($$($nesting, 'RangeError'), \"out of bounds\")};\n if ($truthy(ndigits >= 0)) {\n return self};\n ndigits = ndigits['$-@']();\n \n if (0.415241 * ndigits - 0.125 > self.$size()) {\n return 0;\n }\n\n var f = Math.pow(10, ndigits),\n x = Math.floor((Math.abs(x) + f / 2) / f) * f;\n\n return self < 0 ? -x : x;\n ;\n } else {\n \n if ($truthy(($truthy($a = self['$nan?']()) ? ndigits == null : $a))) {\n self.$raise($$($nesting, 'FloatDomainError'), \"NaN\")};\n ndigits = $$($nesting, 'Opal')['$coerce_to!'](ndigits || 0, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy($rb_le(ndigits, 0))) {\n if ($truthy(self['$nan?']())) {\n self.$raise($$($nesting, 'RangeError'), \"NaN\")\n } else if ($truthy(self['$infinite?']())) {\n self.$raise($$($nesting, 'FloatDomainError'), \"Infinity\")}\n } else if (ndigits['$=='](0)) {\n return Math.round(self)\n } else if ($truthy(($truthy($a = self['$nan?']()) ? $a : self['$infinite?']()))) {\n return self};\n $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (_ = ($a[0] == null ? nil : $a[0])), (exp = ($a[1] == null ? nil : $a[1])), $b;\n if ($truthy($rb_ge(ndigits, $rb_minus($rb_plus($$$($$($nesting, 'Float'), 'DIG'), 2), (function() {if ($truthy($rb_gt(exp, 0))) {\n return $rb_divide(exp, 4)\n } else {\n return $rb_minus($rb_divide(exp, 3), 1)\n }; return nil; })())))) {\n return self};\n if ($truthy($rb_lt(ndigits, (function() {if ($truthy($rb_gt(exp, 0))) {\n return $rb_plus($rb_divide(exp, 3), 1)\n } else {\n return $rb_divide(exp, 4)\n }; return nil; })()['$-@']()))) {\n return 0};\n return Math.round(self * Math.pow(10, ndigits)) / Math.pow(10, ndigits);;\n }\n }, TMP_Number_round_57.$$arity = -1);\n \n Opal.def(self, '$step', TMP_Number_step_58 = function $$step($limit, $step, $kwargs) {\n var TMP_59, self = this, $post_args, to, by, limit, step, $iter = TMP_Number_step_58.$$p, block = $iter || nil, positional_args = nil, keyword_args = nil;\n\n $post_args = Opal.slice.call(arguments, 0, arguments.length);\n $kwargs = Opal.extract_kwargs($post_args);\n if ($kwargs == null || !$kwargs.$$is_hash) {\n if ($kwargs == null) {\n $kwargs = $hash2([], {});\n } else {\n throw Opal.ArgumentError.$new('expected kwargs');\n }\n }\n to = $kwargs.$$smap[\"to\"];\n by = $kwargs.$$smap[\"by\"];\n if (0 < $post_args.length) {\n limit = $post_args.splice(0,1)[0];\n }\n if (0 < $post_args.length) {\n step = $post_args.splice(0,1)[0];\n }\n if ($iter) TMP_Number_step_58.$$p = null;\n \n \n if (limit !== undefined && to !== undefined) {\n self.$raise($$($nesting, 'ArgumentError'), \"to is given twice\")\n }\n\n if (step !== undefined && by !== undefined) {\n self.$raise($$($nesting, 'ArgumentError'), \"step is given twice\")\n }\n\n function validateParameters() {\n if (to !== undefined) {\n limit = to;\n }\n\n if (limit === undefined) {\n limit = nil;\n }\n\n if (step === nil) {\n self.$raise($$($nesting, 'TypeError'), \"step must be numeric\")\n }\n\n if (step === 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"step can't be 0\")\n }\n\n if (by !== undefined) {\n step = by;\n }\n\n if (step === nil || step == null) {\n step = 1;\n }\n\n var sign = step['$<=>'](0);\n\n if (sign === nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"0 can't be coerced into \" + (step.$class()))\n }\n\n if (limit === nil || limit == null) {\n limit = sign > 0 ? $$$($$($nesting, 'Float'), 'INFINITY') : $$$($$($nesting, 'Float'), 'INFINITY')['$-@']();\n }\n\n $$($nesting, 'Opal').$compare(self, limit)\n }\n\n function stepFloatSize() {\n if ((step > 0 && self > limit) || (step < 0 && self < limit)) {\n return 0;\n } else if (step === Infinity || step === -Infinity) {\n return 1;\n } else {\n var abs = Math.abs, floor = Math.floor,\n err = (abs(self) + abs(limit) + abs(limit - self)) / abs(step) * $$$($$($nesting, 'Float'), 'EPSILON');\n\n if (err === Infinity || err === -Infinity) {\n return 0;\n } else {\n if (err > 0.5) {\n err = 0.5;\n }\n\n return floor((limit - self) / step + err) + 1\n }\n }\n }\n\n function stepSize() {\n validateParameters();\n\n if (step === 0) {\n return Infinity;\n }\n\n if (step % 1 !== 0) {\n return stepFloatSize();\n } else if ((step > 0 && self > limit) || (step < 0 && self < limit)) {\n return 0;\n } else {\n var ceil = Math.ceil, abs = Math.abs,\n lhs = abs(self - limit) + 1,\n rhs = abs(step);\n\n return ceil(lhs / rhs);\n }\n }\n ;\n if ((block !== nil)) {\n } else {\n \n positional_args = [];\n keyword_args = $hash2([], {});\n \n if (limit !== undefined) {\n positional_args.push(limit);\n }\n\n if (step !== undefined) {\n positional_args.push(step);\n }\n\n if (to !== undefined) {\n Opal.hash_put(keyword_args, \"to\", to);\n }\n\n if (by !== undefined) {\n Opal.hash_put(keyword_args, \"by\", by);\n }\n\n if (keyword_args['$any?']()) {\n positional_args.push(keyword_args);\n }\n ;\n return $send(self, 'enum_for', [\"step\"].concat(Opal.to_a(positional_args)), (TMP_59 = function(){var self = TMP_59.$$s || this;\n\n return stepSize();}, TMP_59.$$s = self, TMP_59.$$arity = 0, TMP_59));\n };\n \n validateParameters();\n\n if (step === 0) {\n while (true) {\n block(self);\n }\n }\n\n if (self % 1 !== 0 || limit % 1 !== 0 || step % 1 !== 0) {\n var n = stepFloatSize();\n\n if (n > 0) {\n if (step === Infinity || step === -Infinity) {\n block(self);\n } else {\n var i = 0, d;\n\n if (step > 0) {\n while (i < n) {\n d = i * step + self;\n if (limit < d) {\n d = limit;\n }\n block(d);\n i += 1;\n }\n } else {\n while (i < n) {\n d = i * step + self;\n if (limit > d) {\n d = limit;\n }\n block(d);\n i += 1\n }\n }\n }\n }\n } else {\n var value = self;\n\n if (step > 0) {\n while (value <= limit) {\n block(value);\n value += step;\n }\n } else {\n while (value >= limit) {\n block(value);\n value += step\n }\n }\n }\n\n return self;\n ;\n }, TMP_Number_step_58.$$arity = -1);\n Opal.alias(self, \"succ\", \"next\");\n \n Opal.def(self, '$times', TMP_Number_times_60 = function $$times() {\n var TMP_61, self = this, $iter = TMP_Number_times_60.$$p, block = $iter || nil;\n\n if ($iter) TMP_Number_times_60.$$p = null;\n \n if ($truthy(block)) {\n } else {\n return $send(self, 'enum_for', [\"times\"], (TMP_61 = function(){var self = TMP_61.$$s || this;\n\n return self}, TMP_61.$$s = self, TMP_61.$$arity = 0, TMP_61))\n };\n \n for (var i = 0; i < self; i++) {\n block(i);\n }\n ;\n return self;\n }, TMP_Number_times_60.$$arity = 0);\n \n Opal.def(self, '$to_f', TMP_Number_to_f_62 = function $$to_f() {\n var self = this;\n\n return self\n }, TMP_Number_to_f_62.$$arity = 0);\n \n Opal.def(self, '$to_i', TMP_Number_to_i_63 = function $$to_i() {\n var self = this;\n\n return parseInt(self, 10);\n }, TMP_Number_to_i_63.$$arity = 0);\n Opal.alias(self, \"to_int\", \"to_i\");\n \n Opal.def(self, '$to_r', TMP_Number_to_r_64 = function $$to_r() {\n var $a, $b, self = this, f = nil, e = nil;\n\n if ($truthy($$($nesting, 'Integer')['$==='](self))) {\n return $$($nesting, 'Rational').$new(self, 1)\n } else {\n \n $b = $$($nesting, 'Math').$frexp(self), $a = Opal.to_ary($b), (f = ($a[0] == null ? nil : $a[0])), (e = ($a[1] == null ? nil : $a[1])), $b;\n f = $$($nesting, 'Math').$ldexp(f, $$$($$($nesting, 'Float'), 'MANT_DIG')).$to_i();\n e = $rb_minus(e, $$$($$($nesting, 'Float'), 'MANT_DIG'));\n return $rb_times(f, $$$($$($nesting, 'Float'), 'RADIX')['$**'](e)).$to_r();\n }\n }, TMP_Number_to_r_64.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_Number_to_s_65 = function $$to_s(base) {\n var $a, self = this;\n\n if (base == null) {\n base = 10;\n }\n \n base = $$($nesting, 'Opal')['$coerce_to!'](base, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy(($truthy($a = $rb_lt(base, 2)) ? $a : $rb_gt(base, 36)))) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid radix \" + (base))};\n return self.toString(base);;\n }, TMP_Number_to_s_65.$$arity = -1);\n \n Opal.def(self, '$truncate', TMP_Number_truncate_66 = function $$truncate(ndigits) {\n var self = this;\n\n if (ndigits == null) {\n ndigits = 0;\n }\n \n var f = self.$to_f();\n\n if (f % 1 === 0 && ndigits >= 0) {\n return f;\n }\n\n var factor = Math.pow(10, ndigits),\n result = parseInt(f * factor, 10) / factor;\n\n if (f % 1 === 0) {\n result = Math.round(result);\n }\n\n return result;\n \n }, TMP_Number_truncate_66.$$arity = -1);\n Opal.alias(self, \"inspect\", \"to_s\");\n \n Opal.def(self, '$digits', TMP_Number_digits_67 = function $$digits(base) {\n var self = this;\n\n if (base == null) {\n base = 10;\n }\n \n if ($rb_lt(self, 0)) {\n self.$raise($$$($$($nesting, 'Math'), 'DomainError'), \"out of domain\")};\n base = $$($nesting, 'Opal')['$coerce_to!'](base, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy($rb_lt(base, 2))) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid radix \" + (base))};\n \n var value = self, result = [];\n\n while (value !== 0) {\n result.push(value % base);\n value = parseInt(value / base, 10);\n }\n\n return result;\n ;\n }, TMP_Number_digits_67.$$arity = -1);\n \n Opal.def(self, '$divmod', TMP_Number_divmod_68 = function $$divmod(other) {\n var $a, self = this, $iter = TMP_Number_divmod_68.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Number_divmod_68.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if ($truthy(($truthy($a = self['$nan?']()) ? $a : other['$nan?']()))) {\n return self.$raise($$($nesting, 'FloatDomainError'), \"NaN\")\n } else if ($truthy(self['$infinite?']())) {\n return self.$raise($$($nesting, 'FloatDomainError'), \"Infinity\")\n } else {\n return $send(self, Opal.find_super_dispatcher(self, 'divmod', TMP_Number_divmod_68, false), $zuper, $iter)\n }\n }, TMP_Number_divmod_68.$$arity = 1);\n \n Opal.def(self, '$upto', TMP_Number_upto_69 = function $$upto(stop) {\n var TMP_70, self = this, $iter = TMP_Number_upto_69.$$p, block = $iter || nil;\n\n if ($iter) TMP_Number_upto_69.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"upto\", stop], (TMP_70 = function(){var self = TMP_70.$$s || this;\n\n \n if ($truthy($$($nesting, 'Numeric')['$==='](stop))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (stop.$class()) + \" failed\")\n };\n if ($truthy($rb_lt(stop, self))) {\n return 0\n } else {\n return $rb_plus($rb_minus(stop, self), 1)\n };}, TMP_70.$$s = self, TMP_70.$$arity = 0, TMP_70))\n };\n \n if (!stop.$$is_number) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"comparison of \" + (self.$class()) + \" with \" + (stop.$class()) + \" failed\")\n }\n for (var i = self; i <= stop; i++) {\n block(i);\n }\n ;\n return self;\n }, TMP_Number_upto_69.$$arity = 1);\n \n Opal.def(self, '$zero?', TMP_Number_zero$q_71 = function() {\n var self = this;\n\n return self == 0;\n }, TMP_Number_zero$q_71.$$arity = 0);\n \n Opal.def(self, '$size', TMP_Number_size_72 = function $$size() {\n var self = this;\n\n return 4\n }, TMP_Number_size_72.$$arity = 0);\n \n Opal.def(self, '$nan?', TMP_Number_nan$q_73 = function() {\n var self = this;\n\n return isNaN(self);\n }, TMP_Number_nan$q_73.$$arity = 0);\n \n Opal.def(self, '$finite?', TMP_Number_finite$q_74 = function() {\n var self = this;\n\n return self != Infinity && self != -Infinity && !isNaN(self);\n }, TMP_Number_finite$q_74.$$arity = 0);\n \n Opal.def(self, '$infinite?', TMP_Number_infinite$q_75 = function() {\n var self = this;\n\n \n if (self == Infinity) {\n return +1;\n }\n else if (self == -Infinity) {\n return -1;\n }\n else {\n return nil;\n }\n \n }, TMP_Number_infinite$q_75.$$arity = 0);\n \n Opal.def(self, '$positive?', TMP_Number_positive$q_76 = function() {\n var self = this;\n\n return self != 0 && (self == Infinity || 1 / self > 0);\n }, TMP_Number_positive$q_76.$$arity = 0);\n return (Opal.def(self, '$negative?', TMP_Number_negative$q_77 = function() {\n var self = this;\n\n return self == -Infinity || 1 / self < 0;\n }, TMP_Number_negative$q_77.$$arity = 0), nil) && 'negative?';\n })($nesting[0], $$($nesting, 'Numeric'), $nesting);\n Opal.const_set($nesting[0], 'Fixnum', $$($nesting, 'Number'));\n (function($base, $super, $parent_nesting) {\n function $Integer(){};\n var self = $Integer = $klass($base, $super, 'Integer', $Integer);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n self.$$is_number_class = true;\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_78, TMP_$eq$eq$eq_79, TMP_sqrt_80;\n\n \n \n Opal.def(self, '$allocate', TMP_allocate_78 = function $$allocate() {\n var self = this;\n\n return self.$raise($$($nesting, 'TypeError'), \"\" + \"allocator undefined for \" + (self.$name()))\n }, TMP_allocate_78.$$arity = 0);\n \n Opal.udef(self, '$' + \"new\");;\n \n Opal.def(self, '$===', TMP_$eq$eq$eq_79 = function(other) {\n var self = this;\n\n \n if (!other.$$is_number) {\n return false;\n }\n\n return (other % 1) === 0;\n \n }, TMP_$eq$eq$eq_79.$$arity = 1);\n return (Opal.def(self, '$sqrt', TMP_sqrt_80 = function $$sqrt(n) {\n var self = this;\n\n \n n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n \n if (n < 0) {\n self.$raise($$$($$($nesting, 'Math'), 'DomainError'), \"Numerical argument is out of domain - \\\"isqrt\\\"\")\n }\n\n return parseInt(Math.sqrt(n), 10);\n ;\n }, TMP_sqrt_80.$$arity = 1), nil) && 'sqrt';\n })(Opal.get_singleton_class(self), $nesting);\n Opal.const_set($nesting[0], 'MAX', Math.pow(2, 30) - 1);\n return Opal.const_set($nesting[0], 'MIN', -Math.pow(2, 30));\n })($nesting[0], $$($nesting, 'Numeric'), $nesting);\n return (function($base, $super, $parent_nesting) {\n function $Float(){};\n var self = $Float = $klass($base, $super, 'Float', $Float);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n self.$$is_number_class = true;\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_allocate_81, TMP_$eq$eq$eq_82;\n\n \n \n Opal.def(self, '$allocate', TMP_allocate_81 = function $$allocate() {\n var self = this;\n\n return self.$raise($$($nesting, 'TypeError'), \"\" + \"allocator undefined for \" + (self.$name()))\n }, TMP_allocate_81.$$arity = 0);\n \n Opal.udef(self, '$' + \"new\");;\n return (Opal.def(self, '$===', TMP_$eq$eq$eq_82 = function(other) {\n var self = this;\n\n return !!other.$$is_number;\n }, TMP_$eq$eq$eq_82.$$arity = 1), nil) && '===';\n })(Opal.get_singleton_class(self), $nesting);\n Opal.const_set($nesting[0], 'INFINITY', Infinity);\n Opal.const_set($nesting[0], 'MAX', Number.MAX_VALUE);\n Opal.const_set($nesting[0], 'MIN', Number.MIN_VALUE);\n Opal.const_set($nesting[0], 'NAN', NaN);\n Opal.const_set($nesting[0], 'DIG', 15);\n Opal.const_set($nesting[0], 'MANT_DIG', 53);\n Opal.const_set($nesting[0], 'RADIX', 2);\n return Opal.const_set($nesting[0], 'EPSILON', Number.EPSILON || 2.2204460492503130808472633361816E-16);\n })($nesting[0], $$($nesting, 'Numeric'), $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/range\"] = function(Opal) {\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send;\n\n Opal.add_stubs(['$require', '$include', '$attr_reader', '$raise', '$<=>', '$include?', '$<=', '$<', '$enum_for', '$upto', '$to_proc', '$respond_to?', '$class', '$succ', '$!', '$==', '$===', '$exclude_end?', '$eql?', '$begin', '$end', '$last', '$to_a', '$>', '$-', '$abs', '$to_i', '$coerce_to!', '$ceil', '$/', '$size', '$loop', '$+', '$*', '$>=', '$each_with_index', '$%', '$bsearch', '$inspect', '$[]', '$hash']);\n \n self.$require(\"corelib/enumerable\");\n return (function($base, $super, $parent_nesting) {\n function $Range(){};\n var self = $Range = $klass($base, $super, 'Range', $Range);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Range_initialize_1, TMP_Range_$eq$eq_2, TMP_Range_$eq$eq$eq_3, TMP_Range_cover$q_4, TMP_Range_each_5, TMP_Range_eql$q_6, TMP_Range_exclude_end$q_7, TMP_Range_first_8, TMP_Range_last_9, TMP_Range_max_10, TMP_Range_min_11, TMP_Range_size_12, TMP_Range_step_13, TMP_Range_bsearch_17, TMP_Range_to_s_18, TMP_Range_inspect_19, TMP_Range_marshal_load_20, TMP_Range_hash_21;\n\n def.begin = def.end = def.excl = nil;\n \n self.$include($$($nesting, 'Enumerable'));\n def.$$is_range = true;\n self.$attr_reader(\"begin\", \"end\");\n \n Opal.def(self, '$initialize', TMP_Range_initialize_1 = function $$initialize(first, last, exclude) {\n var self = this;\n\n if (exclude == null) {\n exclude = false;\n }\n \n if ($truthy(self.begin)) {\n self.$raise($$($nesting, 'NameError'), \"'initialize' called twice\")};\n if ($truthy(first['$<=>'](last))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"bad value for range\")\n };\n self.begin = first;\n self.end = last;\n return (self.excl = exclude);\n }, TMP_Range_initialize_1.$$arity = -3);\n \n Opal.def(self, '$==', TMP_Range_$eq$eq_2 = function(other) {\n var self = this;\n\n \n if (!other.$$is_range) {\n return false;\n }\n\n return self.excl === other.excl &&\n self.begin == other.begin &&\n self.end == other.end;\n \n }, TMP_Range_$eq$eq_2.$$arity = 1);\n \n Opal.def(self, '$===', TMP_Range_$eq$eq$eq_3 = function(value) {\n var self = this;\n\n return self['$include?'](value)\n }, TMP_Range_$eq$eq$eq_3.$$arity = 1);\n \n Opal.def(self, '$cover?', TMP_Range_cover$q_4 = function(value) {\n var $a, self = this, beg_cmp = nil, end_cmp = nil;\n\n \n beg_cmp = self.begin['$<=>'](value);\n if ($truthy(($truthy($a = beg_cmp) ? $rb_le(beg_cmp, 0) : $a))) {\n } else {\n return false\n };\n end_cmp = value['$<=>'](self.end);\n if ($truthy(self.excl)) {\n return ($truthy($a = end_cmp) ? $rb_lt(end_cmp, 0) : $a)\n } else {\n return ($truthy($a = end_cmp) ? $rb_le(end_cmp, 0) : $a)\n };\n }, TMP_Range_cover$q_4.$$arity = 1);\n \n Opal.def(self, '$each', TMP_Range_each_5 = function $$each() {\n var $a, self = this, $iter = TMP_Range_each_5.$$p, block = $iter || nil, current = nil, last = nil;\n\n if ($iter) TMP_Range_each_5.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"each\")\n };\n \n var i, limit;\n\n if (self.begin.$$is_number && self.end.$$is_number) {\n if (self.begin % 1 !== 0 || self.end % 1 !== 0) {\n self.$raise($$($nesting, 'TypeError'), \"can't iterate from Float\")\n }\n\n for (i = self.begin, limit = self.end + (function() {if ($truthy(self.excl)) {\n return 0\n } else {\n return 1\n }; return nil; })(); i < limit; i++) {\n block(i);\n }\n\n return self;\n }\n\n if (self.begin.$$is_string && self.end.$$is_string) {\n $send(self.begin, 'upto', [self.end, self.excl], block.$to_proc())\n return self;\n }\n ;\n current = self.begin;\n last = self.end;\n if ($truthy(current['$respond_to?'](\"succ\"))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"can't iterate from \" + (current.$class()))\n };\n while ($truthy($rb_lt(current['$<=>'](last), 0))) {\n \n Opal.yield1(block, current);\n current = current.$succ();\n };\n if ($truthy(($truthy($a = self.excl['$!']()) ? current['$=='](last) : $a))) {\n Opal.yield1(block, current)};\n return self;\n }, TMP_Range_each_5.$$arity = 0);\n \n Opal.def(self, '$eql?', TMP_Range_eql$q_6 = function(other) {\n var $a, $b, self = this;\n\n \n if ($truthy($$($nesting, 'Range')['$==='](other))) {\n } else {\n return false\n };\n return ($truthy($a = ($truthy($b = self.excl['$==='](other['$exclude_end?']())) ? self.begin['$eql?'](other.$begin()) : $b)) ? self.end['$eql?'](other.$end()) : $a);\n }, TMP_Range_eql$q_6.$$arity = 1);\n \n Opal.def(self, '$exclude_end?', TMP_Range_exclude_end$q_7 = function() {\n var self = this;\n\n return self.excl\n }, TMP_Range_exclude_end$q_7.$$arity = 0);\n \n Opal.def(self, '$first', TMP_Range_first_8 = function $$first(n) {\n var self = this, $iter = TMP_Range_first_8.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Range_first_8.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n if ($truthy(n == null)) {\n return self.begin};\n return $send(self, Opal.find_super_dispatcher(self, 'first', TMP_Range_first_8, false), $zuper, $iter);\n }, TMP_Range_first_8.$$arity = -1);\n Opal.alias(self, \"include?\", \"cover?\");\n \n Opal.def(self, '$last', TMP_Range_last_9 = function $$last(n) {\n var self = this;\n\n \n if ($truthy(n == null)) {\n return self.end};\n return self.$to_a().$last(n);\n }, TMP_Range_last_9.$$arity = -1);\n \n Opal.def(self, '$max', TMP_Range_max_10 = function $$max() {\n var $a, self = this, $iter = TMP_Range_max_10.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Range_max_10.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if (($yield !== nil)) {\n return $send(self, Opal.find_super_dispatcher(self, 'max', TMP_Range_max_10, false), $zuper, $iter)\n } else if ($truthy($rb_gt(self.begin, self.end))) {\n return nil\n } else if ($truthy(($truthy($a = self.excl) ? self.begin['$=='](self.end) : $a))) {\n return nil\n } else {\n return self.excl ? self.end - 1 : self.end\n }\n }, TMP_Range_max_10.$$arity = 0);\n Opal.alias(self, \"member?\", \"cover?\");\n \n Opal.def(self, '$min', TMP_Range_min_11 = function $$min() {\n var $a, self = this, $iter = TMP_Range_min_11.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Range_min_11.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if (($yield !== nil)) {\n return $send(self, Opal.find_super_dispatcher(self, 'min', TMP_Range_min_11, false), $zuper, $iter)\n } else if ($truthy($rb_gt(self.begin, self.end))) {\n return nil\n } else if ($truthy(($truthy($a = self.excl) ? self.begin['$=='](self.end) : $a))) {\n return nil\n } else {\n return self.begin\n }\n }, TMP_Range_min_11.$$arity = 0);\n \n Opal.def(self, '$size', TMP_Range_size_12 = function $$size() {\n var $a, self = this, range_begin = nil, range_end = nil, infinity = nil;\n\n \n range_begin = self.begin;\n range_end = self.end;\n if ($truthy(self.excl)) {\n range_end = $rb_minus(range_end, 1)};\n if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](range_begin)) ? $$($nesting, 'Numeric')['$==='](range_end) : $a))) {\n } else {\n return nil\n };\n if ($truthy($rb_lt(range_end, range_begin))) {\n return 0};\n infinity = $$$($$($nesting, 'Float'), 'INFINITY');\n if ($truthy([range_begin.$abs(), range_end.$abs()]['$include?'](infinity))) {\n return infinity};\n return (Math.abs(range_end - range_begin) + 1).$to_i();\n }, TMP_Range_size_12.$$arity = 0);\n \n Opal.def(self, '$step', TMP_Range_step_13 = function $$step(n) {\n var TMP_14, TMP_15, TMP_16, self = this, $iter = TMP_Range_step_13.$$p, $yield = $iter || nil, i = nil;\n\n if (n == null) {\n n = 1;\n }\n if ($iter) TMP_Range_step_13.$$p = null;\n \n \n function coerceStepSize() {\n if (!n.$$is_number) {\n n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\")\n }\n\n if (n < 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"step can't be negative\")\n } else if (n === 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"step can't be 0\")\n }\n }\n\n function enumeratorSize() {\n if (!self.begin['$respond_to?'](\"succ\")) {\n return nil;\n }\n\n if (self.begin.$$is_string && self.end.$$is_string) {\n return nil;\n }\n\n if (n % 1 === 0) {\n return $rb_divide(self.$size(), n).$ceil();\n } else {\n // n is a float\n var begin = self.begin, end = self.end,\n abs = Math.abs, floor = Math.floor,\n err = (abs(begin) + abs(end) + abs(end - begin)) / abs(n) * $$$($$($nesting, 'Float'), 'EPSILON'),\n size;\n\n if (err > 0.5) {\n err = 0.5;\n }\n\n if (self.excl) {\n size = floor((end - begin) / n - err);\n if (size * n + begin < end) {\n size++;\n }\n } else {\n size = floor((end - begin) / n + err) + 1\n }\n\n return size;\n }\n }\n ;\n if (($yield !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"step\", n], (TMP_14 = function(){var self = TMP_14.$$s || this;\n\n \n coerceStepSize();\n return enumeratorSize();\n }, TMP_14.$$s = self, TMP_14.$$arity = 0, TMP_14))\n };\n coerceStepSize();\n if ($truthy(self.begin.$$is_number && self.end.$$is_number)) {\n \n i = 0;\n (function(){var $brk = Opal.new_brk(); try {return $send(self, 'loop', [], (TMP_15 = function(){var self = TMP_15.$$s || this, current = nil;\n if (self.begin == null) self.begin = nil;\n if (self.excl == null) self.excl = nil;\n if (self.end == null) self.end = nil;\n\n \n current = $rb_plus(self.begin, $rb_times(i, n));\n if ($truthy(self.excl)) {\n if ($truthy($rb_ge(current, self.end))) {\n \n Opal.brk(nil, $brk)}\n } else if ($truthy($rb_gt(current, self.end))) {\n \n Opal.brk(nil, $brk)};\n Opal.yield1($yield, current);\n return (i = $rb_plus(i, 1));}, TMP_15.$$s = self, TMP_15.$$brk = $brk, TMP_15.$$arity = 0, TMP_15))\n } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();\n } else {\n \n \n if (self.begin.$$is_string && self.end.$$is_string && n % 1 !== 0) {\n self.$raise($$($nesting, 'TypeError'), \"no implicit conversion to float from string\")\n }\n ;\n $send(self, 'each_with_index', [], (TMP_16 = function(value, idx){var self = TMP_16.$$s || this;\nif (value == null) value = nil;if (idx == null) idx = nil;\n if (idx['$%'](n)['$=='](0)) {\n return Opal.yield1($yield, value);\n } else {\n return nil\n }}, TMP_16.$$s = self, TMP_16.$$arity = 2, TMP_16));\n };\n return self;\n }, TMP_Range_step_13.$$arity = -1);\n \n Opal.def(self, '$bsearch', TMP_Range_bsearch_17 = function $$bsearch() {\n var self = this, $iter = TMP_Range_bsearch_17.$$p, block = $iter || nil;\n\n if ($iter) TMP_Range_bsearch_17.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"bsearch\")\n };\n if ($truthy(self.begin.$$is_number && self.end.$$is_number)) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"can't do binary search for \" + (self.begin.$class()))\n };\n return $send(self.$to_a(), 'bsearch', [], block.$to_proc());\n }, TMP_Range_bsearch_17.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_Range_to_s_18 = function $$to_s() {\n var self = this;\n\n return \"\" + (self.begin) + ((function() {if ($truthy(self.excl)) {\n return \"...\"\n } else {\n return \"..\"\n }; return nil; })()) + (self.end)\n }, TMP_Range_to_s_18.$$arity = 0);\n \n Opal.def(self, '$inspect', TMP_Range_inspect_19 = function $$inspect() {\n var self = this;\n\n return \"\" + (self.begin.$inspect()) + ((function() {if ($truthy(self.excl)) {\n return \"...\"\n } else {\n return \"..\"\n }; return nil; })()) + (self.end.$inspect())\n }, TMP_Range_inspect_19.$$arity = 0);\n \n Opal.def(self, '$marshal_load', TMP_Range_marshal_load_20 = function $$marshal_load(args) {\n var self = this;\n\n \n self.begin = args['$[]'](\"begin\");\n self.end = args['$[]'](\"end\");\n return (self.excl = args['$[]'](\"excl\"));\n }, TMP_Range_marshal_load_20.$$arity = 1);\n return (Opal.def(self, '$hash', TMP_Range_hash_21 = function $$hash() {\n var self = this;\n\n return [self.begin, self.end, self.excl].$hash()\n }, TMP_Range_hash_21.$$arity = 0), nil) && 'hash';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/proc\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$raise', '$coerce_to!']);\n return (function($base, $super, $parent_nesting) {\n function $Proc(){};\n var self = $Proc = $klass($base, $super, 'Proc', $Proc);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Proc_new_1, TMP_Proc_call_2, TMP_Proc_to_proc_3, TMP_Proc_lambda$q_4, TMP_Proc_arity_5, TMP_Proc_source_location_6, TMP_Proc_binding_7, TMP_Proc_parameters_8, TMP_Proc_curry_9, TMP_Proc_dup_10;\n\n \n def.$$is_proc = true;\n def.$$is_lambda = false;\n Opal.defs(self, '$new', TMP_Proc_new_1 = function() {\n var self = this, $iter = TMP_Proc_new_1.$$p, block = $iter || nil;\n\n if ($iter) TMP_Proc_new_1.$$p = null;\n \n if ($truthy(block)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"tried to create a Proc object without a block\")\n };\n return block;\n }, TMP_Proc_new_1.$$arity = 0);\n \n Opal.def(self, '$call', TMP_Proc_call_2 = function $$call($a_rest) {\n var self = this, args, $iter = TMP_Proc_call_2.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Proc_call_2.$$p = null;\n \n if (block !== nil) {\n self.$$p = block;\n }\n\n var result, $brk = self.$$brk;\n\n if ($brk) {\n try {\n if (self.$$is_lambda) {\n result = self.apply(null, args);\n }\n else {\n result = Opal.yieldX(self, args);\n }\n } catch (err) {\n if (err === $brk) {\n return $brk.$v\n }\n else {\n throw err\n }\n }\n }\n else {\n if (self.$$is_lambda) {\n result = self.apply(null, args);\n }\n else {\n result = Opal.yieldX(self, args);\n }\n }\n\n return result;\n \n }, TMP_Proc_call_2.$$arity = -1);\n Opal.alias(self, \"[]\", \"call\");\n Opal.alias(self, \"===\", \"call\");\n Opal.alias(self, \"yield\", \"call\");\n \n Opal.def(self, '$to_proc', TMP_Proc_to_proc_3 = function $$to_proc() {\n var self = this;\n\n return self\n }, TMP_Proc_to_proc_3.$$arity = 0);\n \n Opal.def(self, '$lambda?', TMP_Proc_lambda$q_4 = function() {\n var self = this;\n\n return !!self.$$is_lambda;\n }, TMP_Proc_lambda$q_4.$$arity = 0);\n \n Opal.def(self, '$arity', TMP_Proc_arity_5 = function $$arity() {\n var self = this;\n\n \n if (self.$$is_curried) {\n return -1;\n } else {\n return self.$$arity;\n }\n \n }, TMP_Proc_arity_5.$$arity = 0);\n \n Opal.def(self, '$source_location', TMP_Proc_source_location_6 = function $$source_location() {\n var self = this;\n\n \n if (self.$$is_curried) { return nil; };\n return nil;\n }, TMP_Proc_source_location_6.$$arity = 0);\n \n Opal.def(self, '$binding', TMP_Proc_binding_7 = function $$binding() {\n var self = this;\n\n \n if (self.$$is_curried) { self.$raise($$($nesting, 'ArgumentError'), \"Can't create Binding\") };\n return nil;\n }, TMP_Proc_binding_7.$$arity = 0);\n \n Opal.def(self, '$parameters', TMP_Proc_parameters_8 = function $$parameters() {\n var self = this;\n\n \n if (self.$$is_curried) {\n return [[\"rest\"]];\n } else if (self.$$parameters) {\n if (self.$$is_lambda) {\n return self.$$parameters;\n } else {\n var result = [], i, length;\n\n for (i = 0, length = self.$$parameters.length; i < length; i++) {\n var parameter = self.$$parameters[i];\n\n if (parameter[0] === 'req') {\n // required arguments always have name\n parameter = ['opt', parameter[1]];\n }\n\n result.push(parameter);\n }\n\n return result;\n }\n } else {\n return [];\n }\n \n }, TMP_Proc_parameters_8.$$arity = 0);\n \n Opal.def(self, '$curry', TMP_Proc_curry_9 = function $$curry(arity) {\n var self = this;\n\n \n if (arity === undefined) {\n arity = self.length;\n }\n else {\n arity = $$($nesting, 'Opal')['$coerce_to!'](arity, $$($nesting, 'Integer'), \"to_int\");\n if (self.$$is_lambda && arity !== self.length) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (arity) + \" for \" + (self.length) + \")\")\n }\n }\n\n function curried () {\n var args = $slice.call(arguments),\n length = args.length,\n result;\n\n if (length > arity && self.$$is_lambda && !self.$$is_curried) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (length) + \" for \" + (arity) + \")\")\n }\n\n if (length >= arity) {\n return self.$call.apply(self, args);\n }\n\n result = function () {\n return curried.apply(null,\n args.concat($slice.call(arguments)));\n }\n result.$$is_lambda = self.$$is_lambda;\n result.$$is_curried = true;\n\n return result;\n };\n\n curried.$$is_lambda = self.$$is_lambda;\n curried.$$is_curried = true;\n return curried;\n \n }, TMP_Proc_curry_9.$$arity = -1);\n \n Opal.def(self, '$dup', TMP_Proc_dup_10 = function $$dup() {\n var self = this;\n\n \n var original_proc = self.$$original_proc || self,\n proc = function () {\n return original_proc.apply(this, arguments);\n };\n\n for (var prop in self) {\n if (self.hasOwnProperty(prop)) {\n proc[prop] = self[prop];\n }\n }\n\n return proc;\n \n }, TMP_Proc_dup_10.$$arity = 0);\n return Opal.alias(self, \"clone\", \"dup\");\n })($nesting[0], Function, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/method\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$attr_reader', '$arity', '$new', '$class', '$join', '$source_location', '$raise']);\n \n (function($base, $super, $parent_nesting) {\n function $Method(){};\n var self = $Method = $klass($base, $super, 'Method', $Method);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Method_initialize_1, TMP_Method_arity_2, TMP_Method_parameters_3, TMP_Method_source_location_4, TMP_Method_comments_5, TMP_Method_call_6, TMP_Method_unbind_7, TMP_Method_to_proc_8, TMP_Method_inspect_9;\n\n def.method = def.receiver = def.owner = def.name = nil;\n \n self.$attr_reader(\"owner\", \"receiver\", \"name\");\n \n Opal.def(self, '$initialize', TMP_Method_initialize_1 = function $$initialize(receiver, owner, method, name) {\n var self = this;\n\n \n self.receiver = receiver;\n self.owner = owner;\n self.name = name;\n return (self.method = method);\n }, TMP_Method_initialize_1.$$arity = 4);\n \n Opal.def(self, '$arity', TMP_Method_arity_2 = function $$arity() {\n var self = this;\n\n return self.method.$arity()\n }, TMP_Method_arity_2.$$arity = 0);\n \n Opal.def(self, '$parameters', TMP_Method_parameters_3 = function $$parameters() {\n var self = this;\n\n return self.method.$$parameters\n }, TMP_Method_parameters_3.$$arity = 0);\n \n Opal.def(self, '$source_location', TMP_Method_source_location_4 = function $$source_location() {\n var $a, self = this;\n\n return ($truthy($a = self.method.$$source_location) ? $a : [\"(eval)\", 0])\n }, TMP_Method_source_location_4.$$arity = 0);\n \n Opal.def(self, '$comments', TMP_Method_comments_5 = function $$comments() {\n var $a, self = this;\n\n return ($truthy($a = self.method.$$comments) ? $a : [])\n }, TMP_Method_comments_5.$$arity = 0);\n \n Opal.def(self, '$call', TMP_Method_call_6 = function $$call($a_rest) {\n var self = this, args, $iter = TMP_Method_call_6.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Method_call_6.$$p = null;\n \n self.method.$$p = block;\n\n return self.method.apply(self.receiver, args);\n \n }, TMP_Method_call_6.$$arity = -1);\n Opal.alias(self, \"[]\", \"call\");\n \n Opal.def(self, '$unbind', TMP_Method_unbind_7 = function $$unbind() {\n var self = this;\n\n return $$($nesting, 'UnboundMethod').$new(self.receiver.$class(), self.owner, self.method, self.name)\n }, TMP_Method_unbind_7.$$arity = 0);\n \n Opal.def(self, '$to_proc', TMP_Method_to_proc_8 = function $$to_proc() {\n var self = this;\n\n \n var proc = self.$call.bind(self);\n proc.$$unbound = self.method;\n proc.$$is_lambda = true;\n return proc;\n \n }, TMP_Method_to_proc_8.$$arity = 0);\n return (Opal.def(self, '$inspect', TMP_Method_inspect_9 = function $$inspect() {\n var self = this;\n\n return \"\" + \"#<\" + (self.$class()) + \": \" + (self.receiver.$class()) + \"#\" + (self.name) + \" (defined in \" + (self.owner) + \" in \" + (self.$source_location().$join(\":\")) + \")>\"\n }, TMP_Method_inspect_9.$$arity = 0), nil) && 'inspect';\n })($nesting[0], null, $nesting);\n return (function($base, $super, $parent_nesting) {\n function $UnboundMethod(){};\n var self = $UnboundMethod = $klass($base, $super, 'UnboundMethod', $UnboundMethod);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_UnboundMethod_initialize_10, TMP_UnboundMethod_arity_11, TMP_UnboundMethod_parameters_12, TMP_UnboundMethod_source_location_13, TMP_UnboundMethod_comments_14, TMP_UnboundMethod_bind_15, TMP_UnboundMethod_inspect_16;\n\n def.method = def.owner = def.name = def.source = nil;\n \n self.$attr_reader(\"source\", \"owner\", \"name\");\n \n Opal.def(self, '$initialize', TMP_UnboundMethod_initialize_10 = function $$initialize(source, owner, method, name) {\n var self = this;\n\n \n self.source = source;\n self.owner = owner;\n self.method = method;\n return (self.name = name);\n }, TMP_UnboundMethod_initialize_10.$$arity = 4);\n \n Opal.def(self, '$arity', TMP_UnboundMethod_arity_11 = function $$arity() {\n var self = this;\n\n return self.method.$arity()\n }, TMP_UnboundMethod_arity_11.$$arity = 0);\n \n Opal.def(self, '$parameters', TMP_UnboundMethod_parameters_12 = function $$parameters() {\n var self = this;\n\n return self.method.$$parameters\n }, TMP_UnboundMethod_parameters_12.$$arity = 0);\n \n Opal.def(self, '$source_location', TMP_UnboundMethod_source_location_13 = function $$source_location() {\n var $a, self = this;\n\n return ($truthy($a = self.method.$$source_location) ? $a : [\"(eval)\", 0])\n }, TMP_UnboundMethod_source_location_13.$$arity = 0);\n \n Opal.def(self, '$comments', TMP_UnboundMethod_comments_14 = function $$comments() {\n var $a, self = this;\n\n return ($truthy($a = self.method.$$comments) ? $a : [])\n }, TMP_UnboundMethod_comments_14.$$arity = 0);\n \n Opal.def(self, '$bind', TMP_UnboundMethod_bind_15 = function $$bind(object) {\n var self = this;\n\n \n if (self.owner.$$is_module || Opal.is_a(object, self.owner)) {\n return $$($nesting, 'Method').$new(object, self.owner, self.method, self.name);\n }\n else {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"can't bind singleton method to a different class (expected \" + (object) + \".kind_of?(\" + (self.owner) + \" to be true)\");\n }\n \n }, TMP_UnboundMethod_bind_15.$$arity = 1);\n return (Opal.def(self, '$inspect', TMP_UnboundMethod_inspect_16 = function $$inspect() {\n var self = this;\n\n return \"\" + \"#<\" + (self.$class()) + \": \" + (self.source) + \"#\" + (self.name) + \" (defined in \" + (self.owner) + \" in \" + (self.$source_location().$join(\":\")) + \")>\"\n }, TMP_UnboundMethod_inspect_16.$$arity = 0), nil) && 'inspect';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/variables\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $gvars = Opal.gvars, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$new']);\n \n $gvars['&'] = $gvars['~'] = $gvars['`'] = $gvars[\"'\"] = nil;\n $gvars.LOADED_FEATURES = ($gvars[\"\\\"\"] = Opal.loaded_features);\n $gvars.LOAD_PATH = ($gvars[\":\"] = []);\n $gvars[\"/\"] = \"\\n\";\n $gvars[\",\"] = nil;\n Opal.const_set($nesting[0], 'ARGV', []);\n Opal.const_set($nesting[0], 'ARGF', $$($nesting, 'Object').$new());\n Opal.const_set($nesting[0], 'ENV', $hash2([], {}));\n $gvars.VERBOSE = false;\n $gvars.DEBUG = false;\n return ($gvars.SAFE = 0);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"opal/regexp_anchors\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module;\n\n Opal.add_stubs(['$==', '$new']);\n return (function($base, $parent_nesting) {\n var $Opal, self = $Opal = $module($base, 'Opal');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n Opal.const_set($nesting[0], 'REGEXP_START', (function() {if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n return \"^\"\n } else {\n return nil\n }; return nil; })());\n Opal.const_set($nesting[0], 'REGEXP_END', (function() {if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n return \"$\"\n } else {\n return nil\n }; return nil; })());\n Opal.const_set($nesting[0], 'FORBIDDEN_STARTING_IDENTIFIER_CHARS', \"\\\\u0001-\\\\u002F\\\\u003A-\\\\u0040\\\\u005B-\\\\u005E\\\\u0060\\\\u007B-\\\\u007F\");\n Opal.const_set($nesting[0], 'FORBIDDEN_ENDING_IDENTIFIER_CHARS', \"\\\\u0001-\\\\u0020\\\\u0022-\\\\u002F\\\\u003A-\\\\u003E\\\\u0040\\\\u005B-\\\\u005E\\\\u0060\\\\u007B-\\\\u007F\");\n Opal.const_set($nesting[0], 'INLINE_IDENTIFIER_REGEXP', $$($nesting, 'Regexp').$new(\"\" + \"[^\" + ($$($nesting, 'FORBIDDEN_STARTING_IDENTIFIER_CHARS')) + \"]*[^\" + ($$($nesting, 'FORBIDDEN_ENDING_IDENTIFIER_CHARS')) + \"]\"));\n Opal.const_set($nesting[0], 'FORBIDDEN_CONST_NAME_CHARS', \"\\\\u0001-\\\\u0020\\\\u0021-\\\\u002F\\\\u003B-\\\\u003F\\\\u0040\\\\u005B-\\\\u005E\\\\u0060\\\\u007B-\\\\u007F\");\n Opal.const_set($nesting[0], 'CONST_NAME_REGEXP', $$($nesting, 'Regexp').$new(\"\" + ($$($nesting, 'REGEXP_START')) + \"(::)?[A-Z][^\" + ($$($nesting, 'FORBIDDEN_CONST_NAME_CHARS')) + \"]*\" + ($$($nesting, 'REGEXP_END'))));\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"opal/mini\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n Opal.add_stubs(['$require']);\n \n self.$require(\"opal/base\");\n self.$require(\"corelib/nil\");\n self.$require(\"corelib/boolean\");\n self.$require(\"corelib/string\");\n self.$require(\"corelib/comparable\");\n self.$require(\"corelib/enumerable\");\n self.$require(\"corelib/enumerator\");\n self.$require(\"corelib/array\");\n self.$require(\"corelib/hash\");\n self.$require(\"corelib/number\");\n self.$require(\"corelib/range\");\n self.$require(\"corelib/proc\");\n self.$require(\"corelib/method\");\n self.$require(\"corelib/regexp\");\n self.$require(\"corelib/variables\");\n return self.$require(\"opal/regexp_anchors\");\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/string/inheritance\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $gvars = Opal.gvars;\n\n Opal.add_stubs(['$require', '$new', '$allocate', '$initialize', '$to_proc', '$__send__', '$class', '$clone', '$respond_to?', '$==', '$to_s', '$inspect', '$+', '$*', '$map', '$split', '$enum_for', '$each_line', '$to_a', '$%', '$-']);\n \n self.$require(\"corelib/string\");\n (function($base, $super, $parent_nesting) {\n function $String(){};\n var self = $String = $klass($base, $super, 'String', $String);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_inherited_1;\n\n return (Opal.defs(self, '$inherited', TMP_String_inherited_1 = function $$inherited(klass) {\n var self = this, replace = nil;\n\n \n replace = $$($nesting, 'Class').$new($$$($$($nesting, 'String'), 'Wrapper'));\n \n klass.$$proto = replace.$$proto;\n klass.$$proto.$$class = klass;\n klass.$$alloc = replace.$$alloc;\n klass.$$parent = $$$($$($nesting, 'String'), 'Wrapper');\n\n klass.$allocate = replace.$allocate;\n klass.$new = replace.$new;\n ;\n }, TMP_String_inherited_1.$$arity = 1), nil) && 'inherited'\n })($nesting[0], null, $nesting);\n return (function($base, $super, $parent_nesting) {\n function $Wrapper(){};\n var self = $Wrapper = $klass($base, $super, 'Wrapper', $Wrapper);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Wrapper_allocate_2, TMP_Wrapper_new_3, TMP_Wrapper_$$_4, TMP_Wrapper_initialize_5, TMP_Wrapper_method_missing_6, TMP_Wrapper_initialize_copy_7, TMP_Wrapper_respond_to$q_8, TMP_Wrapper_$eq$eq_9, TMP_Wrapper_to_s_10, TMP_Wrapper_inspect_11, TMP_Wrapper_$_12, TMP_Wrapper_$_13, TMP_Wrapper_split_15, TMP_Wrapper_replace_16, TMP_Wrapper_each_line_17, TMP_Wrapper_lines_19, TMP_Wrapper_$_20, TMP_Wrapper_instance_variables_21;\n\n def.literal = nil;\n \n def.$$is_string = true;\n Opal.defs(self, '$allocate', TMP_Wrapper_allocate_2 = function $$allocate(string) {\n var self = this, $iter = TMP_Wrapper_allocate_2.$$p, $yield = $iter || nil, obj = nil;\n\n if (string == null) {\n string = \"\";\n }\n if ($iter) TMP_Wrapper_allocate_2.$$p = null;\n \n obj = $send(self, Opal.find_super_dispatcher(self, 'allocate', TMP_Wrapper_allocate_2, false, $Wrapper), [], null);\n obj.literal = string;\n return obj;\n }, TMP_Wrapper_allocate_2.$$arity = -1);\n Opal.defs(self, '$new', TMP_Wrapper_new_3 = function($a_rest) {\n var self = this, args, $iter = TMP_Wrapper_new_3.$$p, block = $iter || nil, obj = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Wrapper_new_3.$$p = null;\n \n obj = self.$allocate();\n $send(obj, 'initialize', Opal.to_a(args), block.$to_proc());\n return obj;\n }, TMP_Wrapper_new_3.$$arity = -1);\n Opal.defs(self, '$[]', TMP_Wrapper_$$_4 = function($a_rest) {\n var self = this, objects;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n objects = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n objects[$arg_idx - 0] = arguments[$arg_idx];\n }\n return self.$allocate(objects)\n }, TMP_Wrapper_$$_4.$$arity = -1);\n \n Opal.def(self, '$initialize', TMP_Wrapper_initialize_5 = function $$initialize(string) {\n var self = this;\n\n if (string == null) {\n string = \"\";\n }\n return (self.literal = string)\n }, TMP_Wrapper_initialize_5.$$arity = -1);\n \n Opal.def(self, '$method_missing', TMP_Wrapper_method_missing_6 = function $$method_missing($a_rest) {\n var self = this, args, $iter = TMP_Wrapper_method_missing_6.$$p, block = $iter || nil, result = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Wrapper_method_missing_6.$$p = null;\n \n result = $send(self.literal, '__send__', Opal.to_a(args), block.$to_proc());\n if ($truthy(result.$$is_string != null)) {\n if ($truthy(result == self.literal)) {\n return self\n } else {\n return self.$class().$allocate(result)\n }\n } else {\n return result\n };\n }, TMP_Wrapper_method_missing_6.$$arity = -1);\n \n Opal.def(self, '$initialize_copy', TMP_Wrapper_initialize_copy_7 = function $$initialize_copy(other) {\n var self = this;\n\n return (self.literal = (other.literal).$clone())\n }, TMP_Wrapper_initialize_copy_7.$$arity = 1);\n \n Opal.def(self, '$respond_to?', TMP_Wrapper_respond_to$q_8 = function(name, $a_rest) {\n var $b, self = this, $iter = TMP_Wrapper_respond_to$q_8.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Wrapper_respond_to$q_8.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n return ($truthy($b = $send(self, Opal.find_super_dispatcher(self, 'respond_to?', TMP_Wrapper_respond_to$q_8, false), $zuper, $iter)) ? $b : self.literal['$respond_to?'](name))\n }, TMP_Wrapper_respond_to$q_8.$$arity = -2);\n \n Opal.def(self, '$==', TMP_Wrapper_$eq$eq_9 = function(other) {\n var self = this;\n\n return self.literal['$=='](other)\n }, TMP_Wrapper_$eq$eq_9.$$arity = 1);\n Opal.alias(self, \"eql?\", \"==\");\n Opal.alias(self, \"===\", \"==\");\n \n Opal.def(self, '$to_s', TMP_Wrapper_to_s_10 = function $$to_s() {\n var self = this;\n\n return self.literal.$to_s()\n }, TMP_Wrapper_to_s_10.$$arity = 0);\n Opal.alias(self, \"to_str\", \"to_s\");\n \n Opal.def(self, '$inspect', TMP_Wrapper_inspect_11 = function $$inspect() {\n var self = this;\n\n return self.literal.$inspect()\n }, TMP_Wrapper_inspect_11.$$arity = 0);\n \n Opal.def(self, '$+', TMP_Wrapper_$_12 = function(other) {\n var self = this;\n\n return $rb_plus(self.literal, other)\n }, TMP_Wrapper_$_12.$$arity = 1);\n \n Opal.def(self, '$*', TMP_Wrapper_$_13 = function(other) {\n var self = this;\n\n \n var result = $rb_times(self.literal, other);\n\n if (result.$$is_string) {\n return self.$class().$allocate(result)\n }\n else {\n return result;\n }\n \n }, TMP_Wrapper_$_13.$$arity = 1);\n \n Opal.def(self, '$split', TMP_Wrapper_split_15 = function $$split(pattern, limit) {\n var TMP_14, self = this;\n\n return $send(self.literal.$split(pattern, limit), 'map', [], (TMP_14 = function(str){var self = TMP_14.$$s || this;\nif (str == null) str = nil;\n return self.$class().$allocate(str)}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14))\n }, TMP_Wrapper_split_15.$$arity = -1);\n \n Opal.def(self, '$replace', TMP_Wrapper_replace_16 = function $$replace(string) {\n var self = this;\n\n return (self.literal = string)\n }, TMP_Wrapper_replace_16.$$arity = 1);\n \n Opal.def(self, '$each_line', TMP_Wrapper_each_line_17 = function $$each_line(separator) {\n var TMP_18, self = this, $iter = TMP_Wrapper_each_line_17.$$p, $yield = $iter || nil;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n if (separator == null) {\n separator = $gvars[\"/\"];\n }\n if ($iter) TMP_Wrapper_each_line_17.$$p = null;\n \n if (($yield !== nil)) {\n } else {\n return self.$enum_for(\"each_line\", separator)\n };\n return $send(self.literal, 'each_line', [separator], (TMP_18 = function(str){var self = TMP_18.$$s || this;\nif (str == null) str = nil;\n return Opal.yield1($yield, self.$class().$allocate(str));}, TMP_18.$$s = self, TMP_18.$$arity = 1, TMP_18));\n }, TMP_Wrapper_each_line_17.$$arity = -1);\n \n Opal.def(self, '$lines', TMP_Wrapper_lines_19 = function $$lines(separator) {\n var self = this, $iter = TMP_Wrapper_lines_19.$$p, block = $iter || nil, e = nil;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n if (separator == null) {\n separator = $gvars[\"/\"];\n }\n if ($iter) TMP_Wrapper_lines_19.$$p = null;\n \n e = $send(self, 'each_line', [separator], block.$to_proc());\n if ($truthy(block)) {\n return self\n } else {\n return e.$to_a()\n };\n }, TMP_Wrapper_lines_19.$$arity = -1);\n \n Opal.def(self, '$%', TMP_Wrapper_$_20 = function(data) {\n var self = this;\n\n return self.literal['$%'](data)\n }, TMP_Wrapper_$_20.$$arity = 1);\n return (Opal.def(self, '$instance_variables', TMP_Wrapper_instance_variables_21 = function $$instance_variables() {\n var self = this, $iter = TMP_Wrapper_instance_variables_21.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Wrapper_instance_variables_21.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n return $rb_minus($send(self, Opal.find_super_dispatcher(self, 'instance_variables', TMP_Wrapper_instance_variables_21, false), $zuper, $iter), [\"@literal\"])\n }, TMP_Wrapper_instance_variables_21.$$arity = 0), nil) && 'instance_variables';\n })($$($nesting, 'String'), null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/string/encoding\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n var TMP_12, TMP_15, TMP_18, TMP_21, TMP_24, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$require', '$+', '$[]', '$new', '$to_proc', '$each', '$const_set', '$sub', '$==', '$default_external', '$upcase', '$raise', '$attr_accessor', '$attr_reader', '$register', '$length', '$bytes', '$to_a', '$each_byte', '$bytesize', '$enum_for', '$force_encoding', '$dup', '$coerce_to!', '$find', '$getbyte']);\n \n self.$require(\"corelib/string\");\n (function($base, $super, $parent_nesting) {\n function $Encoding(){};\n var self = $Encoding = $klass($base, $super, 'Encoding', $Encoding);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Encoding_register_1, TMP_Encoding_find_3, TMP_Encoding_initialize_4, TMP_Encoding_ascii_compatible$q_5, TMP_Encoding_dummy$q_6, TMP_Encoding_to_s_7, TMP_Encoding_inspect_8, TMP_Encoding_each_byte_9, TMP_Encoding_getbyte_10, TMP_Encoding_bytesize_11;\n\n def.ascii = def.dummy = def.name = nil;\n \n self[\"$$register\"] = {};\n Opal.defs(self, '$register', TMP_Encoding_register_1 = function $$register(name, options) {\n var $a, TMP_2, self = this, $iter = TMP_Encoding_register_1.$$p, block = $iter || nil, names = nil, encoding = nil, register = nil;\n\n if (options == null) {\n options = $hash2([], {});\n }\n if ($iter) TMP_Encoding_register_1.$$p = null;\n \n names = $rb_plus([name], ($truthy($a = options['$[]'](\"aliases\")) ? $a : []));\n encoding = $send($$($nesting, 'Class'), 'new', [self], block.$to_proc()).$new(name, names, ($truthy($a = options['$[]'](\"ascii\")) ? $a : false), ($truthy($a = options['$[]'](\"dummy\")) ? $a : false));\n register = self[\"$$register\"];\n return $send(names, 'each', [], (TMP_2 = function(encoding_name){var self = TMP_2.$$s || this;\nif (encoding_name == null) encoding_name = nil;\n \n self.$const_set(encoding_name.$sub(\"-\", \"_\"), encoding);\n return register[\"\" + \"$$\" + (encoding_name)] = encoding;}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2));\n }, TMP_Encoding_register_1.$$arity = -2);\n Opal.defs(self, '$find', TMP_Encoding_find_3 = function $$find(name) {\n var $a, self = this, register = nil, encoding = nil;\n\n \n if (name['$=='](\"default_external\")) {\n return self.$default_external()};\n register = self[\"$$register\"];\n encoding = ($truthy($a = register[\"\" + \"$$\" + (name)]) ? $a : register[\"\" + \"$$\" + (name.$upcase())]);\n if ($truthy(encoding)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"unknown encoding name - \" + (name))\n };\n return encoding;\n }, TMP_Encoding_find_3.$$arity = 1);\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return self.$attr_accessor(\"default_external\")\n })(Opal.get_singleton_class(self), $nesting);\n self.$attr_reader(\"name\", \"names\");\n \n Opal.def(self, '$initialize', TMP_Encoding_initialize_4 = function $$initialize(name, names, ascii, dummy) {\n var self = this;\n\n \n self.name = name;\n self.names = names;\n self.ascii = ascii;\n return (self.dummy = dummy);\n }, TMP_Encoding_initialize_4.$$arity = 4);\n \n Opal.def(self, '$ascii_compatible?', TMP_Encoding_ascii_compatible$q_5 = function() {\n var self = this;\n\n return self.ascii\n }, TMP_Encoding_ascii_compatible$q_5.$$arity = 0);\n \n Opal.def(self, '$dummy?', TMP_Encoding_dummy$q_6 = function() {\n var self = this;\n\n return self.dummy\n }, TMP_Encoding_dummy$q_6.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_Encoding_to_s_7 = function $$to_s() {\n var self = this;\n\n return self.name\n }, TMP_Encoding_to_s_7.$$arity = 0);\n \n Opal.def(self, '$inspect', TMP_Encoding_inspect_8 = function $$inspect() {\n var self = this;\n\n return \"\" + \"#<Encoding:\" + (self.name) + ((function() {if ($truthy(self.dummy)) {\n return \" (dummy)\"\n } else {\n return nil\n }; return nil; })()) + \">\"\n }, TMP_Encoding_inspect_8.$$arity = 0);\n \n Opal.def(self, '$each_byte', TMP_Encoding_each_byte_9 = function $$each_byte($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'))\n }, TMP_Encoding_each_byte_9.$$arity = -1);\n \n Opal.def(self, '$getbyte', TMP_Encoding_getbyte_10 = function $$getbyte($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'))\n }, TMP_Encoding_getbyte_10.$$arity = -1);\n \n Opal.def(self, '$bytesize', TMP_Encoding_bytesize_11 = function $$bytesize($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'))\n }, TMP_Encoding_bytesize_11.$$arity = -1);\n (function($base, $super, $parent_nesting) {\n function $EncodingError(){};\n var self = $EncodingError = $klass($base, $super, 'EncodingError', $EncodingError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'StandardError'), $nesting);\n return (function($base, $super, $parent_nesting) {\n function $CompatibilityError(){};\n var self = $CompatibilityError = $klass($base, $super, 'CompatibilityError', $CompatibilityError);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'EncodingError'), $nesting);\n })($nesting[0], null, $nesting);\n $send($$($nesting, 'Encoding'), 'register', [\"UTF-8\", $hash2([\"aliases\", \"ascii\"], {\"aliases\": [\"CP65001\"], \"ascii\": true})], (TMP_12 = function(){var self = TMP_12.$$s || this, TMP_each_byte_13, TMP_bytesize_14;\n\n \n \n Opal.def(self, '$each_byte', TMP_each_byte_13 = function $$each_byte(string) {\n var self = this, $iter = TMP_each_byte_13.$$p, block = $iter || nil;\n\n if ($iter) TMP_each_byte_13.$$p = null;\n \n for (var i = 0, length = string.length; i < length; i++) {\n var code = string.charCodeAt(i);\n\n if (code <= 0x7f) {\n Opal.yield1(block, code);\n }\n else {\n var encoded = encodeURIComponent(string.charAt(i)).substr(1).split('%');\n\n for (var j = 0, encoded_length = encoded.length; j < encoded_length; j++) {\n Opal.yield1(block, parseInt(encoded[j], 16));\n }\n }\n }\n \n }, TMP_each_byte_13.$$arity = 1);\n return (Opal.def(self, '$bytesize', TMP_bytesize_14 = function $$bytesize(string) {\n var self = this;\n\n return string.$bytes().$length()\n }, TMP_bytesize_14.$$arity = 1), nil) && 'bytesize';}, TMP_12.$$s = self, TMP_12.$$arity = 0, TMP_12));\n $send($$($nesting, 'Encoding'), 'register', [\"UTF-16LE\"], (TMP_15 = function(){var self = TMP_15.$$s || this, TMP_each_byte_16, TMP_bytesize_17;\n\n \n \n Opal.def(self, '$each_byte', TMP_each_byte_16 = function $$each_byte(string) {\n var self = this, $iter = TMP_each_byte_16.$$p, block = $iter || nil;\n\n if ($iter) TMP_each_byte_16.$$p = null;\n \n for (var i = 0, length = string.length; i < length; i++) {\n var code = string.charCodeAt(i);\n\n Opal.yield1(block, code & 0xff);\n Opal.yield1(block, code >> 8);\n }\n \n }, TMP_each_byte_16.$$arity = 1);\n return (Opal.def(self, '$bytesize', TMP_bytesize_17 = function $$bytesize(string) {\n var self = this;\n\n return string.$bytes().$length()\n }, TMP_bytesize_17.$$arity = 1), nil) && 'bytesize';}, TMP_15.$$s = self, TMP_15.$$arity = 0, TMP_15));\n $send($$($nesting, 'Encoding'), 'register', [\"UTF-16BE\"], (TMP_18 = function(){var self = TMP_18.$$s || this, TMP_each_byte_19, TMP_bytesize_20;\n\n \n \n Opal.def(self, '$each_byte', TMP_each_byte_19 = function $$each_byte(string) {\n var self = this, $iter = TMP_each_byte_19.$$p, block = $iter || nil;\n\n if ($iter) TMP_each_byte_19.$$p = null;\n \n for (var i = 0, length = string.length; i < length; i++) {\n var code = string.charCodeAt(i);\n\n Opal.yield1(block, code >> 8);\n Opal.yield1(block, code & 0xff);\n }\n \n }, TMP_each_byte_19.$$arity = 1);\n return (Opal.def(self, '$bytesize', TMP_bytesize_20 = function $$bytesize(string) {\n var self = this;\n\n return string.$bytes().$length()\n }, TMP_bytesize_20.$$arity = 1), nil) && 'bytesize';}, TMP_18.$$s = self, TMP_18.$$arity = 0, TMP_18));\n $send($$($nesting, 'Encoding'), 'register', [\"UTF-32LE\"], (TMP_21 = function(){var self = TMP_21.$$s || this, TMP_each_byte_22, TMP_bytesize_23;\n\n \n \n Opal.def(self, '$each_byte', TMP_each_byte_22 = function $$each_byte(string) {\n var self = this, $iter = TMP_each_byte_22.$$p, block = $iter || nil;\n\n if ($iter) TMP_each_byte_22.$$p = null;\n \n for (var i = 0, length = string.length; i < length; i++) {\n var code = string.charCodeAt(i);\n\n Opal.yield1(block, code & 0xff);\n Opal.yield1(block, code >> 8);\n }\n \n }, TMP_each_byte_22.$$arity = 1);\n return (Opal.def(self, '$bytesize', TMP_bytesize_23 = function $$bytesize(string) {\n var self = this;\n\n return string.$bytes().$length()\n }, TMP_bytesize_23.$$arity = 1), nil) && 'bytesize';}, TMP_21.$$s = self, TMP_21.$$arity = 0, TMP_21));\n $send($$($nesting, 'Encoding'), 'register', [\"ASCII-8BIT\", $hash2([\"aliases\", \"ascii\", \"dummy\"], {\"aliases\": [\"BINARY\", \"US-ASCII\", \"ASCII\"], \"ascii\": true, \"dummy\": true})], (TMP_24 = function(){var self = TMP_24.$$s || this, TMP_each_byte_25, TMP_bytesize_26;\n\n \n \n Opal.def(self, '$each_byte', TMP_each_byte_25 = function $$each_byte(string) {\n var self = this, $iter = TMP_each_byte_25.$$p, block = $iter || nil;\n\n if ($iter) TMP_each_byte_25.$$p = null;\n \n for (var i = 0, length = string.length; i < length; i++) {\n var code = string.charCodeAt(i);\n Opal.yield1(block, code & 0xff);\n Opal.yield1(block, code >> 8);\n }\n \n }, TMP_each_byte_25.$$arity = 1);\n return (Opal.def(self, '$bytesize', TMP_bytesize_26 = function $$bytesize(string) {\n var self = this;\n\n return string.$bytes().$length()\n }, TMP_bytesize_26.$$arity = 1), nil) && 'bytesize';}, TMP_24.$$s = self, TMP_24.$$arity = 0, TMP_24));\n return (function($base, $super, $parent_nesting) {\n function $String(){};\n var self = $String = $klass($base, $super, 'String', $String);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_bytes_27, TMP_String_bytesize_28, TMP_String_each_byte_29, TMP_String_encode_30, TMP_String_force_encoding_31, TMP_String_getbyte_32, TMP_String_valid_encoding$q_33;\n\n def.encoding = nil;\n \n self.$attr_reader(\"encoding\");\n String.prototype.encoding = $$$($$($nesting, 'Encoding'), 'UTF_16LE');\n \n Opal.def(self, '$bytes', TMP_String_bytes_27 = function $$bytes() {\n var self = this;\n\n return self.$each_byte().$to_a()\n }, TMP_String_bytes_27.$$arity = 0);\n \n Opal.def(self, '$bytesize', TMP_String_bytesize_28 = function $$bytesize() {\n var self = this;\n\n return self.encoding.$bytesize(self)\n }, TMP_String_bytesize_28.$$arity = 0);\n \n Opal.def(self, '$each_byte', TMP_String_each_byte_29 = function $$each_byte() {\n var self = this, $iter = TMP_String_each_byte_29.$$p, block = $iter || nil;\n\n if ($iter) TMP_String_each_byte_29.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"each_byte\")\n };\n $send(self.encoding, 'each_byte', [self], block.$to_proc());\n return self;\n }, TMP_String_each_byte_29.$$arity = 0);\n \n Opal.def(self, '$encode', TMP_String_encode_30 = function $$encode(encoding) {\n var self = this;\n\n return self.$dup().$force_encoding(encoding)\n }, TMP_String_encode_30.$$arity = 1);\n \n Opal.def(self, '$force_encoding', TMP_String_force_encoding_31 = function $$force_encoding(encoding) {\n var self = this;\n\n \n if (encoding === self.encoding) { return self; }\n\n encoding = $$($nesting, 'Opal')['$coerce_to!'](encoding, $$($nesting, 'String'), \"to_s\");\n encoding = $$($nesting, 'Encoding').$find(encoding);\n\n if (encoding === self.encoding) { return self; }\n\n self.encoding = encoding;\n return self;\n \n }, TMP_String_force_encoding_31.$$arity = 1);\n \n Opal.def(self, '$getbyte', TMP_String_getbyte_32 = function $$getbyte(idx) {\n var self = this;\n\n return self.encoding.$getbyte(self, idx)\n }, TMP_String_getbyte_32.$$arity = 1);\n return (Opal.def(self, '$valid_encoding?', TMP_String_valid_encoding$q_33 = function() {\n var self = this;\n\n return true\n }, TMP_String_valid_encoding$q_33.$$arity = 0), nil) && 'valid_encoding?';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/math\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$new', '$raise', '$Float', '$type_error', '$Integer', '$module_function', '$checked', '$float!', '$===', '$gamma', '$-', '$integer!', '$/', '$infinite?']);\n return (function($base, $parent_nesting) {\n var $Math, self = $Math = $module($base, 'Math');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Math_checked_1, TMP_Math_float$B_2, TMP_Math_integer$B_3, TMP_Math_acos_4, TMP_Math_acosh_5, TMP_Math_asin_6, TMP_Math_asinh_7, TMP_Math_atan_8, TMP_Math_atan2_9, TMP_Math_atanh_10, TMP_Math_cbrt_11, TMP_Math_cos_12, TMP_Math_cosh_13, TMP_Math_erf_14, TMP_Math_erfc_15, TMP_Math_exp_16, TMP_Math_frexp_17, TMP_Math_gamma_18, TMP_Math_hypot_19, TMP_Math_ldexp_20, TMP_Math_lgamma_21, TMP_Math_log_22, TMP_Math_log10_23, TMP_Math_log2_24, TMP_Math_sin_25, TMP_Math_sinh_26, TMP_Math_sqrt_27, TMP_Math_tan_28, TMP_Math_tanh_29;\n\n \n Opal.const_set($nesting[0], 'E', Math.E);\n Opal.const_set($nesting[0], 'PI', Math.PI);\n Opal.const_set($nesting[0], 'DomainError', $$($nesting, 'Class').$new($$($nesting, 'StandardError')));\n Opal.defs(self, '$checked', TMP_Math_checked_1 = function $$checked(method, $a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }\n \n if (isNaN(args[0]) || (args.length == 2 && isNaN(args[1]))) {\n return NaN;\n }\n\n var result = Math[method].apply(null, args);\n\n if (isNaN(result)) {\n self.$raise($$($nesting, 'DomainError'), \"\" + \"Numerical argument is out of domain - \\\"\" + (method) + \"\\\"\");\n }\n\n return result;\n \n }, TMP_Math_checked_1.$$arity = -2);\n Opal.defs(self, '$float!', TMP_Math_float$B_2 = function(value) {\n var self = this;\n\n try {\n return self.$Float(value)\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) {\n try {\n return self.$raise($$($nesting, 'Opal').$type_error(value, $$($nesting, 'Float')))\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }\n }, TMP_Math_float$B_2.$$arity = 1);\n Opal.defs(self, '$integer!', TMP_Math_integer$B_3 = function(value) {\n var self = this;\n\n try {\n return self.$Integer(value)\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'ArgumentError')])) {\n try {\n return self.$raise($$($nesting, 'Opal').$type_error(value, $$($nesting, 'Integer')))\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }\n }, TMP_Math_integer$B_3.$$arity = 1);\n self.$module_function();\n \n Opal.def(self, '$acos', TMP_Math_acos_4 = function $$acos(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"acos\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_acos_4.$$arity = 1);\n if ($truthy((typeof(Math.acosh) !== \"undefined\"))) {\n } else {\n \n Math.acosh = function(x) {\n return Math.log(x + Math.sqrt(x * x - 1));\n }\n \n };\n \n Opal.def(self, '$acosh', TMP_Math_acosh_5 = function $$acosh(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"acosh\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_acosh_5.$$arity = 1);\n \n Opal.def(self, '$asin', TMP_Math_asin_6 = function $$asin(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"asin\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_asin_6.$$arity = 1);\n if ($truthy((typeof(Math.asinh) !== \"undefined\"))) {\n } else {\n \n Math.asinh = function(x) {\n return Math.log(x + Math.sqrt(x * x + 1))\n }\n \n };\n \n Opal.def(self, '$asinh', TMP_Math_asinh_7 = function $$asinh(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"asinh\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_asinh_7.$$arity = 1);\n \n Opal.def(self, '$atan', TMP_Math_atan_8 = function $$atan(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"atan\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_atan_8.$$arity = 1);\n \n Opal.def(self, '$atan2', TMP_Math_atan2_9 = function $$atan2(y, x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"atan2\", $$($nesting, 'Math')['$float!'](y), $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_atan2_9.$$arity = 2);\n if ($truthy((typeof(Math.atanh) !== \"undefined\"))) {\n } else {\n \n Math.atanh = function(x) {\n return 0.5 * Math.log((1 + x) / (1 - x));\n }\n \n };\n \n Opal.def(self, '$atanh', TMP_Math_atanh_10 = function $$atanh(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"atanh\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_atanh_10.$$arity = 1);\n if ($truthy((typeof(Math.cbrt) !== \"undefined\"))) {\n } else {\n \n Math.cbrt = function(x) {\n if (x == 0) {\n return 0;\n }\n\n if (x < 0) {\n return -Math.cbrt(-x);\n }\n\n var r = x,\n ex = 0;\n\n while (r < 0.125) {\n r *= 8;\n ex--;\n }\n\n while (r > 1.0) {\n r *= 0.125;\n ex++;\n }\n\n r = (-0.46946116 * r + 1.072302) * r + 0.3812513;\n\n while (ex < 0) {\n r *= 0.5;\n ex++;\n }\n\n while (ex > 0) {\n r *= 2;\n ex--;\n }\n\n r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r);\n r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r);\n r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r);\n r = (2.0 / 3.0) * r + (1.0 / 3.0) * x / (r * r);\n\n return r;\n }\n \n };\n \n Opal.def(self, '$cbrt', TMP_Math_cbrt_11 = function $$cbrt(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"cbrt\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_cbrt_11.$$arity = 1);\n \n Opal.def(self, '$cos', TMP_Math_cos_12 = function $$cos(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"cos\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_cos_12.$$arity = 1);\n if ($truthy((typeof(Math.cosh) !== \"undefined\"))) {\n } else {\n \n Math.cosh = function(x) {\n return (Math.exp(x) + Math.exp(-x)) / 2;\n }\n \n };\n \n Opal.def(self, '$cosh', TMP_Math_cosh_13 = function $$cosh(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"cosh\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_cosh_13.$$arity = 1);\n if ($truthy((typeof(Math.erf) !== \"undefined\"))) {\n } else {\n \n Math.erf = function(x) {\n var A1 = 0.254829592,\n A2 = -0.284496736,\n A3 = 1.421413741,\n A4 = -1.453152027,\n A5 = 1.061405429,\n P = 0.3275911;\n\n var sign = 1;\n\n if (x < 0) {\n sign = -1;\n }\n\n x = Math.abs(x);\n\n var t = 1.0 / (1.0 + P * x);\n var y = 1.0 - (((((A5 * t + A4) * t) + A3) * t + A2) * t + A1) * t * Math.exp(-x * x);\n\n return sign * y;\n }\n \n };\n \n Opal.def(self, '$erf', TMP_Math_erf_14 = function $$erf(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"erf\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_erf_14.$$arity = 1);\n if ($truthy((typeof(Math.erfc) !== \"undefined\"))) {\n } else {\n \n Math.erfc = function(x) {\n var z = Math.abs(x),\n t = 1.0 / (0.5 * z + 1.0);\n\n var A1 = t * 0.17087277 + -0.82215223,\n A2 = t * A1 + 1.48851587,\n A3 = t * A2 + -1.13520398,\n A4 = t * A3 + 0.27886807,\n A5 = t * A4 + -0.18628806,\n A6 = t * A5 + 0.09678418,\n A7 = t * A6 + 0.37409196,\n A8 = t * A7 + 1.00002368,\n A9 = t * A8,\n A10 = -z * z - 1.26551223 + A9;\n\n var a = t * Math.exp(A10);\n\n if (x < 0.0) {\n return 2.0 - a;\n }\n else {\n return a;\n }\n }\n \n };\n \n Opal.def(self, '$erfc', TMP_Math_erfc_15 = function $$erfc(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"erfc\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_erfc_15.$$arity = 1);\n \n Opal.def(self, '$exp', TMP_Math_exp_16 = function $$exp(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"exp\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_exp_16.$$arity = 1);\n \n Opal.def(self, '$frexp', TMP_Math_frexp_17 = function $$frexp(x) {\n var self = this;\n\n \n x = $$($nesting, 'Math')['$float!'](x);\n \n if (isNaN(x)) {\n return [NaN, 0];\n }\n\n var ex = Math.floor(Math.log(Math.abs(x)) / Math.log(2)) + 1,\n frac = x / Math.pow(2, ex);\n\n return [frac, ex];\n ;\n }, TMP_Math_frexp_17.$$arity = 1);\n \n Opal.def(self, '$gamma', TMP_Math_gamma_18 = function $$gamma(n) {\n var self = this;\n\n \n n = $$($nesting, 'Math')['$float!'](n);\n \n var i, t, x, value, result, twoN, threeN, fourN, fiveN;\n\n var G = 4.7421875;\n\n var P = [\n 0.99999999999999709182,\n 57.156235665862923517,\n -59.597960355475491248,\n 14.136097974741747174,\n -0.49191381609762019978,\n 0.33994649984811888699e-4,\n 0.46523628927048575665e-4,\n -0.98374475304879564677e-4,\n 0.15808870322491248884e-3,\n -0.21026444172410488319e-3,\n 0.21743961811521264320e-3,\n -0.16431810653676389022e-3,\n 0.84418223983852743293e-4,\n -0.26190838401581408670e-4,\n 0.36899182659531622704e-5\n ];\n\n\n if (isNaN(n)) {\n return NaN;\n }\n\n if (n === 0 && 1 / n < 0) {\n return -Infinity;\n }\n\n if (n === -1 || n === -Infinity) {\n self.$raise($$($nesting, 'DomainError'), \"Numerical argument is out of domain - \\\"gamma\\\"\");\n }\n\n if ($$($nesting, 'Integer')['$==='](n)) {\n if (n <= 0) {\n return isFinite(n) ? Infinity : NaN;\n }\n\n if (n > 171) {\n return Infinity;\n }\n\n value = n - 2;\n result = n - 1;\n\n while (value > 1) {\n result *= value;\n value--;\n }\n\n if (result == 0) {\n result = 1;\n }\n\n return result;\n }\n\n if (n < 0.5) {\n return Math.PI / (Math.sin(Math.PI * n) * $$($nesting, 'Math').$gamma($rb_minus(1, n)));\n }\n\n if (n >= 171.35) {\n return Infinity;\n }\n\n if (n > 85.0) {\n twoN = n * n;\n threeN = twoN * n;\n fourN = threeN * n;\n fiveN = fourN * n;\n\n return Math.sqrt(2 * Math.PI / n) * Math.pow((n / Math.E), n) *\n (1 + 1 / (12 * n) + 1 / (288 * twoN) - 139 / (51840 * threeN) -\n 571 / (2488320 * fourN) + 163879 / (209018880 * fiveN) +\n 5246819 / (75246796800 * fiveN * n));\n }\n\n n -= 1;\n x = P[0];\n\n for (i = 1; i < P.length; ++i) {\n x += P[i] / (n + i);\n }\n\n t = n + G + 0.5;\n\n return Math.sqrt(2 * Math.PI) * Math.pow(t, n + 0.5) * Math.exp(-t) * x;\n ;\n }, TMP_Math_gamma_18.$$arity = 1);\n if ($truthy((typeof(Math.hypot) !== \"undefined\"))) {\n } else {\n \n Math.hypot = function(x, y) {\n return Math.sqrt(x * x + y * y)\n }\n \n };\n \n Opal.def(self, '$hypot', TMP_Math_hypot_19 = function $$hypot(x, y) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"hypot\", $$($nesting, 'Math')['$float!'](x), $$($nesting, 'Math')['$float!'](y))\n }, TMP_Math_hypot_19.$$arity = 2);\n \n Opal.def(self, '$ldexp', TMP_Math_ldexp_20 = function $$ldexp(mantissa, exponent) {\n var self = this;\n\n \n mantissa = $$($nesting, 'Math')['$float!'](mantissa);\n exponent = $$($nesting, 'Math')['$integer!'](exponent);\n \n if (isNaN(exponent)) {\n self.$raise($$($nesting, 'RangeError'), \"float NaN out of range of integer\");\n }\n\n return mantissa * Math.pow(2, exponent);\n ;\n }, TMP_Math_ldexp_20.$$arity = 2);\n \n Opal.def(self, '$lgamma', TMP_Math_lgamma_21 = function $$lgamma(n) {\n var self = this;\n\n \n if (n == -1) {\n return [Infinity, 1];\n }\n else {\n return [Math.log(Math.abs($$($nesting, 'Math').$gamma(n))), $$($nesting, 'Math').$gamma(n) < 0 ? -1 : 1];\n }\n \n }, TMP_Math_lgamma_21.$$arity = 1);\n \n Opal.def(self, '$log', TMP_Math_log_22 = function $$log(x, base) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'String')['$==='](x))) {\n self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))};\n if ($truthy(base == null)) {\n return $$($nesting, 'Math').$checked(\"log\", $$($nesting, 'Math')['$float!'](x))\n } else {\n \n if ($truthy($$($nesting, 'String')['$==='](base))) {\n self.$raise($$($nesting, 'Opal').$type_error(base, $$($nesting, 'Float')))};\n return $rb_divide($$($nesting, 'Math').$checked(\"log\", $$($nesting, 'Math')['$float!'](x)), $$($nesting, 'Math').$checked(\"log\", $$($nesting, 'Math')['$float!'](base)));\n };\n }, TMP_Math_log_22.$$arity = -2);\n if ($truthy((typeof(Math.log10) !== \"undefined\"))) {\n } else {\n \n Math.log10 = function(x) {\n return Math.log(x) / Math.LN10;\n }\n \n };\n \n Opal.def(self, '$log10', TMP_Math_log10_23 = function $$log10(x) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'String')['$==='](x))) {\n self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))};\n return $$($nesting, 'Math').$checked(\"log10\", $$($nesting, 'Math')['$float!'](x));\n }, TMP_Math_log10_23.$$arity = 1);\n if ($truthy((typeof(Math.log2) !== \"undefined\"))) {\n } else {\n \n Math.log2 = function(x) {\n return Math.log(x) / Math.LN2;\n }\n \n };\n \n Opal.def(self, '$log2', TMP_Math_log2_24 = function $$log2(x) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'String')['$==='](x))) {\n self.$raise($$($nesting, 'Opal').$type_error(x, $$($nesting, 'Float')))};\n return $$($nesting, 'Math').$checked(\"log2\", $$($nesting, 'Math')['$float!'](x));\n }, TMP_Math_log2_24.$$arity = 1);\n \n Opal.def(self, '$sin', TMP_Math_sin_25 = function $$sin(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"sin\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_sin_25.$$arity = 1);\n if ($truthy((typeof(Math.sinh) !== \"undefined\"))) {\n } else {\n \n Math.sinh = function(x) {\n return (Math.exp(x) - Math.exp(-x)) / 2;\n }\n \n };\n \n Opal.def(self, '$sinh', TMP_Math_sinh_26 = function $$sinh(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"sinh\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_sinh_26.$$arity = 1);\n \n Opal.def(self, '$sqrt', TMP_Math_sqrt_27 = function $$sqrt(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"sqrt\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_sqrt_27.$$arity = 1);\n \n Opal.def(self, '$tan', TMP_Math_tan_28 = function $$tan(x) {\n var self = this;\n\n \n x = $$($nesting, 'Math')['$float!'](x);\n if ($truthy(x['$infinite?']())) {\n return $$$($$($nesting, 'Float'), 'NAN')};\n return $$($nesting, 'Math').$checked(\"tan\", $$($nesting, 'Math')['$float!'](x));\n }, TMP_Math_tan_28.$$arity = 1);\n if ($truthy((typeof(Math.tanh) !== \"undefined\"))) {\n } else {\n \n Math.tanh = function(x) {\n if (x == Infinity) {\n return 1;\n }\n else if (x == -Infinity) {\n return -1;\n }\n else {\n return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x));\n }\n }\n \n };\n \n Opal.def(self, '$tanh', TMP_Math_tanh_29 = function $$tanh(x) {\n var self = this;\n\n return $$($nesting, 'Math').$checked(\"tanh\", $$($nesting, 'Math')['$float!'](x))\n }, TMP_Math_tanh_29.$$arity = 1);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/complex\"] = function(Opal) {\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $module = Opal.module;\n\n Opal.add_stubs(['$require', '$===', '$real?', '$raise', '$new', '$*', '$cos', '$sin', '$attr_reader', '$class', '$==', '$real', '$imag', '$Complex', '$-@', '$+', '$__coerced__', '$-', '$nan?', '$/', '$conj', '$abs2', '$quo', '$polar', '$exp', '$log', '$>', '$!=', '$divmod', '$**', '$hypot', '$atan2', '$lcm', '$denominator', '$finite?', '$infinite?', '$numerator', '$abs', '$arg', '$rationalize', '$to_f', '$to_i', '$to_r', '$inspect', '$positive?', '$zero?']);\n \n self.$require(\"corelib/numeric\");\n (function($base, $super, $parent_nesting) {\n function $Complex(){};\n var self = $Complex = $klass($base, $super, 'Complex', $Complex);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Complex_rect_1, TMP_Complex_polar_2, TMP_Complex_initialize_3, TMP_Complex_coerce_4, TMP_Complex_$eq$eq_5, TMP_Complex_$$_6, TMP_Complex_$_7, TMP_Complex_$_8, TMP_Complex_$_9, TMP_Complex_$_10, TMP_Complex_$$_11, TMP_Complex_abs_12, TMP_Complex_abs2_13, TMP_Complex_angle_14, TMP_Complex_conj_15, TMP_Complex_denominator_16, TMP_Complex_eql$q_17, TMP_Complex_fdiv_18, TMP_Complex_finite$q_19, TMP_Complex_hash_20, TMP_Complex_infinite$q_21, TMP_Complex_inspect_22, TMP_Complex_numerator_23, TMP_Complex_polar_24, TMP_Complex_rationalize_25, TMP_Complex_real$q_26, TMP_Complex_rect_27, TMP_Complex_to_f_28, TMP_Complex_to_i_29, TMP_Complex_to_r_30, TMP_Complex_to_s_31;\n\n def.real = def.imag = nil;\n \n Opal.defs(self, '$rect', TMP_Complex_rect_1 = function $$rect(real, imag) {\n var $a, $b, $c, self = this;\n\n if (imag == null) {\n imag = 0;\n }\n \n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Numeric')['$==='](real)) ? real['$real?']() : $c)) ? $$($nesting, 'Numeric')['$==='](imag) : $b)) ? imag['$real?']() : $a))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"not a real\")\n };\n return self.$new(real, imag);\n }, TMP_Complex_rect_1.$$arity = -2);\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return Opal.alias(self, \"rectangular\", \"rect\")\n })(Opal.get_singleton_class(self), $nesting);\n Opal.defs(self, '$polar', TMP_Complex_polar_2 = function $$polar(r, theta) {\n var $a, $b, $c, self = this;\n\n if (theta == null) {\n theta = 0;\n }\n \n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Numeric')['$==='](r)) ? r['$real?']() : $c)) ? $$($nesting, 'Numeric')['$==='](theta) : $b)) ? theta['$real?']() : $a))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"not a real\")\n };\n return self.$new($rb_times(r, $$($nesting, 'Math').$cos(theta)), $rb_times(r, $$($nesting, 'Math').$sin(theta)));\n }, TMP_Complex_polar_2.$$arity = -2);\n self.$attr_reader(\"real\", \"imag\");\n \n Opal.def(self, '$initialize', TMP_Complex_initialize_3 = function $$initialize(real, imag) {\n var self = this;\n\n if (imag == null) {\n imag = 0;\n }\n \n self.real = real;\n return (self.imag = imag);\n }, TMP_Complex_initialize_3.$$arity = -2);\n \n Opal.def(self, '$coerce', TMP_Complex_coerce_4 = function $$coerce(other) {\n var $a, self = this;\n\n if ($truthy($$($nesting, 'Complex')['$==='](other))) {\n return [other, self]\n } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) {\n return [$$($nesting, 'Complex').$new(other, 0), self]\n } else {\n return self.$raise($$($nesting, 'TypeError'), \"\" + (other.$class()) + \" can't be coerced into Complex\")\n }\n }, TMP_Complex_coerce_4.$$arity = 1);\n \n Opal.def(self, '$==', TMP_Complex_$eq$eq_5 = function(other) {\n var $a, self = this;\n\n if ($truthy($$($nesting, 'Complex')['$==='](other))) {\n return (($a = self.real['$=='](other.$real())) ? self.imag['$=='](other.$imag()) : self.real['$=='](other.$real()))\n } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) {\n return (($a = self.real['$=='](other)) ? self.imag['$=='](0) : self.real['$=='](other))\n } else {\n return other['$=='](self)\n }\n }, TMP_Complex_$eq$eq_5.$$arity = 1);\n \n Opal.def(self, '$-@', TMP_Complex_$$_6 = function() {\n var self = this;\n\n return self.$Complex(self.real['$-@'](), self.imag['$-@']())\n }, TMP_Complex_$$_6.$$arity = 0);\n \n Opal.def(self, '$+', TMP_Complex_$_7 = function(other) {\n var $a, self = this;\n\n if ($truthy($$($nesting, 'Complex')['$==='](other))) {\n return self.$Complex($rb_plus(self.real, other.$real()), $rb_plus(self.imag, other.$imag()))\n } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) {\n return self.$Complex($rb_plus(self.real, other), self.imag)\n } else {\n return self.$__coerced__(\"+\", other)\n }\n }, TMP_Complex_$_7.$$arity = 1);\n \n Opal.def(self, '$-', TMP_Complex_$_8 = function(other) {\n var $a, self = this;\n\n if ($truthy($$($nesting, 'Complex')['$==='](other))) {\n return self.$Complex($rb_minus(self.real, other.$real()), $rb_minus(self.imag, other.$imag()))\n } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) {\n return self.$Complex($rb_minus(self.real, other), self.imag)\n } else {\n return self.$__coerced__(\"-\", other)\n }\n }, TMP_Complex_$_8.$$arity = 1);\n \n Opal.def(self, '$*', TMP_Complex_$_9 = function(other) {\n var $a, self = this;\n\n if ($truthy($$($nesting, 'Complex')['$==='](other))) {\n return self.$Complex($rb_minus($rb_times(self.real, other.$real()), $rb_times(self.imag, other.$imag())), $rb_plus($rb_times(self.real, other.$imag()), $rb_times(self.imag, other.$real())))\n } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) {\n return self.$Complex($rb_times(self.real, other), $rb_times(self.imag, other))\n } else {\n return self.$__coerced__(\"*\", other)\n }\n }, TMP_Complex_$_9.$$arity = 1);\n \n Opal.def(self, '$/', TMP_Complex_$_10 = function(other) {\n var $a, $b, $c, $d, self = this;\n\n if ($truthy($$($nesting, 'Complex')['$==='](other))) {\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = $$($nesting, 'Number')['$==='](self.real)) ? self.real['$nan?']() : $d)) ? $c : ($truthy($d = $$($nesting, 'Number')['$==='](self.imag)) ? self.imag['$nan?']() : $d))) ? $b : ($truthy($c = $$($nesting, 'Number')['$==='](other.$real())) ? other.$real()['$nan?']() : $c))) ? $a : ($truthy($b = $$($nesting, 'Number')['$==='](other.$imag())) ? other.$imag()['$nan?']() : $b)))) {\n return $$($nesting, 'Complex').$new($$$($$($nesting, 'Float'), 'NAN'), $$$($$($nesting, 'Float'), 'NAN'))\n } else {\n return $rb_divide($rb_times(self, other.$conj()), other.$abs2())\n }\n } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](other)) ? other['$real?']() : $a))) {\n return self.$Complex(self.real.$quo(other), self.imag.$quo(other))\n } else {\n return self.$__coerced__(\"/\", other)\n }\n }, TMP_Complex_$_10.$$arity = 1);\n \n Opal.def(self, '$**', TMP_Complex_$$_11 = function(other) {\n var $a, $b, $c, $d, self = this, r = nil, theta = nil, ore = nil, oim = nil, nr = nil, ntheta = nil, x = nil, z = nil, n = nil, div = nil, mod = nil;\n\n \n if (other['$=='](0)) {\n return $$($nesting, 'Complex').$new(1, 0)};\n if ($truthy($$($nesting, 'Complex')['$==='](other))) {\n \n $b = self.$polar(), $a = Opal.to_ary($b), (r = ($a[0] == null ? nil : $a[0])), (theta = ($a[1] == null ? nil : $a[1])), $b;\n ore = other.$real();\n oim = other.$imag();\n nr = $$($nesting, 'Math').$exp($rb_minus($rb_times(ore, $$($nesting, 'Math').$log(r)), $rb_times(oim, theta)));\n ntheta = $rb_plus($rb_times(theta, ore), $rb_times(oim, $$($nesting, 'Math').$log(r)));\n return $$($nesting, 'Complex').$polar(nr, ntheta);\n } else if ($truthy($$($nesting, 'Integer')['$==='](other))) {\n if ($truthy($rb_gt(other, 0))) {\n \n x = self;\n z = x;\n n = $rb_minus(other, 1);\n while ($truthy(n['$!='](0))) {\n \n $c = n.$divmod(2), $b = Opal.to_ary($c), (div = ($b[0] == null ? nil : $b[0])), (mod = ($b[1] == null ? nil : $b[1])), $c;\n while (mod['$=='](0)) {\n \n x = self.$Complex($rb_minus($rb_times(x.$real(), x.$real()), $rb_times(x.$imag(), x.$imag())), $rb_times($rb_times(2, x.$real()), x.$imag()));\n n = div;\n $d = n.$divmod(2), $c = Opal.to_ary($d), (div = ($c[0] == null ? nil : $c[0])), (mod = ($c[1] == null ? nil : $c[1])), $d;\n };\n z = $rb_times(z, x);\n n = $rb_minus(n, 1);\n };\n return z;\n } else {\n return $rb_divide($$($nesting, 'Rational').$new(1, 1), self)['$**'](other['$-@']())\n }\n } else if ($truthy(($truthy($a = $$($nesting, 'Float')['$==='](other)) ? $a : $$($nesting, 'Rational')['$==='](other)))) {\n \n $b = self.$polar(), $a = Opal.to_ary($b), (r = ($a[0] == null ? nil : $a[0])), (theta = ($a[1] == null ? nil : $a[1])), $b;\n return $$($nesting, 'Complex').$polar(r['$**'](other), $rb_times(theta, other));\n } else {\n return self.$__coerced__(\"**\", other)\n };\n }, TMP_Complex_$$_11.$$arity = 1);\n \n Opal.def(self, '$abs', TMP_Complex_abs_12 = function $$abs() {\n var self = this;\n\n return $$($nesting, 'Math').$hypot(self.real, self.imag)\n }, TMP_Complex_abs_12.$$arity = 0);\n \n Opal.def(self, '$abs2', TMP_Complex_abs2_13 = function $$abs2() {\n var self = this;\n\n return $rb_plus($rb_times(self.real, self.real), $rb_times(self.imag, self.imag))\n }, TMP_Complex_abs2_13.$$arity = 0);\n \n Opal.def(self, '$angle', TMP_Complex_angle_14 = function $$angle() {\n var self = this;\n\n return $$($nesting, 'Math').$atan2(self.imag, self.real)\n }, TMP_Complex_angle_14.$$arity = 0);\n Opal.alias(self, \"arg\", \"angle\");\n \n Opal.def(self, '$conj', TMP_Complex_conj_15 = function $$conj() {\n var self = this;\n\n return self.$Complex(self.real, self.imag['$-@']())\n }, TMP_Complex_conj_15.$$arity = 0);\n Opal.alias(self, \"conjugate\", \"conj\");\n \n Opal.def(self, '$denominator', TMP_Complex_denominator_16 = function $$denominator() {\n var self = this;\n\n return self.real.$denominator().$lcm(self.imag.$denominator())\n }, TMP_Complex_denominator_16.$$arity = 0);\n Opal.alias(self, \"divide\", \"/\");\n \n Opal.def(self, '$eql?', TMP_Complex_eql$q_17 = function(other) {\n var $a, $b, self = this;\n\n return ($truthy($a = ($truthy($b = $$($nesting, 'Complex')['$==='](other)) ? self.real.$class()['$=='](self.imag.$class()) : $b)) ? self['$=='](other) : $a)\n }, TMP_Complex_eql$q_17.$$arity = 1);\n \n Opal.def(self, '$fdiv', TMP_Complex_fdiv_18 = function $$fdiv(other) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Numeric')['$==='](other))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + (other.$class()) + \" can't be coerced into Complex\")\n };\n return $rb_divide(self, other);\n }, TMP_Complex_fdiv_18.$$arity = 1);\n \n Opal.def(self, '$finite?', TMP_Complex_finite$q_19 = function() {\n var $a, self = this;\n\n return ($truthy($a = self.real['$finite?']()) ? self.imag['$finite?']() : $a)\n }, TMP_Complex_finite$q_19.$$arity = 0);\n \n Opal.def(self, '$hash', TMP_Complex_hash_20 = function $$hash() {\n var self = this;\n\n return \"\" + \"Complex:\" + (self.real) + \":\" + (self.imag)\n }, TMP_Complex_hash_20.$$arity = 0);\n Opal.alias(self, \"imaginary\", \"imag\");\n \n Opal.def(self, '$infinite?', TMP_Complex_infinite$q_21 = function() {\n var $a, self = this;\n\n return ($truthy($a = self.real['$infinite?']()) ? $a : self.imag['$infinite?']())\n }, TMP_Complex_infinite$q_21.$$arity = 0);\n \n Opal.def(self, '$inspect', TMP_Complex_inspect_22 = function $$inspect() {\n var self = this;\n\n return \"\" + \"(\" + (self) + \")\"\n }, TMP_Complex_inspect_22.$$arity = 0);\n Opal.alias(self, \"magnitude\", \"abs\");\n \n Opal.udef(self, '$' + \"negative?\");;\n \n Opal.def(self, '$numerator', TMP_Complex_numerator_23 = function $$numerator() {\n var self = this, d = nil;\n\n \n d = self.$denominator();\n return self.$Complex($rb_times(self.real.$numerator(), $rb_divide(d, self.real.$denominator())), $rb_times(self.imag.$numerator(), $rb_divide(d, self.imag.$denominator())));\n }, TMP_Complex_numerator_23.$$arity = 0);\n Opal.alias(self, \"phase\", \"arg\");\n \n Opal.def(self, '$polar', TMP_Complex_polar_24 = function $$polar() {\n var self = this;\n\n return [self.$abs(), self.$arg()]\n }, TMP_Complex_polar_24.$$arity = 0);\n \n Opal.udef(self, '$' + \"positive?\");;\n Opal.alias(self, \"quo\", \"/\");\n \n Opal.def(self, '$rationalize', TMP_Complex_rationalize_25 = function $$rationalize(eps) {\n var self = this;\n\n \n \n if (arguments.length > 1) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (arguments.length) + \" for 0..1)\");\n }\n ;\n if ($truthy(self.imag['$!='](0))) {\n self.$raise($$($nesting, 'RangeError'), \"\" + \"can't' convert \" + (self) + \" into Rational\")};\n return self.$real().$rationalize(eps);\n }, TMP_Complex_rationalize_25.$$arity = -1);\n \n Opal.def(self, '$real?', TMP_Complex_real$q_26 = function() {\n var self = this;\n\n return false\n }, TMP_Complex_real$q_26.$$arity = 0);\n \n Opal.def(self, '$rect', TMP_Complex_rect_27 = function $$rect() {\n var self = this;\n\n return [self.real, self.imag]\n }, TMP_Complex_rect_27.$$arity = 0);\n Opal.alias(self, \"rectangular\", \"rect\");\n \n Opal.def(self, '$to_f', TMP_Complex_to_f_28 = function $$to_f() {\n var self = this;\n\n \n if (self.imag['$=='](0)) {\n } else {\n self.$raise($$($nesting, 'RangeError'), \"\" + \"can't convert \" + (self) + \" into Float\")\n };\n return self.real.$to_f();\n }, TMP_Complex_to_f_28.$$arity = 0);\n \n Opal.def(self, '$to_i', TMP_Complex_to_i_29 = function $$to_i() {\n var self = this;\n\n \n if (self.imag['$=='](0)) {\n } else {\n self.$raise($$($nesting, 'RangeError'), \"\" + \"can't convert \" + (self) + \" into Integer\")\n };\n return self.real.$to_i();\n }, TMP_Complex_to_i_29.$$arity = 0);\n \n Opal.def(self, '$to_r', TMP_Complex_to_r_30 = function $$to_r() {\n var self = this;\n\n \n if (self.imag['$=='](0)) {\n } else {\n self.$raise($$($nesting, 'RangeError'), \"\" + \"can't convert \" + (self) + \" into Rational\")\n };\n return self.real.$to_r();\n }, TMP_Complex_to_r_30.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_Complex_to_s_31 = function $$to_s() {\n var $a, $b, $c, self = this, result = nil;\n\n \n result = self.real.$inspect();\n result = $rb_plus(result, (function() {if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = $$($nesting, 'Number')['$==='](self.imag)) ? self.imag['$nan?']() : $c)) ? $b : self.imag['$positive?']())) ? $a : self.imag['$zero?']()))) {\n return \"+\"\n } else {\n return \"-\"\n }; return nil; })());\n result = $rb_plus(result, self.imag.$abs().$inspect());\n if ($truthy(($truthy($a = $$($nesting, 'Number')['$==='](self.imag)) ? ($truthy($b = self.imag['$nan?']()) ? $b : self.imag['$infinite?']()) : $a))) {\n result = $rb_plus(result, \"*\")};\n return $rb_plus(result, \"i\");\n }, TMP_Complex_to_s_31.$$arity = 0);\n return Opal.const_set($nesting[0], 'I', self.$new(0, 1));\n })($nesting[0], $$($nesting, 'Numeric'), $nesting);\n return (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_Complex_32;\n\n \n Opal.def(self, '$Complex', TMP_Kernel_Complex_32 = function $$Complex(real, imag) {\n var self = this;\n\n if (imag == null) {\n imag = nil;\n }\n if ($truthy(imag)) {\n return $$($nesting, 'Complex').$new(real, imag)\n } else {\n return $$($nesting, 'Complex').$new(real, 0)\n }\n }, TMP_Kernel_Complex_32.$$arity = -2)\n })($nesting[0], $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/rational\"] = function(Opal) {\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $module = Opal.module;\n\n Opal.add_stubs(['$require', '$to_i', '$==', '$raise', '$<', '$-@', '$new', '$gcd', '$/', '$nil?', '$===', '$reduce', '$to_r', '$equal?', '$!', '$coerce_to!', '$to_f', '$numerator', '$denominator', '$<=>', '$-', '$*', '$__coerced__', '$+', '$Rational', '$>', '$**', '$abs', '$ceil', '$with_precision', '$floor', '$<=', '$truncate', '$send', '$convert']);\n \n self.$require(\"corelib/numeric\");\n (function($base, $super, $parent_nesting) {\n function $Rational(){};\n var self = $Rational = $klass($base, $super, 'Rational', $Rational);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Rational_reduce_1, TMP_Rational_convert_2, TMP_Rational_initialize_3, TMP_Rational_numerator_4, TMP_Rational_denominator_5, TMP_Rational_coerce_6, TMP_Rational_$eq$eq_7, TMP_Rational_$lt$eq$gt_8, TMP_Rational_$_9, TMP_Rational_$_10, TMP_Rational_$_11, TMP_Rational_$_12, TMP_Rational_$$_13, TMP_Rational_abs_14, TMP_Rational_ceil_15, TMP_Rational_floor_16, TMP_Rational_hash_17, TMP_Rational_inspect_18, TMP_Rational_rationalize_19, TMP_Rational_round_20, TMP_Rational_to_f_21, TMP_Rational_to_i_22, TMP_Rational_to_r_23, TMP_Rational_to_s_24, TMP_Rational_truncate_25, TMP_Rational_with_precision_26;\n\n def.num = def.den = nil;\n \n Opal.defs(self, '$reduce', TMP_Rational_reduce_1 = function $$reduce(num, den) {\n var self = this, gcd = nil;\n\n \n num = num.$to_i();\n den = den.$to_i();\n if (den['$=='](0)) {\n self.$raise($$($nesting, 'ZeroDivisionError'), \"divided by 0\")\n } else if ($truthy($rb_lt(den, 0))) {\n \n num = num['$-@']();\n den = den['$-@']();\n } else if (den['$=='](1)) {\n return self.$new(num, den)};\n gcd = num.$gcd(den);\n return self.$new($rb_divide(num, gcd), $rb_divide(den, gcd));\n }, TMP_Rational_reduce_1.$$arity = 2);\n Opal.defs(self, '$convert', TMP_Rational_convert_2 = function $$convert(num, den) {\n var $a, $b, self = this;\n\n \n if ($truthy(($truthy($a = num['$nil?']()) ? $a : den['$nil?']()))) {\n self.$raise($$($nesting, 'TypeError'), \"cannot convert nil into Rational\")};\n if ($truthy(($truthy($a = $$($nesting, 'Integer')['$==='](num)) ? $$($nesting, 'Integer')['$==='](den) : $a))) {\n return self.$reduce(num, den)};\n if ($truthy(($truthy($a = ($truthy($b = $$($nesting, 'Float')['$==='](num)) ? $b : $$($nesting, 'String')['$==='](num))) ? $a : $$($nesting, 'Complex')['$==='](num)))) {\n num = num.$to_r()};\n if ($truthy(($truthy($a = ($truthy($b = $$($nesting, 'Float')['$==='](den)) ? $b : $$($nesting, 'String')['$==='](den))) ? $a : $$($nesting, 'Complex')['$==='](den)))) {\n den = den.$to_r()};\n if ($truthy(($truthy($a = den['$equal?'](1)) ? $$($nesting, 'Integer')['$==='](num)['$!']() : $a))) {\n return $$($nesting, 'Opal')['$coerce_to!'](num, $$($nesting, 'Rational'), \"to_r\")\n } else if ($truthy(($truthy($a = $$($nesting, 'Numeric')['$==='](num)) ? $$($nesting, 'Numeric')['$==='](den) : $a))) {\n return $rb_divide(num, den)\n } else {\n return self.$reduce(num, den)\n };\n }, TMP_Rational_convert_2.$$arity = 2);\n \n Opal.def(self, '$initialize', TMP_Rational_initialize_3 = function $$initialize(num, den) {\n var self = this;\n\n \n self.num = num;\n return (self.den = den);\n }, TMP_Rational_initialize_3.$$arity = 2);\n \n Opal.def(self, '$numerator', TMP_Rational_numerator_4 = function $$numerator() {\n var self = this;\n\n return self.num\n }, TMP_Rational_numerator_4.$$arity = 0);\n \n Opal.def(self, '$denominator', TMP_Rational_denominator_5 = function $$denominator() {\n var self = this;\n\n return self.den\n }, TMP_Rational_denominator_5.$$arity = 0);\n \n Opal.def(self, '$coerce', TMP_Rational_coerce_6 = function $$coerce(other) {\n var self = this, $case = nil;\n\n return (function() {$case = other;\n if ($$($nesting, 'Rational')['$===']($case)) {return [other, self]}\n else if ($$($nesting, 'Integer')['$===']($case)) {return [other.$to_r(), self]}\n else if ($$($nesting, 'Float')['$===']($case)) {return [other, self.$to_f()]}\n else { return nil }})()\n }, TMP_Rational_coerce_6.$$arity = 1);\n \n Opal.def(self, '$==', TMP_Rational_$eq$eq_7 = function(other) {\n var $a, self = this, $case = nil;\n\n return (function() {$case = other;\n if ($$($nesting, 'Rational')['$===']($case)) {return (($a = self.num['$=='](other.$numerator())) ? self.den['$=='](other.$denominator()) : self.num['$=='](other.$numerator()))}\n else if ($$($nesting, 'Integer')['$===']($case)) {return (($a = self.num['$=='](other)) ? self.den['$=='](1) : self.num['$=='](other))}\n else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$=='](other)}\n else {return other['$=='](self)}})()\n }, TMP_Rational_$eq$eq_7.$$arity = 1);\n \n Opal.def(self, '$<=>', TMP_Rational_$lt$eq$gt_8 = function(other) {\n var self = this, $case = nil;\n\n return (function() {$case = other;\n if ($$($nesting, 'Rational')['$===']($case)) {return $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator()))['$<=>'](0)}\n else if ($$($nesting, 'Integer')['$===']($case)) {return $rb_minus(self.num, $rb_times(self.den, other))['$<=>'](0)}\n else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$<=>'](other)}\n else {return self.$__coerced__(\"<=>\", other)}})()\n }, TMP_Rational_$lt$eq$gt_8.$$arity = 1);\n \n Opal.def(self, '$+', TMP_Rational_$_9 = function(other) {\n var self = this, $case = nil, num = nil, den = nil;\n\n return (function() {$case = other;\n if ($$($nesting, 'Rational')['$===']($case)) {\n num = $rb_plus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator()));\n den = $rb_times(self.den, other.$denominator());\n return self.$Rational(num, den);}\n else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_plus(self.num, $rb_times(other, self.den)), self.den)}\n else if ($$($nesting, 'Float')['$===']($case)) {return $rb_plus(self.$to_f(), other)}\n else {return self.$__coerced__(\"+\", other)}})()\n }, TMP_Rational_$_9.$$arity = 1);\n \n Opal.def(self, '$-', TMP_Rational_$_10 = function(other) {\n var self = this, $case = nil, num = nil, den = nil;\n\n return (function() {$case = other;\n if ($$($nesting, 'Rational')['$===']($case)) {\n num = $rb_minus($rb_times(self.num, other.$denominator()), $rb_times(self.den, other.$numerator()));\n den = $rb_times(self.den, other.$denominator());\n return self.$Rational(num, den);}\n else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_minus(self.num, $rb_times(other, self.den)), self.den)}\n else if ($$($nesting, 'Float')['$===']($case)) {return $rb_minus(self.$to_f(), other)}\n else {return self.$__coerced__(\"-\", other)}})()\n }, TMP_Rational_$_10.$$arity = 1);\n \n Opal.def(self, '$*', TMP_Rational_$_11 = function(other) {\n var self = this, $case = nil, num = nil, den = nil;\n\n return (function() {$case = other;\n if ($$($nesting, 'Rational')['$===']($case)) {\n num = $rb_times(self.num, other.$numerator());\n den = $rb_times(self.den, other.$denominator());\n return self.$Rational(num, den);}\n else if ($$($nesting, 'Integer')['$===']($case)) {return self.$Rational($rb_times(self.num, other), self.den)}\n else if ($$($nesting, 'Float')['$===']($case)) {return $rb_times(self.$to_f(), other)}\n else {return self.$__coerced__(\"*\", other)}})()\n }, TMP_Rational_$_11.$$arity = 1);\n \n Opal.def(self, '$/', TMP_Rational_$_12 = function(other) {\n var self = this, $case = nil, num = nil, den = nil;\n\n return (function() {$case = other;\n if ($$($nesting, 'Rational')['$===']($case)) {\n num = $rb_times(self.num, other.$denominator());\n den = $rb_times(self.den, other.$numerator());\n return self.$Rational(num, den);}\n else if ($$($nesting, 'Integer')['$===']($case)) {if (other['$=='](0)) {\n return $rb_divide(self.$to_f(), 0.0)\n } else {\n return self.$Rational(self.num, $rb_times(self.den, other))\n }}\n else if ($$($nesting, 'Float')['$===']($case)) {return $rb_divide(self.$to_f(), other)}\n else {return self.$__coerced__(\"/\", other)}})()\n }, TMP_Rational_$_12.$$arity = 1);\n \n Opal.def(self, '$**', TMP_Rational_$$_13 = function(other) {\n var $a, self = this, $case = nil;\n\n return (function() {$case = other;\n if ($$($nesting, 'Integer')['$===']($case)) {if ($truthy((($a = self['$=='](0)) ? $rb_lt(other, 0) : self['$=='](0)))) {\n return $$$($$($nesting, 'Float'), 'INFINITY')\n } else if ($truthy($rb_gt(other, 0))) {\n return self.$Rational(self.num['$**'](other), self.den['$**'](other))\n } else if ($truthy($rb_lt(other, 0))) {\n return self.$Rational(self.den['$**'](other['$-@']()), self.num['$**'](other['$-@']()))\n } else {\n return self.$Rational(1, 1)\n }}\n else if ($$($nesting, 'Float')['$===']($case)) {return self.$to_f()['$**'](other)}\n else if ($$($nesting, 'Rational')['$===']($case)) {if (other['$=='](0)) {\n return self.$Rational(1, 1)\n } else if (other.$denominator()['$=='](1)) {\n if ($truthy($rb_lt(other, 0))) {\n return self.$Rational(self.den['$**'](other.$numerator().$abs()), self.num['$**'](other.$numerator().$abs()))\n } else {\n return self.$Rational(self.num['$**'](other.$numerator()), self.den['$**'](other.$numerator()))\n }\n } else if ($truthy((($a = self['$=='](0)) ? $rb_lt(other, 0) : self['$=='](0)))) {\n return self.$raise($$($nesting, 'ZeroDivisionError'), \"divided by 0\")\n } else {\n return self.$to_f()['$**'](other)\n }}\n else {return self.$__coerced__(\"**\", other)}})()\n }, TMP_Rational_$$_13.$$arity = 1);\n \n Opal.def(self, '$abs', TMP_Rational_abs_14 = function $$abs() {\n var self = this;\n\n return self.$Rational(self.num.$abs(), self.den.$abs())\n }, TMP_Rational_abs_14.$$arity = 0);\n \n Opal.def(self, '$ceil', TMP_Rational_ceil_15 = function $$ceil(precision) {\n var self = this;\n\n if (precision == null) {\n precision = 0;\n }\n if (precision['$=='](0)) {\n return $rb_divide(self.num['$-@'](), self.den)['$-@']().$ceil()\n } else {\n return self.$with_precision(\"ceil\", precision)\n }\n }, TMP_Rational_ceil_15.$$arity = -1);\n Opal.alias(self, \"divide\", \"/\");\n \n Opal.def(self, '$floor', TMP_Rational_floor_16 = function $$floor(precision) {\n var self = this;\n\n if (precision == null) {\n precision = 0;\n }\n if (precision['$=='](0)) {\n return $rb_divide(self.num['$-@'](), self.den)['$-@']().$floor()\n } else {\n return self.$with_precision(\"floor\", precision)\n }\n }, TMP_Rational_floor_16.$$arity = -1);\n \n Opal.def(self, '$hash', TMP_Rational_hash_17 = function $$hash() {\n var self = this;\n\n return \"\" + \"Rational:\" + (self.num) + \":\" + (self.den)\n }, TMP_Rational_hash_17.$$arity = 0);\n \n Opal.def(self, '$inspect', TMP_Rational_inspect_18 = function $$inspect() {\n var self = this;\n\n return \"\" + \"(\" + (self) + \")\"\n }, TMP_Rational_inspect_18.$$arity = 0);\n Opal.alias(self, \"quo\", \"/\");\n \n Opal.def(self, '$rationalize', TMP_Rational_rationalize_19 = function $$rationalize(eps) {\n var self = this;\n\n \n if (arguments.length > 1) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (\" + (arguments.length) + \" for 0..1)\");\n }\n\n if (eps == null) {\n return self;\n }\n\n var e = eps.$abs(),\n a = $rb_minus(self, e),\n b = $rb_plus(self, e);\n\n var p0 = 0,\n p1 = 1,\n q0 = 1,\n q1 = 0,\n p2, q2;\n\n var c, k, t;\n\n while (true) {\n c = (a).$ceil();\n\n if ($rb_le(c, b)) {\n break;\n }\n\n k = c - 1;\n p2 = k * p1 + p0;\n q2 = k * q1 + q0;\n t = $rb_divide(1, $rb_minus(b, k));\n b = $rb_divide(1, $rb_minus(a, k));\n a = t;\n\n p0 = p1;\n q0 = q1;\n p1 = p2;\n q1 = q2;\n }\n\n return self.$Rational(c * p1 + p0, c * q1 + q0);\n \n }, TMP_Rational_rationalize_19.$$arity = -1);\n \n Opal.def(self, '$round', TMP_Rational_round_20 = function $$round(precision) {\n var self = this, num = nil, den = nil, approx = nil;\n\n if (precision == null) {\n precision = 0;\n }\n \n if (precision['$=='](0)) {\n } else {\n return self.$with_precision(\"round\", precision)\n };\n if (self.num['$=='](0)) {\n return 0};\n if (self.den['$=='](1)) {\n return self.num};\n num = $rb_plus($rb_times(self.num.$abs(), 2), self.den);\n den = $rb_times(self.den, 2);\n approx = $rb_divide(num, den).$truncate();\n if ($truthy($rb_lt(self.num, 0))) {\n return approx['$-@']()\n } else {\n return approx\n };\n }, TMP_Rational_round_20.$$arity = -1);\n \n Opal.def(self, '$to_f', TMP_Rational_to_f_21 = function $$to_f() {\n var self = this;\n\n return $rb_divide(self.num, self.den)\n }, TMP_Rational_to_f_21.$$arity = 0);\n \n Opal.def(self, '$to_i', TMP_Rational_to_i_22 = function $$to_i() {\n var self = this;\n\n return self.$truncate()\n }, TMP_Rational_to_i_22.$$arity = 0);\n \n Opal.def(self, '$to_r', TMP_Rational_to_r_23 = function $$to_r() {\n var self = this;\n\n return self\n }, TMP_Rational_to_r_23.$$arity = 0);\n \n Opal.def(self, '$to_s', TMP_Rational_to_s_24 = function $$to_s() {\n var self = this;\n\n return \"\" + (self.num) + \"/\" + (self.den)\n }, TMP_Rational_to_s_24.$$arity = 0);\n \n Opal.def(self, '$truncate', TMP_Rational_truncate_25 = function $$truncate(precision) {\n var self = this;\n\n if (precision == null) {\n precision = 0;\n }\n if (precision['$=='](0)) {\n if ($truthy($rb_lt(self.num, 0))) {\n return self.$ceil()\n } else {\n return self.$floor()\n }\n } else {\n return self.$with_precision(\"truncate\", precision)\n }\n }, TMP_Rational_truncate_25.$$arity = -1);\n return (Opal.def(self, '$with_precision', TMP_Rational_with_precision_26 = function $$with_precision(method, precision) {\n var self = this, p = nil, s = nil;\n\n \n if ($truthy($$($nesting, 'Integer')['$==='](precision))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"not an Integer\")\n };\n p = (10)['$**'](precision);\n s = $rb_times(self, p);\n if ($truthy($rb_lt(precision, 1))) {\n return $rb_divide(s.$send(method), p).$to_i()\n } else {\n return self.$Rational(s.$send(method), p)\n };\n }, TMP_Rational_with_precision_26.$$arity = 2), nil) && 'with_precision';\n })($nesting[0], $$($nesting, 'Numeric'), $nesting);\n return (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_Rational_27;\n\n \n Opal.def(self, '$Rational', TMP_Kernel_Rational_27 = function $$Rational(numerator, denominator) {\n var self = this;\n\n if (denominator == null) {\n denominator = 1;\n }\n return $$($nesting, 'Rational').$convert(numerator, denominator)\n }, TMP_Kernel_Rational_27.$$arity = -2)\n })($nesting[0], $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/time\"] = function(Opal) {\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range;\n\n Opal.add_stubs(['$require', '$include', '$===', '$raise', '$coerce_to!', '$respond_to?', '$to_str', '$to_i', '$new', '$<=>', '$to_f', '$nil?', '$>', '$<', '$strftime', '$year', '$month', '$day', '$+', '$round', '$/', '$-', '$copy_instance_variables', '$initialize_dup', '$is_a?', '$zero?', '$wday', '$utc?', '$mon', '$yday', '$hour', '$min', '$sec', '$rjust', '$ljust', '$zone', '$to_s', '$[]', '$cweek_cyear', '$isdst', '$<=', '$!=', '$==', '$ceil']);\n \n self.$require(\"corelib/comparable\");\n return (function($base, $super, $parent_nesting) {\n function $Time(){};\n var self = $Time = $klass($base, $super, 'Time', $Time);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Time_at_1, TMP_Time_new_2, TMP_Time_local_3, TMP_Time_gm_4, TMP_Time_now_5, TMP_Time_$_6, TMP_Time_$_7, TMP_Time_$lt$eq$gt_8, TMP_Time_$eq$eq_9, TMP_Time_asctime_10, TMP_Time_day_11, TMP_Time_yday_12, TMP_Time_isdst_13, TMP_Time_dup_14, TMP_Time_eql$q_15, TMP_Time_friday$q_16, TMP_Time_hash_17, TMP_Time_hour_18, TMP_Time_inspect_19, TMP_Time_min_20, TMP_Time_mon_21, TMP_Time_monday$q_22, TMP_Time_saturday$q_23, TMP_Time_sec_24, TMP_Time_succ_25, TMP_Time_usec_26, TMP_Time_zone_27, TMP_Time_getgm_28, TMP_Time_gmtime_29, TMP_Time_gmt$q_30, TMP_Time_gmt_offset_31, TMP_Time_strftime_32, TMP_Time_sunday$q_33, TMP_Time_thursday$q_34, TMP_Time_to_a_35, TMP_Time_to_f_36, TMP_Time_to_i_37, TMP_Time_tuesday$q_38, TMP_Time_wday_39, TMP_Time_wednesday$q_40, TMP_Time_year_41, TMP_Time_cweek_cyear_42;\n\n \n self.$include($$($nesting, 'Comparable'));\n \n var days_of_week = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"],\n short_days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n short_months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n long_months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n ;\n Opal.defs(self, '$at', TMP_Time_at_1 = function $$at(seconds, frac) {\n var self = this;\n\n \n var result;\n\n if ($$($nesting, 'Time')['$==='](seconds)) {\n if (frac !== undefined) {\n self.$raise($$($nesting, 'TypeError'), \"can't convert Time into an exact number\")\n }\n result = new Date(seconds.getTime());\n result.is_utc = seconds.is_utc;\n return result;\n }\n\n if (!seconds.$$is_number) {\n seconds = $$($nesting, 'Opal')['$coerce_to!'](seconds, $$($nesting, 'Integer'), \"to_int\");\n }\n\n if (frac === undefined) {\n return new Date(seconds * 1000);\n }\n\n if (!frac.$$is_number) {\n frac = $$($nesting, 'Opal')['$coerce_to!'](frac, $$($nesting, 'Integer'), \"to_int\");\n }\n\n return new Date(seconds * 1000 + (frac / 1000));\n \n }, TMP_Time_at_1.$$arity = -2);\n \n function time_params(year, month, day, hour, min, sec) {\n if (year.$$is_string) {\n year = parseInt(year, 10);\n } else {\n year = $$($nesting, 'Opal')['$coerce_to!'](year, $$($nesting, 'Integer'), \"to_int\");\n }\n\n if (month === nil) {\n month = 1;\n } else if (!month.$$is_number) {\n if ((month)['$respond_to?'](\"to_str\")) {\n month = (month).$to_str();\n switch (month.toLowerCase()) {\n case 'jan': month = 1; break;\n case 'feb': month = 2; break;\n case 'mar': month = 3; break;\n case 'apr': month = 4; break;\n case 'may': month = 5; break;\n case 'jun': month = 6; break;\n case 'jul': month = 7; break;\n case 'aug': month = 8; break;\n case 'sep': month = 9; break;\n case 'oct': month = 10; break;\n case 'nov': month = 11; break;\n case 'dec': month = 12; break;\n default: month = (month).$to_i();\n }\n } else {\n month = $$($nesting, 'Opal')['$coerce_to!'](month, $$($nesting, 'Integer'), \"to_int\");\n }\n }\n\n if (month < 1 || month > 12) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"month out of range: \" + (month))\n }\n month = month - 1;\n\n if (day === nil) {\n day = 1;\n } else if (day.$$is_string) {\n day = parseInt(day, 10);\n } else {\n day = $$($nesting, 'Opal')['$coerce_to!'](day, $$($nesting, 'Integer'), \"to_int\");\n }\n\n if (day < 1 || day > 31) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"day out of range: \" + (day))\n }\n\n if (hour === nil) {\n hour = 0;\n } else if (hour.$$is_string) {\n hour = parseInt(hour, 10);\n } else {\n hour = $$($nesting, 'Opal')['$coerce_to!'](hour, $$($nesting, 'Integer'), \"to_int\");\n }\n\n if (hour < 0 || hour > 24) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"hour out of range: \" + (hour))\n }\n\n if (min === nil) {\n min = 0;\n } else if (min.$$is_string) {\n min = parseInt(min, 10);\n } else {\n min = $$($nesting, 'Opal')['$coerce_to!'](min, $$($nesting, 'Integer'), \"to_int\");\n }\n\n if (min < 0 || min > 59) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"min out of range: \" + (min))\n }\n\n if (sec === nil) {\n sec = 0;\n } else if (!sec.$$is_number) {\n if (sec.$$is_string) {\n sec = parseInt(sec, 10);\n } else {\n sec = $$($nesting, 'Opal')['$coerce_to!'](sec, $$($nesting, 'Integer'), \"to_int\");\n }\n }\n\n if (sec < 0 || sec > 60) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"sec out of range: \" + (sec))\n }\n\n return [year, month, day, hour, min, sec];\n }\n ;\n Opal.defs(self, '$new', TMP_Time_new_2 = function(year, month, day, hour, min, sec, utc_offset) {\n var self = this;\n\n if (month == null) {\n month = nil;\n }\n if (day == null) {\n day = nil;\n }\n if (hour == null) {\n hour = nil;\n }\n if (min == null) {\n min = nil;\n }\n if (sec == null) {\n sec = nil;\n }\n if (utc_offset == null) {\n utc_offset = nil;\n }\n \n var args, result;\n\n if (year === undefined) {\n return new Date();\n }\n\n if (utc_offset !== nil) {\n self.$raise($$($nesting, 'ArgumentError'), \"Opal does not support explicitly specifying UTC offset for Time\")\n }\n\n args = time_params(year, month, day, hour, min, sec);\n year = args[0];\n month = args[1];\n day = args[2];\n hour = args[3];\n min = args[4];\n sec = args[5];\n\n result = new Date(year, month, day, hour, min, 0, sec * 1000);\n if (year < 100) {\n result.setFullYear(year);\n }\n return result;\n \n }, TMP_Time_new_2.$$arity = -1);\n Opal.defs(self, '$local', TMP_Time_local_3 = function $$local(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) {\n var self = this;\n\n if (month == null) {\n month = nil;\n }\n if (day == null) {\n day = nil;\n }\n if (hour == null) {\n hour = nil;\n }\n if (min == null) {\n min = nil;\n }\n if (sec == null) {\n sec = nil;\n }\n if (millisecond == null) {\n millisecond = nil;\n }\n if (_dummy1 == null) {\n _dummy1 = nil;\n }\n if (_dummy2 == null) {\n _dummy2 = nil;\n }\n if (_dummy3 == null) {\n _dummy3 = nil;\n }\n \n var args, result;\n\n if (arguments.length === 10) {\n args = $slice.call(arguments);\n year = args[5];\n month = args[4];\n day = args[3];\n hour = args[2];\n min = args[1];\n sec = args[0];\n }\n\n args = time_params(year, month, day, hour, min, sec);\n year = args[0];\n month = args[1];\n day = args[2];\n hour = args[3];\n min = args[4];\n sec = args[5];\n\n result = new Date(year, month, day, hour, min, 0, sec * 1000);\n if (year < 100) {\n result.setFullYear(year);\n }\n return result;\n \n }, TMP_Time_local_3.$$arity = -2);\n Opal.defs(self, '$gm', TMP_Time_gm_4 = function $$gm(year, month, day, hour, min, sec, millisecond, _dummy1, _dummy2, _dummy3) {\n var self = this;\n\n if (month == null) {\n month = nil;\n }\n if (day == null) {\n day = nil;\n }\n if (hour == null) {\n hour = nil;\n }\n if (min == null) {\n min = nil;\n }\n if (sec == null) {\n sec = nil;\n }\n if (millisecond == null) {\n millisecond = nil;\n }\n if (_dummy1 == null) {\n _dummy1 = nil;\n }\n if (_dummy2 == null) {\n _dummy2 = nil;\n }\n if (_dummy3 == null) {\n _dummy3 = nil;\n }\n \n var args, result;\n\n if (arguments.length === 10) {\n args = $slice.call(arguments);\n year = args[5];\n month = args[4];\n day = args[3];\n hour = args[2];\n min = args[1];\n sec = args[0];\n }\n\n args = time_params(year, month, day, hour, min, sec);\n year = args[0];\n month = args[1];\n day = args[2];\n hour = args[3];\n min = args[4];\n sec = args[5];\n\n result = new Date(Date.UTC(year, month, day, hour, min, 0, sec * 1000));\n if (year < 100) {\n result.setUTCFullYear(year);\n }\n result.is_utc = true;\n return result;\n \n }, TMP_Time_gm_4.$$arity = -2);\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n Opal.alias(self, \"mktime\", \"local\");\n return Opal.alias(self, \"utc\", \"gm\");\n })(Opal.get_singleton_class(self), $nesting);\n Opal.defs(self, '$now', TMP_Time_now_5 = function $$now() {\n var self = this;\n\n return self.$new()\n }, TMP_Time_now_5.$$arity = 0);\n \n Opal.def(self, '$+', TMP_Time_$_6 = function(other) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Time')['$==='](other))) {\n self.$raise($$($nesting, 'TypeError'), \"time + time?\")};\n \n if (!other.$$is_number) {\n other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Integer'), \"to_int\");\n }\n var result = new Date(self.getTime() + (other * 1000));\n result.is_utc = self.is_utc;\n return result;\n ;\n }, TMP_Time_$_6.$$arity = 1);\n \n Opal.def(self, '$-', TMP_Time_$_7 = function(other) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Time')['$==='](other))) {\n return (self.getTime() - other.getTime()) / 1000};\n \n if (!other.$$is_number) {\n other = $$($nesting, 'Opal')['$coerce_to!'](other, $$($nesting, 'Integer'), \"to_int\");\n }\n var result = new Date(self.getTime() - (other * 1000));\n result.is_utc = self.is_utc;\n return result;\n ;\n }, TMP_Time_$_7.$$arity = 1);\n \n Opal.def(self, '$<=>', TMP_Time_$lt$eq$gt_8 = function(other) {\n var self = this, r = nil;\n\n if ($truthy($$($nesting, 'Time')['$==='](other))) {\n return self.$to_f()['$<=>'](other.$to_f())\n } else {\n \n r = other['$<=>'](self);\n if ($truthy(r['$nil?']())) {\n return nil\n } else if ($truthy($rb_gt(r, 0))) {\n return -1\n } else if ($truthy($rb_lt(r, 0))) {\n return 1\n } else {\n return 0\n };\n }\n }, TMP_Time_$lt$eq$gt_8.$$arity = 1);\n \n Opal.def(self, '$==', TMP_Time_$eq$eq_9 = function(other) {\n var $a, self = this;\n\n return ($truthy($a = $$($nesting, 'Time')['$==='](other)) ? self.$to_f() === other.$to_f() : $a)\n }, TMP_Time_$eq$eq_9.$$arity = 1);\n \n Opal.def(self, '$asctime', TMP_Time_asctime_10 = function $$asctime() {\n var self = this;\n\n return self.$strftime(\"%a %b %e %H:%M:%S %Y\")\n }, TMP_Time_asctime_10.$$arity = 0);\n Opal.alias(self, \"ctime\", \"asctime\");\n \n Opal.def(self, '$day', TMP_Time_day_11 = function $$day() {\n var self = this;\n\n return self.is_utc ? self.getUTCDate() : self.getDate();\n }, TMP_Time_day_11.$$arity = 0);\n \n Opal.def(self, '$yday', TMP_Time_yday_12 = function $$yday() {\n var self = this, start_of_year = nil, start_of_day = nil, one_day = nil;\n\n \n start_of_year = $$($nesting, 'Time').$new(self.$year()).$to_i();\n start_of_day = $$($nesting, 'Time').$new(self.$year(), self.$month(), self.$day()).$to_i();\n one_day = 86400;\n return $rb_plus($rb_divide($rb_minus(start_of_day, start_of_year), one_day).$round(), 1);\n }, TMP_Time_yday_12.$$arity = 0);\n \n Opal.def(self, '$isdst', TMP_Time_isdst_13 = function $$isdst() {\n var self = this;\n\n \n var jan = new Date(self.getFullYear(), 0, 1),\n jul = new Date(self.getFullYear(), 6, 1);\n return self.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n \n }, TMP_Time_isdst_13.$$arity = 0);\n Opal.alias(self, \"dst?\", \"isdst\");\n \n Opal.def(self, '$dup', TMP_Time_dup_14 = function $$dup() {\n var self = this, copy = nil;\n\n \n copy = new Date(self.getTime());\n copy.$copy_instance_variables(self);\n copy.$initialize_dup(self);\n return copy;\n }, TMP_Time_dup_14.$$arity = 0);\n \n Opal.def(self, '$eql?', TMP_Time_eql$q_15 = function(other) {\n var $a, self = this;\n\n return ($truthy($a = other['$is_a?']($$($nesting, 'Time'))) ? self['$<=>'](other)['$zero?']() : $a)\n }, TMP_Time_eql$q_15.$$arity = 1);\n \n Opal.def(self, '$friday?', TMP_Time_friday$q_16 = function() {\n var self = this;\n\n return self.$wday() == 5\n }, TMP_Time_friday$q_16.$$arity = 0);\n \n Opal.def(self, '$hash', TMP_Time_hash_17 = function $$hash() {\n var self = this;\n\n return 'Time:' + self.getTime();\n }, TMP_Time_hash_17.$$arity = 0);\n \n Opal.def(self, '$hour', TMP_Time_hour_18 = function $$hour() {\n var self = this;\n\n return self.is_utc ? self.getUTCHours() : self.getHours();\n }, TMP_Time_hour_18.$$arity = 0);\n \n Opal.def(self, '$inspect', TMP_Time_inspect_19 = function $$inspect() {\n var self = this;\n\n if ($truthy(self['$utc?']())) {\n return self.$strftime(\"%Y-%m-%d %H:%M:%S UTC\")\n } else {\n return self.$strftime(\"%Y-%m-%d %H:%M:%S %z\")\n }\n }, TMP_Time_inspect_19.$$arity = 0);\n Opal.alias(self, \"mday\", \"day\");\n \n Opal.def(self, '$min', TMP_Time_min_20 = function $$min() {\n var self = this;\n\n return self.is_utc ? self.getUTCMinutes() : self.getMinutes();\n }, TMP_Time_min_20.$$arity = 0);\n \n Opal.def(self, '$mon', TMP_Time_mon_21 = function $$mon() {\n var self = this;\n\n return (self.is_utc ? self.getUTCMonth() : self.getMonth()) + 1;\n }, TMP_Time_mon_21.$$arity = 0);\n \n Opal.def(self, '$monday?', TMP_Time_monday$q_22 = function() {\n var self = this;\n\n return self.$wday() == 1\n }, TMP_Time_monday$q_22.$$arity = 0);\n Opal.alias(self, \"month\", \"mon\");\n \n Opal.def(self, '$saturday?', TMP_Time_saturday$q_23 = function() {\n var self = this;\n\n return self.$wday() == 6\n }, TMP_Time_saturday$q_23.$$arity = 0);\n \n Opal.def(self, '$sec', TMP_Time_sec_24 = function $$sec() {\n var self = this;\n\n return self.is_utc ? self.getUTCSeconds() : self.getSeconds();\n }, TMP_Time_sec_24.$$arity = 0);\n \n Opal.def(self, '$succ', TMP_Time_succ_25 = function $$succ() {\n var self = this;\n\n \n var result = new Date(self.getTime() + 1000);\n result.is_utc = self.is_utc;\n return result;\n \n }, TMP_Time_succ_25.$$arity = 0);\n \n Opal.def(self, '$usec', TMP_Time_usec_26 = function $$usec() {\n var self = this;\n\n return self.getMilliseconds() * 1000;\n }, TMP_Time_usec_26.$$arity = 0);\n \n Opal.def(self, '$zone', TMP_Time_zone_27 = function $$zone() {\n var self = this;\n\n \n var string = self.toString(),\n result;\n\n if (string.indexOf('(') == -1) {\n result = string.match(/[A-Z]{3,4}/)[0];\n }\n else {\n result = string.match(/\\((.+)\\)(?:\\s|$)/)[1]\n }\n\n if (result == \"GMT\" && /(GMT\\W*\\d{4})/.test(string)) {\n return RegExp.$1;\n }\n else {\n return result;\n }\n \n }, TMP_Time_zone_27.$$arity = 0);\n \n Opal.def(self, '$getgm', TMP_Time_getgm_28 = function $$getgm() {\n var self = this;\n\n \n var result = new Date(self.getTime());\n result.is_utc = true;\n return result;\n \n }, TMP_Time_getgm_28.$$arity = 0);\n Opal.alias(self, \"getutc\", \"getgm\");\n \n Opal.def(self, '$gmtime', TMP_Time_gmtime_29 = function $$gmtime() {\n var self = this;\n\n \n self.is_utc = true;\n return self;\n \n }, TMP_Time_gmtime_29.$$arity = 0);\n Opal.alias(self, \"utc\", \"gmtime\");\n \n Opal.def(self, '$gmt?', TMP_Time_gmt$q_30 = function() {\n var self = this;\n\n return self.is_utc === true;\n }, TMP_Time_gmt$q_30.$$arity = 0);\n \n Opal.def(self, '$gmt_offset', TMP_Time_gmt_offset_31 = function $$gmt_offset() {\n var self = this;\n\n return -self.getTimezoneOffset() * 60;\n }, TMP_Time_gmt_offset_31.$$arity = 0);\n \n Opal.def(self, '$strftime', TMP_Time_strftime_32 = function $$strftime(format) {\n var self = this;\n\n \n return format.replace(/%([\\-_#^0]*:{0,2})(\\d+)?([EO]*)(.)/g, function(full, flags, width, _, conv) {\n var result = \"\",\n zero = flags.indexOf('0') !== -1,\n pad = flags.indexOf('-') === -1,\n blank = flags.indexOf('_') !== -1,\n upcase = flags.indexOf('^') !== -1,\n invert = flags.indexOf('#') !== -1,\n colons = (flags.match(':') || []).length;\n\n width = parseInt(width, 10);\n\n if (zero && blank) {\n if (flags.indexOf('0') < flags.indexOf('_')) {\n zero = false;\n }\n else {\n blank = false;\n }\n }\n\n switch (conv) {\n case 'Y':\n result += self.$year();\n break;\n\n case 'C':\n zero = !blank;\n result += Math.round(self.$year() / 100);\n break;\n\n case 'y':\n zero = !blank;\n result += (self.$year() % 100);\n break;\n\n case 'm':\n zero = !blank;\n result += self.$mon();\n break;\n\n case 'B':\n result += long_months[self.$mon() - 1];\n break;\n\n case 'b':\n case 'h':\n blank = !zero;\n result += short_months[self.$mon() - 1];\n break;\n\n case 'd':\n zero = !blank\n result += self.$day();\n break;\n\n case 'e':\n blank = !zero\n result += self.$day();\n break;\n\n case 'j':\n result += self.$yday();\n break;\n\n case 'H':\n zero = !blank;\n result += self.$hour();\n break;\n\n case 'k':\n blank = !zero;\n result += self.$hour();\n break;\n\n case 'I':\n zero = !blank;\n result += (self.$hour() % 12 || 12);\n break;\n\n case 'l':\n blank = !zero;\n result += (self.$hour() % 12 || 12);\n break;\n\n case 'P':\n result += (self.$hour() >= 12 ? \"pm\" : \"am\");\n break;\n\n case 'p':\n result += (self.$hour() >= 12 ? \"PM\" : \"AM\");\n break;\n\n case 'M':\n zero = !blank;\n result += self.$min();\n break;\n\n case 'S':\n zero = !blank;\n result += self.$sec()\n break;\n\n case 'L':\n zero = !blank;\n width = isNaN(width) ? 3 : width;\n result += self.getMilliseconds();\n break;\n\n case 'N':\n width = isNaN(width) ? 9 : width;\n result += (self.getMilliseconds().toString()).$rjust(3, \"0\");\n result = (result).$ljust(width, \"0\");\n break;\n\n case 'z':\n var offset = self.getTimezoneOffset(),\n hours = Math.floor(Math.abs(offset) / 60),\n minutes = Math.abs(offset) % 60;\n\n result += offset < 0 ? \"+\" : \"-\";\n result += hours < 10 ? \"0\" : \"\";\n result += hours;\n\n if (colons > 0) {\n result += \":\";\n }\n\n result += minutes < 10 ? \"0\" : \"\";\n result += minutes;\n\n if (colons > 1) {\n result += \":00\";\n }\n\n break;\n\n case 'Z':\n result += self.$zone();\n break;\n\n case 'A':\n result += days_of_week[self.$wday()];\n break;\n\n case 'a':\n result += short_days[self.$wday()];\n break;\n\n case 'u':\n result += (self.$wday() + 1);\n break;\n\n case 'w':\n result += self.$wday();\n break;\n\n case 'V':\n result += self.$cweek_cyear()['$[]'](0).$to_s().$rjust(2, \"0\");\n break;\n\n case 'G':\n result += self.$cweek_cyear()['$[]'](1);\n break;\n\n case 'g':\n result += self.$cweek_cyear()['$[]'](1)['$[]']($range(-2, -1, false));\n break;\n\n case 's':\n result += self.$to_i();\n break;\n\n case 'n':\n result += \"\\n\";\n break;\n\n case 't':\n result += \"\\t\";\n break;\n\n case '%':\n result += \"%\";\n break;\n\n case 'c':\n result += self.$strftime(\"%a %b %e %T %Y\");\n break;\n\n case 'D':\n case 'x':\n result += self.$strftime(\"%m/%d/%y\");\n break;\n\n case 'F':\n result += self.$strftime(\"%Y-%m-%d\");\n break;\n\n case 'v':\n result += self.$strftime(\"%e-%^b-%4Y\");\n break;\n\n case 'r':\n result += self.$strftime(\"%I:%M:%S %p\");\n break;\n\n case 'R':\n result += self.$strftime(\"%H:%M\");\n break;\n\n case 'T':\n case 'X':\n result += self.$strftime(\"%H:%M:%S\");\n break;\n\n default:\n return full;\n }\n\n if (upcase) {\n result = result.toUpperCase();\n }\n\n if (invert) {\n result = result.replace(/[A-Z]/, function(c) { c.toLowerCase() }).\n replace(/[a-z]/, function(c) { c.toUpperCase() });\n }\n\n if (pad && (zero || blank)) {\n result = (result).$rjust(isNaN(width) ? 2 : width, blank ? \" \" : \"0\");\n }\n\n return result;\n });\n \n }, TMP_Time_strftime_32.$$arity = 1);\n \n Opal.def(self, '$sunday?', TMP_Time_sunday$q_33 = function() {\n var self = this;\n\n return self.$wday() == 0\n }, TMP_Time_sunday$q_33.$$arity = 0);\n \n Opal.def(self, '$thursday?', TMP_Time_thursday$q_34 = function() {\n var self = this;\n\n return self.$wday() == 4\n }, TMP_Time_thursday$q_34.$$arity = 0);\n \n Opal.def(self, '$to_a', TMP_Time_to_a_35 = function $$to_a() {\n var self = this;\n\n return [self.$sec(), self.$min(), self.$hour(), self.$day(), self.$month(), self.$year(), self.$wday(), self.$yday(), self.$isdst(), self.$zone()]\n }, TMP_Time_to_a_35.$$arity = 0);\n \n Opal.def(self, '$to_f', TMP_Time_to_f_36 = function $$to_f() {\n var self = this;\n\n return self.getTime() / 1000;\n }, TMP_Time_to_f_36.$$arity = 0);\n \n Opal.def(self, '$to_i', TMP_Time_to_i_37 = function $$to_i() {\n var self = this;\n\n return parseInt(self.getTime() / 1000, 10);\n }, TMP_Time_to_i_37.$$arity = 0);\n Opal.alias(self, \"to_s\", \"inspect\");\n \n Opal.def(self, '$tuesday?', TMP_Time_tuesday$q_38 = function() {\n var self = this;\n\n return self.$wday() == 2\n }, TMP_Time_tuesday$q_38.$$arity = 0);\n Opal.alias(self, \"tv_sec\", \"to_i\");\n Opal.alias(self, \"tv_usec\", \"usec\");\n Opal.alias(self, \"utc?\", \"gmt?\");\n Opal.alias(self, \"gmtoff\", \"gmt_offset\");\n Opal.alias(self, \"utc_offset\", \"gmt_offset\");\n \n Opal.def(self, '$wday', TMP_Time_wday_39 = function $$wday() {\n var self = this;\n\n return self.is_utc ? self.getUTCDay() : self.getDay();\n }, TMP_Time_wday_39.$$arity = 0);\n \n Opal.def(self, '$wednesday?', TMP_Time_wednesday$q_40 = function() {\n var self = this;\n\n return self.$wday() == 3\n }, TMP_Time_wednesday$q_40.$$arity = 0);\n \n Opal.def(self, '$year', TMP_Time_year_41 = function $$year() {\n var self = this;\n\n return self.is_utc ? self.getUTCFullYear() : self.getFullYear();\n }, TMP_Time_year_41.$$arity = 0);\n return (Opal.def(self, '$cweek_cyear', TMP_Time_cweek_cyear_42 = function $$cweek_cyear() {\n var $a, self = this, jan01 = nil, jan01_wday = nil, first_monday = nil, year = nil, offset = nil, week = nil, dec31 = nil, dec31_wday = nil;\n\n \n jan01 = $$($nesting, 'Time').$new(self.$year(), 1, 1);\n jan01_wday = jan01.$wday();\n first_monday = 0;\n year = self.$year();\n if ($truthy(($truthy($a = $rb_le(jan01_wday, 4)) ? jan01_wday['$!='](0) : $a))) {\n offset = $rb_minus(jan01_wday, 1)\n } else {\n \n offset = $rb_minus($rb_minus(jan01_wday, 7), 1);\n if (offset['$=='](-8)) {\n offset = -1};\n };\n week = $rb_divide($rb_plus(self.$yday(), offset), 7.0).$ceil();\n if ($truthy($rb_le(week, 0))) {\n return $$($nesting, 'Time').$new($rb_minus(self.$year(), 1), 12, 31).$cweek_cyear()\n } else if (week['$=='](53)) {\n \n dec31 = $$($nesting, 'Time').$new(self.$year(), 12, 31);\n dec31_wday = dec31.$wday();\n if ($truthy(($truthy($a = $rb_le(dec31_wday, 3)) ? dec31_wday['$!='](0) : $a))) {\n \n week = 1;\n year = $rb_plus(year, 1);};};\n return [week, year];\n }, TMP_Time_cweek_cyear_42.$$arity = 0), nil) && 'cweek_cyear';\n })($nesting[0], Date, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/struct\"] = function(Opal) {\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$require', '$include', '$const_name!', '$unshift', '$map', '$coerce_to!', '$new', '$each', '$define_struct_attribute', '$allocate', '$initialize', '$alias_method', '$module_eval', '$to_proc', '$const_set', '$==', '$raise', '$<<', '$members', '$define_method', '$instance_eval', '$class', '$last', '$>', '$length', '$-', '$keys', '$any?', '$join', '$[]', '$[]=', '$each_with_index', '$hash', '$===', '$<', '$-@', '$size', '$>=', '$include?', '$to_sym', '$instance_of?', '$__id__', '$eql?', '$enum_for', '$name', '$+', '$each_pair', '$inspect', '$each_with_object', '$flatten', '$to_a', '$respond_to?', '$dig']);\n \n self.$require(\"corelib/enumerable\");\n return (function($base, $super, $parent_nesting) {\n function $Struct(){};\n var self = $Struct = $klass($base, $super, 'Struct', $Struct);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Struct_new_1, TMP_Struct_define_struct_attribute_8, TMP_Struct_members_9, TMP_Struct_inherited_11, TMP_Struct_initialize_14, TMP_Struct_members_15, TMP_Struct_hash_16, TMP_Struct_$$_17, TMP_Struct_$$$eq_18, TMP_Struct_$eq$eq_19, TMP_Struct_eql$q_20, TMP_Struct_each_21, TMP_Struct_each_pair_24, TMP_Struct_length_27, TMP_Struct_to_a_29, TMP_Struct_inspect_31, TMP_Struct_to_h_33, TMP_Struct_values_at_35, TMP_Struct_dig_36;\n\n \n self.$include($$($nesting, 'Enumerable'));\n Opal.defs(self, '$new', TMP_Struct_new_1 = function(const_name, $a_rest, $kwargs) {\n var TMP_2, TMP_3, self = this, $post_args, keyword_init, args, $iter = TMP_Struct_new_1.$$p, block = $iter || nil, klass = nil;\n\n $post_args = Opal.slice.call(arguments, 1, arguments.length);\n $kwargs = Opal.extract_kwargs($post_args);\n if ($kwargs == null || !$kwargs.$$is_hash) {\n if ($kwargs == null) {\n $kwargs = $hash2([], {});\n } else {\n throw Opal.ArgumentError.$new('expected kwargs');\n }\n }\n keyword_init = $kwargs.$$smap[\"keyword_init\"];\n if (keyword_init == null) {\n keyword_init = false\n }\n if (0 < $post_args.length) {\n args = $post_args.splice(0, $post_args.length - 0);\n } else {\n args = [];\n }\n if ($iter) TMP_Struct_new_1.$$p = null;\n \n if ($truthy(const_name)) {\n \n try {\n const_name = $$($nesting, 'Opal')['$const_name!'](const_name)\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'TypeError'), $$($nesting, 'NameError')])) {\n try {\n \n args.$unshift(const_name);\n const_name = nil;\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };};\n $send(args, 'map', [], (TMP_2 = function(arg){var self = TMP_2.$$s || this;\nif (arg == null) arg = nil;\n return $$($nesting, 'Opal')['$coerce_to!'](arg, $$($nesting, 'String'), \"to_str\")}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2));\n klass = $send($$($nesting, 'Class'), 'new', [self], (TMP_3 = function(){var self = TMP_3.$$s || this, TMP_4;\n\n \n $send(args, 'each', [], (TMP_4 = function(arg){var self = TMP_4.$$s || this;\nif (arg == null) arg = nil;\n return self.$define_struct_attribute(arg)}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4));\n return (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_new_5;\n\n \n \n Opal.def(self, '$new', TMP_new_5 = function($a_rest) {\n var self = this, args, instance = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n instance = self.$allocate();\n instance.$$data = {};\n $send(instance, 'initialize', Opal.to_a(args));\n return instance;\n }, TMP_new_5.$$arity = -1);\n return self.$alias_method(\"[]\", \"new\");\n })(Opal.get_singleton_class(self), $nesting);}, TMP_3.$$s = self, TMP_3.$$arity = 0, TMP_3));\n if ($truthy(block)) {\n $send(klass, 'module_eval', [], block.$to_proc())};\n klass.$$keyword_init = keyword_init;\n if ($truthy(const_name)) {\n $$($nesting, 'Struct').$const_set(const_name, klass)};\n return klass;\n }, TMP_Struct_new_1.$$arity = -2);\n Opal.defs(self, '$define_struct_attribute', TMP_Struct_define_struct_attribute_8 = function $$define_struct_attribute(name) {\n var TMP_6, TMP_7, self = this;\n\n \n if (self['$==']($$($nesting, 'Struct'))) {\n self.$raise($$($nesting, 'ArgumentError'), \"you cannot define attributes to the Struct class\")};\n self.$members()['$<<'](name);\n $send(self, 'define_method', [name], (TMP_6 = function(){var self = TMP_6.$$s || this;\n\n return self.$$data[name];}, TMP_6.$$s = self, TMP_6.$$arity = 0, TMP_6));\n return $send(self, 'define_method', [\"\" + (name) + \"=\"], (TMP_7 = function(value){var self = TMP_7.$$s || this;\nif (value == null) value = nil;\n return self.$$data[name] = value;}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7));\n }, TMP_Struct_define_struct_attribute_8.$$arity = 1);\n Opal.defs(self, '$members', TMP_Struct_members_9 = function $$members() {\n var $a, self = this;\n if (self.members == null) self.members = nil;\n\n \n if (self['$==']($$($nesting, 'Struct'))) {\n self.$raise($$($nesting, 'ArgumentError'), \"the Struct class has no members\")};\n return (self.members = ($truthy($a = self.members) ? $a : []));\n }, TMP_Struct_members_9.$$arity = 0);\n Opal.defs(self, '$inherited', TMP_Struct_inherited_11 = function $$inherited(klass) {\n var TMP_10, self = this, members = nil;\n if (self.members == null) self.members = nil;\n\n \n members = self.members;\n return $send(klass, 'instance_eval', [], (TMP_10 = function(){var self = TMP_10.$$s || this;\n\n return (self.members = members)}, TMP_10.$$s = self, TMP_10.$$arity = 0, TMP_10));\n }, TMP_Struct_inherited_11.$$arity = 1);\n \n Opal.def(self, '$initialize', TMP_Struct_initialize_14 = function $$initialize($a_rest) {\n var $b, TMP_12, TMP_13, self = this, args, kwargs = nil, extra = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($truthy(self.$class().$$keyword_init)) {\n \n kwargs = ($truthy($b = args.$last()) ? $b : $hash2([], {}));\n if ($truthy(($truthy($b = $rb_gt(args.$length(), 1)) ? $b : (args.length === 1 && !kwargs.$$is_hash)))) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"wrong number of arguments (given \" + (args.$length()) + \", expected 0)\")};\n extra = $rb_minus(kwargs.$keys(), self.$class().$members());\n if ($truthy(extra['$any?']())) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"unknown keywords: \" + (extra.$join(\", \")))};\n return $send(self.$class().$members(), 'each', [], (TMP_12 = function(name){var self = TMP_12.$$s || this, $writer = nil;\nif (name == null) name = nil;\n \n $writer = [name, kwargs['$[]'](name)];\n $send(self, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12));\n } else {\n \n if ($truthy($rb_gt(args.$length(), self.$class().$members().$length()))) {\n self.$raise($$($nesting, 'ArgumentError'), \"struct size differs\")};\n return $send(self.$class().$members(), 'each_with_index', [], (TMP_13 = function(name, index){var self = TMP_13.$$s || this, $writer = nil;\nif (name == null) name = nil;if (index == null) index = nil;\n \n $writer = [name, args['$[]'](index)];\n $send(self, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_13.$$s = self, TMP_13.$$arity = 2, TMP_13));\n }\n }, TMP_Struct_initialize_14.$$arity = -1);\n \n Opal.def(self, '$members', TMP_Struct_members_15 = function $$members() {\n var self = this;\n\n return self.$class().$members()\n }, TMP_Struct_members_15.$$arity = 0);\n \n Opal.def(self, '$hash', TMP_Struct_hash_16 = function $$hash() {\n var self = this;\n\n return $$($nesting, 'Hash').$new(self.$$data).$hash()\n }, TMP_Struct_hash_16.$$arity = 0);\n \n Opal.def(self, '$[]', TMP_Struct_$$_17 = function(name) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Integer')['$==='](name))) {\n \n if ($truthy($rb_lt(name, self.$class().$members().$size()['$-@']()))) {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"offset \" + (name) + \" too small for struct(size:\" + (self.$class().$members().$size()) + \")\")};\n if ($truthy($rb_ge(name, self.$class().$members().$size()))) {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"offset \" + (name) + \" too large for struct(size:\" + (self.$class().$members().$size()) + \")\")};\n name = self.$class().$members()['$[]'](name);\n } else if ($truthy($$($nesting, 'String')['$==='](name))) {\n \n if(!self.$$data.hasOwnProperty(name)) {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"no member '\" + (name) + \"' in struct\", name))\n }\n \n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"no implicit conversion of \" + (name.$class()) + \" into Integer\")\n };\n name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), \"to_str\");\n return self.$$data[name];;\n }, TMP_Struct_$$_17.$$arity = 1);\n \n Opal.def(self, '$[]=', TMP_Struct_$$$eq_18 = function(name, value) {\n var self = this;\n\n \n if ($truthy($$($nesting, 'Integer')['$==='](name))) {\n \n if ($truthy($rb_lt(name, self.$class().$members().$size()['$-@']()))) {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"offset \" + (name) + \" too small for struct(size:\" + (self.$class().$members().$size()) + \")\")};\n if ($truthy($rb_ge(name, self.$class().$members().$size()))) {\n self.$raise($$($nesting, 'IndexError'), \"\" + \"offset \" + (name) + \" too large for struct(size:\" + (self.$class().$members().$size()) + \")\")};\n name = self.$class().$members()['$[]'](name);\n } else if ($truthy($$($nesting, 'String')['$==='](name))) {\n if ($truthy(self.$class().$members()['$include?'](name.$to_sym()))) {\n } else {\n self.$raise($$($nesting, 'NameError').$new(\"\" + \"no member '\" + (name) + \"' in struct\", name))\n }\n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"no implicit conversion of \" + (name.$class()) + \" into Integer\")\n };\n name = $$($nesting, 'Opal')['$coerce_to!'](name, $$($nesting, 'String'), \"to_str\");\n return self.$$data[name] = value;;\n }, TMP_Struct_$$$eq_18.$$arity = 2);\n \n Opal.def(self, '$==', TMP_Struct_$eq$eq_19 = function(other) {\n var self = this;\n\n \n if ($truthy(other['$instance_of?'](self.$class()))) {\n } else {\n return false\n };\n \n var recursed1 = {}, recursed2 = {};\n\n function _eqeq(struct, other) {\n var key, a, b;\n\n recursed1[(struct).$__id__()] = true;\n recursed2[(other).$__id__()] = true;\n\n for (key in struct.$$data) {\n a = struct.$$data[key];\n b = other.$$data[key];\n\n if ($$($nesting, 'Struct')['$==='](a)) {\n if (!recursed1.hasOwnProperty((a).$__id__()) || !recursed2.hasOwnProperty((b).$__id__())) {\n if (!_eqeq(a, b)) {\n return false;\n }\n }\n } else {\n if (!(a)['$=='](b)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n return _eqeq(self, other);\n ;\n }, TMP_Struct_$eq$eq_19.$$arity = 1);\n \n Opal.def(self, '$eql?', TMP_Struct_eql$q_20 = function(other) {\n var self = this;\n\n \n if ($truthy(other['$instance_of?'](self.$class()))) {\n } else {\n return false\n };\n \n var recursed1 = {}, recursed2 = {};\n\n function _eqeq(struct, other) {\n var key, a, b;\n\n recursed1[(struct).$__id__()] = true;\n recursed2[(other).$__id__()] = true;\n\n for (key in struct.$$data) {\n a = struct.$$data[key];\n b = other.$$data[key];\n\n if ($$($nesting, 'Struct')['$==='](a)) {\n if (!recursed1.hasOwnProperty((a).$__id__()) || !recursed2.hasOwnProperty((b).$__id__())) {\n if (!_eqeq(a, b)) {\n return false;\n }\n }\n } else {\n if (!(a)['$eql?'](b)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n return _eqeq(self, other);\n ;\n }, TMP_Struct_eql$q_20.$$arity = 1);\n \n Opal.def(self, '$each', TMP_Struct_each_21 = function $$each() {\n var TMP_22, TMP_23, self = this, $iter = TMP_Struct_each_21.$$p, $yield = $iter || nil;\n\n if ($iter) TMP_Struct_each_21.$$p = null;\n \n if (($yield !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each\"], (TMP_22 = function(){var self = TMP_22.$$s || this;\n\n return self.$size()}, TMP_22.$$s = self, TMP_22.$$arity = 0, TMP_22))\n };\n $send(self.$class().$members(), 'each', [], (TMP_23 = function(name){var self = TMP_23.$$s || this;\nif (name == null) name = nil;\n return Opal.yield1($yield, self['$[]'](name));}, TMP_23.$$s = self, TMP_23.$$arity = 1, TMP_23));\n return self;\n }, TMP_Struct_each_21.$$arity = 0);\n \n Opal.def(self, '$each_pair', TMP_Struct_each_pair_24 = function $$each_pair() {\n var TMP_25, TMP_26, self = this, $iter = TMP_Struct_each_pair_24.$$p, $yield = $iter || nil;\n\n if ($iter) TMP_Struct_each_pair_24.$$p = null;\n \n if (($yield !== nil)) {\n } else {\n return $send(self, 'enum_for', [\"each_pair\"], (TMP_25 = function(){var self = TMP_25.$$s || this;\n\n return self.$size()}, TMP_25.$$s = self, TMP_25.$$arity = 0, TMP_25))\n };\n $send(self.$class().$members(), 'each', [], (TMP_26 = function(name){var self = TMP_26.$$s || this;\nif (name == null) name = nil;\n return Opal.yield1($yield, [name, self['$[]'](name)]);}, TMP_26.$$s = self, TMP_26.$$arity = 1, TMP_26));\n return self;\n }, TMP_Struct_each_pair_24.$$arity = 0);\n \n Opal.def(self, '$length', TMP_Struct_length_27 = function $$length() {\n var self = this;\n\n return self.$class().$members().$length()\n }, TMP_Struct_length_27.$$arity = 0);\n Opal.alias(self, \"size\", \"length\");\n \n Opal.def(self, '$to_a', TMP_Struct_to_a_29 = function $$to_a() {\n var TMP_28, self = this;\n\n return $send(self.$class().$members(), 'map', [], (TMP_28 = function(name){var self = TMP_28.$$s || this;\nif (name == null) name = nil;\n return self['$[]'](name)}, TMP_28.$$s = self, TMP_28.$$arity = 1, TMP_28))\n }, TMP_Struct_to_a_29.$$arity = 0);\n Opal.alias(self, \"values\", \"to_a\");\n \n Opal.def(self, '$inspect', TMP_Struct_inspect_31 = function $$inspect() {\n var $a, TMP_30, self = this, result = nil;\n\n \n result = \"#<struct \";\n if ($truthy(($truthy($a = $$($nesting, 'Struct')['$==='](self)) ? self.$class().$name() : $a))) {\n result = $rb_plus(result, \"\" + (self.$class()) + \" \")};\n result = $rb_plus(result, $send(self.$each_pair(), 'map', [], (TMP_30 = function(name, value){var self = TMP_30.$$s || this;\nif (name == null) name = nil;if (value == null) value = nil;\n return \"\" + (name) + \"=\" + (value.$inspect())}, TMP_30.$$s = self, TMP_30.$$arity = 2, TMP_30)).$join(\", \"));\n result = $rb_plus(result, \">\");\n return result;\n }, TMP_Struct_inspect_31.$$arity = 0);\n Opal.alias(self, \"to_s\", \"inspect\");\n \n Opal.def(self, '$to_h', TMP_Struct_to_h_33 = function $$to_h() {\n var TMP_32, self = this;\n\n return $send(self.$class().$members(), 'each_with_object', [$hash2([], {})], (TMP_32 = function(name, h){var self = TMP_32.$$s || this, $writer = nil;\nif (name == null) name = nil;if (h == null) h = nil;\n \n $writer = [name, self['$[]'](name)];\n $send(h, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_32.$$s = self, TMP_32.$$arity = 2, TMP_32))\n }, TMP_Struct_to_h_33.$$arity = 0);\n \n Opal.def(self, '$values_at', TMP_Struct_values_at_35 = function $$values_at($a_rest) {\n var TMP_34, self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n args = $send(args, 'map', [], (TMP_34 = function(arg){var self = TMP_34.$$s || this;\nif (arg == null) arg = nil;\n return arg.$$is_range ? arg.$to_a() : arg}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34)).$flatten();\n \n var result = [];\n for (var i = 0, len = args.length; i < len; i++) {\n if (!args[i].$$is_number) {\n self.$raise($$($nesting, 'TypeError'), \"\" + \"no implicit conversion of \" + ((args[i]).$class()) + \" into Integer\")\n }\n result.push(self['$[]'](args[i]));\n }\n return result;\n ;\n }, TMP_Struct_values_at_35.$$arity = -1);\n return (Opal.def(self, '$dig', TMP_Struct_dig_36 = function $$dig(key, $a_rest) {\n var self = this, keys, item = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n keys = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n keys[$arg_idx - 1] = arguments[$arg_idx];\n }\n \n item = (function() {if ($truthy(key.$$is_string && self.$$data.hasOwnProperty(key))) {\n return self.$$data[key] || nil;\n } else {\n return nil\n }; return nil; })();\n \n if (item === nil || keys.length === 0) {\n return item;\n }\n ;\n if ($truthy(item['$respond_to?'](\"dig\"))) {\n } else {\n self.$raise($$($nesting, 'TypeError'), \"\" + (item.$class()) + \" does not have #dig method\")\n };\n return $send(item, 'dig', Opal.to_a(keys));\n }, TMP_Struct_dig_36.$$arity = -2), nil) && 'dig';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/io\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy, $writer = nil;\n\n Opal.add_stubs(['$attr_accessor', '$size', '$write', '$join', '$map', '$String', '$empty?', '$concat', '$chomp', '$getbyte', '$getc', '$raise', '$new', '$write_proc=', '$-', '$extend']);\n \n (function($base, $super, $parent_nesting) {\n function $IO(){};\n var self = $IO = $klass($base, $super, 'IO', $IO);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_IO_tty$q_1, TMP_IO_closed$q_2, TMP_IO_write_3, TMP_IO_flush_4;\n\n def.tty = def.closed = nil;\n \n Opal.const_set($nesting[0], 'SEEK_SET', 0);\n Opal.const_set($nesting[0], 'SEEK_CUR', 1);\n Opal.const_set($nesting[0], 'SEEK_END', 2);\n \n Opal.def(self, '$tty?', TMP_IO_tty$q_1 = function() {\n var self = this;\n\n return self.tty\n }, TMP_IO_tty$q_1.$$arity = 0);\n \n Opal.def(self, '$closed?', TMP_IO_closed$q_2 = function() {\n var self = this;\n\n return self.closed\n }, TMP_IO_closed$q_2.$$arity = 0);\n self.$attr_accessor(\"write_proc\");\n \n Opal.def(self, '$write', TMP_IO_write_3 = function $$write(string) {\n var self = this;\n\n \n self.write_proc(string);\n return string.$size();\n }, TMP_IO_write_3.$$arity = 1);\n self.$attr_accessor(\"sync\", \"tty\");\n \n Opal.def(self, '$flush', TMP_IO_flush_4 = function $$flush() {\n var self = this;\n\n return nil\n }, TMP_IO_flush_4.$$arity = 0);\n (function($base, $parent_nesting) {\n var $Writable, self = $Writable = $module($base, 'Writable');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Writable_$lt$lt_5, TMP_Writable_print_7, TMP_Writable_puts_9;\n\n \n \n Opal.def(self, '$<<', TMP_Writable_$lt$lt_5 = function(string) {\n var self = this;\n\n \n self.$write(string);\n return self;\n }, TMP_Writable_$lt$lt_5.$$arity = 1);\n \n Opal.def(self, '$print', TMP_Writable_print_7 = function $$print($a_rest) {\n var TMP_6, self = this, args;\n if ($gvars[\",\"] == null) $gvars[\",\"] = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n self.$write($send(args, 'map', [], (TMP_6 = function(arg){var self = TMP_6.$$s || this;\nif (arg == null) arg = nil;\n return self.$String(arg)}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)).$join($gvars[\",\"]));\n return nil;\n }, TMP_Writable_print_7.$$arity = -1);\n \n Opal.def(self, '$puts', TMP_Writable_puts_9 = function $$puts($a_rest) {\n var TMP_8, self = this, args, newline = nil;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n newline = $gvars[\"/\"];\n if ($truthy(args['$empty?']())) {\n self.$write($gvars[\"/\"])\n } else {\n self.$write($send(args, 'map', [], (TMP_8 = function(arg){var self = TMP_8.$$s || this;\nif (arg == null) arg = nil;\n return self.$String(arg).$chomp()}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8)).$concat([nil]).$join(newline))\n };\n return nil;\n }, TMP_Writable_puts_9.$$arity = -1);\n })($nesting[0], $nesting);\n return (function($base, $parent_nesting) {\n var $Readable, self = $Readable = $module($base, 'Readable');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Readable_readbyte_10, TMP_Readable_readchar_11, TMP_Readable_readline_12, TMP_Readable_readpartial_13;\n\n \n \n Opal.def(self, '$readbyte', TMP_Readable_readbyte_10 = function $$readbyte() {\n var self = this;\n\n return self.$getbyte()\n }, TMP_Readable_readbyte_10.$$arity = 0);\n \n Opal.def(self, '$readchar', TMP_Readable_readchar_11 = function $$readchar() {\n var self = this;\n\n return self.$getc()\n }, TMP_Readable_readchar_11.$$arity = 0);\n \n Opal.def(self, '$readline', TMP_Readable_readline_12 = function $$readline(sep) {\n var self = this;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n if (sep == null) {\n sep = $gvars[\"/\"];\n }\n return self.$raise($$($nesting, 'NotImplementedError'))\n }, TMP_Readable_readline_12.$$arity = -1);\n \n Opal.def(self, '$readpartial', TMP_Readable_readpartial_13 = function $$readpartial(integer, outbuf) {\n var self = this;\n\n if (outbuf == null) {\n outbuf = nil;\n }\n return self.$raise($$($nesting, 'NotImplementedError'))\n }, TMP_Readable_readpartial_13.$$arity = -2);\n })($nesting[0], $nesting);\n })($nesting[0], null, $nesting);\n Opal.const_set($nesting[0], 'STDERR', ($gvars.stderr = $$($nesting, 'IO').$new()));\n Opal.const_set($nesting[0], 'STDIN', ($gvars.stdin = $$($nesting, 'IO').$new()));\n Opal.const_set($nesting[0], 'STDOUT', ($gvars.stdout = $$($nesting, 'IO').$new()));\n var console = Opal.global.console;\n \n $writer = [typeof(process) === 'object' && typeof(process.stdout) === 'object' ? function(s){process.stdout.write(s)} : function(s){console.log(s)}];\n $send($$($nesting, 'STDOUT'), 'write_proc=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [typeof(process) === 'object' && typeof(process.stderr) === 'object' ? function(s){process.stderr.write(s)} : function(s){console.warn(s)}];\n $send($$($nesting, 'STDERR'), 'write_proc=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n $$($nesting, 'STDOUT').$extend($$$($$($nesting, 'IO'), 'Writable'));\n return $$($nesting, 'STDERR').$extend($$$($$($nesting, 'IO'), 'Writable'));\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/main\"] = function(Opal) {\n var TMP_to_s_1, TMP_include_2, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n Opal.add_stubs(['$include']);\n \n Opal.defs(self, '$to_s', TMP_to_s_1 = function $$to_s() {\n var self = this;\n\n return \"main\"\n }, TMP_to_s_1.$$arity = 0);\n return (Opal.defs(self, '$include', TMP_include_2 = function $$include(mod) {\n var self = this;\n\n return $$($nesting, 'Object').$include(mod)\n }, TMP_include_2.$$arity = 1), nil) && 'include';\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/dir\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$[]']);\n return (function($base, $super, $parent_nesting) {\n function $Dir(){};\n var self = $Dir = $klass($base, $super, 'Dir', $Dir);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_chdir_1, TMP_pwd_2, TMP_home_3;\n\n \n \n Opal.def(self, '$chdir', TMP_chdir_1 = function $$chdir(dir) {\n var self = this, $iter = TMP_chdir_1.$$p, $yield = $iter || nil, prev_cwd = nil;\n\n if ($iter) TMP_chdir_1.$$p = null;\n return (function() { try {\n \n prev_cwd = Opal.current_dir;\n Opal.current_dir = dir;\n return Opal.yieldX($yield, []);;\n } finally {\n Opal.current_dir = prev_cwd\n }; })()\n }, TMP_chdir_1.$$arity = 1);\n \n Opal.def(self, '$pwd', TMP_pwd_2 = function $$pwd() {\n var self = this;\n\n return Opal.current_dir || '.';\n }, TMP_pwd_2.$$arity = 0);\n Opal.alias(self, \"getwd\", \"pwd\");\n return (Opal.def(self, '$home', TMP_home_3 = function $$home() {\n var $a, self = this;\n\n return ($truthy($a = $$($nesting, 'ENV')['$[]'](\"HOME\")) ? $a : \".\")\n }, TMP_home_3.$$arity = 0), nil) && 'home';\n })(Opal.get_singleton_class(self), $nesting)\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/file\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $range = Opal.range, $send = Opal.send;\n\n Opal.add_stubs(['$home', '$raise', '$start_with?', '$+', '$sub', '$pwd', '$split', '$unshift', '$join', '$respond_to?', '$coerce_to!', '$basename', '$empty?', '$rindex', '$[]', '$nil?', '$==', '$-', '$length', '$gsub', '$find', '$=~', '$map', '$each_with_index', '$flatten', '$reject', '$to_proc', '$end_with?']);\n return (function($base, $super, $parent_nesting) {\n function $File(){};\n var self = $File = $klass($base, $super, 'File', $File);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), windows_root_rx = nil;\n\n \n Opal.const_set($nesting[0], 'Separator', Opal.const_set($nesting[0], 'SEPARATOR', \"/\"));\n Opal.const_set($nesting[0], 'ALT_SEPARATOR', nil);\n Opal.const_set($nesting[0], 'PATH_SEPARATOR', \":\");\n Opal.const_set($nesting[0], 'FNM_SYSCASE', 0);\n windows_root_rx = /^[a-zA-Z]:(?:\\\\|\\/)/;\n return (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_expand_path_1, TMP_dirname_2, TMP_basename_3, TMP_extname_4, TMP_exist$q_5, TMP_directory$q_7, TMP_join_10, TMP_split_11;\n\n \n \n Opal.def(self, '$expand_path', TMP_expand_path_1 = function $$expand_path(path, basedir) {\n var $a, self = this, sep = nil, sep_chars = nil, new_parts = nil, home = nil, home_path_regexp = nil, path_abs = nil, basedir_abs = nil, parts = nil, leading_sep = nil, abs = nil, new_path = nil;\n\n if (basedir == null) {\n basedir = nil;\n }\n \n sep = $$($nesting, 'SEPARATOR');\n sep_chars = $sep_chars();\n new_parts = [];\n if ($truthy(path[0] === '~' || (basedir && basedir[0] === '~'))) {\n \n home = $$($nesting, 'Dir').$home();\n if ($truthy(home)) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"couldn't find HOME environment -- expanding `~'\")\n };\n if ($truthy(home['$start_with?'](sep))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"non-absolute home\")\n };\n home = $rb_plus(home, sep);\n home_path_regexp = new RegExp(\"\" + \"^\\\\~(?:\" + (sep) + \"|$)\");\n path = path.$sub(home_path_regexp, home);\n if ($truthy(basedir)) {\n basedir = basedir.$sub(home_path_regexp, home)};};\n basedir = ($truthy($a = basedir) ? $a : $$($nesting, 'Dir').$pwd());\n path_abs = path.substr(0, sep.length) === sep || windows_root_rx.test(path);\n basedir_abs = basedir.substr(0, sep.length) === sep || windows_root_rx.test(basedir);\n if ($truthy(path_abs)) {\n \n parts = path.$split(new RegExp(\"\" + \"[\" + (sep_chars) + \"]\"));\n leading_sep = windows_root_rx.test(path) ? '' : path.$sub(new RegExp(\"\" + \"^([\" + (sep_chars) + \"]+).*$\"), \"\\\\1\");\n abs = true;\n } else {\n \n parts = $rb_plus(basedir.$split(new RegExp(\"\" + \"[\" + (sep_chars) + \"]\")), path.$split(new RegExp(\"\" + \"[\" + (sep_chars) + \"]\")));\n leading_sep = windows_root_rx.test(basedir) ? '' : basedir.$sub(new RegExp(\"\" + \"^([\" + (sep_chars) + \"]+).*$\"), \"\\\\1\");\n abs = basedir_abs;\n };\n \n var part;\n for (var i = 0, ii = parts.length; i < ii; i++) {\n part = parts[i];\n\n if (\n (part === nil) ||\n (part === '' && ((new_parts.length === 0) || abs)) ||\n (part === '.' && ((new_parts.length === 0) || abs))\n ) {\n continue;\n }\n if (part === '..') {\n new_parts.pop();\n } else {\n new_parts.push(part);\n }\n }\n\n if (!abs && parts[0] !== '.') {\n new_parts.$unshift(\".\")\n }\n ;\n new_path = new_parts.$join(sep);\n if ($truthy(abs)) {\n new_path = $rb_plus(leading_sep, new_path)};\n return new_path;\n }, TMP_expand_path_1.$$arity = -2);\n Opal.alias(self, \"realpath\", \"expand_path\");\n \n // Coerce a given path to a path string using #to_path and #to_str\n function $coerce_to_path(path) {\n if ($truthy((path)['$respond_to?'](\"to_path\"))) {\n path = path.$to_path();\n }\n\n path = $$($nesting, 'Opal')['$coerce_to!'](path, $$($nesting, 'String'), \"to_str\");\n\n return path;\n }\n\n // Return a RegExp compatible char class\n function $sep_chars() {\n if ($$($nesting, 'ALT_SEPARATOR') === nil) {\n return Opal.escape_regexp($$($nesting, 'SEPARATOR'));\n } else {\n return Opal.escape_regexp($rb_plus($$($nesting, 'SEPARATOR'), $$($nesting, 'ALT_SEPARATOR')));\n }\n }\n ;\n \n Opal.def(self, '$dirname', TMP_dirname_2 = function $$dirname(path) {\n var self = this, sep_chars = nil;\n\n \n sep_chars = $sep_chars();\n path = $coerce_to_path(path);\n \n var absolute = path.match(new RegExp(\"\" + \"^[\" + (sep_chars) + \"]\"));\n\n path = path.replace(new RegExp(\"\" + \"[\" + (sep_chars) + \"]+$\"), ''); // remove trailing separators\n path = path.replace(new RegExp(\"\" + \"[^\" + (sep_chars) + \"]+$\"), ''); // remove trailing basename\n path = path.replace(new RegExp(\"\" + \"[\" + (sep_chars) + \"]+$\"), ''); // remove final trailing separators\n\n if (path === '') {\n return absolute ? '/' : '.';\n }\n\n return path;\n ;\n }, TMP_dirname_2.$$arity = 1);\n \n Opal.def(self, '$basename', TMP_basename_3 = function $$basename(name, suffix) {\n var self = this, sep_chars = nil;\n\n if (suffix == null) {\n suffix = nil;\n }\n \n sep_chars = $sep_chars();\n name = $coerce_to_path(name);\n \n if (name.length == 0) {\n return name;\n }\n\n if (suffix !== nil) {\n suffix = $$($nesting, 'Opal')['$coerce_to!'](suffix, $$($nesting, 'String'), \"to_str\")\n } else {\n suffix = null;\n }\n\n name = name.replace(new RegExp(\"\" + \"(.)[\" + (sep_chars) + \"]*$\"), '$1');\n name = name.replace(new RegExp(\"\" + \"^(?:.*[\" + (sep_chars) + \"])?([^\" + (sep_chars) + \"]+)$\"), '$1');\n\n if (suffix === \".*\") {\n name = name.replace(/\\.[^\\.]+$/, '');\n } else if(suffix !== null) {\n suffix = Opal.escape_regexp(suffix);\n name = name.replace(new RegExp(\"\" + (suffix) + \"$\"), '');\n }\n\n return name;\n ;\n }, TMP_basename_3.$$arity = -2);\n \n Opal.def(self, '$extname', TMP_extname_4 = function $$extname(path) {\n var $a, self = this, filename = nil, last_dot_idx = nil;\n\n \n path = $coerce_to_path(path);\n filename = self.$basename(path);\n if ($truthy(filename['$empty?']())) {\n return \"\"};\n last_dot_idx = filename['$[]']($range(1, -1, false)).$rindex(\".\");\n if ($truthy(($truthy($a = last_dot_idx['$nil?']()) ? $a : $rb_plus(last_dot_idx, 1)['$==']($rb_minus(filename.$length(), 1))))) {\n return \"\"\n } else {\n return filename['$[]'](Opal.Range.$new($rb_plus(last_dot_idx, 1), -1, false))\n };\n }, TMP_extname_4.$$arity = 1);\n \n Opal.def(self, '$exist?', TMP_exist$q_5 = function(path) {\n var self = this;\n\n return Opal.modules[path] != null\n }, TMP_exist$q_5.$$arity = 1);\n Opal.alias(self, \"exists?\", \"exist?\");\n \n Opal.def(self, '$directory?', TMP_directory$q_7 = function(path) {\n var TMP_6, self = this, files = nil, file = nil;\n\n \n files = [];\n \n for (var key in Opal.modules) {\n files.push(key)\n }\n ;\n path = path.$gsub(new RegExp(\"\" + \"(^.\" + ($$($nesting, 'SEPARATOR')) + \"+|\" + ($$($nesting, 'SEPARATOR')) + \"+$)\"));\n file = $send(files, 'find', [], (TMP_6 = function(f){var self = TMP_6.$$s || this;\nif (f == null) f = nil;\n return f['$=~'](new RegExp(\"\" + \"^\" + (path)))}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6));\n return file;\n }, TMP_directory$q_7.$$arity = 1);\n \n Opal.def(self, '$join', TMP_join_10 = function $$join($a_rest) {\n var TMP_8, TMP_9, self = this, paths, result = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n paths = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n paths[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if ($truthy(paths['$empty?']())) {\n return \"\"};\n result = \"\";\n paths = $send(paths.$flatten().$each_with_index(), 'map', [], (TMP_8 = function(item, index){var self = TMP_8.$$s || this, $a;\nif (item == null) item = nil;if (index == null) index = nil;\n if ($truthy((($a = index['$=='](0)) ? item['$empty?']() : index['$=='](0)))) {\n return $$($nesting, 'SEPARATOR')\n } else if ($truthy((($a = paths.$length()['$==']($rb_plus(index, 1))) ? item['$empty?']() : paths.$length()['$==']($rb_plus(index, 1))))) {\n return $$($nesting, 'SEPARATOR')\n } else {\n return item\n }}, TMP_8.$$s = self, TMP_8.$$arity = 2, TMP_8));\n paths = $send(paths, 'reject', [], \"empty?\".$to_proc());\n $send(paths, 'each_with_index', [], (TMP_9 = function(item, index){var self = TMP_9.$$s || this, $a, next_item = nil;\nif (item == null) item = nil;if (index == null) index = nil;\n \n next_item = paths['$[]']($rb_plus(index, 1));\n if ($truthy(next_item['$nil?']())) {\n return (result = \"\" + (result) + (item))\n } else {\n \n if ($truthy(($truthy($a = item['$end_with?']($$($nesting, 'SEPARATOR'))) ? next_item['$start_with?']($$($nesting, 'SEPARATOR')) : $a))) {\n item = item.$sub(new RegExp(\"\" + ($$($nesting, 'SEPARATOR')) + \"+$\"), \"\")};\n return (result = (function() {if ($truthy(($truthy($a = item['$end_with?']($$($nesting, 'SEPARATOR'))) ? $a : next_item['$start_with?']($$($nesting, 'SEPARATOR'))))) {\n return \"\" + (result) + (item)\n } else {\n return \"\" + (result) + (item) + ($$($nesting, 'SEPARATOR'))\n }; return nil; })());\n };}, TMP_9.$$s = self, TMP_9.$$arity = 2, TMP_9));\n return result;\n }, TMP_join_10.$$arity = -1);\n return (Opal.def(self, '$split', TMP_split_11 = function $$split(path) {\n var self = this;\n\n return path.$split($$($nesting, 'SEPARATOR'))\n }, TMP_split_11.$$arity = 1), nil) && 'split';\n })(Opal.get_singleton_class(self), $nesting);\n })($nesting[0], $$($nesting, 'IO'), $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/process\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$const_set', '$size', '$<<', '$__register_clock__', '$to_f', '$now', '$new', '$[]', '$raise']);\n \n (function($base, $super, $parent_nesting) {\n function $Process(){};\n var self = $Process = $klass($base, $super, 'Process', $Process);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Process___register_clock___1, TMP_Process_pid_2, TMP_Process_times_3, TMP_Process_clock_gettime_4, monotonic = nil;\n\n \n self.__clocks__ = [];\n Opal.defs(self, '$__register_clock__', TMP_Process___register_clock___1 = function $$__register_clock__(name, func) {\n var self = this;\n if (self.__clocks__ == null) self.__clocks__ = nil;\n\n \n self.$const_set(name, self.__clocks__.$size());\n return self.__clocks__['$<<'](func);\n }, TMP_Process___register_clock___1.$$arity = 2);\n self.$__register_clock__(\"CLOCK_REALTIME\", function() { return Date.now() });\n monotonic = false;\n \n if (Opal.global.performance) {\n monotonic = function() {\n return performance.now()\n };\n }\n else if (Opal.global.process && process.hrtime) {\n // let now be the base to get smaller numbers\n var hrtime_base = process.hrtime();\n\n monotonic = function() {\n var hrtime = process.hrtime(hrtime_base);\n var us = (hrtime[1] / 1000) | 0; // cut below microsecs;\n return ((hrtime[0] * 1000) + (us / 1000));\n };\n }\n ;\n if ($truthy(monotonic)) {\n self.$__register_clock__(\"CLOCK_MONOTONIC\", monotonic)};\n Opal.defs(self, '$pid', TMP_Process_pid_2 = function $$pid() {\n var self = this;\n\n return 0\n }, TMP_Process_pid_2.$$arity = 0);\n Opal.defs(self, '$times', TMP_Process_times_3 = function $$times() {\n var self = this, t = nil;\n\n \n t = $$($nesting, 'Time').$now().$to_f();\n return $$$($$($nesting, 'Benchmark'), 'Tms').$new(t, t, t, t, t);\n }, TMP_Process_times_3.$$arity = 0);\n return (Opal.defs(self, '$clock_gettime', TMP_Process_clock_gettime_4 = function $$clock_gettime(clock_id, unit) {\n var $a, self = this, clock = nil;\n if (self.__clocks__ == null) self.__clocks__ = nil;\n\n if (unit == null) {\n unit = \"float_second\";\n }\n \n ($truthy($a = (clock = self.__clocks__['$[]'](clock_id))) ? $a : self.$raise($$$($$($nesting, 'Errno'), 'EINVAL'), \"\" + \"clock_gettime(\" + (clock_id) + \") \" + (self.__clocks__['$[]'](clock_id))));\n \n var ms = clock();\n switch (unit) {\n case 'float_second': return (ms / 1000); // number of seconds as a float (default)\n case 'float_millisecond': return (ms / 1); // number of milliseconds as a float\n case 'float_microsecond': return (ms * 1000); // number of microseconds as a float\n case 'second': return ((ms / 1000) | 0); // number of seconds as an integer\n case 'millisecond': return ((ms / 1) | 0); // number of milliseconds as an integer\n case 'microsecond': return ((ms * 1000) | 0); // number of microseconds as an integer\n case 'nanosecond': return ((ms * 1000000) | 0); // number of nanoseconds as an integer\n default: self.$raise($$($nesting, 'ArgumentError'), \"\" + \"unexpected unit: \" + (unit))\n }\n ;\n }, TMP_Process_clock_gettime_4.$$arity = -2), nil) && 'clock_gettime';\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $Signal(){};\n var self = $Signal = $klass($base, $super, 'Signal', $Signal);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Signal_trap_5;\n\n return (Opal.defs(self, '$trap', TMP_Signal_trap_5 = function $$trap($a_rest) {\n var self = this;\n\n return nil\n }, TMP_Signal_trap_5.$$arity = -1), nil) && 'trap'\n })($nesting[0], null, $nesting);\n return (function($base, $super, $parent_nesting) {\n function $GC(){};\n var self = $GC = $klass($base, $super, 'GC', $GC);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_GC_start_6;\n\n return (Opal.defs(self, '$start', TMP_GC_start_6 = function $$start() {\n var self = this;\n\n return nil\n }, TMP_GC_start_6.$$arity = 0), nil) && 'start'\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/random/seedrandom\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass;\n\n return (function($base, $super, $parent_nesting) {\n function $Random(){};\n var self = $Random = $klass($base, $super, 'Random', $Random);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n /* jshint ignore:start */\n /*\n seedrandom.min.js 2.4.1 (original source: https://github.com/davidbau/seedrandom/blob/2.4.1/seedrandom.min.js)\n How to update:\n . Chekout the latest release from GitHub: https://github.com/davidbau/seedrandom\n . Apply the following commits:\n .. Check for hasOwnProperty in flatten(): https://github.com/iliabylich/seedrandom/commit/06a94f59ae3d3956c8b1a2488334cafab6744b04\n .. Add a module id for the RequireJS `define` method: https://github.com/Mogztter/seedrandom/commit/e047540c3d81f955cab9a01d17b8141d439fbd7d\n */\n !function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a<q;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,\"global\"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e<l;)g[e]=e++;for(e=0;e<l;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&\"object\"==e)for(c in a)if(a.hasOwnProperty(c))try{d.push(f(a[c],b-1))}catch(a){}return d.length?d:\"string\"==e?a:a+\"\\0\"}function g(a,b){for(var c,d=a+\"\",e=0;e<d.length;)b[s&e]=s&(c^=19*b[s&e])+d.charCodeAt(e++);return i(b)}function h(){try{if(j)return i(j.randomBytes(l));var b=new Uint8Array(l);return(k.crypto||k.msCrypto).getRandomValues(b),i(b)}catch(b){var c=k.navigator,d=c&&c.plugins;return[+new Date,k,d,k.screen,i(a)]}}function i(a){return String.fromCharCode.apply(0,a)}var j,k=this,l=256,m=6,n=52,o=\"random\",p=b.pow(l,m),q=b.pow(2,n),r=2*q,s=l-1;if(b[\"seed\"+o]=c,g(b.random(),a),\"object\"==typeof module&&module.exports){module.exports=c;try{j=require(\"crypto\")}catch(a){}}else\"function\"==typeof define&&define.amd&&define('seekrandom',function(){return c})}([],Math);\n /* jshint ignore:end */\n \n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/random\"] = function(Opal) {\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send;\n\n Opal.add_stubs(['$require', '$attr_reader', '$coerce_to!', '$reseed', '$new_seed', '$rand', '$seed', '$<', '$raise', '$encode', '$join', '$new', '$chr', '$===', '$==', '$state']);\n \n self.$require(\"corelib/random/seedrandom.js\");\n return (function($base, $super, $parent_nesting) {\n function $Random(){};\n var self = $Random = $klass($base, $super, 'Random', $Random);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Random_initialize_1, TMP_Random_reseed_2, TMP_Random_new_seed_3, TMP_Random_rand_4, TMP_Random_srand_5, TMP_Random_urandom_7, TMP_Random_$eq$eq_8, TMP_Random_bytes_10, TMP_Random_rand_11;\n\n \n self.$attr_reader(\"seed\", \"state\");\n \n Opal.def(self, '$initialize', TMP_Random_initialize_1 = function $$initialize(seed) {\n var self = this;\n\n if (seed == null) {\n seed = $$($nesting, 'Random').$new_seed();\n }\n \n seed = $$($nesting, 'Opal')['$coerce_to!'](seed, $$($nesting, 'Integer'), \"to_int\");\n self.state = seed;\n return self.$reseed(seed);\n }, TMP_Random_initialize_1.$$arity = -1);\n \n Opal.def(self, '$reseed', TMP_Random_reseed_2 = function $$reseed(seed) {\n var self = this;\n\n \n self.seed = seed;\n return self.$rng = new Math.seedrandom(seed);;\n }, TMP_Random_reseed_2.$$arity = 1);\n var $seed_generator = new Math.seedrandom('opal', { entropy: true });\n Opal.defs(self, '$new_seed', TMP_Random_new_seed_3 = function $$new_seed() {\n var self = this;\n\n return Math.abs($seed_generator.int32());\n }, TMP_Random_new_seed_3.$$arity = 0);\n Opal.defs(self, '$rand', TMP_Random_rand_4 = function $$rand(limit) {\n var self = this;\n\n return $$($nesting, 'DEFAULT').$rand(limit)\n }, TMP_Random_rand_4.$$arity = -1);\n Opal.defs(self, '$srand', TMP_Random_srand_5 = function $$srand(n) {\n var self = this, previous_seed = nil;\n\n if (n == null) {\n n = $$($nesting, 'Random').$new_seed();\n }\n \n n = $$($nesting, 'Opal')['$coerce_to!'](n, $$($nesting, 'Integer'), \"to_int\");\n previous_seed = $$($nesting, 'DEFAULT').$seed();\n $$($nesting, 'DEFAULT').$reseed(n);\n return previous_seed;\n }, TMP_Random_srand_5.$$arity = -1);\n Opal.defs(self, '$urandom', TMP_Random_urandom_7 = function $$urandom(size) {\n var TMP_6, self = this;\n\n \n size = $$($nesting, 'Opal')['$coerce_to!'](size, $$($nesting, 'Integer'), \"to_int\");\n if ($truthy($rb_lt(size, 0))) {\n self.$raise($$($nesting, 'ArgumentError'), \"negative string size (or size too big)\")};\n return $send($$($nesting, 'Array'), 'new', [size], (TMP_6 = function(){var self = TMP_6.$$s || this;\n\n return self.$rand(255).$chr()}, TMP_6.$$s = self, TMP_6.$$arity = 0, TMP_6)).$join().$encode(\"ASCII-8BIT\");\n }, TMP_Random_urandom_7.$$arity = 1);\n Opal.const_set($nesting[0], 'DEFAULT', self.$new(self.$new_seed()));\n \n Opal.def(self, '$==', TMP_Random_$eq$eq_8 = function(other) {\n var $a, self = this;\n\n \n if ($truthy($$($nesting, 'Random')['$==='](other))) {\n } else {\n return false\n };\n return (($a = self.$seed()['$=='](other.$seed())) ? self.$state()['$=='](other.$state()) : self.$seed()['$=='](other.$seed()));\n }, TMP_Random_$eq$eq_8.$$arity = 1);\n \n Opal.def(self, '$bytes', TMP_Random_bytes_10 = function $$bytes(length) {\n var TMP_9, self = this;\n\n \n length = $$($nesting, 'Opal')['$coerce_to!'](length, $$($nesting, 'Integer'), \"to_int\");\n return $send($$($nesting, 'Array'), 'new', [length], (TMP_9 = function(){var self = TMP_9.$$s || this;\n\n return self.$rand(255).$chr()}, TMP_9.$$s = self, TMP_9.$$arity = 0, TMP_9)).$join().$encode(\"ASCII-8BIT\");\n }, TMP_Random_bytes_10.$$arity = 1);\n return (Opal.def(self, '$rand', TMP_Random_rand_11 = function $$rand(limit) {\n var self = this;\n\n \n function randomFloat() {\n self.state++;\n return self.$rng.quick();\n }\n\n function randomInt() {\n return Math.floor(randomFloat() * limit);\n }\n\n function randomRange() {\n var min = limit.begin,\n max = limit.end;\n\n if (min === nil || max === nil) {\n return nil;\n }\n\n var length = max - min;\n\n if (length < 0) {\n return nil;\n }\n\n if (length === 0) {\n return min;\n }\n\n if (max % 1 === 0 && min % 1 === 0 && !limit.excl) {\n length++;\n }\n\n return self.$rand(length) + min;\n }\n\n if (limit == null) {\n return randomFloat();\n } else if (limit.$$is_range) {\n return randomRange();\n } else if (limit.$$is_number) {\n if (limit <= 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid argument - \" + (limit))\n }\n\n if (limit % 1 === 0) {\n // integer\n return randomInt();\n } else {\n return randomFloat() * limit;\n }\n } else {\n limit = $$($nesting, 'Opal')['$coerce_to!'](limit, $$($nesting, 'Integer'), \"to_int\");\n\n if (limit <= 0) {\n self.$raise($$($nesting, 'ArgumentError'), \"\" + \"invalid argument - \" + (limit))\n }\n\n return randomInt();\n }\n \n }, TMP_Random_rand_11.$$arity = -1), nil) && 'rand';\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"corelib/unsupported\"] = function(Opal) {\n var TMP_public_31, TMP_private_32, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $module = Opal.module;\n\n Opal.add_stubs(['$raise', '$warn', '$%']);\n \n \n var warnings = {};\n\n function handle_unsupported_feature(message) {\n switch (Opal.config.unsupported_features_severity) {\n case 'error':\n $$($nesting, 'Kernel').$raise($$($nesting, 'NotImplementedError'), message)\n break;\n case 'warning':\n warn(message)\n break;\n default: // ignore\n // noop\n }\n }\n\n function warn(string) {\n if (warnings[string]) {\n return;\n }\n\n warnings[string] = true;\n self.$warn(string);\n }\n;\n (function($base, $super, $parent_nesting) {\n function $String(){};\n var self = $String = $klass($base, $super, 'String', $String);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_$lt$lt_1, TMP_String_capitalize$B_2, TMP_String_chomp$B_3, TMP_String_chop$B_4, TMP_String_downcase$B_5, TMP_String_gsub$B_6, TMP_String_lstrip$B_7, TMP_String_next$B_8, TMP_String_reverse$B_9, TMP_String_slice$B_10, TMP_String_squeeze$B_11, TMP_String_strip$B_12, TMP_String_sub$B_13, TMP_String_succ$B_14, TMP_String_swapcase$B_15, TMP_String_tr$B_16, TMP_String_tr_s$B_17, TMP_String_upcase$B_18, TMP_String_prepend_19;\n\n \n var ERROR = \"String#%s not supported. Mutable String methods are not supported in Opal.\";\n \n Opal.def(self, '$<<', TMP_String_$lt$lt_1 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"<<\"))\n }, TMP_String_$lt$lt_1.$$arity = -1);\n \n Opal.def(self, '$capitalize!', TMP_String_capitalize$B_2 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"capitalize!\"))\n }, TMP_String_capitalize$B_2.$$arity = -1);\n \n Opal.def(self, '$chomp!', TMP_String_chomp$B_3 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"chomp!\"))\n }, TMP_String_chomp$B_3.$$arity = -1);\n \n Opal.def(self, '$chop!', TMP_String_chop$B_4 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"chop!\"))\n }, TMP_String_chop$B_4.$$arity = -1);\n \n Opal.def(self, '$downcase!', TMP_String_downcase$B_5 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"downcase!\"))\n }, TMP_String_downcase$B_5.$$arity = -1);\n \n Opal.def(self, '$gsub!', TMP_String_gsub$B_6 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"gsub!\"))\n }, TMP_String_gsub$B_6.$$arity = -1);\n \n Opal.def(self, '$lstrip!', TMP_String_lstrip$B_7 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"lstrip!\"))\n }, TMP_String_lstrip$B_7.$$arity = -1);\n \n Opal.def(self, '$next!', TMP_String_next$B_8 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"next!\"))\n }, TMP_String_next$B_8.$$arity = -1);\n \n Opal.def(self, '$reverse!', TMP_String_reverse$B_9 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"reverse!\"))\n }, TMP_String_reverse$B_9.$$arity = -1);\n \n Opal.def(self, '$slice!', TMP_String_slice$B_10 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"slice!\"))\n }, TMP_String_slice$B_10.$$arity = -1);\n \n Opal.def(self, '$squeeze!', TMP_String_squeeze$B_11 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"squeeze!\"))\n }, TMP_String_squeeze$B_11.$$arity = -1);\n \n Opal.def(self, '$strip!', TMP_String_strip$B_12 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"strip!\"))\n }, TMP_String_strip$B_12.$$arity = -1);\n \n Opal.def(self, '$sub!', TMP_String_sub$B_13 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"sub!\"))\n }, TMP_String_sub$B_13.$$arity = -1);\n \n Opal.def(self, '$succ!', TMP_String_succ$B_14 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"succ!\"))\n }, TMP_String_succ$B_14.$$arity = -1);\n \n Opal.def(self, '$swapcase!', TMP_String_swapcase$B_15 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"swapcase!\"))\n }, TMP_String_swapcase$B_15.$$arity = -1);\n \n Opal.def(self, '$tr!', TMP_String_tr$B_16 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"tr!\"))\n }, TMP_String_tr$B_16.$$arity = -1);\n \n Opal.def(self, '$tr_s!', TMP_String_tr_s$B_17 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"tr_s!\"))\n }, TMP_String_tr_s$B_17.$$arity = -1);\n \n Opal.def(self, '$upcase!', TMP_String_upcase$B_18 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"upcase!\"))\n }, TMP_String_upcase$B_18.$$arity = -1);\n return (Opal.def(self, '$prepend', TMP_String_prepend_19 = function $$prepend($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), (ERROR)['$%'](\"prepend\"))\n }, TMP_String_prepend_19.$$arity = -1), nil) && 'prepend';\n })($nesting[0], null, $nesting);\n (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_freeze_20, TMP_Kernel_frozen$q_21;\n\n \n var ERROR = \"Object freezing is not supported by Opal\";\n \n Opal.def(self, '$freeze', TMP_Kernel_freeze_20 = function $$freeze() {\n var self = this;\n\n \n handle_unsupported_feature(ERROR);\n return self;\n }, TMP_Kernel_freeze_20.$$arity = 0);\n \n Opal.def(self, '$frozen?', TMP_Kernel_frozen$q_21 = function() {\n var self = this;\n\n \n handle_unsupported_feature(ERROR);\n return false;\n }, TMP_Kernel_frozen$q_21.$$arity = 0);\n })($nesting[0], $nesting);\n (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_taint_22, TMP_Kernel_untaint_23, TMP_Kernel_tainted$q_24;\n\n \n var ERROR = \"Object tainting is not supported by Opal\";\n \n Opal.def(self, '$taint', TMP_Kernel_taint_22 = function $$taint() {\n var self = this;\n\n \n handle_unsupported_feature(ERROR);\n return self;\n }, TMP_Kernel_taint_22.$$arity = 0);\n \n Opal.def(self, '$untaint', TMP_Kernel_untaint_23 = function $$untaint() {\n var self = this;\n\n \n handle_unsupported_feature(ERROR);\n return self;\n }, TMP_Kernel_untaint_23.$$arity = 0);\n \n Opal.def(self, '$tainted?', TMP_Kernel_tainted$q_24 = function() {\n var self = this;\n\n \n handle_unsupported_feature(ERROR);\n return false;\n }, TMP_Kernel_tainted$q_24.$$arity = 0);\n })($nesting[0], $nesting);\n (function($base, $super, $parent_nesting) {\n function $Module(){};\n var self = $Module = $klass($base, $super, 'Module', $Module);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Module_public_25, TMP_Module_private_class_method_26, TMP_Module_private_method_defined$q_27, TMP_Module_private_constant_28;\n\n \n \n Opal.def(self, '$public', TMP_Module_public_25 = function($a_rest) {\n var self = this, methods;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n methods = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n methods[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if (methods.length === 0) {\n self.$$module_function = false;\n }\n\n return nil;\n \n }, TMP_Module_public_25.$$arity = -1);\n Opal.alias(self, \"private\", \"public\");\n Opal.alias(self, \"protected\", \"public\");\n Opal.alias(self, \"nesting\", \"public\");\n \n Opal.def(self, '$private_class_method', TMP_Module_private_class_method_26 = function $$private_class_method($a_rest) {\n var self = this;\n\n return self\n }, TMP_Module_private_class_method_26.$$arity = -1);\n Opal.alias(self, \"public_class_method\", \"private_class_method\");\n \n Opal.def(self, '$private_method_defined?', TMP_Module_private_method_defined$q_27 = function(obj) {\n var self = this;\n\n return false\n }, TMP_Module_private_method_defined$q_27.$$arity = 1);\n \n Opal.def(self, '$private_constant', TMP_Module_private_constant_28 = function $$private_constant($a_rest) {\n var self = this;\n\n return nil\n }, TMP_Module_private_constant_28.$$arity = -1);\n Opal.alias(self, \"protected_method_defined?\", \"private_method_defined?\");\n Opal.alias(self, \"public_instance_methods\", \"instance_methods\");\n return Opal.alias(self, \"public_method_defined?\", \"method_defined?\");\n })($nesting[0], null, $nesting);\n (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_private_methods_29;\n\n \n \n Opal.def(self, '$private_methods', TMP_Kernel_private_methods_29 = function $$private_methods($a_rest) {\n var self = this;\n\n return []\n }, TMP_Kernel_private_methods_29.$$arity = -1);\n Opal.alias(self, \"private_instance_methods\", \"private_methods\");\n })($nesting[0], $nesting);\n (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_eval_30;\n\n \n Opal.def(self, '$eval', TMP_Kernel_eval_30 = function($a_rest) {\n var self = this;\n\n return self.$raise($$($nesting, 'NotImplementedError'), \"\" + \"To use Kernel#eval, you must first require 'opal-parser'. \" + (\"\" + \"See https://github.com/opal/opal/blob/\" + ($$($nesting, 'RUBY_ENGINE_VERSION')) + \"/docs/opal_parser.md for details.\"))\n }, TMP_Kernel_eval_30.$$arity = -1)\n })($nesting[0], $nesting);\n Opal.defs(self, '$public', TMP_public_31 = function($a_rest) {\n var self = this;\n\n return nil\n }, TMP_public_31.$$arity = -1);\n return (Opal.defs(self, '$private', TMP_private_32 = function($a_rest) {\n var self = this;\n\n return nil\n }, TMP_private_32.$$arity = -1), nil) && 'private';\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"opal\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n Opal.add_stubs(['$require']);\n \n self.$require(\"opal/base\");\n self.$require(\"opal/mini\");\n self.$require(\"corelib/string/inheritance\");\n self.$require(\"corelib/string/encoding\");\n self.$require(\"corelib/math\");\n self.$require(\"corelib/complex\");\n self.$require(\"corelib/rational\");\n self.$require(\"corelib/time\");\n self.$require(\"corelib/struct\");\n self.$require(\"corelib/io\");\n self.$require(\"corelib/main\");\n self.$require(\"corelib/dir\");\n self.$require(\"corelib/file\");\n self.$require(\"corelib/process\");\n self.$require(\"corelib/random\");\n return self.$require(\"corelib/unsupported\");\n};\n\n Opal.require('opal');\n}\n\n// UMD Module\n(function (root, factory) {\n if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory;\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register a named module.\n define('asciidoctor', ['module'], function (module) {\n return factory(module.config());\n });\n } else {\n // Browser globals (root is window)\n root.Asciidoctor = factory;\n }\n// eslint-disable-next-line no-unused-vars\n}(this, function (moduleConfig) {\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/browser/file\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass;\n\n Opal.add_stubs(['$new']);\n return (function($base, $super, $parent_nesting) {\n function $File(){};\n var self = $File = $klass($base, $super, 'File', $File);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_File_read_1;\n\n return (Opal.defs(self, '$read', TMP_File_read_1 = function $$read(path) {\n var self = this;\n\n \n var data = '';\n var status = -1;\n try {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', path, false);\n xhr.addEventListener('load', function() {\n status = this.status;\n // status is 0 for local file mode (i.e., file://)\n if (status === 0 || status === 200) {\n data = this.responseText;\n }\n });\n xhr.overrideMimeType('text/plain');\n xhr.send();\n }\n catch (e) {\n throw $$($nesting, 'IOError').$new('Error reading file or directory: ' + path + '; reason: ' + e.message);\n }\n // assume that no data in local file mode means it doesn't exist\n if (status === 404 || (status === 0 && !data)) {\n throw $$($nesting, 'IOError').$new('No such file or directory: ' + path);\n }\n return data;\n \n }, TMP_File_read_1.$$arity = 1), nil) && 'read'\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/browser\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n Opal.add_stubs(['$require']);\n \n \n var platform, engine, framework, ioModule;\n\n if (typeof moduleConfig === 'object' && typeof moduleConfig.runtime === 'object') {\n var runtime = moduleConfig.runtime;\n platform = runtime.platform;\n engine = runtime.engine;\n framework = runtime.framework;\n ioModule = runtime.ioModule;\n }\n ioModule = ioModule || 'xmlhttprequest';\n platform = platform || 'browser';\n engine = engine || '';\n framework = framework || '';\n;\n Opal.const_set($nesting[0], 'JAVASCRIPT_IO_MODULE', ioModule);\n Opal.const_set($nesting[0], 'JAVASCRIPT_PLATFORM', platform);\n Opal.const_set($nesting[0], 'JAVASCRIPT_ENGINE', engine);\n Opal.const_set($nesting[0], 'JAVASCRIPT_FRAMEWORK', framework);\n return self.$require(\"asciidoctor/js/opal_ext/browser/file\");\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"set\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send, $module = Opal.module;\n\n Opal.add_stubs(['$include', '$new', '$nil?', '$===', '$raise', '$each', '$add', '$merge', '$class', '$respond_to?', '$subtract', '$dup', '$join', '$to_a', '$equal?', '$instance_of?', '$==', '$instance_variable_get', '$is_a?', '$size', '$all?', '$include?', '$[]=', '$-', '$enum_for', '$[]', '$<<', '$replace', '$delete', '$select', '$each_key', '$to_proc', '$empty?', '$eql?', '$instance_eval', '$clear', '$<', '$<=', '$keys']);\n \n (function($base, $super, $parent_nesting) {\n function $Set(){};\n var self = $Set = $klass($base, $super, 'Set', $Set);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Set_$$_1, TMP_Set_initialize_2, TMP_Set_dup_4, TMP_Set_$_5, TMP_Set_inspect_6, TMP_Set_$eq$eq_8, TMP_Set_add_9, TMP_Set_classify_10, TMP_Set_collect$B_13, TMP_Set_delete_15, TMP_Set_delete$q_16, TMP_Set_delete_if_17, TMP_Set_add$q_20, TMP_Set_each_21, TMP_Set_empty$q_22, TMP_Set_eql$q_24, TMP_Set_clear_25, TMP_Set_include$q_26, TMP_Set_merge_28, TMP_Set_replace_29, TMP_Set_size_30, TMP_Set_subtract_32, TMP_Set_$_33, TMP_Set_superset$q_35, TMP_Set_proper_superset$q_37, TMP_Set_subset$q_39, TMP_Set_proper_subset$q_41, TMP_Set_to_a_42;\n\n def.hash = nil;\n \n self.$include($$($nesting, 'Enumerable'));\n Opal.defs(self, '$[]', TMP_Set_$$_1 = function($a_rest) {\n var self = this, ary;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n ary = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n ary[$arg_idx - 0] = arguments[$arg_idx];\n }\n return self.$new(ary)\n }, TMP_Set_$$_1.$$arity = -1);\n \n Opal.def(self, '$initialize', TMP_Set_initialize_2 = function $$initialize(enum$) {\n var TMP_3, self = this, $iter = TMP_Set_initialize_2.$$p, block = $iter || nil;\n\n if (enum$ == null) {\n enum$ = nil;\n }\n if ($iter) TMP_Set_initialize_2.$$p = null;\n \n self.hash = $hash2([], {});\n if ($truthy(enum$['$nil?']())) {\n return nil};\n if ($truthy($$($nesting, 'Enumerable')['$==='](enum$))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"value must be enumerable\")\n };\n if ($truthy(block)) {\n return $send(enum$, 'each', [], (TMP_3 = function(item){var self = TMP_3.$$s || this;\nif (item == null) item = nil;\n return self.$add(Opal.yield1(block, item))}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3))\n } else {\n return self.$merge(enum$)\n };\n }, TMP_Set_initialize_2.$$arity = -1);\n \n Opal.def(self, '$dup', TMP_Set_dup_4 = function $$dup() {\n var self = this, result = nil;\n\n \n result = self.$class().$new();\n return result.$merge(self);\n }, TMP_Set_dup_4.$$arity = 0);\n \n Opal.def(self, '$-', TMP_Set_$_5 = function(enum$) {\n var self = this;\n\n \n if ($truthy(enum$['$respond_to?'](\"each\"))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"value must be enumerable\")\n };\n return self.$dup().$subtract(enum$);\n }, TMP_Set_$_5.$$arity = 1);\n Opal.alias(self, \"difference\", \"-\");\n \n Opal.def(self, '$inspect', TMP_Set_inspect_6 = function $$inspect() {\n var self = this;\n\n return \"\" + \"#<Set: {\" + (self.$to_a().$join(\",\")) + \"}>\"\n }, TMP_Set_inspect_6.$$arity = 0);\n \n Opal.def(self, '$==', TMP_Set_$eq$eq_8 = function(other) {\n var $a, TMP_7, self = this;\n\n if ($truthy(self['$equal?'](other))) {\n return true\n } else if ($truthy(other['$instance_of?'](self.$class()))) {\n return self.hash['$=='](other.$instance_variable_get(\"@hash\"))\n } else if ($truthy(($truthy($a = other['$is_a?']($$($nesting, 'Set'))) ? self.$size()['$=='](other.$size()) : $a))) {\n return $send(other, 'all?', [], (TMP_7 = function(o){var self = TMP_7.$$s || this;\n if (self.hash == null) self.hash = nil;\nif (o == null) o = nil;\n return self.hash['$include?'](o)}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7))\n } else {\n return false\n }\n }, TMP_Set_$eq$eq_8.$$arity = 1);\n \n Opal.def(self, '$add', TMP_Set_add_9 = function $$add(o) {\n var self = this, $writer = nil;\n\n \n \n $writer = [o, true];\n $send(self.hash, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return self;\n }, TMP_Set_add_9.$$arity = 1);\n Opal.alias(self, \"<<\", \"add\");\n \n Opal.def(self, '$classify', TMP_Set_classify_10 = function $$classify() {\n var TMP_11, TMP_12, self = this, $iter = TMP_Set_classify_10.$$p, block = $iter || nil, result = nil;\n\n if ($iter) TMP_Set_classify_10.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"classify\")\n };\n result = $send($$($nesting, 'Hash'), 'new', [], (TMP_11 = function(h, k){var self = TMP_11.$$s || this, $writer = nil;\nif (h == null) h = nil;if (k == null) k = nil;\n \n $writer = [k, self.$class().$new()];\n $send(h, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_11.$$s = self, TMP_11.$$arity = 2, TMP_11));\n $send(self, 'each', [], (TMP_12 = function(item){var self = TMP_12.$$s || this;\nif (item == null) item = nil;\n return result['$[]'](Opal.yield1(block, item)).$add(item)}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12));\n return result;\n }, TMP_Set_classify_10.$$arity = 0);\n \n Opal.def(self, '$collect!', TMP_Set_collect$B_13 = function() {\n var TMP_14, self = this, $iter = TMP_Set_collect$B_13.$$p, block = $iter || nil, result = nil;\n\n if ($iter) TMP_Set_collect$B_13.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"collect!\")\n };\n result = self.$class().$new();\n $send(self, 'each', [], (TMP_14 = function(item){var self = TMP_14.$$s || this;\nif (item == null) item = nil;\n return result['$<<'](Opal.yield1(block, item))}, TMP_14.$$s = self, TMP_14.$$arity = 1, TMP_14));\n return self.$replace(result);\n }, TMP_Set_collect$B_13.$$arity = 0);\n Opal.alias(self, \"map!\", \"collect!\");\n \n Opal.def(self, '$delete', TMP_Set_delete_15 = function(o) {\n var self = this;\n\n \n self.hash.$delete(o);\n return self;\n }, TMP_Set_delete_15.$$arity = 1);\n \n Opal.def(self, '$delete?', TMP_Set_delete$q_16 = function(o) {\n var self = this;\n\n if ($truthy(self['$include?'](o))) {\n \n self.$delete(o);\n return self;\n } else {\n return nil\n }\n }, TMP_Set_delete$q_16.$$arity = 1);\n \n Opal.def(self, '$delete_if', TMP_Set_delete_if_17 = function $$delete_if() {\n var TMP_18, TMP_19, self = this, $iter = TMP_Set_delete_if_17.$$p, $yield = $iter || nil;\n\n if ($iter) TMP_Set_delete_if_17.$$p = null;\n \n if (($yield !== nil)) {\n } else {\n return self.$enum_for(\"delete_if\")\n };\n $send($send(self, 'select', [], (TMP_18 = function(o){var self = TMP_18.$$s || this;\nif (o == null) o = nil;\n return Opal.yield1($yield, o);}, TMP_18.$$s = self, TMP_18.$$arity = 1, TMP_18)), 'each', [], (TMP_19 = function(o){var self = TMP_19.$$s || this;\n if (self.hash == null) self.hash = nil;\nif (o == null) o = nil;\n return self.hash.$delete(o)}, TMP_19.$$s = self, TMP_19.$$arity = 1, TMP_19));\n return self;\n }, TMP_Set_delete_if_17.$$arity = 0);\n \n Opal.def(self, '$add?', TMP_Set_add$q_20 = function(o) {\n var self = this;\n\n if ($truthy(self['$include?'](o))) {\n return nil\n } else {\n return self.$add(o)\n }\n }, TMP_Set_add$q_20.$$arity = 1);\n \n Opal.def(self, '$each', TMP_Set_each_21 = function $$each() {\n var self = this, $iter = TMP_Set_each_21.$$p, block = $iter || nil;\n\n if ($iter) TMP_Set_each_21.$$p = null;\n \n if ((block !== nil)) {\n } else {\n return self.$enum_for(\"each\")\n };\n $send(self.hash, 'each_key', [], block.$to_proc());\n return self;\n }, TMP_Set_each_21.$$arity = 0);\n \n Opal.def(self, '$empty?', TMP_Set_empty$q_22 = function() {\n var self = this;\n\n return self.hash['$empty?']()\n }, TMP_Set_empty$q_22.$$arity = 0);\n \n Opal.def(self, '$eql?', TMP_Set_eql$q_24 = function(other) {\n var TMP_23, self = this;\n\n return self.hash['$eql?']($send(other, 'instance_eval', [], (TMP_23 = function(){var self = TMP_23.$$s || this;\n if (self.hash == null) self.hash = nil;\n\n return self.hash}, TMP_23.$$s = self, TMP_23.$$arity = 0, TMP_23)))\n }, TMP_Set_eql$q_24.$$arity = 1);\n \n Opal.def(self, '$clear', TMP_Set_clear_25 = function $$clear() {\n var self = this;\n\n \n self.hash.$clear();\n return self;\n }, TMP_Set_clear_25.$$arity = 0);\n \n Opal.def(self, '$include?', TMP_Set_include$q_26 = function(o) {\n var self = this;\n\n return self.hash['$include?'](o)\n }, TMP_Set_include$q_26.$$arity = 1);\n Opal.alias(self, \"member?\", \"include?\");\n \n Opal.def(self, '$merge', TMP_Set_merge_28 = function $$merge(enum$) {\n var TMP_27, self = this;\n\n \n $send(enum$, 'each', [], (TMP_27 = function(item){var self = TMP_27.$$s || this;\nif (item == null) item = nil;\n return self.$add(item)}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27));\n return self;\n }, TMP_Set_merge_28.$$arity = 1);\n \n Opal.def(self, '$replace', TMP_Set_replace_29 = function $$replace(enum$) {\n var self = this;\n\n \n self.$clear();\n self.$merge(enum$);\n return self;\n }, TMP_Set_replace_29.$$arity = 1);\n \n Opal.def(self, '$size', TMP_Set_size_30 = function $$size() {\n var self = this;\n\n return self.hash.$size()\n }, TMP_Set_size_30.$$arity = 0);\n Opal.alias(self, \"length\", \"size\");\n \n Opal.def(self, '$subtract', TMP_Set_subtract_32 = function $$subtract(enum$) {\n var TMP_31, self = this;\n\n \n $send(enum$, 'each', [], (TMP_31 = function(item){var self = TMP_31.$$s || this;\nif (item == null) item = nil;\n return self.$delete(item)}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31));\n return self;\n }, TMP_Set_subtract_32.$$arity = 1);\n \n Opal.def(self, '$|', TMP_Set_$_33 = function(enum$) {\n var self = this;\n\n \n if ($truthy(enum$['$respond_to?'](\"each\"))) {\n } else {\n self.$raise($$($nesting, 'ArgumentError'), \"value must be enumerable\")\n };\n return self.$dup().$merge(enum$);\n }, TMP_Set_$_33.$$arity = 1);\n \n Opal.def(self, '$superset?', TMP_Set_superset$q_35 = function(set) {\n var $a, TMP_34, self = this;\n\n \n ($truthy($a = set['$is_a?']($$($nesting, 'Set'))) ? $a : self.$raise($$($nesting, 'ArgumentError'), \"value must be a set\"));\n if ($truthy($rb_lt(self.$size(), set.$size()))) {\n return false};\n return $send(set, 'all?', [], (TMP_34 = function(o){var self = TMP_34.$$s || this;\nif (o == null) o = nil;\n return self['$include?'](o)}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34));\n }, TMP_Set_superset$q_35.$$arity = 1);\n Opal.alias(self, \">=\", \"superset?\");\n \n Opal.def(self, '$proper_superset?', TMP_Set_proper_superset$q_37 = function(set) {\n var $a, TMP_36, self = this;\n\n \n ($truthy($a = set['$is_a?']($$($nesting, 'Set'))) ? $a : self.$raise($$($nesting, 'ArgumentError'), \"value must be a set\"));\n if ($truthy($rb_le(self.$size(), set.$size()))) {\n return false};\n return $send(set, 'all?', [], (TMP_36 = function(o){var self = TMP_36.$$s || this;\nif (o == null) o = nil;\n return self['$include?'](o)}, TMP_36.$$s = self, TMP_36.$$arity = 1, TMP_36));\n }, TMP_Set_proper_superset$q_37.$$arity = 1);\n Opal.alias(self, \">\", \"proper_superset?\");\n \n Opal.def(self, '$subset?', TMP_Set_subset$q_39 = function(set) {\n var $a, TMP_38, self = this;\n\n \n ($truthy($a = set['$is_a?']($$($nesting, 'Set'))) ? $a : self.$raise($$($nesting, 'ArgumentError'), \"value must be a set\"));\n if ($truthy($rb_lt(set.$size(), self.$size()))) {\n return false};\n return $send(self, 'all?', [], (TMP_38 = function(o){var self = TMP_38.$$s || this;\nif (o == null) o = nil;\n return set['$include?'](o)}, TMP_38.$$s = self, TMP_38.$$arity = 1, TMP_38));\n }, TMP_Set_subset$q_39.$$arity = 1);\n Opal.alias(self, \"<=\", \"subset?\");\n \n Opal.def(self, '$proper_subset?', TMP_Set_proper_subset$q_41 = function(set) {\n var $a, TMP_40, self = this;\n\n \n ($truthy($a = set['$is_a?']($$($nesting, 'Set'))) ? $a : self.$raise($$($nesting, 'ArgumentError'), \"value must be a set\"));\n if ($truthy($rb_le(set.$size(), self.$size()))) {\n return false};\n return $send(self, 'all?', [], (TMP_40 = function(o){var self = TMP_40.$$s || this;\nif (o == null) o = nil;\n return set['$include?'](o)}, TMP_40.$$s = self, TMP_40.$$arity = 1, TMP_40));\n }, TMP_Set_proper_subset$q_41.$$arity = 1);\n Opal.alias(self, \"<\", \"proper_subset?\");\n Opal.alias(self, \"+\", \"|\");\n Opal.alias(self, \"union\", \"|\");\n return (Opal.def(self, '$to_a', TMP_Set_to_a_42 = function $$to_a() {\n var self = this;\n\n return self.hash.$keys()\n }, TMP_Set_to_a_42.$$arity = 0), nil) && 'to_a';\n })($nesting[0], null, $nesting);\n return (function($base, $parent_nesting) {\n var $Enumerable, self = $Enumerable = $module($base, 'Enumerable');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Enumerable_to_set_43;\n\n \n Opal.def(self, '$to_set', TMP_Enumerable_to_set_43 = function $$to_set(klass, $a_rest) {\n var self = this, args, $iter = TMP_Enumerable_to_set_43.$$p, block = $iter || nil;\n\n if (klass == null) {\n klass = $$($nesting, 'Set');\n }\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 1] = arguments[$arg_idx];\n }\n if ($iter) TMP_Enumerable_to_set_43.$$p = null;\n return $send(klass, 'new', [self].concat(Opal.to_a(args)), block.$to_proc())\n }, TMP_Enumerable_to_set_43.$$arity = -1)\n })($nesting[0], $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/file\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $klass = Opal.klass, $truthy = Opal.truthy, $gvars = Opal.gvars;\n\n Opal.add_stubs(['$new', '$attr_reader', '$delete', '$gsub', '$read', '$size', '$to_enum', '$chomp', '$each_line', '$readlines', '$split']);\n \n (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_open_1;\n\n \n Opal.def(self, '$open', TMP_Kernel_open_1 = function $$open(path, $a_rest) {\n var self = this, rest, $iter = TMP_Kernel_open_1.$$p, $yield = $iter || nil, file = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n rest = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n rest[$arg_idx - 1] = arguments[$arg_idx];\n }\n if ($iter) TMP_Kernel_open_1.$$p = null;\n \n file = $send($$($nesting, 'File'), 'new', [path].concat(Opal.to_a(rest)));\n if (($yield !== nil)) {\n return Opal.yield1($yield, file);\n } else {\n return file\n };\n }, TMP_Kernel_open_1.$$arity = -2)\n })($nesting[0], $nesting);\n (function($base, $super, $parent_nesting) {\n function $File(){};\n var self = $File = $klass($base, $super, 'File', $File);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_File_initialize_2, TMP_File_read_3, TMP_File_each_line_4, TMP_File_readlines_5;\n\n def.eof = def.path = nil;\n \n self.$attr_reader(\"eof\");\n self.$attr_reader(\"lineno\");\n self.$attr_reader(\"path\");\n \n Opal.def(self, '$initialize', TMP_File_initialize_2 = function $$initialize(path, flags) {\n var self = this, encoding_flag_regexp = nil;\n\n if (flags == null) {\n flags = \"r\";\n }\n \n self.path = path;\n self.contents = nil;\n self.eof = false;\n self.lineno = 0;\n flags = flags.$delete(\"b\");\n encoding_flag_regexp = /:(.*)/;\n flags = flags.$gsub(encoding_flag_regexp, \"\");\n return (self.flags = flags);\n }, TMP_File_initialize_2.$$arity = -2);\n \n Opal.def(self, '$read', TMP_File_read_3 = function $$read() {\n var self = this, res = nil;\n\n if ($truthy(self.eof)) {\n return \"\"\n } else {\n \n res = $$($nesting, 'File').$read(self.path);\n self.eof = true;\n self.lineno = res.$size();\n return res;\n }\n }, TMP_File_read_3.$$arity = 0);\n \n Opal.def(self, '$each_line', TMP_File_each_line_4 = function $$each_line(separator) {\n var self = this, $iter = TMP_File_each_line_4.$$p, block = $iter || nil, lines = nil;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n if (separator == null) {\n separator = $gvars[\"/\"];\n }\n if ($iter) TMP_File_each_line_4.$$p = null;\n \n if ($truthy(self.eof)) {\n return (function() {if ((block !== nil)) {\n return self\n } else {\n return [].$to_enum()\n }; return nil; })()};\n if ((block !== nil)) {\n \n lines = $$($nesting, 'File').$read(self.path);\n \n self.eof = false;\n self.lineno = 0;\n var chomped = lines.$chomp(),\n trailing = lines.length != chomped.length,\n splitted = chomped.split(separator);\n for (var i = 0, length = splitted.length; i < length; i++) {\n self.lineno += 1;\n if (i < length - 1 || trailing) {\n Opal.yield1(block, splitted[i] + separator);\n }\n else {\n Opal.yield1(block, splitted[i]);\n }\n }\n self.eof = true;\n ;\n return self;\n } else {\n return self.$read().$each_line()\n };\n }, TMP_File_each_line_4.$$arity = -1);\n \n Opal.def(self, '$readlines', TMP_File_readlines_5 = function $$readlines() {\n var self = this;\n\n return $$($nesting, 'File').$readlines(self.path)\n }, TMP_File_readlines_5.$$arity = 0);\n return (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_readlines_6, TMP_file$q_7, TMP_readable$q_8, TMP_read_9;\n\n \n \n Opal.def(self, '$readlines', TMP_readlines_6 = function $$readlines(path, separator) {\n var self = this, content = nil;\n if ($gvars[\"/\"] == null) $gvars[\"/\"] = nil;\n\n if (separator == null) {\n separator = $gvars[\"/\"];\n }\n \n content = $$($nesting, 'File').$read(path);\n return content.$split(separator);\n }, TMP_readlines_6.$$arity = -2);\n \n Opal.def(self, '$file?', TMP_file$q_7 = function(path) {\n var self = this;\n\n return true\n }, TMP_file$q_7.$$arity = 1);\n \n Opal.def(self, '$readable?', TMP_readable$q_8 = function(path) {\n var self = this;\n\n return true\n }, TMP_readable$q_8.$$arity = 1);\n return (Opal.def(self, '$read', TMP_read_9 = function $$read(path) {\n var self = this;\n\n return \"\"\n }, TMP_read_9.$$arity = 1), nil) && 'read';\n })(Opal.get_singleton_class(self), $nesting);\n })($nesting[0], null, $nesting);\n return (function($base, $super, $parent_nesting) {\n function $IO(){};\n var self = $IO = $klass($base, $super, 'IO', $IO);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_IO_read_10;\n\n return (Opal.defs(self, '$read', TMP_IO_read_10 = function $$read(path) {\n var self = this;\n\n return $$($nesting, 'File').$read(path)\n }, TMP_IO_read_10.$$arity = 1), nil) && 'read'\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/match_data\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send;\n\n Opal.add_stubs(['$[]=', '$-']);\n return (function($base, $super, $parent_nesting) {\n function $MatchData(){};\n var self = $MatchData = $klass($base, $super, 'MatchData', $MatchData);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MatchData_$$$eq_1;\n\n def.matches = nil;\n return (Opal.def(self, '$[]=', TMP_MatchData_$$$eq_1 = function(idx, val) {\n var self = this, $writer = nil;\n\n \n $writer = [idx, val];\n $send(self.matches, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }, TMP_MatchData_$$$eq_1.$$arity = 2), nil) && '[]='\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/kernel\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module;\n\n return (function($base, $parent_nesting) {\n var $Kernel, self = $Kernel = $module($base, 'Kernel');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Kernel_freeze_1;\n\n \n Opal.def(self, '$freeze', TMP_Kernel_freeze_1 = function $$freeze() {\n var self = this;\n\n return self\n }, TMP_Kernel_freeze_1.$$arity = 0)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/thread_safe\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass;\n\n return (function($base, $parent_nesting) {\n var $ThreadSafe, self = $ThreadSafe = $module($base, 'ThreadSafe');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Cache(){};\n var self = $Cache = $klass($base, $super, 'Cache', $Cache);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$$('::', 'Hash'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/string\"] = function(Opal) {\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send;\n\n Opal.add_stubs(['$method_defined?', '$<', '$length', '$bytes', '$to_s', '$byteslice', '$==', '$with_index', '$select', '$[]', '$even?', '$_original_unpack']);\n return (function($base, $super, $parent_nesting) {\n function $String(){};\n var self = $String = $klass($base, $super, 'String', $String);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_limit_bytesize_1, TMP_String_unpack_3;\n\n \n if ($truthy(self['$method_defined?'](\"limit_bytesize\"))) {\n } else {\n \n Opal.def(self, '$limit_bytesize', TMP_String_limit_bytesize_1 = function $$limit_bytesize(size) {\n var self = this, result = nil;\n\n \n if ($truthy($rb_lt(size, self.$bytes().$length()))) {\n } else {\n return self.$to_s()\n };\n result = self.$byteslice(0, size);\n return result.$to_s();\n }, TMP_String_limit_bytesize_1.$$arity = 1)\n };\n if ($truthy(self['$method_defined?'](\"limit\"))) {\n } else {\n Opal.alias(self, \"limit\", \"limit_bytesize\")\n };\n Opal.alias(self, \"_original_unpack\", \"unpack\");\n return (Opal.def(self, '$unpack', TMP_String_unpack_3 = function $$unpack(format) {\n var TMP_2, self = this;\n\n if (format['$=='](\"C3\")) {\n return $send(self['$[]'](0, 3).$bytes().$select(), 'with_index', [], (TMP_2 = function(_, i){var self = TMP_2.$$s || this;\nif (_ == null) _ = nil;if (i == null) i = nil;\n return i['$even?']()}, TMP_2.$$s = self, TMP_2.$$arity = 2, TMP_2))\n } else {\n return self.$_original_unpack(format)\n }\n }, TMP_String_unpack_3.$$arity = 1), nil) && 'unpack';\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/uri\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module;\n\n Opal.add_stubs(['$extend']);\n return (function($base, $parent_nesting) {\n var $URI, self = $URI = $module($base, 'URI');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_URI_parse_1, TMP_URI_path_2;\n\n \n Opal.defs(self, '$parse', TMP_URI_parse_1 = function $$parse(str) {\n var self = this;\n\n return str.$extend($$($nesting, 'URI'))\n }, TMP_URI_parse_1.$$arity = 1);\n \n Opal.def(self, '$path', TMP_URI_path_2 = function $$path() {\n var self = this;\n\n return self\n }, TMP_URI_path_2.$$arity = 0);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n Opal.add_stubs(['$require']);\n \n self.$require(\"asciidoctor/js/opal_ext/file\");\n self.$require(\"asciidoctor/js/opal_ext/match_data\");\n self.$require(\"asciidoctor/js/opal_ext/kernel\");\n self.$require(\"asciidoctor/js/opal_ext/thread_safe\");\n self.$require(\"asciidoctor/js/opal_ext/string\");\n self.$require(\"asciidoctor/js/opal_ext/uri\");\n \n// Load specific implementation\nself.$require(\"asciidoctor/js/opal_ext/browser\");\n;\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/rx\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $gvars = Opal.gvars, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$gsub', '$+', '$unpack_hex_range']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Asciidoctor_unpack_hex_range_2;\n\n \n Opal.const_set($nesting[0], 'HEX_RANGE_RX', /([A-F0-9]{4})(?:-([A-F0-9]{4}))?/);\n Opal.defs(self, '$unpack_hex_range', TMP_Asciidoctor_unpack_hex_range_2 = function $$unpack_hex_range(str) {\n var TMP_1, self = this;\n\n return $send(str, 'gsub', [$$($nesting, 'HEX_RANGE_RX')], (TMP_1 = function(){var self = TMP_1.$$s || this, $a, $b;\n\n return \"\" + \"\\\\u\" + ((($a = $gvars['~']) === nil ? nil : $a['$[]'](1))) + (($truthy($a = (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))) ? \"\" + \"-\\\\u\" + ((($b = $gvars['~']) === nil ? nil : $b['$[]'](2))) : $a))}, TMP_1.$$s = self, TMP_1.$$arity = 0, TMP_1))\n }, TMP_Asciidoctor_unpack_hex_range_2.$$arity = 1);\n Opal.const_set($nesting[0], 'P_L', $rb_plus(\"A-Za-z\", self.$unpack_hex_range(\"00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D037F03860388-038A038C038E-03A103A3-03F503F7-0481048A-052F0531-055605590561-058705D0-05EA05F0-05F20620-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280840-085808A0-08B20904-0939093D09500958-09610971-09800985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10CF10CF20D05-0D0C0D0E-0D100D12-0D3A0D3D0D4E0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC-0EDF0F000F40-0F470F49-0F6C0F88-0F8C1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510C710CD10D0-10FA10FC-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA16F1-16F81700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191E1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1BBA-1BE51C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11CF51CF61D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209C21022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2CF22CF32D00-2D252D272D2D2D30-2D672D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31BA31F0-31FF3400-4DB54E00-9FCCA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A66EA67F-A69DA6A0-A6E5A717-A71FA722-A788A78B-A78EA790-A7ADA7B0A7B1A7F7-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFA9E0-A9E4A9E6-A9EFA9FA-A9FEAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA7E-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDAAE0-AAEAAAF2-AAF4AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EAB30-AB5AAB5C-AB5FAB64AB65ABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\")));\n Opal.const_set($nesting[0], 'P_Nl', self.$unpack_hex_range(\"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\"));\n Opal.const_set($nesting[0], 'P_Nd', $rb_plus(\"0-9\", self.$unpack_hex_range(\"0660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0DE6-0DEF0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19D91A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9A9F0-A9F9AA50-AA59ABF0-ABF9FF10-FF19\")));\n Opal.const_set($nesting[0], 'P_Pc', self.$unpack_hex_range(\"005F203F20402054FE33FE34FE4D-FE4FFF3F\"));\n Opal.const_set($nesting[0], 'CC_ALPHA', \"\" + ($$($nesting, 'P_L')) + ($$($nesting, 'P_Nl')));\n Opal.const_set($nesting[0], 'CG_ALPHA', \"\" + \"[\" + ($$($nesting, 'CC_ALPHA')) + \"]\");\n Opal.const_set($nesting[0], 'CC_ALNUM', \"\" + ($$($nesting, 'CC_ALPHA')) + ($$($nesting, 'P_Nd')));\n Opal.const_set($nesting[0], 'CG_ALNUM', \"\" + \"[\" + ($$($nesting, 'CC_ALNUM')) + \"]\");\n Opal.const_set($nesting[0], 'CC_WORD', \"\" + ($$($nesting, 'CC_ALNUM')) + ($$($nesting, 'P_Pc')));\n Opal.const_set($nesting[0], 'CG_WORD', \"\" + \"[\" + ($$($nesting, 'CC_WORD')) + \"]\");\n Opal.const_set($nesting[0], 'CG_BLANK', \"[ \\\\t]\");\n Opal.const_set($nesting[0], 'CC_EOL', \"(?=\\\\n|$)\");\n Opal.const_set($nesting[0], 'CG_GRAPH', \"[^\\\\s\\\\x00-\\\\x1F\\\\x7F]\");\n Opal.const_set($nesting[0], 'CC_ALL', \"[\\\\s\\\\S]\");\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"strscan\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $send = Opal.send;\n\n Opal.add_stubs(['$attr_reader', '$anchor', '$scan_until', '$length', '$size', '$rest', '$pos=', '$-', '$private']);\n return (function($base, $super, $parent_nesting) {\n function $StringScanner(){};\n var self = $StringScanner = $klass($base, $super, 'StringScanner', $StringScanner);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_StringScanner_initialize_1, TMP_StringScanner_beginning_of_line$q_2, TMP_StringScanner_scan_3, TMP_StringScanner_scan_until_4, TMP_StringScanner_$$_5, TMP_StringScanner_check_6, TMP_StringScanner_check_until_7, TMP_StringScanner_peek_8, TMP_StringScanner_eos$q_9, TMP_StringScanner_exist$q_10, TMP_StringScanner_skip_11, TMP_StringScanner_skip_until_12, TMP_StringScanner_get_byte_13, TMP_StringScanner_match$q_14, TMP_StringScanner_pos$eq_15, TMP_StringScanner_matched_size_16, TMP_StringScanner_post_match_17, TMP_StringScanner_pre_match_18, TMP_StringScanner_reset_19, TMP_StringScanner_rest_20, TMP_StringScanner_rest$q_21, TMP_StringScanner_rest_size_22, TMP_StringScanner_terminate_23, TMP_StringScanner_unscan_24, TMP_StringScanner_anchor_25;\n\n def.pos = def.string = def.working = def.matched = def.prev_pos = def.match = nil;\n \n self.$attr_reader(\"pos\");\n self.$attr_reader(\"matched\");\n \n Opal.def(self, '$initialize', TMP_StringScanner_initialize_1 = function $$initialize(string) {\n var self = this;\n\n \n self.string = string;\n self.pos = 0;\n self.matched = nil;\n self.working = string;\n return (self.match = []);\n }, TMP_StringScanner_initialize_1.$$arity = 1);\n self.$attr_reader(\"string\");\n \n Opal.def(self, '$beginning_of_line?', TMP_StringScanner_beginning_of_line$q_2 = function() {\n var self = this;\n\n return self.pos === 0 || self.string.charAt(self.pos - 1) === \"\\n\"\n }, TMP_StringScanner_beginning_of_line$q_2.$$arity = 0);\n Opal.alias(self, \"bol?\", \"beginning_of_line?\");\n \n Opal.def(self, '$scan', TMP_StringScanner_scan_3 = function $$scan(pattern) {\n var self = this;\n\n \n pattern = self.$anchor(pattern);\n \n var result = pattern.exec(self.working);\n\n if (result == null) {\n return self.matched = nil;\n }\n else if (typeof(result) === 'object') {\n self.prev_pos = self.pos;\n self.pos += result[0].length;\n self.working = self.working.substring(result[0].length);\n self.matched = result[0];\n self.match = result;\n\n return result[0];\n }\n else if (typeof(result) === 'string') {\n self.pos += result.length;\n self.working = self.working.substring(result.length);\n\n return result;\n }\n else {\n return nil;\n }\n ;\n }, TMP_StringScanner_scan_3.$$arity = 1);\n \n Opal.def(self, '$scan_until', TMP_StringScanner_scan_until_4 = function $$scan_until(pattern) {\n var self = this;\n\n \n pattern = self.$anchor(pattern);\n \n var pos = self.pos,\n working = self.working,\n result;\n\n while (true) {\n result = pattern.exec(working);\n pos += 1;\n working = working.substr(1);\n\n if (result == null) {\n if (working.length === 0) {\n return self.matched = nil;\n }\n\n continue;\n }\n\n self.matched = self.string.substr(self.pos, pos - self.pos - 1 + result[0].length);\n self.prev_pos = pos - 1;\n self.pos = pos;\n self.working = working.substr(result[0].length);\n\n return self.matched;\n }\n ;\n }, TMP_StringScanner_scan_until_4.$$arity = 1);\n \n Opal.def(self, '$[]', TMP_StringScanner_$$_5 = function(idx) {\n var self = this;\n\n \n var match = self.match;\n\n if (idx < 0) {\n idx += match.length;\n }\n\n if (idx < 0 || idx >= match.length) {\n return nil;\n }\n\n if (match[idx] == null) {\n return nil;\n }\n\n return match[idx];\n \n }, TMP_StringScanner_$$_5.$$arity = 1);\n \n Opal.def(self, '$check', TMP_StringScanner_check_6 = function $$check(pattern) {\n var self = this;\n\n \n pattern = self.$anchor(pattern);\n \n var result = pattern.exec(self.working);\n\n if (result == null) {\n return self.matched = nil;\n }\n\n return self.matched = result[0];\n ;\n }, TMP_StringScanner_check_6.$$arity = 1);\n \n Opal.def(self, '$check_until', TMP_StringScanner_check_until_7 = function $$check_until(pattern) {\n var self = this;\n\n \n var prev_pos = self.prev_pos,\n pos = self.pos;\n\n var result = self.$scan_until(pattern);\n\n if (result !== nil) {\n self.matched = result.substr(-1);\n self.working = self.string.substr(pos);\n }\n\n self.prev_pos = prev_pos;\n self.pos = pos;\n\n return result;\n \n }, TMP_StringScanner_check_until_7.$$arity = 1);\n \n Opal.def(self, '$peek', TMP_StringScanner_peek_8 = function $$peek(length) {\n var self = this;\n\n return self.working.substring(0, length)\n }, TMP_StringScanner_peek_8.$$arity = 1);\n \n Opal.def(self, '$eos?', TMP_StringScanner_eos$q_9 = function() {\n var self = this;\n\n return self.working.length === 0\n }, TMP_StringScanner_eos$q_9.$$arity = 0);\n \n Opal.def(self, '$exist?', TMP_StringScanner_exist$q_10 = function(pattern) {\n var self = this;\n\n \n var result = pattern.exec(self.working);\n\n if (result == null) {\n return nil;\n }\n else if (result.index == 0) {\n return 0;\n }\n else {\n return result.index + 1;\n }\n \n }, TMP_StringScanner_exist$q_10.$$arity = 1);\n \n Opal.def(self, '$skip', TMP_StringScanner_skip_11 = function $$skip(pattern) {\n var self = this;\n\n \n pattern = self.$anchor(pattern);\n \n var result = pattern.exec(self.working);\n\n if (result == null) {\n return self.matched = nil;\n }\n else {\n var match_str = result[0];\n var match_len = match_str.length;\n\n self.matched = match_str;\n self.prev_pos = self.pos;\n self.pos += match_len;\n self.working = self.working.substring(match_len);\n\n return match_len;\n }\n ;\n }, TMP_StringScanner_skip_11.$$arity = 1);\n \n Opal.def(self, '$skip_until', TMP_StringScanner_skip_until_12 = function $$skip_until(pattern) {\n var self = this;\n\n \n var result = self.$scan_until(pattern);\n\n if (result === nil) {\n return nil;\n }\n else {\n self.matched = result.substr(-1);\n\n return result.length;\n }\n \n }, TMP_StringScanner_skip_until_12.$$arity = 1);\n \n Opal.def(self, '$get_byte', TMP_StringScanner_get_byte_13 = function $$get_byte() {\n var self = this;\n\n \n var result = nil;\n\n if (self.pos < self.string.length) {\n self.prev_pos = self.pos;\n self.pos += 1;\n result = self.matched = self.working.substring(0, 1);\n self.working = self.working.substring(1);\n }\n else {\n self.matched = nil;\n }\n\n return result;\n \n }, TMP_StringScanner_get_byte_13.$$arity = 0);\n Opal.alias(self, \"getch\", \"get_byte\");\n \n Opal.def(self, '$match?', TMP_StringScanner_match$q_14 = function(pattern) {\n var self = this;\n\n \n pattern = self.$anchor(pattern);\n \n var result = pattern.exec(self.working);\n\n if (result == null) {\n return nil;\n }\n else {\n self.prev_pos = self.pos;\n\n return result[0].length;\n }\n ;\n }, TMP_StringScanner_match$q_14.$$arity = 1);\n \n Opal.def(self, '$pos=', TMP_StringScanner_pos$eq_15 = function(pos) {\n var self = this;\n\n \n \n if (pos < 0) {\n pos += self.string.$length();\n }\n ;\n self.pos = pos;\n return (self.working = self.string.slice(pos));\n }, TMP_StringScanner_pos$eq_15.$$arity = 1);\n \n Opal.def(self, '$matched_size', TMP_StringScanner_matched_size_16 = function $$matched_size() {\n var self = this;\n\n \n if (self.matched === nil) {\n return nil;\n }\n\n return self.matched.length\n \n }, TMP_StringScanner_matched_size_16.$$arity = 0);\n \n Opal.def(self, '$post_match', TMP_StringScanner_post_match_17 = function $$post_match() {\n var self = this;\n\n \n if (self.matched === nil) {\n return nil;\n }\n\n return self.string.substr(self.pos);\n \n }, TMP_StringScanner_post_match_17.$$arity = 0);\n \n Opal.def(self, '$pre_match', TMP_StringScanner_pre_match_18 = function $$pre_match() {\n var self = this;\n\n \n if (self.matched === nil) {\n return nil;\n }\n\n return self.string.substr(0, self.prev_pos);\n \n }, TMP_StringScanner_pre_match_18.$$arity = 0);\n \n Opal.def(self, '$reset', TMP_StringScanner_reset_19 = function $$reset() {\n var self = this;\n\n \n self.working = self.string;\n self.matched = nil;\n return (self.pos = 0);\n }, TMP_StringScanner_reset_19.$$arity = 0);\n \n Opal.def(self, '$rest', TMP_StringScanner_rest_20 = function $$rest() {\n var self = this;\n\n return self.working\n }, TMP_StringScanner_rest_20.$$arity = 0);\n \n Opal.def(self, '$rest?', TMP_StringScanner_rest$q_21 = function() {\n var self = this;\n\n return self.working.length !== 0\n }, TMP_StringScanner_rest$q_21.$$arity = 0);\n \n Opal.def(self, '$rest_size', TMP_StringScanner_rest_size_22 = function $$rest_size() {\n var self = this;\n\n return self.$rest().$size()\n }, TMP_StringScanner_rest_size_22.$$arity = 0);\n \n Opal.def(self, '$terminate', TMP_StringScanner_terminate_23 = function $$terminate() {\n var self = this, $writer = nil;\n\n \n self.match = nil;\n \n $writer = [self.string.$length()];\n $send(self, 'pos=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n }, TMP_StringScanner_terminate_23.$$arity = 0);\n \n Opal.def(self, '$unscan', TMP_StringScanner_unscan_24 = function $$unscan() {\n var self = this;\n\n \n self.pos = self.prev_pos;\n self.prev_pos = nil;\n self.match = nil;\n return self;\n }, TMP_StringScanner_unscan_24.$$arity = 0);\n self.$private();\n return (Opal.def(self, '$anchor', TMP_StringScanner_anchor_25 = function $$anchor(pattern) {\n var self = this;\n\n \n var flags = pattern.toString().match(/\\/([^\\/]+)$/);\n flags = flags ? flags[1] : undefined;\n return new RegExp('^(?:' + pattern.source + ')', flags);\n \n }, TMP_StringScanner_anchor_25.$$arity = 1), nil) && 'anchor';\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n Opal.add_stubs(['$require']);\n \n self.$require(\"asciidoctor/js/opal_ext\");\n self.$require(\"asciidoctor/js/rx\");\n return self.$require(\"strscan\");\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/timings\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $send = Opal.send, $truthy = Opal.truthy, $gvars = Opal.gvars;\n\n Opal.add_stubs(['$now', '$[]=', '$-', '$delete', '$>', '$+', '$[]', '$puts', '$%', '$to_f', '$read_parse', '$convert', '$read_parse_convert']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Timings(){};\n var self = $Timings = $klass($base, $super, 'Timings', $Timings);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Timings_initialize_1, TMP_Timings_start_2, TMP_Timings_record_3, TMP_Timings_read_parse_4, TMP_Timings_convert_5, TMP_Timings_read_parse_convert_6, TMP_Timings_total_7, TMP_Timings_print_report_8;\n\n def.timers = def.log = nil;\n \n \n Opal.def(self, '$initialize', TMP_Timings_initialize_1 = function $$initialize() {\n var self = this;\n\n \n self.log = $hash2([], {});\n return (self.timers = $hash2([], {}));\n }, TMP_Timings_initialize_1.$$arity = 0);\n \n Opal.def(self, '$start', TMP_Timings_start_2 = function $$start(key) {\n var self = this, $writer = nil;\n\n \n $writer = [key, $$$('::', 'Time').$now()];\n $send(self.timers, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }, TMP_Timings_start_2.$$arity = 1);\n \n Opal.def(self, '$record', TMP_Timings_record_3 = function $$record(key) {\n var self = this, $writer = nil;\n\n \n $writer = [key, $rb_minus($$$('::', 'Time').$now(), self.timers.$delete(key))];\n $send(self.log, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }, TMP_Timings_record_3.$$arity = 1);\n \n Opal.def(self, '$read_parse', TMP_Timings_read_parse_4 = function $$read_parse() {\n var $a, self = this, time = nil;\n\n if ($truthy($rb_gt((time = $rb_plus(($truthy($a = self.log['$[]'](\"read\")) ? $a : 0), ($truthy($a = self.log['$[]'](\"parse\")) ? $a : 0))), 0))) {\n return time\n } else {\n return nil\n }\n }, TMP_Timings_read_parse_4.$$arity = 0);\n \n Opal.def(self, '$convert', TMP_Timings_convert_5 = function $$convert() {\n var $a, self = this;\n\n return ($truthy($a = self.log['$[]'](\"convert\")) ? $a : 0)\n }, TMP_Timings_convert_5.$$arity = 0);\n \n Opal.def(self, '$read_parse_convert', TMP_Timings_read_parse_convert_6 = function $$read_parse_convert() {\n var $a, self = this, time = nil;\n\n if ($truthy($rb_gt((time = $rb_plus($rb_plus(($truthy($a = self.log['$[]'](\"read\")) ? $a : 0), ($truthy($a = self.log['$[]'](\"parse\")) ? $a : 0)), ($truthy($a = self.log['$[]'](\"convert\")) ? $a : 0))), 0))) {\n return time\n } else {\n return nil\n }\n }, TMP_Timings_read_parse_convert_6.$$arity = 0);\n \n Opal.def(self, '$total', TMP_Timings_total_7 = function $$total() {\n var $a, self = this, time = nil;\n\n if ($truthy($rb_gt((time = $rb_plus($rb_plus($rb_plus(($truthy($a = self.log['$[]'](\"read\")) ? $a : 0), ($truthy($a = self.log['$[]'](\"parse\")) ? $a : 0)), ($truthy($a = self.log['$[]'](\"convert\")) ? $a : 0)), ($truthy($a = self.log['$[]'](\"write\")) ? $a : 0))), 0))) {\n return time\n } else {\n return nil\n }\n }, TMP_Timings_total_7.$$arity = 0);\n return (Opal.def(self, '$print_report', TMP_Timings_print_report_8 = function $$print_report(to, subject) {\n var self = this;\n if ($gvars.stdout == null) $gvars.stdout = nil;\n\n if (to == null) {\n to = $gvars.stdout;\n }\n if (subject == null) {\n subject = nil;\n }\n \n if ($truthy(subject)) {\n to.$puts(\"\" + \"Input file: \" + (subject))};\n to.$puts(\"\" + \" Time to read and parse source: \" + (\"%05.5f\"['$%'](self.$read_parse().$to_f())));\n to.$puts(\"\" + \" Time to convert document: \" + (\"%05.5f\"['$%'](self.$convert().$to_f())));\n return to.$puts(\"\" + \" Total time (read, parse and convert): \" + (\"%05.5f\"['$%'](self.$read_parse_convert().$to_f())));\n }, TMP_Timings_print_report_8.$$arity = -1), nil) && 'print_report';\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/version\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module;\n\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n Opal.const_set($nesting[0], 'VERSION', \"1.5.6.2\")\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/core_ext/nil_or_empty\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$method_defined?']);\n \n (function($base, $super, $parent_nesting) {\n function $NilClass(){};\n var self = $NilClass = $klass($base, $super, 'NilClass', $NilClass);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n if ($truthy(self['$method_defined?'](\"nil_or_empty?\"))) {\n return nil\n } else {\n return Opal.alias(self, \"nil_or_empty?\", \"nil?\")\n }\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $String(){};\n var self = $String = $klass($base, $super, 'String', $String);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n if ($truthy(self['$method_defined?'](\"nil_or_empty?\"))) {\n return nil\n } else {\n return Opal.alias(self, \"nil_or_empty?\", \"empty?\")\n }\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $Array(){};\n var self = $Array = $klass($base, $super, 'Array', $Array);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n if ($truthy(self['$method_defined?'](\"nil_or_empty?\"))) {\n return nil\n } else {\n return Opal.alias(self, \"nil_or_empty?\", \"empty?\")\n }\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $Hash(){};\n var self = $Hash = $klass($base, $super, 'Hash', $Hash);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n if ($truthy(self['$method_defined?'](\"nil_or_empty?\"))) {\n return nil\n } else {\n return Opal.alias(self, \"nil_or_empty?\", \"empty?\")\n }\n })($nesting[0], null, $nesting);\n return (function($base, $super, $parent_nesting) {\n function $Numeric(){};\n var self = $Numeric = $klass($base, $super, 'Numeric', $Numeric);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n if ($truthy(self['$method_defined?'](\"nil_or_empty?\"))) {\n return nil\n } else {\n return Opal.alias(self, \"nil_or_empty?\", \"nil?\")\n }\n })($nesting[0], null, $nesting);\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/core_ext/regexp/is_match\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$method_defined?']);\n return (function($base, $super, $parent_nesting) {\n function $Regexp(){};\n var self = $Regexp = $klass($base, $super, 'Regexp', $Regexp);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n if ($truthy(self['$method_defined?'](\"match?\"))) {\n return nil\n } else {\n return Opal.alias(self, \"match?\", \"===\")\n }\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/core_ext/string/limit_bytesize\"] = function(Opal) {\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$method_defined?', '$<', '$bytesize', '$valid_encoding?', '$force_encoding', '$byteslice', '$-']);\n return (function($base, $super, $parent_nesting) {\n function $String(){};\n var self = $String = $klass($base, $super, 'String', $String);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_String_limit_bytesize_1;\n\n if ($truthy(self['$method_defined?'](\"limit_bytesize\"))) {\n return nil\n } else {\n return (Opal.def(self, '$limit_bytesize', TMP_String_limit_bytesize_1 = function $$limit_bytesize(size) {\n var $a, self = this, result = nil;\n\n \n if ($truthy($rb_lt(size, self.$bytesize()))) {\n } else {\n return self\n };\n while (!($truthy((result = self.$byteslice(0, size)).$force_encoding($$$($$$('::', 'Encoding'), 'UTF_8'))['$valid_encoding?']()))) {\n size = $rb_minus(size, 1)\n };\n return result;\n }, TMP_String_limit_bytesize_1.$$arity = 1), nil) && 'limit_bytesize'\n }\n })($nesting[0], null, $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/core_ext/1.8.7/io/write\"] = function(Opal) {\n var TMP_write_2, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $truthy = Opal.truthy, $send = Opal.send;\n\n Opal.add_stubs(['$respond_to?', '$open', '$write']);\n if ($truthy($$($nesting, 'IO')['$respond_to?'](\"write\"))) {\n return nil\n } else {\n return (Opal.defs($$($nesting, 'IO'), '$write', TMP_write_2 = function $$write(name, string, offset, opts) {\n var TMP_1, self = this;\n\n if (offset == null) {\n offset = 0;\n }\n if (opts == null) {\n opts = nil;\n }\n return $send($$($nesting, 'File'), 'open', [name, \"w\"], (TMP_1 = function(f){var self = TMP_1.$$s || this;\nif (f == null) f = nil;\n return f.$write(string)}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1))\n }, TMP_write_2.$$arity = -3), nil) && 'write'\n }\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/core_ext\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$require', '$==', '$!=']);\n \n self.$require(\"asciidoctor/core_ext/nil_or_empty\");\n self.$require(\"asciidoctor/core_ext/regexp/is_match\");\n if ($truthy($$($nesting, 'RUBY_MIN_VERSION_1_9'))) {\n \n self.$require(\"asciidoctor/core_ext/string/limit_bytesize\");\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n return self.$require(\"asciidoctor/core_ext/1.8.7/io/write\")\n } else {\n return nil\n };\n } else if ($truthy($$($nesting, 'RUBY_ENGINE')['$!='](\"opal\"))) {\n return nil\n } else {\n return nil\n };\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/helpers\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $truthy = Opal.truthy, $send = Opal.send, $range = Opal.range, $gvars = Opal.gvars;\n\n Opal.add_stubs(['$require', '$==', '$===', '$raise', '$warn', '$chomp', '$message', '$class', '$normalize_lines_from_string', '$normalize_lines_array', '$empty?', '$unpack', '$[]', '$slice', '$map', '$each_line', '$encode', '$force_encoding', '$join', '$rstrip', '$[]=', '$-', '$encoding', '$nil_or_empty?', '$include?', '$match?', '$=~', '$gsub', '$each_byte', '$sprintf', '$rindex', '$length', '$basename', '$extname', '$directory?', '$dirname', '$!', '$!=', '$mkdir_p', '$mkdir']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $parent_nesting) {\n var $Helpers, self = $Helpers = $module($base, 'Helpers');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Helpers_require_library_1, TMP_Helpers_normalize_lines_2, TMP_Helpers_normalize_lines_array_7, TMP_Helpers_normalize_lines_from_string_9, TMP_Helpers_uriish$q_10, TMP_Helpers_uri_prefix_11, TMP_Helpers_uri_encode_14, TMP_Helpers_rootname_15, TMP_Helpers_basename_16, TMP_Helpers_mkdir_p_17;\n\n \n Opal.defs(self, '$require_library', TMP_Helpers_require_library_1 = function $$require_library(name, gem_name, on_failure) {\n var self = this, e = nil, $case = nil;\n\n if (gem_name == null) {\n gem_name = true;\n }\n if (on_failure == null) {\n on_failure = \"abort\";\n }\n try {\n return self.$require(name)\n } catch ($err) {\n if (Opal.rescue($err, [$$$('::', 'LoadError')])) {e = $err;\n try {\n if ($truthy(gem_name)) {\n \n if (gem_name['$=='](true)) {\n gem_name = name};\n return (function() {$case = on_failure;\n if (\"abort\"['$===']($case)) {return self.$raise($$$('::', 'LoadError'), \"\" + \"asciidoctor: FAILED: required gem '\" + (gem_name) + \"' is not installed. Processing aborted.\")}\n else if (\"warn\"['$===']($case)) {return self.$warn(\"\" + \"asciidoctor: WARNING: optional gem '\" + (gem_name) + \"' is not installed. Functionality disabled.\")}\n else { return nil }})();\n } else {\n return (function() {$case = on_failure;\n if (\"abort\"['$===']($case)) {return self.$raise($$$('::', 'LoadError'), \"\" + \"asciidoctor: FAILED: \" + (e.$message().$chomp(\".\")) + \". Processing aborted.\")}\n else if (\"warn\"['$===']($case)) {return self.$warn(\"\" + \"asciidoctor: WARNING: \" + (e.$message().$chomp(\".\")) + \". Functionality disabled.\")}\n else { return nil }})()\n }\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }\n }, TMP_Helpers_require_library_1.$$arity = -2);\n Opal.defs(self, '$normalize_lines', TMP_Helpers_normalize_lines_2 = function $$normalize_lines(data) {\n var self = this;\n\n if (data.$class()['$==']($$$('::', 'String'))) {\n \n return self.$normalize_lines_from_string(data);\n } else {\n \n return self.$normalize_lines_array(data);\n }\n }, TMP_Helpers_normalize_lines_2.$$arity = 1);\n Opal.defs(self, '$normalize_lines_array', TMP_Helpers_normalize_lines_array_7 = function $$normalize_lines_array(data) {\n var TMP_3, TMP_4, TMP_5, TMP_6, self = this, leading_bytes = nil, first_line = nil, utf8 = nil, leading_2_bytes = nil, $writer = nil;\n\n \n if ($truthy(data['$empty?']())) {\n return data};\n leading_bytes = (first_line = data['$[]'](0)).$unpack(\"C3\");\n if ($truthy($$($nesting, 'COERCE_ENCODING'))) {\n \n utf8 = $$$($$$('::', 'Encoding'), 'UTF_8');\n if ((leading_2_bytes = leading_bytes.$slice(0, 2))['$==']($$($nesting, 'BOM_BYTES_UTF_16LE'))) {\n return $send(data.$join().$force_encoding($$$($$$('::', 'Encoding'), 'UTF_16LE'))['$[]']($range(1, -1, false)).$encode(utf8).$each_line(), 'map', [], (TMP_3 = function(line){var self = TMP_3.$$s || this;\nif (line == null) line = nil;\n return line.$rstrip()}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3))\n } else if (leading_2_bytes['$==']($$($nesting, 'BOM_BYTES_UTF_16BE'))) {\n \n \n $writer = [0, first_line.$force_encoding($$$($$$('::', 'Encoding'), 'UTF_16BE'))['$[]']($range(1, -1, false))];\n $send(data, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return $send(data, 'map', [], (TMP_4 = function(line){var self = TMP_4.$$s || this;\nif (line == null) line = nil;\n return \"\" + (line.$force_encoding($$$($$$('::', 'Encoding'), 'UTF_16BE')).$encode(utf8).$rstrip())}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4));\n } else if (leading_bytes['$==']($$($nesting, 'BOM_BYTES_UTF_8'))) {\n \n $writer = [0, first_line.$force_encoding(utf8)['$[]']($range(1, -1, false))];\n $send(data, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return $send(data, 'map', [], (TMP_5 = function(line){var self = TMP_5.$$s || this;\nif (line == null) line = nil;\n if (line.$encoding()['$=='](utf8)) {\n return line.$rstrip()\n } else {\n return line.$force_encoding(utf8).$rstrip()\n }}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5));\n } else {\n \n if (leading_bytes['$==']($$($nesting, 'BOM_BYTES_UTF_8'))) {\n \n $writer = [0, first_line['$[]']($range(3, -1, false))];\n $send(data, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return $send(data, 'map', [], (TMP_6 = function(line){var self = TMP_6.$$s || this;\nif (line == null) line = nil;\n return line.$rstrip()}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6));\n };\n }, TMP_Helpers_normalize_lines_array_7.$$arity = 1);\n Opal.defs(self, '$normalize_lines_from_string', TMP_Helpers_normalize_lines_from_string_9 = function $$normalize_lines_from_string(data) {\n var TMP_8, self = this, leading_bytes = nil, utf8 = nil, leading_2_bytes = nil;\n\n \n if ($truthy(data['$nil_or_empty?']())) {\n return []};\n leading_bytes = data.$unpack(\"C3\");\n if ($truthy($$($nesting, 'COERCE_ENCODING'))) {\n \n utf8 = $$$($$$('::', 'Encoding'), 'UTF_8');\n if ((leading_2_bytes = leading_bytes.$slice(0, 2))['$==']($$($nesting, 'BOM_BYTES_UTF_16LE'))) {\n data = data.$force_encoding($$$($$$('::', 'Encoding'), 'UTF_16LE'))['$[]']($range(1, -1, false)).$encode(utf8)\n } else if (leading_2_bytes['$==']($$($nesting, 'BOM_BYTES_UTF_16BE'))) {\n data = data.$force_encoding($$$($$$('::', 'Encoding'), 'UTF_16BE'))['$[]']($range(1, -1, false)).$encode(utf8)\n } else if (leading_bytes['$==']($$($nesting, 'BOM_BYTES_UTF_8'))) {\n data = (function() {if (data.$encoding()['$=='](utf8)) {\n return data['$[]']($range(1, -1, false))\n } else {\n return data.$force_encoding(utf8)['$[]']($range(1, -1, false))\n }; return nil; })()\n } else if (data.$encoding()['$=='](utf8)) {\n } else {\n data = data.$force_encoding(utf8)\n };\n } else if (leading_bytes['$==']($$($nesting, 'BOM_BYTES_UTF_8'))) {\n data = data['$[]']($range(3, -1, false))};\n return $send(data.$each_line(), 'map', [], (TMP_8 = function(line){var self = TMP_8.$$s || this;\nif (line == null) line = nil;\n return line.$rstrip()}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8));\n }, TMP_Helpers_normalize_lines_from_string_9.$$arity = 1);\n Opal.defs(self, '$uriish?', TMP_Helpers_uriish$q_10 = function(str) {\n var $a, self = this;\n\n return ($truthy($a = str['$include?'](\":\")) ? $$($nesting, 'UriSniffRx')['$match?'](str) : $a)\n }, TMP_Helpers_uriish$q_10.$$arity = 1);\n Opal.defs(self, '$uri_prefix', TMP_Helpers_uri_prefix_11 = function $$uri_prefix(str) {\n var $a, self = this;\n\n if ($truthy(($truthy($a = str['$include?'](\":\")) ? $$($nesting, 'UriSniffRx')['$=~'](str) : $a))) {\n return (($a = $gvars['~']) === nil ? nil : $a['$[]'](0))\n } else {\n return nil\n }\n }, TMP_Helpers_uri_prefix_11.$$arity = 1);\n Opal.const_set($nesting[0], 'REGEXP_ENCODE_URI_CHARS', /[^\\w\\-.!~*';:@=+$,()\\[\\]]/);\n Opal.defs(self, '$uri_encode', TMP_Helpers_uri_encode_14 = function $$uri_encode(str) {\n var TMP_12, self = this;\n\n return $send(str, 'gsub', [$$($nesting, 'REGEXP_ENCODE_URI_CHARS')], (TMP_12 = function(){var self = TMP_12.$$s || this, $a, TMP_13;\n\n return $send((($a = $gvars['~']) === nil ? nil : $a['$[]'](0)).$each_byte(), 'map', [], (TMP_13 = function(c){var self = TMP_13.$$s || this;\nif (c == null) c = nil;\n return self.$sprintf(\"%%%02X\", c)}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13)).$join()}, TMP_12.$$s = self, TMP_12.$$arity = 0, TMP_12))\n }, TMP_Helpers_uri_encode_14.$$arity = 1);\n Opal.defs(self, '$rootname', TMP_Helpers_rootname_15 = function $$rootname(filename) {\n var $a, self = this;\n\n return filename.$slice(0, ($truthy($a = filename.$rindex(\".\")) ? $a : filename.$length()))\n }, TMP_Helpers_rootname_15.$$arity = 1);\n Opal.defs(self, '$basename', TMP_Helpers_basename_16 = function $$basename(filename, drop_ext) {\n var self = this;\n\n if (drop_ext == null) {\n drop_ext = nil;\n }\n if ($truthy(drop_ext)) {\n return $$$('::', 'File').$basename(filename, (function() {if (drop_ext['$=='](true)) {\n \n return $$$('::', 'File').$extname(filename);\n } else {\n return drop_ext\n }; return nil; })())\n } else {\n return $$$('::', 'File').$basename(filename)\n }\n }, TMP_Helpers_basename_16.$$arity = -2);\n Opal.defs(self, '$mkdir_p', TMP_Helpers_mkdir_p_17 = function $$mkdir_p(dir) {\n var $a, self = this, parent_dir = nil;\n\n if ($truthy($$$('::', 'File')['$directory?'](dir))) {\n return nil\n } else {\n \n parent_dir = $$$('::', 'File').$dirname(dir);\n if ($truthy(($truthy($a = $$$('::', 'File')['$directory?']((parent_dir = $$$('::', 'File').$dirname(dir)))['$!']()) ? parent_dir['$!='](\".\") : $a))) {\n self.$mkdir_p(parent_dir)};\n return $$$('::', 'Dir').$mkdir(dir);\n }\n }, TMP_Helpers_mkdir_p_17.$$arity = 1);\n })($nesting[0], $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/substitutors\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $hash2 = Opal.hash2, $hash = Opal.hash, $truthy = Opal.truthy, $send = Opal.send, $gvars = Opal.gvars, $range = Opal.range;\n\n Opal.add_stubs(['$freeze', '$+', '$keys', '$attr_reader', '$empty?', '$!', '$===', '$[]', '$each', '$<<', '$*', '$include?', '$extract_passthroughs', '$sub_specialchars', '$sub_quotes', '$sub_attributes', '$split', '$sub_replacements', '$sub_macros', '$highlight_source', '$sub_callouts', '$sub_post_replacements', '$warn', '$restore_passthroughs', '$apply_subs', '$compat_mode', '$gsub', '$==', '$length', '$>', '$-', '$end_with?', '$parse_attributes', '$size', '$[]=', '$unescape_brackets', '$resolve_pass_subs', '$start_with?', '$to_sym', '$nil_or_empty?', '$attributes', '$basebackend?', '$to_i', '$convert', '$new', '$clear', '$match?', '$convert_quoted_text', '$do_replacement', '$sub', '$shift', '$store_attribute', '$fetch', '$attribute_undefined', '$counter', '$key?', '$downcase', '$attribute_missing', '$slice', '$strip', '$index', '$min', '$compact', '$map', '$chop', '$unescape_bracketed_text', '$pop', '$rstrip', '$extensions', '$inline_macros?', '$inline_macros', '$regexp', '$instance', '$names', '$config', '$dup', '$!=', '$process_method', '$register', '$tr', '$basename', '$split_simple_csv', '$normalize_string', '$!~', '$delete', '$uri_encode', '$sub_inline_xrefs', '$sub_inline_anchors', '$find', '$footnotes', '$id', '$text', '$style', '$lstrip', '$rindex', '$catalog', '$key', '$attr?', '$escape', '$attr', '$read_next_id', '$callouts', '$<', '$parse_quoted_text_attributes', '$shorthand_property_syntax', '$concat', '$parse_into', '$parse', '$each_char', '$join', '$chr', '$&', '$resolve_subs', '$nil?', '$require_library', '$set_attr', '$sub_source', '$resolve_highlight_lines', '$highlight', '$find_by_alias', '$find_by_mimetype', '$name', '$option?', '$=~', '$to_a', '$uniq', '$sort', '$resolve_block_subs']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $parent_nesting) {\n var $Substitutors, self = $Substitutors = $module($base, 'Substitutors');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Substitutors_apply_subs_3, TMP_Substitutors_apply_normal_subs_4, TMP_Substitutors_apply_title_subs_5, TMP_Substitutors_apply_reftext_subs_6, TMP_Substitutors_apply_header_subs_7, TMP_Substitutors_extract_passthroughs_11, TMP_Substitutors_restore_passthroughs_13, TMP_Substitutors_sub_quotes_16, TMP_Substitutors_sub_replacements_19, TMP_Substitutors_sub_specialchars_20, TMP_Substitutors_do_replacement_21, TMP_Substitutors_sub_attributes_24, TMP_Substitutors_sub_macros_41, TMP_Substitutors_sub_inline_anchors_44, TMP_Substitutors_sub_inline_xrefs_46, TMP_Substitutors_sub_callouts_48, TMP_Substitutors_sub_post_replacements_51, TMP_Substitutors_convert_quoted_text_52, TMP_Substitutors_parse_quoted_text_attributes_53, TMP_Substitutors_parse_attributes_54, TMP_Substitutors_unescape_bracketed_text_55, TMP_Substitutors_normalize_string_56, TMP_Substitutors_unescape_brackets_57, TMP_Substitutors_split_simple_csv_60, TMP_Substitutors_resolve_subs_62, TMP_Substitutors_resolve_block_subs_63, TMP_Substitutors_resolve_pass_subs_64, TMP_Substitutors_highlight_source_69, TMP_Substitutors_resolve_highlight_lines_71, TMP_Substitutors_sub_source_72, TMP_Substitutors_lock_in_subs_73;\n\n \n Opal.const_set($nesting[0], 'SpecialCharsRx', /[<&>]/);\n Opal.const_set($nesting[0], 'SpecialCharsTr', $hash2([\">\", \"<\", \"&\"], {\">\": \">\", \"<\": \"<\", \"&\": \"&\"}));\n Opal.const_set($nesting[0], 'QuotedTextSniffRx', $hash(false, /[*_`#^~]/, true, /[*'_+#^~]/));\n Opal.const_set($nesting[0], 'BASIC_SUBS', [\"specialcharacters\"]).$freeze();\n Opal.const_set($nesting[0], 'HEADER_SUBS', [\"specialcharacters\", \"attributes\"]).$freeze();\n Opal.const_set($nesting[0], 'NORMAL_SUBS', [\"specialcharacters\", \"quotes\", \"attributes\", \"replacements\", \"macros\", \"post_replacements\"]).$freeze();\n Opal.const_set($nesting[0], 'NONE_SUBS', []).$freeze();\n Opal.const_set($nesting[0], 'TITLE_SUBS', [\"specialcharacters\", \"quotes\", \"replacements\", \"macros\", \"attributes\", \"post_replacements\"]).$freeze();\n Opal.const_set($nesting[0], 'REFTEXT_SUBS', [\"specialcharacters\", \"quotes\", \"replacements\"]).$freeze();\n Opal.const_set($nesting[0], 'VERBATIM_SUBS', [\"specialcharacters\", \"callouts\"]).$freeze();\n Opal.const_set($nesting[0], 'SUB_GROUPS', $hash2([\"none\", \"normal\", \"verbatim\", \"specialchars\"], {\"none\": $$($nesting, 'NONE_SUBS'), \"normal\": $$($nesting, 'NORMAL_SUBS'), \"verbatim\": $$($nesting, 'VERBATIM_SUBS'), \"specialchars\": $$($nesting, 'BASIC_SUBS')}));\n Opal.const_set($nesting[0], 'SUB_HINTS', $hash2([\"a\", \"m\", \"n\", \"p\", \"q\", \"r\", \"c\", \"v\"], {\"a\": \"attributes\", \"m\": \"macros\", \"n\": \"normal\", \"p\": \"post_replacements\", \"q\": \"quotes\", \"r\": \"replacements\", \"c\": \"specialcharacters\", \"v\": \"verbatim\"}));\n Opal.const_set($nesting[0], 'SUB_OPTIONS', $hash2([\"block\", \"inline\"], {\"block\": $rb_plus($rb_plus($$($nesting, 'SUB_GROUPS').$keys(), $$($nesting, 'NORMAL_SUBS')), [\"callouts\"]), \"inline\": $rb_plus($$($nesting, 'SUB_GROUPS').$keys(), $$($nesting, 'NORMAL_SUBS'))}));\n Opal.const_set($nesting[0], 'SUB_HIGHLIGHT', [\"coderay\", \"pygments\"]);\n Opal.const_set($nesting[0], 'PASS_START', \"\\u0096\");\n Opal.const_set($nesting[0], 'PASS_END', \"\\u0097\");\n Opal.const_set($nesting[0], 'PassSlotRx', new RegExp(\"\" + ($$($nesting, 'PASS_START')) + \"(\\\\d+)\" + ($$($nesting, 'PASS_END'))));\n Opal.const_set($nesting[0], 'HighlightedPassSlotRx', new RegExp(\"\" + \"<span\\\\b[^>]*>\" + ($$($nesting, 'PASS_START')) + \"</span>[^\\\\d]*(\\\\d+)[^\\\\d]*<span\\\\b[^>]*>\" + ($$($nesting, 'PASS_END')) + \"</span>\"));\n Opal.const_set($nesting[0], 'RS', \"\\\\\");\n Opal.const_set($nesting[0], 'R_SB', \"]\");\n Opal.const_set($nesting[0], 'ESC_R_SB', \"\\\\]\");\n Opal.const_set($nesting[0], 'PLUS', \"+\");\n Opal.const_set($nesting[0], 'PygmentsWrapperDivRx', /<div class=\"pyhl\">(.*)<\\/div>/m);\n Opal.const_set($nesting[0], 'PygmentsWrapperPreRx', /<pre\\b[^>]*?>(.*?)<\\/pre>\\s*/m);\n self.$attr_reader(\"passthroughs\");\n \n Opal.def(self, '$apply_subs', TMP_Substitutors_apply_subs_3 = function $$apply_subs(source, subs, expand) {\n var $a, TMP_1, TMP_2, self = this, effective_subs = nil, text = nil, multiline = nil, has_passthroughs = nil;\n if (self.passthroughs == null) self.passthroughs = nil;\n\n if (subs == null) {\n subs = $$($nesting, 'NORMAL_SUBS');\n }\n if (expand == null) {\n expand = nil;\n }\n \n if ($truthy(($truthy($a = source['$empty?']()) ? $a : subs['$!']()))) {\n return source\n } else if ($truthy(expand)) {\n if ($truthy($$$('::', 'Symbol')['$==='](subs))) {\n subs = ($truthy($a = $$($nesting, 'SUB_GROUPS')['$[]'](subs)) ? $a : [subs])\n } else {\n \n effective_subs = [];\n $send(subs, 'each', [], (TMP_1 = function(key){var self = TMP_1.$$s || this, sub_group = nil;\nif (key == null) key = nil;\n if ($truthy((sub_group = $$($nesting, 'SUB_GROUPS')['$[]'](key)))) {\n if ($truthy(sub_group['$empty?']())) {\n return nil\n } else {\n return (effective_subs = $rb_plus(effective_subs, sub_group))\n }\n } else {\n return effective_subs['$<<'](key)\n }}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1));\n if ($truthy((subs = effective_subs)['$empty?']())) {\n return source};\n }\n } else if ($truthy(subs['$empty?']())) {\n return source};\n text = (function() {if ($truthy((multiline = $$$('::', 'Array')['$==='](source)))) {\n return $rb_times(source, $$($nesting, 'LF'))\n } else {\n return source\n }; return nil; })();\n if ($truthy((has_passthroughs = subs['$include?'](\"macros\")))) {\n \n text = self.$extract_passthroughs(text);\n if ($truthy(self.passthroughs['$empty?']())) {\n has_passthroughs = false};};\n $send(subs, 'each', [], (TMP_2 = function(type){var self = TMP_2.$$s || this, $case = nil;\nif (type == null) type = nil;\n return (function() {$case = type;\n if (\"specialcharacters\"['$===']($case)) {return (text = self.$sub_specialchars(text))}\n else if (\"quotes\"['$===']($case)) {return (text = self.$sub_quotes(text))}\n else if (\"attributes\"['$===']($case)) {if ($truthy(text['$include?']($$($nesting, 'ATTR_REF_HEAD')))) {\n return (text = $rb_times(self.$sub_attributes(text.$split($$($nesting, 'LF'), -1)), $$($nesting, 'LF')))\n } else {\n return nil\n }}\n else if (\"replacements\"['$===']($case)) {return (text = self.$sub_replacements(text))}\n else if (\"macros\"['$===']($case)) {return (text = self.$sub_macros(text))}\n else if (\"highlight\"['$===']($case)) {return (text = self.$highlight_source(text, subs['$include?'](\"callouts\")))}\n else if (\"callouts\"['$===']($case)) {if ($truthy(subs['$include?'](\"highlight\"))) {\n return nil\n } else {\n return (text = self.$sub_callouts(text))\n }}\n else if (\"post_replacements\"['$===']($case)) {return (text = self.$sub_post_replacements(text))}\n else {return self.$warn(\"\" + \"asciidoctor: WARNING: unknown substitution type \" + (type))}})()}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2));\n if ($truthy(has_passthroughs)) {\n text = self.$restore_passthroughs(text)};\n if ($truthy(multiline)) {\n \n return text.$split($$($nesting, 'LF'), -1);\n } else {\n return text\n };\n }, TMP_Substitutors_apply_subs_3.$$arity = -2);\n \n Opal.def(self, '$apply_normal_subs', TMP_Substitutors_apply_normal_subs_4 = function $$apply_normal_subs(text) {\n var self = this;\n\n return self.$apply_subs(text)\n }, TMP_Substitutors_apply_normal_subs_4.$$arity = 1);\n \n Opal.def(self, '$apply_title_subs', TMP_Substitutors_apply_title_subs_5 = function $$apply_title_subs(title) {\n var self = this;\n\n return self.$apply_subs(title, $$($nesting, 'TITLE_SUBS'))\n }, TMP_Substitutors_apply_title_subs_5.$$arity = 1);\n \n Opal.def(self, '$apply_reftext_subs', TMP_Substitutors_apply_reftext_subs_6 = function $$apply_reftext_subs(text) {\n var self = this;\n\n return self.$apply_subs(text, $$($nesting, 'REFTEXT_SUBS'))\n }, TMP_Substitutors_apply_reftext_subs_6.$$arity = 1);\n \n Opal.def(self, '$apply_header_subs', TMP_Substitutors_apply_header_subs_7 = function $$apply_header_subs(text) {\n var self = this;\n\n return self.$apply_subs(text, $$($nesting, 'HEADER_SUBS'))\n }, TMP_Substitutors_apply_header_subs_7.$$arity = 1);\n \n Opal.def(self, '$extract_passthroughs', TMP_Substitutors_extract_passthroughs_11 = function $$extract_passthroughs(text) {\n var $a, $b, TMP_8, TMP_9, TMP_10, self = this, compat_mode = nil, pass_inline_char1 = nil, pass_inline_char2 = nil, pass_inline_rx = nil;\n if (self.document == null) self.document = nil;\n\n \n compat_mode = self.document.$compat_mode();\n if ($truthy(($truthy($a = ($truthy($b = text['$include?'](\"++\")) ? $b : text['$include?'](\"$$\"))) ? $a : text['$include?'](\"ss:\")))) {\n text = $send(text, 'gsub', [$$($nesting, 'InlinePassMacroRx')], (TMP_8 = function(){var self = TMP_8.$$s || this, $c, m = nil, preceding = nil, boundary = nil, attributes = nil, escape_count = nil, content = nil, old_behavior = nil, subs = nil, pass_key = nil, $writer = nil;\n if (self.passthroughs == null) self.passthroughs = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n preceding = nil;\n if ($truthy((boundary = m['$[]'](4)))) {\n \n if ($truthy(($truthy($c = compat_mode) ? boundary['$=='](\"++\") : $c))) {\n return (function() {if ($truthy(m['$[]'](2))) {\n return \"\" + (m['$[]'](1)) + \"[\" + (m['$[]'](2)) + \"]\" + (m['$[]'](3)) + \"++\" + (self.$extract_passthroughs(m['$[]'](5))) + \"++\"\n } else {\n return \"\" + (m['$[]'](1)) + (m['$[]'](3)) + \"++\" + (self.$extract_passthroughs(m['$[]'](5))) + \"++\"\n }; return nil; })();};\n attributes = m['$[]'](2);\n escape_count = m['$[]'](3).$length();\n content = m['$[]'](5);\n old_behavior = false;\n if ($truthy(attributes)) {\n if ($truthy($rb_gt(escape_count, 0))) {\n return \"\" + (m['$[]'](1)) + \"[\" + (attributes) + \"]\" + ($rb_times($$($nesting, 'RS'), $rb_minus(escape_count, 1))) + (boundary) + (m['$[]'](5)) + (boundary);\n } else if (m['$[]'](1)['$==']($$($nesting, 'RS'))) {\n \n preceding = \"\" + \"[\" + (attributes) + \"]\";\n attributes = nil;\n } else {\n \n if ($truthy((($c = boundary['$=='](\"++\")) ? attributes['$end_with?'](\"x-\") : boundary['$=='](\"++\")))) {\n \n old_behavior = true;\n attributes = attributes['$[]']($range(0, -2, true));};\n attributes = self.$parse_attributes(attributes);\n }\n } else if ($truthy($rb_gt(escape_count, 0))) {\n return \"\" + ($rb_times($$($nesting, 'RS'), $rb_minus(escape_count, 1))) + (boundary) + (m['$[]'](5)) + (boundary);};\n subs = (function() {if (boundary['$=='](\"+++\")) {\n return []\n } else {\n return $$($nesting, 'BASIC_SUBS')\n }; return nil; })();\n pass_key = self.passthroughs.$size();\n if ($truthy(attributes)) {\n if ($truthy(old_behavior)) {\n \n $writer = [pass_key, $hash2([\"text\", \"subs\", \"type\", \"attributes\"], {\"text\": content, \"subs\": $$($nesting, 'NORMAL_SUBS'), \"type\": \"monospaced\", \"attributes\": attributes})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [pass_key, $hash2([\"text\", \"subs\", \"type\", \"attributes\"], {\"text\": content, \"subs\": subs, \"type\": \"unquoted\", \"attributes\": attributes})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n }\n } else {\n \n $writer = [pass_key, $hash2([\"text\", \"subs\"], {\"text\": content, \"subs\": subs})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n } else {\n \n if (m['$[]'](6)['$==']($$($nesting, 'RS'))) {\n return m['$[]'](0)['$[]']($range(1, -1, false));};\n \n $writer = [(pass_key = self.passthroughs.$size()), $hash2([\"text\", \"subs\"], {\"text\": self.$unescape_brackets(m['$[]'](8)), \"subs\": (function() {if ($truthy(m['$[]'](7))) {\n \n return self.$resolve_pass_subs(m['$[]'](7));\n } else {\n return []\n }; return nil; })()})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n return \"\" + (preceding) + ($$($nesting, 'PASS_START')) + (pass_key) + ($$($nesting, 'PASS_END'));}, TMP_8.$$s = self, TMP_8.$$arity = 0, TMP_8))};\n $b = $$($nesting, 'PassInlineRx')['$[]'](compat_mode), $a = Opal.to_ary($b), (pass_inline_char1 = ($a[0] == null ? nil : $a[0])), (pass_inline_char2 = ($a[1] == null ? nil : $a[1])), (pass_inline_rx = ($a[2] == null ? nil : $a[2])), $b;\n if ($truthy(($truthy($a = text['$include?'](pass_inline_char1)) ? $a : ($truthy($b = pass_inline_char2) ? text['$include?'](pass_inline_char2) : $b)))) {\n text = $send(text, 'gsub', [pass_inline_rx], (TMP_9 = function(){var self = TMP_9.$$s || this, $c, m = nil, preceding = nil, attributes = nil, escape_mark = nil, format_mark = nil, content = nil, old_behavior = nil, pass_key = nil, $writer = nil, subs = nil;\n if (self.passthroughs == null) self.passthroughs = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n preceding = m['$[]'](1);\n attributes = m['$[]'](2);\n if ($truthy(m['$[]'](3)['$start_with?']($$($nesting, 'RS')))) {\n escape_mark = $$($nesting, 'RS')};\n format_mark = m['$[]'](4);\n content = m['$[]'](5);\n if ($truthy(compat_mode)) {\n old_behavior = true\n } else if ($truthy((old_behavior = ($truthy($c = attributes) ? attributes['$end_with?'](\"x-\") : $c)))) {\n attributes = attributes['$[]']($range(0, -2, true))};\n if ($truthy(attributes)) {\n \n if ($truthy((($c = format_mark['$=='](\"`\")) ? old_behavior['$!']() : format_mark['$=='](\"`\")))) {\n return \"\" + (preceding) + \"[\" + (attributes) + \"]\" + (escape_mark) + \"`\" + (self.$extract_passthroughs(content)) + \"`\";};\n if ($truthy(escape_mark)) {\n return \"\" + (preceding) + \"[\" + (attributes) + \"]\" + (m['$[]'](3)['$[]']($range(1, -1, false)));\n } else if (preceding['$==']($$($nesting, 'RS'))) {\n \n preceding = \"\" + \"[\" + (attributes) + \"]\";\n attributes = nil;\n } else {\n attributes = self.$parse_attributes(attributes)\n };\n } else if ($truthy((($c = format_mark['$=='](\"`\")) ? old_behavior['$!']() : format_mark['$=='](\"`\")))) {\n return \"\" + (preceding) + (escape_mark) + \"`\" + (self.$extract_passthroughs(content)) + \"`\";\n } else if ($truthy(escape_mark)) {\n return \"\" + (preceding) + (m['$[]'](3)['$[]']($range(1, -1, false)));};\n pass_key = self.passthroughs.$size();\n if ($truthy(compat_mode)) {\n \n $writer = [pass_key, $hash2([\"text\", \"subs\", \"attributes\", \"type\"], {\"text\": content, \"subs\": $$($nesting, 'BASIC_SUBS'), \"attributes\": attributes, \"type\": \"monospaced\"})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else if ($truthy(attributes)) {\n if ($truthy(old_behavior)) {\n \n subs = (function() {if (format_mark['$=='](\"`\")) {\n return $$($nesting, 'BASIC_SUBS')\n } else {\n return $$($nesting, 'NORMAL_SUBS')\n }; return nil; })();\n \n $writer = [pass_key, $hash2([\"text\", \"subs\", \"attributes\", \"type\"], {\"text\": content, \"subs\": subs, \"attributes\": attributes, \"type\": \"monospaced\"})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n \n $writer = [pass_key, $hash2([\"text\", \"subs\", \"attributes\", \"type\"], {\"text\": content, \"subs\": $$($nesting, 'BASIC_SUBS'), \"attributes\": attributes, \"type\": \"unquoted\"})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n }\n } else {\n \n $writer = [pass_key, $hash2([\"text\", \"subs\"], {\"text\": content, \"subs\": $$($nesting, 'BASIC_SUBS')})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n return \"\" + (preceding) + ($$($nesting, 'PASS_START')) + (pass_key) + ($$($nesting, 'PASS_END'));}, TMP_9.$$s = self, TMP_9.$$arity = 0, TMP_9))};\n if ($truthy(($truthy($a = text['$include?'](\":\")) ? ($truthy($b = text['$include?'](\"stem:\")) ? $b : text['$include?'](\"math:\")) : $a))) {\n text = $send(text, 'gsub', [$$($nesting, 'InlineStemMacroRx')], (TMP_10 = function(){var self = TMP_10.$$s || this, m = nil, type = nil, default_stem_type = nil, content = nil, subs = nil, $writer = nil, pass_key = nil;\n if (self.document == null) self.document = nil;\n if (self.passthroughs == null) self.passthroughs = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy(m['$[]'](0)['$start_with?']($$($nesting, 'RS')))) {\n return m['$[]'](0)['$[]']($range(1, -1, false));};\n if ((type = m['$[]'](1).$to_sym())['$=='](\"stem\")) {\n type = (function() {if ($truthy((default_stem_type = self.document.$attributes()['$[]'](\"stem\"))['$nil_or_empty?']())) {\n return \"asciimath\"\n } else {\n return default_stem_type\n }; return nil; })().$to_sym()};\n content = self.$unescape_brackets(m['$[]'](3));\n subs = (function() {if ($truthy(m['$[]'](2))) {\n \n return self.$resolve_pass_subs(m['$[]'](2));\n } else {\n \n if ($truthy(self.document['$basebackend?'](\"html\"))) {\n return $$($nesting, 'BASIC_SUBS')\n } else {\n return []\n };\n }; return nil; })();\n \n $writer = [(pass_key = self.passthroughs.$size()), $hash2([\"text\", \"subs\", \"type\"], {\"text\": content, \"subs\": subs, \"type\": type})];\n $send(self.passthroughs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return \"\" + ($$($nesting, 'PASS_START')) + (pass_key) + ($$($nesting, 'PASS_END'));}, TMP_10.$$s = self, TMP_10.$$arity = 0, TMP_10))};\n return text;\n }, TMP_Substitutors_extract_passthroughs_11.$$arity = 1);\n \n Opal.def(self, '$restore_passthroughs', TMP_Substitutors_restore_passthroughs_13 = function $$restore_passthroughs(text, outer) {\n var $a, $b, TMP_12, self = this;\n if (self.passthroughs == null) self.passthroughs = nil;\n\n if (outer == null) {\n outer = true;\n }\n return (function() { try {\n \n if ($truthy(($truthy($a = outer) ? ($truthy($b = self.passthroughs['$empty?']()) ? $b : text['$include?']($$($nesting, 'PASS_START'))['$!']()) : $a))) {\n return text};\n return $send(text, 'gsub', [$$($nesting, 'PassSlotRx')], (TMP_12 = function(){var self = TMP_12.$$s || this, $c, pass = nil, subbed_text = nil, type = nil;\n if (self.passthroughs == null) self.passthroughs = nil;\n\n \n pass = self.passthroughs['$[]']((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)).$to_i());\n subbed_text = self.$apply_subs(pass['$[]'](\"text\"), pass['$[]'](\"subs\"));\n if ($truthy((type = pass['$[]'](\"type\")))) {\n subbed_text = $$($nesting, 'Inline').$new(self, \"quoted\", subbed_text, $hash2([\"type\", \"attributes\"], {\"type\": type, \"attributes\": pass['$[]'](\"attributes\")})).$convert()};\n if ($truthy(subbed_text['$include?']($$($nesting, 'PASS_START')))) {\n return self.$restore_passthroughs(subbed_text, false)\n } else {\n return subbed_text\n };}, TMP_12.$$s = self, TMP_12.$$arity = 0, TMP_12));\n } finally {\n (function() {if ($truthy(outer)) {\n return self.passthroughs.$clear()\n } else {\n return nil\n }; return nil; })()\n }; })()\n }, TMP_Substitutors_restore_passthroughs_13.$$arity = -2);\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n \n \n Opal.def(self, '$sub_quotes', TMP_Substitutors_sub_quotes_16 = function $$sub_quotes(text) {\n var TMP_14, self = this, compat = nil;\n if (self.document == null) self.document = nil;\n\n \n if ($truthy($$($nesting, 'QuotedTextSniffRx')['$[]']((compat = self.document.$compat_mode()))['$match?'](text))) {\n $send($$($nesting, 'QUOTE_SUBS')['$[]'](compat), 'each', [], (TMP_14 = function(type, scope, pattern){var self = TMP_14.$$s || this, TMP_15;\nif (type == null) type = nil;if (scope == null) scope = nil;if (pattern == null) pattern = nil;\n return (text = $send(text, 'gsub', [pattern], (TMP_15 = function(){var self = TMP_15.$$s || this;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n return self.$convert_quoted_text($gvars[\"~\"], type, scope)}, TMP_15.$$s = self, TMP_15.$$arity = 0, TMP_15)))}, TMP_14.$$s = self, TMP_14.$$arity = 3, TMP_14))};\n return text;\n }, TMP_Substitutors_sub_quotes_16.$$arity = 1);\n \n Opal.def(self, '$sub_replacements', TMP_Substitutors_sub_replacements_19 = function $$sub_replacements(text) {\n var TMP_17, self = this;\n\n \n if ($truthy($$($nesting, 'ReplaceableTextRx')['$match?'](text))) {\n $send($$($nesting, 'REPLACEMENTS'), 'each', [], (TMP_17 = function(pattern, replacement, restore){var self = TMP_17.$$s || this, TMP_18;\nif (pattern == null) pattern = nil;if (replacement == null) replacement = nil;if (restore == null) restore = nil;\n return (text = $send(text, 'gsub', [pattern], (TMP_18 = function(){var self = TMP_18.$$s || this;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n return self.$do_replacement($gvars[\"~\"], replacement, restore)}, TMP_18.$$s = self, TMP_18.$$arity = 0, TMP_18)))}, TMP_17.$$s = self, TMP_17.$$arity = 3, TMP_17))};\n return text;\n }, TMP_Substitutors_sub_replacements_19.$$arity = 1);\n \n Opal.def(self, '$sub_specialchars', TMP_Substitutors_sub_specialchars_20 = function $$sub_specialchars(text) {\n var $a, $b, self = this;\n\n if ($truthy(($truthy($a = ($truthy($b = text['$include?'](\"<\")) ? $b : text['$include?'](\"&\"))) ? $a : text['$include?'](\">\")))) {\n \n return text.$gsub($$($nesting, 'SpecialCharsRx'), $$($nesting, 'SpecialCharsTr'));\n } else {\n return text\n }\n }, TMP_Substitutors_sub_specialchars_20.$$arity = 1);\n } else {\n nil\n };\n Opal.alias(self, \"sub_specialcharacters\", \"sub_specialchars\");\n \n Opal.def(self, '$do_replacement', TMP_Substitutors_do_replacement_21 = function $$do_replacement(m, replacement, restore) {\n var self = this, captured = nil, $case = nil;\n\n if ($truthy((captured = m['$[]'](0))['$include?']($$($nesting, 'RS')))) {\n return captured.$sub($$($nesting, 'RS'), \"\")\n } else {\n return (function() {$case = restore;\n if (\"none\"['$===']($case)) {return replacement}\n else if (\"bounding\"['$===']($case)) {return \"\" + (m['$[]'](1)) + (replacement) + (m['$[]'](2))}\n else {return \"\" + (m['$[]'](1)) + (replacement)}})()\n }\n }, TMP_Substitutors_do_replacement_21.$$arity = 3);\n \n Opal.def(self, '$sub_attributes', TMP_Substitutors_sub_attributes_24 = function $$sub_attributes(data, opts) {\n var $a, TMP_22, self = this, input_is_string = nil, doc_attrs = nil, result = nil;\n if (self.document == null) self.document = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy((input_is_string = $$$('::', 'String')['$==='](data)))) {\n data = [data]};\n $a = [self.document.$attributes(), []], (doc_attrs = $a[0]), (result = $a[1]), $a;\n (function(){var $brk = Opal.new_brk(); try {return $send(data, 'each', [], (TMP_22 = function(line){var self = TMP_22.$$s || this, TMP_23, $b, $c, reject = nil, reject_if_empty = nil;\nif (line == null) line = nil;\n \n reject = (reject_if_empty = false);\n if ($truthy(line['$include?']($$($nesting, 'ATTR_REF_HEAD')))) {\n line = (function(){var $brk = Opal.new_brk(); try {return $send(line, 'gsub', [$$($nesting, 'AttributeReferenceRx')], (TMP_23 = function(){var self = TMP_23.$$s || this, $b, $c, $d, $case = nil, args = nil, _ = nil, value = nil, key = nil, attribute_missing = nil;\n if (self.document == null) self.document = nil;\n\n if ($truthy(($truthy($b = (($c = $gvars['~']) === nil ? nil : $c['$[]'](1))['$==']($$($nesting, 'RS'))) ? $b : (($c = $gvars['~']) === nil ? nil : $c['$[]'](4))['$==']($$($nesting, 'RS'))))) {\n return \"\" + \"{\" + ((($b = $gvars['~']) === nil ? nil : $b['$[]'](2))) + \"}\"\n } else if ($truthy((($b = $gvars['~']) === nil ? nil : $b['$[]'](3)))) {\n return (function() {$case = (args = (($b = $gvars['~']) === nil ? nil : $b['$[]'](2)).$split(\":\", 3)).$shift();\n if (\"set\"['$===']($case)) {\n $c = $$($nesting, 'Parser').$store_attribute(args['$[]'](0), ($truthy($d = args['$[]'](1)) ? $d : \"\"), self.document), $b = Opal.to_ary($c), (_ = ($b[0] == null ? nil : $b[0])), (value = ($b[1] == null ? nil : $b[1])), $c;\n if ($truthy(value)) {\n } else if (doc_attrs.$fetch(\"attribute-undefined\", $$($nesting, 'Compliance').$attribute_undefined())['$=='](\"drop-line\")) {\n \n reject = true;\n \n Opal.brk(\"\", $brk);};\n reject_if_empty = true;\n return \"\";}\n else if (\"counter2\"['$===']($case)) {\n $send(self.document, 'counter', Opal.to_a(args));\n reject_if_empty = true;\n return \"\";}\n else {return $send(self.document, 'counter', Opal.to_a(args))}})()\n } else if ($truthy(doc_attrs['$key?']((key = (($b = $gvars['~']) === nil ? nil : $b['$[]'](2)).$downcase())))) {\n return doc_attrs['$[]'](key)\n } else if ($truthy($$($nesting, 'INTRINSIC_ATTRIBUTES')['$key?'](key))) {\n return $$($nesting, 'INTRINSIC_ATTRIBUTES')['$[]'](key)\n } else {\n return (function() {$case = (attribute_missing = ($truthy($b = attribute_missing) ? $b : ($truthy($c = opts['$[]'](\"attribute_missing\")) ? $c : doc_attrs.$fetch(\"attribute-missing\", $$($nesting, 'Compliance').$attribute_missing()))));\n if (\"drop\"['$===']($case)) {\n reject_if_empty = true;\n return \"\";}\n else if (\"drop-line\"['$===']($case)) {\n self.$warn(\"\" + \"asciidoctor: WARNING: dropping line containing reference to missing attribute: \" + (key));\n reject = true;\n \n Opal.brk(\"\", $brk);}\n else if (\"warn\"['$===']($case)) {\n self.$warn(\"\" + \"asciidoctor: WARNING: skipping reference to missing attribute: \" + (key));\n return (($b = $gvars['~']) === nil ? nil : $b['$[]'](0));}\n else {return (($b = $gvars['~']) === nil ? nil : $b['$[]'](0))}})()\n }}, TMP_23.$$s = self, TMP_23.$$brk = $brk, TMP_23.$$arity = 0, TMP_23))\n } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()};\n if ($truthy(($truthy($b = reject) ? $b : ($truthy($c = reject_if_empty) ? line['$empty?']() : $c)))) {\n return nil\n } else {\n return result['$<<'](line)\n };}, TMP_22.$$s = self, TMP_22.$$brk = $brk, TMP_22.$$arity = 1, TMP_22))\n } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();\n if ($truthy(input_is_string)) {\n return $rb_times(result, $$($nesting, 'LF'))\n } else {\n return result\n };\n }, TMP_Substitutors_sub_attributes_24.$$arity = -2);\n \n Opal.def(self, '$sub_macros', TMP_Substitutors_sub_macros_41 = function $$sub_macros(source) {\n var $a, $b, TMP_25, TMP_28, TMP_30, TMP_32, TMP_34, TMP_35, TMP_36, TMP_37, TMP_38, TMP_39, self = this, found = nil, found_square_bracket = nil, $writer = nil, found_colon = nil, found_macroish = nil, found_macroish_short = nil, doc_attrs = nil, use_link_attrs = nil, result = nil, extensions = nil;\n if (self.document == null) self.document = nil;\n\n \n found = $hash2([], {});\n found_square_bracket = (($writer = [\"square_bracket\", source['$include?'](\"[\")]), $send(found, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]);\n found_colon = source['$include?'](\":\");\n found_macroish = (($writer = [\"macroish\", ($truthy($a = found_square_bracket) ? found_colon : $a)]), $send(found, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]);\n found_macroish_short = ($truthy($a = found_macroish) ? source['$include?'](\":[\") : $a);\n doc_attrs = self.document.$attributes();\n use_link_attrs = doc_attrs['$key?'](\"linkattrs\");\n result = source;\n if ($truthy(doc_attrs['$key?'](\"experimental\"))) {\n \n if ($truthy(($truthy($a = found_macroish_short) ? ($truthy($b = result['$include?'](\"kbd:\")) ? $b : result['$include?'](\"btn:\")) : $a))) {\n result = $send(result, 'gsub', [$$($nesting, 'InlineKbdBtnMacroRx')], (TMP_25 = function(){var self = TMP_25.$$s || this, $c, TMP_26, TMP_27, keys = nil, delim_idx = nil, delim = nil;\n\n if ($truthy((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) {\n return (($c = $gvars['~']) === nil ? nil : $c['$[]'](0)).$slice(1, (($c = $gvars['~']) === nil ? nil : $c['$[]'](0)).$length())\n } else if ((($c = $gvars['~']) === nil ? nil : $c['$[]'](2))['$=='](\"kbd\")) {\n \n if ($truthy((keys = (($c = $gvars['~']) === nil ? nil : $c['$[]'](3)).$strip())['$include?']($$($nesting, 'R_SB')))) {\n keys = keys.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n if ($truthy(($truthy($c = $rb_gt(keys.$length(), 1)) ? (delim_idx = (function() {if ($truthy((delim_idx = keys.$index(\",\", 1)))) {\n return [delim_idx, keys.$index(\"+\", 1)].$compact().$min()\n } else {\n \n return keys.$index(\"+\", 1);\n }; return nil; })()) : $c))) {\n \n delim = keys.$slice(delim_idx, 1);\n if ($truthy(keys['$end_with?'](delim))) {\n \n keys = $send(keys.$chop().$split(delim, -1), 'map', [], (TMP_26 = function(key){var self = TMP_26.$$s || this;\nif (key == null) key = nil;\n return key.$strip()}, TMP_26.$$s = self, TMP_26.$$arity = 1, TMP_26));\n \n $writer = [-1, \"\" + (keys['$[]'](-1)) + (delim)];\n $send(keys, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n keys = $send(keys.$split(delim), 'map', [], (TMP_27 = function(key){var self = TMP_27.$$s || this;\nif (key == null) key = nil;\n return key.$strip()}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27))\n };\n } else {\n keys = [keys]\n };\n return $$($nesting, 'Inline').$new(self, \"kbd\", nil, $hash2([\"attributes\"], {\"attributes\": $hash2([\"keys\"], {\"keys\": keys})})).$convert();\n } else {\n return $$($nesting, 'Inline').$new(self, \"button\", self.$unescape_bracketed_text((($c = $gvars['~']) === nil ? nil : $c['$[]'](3)))).$convert()\n }}, TMP_25.$$s = self, TMP_25.$$arity = 0, TMP_25))};\n if ($truthy(($truthy($a = found_macroish) ? result['$include?'](\"menu:\") : $a))) {\n result = $send(result, 'gsub', [$$($nesting, 'InlineMenuMacroRx')], (TMP_28 = function(){var self = TMP_28.$$s || this, $c, TMP_29, m = nil, captured = nil, menu = nil, items = nil, delim = nil, submenus = nil, menuitem = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy((captured = m['$[]'](0))['$start_with?']($$($nesting, 'RS')))) {\n return captured['$[]']($range(1, -1, false));};\n $c = [m['$[]'](1), m['$[]'](2)], (menu = $c[0]), (items = $c[1]), $c;\n if ($truthy(items)) {\n \n if ($truthy(items['$include?']($$($nesting, 'R_SB')))) {\n items = items.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n if ($truthy((delim = (function() {if ($truthy(items['$include?'](\">\"))) {\n return \">\"\n } else {\n \n if ($truthy(items['$include?'](\",\"))) {\n return \",\"\n } else {\n return nil\n };\n }; return nil; })()))) {\n \n submenus = $send(items.$split(delim), 'map', [], (TMP_29 = function(it){var self = TMP_29.$$s || this;\nif (it == null) it = nil;\n return it.$strip()}, TMP_29.$$s = self, TMP_29.$$arity = 1, TMP_29));\n menuitem = submenus.$pop();\n } else {\n $c = [[], items.$rstrip()], (submenus = $c[0]), (menuitem = $c[1]), $c\n };\n } else {\n $c = [[], nil], (submenus = $c[0]), (menuitem = $c[1]), $c\n };\n return $$($nesting, 'Inline').$new(self, \"menu\", nil, $hash2([\"attributes\"], {\"attributes\": $hash2([\"menu\", \"submenus\", \"menuitem\"], {\"menu\": menu, \"submenus\": submenus, \"menuitem\": menuitem})})).$convert();}, TMP_28.$$s = self, TMP_28.$$arity = 0, TMP_28))};\n if ($truthy(($truthy($a = result['$include?'](\"\\\"\")) ? result['$include?'](\">\") : $a))) {\n result = $send(result, 'gsub', [$$($nesting, 'MenuInlineRx')], (TMP_30 = function(){var self = TMP_30.$$s || this, $c, $d, TMP_31, m = nil, captured = nil, input = nil, menu = nil, submenus = nil, menuitem = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy((captured = m['$[]'](0))['$start_with?']($$($nesting, 'RS')))) {\n return captured['$[]']($range(1, -1, false));};\n input = m['$[]'](1);\n $d = $send(input.$split(\">\"), 'map', [], (TMP_31 = function(it){var self = TMP_31.$$s || this;\nif (it == null) it = nil;\n return it.$strip()}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31)), $c = Opal.to_ary($d), (menu = ($c[0] == null ? nil : $c[0])), (submenus = $slice.call($c, 1)), $d;\n menuitem = submenus.$pop();\n return $$($nesting, 'Inline').$new(self, \"menu\", nil, $hash2([\"attributes\"], {\"attributes\": $hash2([\"menu\", \"submenus\", \"menuitem\"], {\"menu\": menu, \"submenus\": submenus, \"menuitem\": menuitem})})).$convert();}, TMP_30.$$s = self, TMP_30.$$arity = 0, TMP_30))};};\n if ($truthy(($truthy($a = (extensions = self.document.$extensions())) ? extensions['$inline_macros?']() : $a))) {\n $send(extensions.$inline_macros(), 'each', [], (TMP_32 = function(extension){var self = TMP_32.$$s || this, TMP_33;\nif (extension == null) extension = nil;\n return (result = $send(result, 'gsub', [extension.$instance().$regexp()], (TMP_33 = function(){var self = TMP_33.$$s || this, $c, m = nil, target = nil, content = nil, extconf = nil, attributes = nil, replacement = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy(m['$[]'](0)['$start_with?']($$($nesting, 'RS')))) {\n return m['$[]'](0)['$[]']($range(1, -1, false));};\n if ($truthy((function() { try {\n return m.$names()\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n return []\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }})()['$empty?']())) {\n $c = [m['$[]'](1), m['$[]'](2), extension.$config()], (target = $c[0]), (content = $c[1]), (extconf = $c[2]), $c\n } else {\n $c = [(function() { try {\n return m['$[]'](\"target\")\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n return nil\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }})(), (function() { try {\n return m['$[]'](\"content\")\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n return nil\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }})(), extension.$config()], (target = $c[0]), (content = $c[1]), (extconf = $c[2]), $c\n };\n attributes = (function() {if ($truthy((attributes = extconf['$[]'](\"default_attrs\")))) {\n return attributes.$dup()\n } else {\n return $hash2([], {})\n }; return nil; })();\n if ($truthy(content['$nil_or_empty?']())) {\n if ($truthy(($truthy($c = content) ? extconf['$[]'](\"content_model\")['$!='](\"attributes\") : $c))) {\n \n $writer = [\"text\", content];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n } else {\n \n content = self.$unescape_bracketed_text(content);\n if (extconf['$[]'](\"content_model\")['$=='](\"attributes\")) {\n self.$parse_attributes(content, ($truthy($c = extconf['$[]'](\"pos_attrs\")) ? $c : []), $hash2([\"sub_result\", \"into\"], {\"sub_result\": false, \"into\": attributes}))\n } else {\n \n $writer = [\"text\", content];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n };\n replacement = extension.$process_method()['$[]'](self, ($truthy($c = target) ? $c : content), attributes);\n if ($truthy($$($nesting, 'Inline')['$==='](replacement))) {\n return replacement.$convert()\n } else {\n return replacement\n };}, TMP_33.$$s = self, TMP_33.$$arity = 0, TMP_33)))}, TMP_32.$$s = self, TMP_32.$$arity = 1, TMP_32))};\n if ($truthy(($truthy($a = found_macroish) ? ($truthy($b = result['$include?'](\"image:\")) ? $b : result['$include?'](\"icon:\")) : $a))) {\n result = $send(result, 'gsub', [$$($nesting, 'InlineImageMacroRx')], (TMP_34 = function(){var self = TMP_34.$$s || this, $c, m = nil, captured = nil, type = nil, posattrs = nil, target = nil, attrs = nil;\n if (self.document == null) self.document = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy((captured = (($c = $gvars['~']) === nil ? nil : $c['$[]'](0)))['$start_with?']($$($nesting, 'RS')))) {\n return captured['$[]']($range(1, -1, false));};\n if ($truthy(captured['$start_with?'](\"icon:\"))) {\n $c = [\"icon\", [\"size\"]], (type = $c[0]), (posattrs = $c[1]), $c\n } else {\n $c = [\"image\", [\"alt\", \"width\", \"height\"]], (type = $c[0]), (posattrs = $c[1]), $c\n };\n if ($truthy((target = m['$[]'](1))['$include?']($$($nesting, 'ATTR_REF_HEAD')))) {\n target = self.$sub_attributes(target)};\n if (type['$=='](\"icon\")) {\n } else {\n self.document.$register(\"images\", target)\n };\n attrs = self.$parse_attributes(m['$[]'](2), posattrs, $hash2([\"unescape_input\"], {\"unescape_input\": true}));\n ($truthy($c = attrs['$[]'](\"alt\")) ? $c : (($writer = [\"alt\", (($writer = [\"default-alt\", $$($nesting, 'Helpers').$basename(target, true).$tr(\"_-\", \" \")]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n return $$($nesting, 'Inline').$new(self, \"image\", nil, $hash2([\"type\", \"target\", \"attributes\"], {\"type\": type, \"target\": target, \"attributes\": attrs})).$convert();}, TMP_34.$$s = self, TMP_34.$$arity = 0, TMP_34))};\n if ($truthy(($truthy($a = ($truthy($b = result['$include?'](\"((\")) ? result['$include?'](\"))\") : $b)) ? $a : ($truthy($b = found_macroish_short) ? result['$include?'](\"indexterm\") : $b)))) {\n result = $send(result, 'gsub', [$$($nesting, 'InlineIndextermMacroRx')], (TMP_35 = function(){var self = TMP_35.$$s || this, $c, m = nil, $case = nil, terms = nil, term = nil, text = nil, visible = nil, before = nil, after = nil;\n if (self.document == null) self.document = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy(m['$[]'](0)['$start_with?']($$($nesting, 'RS')))) {\n return m['$[]'](0)['$[]']($range(1, -1, false));};\n return (function() {$case = m['$[]'](1);\n if (\"indexterm\"['$===']($case)) {\n terms = self.$split_simple_csv(self.$normalize_string(m['$[]'](2), true));\n self.document.$register(\"indexterms\", terms);\n return $$($nesting, 'Inline').$new(self, \"indexterm\", nil, $hash2([\"attributes\"], {\"attributes\": $hash2([\"terms\"], {\"terms\": terms})})).$convert();}\n else if (\"indexterm2\"['$===']($case)) {\n term = self.$normalize_string(m['$[]'](2), true);\n self.document.$register(\"indexterms\", [term]);\n return $$($nesting, 'Inline').$new(self, \"indexterm\", term, $hash2([\"type\"], {\"type\": \"visible\"})).$convert();}\n else {\n $c = [m['$[]'](3), true, nil, nil], (text = $c[0]), (visible = $c[1]), (before = $c[2]), (after = $c[3]), $c;\n if ($truthy(text['$start_with?'](\"(\"))) {\n if ($truthy(text['$end_with?'](\")\"))) {\n $c = [text.$slice(1, $rb_minus(text.$length(), 2)), false], (text = $c[0]), (visible = $c[1]), $c\n } else {\n $c = [text.$slice(1, $rb_minus(text.$length(), 1)), \"(\", \"\"], (text = $c[0]), (before = $c[1]), (after = $c[2]), $c\n }\n } else if ($truthy(text['$end_with?'](\")\"))) {\n if ($truthy(text['$start_with?'](\"(\"))) {\n $c = [text.$slice(1, $rb_minus(text.$length(), 2)), false], (text = $c[0]), (visible = $c[1]), $c\n } else {\n $c = [text.$slice(0, $rb_minus(text.$length(), 1)), \"\", \")\"], (text = $c[0]), (before = $c[1]), (after = $c[2]), $c\n }};\n if ($truthy(visible)) {\n \n term = self.$normalize_string(text);\n self.document.$register(\"indexterms\", [term]);\n result = $$($nesting, 'Inline').$new(self, \"indexterm\", term, $hash2([\"type\"], {\"type\": \"visible\"})).$convert();\n } else {\n \n terms = self.$split_simple_csv(self.$normalize_string(text));\n self.document.$register(\"indexterms\", terms);\n result = $$($nesting, 'Inline').$new(self, \"indexterm\", nil, $hash2([\"attributes\"], {\"attributes\": $hash2([\"terms\"], {\"terms\": terms})})).$convert();\n };\n if ($truthy(before)) {\n return \"\" + (before) + (result) + (after)\n } else {\n return result\n };}})();}, TMP_35.$$s = self, TMP_35.$$arity = 0, TMP_35))};\n if ($truthy(($truthy($a = found_colon) ? result['$include?'](\"://\") : $a))) {\n result = $send(result, 'gsub', [$$($nesting, 'LinkInlineRx')], (TMP_36 = function(){var self = TMP_36.$$s || this, $c, $d, $e, m = nil, macro = nil, prefix = nil, target = nil, text = nil, suffix = nil, $case = nil, attrs = nil, link_opts = nil;\n if (self.document == null) self.document = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy(m['$[]'](2)['$start_with?']($$($nesting, 'RS')))) {\n return \"\" + (m['$[]'](1)) + (m['$[]'](2)['$[]']($range(1, -1, false))) + (m['$[]'](3));};\n $c = [m['$[]'](1), m['$[]'](2), ($truthy($d = (macro = m['$[]'](3))) ? $d : \"\"), \"\"], (prefix = $c[0]), (target = $c[1]), (text = $c[2]), (suffix = $c[3]), $c;\n if (prefix['$=='](\"link:\")) {\n if ($truthy(macro)) {\n prefix = \"\"\n } else {\n return m['$[]'](0);\n }};\n if ($truthy(($truthy($c = macro) ? $c : $$($nesting, 'UriTerminatorRx')['$!~'](target)))) {\n } else {\n $case = (($c = $gvars['~']) === nil ? nil : $c['$[]'](0));\n if (\")\"['$===']($case)) {\n target = target.$chop();\n suffix = \")\";}\n else if (\";\"['$===']($case)) {if ($truthy(($truthy($c = prefix['$start_with?'](\"<\")) ? target['$end_with?'](\">\") : $c))) {\n \n prefix = prefix['$[]']($range(4, -1, false));\n target = target['$[]']($range(0, -4, true));\n } else if ($truthy((target = target.$chop())['$end_with?'](\")\"))) {\n \n target = target.$chop();\n suffix = \");\";\n } else {\n suffix = \";\"\n }}\n else if (\":\"['$===']($case)) {if ($truthy((target = target.$chop())['$end_with?'](\")\"))) {\n \n target = target.$chop();\n suffix = \"):\";\n } else {\n suffix = \":\"\n }}\n };\n $c = [nil, $hash2([\"type\"], {\"type\": \"link\"})], (attrs = $c[0]), (link_opts = $c[1]), $c;\n if ($truthy(text['$empty?']())) {\n } else {\n \n if ($truthy(text['$include?']($$($nesting, 'R_SB')))) {\n text = text.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n if ($truthy(($truthy($c = use_link_attrs) ? ($truthy($d = text['$start_with?'](\"\\\"\")) ? $d : ($truthy($e = text['$include?'](\",\")) ? text['$include?'](\"=\") : $e)) : $c))) {\n \n attrs = self.$parse_attributes(text, []);\n if ($truthy(attrs['$key?'](\"id\"))) {\n \n $writer = [\"id\", attrs.$delete(\"id\")];\n $send(link_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n text = ($truthy($c = attrs['$[]'](1)) ? $c : \"\");};\n if ($truthy(text['$end_with?'](\"^\"))) {\n \n text = text.$chop();\n if ($truthy(attrs)) {\n ($truthy($c = attrs['$[]'](\"window\")) ? $c : (($writer = [\"window\", \"_blank\"]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n } else {\n attrs = $hash2([\"window\"], {\"window\": \"_blank\"})\n };};\n };\n if ($truthy(text['$empty?']())) {\n \n text = (function() {if ($truthy(doc_attrs['$key?'](\"hide-uri-scheme\"))) {\n \n return target.$sub($$($nesting, 'UriSniffRx'), \"\");\n } else {\n return target\n }; return nil; })();\n if ($truthy(attrs)) {\n \n $writer = [\"role\", (function() {if ($truthy(attrs['$key?'](\"role\"))) {\n return \"\" + \"bare \" + (attrs['$[]'](\"role\"))\n } else {\n return \"bare\"\n }; return nil; })()];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n attrs = $hash2([\"role\"], {\"role\": \"bare\"})\n };};\n self.document.$register(\"links\", (($writer = [\"target\", target]), $send(link_opts, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n if ($truthy(attrs)) {\n \n $writer = [\"attributes\", attrs];\n $send(link_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return \"\" + (prefix) + ($$($nesting, 'Inline').$new(self, \"anchor\", text, link_opts).$convert()) + (suffix);}, TMP_36.$$s = self, TMP_36.$$arity = 0, TMP_36))};\n if ($truthy(($truthy($a = found_macroish) ? ($truthy($b = result['$include?'](\"link:\")) ? $b : result['$include?'](\"mailto:\")) : $a))) {\n result = $send(result, 'gsub', [$$($nesting, 'InlineLinkMacroRx')], (TMP_37 = function(){var self = TMP_37.$$s || this, $c, $d, $e, $f, m = nil, target = nil, mailto = nil, attrs = nil, link_opts = nil, text = nil;\n if (self.document == null) self.document = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy(m['$[]'](0)['$start_with?']($$($nesting, 'RS')))) {\n return m['$[]'](0)['$[]']($range(1, -1, false));};\n target = (function() {if ($truthy((mailto = m['$[]'](1)))) {\n return \"\" + \"mailto:\" + (m['$[]'](2))\n } else {\n return m['$[]'](2)\n }; return nil; })();\n $c = [nil, $hash2([\"type\"], {\"type\": \"link\"})], (attrs = $c[0]), (link_opts = $c[1]), $c;\n if ($truthy((text = m['$[]'](3))['$empty?']())) {\n } else {\n \n if ($truthy(text['$include?']($$($nesting, 'R_SB')))) {\n text = text.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n if ($truthy(($truthy($c = use_link_attrs) ? ($truthy($d = text['$start_with?'](\"\\\"\")) ? $d : ($truthy($e = text['$include?'](\",\")) ? ($truthy($f = mailto) ? $f : text['$include?'](\"=\")) : $e)) : $c))) {\n \n attrs = self.$parse_attributes(text, []);\n if ($truthy(attrs['$key?'](\"id\"))) {\n \n $writer = [\"id\", attrs.$delete(\"id\")];\n $send(link_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(mailto)) {\n if ($truthy(attrs['$key?'](2))) {\n if ($truthy(attrs['$key?'](3))) {\n target = \"\" + (target) + \"?subject=\" + ($$($nesting, 'Helpers').$uri_encode(attrs['$[]'](2))) + \"&body=\" + ($$($nesting, 'Helpers').$uri_encode(attrs['$[]'](3)))\n } else {\n target = \"\" + (target) + \"?subject=\" + ($$($nesting, 'Helpers').$uri_encode(attrs['$[]'](2)))\n }}};\n text = ($truthy($c = attrs['$[]'](1)) ? $c : \"\");};\n if ($truthy(text['$end_with?'](\"^\"))) {\n \n text = text.$chop();\n if ($truthy(attrs)) {\n ($truthy($c = attrs['$[]'](\"window\")) ? $c : (($writer = [\"window\", \"_blank\"]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n } else {\n attrs = $hash2([\"window\"], {\"window\": \"_blank\"})\n };};\n };\n if ($truthy(text['$empty?']())) {\n if ($truthy(mailto)) {\n text = m['$[]'](2)\n } else {\n \n text = (function() {if ($truthy(doc_attrs['$key?'](\"hide-uri-scheme\"))) {\n \n return target.$sub($$($nesting, 'UriSniffRx'), \"\");\n } else {\n return target\n }; return nil; })();\n if ($truthy(attrs)) {\n \n $writer = [\"role\", (function() {if ($truthy(attrs['$key?'](\"role\"))) {\n return \"\" + \"bare \" + (attrs['$[]'](\"role\"))\n } else {\n return \"bare\"\n }; return nil; })()];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n attrs = $hash2([\"role\"], {\"role\": \"bare\"})\n };\n }};\n self.document.$register(\"links\", (($writer = [\"target\", target]), $send(link_opts, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n if ($truthy(attrs)) {\n \n $writer = [\"attributes\", attrs];\n $send(link_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return $$($nesting, 'Inline').$new(self, \"anchor\", text, link_opts).$convert();}, TMP_37.$$s = self, TMP_37.$$arity = 0, TMP_37))};\n if ($truthy(result['$include?'](\"@\"))) {\n result = $send(result, 'gsub', [$$($nesting, 'EmailInlineRx')], (TMP_38 = function(){var self = TMP_38.$$s || this, $c, $d, address = nil, tip = nil, target = nil;\n if (self.document == null) self.document = nil;\n\n \n $c = [(($d = $gvars['~']) === nil ? nil : $d['$[]'](0)), (($d = $gvars['~']) === nil ? nil : $d['$[]'](1))], (address = $c[0]), (tip = $c[1]), $c;\n if ($truthy(tip)) {\n return (function() {if (tip['$==']($$($nesting, 'RS'))) {\n return address['$[]']($range(1, -1, false))\n } else {\n return address\n }; return nil; })();};\n target = \"\" + \"mailto:\" + (address);\n self.document.$register(\"links\", target);\n return $$($nesting, 'Inline').$new(self, \"anchor\", address, $hash2([\"type\", \"target\"], {\"type\": \"link\", \"target\": target})).$convert();}, TMP_38.$$s = self, TMP_38.$$arity = 0, TMP_38))};\n if ($truthy(($truthy($a = found_macroish_short) ? result['$include?'](\"footnote\") : $a))) {\n result = $send(result, 'gsub', [$$($nesting, 'InlineFootnoteMacroRx')], (TMP_39 = function(){var self = TMP_39.$$s || this, $c, $d, TMP_40, m = nil, id = nil, text = nil, index = nil, type = nil, target = nil, footnote = nil;\n if (self.document == null) self.document = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy(m['$[]'](0)['$start_with?']($$($nesting, 'RS')))) {\n return m['$[]'](0)['$[]']($range(1, -1, false));};\n if (m['$[]'](1)['$=='](\"footnote\")) {\n \n id = nil;\n text = self.$restore_passthroughs(self.$sub_inline_xrefs(self.$sub_inline_anchors(self.$normalize_string(m['$[]'](2), true))), false);\n index = self.document.$counter(\"footnote-number\");\n self.document.$register(\"footnotes\", $$$($$($nesting, 'Document'), 'Footnote').$new(index, id, text));\n type = nil;\n target = nil;\n } else {\n \n $d = m['$[]'](2).$split(\",\", 2), $c = Opal.to_ary($d), (id = ($c[0] == null ? nil : $c[0])), (text = ($c[1] == null ? nil : $c[1])), $d;\n id = id.$strip();\n if ($truthy(text)) {\n \n text = self.$restore_passthroughs(self.$sub_inline_xrefs(self.$sub_inline_anchors(self.$normalize_string(text, true))), false);\n index = self.document.$counter(\"footnote-number\");\n self.document.$register(\"footnotes\", $$$($$($nesting, 'Document'), 'Footnote').$new(index, id, text));\n type = \"ref\";\n target = nil;\n } else {\n \n if ($truthy((footnote = $send(self.document.$footnotes(), 'find', [], (TMP_40 = function(fn){var self = TMP_40.$$s || this;\nif (fn == null) fn = nil;\n return fn.$id()['$=='](id)}, TMP_40.$$s = self, TMP_40.$$arity = 1, TMP_40))))) {\n \n index = footnote.$index();\n text = footnote.$text();\n } else {\n \n index = nil;\n text = id;\n };\n target = id;\n id = nil;\n type = \"xref\";\n };\n };\n return $$($nesting, 'Inline').$new(self, \"footnote\", text, $hash2([\"attributes\", \"id\", \"target\", \"type\"], {\"attributes\": $hash2([\"index\"], {\"index\": index}), \"id\": id, \"target\": target, \"type\": type})).$convert();}, TMP_39.$$s = self, TMP_39.$$arity = 0, TMP_39))};\n return self.$sub_inline_xrefs(self.$sub_inline_anchors(result, found), found);\n }, TMP_Substitutors_sub_macros_41.$$arity = 1);\n \n Opal.def(self, '$sub_inline_anchors', TMP_Substitutors_sub_inline_anchors_44 = function $$sub_inline_anchors(text, found) {\n var $a, TMP_42, $b, $c, TMP_43, self = this;\n if (self.context == null) self.context = nil;\n if (self.parent == null) self.parent = nil;\n\n if (found == null) {\n found = nil;\n }\n \n if ($truthy((($a = self.context['$=='](\"list_item\")) ? self.parent.$style()['$=='](\"bibliography\") : self.context['$=='](\"list_item\")))) {\n text = $send(text, 'sub', [$$($nesting, 'InlineBiblioAnchorRx')], (TMP_42 = function(){var self = TMP_42.$$s || this, $b, $c;\n\n return $$($nesting, 'Inline').$new(self, \"anchor\", \"\" + \"[\" + (($truthy($b = (($c = $gvars['~']) === nil ? nil : $c['$[]'](2))) ? $b : (($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) + \"]\", $hash2([\"type\", \"id\", \"target\"], {\"type\": \"bibref\", \"id\": (($b = $gvars['~']) === nil ? nil : $b['$[]'](1)), \"target\": (($b = $gvars['~']) === nil ? nil : $b['$[]'](1))})).$convert()}, TMP_42.$$s = self, TMP_42.$$arity = 0, TMP_42))};\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = found['$!']()) ? $c : found['$[]'](\"square_bracket\"))) ? text['$include?'](\"[[\") : $b)) ? $a : ($truthy($b = ($truthy($c = found['$!']()) ? $c : found['$[]'](\"macroish\"))) ? text['$include?'](\"or:\") : $b)))) {\n text = $send(text, 'gsub', [$$($nesting, 'InlineAnchorRx')], (TMP_43 = function(){var self = TMP_43.$$s || this, $d, $e, id = nil, reftext = nil;\n\n \n if ($truthy((($d = $gvars['~']) === nil ? nil : $d['$[]'](1)))) {\n return (($d = $gvars['~']) === nil ? nil : $d['$[]'](0)).$slice(1, (($d = $gvars['~']) === nil ? nil : $d['$[]'](0)).$length());};\n if ($truthy((id = (($d = $gvars['~']) === nil ? nil : $d['$[]'](2))))) {\n reftext = (($d = $gvars['~']) === nil ? nil : $d['$[]'](3))\n } else {\n \n id = (($d = $gvars['~']) === nil ? nil : $d['$[]'](4));\n if ($truthy(($truthy($d = (reftext = (($e = $gvars['~']) === nil ? nil : $e['$[]'](5)))) ? reftext['$include?']($$($nesting, 'R_SB')) : $d))) {\n reftext = reftext.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n };\n return $$($nesting, 'Inline').$new(self, \"anchor\", reftext, $hash2([\"type\", \"id\", \"target\"], {\"type\": \"ref\", \"id\": id, \"target\": id})).$convert();}, TMP_43.$$s = self, TMP_43.$$arity = 0, TMP_43))};\n return text;\n }, TMP_Substitutors_sub_inline_anchors_44.$$arity = -2);\n \n Opal.def(self, '$sub_inline_xrefs', TMP_Substitutors_sub_inline_xrefs_46 = function $$sub_inline_xrefs(text, found) {\n var $a, $b, TMP_45, self = this;\n\n if (found == null) {\n found = nil;\n }\n \n if ($truthy(($truthy($a = ($truthy($b = (function() {if ($truthy(found)) {\n return found['$[]'](\"macroish\")\n } else {\n \n return text['$include?'](\"[\");\n }; return nil; })()) ? text['$include?'](\"xref:\") : $b)) ? $a : ($truthy($b = text['$include?'](\"&\")) ? text['$include?'](\"<<\") : $b)))) {\n text = $send(text, 'gsub', [$$($nesting, 'InlineXrefMacroRx')], (TMP_45 = function(){var self = TMP_45.$$s || this, $c, $d, m = nil, id = nil, reftext = nil, hash_idx = nil, fragment_len = nil, path = nil, fragment = nil, target = nil, refid = nil, ext_idx = nil, resolved_id = nil;\n if (self.document == null) self.document = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n if ($gvars.VERBOSE == null) $gvars.VERBOSE = nil;\n\n \n m = $gvars[\"~\"];\n if ($truthy(m['$[]'](0)['$start_with?']($$($nesting, 'RS')))) {\n return m['$[]'](0)['$[]']($range(1, -1, false));};\n if ($truthy((id = m['$[]'](1)))) {\n \n $d = id.$split(\",\", 2), $c = Opal.to_ary($d), (id = ($c[0] == null ? nil : $c[0])), (reftext = ($c[1] == null ? nil : $c[1])), $d;\n if ($truthy(reftext)) {\n reftext = reftext.$lstrip()};\n } else {\n \n id = m['$[]'](2);\n if ($truthy(($truthy($c = (reftext = m['$[]'](3))) ? reftext['$include?']($$($nesting, 'R_SB')) : $c))) {\n reftext = reftext.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n };\n if ($truthy((hash_idx = id.$index(\"#\")))) {\n if ($truthy($rb_gt(hash_idx, 0))) {\n if ($truthy($rb_gt((fragment_len = $rb_minus($rb_minus(id.$length(), hash_idx), 1)), 0))) {\n $c = [id.$slice(0, hash_idx), id.$slice($rb_plus(hash_idx, 1), fragment_len)], (path = $c[0]), (fragment = $c[1]), $c\n } else {\n $c = [id.$slice(0, hash_idx), nil], (path = $c[0]), (fragment = $c[1]), $c\n }\n } else {\n $c = [id, nil, id.$slice(1, id.$length())], (target = $c[0]), (path = $c[1]), (fragment = $c[2]), $c\n }\n } else {\n $c = [nil, id], (path = $c[0]), (fragment = $c[1]), $c\n };\n if ($truthy(target)) {\n refid = fragment\n } else if ($truthy(path)) {\n \n if ($truthy(($truthy($c = (ext_idx = path.$rindex(\".\"))) ? $$($nesting, 'ASCIIDOC_EXTENSIONS')['$[]'](path.$slice(ext_idx, path.$length())) : $c))) {\n path = path.$slice(0, ext_idx)};\n if ($truthy(($truthy($c = self.document.$attributes()['$[]'](\"docname\")['$=='](path)) ? $c : self.document.$catalog()['$[]'](\"includes\")['$include?'](path)))) {\n $c = [fragment, nil, \"\" + \"#\" + (fragment)], (refid = $c[0]), (path = $c[1]), (target = $c[2]), $c\n } else {\n \n refid = (function() {if ($truthy(fragment)) {\n return \"\" + (path) + \"#\" + (fragment)\n } else {\n return path\n }; return nil; })();\n path = \"\" + (self.document.$attributes()['$[]'](\"relfileprefix\")) + (path) + (self.document.$attributes().$fetch(\"outfilesuffix\", \".html\"));\n target = (function() {if ($truthy(fragment)) {\n return \"\" + (path) + \"#\" + (fragment)\n } else {\n return path\n }; return nil; })();\n };\n } else {\n \n if ($truthy(self.document.$catalog()['$[]'](\"ids\")['$key?'](fragment))) {\n } else if ($truthy(($truthy($c = ($truthy($d = fragment['$include?'](\" \")) ? $d : fragment.$downcase()['$!='](fragment))) ? (resolved_id = self.document.$catalog()['$[]'](\"ids\").$key(fragment)) : $c))) {\n fragment = resolved_id\n } else if ($truthy($gvars.VERBOSE)) {\n self.$warn(\"\" + \"asciidoctor: WARNING: invalid reference: \" + (fragment))};\n $c = [fragment, \"\" + \"#\" + (fragment)], (refid = $c[0]), (target = $c[1]), $c;\n };\n return $$($nesting, 'Inline').$new(self, \"anchor\", reftext, $hash2([\"type\", \"target\", \"attributes\"], {\"type\": \"xref\", \"target\": target, \"attributes\": $hash2([\"path\", \"fragment\", \"refid\"], {\"path\": path, \"fragment\": fragment, \"refid\": refid})})).$convert();}, TMP_45.$$s = self, TMP_45.$$arity = 0, TMP_45))};\n return text;\n }, TMP_Substitutors_sub_inline_xrefs_46.$$arity = -2);\n \n Opal.def(self, '$sub_callouts', TMP_Substitutors_sub_callouts_48 = function $$sub_callouts(text) {\n var TMP_47, self = this, callout_rx = nil;\n\n \n callout_rx = (function() {if ($truthy(self['$attr?'](\"line-comment\"))) {\n return new RegExp(\"\" + \"(?:\" + ($$$('::', 'Regexp').$escape(self.$attr(\"line-comment\"))) + \" )?\" + ($$($nesting, 'CalloutSourceRxt')))\n } else {\n return $$($nesting, 'CalloutSourceRx')\n }; return nil; })();\n return $send(text, 'gsub', [callout_rx], (TMP_47 = function(){var self = TMP_47.$$s || this, $a;\n if (self.document == null) self.document = nil;\n\n \n if ($truthy((($a = $gvars['~']) === nil ? nil : $a['$[]'](1)))) {\n return (($a = $gvars['~']) === nil ? nil : $a['$[]'](0)).$sub($$($nesting, 'RS'), \"\");};\n return $$($nesting, 'Inline').$new(self, \"callout\", (($a = $gvars['~']) === nil ? nil : $a['$[]'](3)), $hash2([\"id\"], {\"id\": self.document.$callouts().$read_next_id()})).$convert();}, TMP_47.$$s = self, TMP_47.$$arity = 0, TMP_47));\n }, TMP_Substitutors_sub_callouts_48.$$arity = 1);\n \n Opal.def(self, '$sub_post_replacements', TMP_Substitutors_sub_post_replacements_51 = function $$sub_post_replacements(text) {\n var $a, TMP_49, TMP_50, self = this, lines = nil, last = nil;\n if (self.document == null) self.document = nil;\n if (self.attributes == null) self.attributes = nil;\n\n if ($truthy(($truthy($a = self.document.$attributes()['$key?'](\"hardbreaks\")) ? $a : self.attributes['$key?'](\"hardbreaks-option\")))) {\n \n lines = text.$split($$($nesting, 'LF'), -1);\n if ($truthy($rb_lt(lines.$size(), 2))) {\n return text};\n last = lines.$pop();\n return $rb_times($send(lines, 'map', [], (TMP_49 = function(line){var self = TMP_49.$$s || this;\nif (line == null) line = nil;\n return $$($nesting, 'Inline').$new(self, \"break\", (function() {if ($truthy(line['$end_with?']($$($nesting, 'HARD_LINE_BREAK')))) {\n \n return line.$slice(0, $rb_minus(line.$length(), 2));\n } else {\n return line\n }; return nil; })(), $hash2([\"type\"], {\"type\": \"line\"})).$convert()}, TMP_49.$$s = self, TMP_49.$$arity = 1, TMP_49))['$<<'](last), $$($nesting, 'LF'));\n } else if ($truthy(($truthy($a = text['$include?']($$($nesting, 'PLUS'))) ? text['$include?']($$($nesting, 'HARD_LINE_BREAK')) : $a))) {\n return $send(text, 'gsub', [$$($nesting, 'HardLineBreakRx')], (TMP_50 = function(){var self = TMP_50.$$s || this, $b;\n\n return $$($nesting, 'Inline').$new(self, \"break\", (($b = $gvars['~']) === nil ? nil : $b['$[]'](1)), $hash2([\"type\"], {\"type\": \"line\"})).$convert()}, TMP_50.$$s = self, TMP_50.$$arity = 0, TMP_50))\n } else {\n return text\n }\n }, TMP_Substitutors_sub_post_replacements_51.$$arity = 1);\n \n Opal.def(self, '$convert_quoted_text', TMP_Substitutors_convert_quoted_text_52 = function $$convert_quoted_text(match, type, scope) {\n var $a, self = this, attrs = nil, unescaped_attrs = nil, attrlist = nil, id = nil, attributes = nil;\n\n \n if ($truthy(match['$[]'](0)['$start_with?']($$($nesting, 'RS')))) {\n if ($truthy((($a = scope['$=='](\"constrained\")) ? (attrs = match['$[]'](2)) : scope['$=='](\"constrained\")))) {\n unescaped_attrs = \"\" + \"[\" + (attrs) + \"]\"\n } else {\n return match['$[]'](0)['$[]']($range(1, -1, false))\n }};\n if (scope['$=='](\"constrained\")) {\n if ($truthy(unescaped_attrs)) {\n return \"\" + (unescaped_attrs) + ($$($nesting, 'Inline').$new(self, \"quoted\", match['$[]'](3), $hash2([\"type\"], {\"type\": type})).$convert())\n } else {\n \n if ($truthy((attrlist = match['$[]'](2)))) {\n \n id = (attributes = self.$parse_quoted_text_attributes(attrlist)).$delete(\"id\");\n if (type['$=='](\"mark\")) {\n type = \"unquoted\"};};\n return \"\" + (match['$[]'](1)) + ($$($nesting, 'Inline').$new(self, \"quoted\", match['$[]'](3), $hash2([\"type\", \"id\", \"attributes\"], {\"type\": type, \"id\": id, \"attributes\": attributes})).$convert());\n }\n } else {\n \n if ($truthy((attrlist = match['$[]'](1)))) {\n \n id = (attributes = self.$parse_quoted_text_attributes(attrlist)).$delete(\"id\");\n if (type['$=='](\"mark\")) {\n type = \"unquoted\"};};\n return $$($nesting, 'Inline').$new(self, \"quoted\", match['$[]'](2), $hash2([\"type\", \"id\", \"attributes\"], {\"type\": type, \"id\": id, \"attributes\": attributes})).$convert();\n };\n }, TMP_Substitutors_convert_quoted_text_52.$$arity = 3);\n \n Opal.def(self, '$parse_quoted_text_attributes', TMP_Substitutors_parse_quoted_text_attributes_53 = function $$parse_quoted_text_attributes(str) {\n var $a, $b, self = this, segments = nil, id = nil, more_roles = nil, roles = nil, attrs = nil, $writer = nil;\n\n \n if ($truthy(str['$include?']($$($nesting, 'ATTR_REF_HEAD')))) {\n str = self.$sub_attributes(str)};\n if ($truthy(str['$include?'](\",\"))) {\n str = str.$slice(0, str.$index(\",\"))};\n if ($truthy((str = str.$strip())['$empty?']())) {\n return $hash2([], {})\n } else if ($truthy(($truthy($a = str['$start_with?'](\".\", \"#\")) ? $$($nesting, 'Compliance').$shorthand_property_syntax() : $a))) {\n \n segments = str.$split(\"#\", 2);\n if ($truthy($rb_gt(segments.$size(), 1))) {\n $b = segments['$[]'](1).$split(\".\"), $a = Opal.to_ary($b), (id = ($a[0] == null ? nil : $a[0])), (more_roles = $slice.call($a, 1)), $b\n } else {\n \n id = nil;\n more_roles = [];\n };\n roles = (function() {if ($truthy(segments['$[]'](0)['$empty?']())) {\n return []\n } else {\n return segments['$[]'](0).$split(\".\")\n }; return nil; })();\n if ($truthy($rb_gt(roles.$size(), 1))) {\n roles.$shift()};\n if ($truthy($rb_gt(more_roles.$size(), 0))) {\n roles.$concat(more_roles)};\n attrs = $hash2([], {});\n if ($truthy(id)) {\n \n $writer = [\"id\", id];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(roles['$empty?']())) {\n } else {\n \n $writer = [\"role\", $rb_times(roles, \" \")];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n return attrs;\n } else {\n return $hash2([\"role\"], {\"role\": str})\n };\n }, TMP_Substitutors_parse_quoted_text_attributes_53.$$arity = 1);\n \n Opal.def(self, '$parse_attributes', TMP_Substitutors_parse_attributes_54 = function $$parse_attributes(attrline, posattrs, opts) {\n var $a, self = this, block = nil, into = nil;\n if (self.document == null) self.document = nil;\n\n if (posattrs == null) {\n posattrs = [\"role\"];\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy(attrline)) {\n } else {\n return nil\n };\n if ($truthy(attrline['$empty?']())) {\n return $hash2([], {})};\n if ($truthy(($truthy($a = opts['$[]'](\"sub_input\")) ? attrline['$include?']($$($nesting, 'ATTR_REF_HEAD')) : $a))) {\n attrline = self.document.$sub_attributes(attrline)};\n if ($truthy(opts['$[]'](\"unescape_input\"))) {\n attrline = self.$unescape_bracketed_text(attrline)};\n block = (function() {if ($truthy(opts.$fetch(\"sub_result\", true))) {\n return self\n } else {\n return nil\n }; return nil; })();\n if ($truthy((into = opts['$[]'](\"into\")))) {\n return $$($nesting, 'AttributeList').$new(attrline, block).$parse_into(into, posattrs)\n } else {\n return $$($nesting, 'AttributeList').$new(attrline, block).$parse(posattrs)\n };\n }, TMP_Substitutors_parse_attributes_54.$$arity = -2);\n \n Opal.def(self, '$unescape_bracketed_text', TMP_Substitutors_unescape_bracketed_text_55 = function $$unescape_bracketed_text(text) {\n var self = this;\n\n \n if ($truthy(text['$empty?']())) {\n } else if ($truthy((text = text.$strip().$tr($$($nesting, 'LF'), \" \"))['$include?']($$($nesting, 'R_SB')))) {\n text = text.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n return text;\n }, TMP_Substitutors_unescape_bracketed_text_55.$$arity = 1);\n \n Opal.def(self, '$normalize_string', TMP_Substitutors_normalize_string_56 = function $$normalize_string(str, unescape_brackets) {\n var $a, self = this;\n\n if (unescape_brackets == null) {\n unescape_brackets = false;\n }\n \n if ($truthy(str['$empty?']())) {\n } else {\n \n str = str.$strip().$tr($$($nesting, 'LF'), \" \");\n if ($truthy(($truthy($a = unescape_brackets) ? str['$include?']($$($nesting, 'R_SB')) : $a))) {\n str = str.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n };\n return str;\n }, TMP_Substitutors_normalize_string_56.$$arity = -2);\n \n Opal.def(self, '$unescape_brackets', TMP_Substitutors_unescape_brackets_57 = function $$unescape_brackets(str) {\n var self = this;\n\n \n if ($truthy(str['$empty?']())) {\n } else if ($truthy(str['$include?']($$($nesting, 'RS')))) {\n str = str.$gsub($$($nesting, 'ESC_R_SB'), $$($nesting, 'R_SB'))};\n return str;\n }, TMP_Substitutors_unescape_brackets_57.$$arity = 1);\n \n Opal.def(self, '$split_simple_csv', TMP_Substitutors_split_simple_csv_60 = function $$split_simple_csv(str) {\n var TMP_58, TMP_59, self = this, values = nil, current = nil, quote_open = nil;\n\n \n if ($truthy(str['$empty?']())) {\n values = []\n } else if ($truthy(str['$include?'](\"\\\"\"))) {\n \n values = [];\n current = [];\n quote_open = false;\n $send(str, 'each_char', [], (TMP_58 = function(c){var self = TMP_58.$$s || this, $case = nil;\nif (c == null) c = nil;\n return (function() {$case = c;\n if (\",\"['$===']($case)) {if ($truthy(quote_open)) {\n return current['$<<'](c)\n } else {\n \n values['$<<'](current.$join().$strip());\n return (current = []);\n }}\n else if (\"\\\"\"['$===']($case)) {return (quote_open = quote_open['$!']())}\n else {return current['$<<'](c)}})()}, TMP_58.$$s = self, TMP_58.$$arity = 1, TMP_58));\n values['$<<'](current.$join().$strip());\n } else {\n values = $send(str.$split(\",\"), 'map', [], (TMP_59 = function(it){var self = TMP_59.$$s || this;\nif (it == null) it = nil;\n return it.$strip()}, TMP_59.$$s = self, TMP_59.$$arity = 1, TMP_59))\n };\n return values;\n }, TMP_Substitutors_split_simple_csv_60.$$arity = 1);\n \n Opal.def(self, '$resolve_subs', TMP_Substitutors_resolve_subs_62 = function $$resolve_subs(subs, type, defaults, subject) {\n var TMP_61, self = this, candidates = nil, modifiers_present = nil, resolved = nil, invalid = nil;\n\n if (type == null) {\n type = \"block\";\n }\n if (defaults == null) {\n defaults = nil;\n }\n if (subject == null) {\n subject = nil;\n }\n \n if ($truthy(subs['$nil_or_empty?']())) {\n return []};\n candidates = nil;\n if ($truthy(subs['$include?'](\" \"))) {\n subs = subs.$delete(\" \")};\n modifiers_present = $$($nesting, 'SubModifierSniffRx')['$match?'](subs);\n $send(subs.$split(\",\"), 'each', [], (TMP_61 = function(key){var self = TMP_61.$$s || this, $a, $b, modifier_operation = nil, first = nil, resolved_keys = nil, resolved_key = nil, candidate = nil, $case = nil;\nif (key == null) key = nil;\n \n modifier_operation = nil;\n if ($truthy(modifiers_present)) {\n if ((first = key.$chr())['$=='](\"+\")) {\n \n modifier_operation = \"append\";\n key = key['$[]']($range(1, -1, false));\n } else if (first['$=='](\"-\")) {\n \n modifier_operation = \"remove\";\n key = key['$[]']($range(1, -1, false));\n } else if ($truthy(key['$end_with?'](\"+\"))) {\n \n modifier_operation = \"prepend\";\n key = key.$chop();}};\n key = key.$to_sym();\n if ($truthy((($a = type['$=='](\"inline\")) ? ($truthy($b = key['$=='](\"verbatim\")) ? $b : key['$=='](\"v\")) : type['$=='](\"inline\")))) {\n resolved_keys = $$($nesting, 'BASIC_SUBS')\n } else if ($truthy($$($nesting, 'SUB_GROUPS')['$key?'](key))) {\n resolved_keys = $$($nesting, 'SUB_GROUPS')['$[]'](key)\n } else if ($truthy(($truthy($a = (($b = type['$=='](\"inline\")) ? key.$length()['$=='](1) : type['$=='](\"inline\"))) ? $$($nesting, 'SUB_HINTS')['$key?'](key) : $a))) {\n \n resolved_key = $$($nesting, 'SUB_HINTS')['$[]'](key);\n if ($truthy((candidate = $$($nesting, 'SUB_GROUPS')['$[]'](resolved_key)))) {\n resolved_keys = candidate\n } else {\n resolved_keys = [resolved_key]\n };\n } else {\n resolved_keys = [key]\n };\n if ($truthy(modifier_operation)) {\n \n candidates = ($truthy($a = candidates) ? $a : (function() {if ($truthy(defaults)) {\n return defaults.$dup()\n } else {\n return []\n }; return nil; })());\n return (function() {$case = modifier_operation;\n if (\"append\"['$===']($case)) {return (candidates = $rb_plus(candidates, resolved_keys))}\n else if (\"prepend\"['$===']($case)) {return (candidates = $rb_plus(resolved_keys, candidates))}\n else if (\"remove\"['$===']($case)) {return (candidates = $rb_minus(candidates, resolved_keys))}\n else { return nil }})();\n } else {\n \n candidates = ($truthy($a = candidates) ? $a : []);\n return (candidates = $rb_plus(candidates, resolved_keys));\n };}, TMP_61.$$s = self, TMP_61.$$arity = 1, TMP_61));\n if ($truthy(candidates)) {\n } else {\n return []\n };\n resolved = candidates['$&']($$($nesting, 'SUB_OPTIONS')['$[]'](type));\n if ($truthy($rb_minus(candidates, resolved)['$empty?']())) {\n } else {\n \n invalid = $rb_minus(candidates, resolved);\n self.$warn(\"\" + \"asciidoctor: WARNING: invalid substitution type\" + ((function() {if ($truthy($rb_gt(invalid.$size(), 1))) {\n return \"s\"\n } else {\n return \"\"\n }; return nil; })()) + ((function() {if ($truthy(subject)) {\n return \" for \"\n } else {\n return nil\n }; return nil; })()) + (subject) + \": \" + ($rb_times(invalid, \", \")));\n };\n return resolved;\n }, TMP_Substitutors_resolve_subs_62.$$arity = -2);\n \n Opal.def(self, '$resolve_block_subs', TMP_Substitutors_resolve_block_subs_63 = function $$resolve_block_subs(subs, defaults, subject) {\n var self = this;\n\n return self.$resolve_subs(subs, \"block\", defaults, subject)\n }, TMP_Substitutors_resolve_block_subs_63.$$arity = 3);\n \n Opal.def(self, '$resolve_pass_subs', TMP_Substitutors_resolve_pass_subs_64 = function $$resolve_pass_subs(subs) {\n var self = this;\n\n return self.$resolve_subs(subs, \"inline\", nil, \"passthrough macro\")\n }, TMP_Substitutors_resolve_pass_subs_64.$$arity = 1);\n \n Opal.def(self, '$highlight_source', TMP_Substitutors_highlight_source_69 = function $$highlight_source(source, process_callouts, highlighter) {\n var $a, $b, $c, TMP_65, $d, TMP_67, self = this, $case = nil, highlighter_loaded = nil, lineno = nil, callout_on_last = nil, callout_marks = nil, last = nil, callout_rx = nil, linenums_mode = nil, highlight_lines = nil, result = nil, lexer = nil, opts = nil, $writer = nil, reached_code = nil;\n if (self.document == null) self.document = nil;\n if (self.passthroughs == null) self.passthroughs = nil;\n\n if (highlighter == null) {\n highlighter = nil;\n }\n \n $case = (highlighter = ($truthy($a = highlighter) ? $a : self.document.$attributes()['$[]'](\"source-highlighter\")));\n if (\"coderay\"['$===']($case)) {if ($truthy(($truthy($a = (highlighter_loaded = (($b = $$$('::', 'CodeRay', 'skip_raise')) ? 'constant' : nil))) ? $a : self.document.$attributes()['$[]'](\"coderay-unavailable\")))) {\n } else if ($truthy($$($nesting, 'Helpers').$require_library(\"coderay\", true, \"warn\")['$nil?']())) {\n self.document.$set_attr(\"coderay-unavailable\")\n } else {\n highlighter_loaded = true\n }}\n else if (\"pygments\"['$===']($case)) {if ($truthy(($truthy($a = (highlighter_loaded = (($c = $$$('::', 'Pygments', 'skip_raise')) ? 'constant' : nil))) ? $a : self.document.$attributes()['$[]'](\"pygments-unavailable\")))) {\n } else if ($truthy($$($nesting, 'Helpers').$require_library(\"pygments\", \"pygments.rb\", \"warn\")['$nil?']())) {\n self.document.$set_attr(\"pygments-unavailable\")\n } else {\n highlighter_loaded = true\n }}\n else {highlighter_loaded = false};\n if ($truthy(highlighter_loaded)) {\n } else {\n return self.$sub_source(source, process_callouts)\n };\n lineno = 0;\n callout_on_last = false;\n if ($truthy(process_callouts)) {\n \n callout_marks = $hash2([], {});\n last = -1;\n callout_rx = (function() {if ($truthy(self['$attr?'](\"line-comment\"))) {\n return new RegExp(\"\" + \"(?:\" + ($$$('::', 'Regexp').$escape(self.$attr(\"line-comment\"))) + \" )?\" + ($$($nesting, 'CalloutExtractRxt')))\n } else {\n return $$($nesting, 'CalloutExtractRx')\n }; return nil; })();\n source = $rb_times($send(source.$split($$($nesting, 'LF'), -1), 'map', [], (TMP_65 = function(line){var self = TMP_65.$$s || this, TMP_66;\nif (line == null) line = nil;\n \n lineno = $rb_plus(lineno, 1);\n return $send(line, 'gsub', [callout_rx], (TMP_66 = function(){var self = TMP_66.$$s || this, $d, m = nil, $writer = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n \n m = $gvars[\"~\"];\n if (m['$[]'](1)['$==']($$($nesting, 'RS'))) {\n return m['$[]'](0).$sub($$($nesting, 'RS'), \"\")\n } else {\n \n ($truthy($d = callout_marks['$[]'](lineno)) ? $d : (($writer = [lineno, []]), $send(callout_marks, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))['$<<'](m['$[]'](3));\n last = lineno;\n return nil;\n };}, TMP_66.$$s = self, TMP_66.$$arity = 0, TMP_66));}, TMP_65.$$s = self, TMP_65.$$arity = 1, TMP_65)), $$($nesting, 'LF'));\n callout_on_last = last['$=='](lineno);\n if ($truthy(callout_marks['$empty?']())) {\n callout_marks = nil};\n } else {\n callout_marks = nil\n };\n linenums_mode = nil;\n highlight_lines = nil;\n $case = highlighter;\n if (\"coderay\"['$===']($case)) {\n if ($truthy((linenums_mode = (function() {if ($truthy(self['$attr?'](\"linenums\", nil, false))) {\n return ($truthy($a = self.document.$attributes()['$[]'](\"coderay-linenums-mode\")) ? $a : \"table\").$to_sym()\n } else {\n return nil\n }; return nil; })()))) {\n if ($truthy(self['$attr?'](\"highlight\", nil, false))) {\n highlight_lines = self.$resolve_highlight_lines(self.$attr(\"highlight\", nil, false))}};\n result = $$$($$$('::', 'CodeRay'), 'Duo')['$[]'](self.$attr(\"language\", \"text\", false).$to_sym(), \"html\", $hash2([\"css\", \"line_numbers\", \"line_number_anchors\", \"highlight_lines\", \"bold_every\"], {\"css\": ($truthy($a = self.document.$attributes()['$[]'](\"coderay-css\")) ? $a : \"class\").$to_sym(), \"line_numbers\": linenums_mode, \"line_number_anchors\": false, \"highlight_lines\": highlight_lines, \"bold_every\": false})).$highlight(source);}\n else if (\"pygments\"['$===']($case)) {\n lexer = ($truthy($a = $$$($$$('::', 'Pygments'), 'Lexer').$find_by_alias(self.$attr(\"language\", \"text\", false))) ? $a : $$$($$$('::', 'Pygments'), 'Lexer').$find_by_mimetype(\"text/plain\"));\n opts = $hash2([\"cssclass\", \"classprefix\", \"nobackground\", \"stripnl\"], {\"cssclass\": \"pyhl\", \"classprefix\": \"tok-\", \"nobackground\": true, \"stripnl\": false});\n if (lexer.$name()['$=='](\"PHP\")) {\n \n $writer = [\"startinline\", self['$option?'](\"mixed\")['$!']()];\n $send(opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if (($truthy($a = self.document.$attributes()['$[]'](\"pygments-css\")) ? $a : \"class\")['$=='](\"class\")) {\n } else {\n \n \n $writer = [\"noclasses\", true];\n $send(opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"style\", ($truthy($a = self.document.$attributes()['$[]'](\"pygments-style\")) ? $a : $$$($$($nesting, 'Stylesheets'), 'DEFAULT_PYGMENTS_STYLE'))];\n $send(opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n if ($truthy(self['$attr?'](\"highlight\", nil, false))) {\n if ($truthy((highlight_lines = self.$resolve_highlight_lines(self.$attr(\"highlight\", nil, false)))['$empty?']())) {\n } else {\n \n $writer = [\"hl_lines\", $rb_times(highlight_lines, \" \")];\n $send(opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n }};\n if ($truthy(($truthy($a = self['$attr?'](\"linenums\", nil, false)) ? (($writer = [\"linenos\", ($truthy($d = self.document.$attributes()['$[]'](\"pygments-linenums-mode\")) ? $d : \"table\")]), $send(opts, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])['$=='](\"table\") : $a))) {\n \n linenums_mode = \"table\";\n result = lexer.$highlight(source, $hash2([\"options\"], {\"options\": opts})).$sub($$($nesting, 'PygmentsWrapperDivRx'), \"\\\\1\").$gsub($$($nesting, 'PygmentsWrapperPreRx'), \"\\\\1\");\n } else if ($truthy($$($nesting, 'PygmentsWrapperPreRx')['$=~']((result = lexer.$highlight(source, $hash2([\"options\"], {\"options\": opts})))))) {\n result = (($a = $gvars['~']) === nil ? nil : $a['$[]'](1))};};\n if ($truthy(self.passthroughs['$empty?']())) {\n } else {\n result = result.$gsub($$($nesting, 'HighlightedPassSlotRx'), \"\" + ($$($nesting, 'PASS_START')) + \"\\\\1\" + ($$($nesting, 'PASS_END')))\n };\n if ($truthy(($truthy($a = process_callouts) ? callout_marks : $a))) {\n \n lineno = 0;\n reached_code = linenums_mode['$!='](\"table\");\n return $rb_times($send(result.$split($$($nesting, 'LF'), -1), 'map', [], (TMP_67 = function(line){var self = TMP_67.$$s || this, $e, $f, TMP_68, conums = nil, tail = nil, pos = nil, conums_markup = nil;\n if (self.document == null) self.document = nil;\nif (line == null) line = nil;\n \n if ($truthy(reached_code)) {\n } else {\n \n if ($truthy(line['$include?'](\"<td class=\\\"code\\\">\"))) {\n } else {\n return line;\n };\n reached_code = true;\n };\n lineno = $rb_plus(lineno, 1);\n if ($truthy((conums = callout_marks.$delete(lineno)))) {\n \n tail = nil;\n if ($truthy(($truthy($e = ($truthy($f = callout_on_last) ? callout_marks['$empty?']() : $f)) ? linenums_mode['$=='](\"table\") : $e))) {\n if ($truthy((($e = highlighter['$=='](\"coderay\")) ? (pos = line.$index(\"</pre>\")) : highlighter['$=='](\"coderay\")))) {\n $e = [line.$slice(0, pos), line.$slice(pos, line.$length())], (line = $e[0]), (tail = $e[1]), $e\n } else if ($truthy((($e = highlighter['$=='](\"pygments\")) ? (pos = line['$start_with?'](\"</td>\")) : highlighter['$=='](\"pygments\")))) {\n $e = [\"\", line], (line = $e[0]), (tail = $e[1]), $e}};\n if (conums.$size()['$=='](1)) {\n return \"\" + (line) + ($$($nesting, 'Inline').$new(self, \"callout\", conums['$[]'](0), $hash2([\"id\"], {\"id\": self.document.$callouts().$read_next_id()})).$convert()) + (tail)\n } else {\n \n conums_markup = $rb_times($send(conums, 'map', [], (TMP_68 = function(conum){var self = TMP_68.$$s || this;\n if (self.document == null) self.document = nil;\nif (conum == null) conum = nil;\n return $$($nesting, 'Inline').$new(self, \"callout\", conum, $hash2([\"id\"], {\"id\": self.document.$callouts().$read_next_id()})).$convert()}, TMP_68.$$s = self, TMP_68.$$arity = 1, TMP_68)), \" \");\n return \"\" + (line) + (conums_markup) + (tail);\n };\n } else {\n return line\n };}, TMP_67.$$s = self, TMP_67.$$arity = 1, TMP_67)), $$($nesting, 'LF'));\n } else {\n return result\n };\n }, TMP_Substitutors_highlight_source_69.$$arity = -3);\n \n Opal.def(self, '$resolve_highlight_lines', TMP_Substitutors_resolve_highlight_lines_71 = function $$resolve_highlight_lines(spec) {\n var TMP_70, self = this, lines = nil;\n\n \n lines = [];\n $send((function() {if ($truthy(spec['$include?'](\" \"))) {\n \n return spec.$delete(\" \");\n } else {\n return spec\n }; return nil; })().$split($$($nesting, 'DataDelimiterRx')), 'map', [], (TMP_70 = function(entry){var self = TMP_70.$$s || this, $a, $b, negate = nil, s = nil, e = nil, line_nums = nil;\nif (entry == null) entry = nil;\n \n negate = false;\n if ($truthy(entry['$start_with?'](\"!\"))) {\n \n entry = entry['$[]']($range(1, -1, false));\n negate = true;};\n if ($truthy(entry['$include?'](\"-\"))) {\n \n $b = entry.$split(\"-\", 2), $a = Opal.to_ary($b), (s = ($a[0] == null ? nil : $a[0])), (e = ($a[1] == null ? nil : $a[1])), $b;\n line_nums = Opal.Range.$new(s.$to_i(), e.$to_i(), false).$to_a();\n if ($truthy(negate)) {\n return (lines = $rb_minus(lines, line_nums))\n } else {\n return lines.$concat(line_nums)\n };\n } else if ($truthy(negate)) {\n return lines.$delete(entry.$to_i())\n } else {\n return lines['$<<'](entry.$to_i())\n };}, TMP_70.$$s = self, TMP_70.$$arity = 1, TMP_70));\n return lines.$sort().$uniq();\n }, TMP_Substitutors_resolve_highlight_lines_71.$$arity = 1);\n \n Opal.def(self, '$sub_source', TMP_Substitutors_sub_source_72 = function $$sub_source(source, process_callouts) {\n var self = this;\n\n if ($truthy(process_callouts)) {\n return self.$sub_callouts(self.$sub_specialchars(source))\n } else {\n \n return self.$sub_specialchars(source);\n }\n }, TMP_Substitutors_sub_source_72.$$arity = 2);\n \n Opal.def(self, '$lock_in_subs', TMP_Substitutors_lock_in_subs_73 = function $$lock_in_subs() {\n var $a, $b, $c, $d, $e, self = this, default_subs = nil, $case = nil, custom_subs = nil, idx = nil, $writer = nil;\n if (self.default_subs == null) self.default_subs = nil;\n if (self.content_model == null) self.content_model = nil;\n if (self.context == null) self.context = nil;\n if (self.subs == null) self.subs = nil;\n if (self.attributes == null) self.attributes = nil;\n if (self.style == null) self.style = nil;\n if (self.document == null) self.document = nil;\n\n \n if ($truthy((default_subs = self.default_subs))) {\n } else {\n $case = self.content_model;\n if (\"simple\"['$===']($case)) {default_subs = $$($nesting, 'NORMAL_SUBS')}\n else if (\"verbatim\"['$===']($case)) {if ($truthy(($truthy($a = self.context['$=='](\"listing\")) ? $a : (($b = self.context['$=='](\"literal\")) ? self['$option?'](\"listparagraph\")['$!']() : self.context['$=='](\"literal\"))))) {\n default_subs = $$($nesting, 'VERBATIM_SUBS')\n } else if (self.context['$=='](\"verse\")) {\n default_subs = $$($nesting, 'NORMAL_SUBS')\n } else {\n default_subs = $$($nesting, 'BASIC_SUBS')\n }}\n else if (\"raw\"['$===']($case)) {default_subs = (function() {if (self.context['$=='](\"stem\")) {\n return $$($nesting, 'BASIC_SUBS')\n } else {\n return $$($nesting, 'NONE_SUBS')\n }; return nil; })()}\n else {return self.subs}\n };\n self.subs = (function() {if ($truthy((custom_subs = self.attributes['$[]'](\"subs\")))) {\n \n return self.$resolve_block_subs(custom_subs, default_subs, self.context);\n } else {\n return default_subs.$dup()\n }; return nil; })();\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = (($e = self.context['$=='](\"listing\")) ? self.style['$=='](\"source\") : self.context['$=='](\"listing\"))) ? self.attributes['$key?'](\"language\") : $d)) ? self.document['$basebackend?'](\"html\") : $c)) ? $$($nesting, 'SUB_HIGHLIGHT')['$include?'](self.document.$attributes()['$[]'](\"source-highlighter\")) : $b)) ? (idx = self.subs.$index(\"specialcharacters\")) : $a))) {\n \n $writer = [idx, \"highlight\"];\n $send(self.subs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return self.subs;\n }, TMP_Substitutors_lock_in_subs_73.$$arity = 0);\n })($nesting[0], $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/abstract_node\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $range = Opal.range;\n\n Opal.add_stubs(['$include', '$attr_reader', '$attr_accessor', '$==', '$document', '$to_s', '$key?', '$dup', '$[]', '$converter', '$raise', '$attributes', '$nil?', '$[]=', '$-', '$delete', '$update', '$nil_or_empty?', '$split', '$include?', '$empty?', '$*', '$apply_reftext_subs', '$attr?', '$extname', '$image_uri', '$attr', '$<', '$safe', '$uriish?', '$uri_encode_spaces', '$normalize_web_path', '$generate_data_uri_from_uri', '$generate_data_uri', '$normalize_system_path', '$readable?', '$warn', '$encode64', '$binread', '$require_library', '$!', '$open', '$content_type', '$read', '$base_dir', '$new', '$root?', '$join', '$system_path', '$web_path', '$===', '$!=', '$normalize_lines_from_string', '$open_uri', '$fetch', '$read_asset', '$gsub']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $AbstractNode(){};\n var self = $AbstractNode = $klass($base, $super, 'AbstractNode', $AbstractNode);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_AbstractNode_initialize_1, TMP_AbstractNode_parent$eq_2, TMP_AbstractNode_converter_3, TMP_AbstractNode_block$q_4, TMP_AbstractNode_inline$q_5, TMP_AbstractNode_attr_6, TMP_AbstractNode_attr$q_7, TMP_AbstractNode_set_attr_8, TMP_AbstractNode_remove_attr_9, TMP_AbstractNode_option$q_10, TMP_AbstractNode_set_option_11, TMP_AbstractNode_update_attributes_12, TMP_AbstractNode_role_13, TMP_AbstractNode_roles_14, TMP_AbstractNode_role$q_15, TMP_AbstractNode_has_role$q_16, TMP_AbstractNode_add_role_17, TMP_AbstractNode_remove_role_18, TMP_AbstractNode_reftext_19, TMP_AbstractNode_reftext$q_20, TMP_AbstractNode_icon_uri_21, TMP_AbstractNode_image_uri_22, TMP_AbstractNode_media_uri_23, TMP_AbstractNode_generate_data_uri_24, TMP_AbstractNode_generate_data_uri_from_uri_26, TMP_AbstractNode_normalize_asset_path_27, TMP_AbstractNode_normalize_system_path_28, TMP_AbstractNode_normalize_web_path_29, TMP_AbstractNode_read_asset_30, TMP_AbstractNode_read_contents_32, TMP_AbstractNode_uri_encode_spaces_33, TMP_AbstractNode_is_uri$q_34;\n\n def.document = def.attributes = def.parent = def.path_resolver = nil;\n \n self.$include($$($nesting, 'Substitutors'));\n self.$attr_reader(\"parent\");\n self.$attr_reader(\"document\");\n self.$attr_reader(\"context\");\n self.$attr_reader(\"node_name\");\n self.$attr_accessor(\"id\");\n self.$attr_reader(\"attributes\");\n \n Opal.def(self, '$initialize', TMP_AbstractNode_initialize_1 = function $$initialize(parent, context, opts) {\n var $a, self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if (context['$=='](\"document\")) {\n $a = [self, nil], (self.document = $a[0]), (self.parent = $a[1]), $a\n } else if ($truthy(parent)) {\n $a = [parent.$document(), parent], (self.document = $a[0]), (self.parent = $a[1]), $a\n } else {\n self.document = (self.parent = nil)\n };\n self.node_name = (self.context = context).$to_s();\n self.attributes = (function() {if ($truthy(opts['$key?'](\"attributes\"))) {\n return opts['$[]'](\"attributes\").$dup()\n } else {\n return $hash2([], {})\n }; return nil; })();\n return (self.passthroughs = $hash2([], {}));\n }, TMP_AbstractNode_initialize_1.$$arity = -3);\n \n Opal.def(self, '$parent=', TMP_AbstractNode_parent$eq_2 = function(parent) {\n var $a, self = this;\n\n \n $a = [parent, parent.$document()], (self.parent = $a[0]), (self.document = $a[1]), $a;\n return nil;\n }, TMP_AbstractNode_parent$eq_2.$$arity = 1);\n \n Opal.def(self, '$converter', TMP_AbstractNode_converter_3 = function $$converter() {\n var self = this;\n\n return self.document.$converter()\n }, TMP_AbstractNode_converter_3.$$arity = 0);\n \n Opal.def(self, '$block?', TMP_AbstractNode_block$q_4 = function() {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'))\n }, TMP_AbstractNode_block$q_4.$$arity = 0);\n \n Opal.def(self, '$inline?', TMP_AbstractNode_inline$q_5 = function() {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'))\n }, TMP_AbstractNode_inline$q_5.$$arity = 0);\n \n Opal.def(self, '$attr', TMP_AbstractNode_attr_6 = function $$attr(name, default_val, inherit) {\n var $a, $b, self = this;\n\n if (default_val == null) {\n default_val = nil;\n }\n if (inherit == null) {\n inherit = true;\n }\n \n name = name.$to_s();\n return ($truthy($a = self.attributes['$[]'](name)) ? $a : (function() {if ($truthy(($truthy($b = inherit) ? self.parent : $b))) {\n return ($truthy($b = self.document.$attributes()['$[]'](name)) ? $b : default_val)\n } else {\n return default_val\n }; return nil; })());\n }, TMP_AbstractNode_attr_6.$$arity = -2);\n \n Opal.def(self, '$attr?', TMP_AbstractNode_attr$q_7 = function(name, expect_val, inherit) {\n var $a, $b, $c, self = this;\n\n if (expect_val == null) {\n expect_val = nil;\n }\n if (inherit == null) {\n inherit = true;\n }\n \n name = name.$to_s();\n if ($truthy(expect_val['$nil?']())) {\n return ($truthy($a = self.attributes['$key?'](name)) ? $a : ($truthy($b = ($truthy($c = inherit) ? self.parent : $c)) ? self.document.$attributes()['$key?'](name) : $b))\n } else {\n return expect_val['$=='](($truthy($a = self.attributes['$[]'](name)) ? $a : (function() {if ($truthy(($truthy($b = inherit) ? self.parent : $b))) {\n return self.document.$attributes()['$[]'](name)\n } else {\n return nil\n }; return nil; })()))\n };\n }, TMP_AbstractNode_attr$q_7.$$arity = -2);\n \n Opal.def(self, '$set_attr', TMP_AbstractNode_set_attr_8 = function $$set_attr(name, value, overwrite) {\n var $a, self = this, $writer = nil;\n\n if (value == null) {\n value = \"\";\n }\n if (overwrite == null) {\n overwrite = true;\n }\n if ($truthy((($a = overwrite['$=='](false)) ? self.attributes['$key?'](name) : overwrite['$=='](false)))) {\n return false\n } else {\n \n \n $writer = [name, value];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return true;\n }\n }, TMP_AbstractNode_set_attr_8.$$arity = -2);\n \n Opal.def(self, '$remove_attr', TMP_AbstractNode_remove_attr_9 = function $$remove_attr(name) {\n var self = this;\n\n return self.attributes.$delete(name)\n }, TMP_AbstractNode_remove_attr_9.$$arity = 1);\n \n Opal.def(self, '$option?', TMP_AbstractNode_option$q_10 = function(name) {\n var self = this;\n\n return self.attributes['$key?'](\"\" + (name) + \"-option\")\n }, TMP_AbstractNode_option$q_10.$$arity = 1);\n \n Opal.def(self, '$set_option', TMP_AbstractNode_set_option_11 = function $$set_option(name) {\n var self = this, $writer = nil;\n\n \n if ($truthy(self.attributes['$key?'](\"options\"))) {\n \n $writer = [\"options\", \"\" + (self.attributes['$[]'](\"options\")) + \",\" + (name)];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [\"options\", name];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n \n $writer = [\"\" + (name) + \"-option\", \"\"];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n }, TMP_AbstractNode_set_option_11.$$arity = 1);\n \n Opal.def(self, '$update_attributes', TMP_AbstractNode_update_attributes_12 = function $$update_attributes(attributes) {\n var self = this;\n\n \n self.attributes.$update(attributes);\n return nil;\n }, TMP_AbstractNode_update_attributes_12.$$arity = 1);\n \n Opal.def(self, '$role', TMP_AbstractNode_role_13 = function $$role() {\n var $a, self = this;\n\n return ($truthy($a = self.attributes['$[]'](\"role\")) ? $a : self.document.$attributes()['$[]'](\"role\"))\n }, TMP_AbstractNode_role_13.$$arity = 0);\n \n Opal.def(self, '$roles', TMP_AbstractNode_roles_14 = function $$roles() {\n var $a, self = this, val = nil;\n\n if ($truthy((val = ($truthy($a = self.attributes['$[]'](\"role\")) ? $a : self.document.$attributes()['$[]'](\"role\")))['$nil_or_empty?']())) {\n return []\n } else {\n return val.$split()\n }\n }, TMP_AbstractNode_roles_14.$$arity = 0);\n \n Opal.def(self, '$role?', TMP_AbstractNode_role$q_15 = function(expect_val) {\n var $a, self = this;\n\n if (expect_val == null) {\n expect_val = nil;\n }\n if ($truthy(expect_val)) {\n return expect_val['$=='](($truthy($a = self.attributes['$[]'](\"role\")) ? $a : self.document.$attributes()['$[]'](\"role\")))\n } else {\n return ($truthy($a = self.attributes['$key?'](\"role\")) ? $a : self.document.$attributes()['$key?'](\"role\"))\n }\n }, TMP_AbstractNode_role$q_15.$$arity = -1);\n \n Opal.def(self, '$has_role?', TMP_AbstractNode_has_role$q_16 = function(name) {\n var $a, self = this, val = nil;\n\n if ($truthy((val = ($truthy($a = self.attributes['$[]'](\"role\")) ? $a : self.document.$attributes()['$[]'](\"role\")))['$nil_or_empty?']())) {\n return false\n } else {\n return (((\"\" + \" \") + (val)) + \" \")['$include?'](\"\" + \" \" + (name) + \" \")\n }\n }, TMP_AbstractNode_has_role$q_16.$$arity = 1);\n \n Opal.def(self, '$add_role', TMP_AbstractNode_add_role_17 = function $$add_role(name) {\n var self = this, val = nil, $writer = nil;\n\n if ($truthy((val = self.attributes['$[]'](\"role\"))['$nil_or_empty?']())) {\n \n \n $writer = [\"role\", name];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return true;\n } else if ($truthy((((\"\" + \" \") + (val)) + \" \")['$include?'](\"\" + \" \" + (name) + \" \"))) {\n return false\n } else {\n \n \n $writer = [\"role\", \"\" + (val) + \" \" + (name)];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return true;\n }\n }, TMP_AbstractNode_add_role_17.$$arity = 1);\n \n Opal.def(self, '$remove_role', TMP_AbstractNode_remove_role_18 = function $$remove_role(name) {\n var self = this, val = nil, $writer = nil;\n\n if ($truthy((val = self.attributes['$[]'](\"role\"))['$nil_or_empty?']())) {\n return false\n } else if ($truthy((val = val.$split()).$delete(name))) {\n \n if ($truthy(val['$empty?']())) {\n self.attributes.$delete(\"role\")\n } else {\n \n $writer = [\"role\", $rb_times(val, \" \")];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n return true;\n } else {\n return false\n }\n }, TMP_AbstractNode_remove_role_18.$$arity = 1);\n \n Opal.def(self, '$reftext', TMP_AbstractNode_reftext_19 = function $$reftext() {\n var self = this, val = nil;\n\n if ($truthy((val = self.attributes['$[]'](\"reftext\")))) {\n \n return self.$apply_reftext_subs(val);\n } else {\n return nil\n }\n }, TMP_AbstractNode_reftext_19.$$arity = 0);\n \n Opal.def(self, '$reftext?', TMP_AbstractNode_reftext$q_20 = function() {\n var self = this;\n\n return self.attributes['$key?'](\"reftext\")\n }, TMP_AbstractNode_reftext$q_20.$$arity = 0);\n \n Opal.def(self, '$icon_uri', TMP_AbstractNode_icon_uri_21 = function $$icon_uri(name) {\n var self = this, uri = nil;\n\n if ($truthy(self['$attr?'](\"icon\"))) {\n if ($truthy($$$('::', 'File').$extname((uri = self.$image_uri(self.$attr(\"icon\"), \"iconsdir\")))['$empty?']())) {\n return \"\" + (uri) + \".\" + (self.document.$attr(\"icontype\", \"png\"))\n } else {\n return uri\n }\n } else {\n return self.$image_uri(\"\" + (name) + \".\" + (self.document.$attr(\"icontype\", \"png\")), \"iconsdir\")\n }\n }, TMP_AbstractNode_icon_uri_21.$$arity = 1);\n \n Opal.def(self, '$image_uri', TMP_AbstractNode_image_uri_22 = function $$image_uri(target_image, asset_dir_key) {\n var $a, $b, $c, $d, self = this, doc = nil, images_base = nil;\n\n if (asset_dir_key == null) {\n asset_dir_key = \"imagesdir\";\n }\n if ($truthy(($truthy($a = $rb_lt((doc = self.document).$safe(), $$$($$($nesting, 'SafeMode'), 'SECURE'))) ? doc['$attr?'](\"data-uri\") : $a))) {\n if ($truthy(($truthy($a = ($truthy($b = $$($nesting, 'Helpers')['$uriish?'](target_image)) ? (target_image = self.$uri_encode_spaces(target_image)) : $b)) ? $a : ($truthy($b = ($truthy($c = ($truthy($d = asset_dir_key) ? (images_base = doc.$attr(asset_dir_key)) : $d)) ? $$($nesting, 'Helpers')['$uriish?'](images_base) : $c)) ? (target_image = self.$normalize_web_path(target_image, images_base, false)) : $b)))) {\n if ($truthy(doc['$attr?'](\"allow-uri-read\"))) {\n return self.$generate_data_uri_from_uri(target_image, doc['$attr?'](\"cache-uri\"))\n } else {\n return target_image\n }\n } else {\n return self.$generate_data_uri(target_image, asset_dir_key)\n }\n } else {\n return self.$normalize_web_path(target_image, (function() {if ($truthy(asset_dir_key)) {\n \n return doc.$attr(asset_dir_key);\n } else {\n return nil\n }; return nil; })())\n }\n }, TMP_AbstractNode_image_uri_22.$$arity = -2);\n \n Opal.def(self, '$media_uri', TMP_AbstractNode_media_uri_23 = function $$media_uri(target, asset_dir_key) {\n var self = this;\n\n if (asset_dir_key == null) {\n asset_dir_key = \"imagesdir\";\n }\n return self.$normalize_web_path(target, (function() {if ($truthy(asset_dir_key)) {\n return self.document.$attr(asset_dir_key)\n } else {\n return nil\n }; return nil; })())\n }, TMP_AbstractNode_media_uri_23.$$arity = -2);\n \n Opal.def(self, '$generate_data_uri', TMP_AbstractNode_generate_data_uri_24 = function $$generate_data_uri(target_image, asset_dir_key) {\n var self = this, ext = nil, mimetype = nil, image_path = nil;\n\n if (asset_dir_key == null) {\n asset_dir_key = nil;\n }\n \n ext = $$$('::', 'File').$extname(target_image);\n mimetype = (function() {if (ext['$=='](\".svg\")) {\n return \"image/svg+xml\"\n } else {\n return \"\" + \"image/\" + (ext['$[]']($range(1, -1, false)))\n }; return nil; })();\n if ($truthy(asset_dir_key)) {\n image_path = self.$normalize_system_path(target_image, self.document.$attr(asset_dir_key), nil, $hash2([\"target_name\"], {\"target_name\": \"image\"}))\n } else {\n image_path = self.$normalize_system_path(target_image)\n };\n if ($truthy($$$('::', 'File')['$readable?'](image_path))) {\n } else {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: image to embed not found or not readable: \" + (image_path));\n return \"\" + \"data:\" + (mimetype) + \";base64,\";\n };\n return \"\" + \"data:\" + (mimetype) + \";base64,\" + ($$$('::', 'Base64').$encode64($$$('::', 'IO').$binread(image_path)).$delete($$($nesting, 'LF')));\n }, TMP_AbstractNode_generate_data_uri_24.$$arity = -2);\n \n Opal.def(self, '$generate_data_uri_from_uri', TMP_AbstractNode_generate_data_uri_from_uri_26 = function $$generate_data_uri_from_uri(image_uri, cache_uri) {\n var TMP_25, self = this, mimetype = nil, bindata = nil;\n\n if (cache_uri == null) {\n cache_uri = false;\n }\n \n if ($truthy(cache_uri)) {\n $$($nesting, 'Helpers').$require_library(\"open-uri/cached\", \"open-uri-cached\")\n } else if ($truthy($$$('::', 'RUBY_ENGINE_OPAL')['$!']())) {\n $$$('::', 'OpenURI')};\n \n try {\n \n mimetype = nil;\n bindata = $send(self, 'open', [image_uri, \"rb\"], (TMP_25 = function(fd){var self = TMP_25.$$s || this;\nif (fd == null) fd = nil;\n \n mimetype = fd.$content_type();\n return fd.$read();}, TMP_25.$$s = self, TMP_25.$$arity = 1, TMP_25));\n return \"\" + \"data:\" + (mimetype) + \";base64,\" + ($$$('::', 'Base64').$encode64(bindata).$delete($$($nesting, 'LF')));\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: could not retrieve image data from URI: \" + (image_uri));\n return image_uri;\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };;\n }, TMP_AbstractNode_generate_data_uri_from_uri_26.$$arity = -2);\n \n Opal.def(self, '$normalize_asset_path', TMP_AbstractNode_normalize_asset_path_27 = function $$normalize_asset_path(asset_ref, asset_name, autocorrect) {\n var self = this;\n\n if (asset_name == null) {\n asset_name = \"path\";\n }\n if (autocorrect == null) {\n autocorrect = true;\n }\n return self.$normalize_system_path(asset_ref, self.document.$base_dir(), nil, $hash2([\"target_name\", \"recover\"], {\"target_name\": asset_name, \"recover\": autocorrect}))\n }, TMP_AbstractNode_normalize_asset_path_27.$$arity = -2);\n \n Opal.def(self, '$normalize_system_path', TMP_AbstractNode_normalize_system_path_28 = function $$normalize_system_path(target, start, jail, opts) {\n var $a, self = this, path_resolver = nil, doc = nil;\n\n if (start == null) {\n start = nil;\n }\n if (jail == null) {\n jail = nil;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n path_resolver = (self.path_resolver = ($truthy($a = self.path_resolver) ? $a : $$($nesting, 'PathResolver').$new()));\n if ($truthy($rb_lt((doc = self.document).$safe(), $$$($$($nesting, 'SafeMode'), 'SAFE')))) {\n if ($truthy(start)) {\n if ($truthy(path_resolver['$root?'](start))) {\n } else {\n start = $$$('::', 'File').$join(doc.$base_dir(), start)\n }\n } else {\n start = doc.$base_dir()\n }\n } else {\n \n if ($truthy(start)) {\n } else {\n start = doc.$base_dir()\n };\n if ($truthy(jail)) {\n } else {\n jail = doc.$base_dir()\n };\n };\n return path_resolver.$system_path(target, start, jail, opts);\n }, TMP_AbstractNode_normalize_system_path_28.$$arity = -2);\n \n Opal.def(self, '$normalize_web_path', TMP_AbstractNode_normalize_web_path_29 = function $$normalize_web_path(target, start, preserve_uri_target) {\n var $a, self = this;\n\n if (start == null) {\n start = nil;\n }\n if (preserve_uri_target == null) {\n preserve_uri_target = true;\n }\n if ($truthy(($truthy($a = preserve_uri_target) ? $$($nesting, 'Helpers')['$uriish?'](target) : $a))) {\n return self.$uri_encode_spaces(target)\n } else {\n return (self.path_resolver = ($truthy($a = self.path_resolver) ? $a : $$($nesting, 'PathResolver').$new())).$web_path(target, start)\n }\n }, TMP_AbstractNode_normalize_web_path_29.$$arity = -2);\n \n Opal.def(self, '$read_asset', TMP_AbstractNode_read_asset_30 = function $$read_asset(path, opts) {\n var $a, self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy($$$('::', 'Hash')['$==='](opts))) {\n } else {\n opts = $hash2([\"warn_on_failure\"], {\"warn_on_failure\": opts['$!='](false)})\n };\n if ($truthy($$$('::', 'File')['$readable?'](path))) {\n if ($truthy(opts['$[]'](\"normalize\"))) {\n return $rb_times($$($nesting, 'Helpers').$normalize_lines_from_string($$$('::', 'IO').$read(path)), $$($nesting, 'LF'))\n } else {\n return $$$('::', 'IO').$read(path)\n }\n } else if ($truthy(opts['$[]'](\"warn_on_failure\"))) {\n return self.$warn(\"\" + \"asciidoctor: WARNING: \" + (($truthy($a = self.$attr(\"docfile\")) ? $a : \"<stdin>\")) + \": \" + (($truthy($a = opts['$[]'](\"label\")) ? $a : \"file\")) + \" does not exist or cannot be read: \" + (path))\n } else {\n return nil\n };\n }, TMP_AbstractNode_read_asset_30.$$arity = -2);\n \n Opal.def(self, '$read_contents', TMP_AbstractNode_read_contents_32 = function $$read_contents(target, opts) {\n var $a, $b, $c, TMP_31, self = this, doc = nil, start = nil, data = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n doc = self.document;\n if ($truthy(($truthy($a = $$($nesting, 'Helpers')['$uriish?'](target)) ? $a : ($truthy($b = ($truthy($c = (start = opts['$[]'](\"start\"))) ? $$($nesting, 'Helpers')['$uriish?'](start) : $c)) ? (target = (self.path_resolver = ($truthy($c = self.path_resolver) ? $c : $$($nesting, 'PathResolver').$new())).$web_path(target, start)) : $b)))) {\n if ($truthy(doc['$attr?'](\"allow-uri-read\"))) {\n \n if ($truthy(doc['$attr?'](\"cache-uri\"))) {\n $$($nesting, 'Helpers').$require_library(\"open-uri/cached\", \"open-uri-cached\")};\n \n try {\n \n data = $send($$$('::', 'OpenURI'), 'open_uri', [target], (TMP_31 = function(fd){var self = TMP_31.$$s || this;\nif (fd == null) fd = nil;\n return fd.$read()}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31));\n if ($truthy(opts['$[]'](\"normalize\"))) {\n data = $rb_times($$($nesting, 'Helpers').$normalize_lines_from_string(data), $$($nesting, 'LF'))};\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n \n if ($truthy(opts.$fetch(\"warn_on_failure\", true))) {\n self.$warn(\"\" + \"asciidoctor: WARNING: could not retrieve contents of \" + (($truthy($a = opts['$[]'](\"label\")) ? $a : \"asset\")) + \" at URI: \" + (target))};\n data = nil;\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };;\n } else {\n \n if ($truthy(opts.$fetch(\"warn_on_failure\", true))) {\n self.$warn(\"\" + \"asciidoctor: WARNING: cannot retrieve contents of \" + (($truthy($a = opts['$[]'](\"label\")) ? $a : \"asset\")) + \" at URI: \" + (target) + \" (allow-uri-read attribute not enabled)\")};\n data = nil;\n }\n } else {\n \n target = self.$normalize_system_path(target, opts['$[]'](\"start\"), nil, $hash2([\"target_name\"], {\"target_name\": ($truthy($a = opts['$[]'](\"label\")) ? $a : \"asset\")}));\n data = self.$read_asset(target, $hash2([\"normalize\", \"warn_on_failure\", \"label\"], {\"normalize\": opts['$[]'](\"normalize\"), \"warn_on_failure\": opts.$fetch(\"warn_on_failure\", true), \"label\": opts['$[]'](\"label\")}));\n };\n return data;\n }, TMP_AbstractNode_read_contents_32.$$arity = -2);\n \n Opal.def(self, '$uri_encode_spaces', TMP_AbstractNode_uri_encode_spaces_33 = function $$uri_encode_spaces(str) {\n var self = this;\n\n if ($truthy(str['$include?'](\" \"))) {\n \n return str.$gsub(\" \", \"%20\");\n } else {\n return str\n }\n }, TMP_AbstractNode_uri_encode_spaces_33.$$arity = 1);\n return (Opal.def(self, '$is_uri?', TMP_AbstractNode_is_uri$q_34 = function(str) {\n var self = this;\n\n return $$($nesting, 'Helpers')['$uriish?'](str)\n }, TMP_AbstractNode_is_uri$q_34.$$arity = 1), nil) && 'is_uri?';\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/abstract_block\"] = function(Opal) {\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$attr_accessor', '$attr_reader', '$attr_writer', '$==', '$!=', '$level', '$to_s', '$playback_attributes', '$convert', '$converter', '$*', '$map', '$file', '$lineno', '$include?', '$apply_title_subs', '$[]', '$title', '$sub_specialchars', '$match?', '$sub_replacements', '$reftext', '$!', '$empty?', '$===', '$sprintf', '$sub_quotes', '$compat_mode', '$attributes', '$chomp', '$<<', '$select', '$context', '$>', '$has_role?', '$header?', '$concat', '$find_by', '$to_proc', '$each', '$flatten', '$blocks', '$parent', '$+', '$find_index', '$next_adjacent_block', '$delete', '$increment_and_store_counter', '$index=', '$-', '$numbered', '$sectname', '$counter', '$number=', '$number', '$caption=', '$enumerate_section', '$reindex_sections']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $AbstractBlock(){};\n var self = $AbstractBlock = $klass($base, $super, 'AbstractBlock', $AbstractBlock);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_AbstractBlock_initialize_1, TMP_AbstractBlock_block$q_2, TMP_AbstractBlock_inline$q_3, TMP_AbstractBlock_context$eq_4, TMP_AbstractBlock_convert_5, TMP_AbstractBlock_content_7, TMP_AbstractBlock_file_8, TMP_AbstractBlock_lineno_9, TMP_AbstractBlock_sub$q_10, TMP_AbstractBlock_title$q_11, TMP_AbstractBlock_title_12, TMP_AbstractBlock_title$eq_13, TMP_AbstractBlock_caption_14, TMP_AbstractBlock_captioned_title_15, TMP_AbstractBlock_alt_16, TMP_AbstractBlock_xreftext_17, TMP_AbstractBlock_blocks$q_18, TMP_AbstractBlock_$lt$lt_19, TMP_AbstractBlock_sections_21, TMP_AbstractBlock_sections$q_22, TMP_AbstractBlock_find_by_23, TMP_AbstractBlock_next_adjacent_block_26, TMP_AbstractBlock_remove_sub_27, TMP_AbstractBlock_assign_caption_28, TMP_AbstractBlock_enumerate_section_29, TMP_AbstractBlock_list_marker_keyword_30, TMP_AbstractBlock_reindex_sections_32;\n\n def.document = def.attributes = def.blocks = def.source_location = def.subs = def.title = def.title_converted = def.converted_title = def.context = def.caption = def.number = def.next_section_index = def.style = def.id = def.header = def.next_section_number = nil;\n \n self.$attr_accessor(\"content_model\");\n self.$attr_reader(\"subs\");\n self.$attr_reader(\"blocks\");\n self.$attr_accessor(\"level\");\n self.$attr_accessor(\"style\");\n self.$attr_writer(\"caption\");\n self.$attr_accessor(\"number\");\n self.$attr_accessor(\"source_location\");\n \n Opal.def(self, '$initialize', TMP_AbstractBlock_initialize_1 = function $$initialize(parent, context, opts) {\n var $a, self = this, $iter = TMP_AbstractBlock_initialize_1.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n if ($iter) TMP_AbstractBlock_initialize_1.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_AbstractBlock_initialize_1, false), $zuper, $iter);\n self.content_model = \"compound\";\n self.blocks = [];\n self.subs = [];\n self.id = (self.title = (self.title_converted = (self.caption = (self.number = (self.style = (self.default_subs = (self.source_location = nil)))))));\n if (context['$=='](\"document\")) {\n self.level = 0\n } else if ($truthy(($truthy($a = parent) ? context['$!='](\"section\") : $a))) {\n self.level = parent.$level()\n } else {\n self.level = nil\n };\n self.next_section_index = 0;\n return (self.next_section_number = 1);\n }, TMP_AbstractBlock_initialize_1.$$arity = -3);\n \n Opal.def(self, '$block?', TMP_AbstractBlock_block$q_2 = function() {\n var self = this;\n\n return true\n }, TMP_AbstractBlock_block$q_2.$$arity = 0);\n \n Opal.def(self, '$inline?', TMP_AbstractBlock_inline$q_3 = function() {\n var self = this;\n\n return false\n }, TMP_AbstractBlock_inline$q_3.$$arity = 0);\n \n Opal.def(self, '$context=', TMP_AbstractBlock_context$eq_4 = function(context) {\n var self = this;\n\n \n self.context = context;\n return (self.node_name = context.$to_s());\n }, TMP_AbstractBlock_context$eq_4.$$arity = 1);\n \n Opal.def(self, '$convert', TMP_AbstractBlock_convert_5 = function $$convert() {\n var self = this;\n\n \n self.document.$playback_attributes(self.attributes);\n return self.$converter().$convert(self);\n }, TMP_AbstractBlock_convert_5.$$arity = 0);\n Opal.alias(self, \"render\", \"convert\");\n \n Opal.def(self, '$content', TMP_AbstractBlock_content_7 = function $$content() {\n var TMP_6, self = this;\n\n return $rb_times($send(self.blocks, 'map', [], (TMP_6 = function(b){var self = TMP_6.$$s || this;\nif (b == null) b = nil;\n return b.$convert()}, TMP_6.$$s = self, TMP_6.$$arity = 1, TMP_6)), $$($nesting, 'LF'))\n }, TMP_AbstractBlock_content_7.$$arity = 0);\n \n Opal.def(self, '$file', TMP_AbstractBlock_file_8 = function $$file() {\n var self = this;\n\n if ($truthy(self.source_location)) {\n return self.source_location.$file()\n } else {\n return nil\n }\n }, TMP_AbstractBlock_file_8.$$arity = 0);\n \n Opal.def(self, '$lineno', TMP_AbstractBlock_lineno_9 = function $$lineno() {\n var self = this;\n\n if ($truthy(self.source_location)) {\n return self.source_location.$lineno()\n } else {\n return nil\n }\n }, TMP_AbstractBlock_lineno_9.$$arity = 0);\n \n Opal.def(self, '$sub?', TMP_AbstractBlock_sub$q_10 = function(name) {\n var self = this;\n\n return self.subs['$include?'](name)\n }, TMP_AbstractBlock_sub$q_10.$$arity = 1);\n \n Opal.def(self, '$title?', TMP_AbstractBlock_title$q_11 = function() {\n var self = this;\n\n if ($truthy(self.title)) {\n return true\n } else {\n return false\n }\n }, TMP_AbstractBlock_title$q_11.$$arity = 0);\n \n Opal.def(self, '$title', TMP_AbstractBlock_title_12 = function $$title() {\n var $a, $b, self = this;\n\n if ($truthy(self.title_converted)) {\n return self.converted_title\n } else {\n \n return (self.converted_title = ($truthy($a = ($truthy($b = (self.title_converted = true)) ? self.title : $b)) ? self.$apply_title_subs(self.title) : $a));\n }\n }, TMP_AbstractBlock_title_12.$$arity = 0);\n \n Opal.def(self, '$title=', TMP_AbstractBlock_title$eq_13 = function(val) {\n var $a, self = this;\n\n return $a = [val, nil], (self.title = $a[0]), (self.title_converted = $a[1]), $a\n }, TMP_AbstractBlock_title$eq_13.$$arity = 1);\n \n Opal.def(self, '$caption', TMP_AbstractBlock_caption_14 = function $$caption() {\n var self = this;\n\n if (self.context['$=='](\"admonition\")) {\n return self.attributes['$[]'](\"textlabel\")\n } else {\n return self.caption\n }\n }, TMP_AbstractBlock_caption_14.$$arity = 0);\n \n Opal.def(self, '$captioned_title', TMP_AbstractBlock_captioned_title_15 = function $$captioned_title() {\n var self = this;\n\n return \"\" + (self.caption) + (self.$title())\n }, TMP_AbstractBlock_captioned_title_15.$$arity = 0);\n \n Opal.def(self, '$alt', TMP_AbstractBlock_alt_16 = function $$alt() {\n var self = this, text = nil;\n\n if ($truthy((text = self.attributes['$[]'](\"alt\")))) {\n if (text['$=='](self.attributes['$[]'](\"default-alt\"))) {\n return self.$sub_specialchars(text)\n } else {\n \n text = self.$sub_specialchars(text);\n if ($truthy($$($nesting, 'ReplaceableTextRx')['$match?'](text))) {\n \n return self.$sub_replacements(text);\n } else {\n return text\n };\n }\n } else {\n return nil\n }\n }, TMP_AbstractBlock_alt_16.$$arity = 0);\n \n Opal.def(self, '$xreftext', TMP_AbstractBlock_xreftext_17 = function $$xreftext(xrefstyle) {\n var $a, $b, self = this, val = nil, $case = nil, quoted_title = nil, prefix = nil;\n\n if (xrefstyle == null) {\n xrefstyle = nil;\n }\n if ($truthy(($truthy($a = (val = self.$reftext())) ? val['$empty?']()['$!']() : $a))) {\n return val\n } else if ($truthy(($truthy($a = ($truthy($b = xrefstyle) ? self.title : $b)) ? self.caption : $a))) {\n return (function() {$case = xrefstyle;\n if (\"full\"['$===']($case)) {\n quoted_title = self.$sprintf(self.$sub_quotes((function() {if ($truthy(self.document.$compat_mode())) {\n return \"``%s''\"\n } else {\n return \"\\\"`%s`\\\"\"\n }; return nil; })()), self.$title());\n if ($truthy(($truthy($a = self.number) ? (prefix = self.document.$attributes()['$[]']((function() {if (self.context['$=='](\"image\")) {\n return \"figure-caption\"\n } else {\n return \"\" + (self.context) + \"-caption\"\n }; return nil; })())) : $a))) {\n return \"\" + (prefix) + \" \" + (self.number) + \", \" + (quoted_title)\n } else {\n return \"\" + (self.caption.$chomp(\". \")) + \", \" + (quoted_title)\n };}\n else if (\"short\"['$===']($case)) {if ($truthy(($truthy($a = self.number) ? (prefix = self.document.$attributes()['$[]']((function() {if (self.context['$=='](\"image\")) {\n return \"figure-caption\"\n } else {\n return \"\" + (self.context) + \"-caption\"\n }; return nil; })())) : $a))) {\n return \"\" + (prefix) + \" \" + (self.number)\n } else {\n return self.caption.$chomp(\". \")\n }}\n else {return self.$title()}})()\n } else {\n return self.$title()\n }\n }, TMP_AbstractBlock_xreftext_17.$$arity = -1);\n \n Opal.def(self, '$blocks?', TMP_AbstractBlock_blocks$q_18 = function() {\n var self = this;\n\n return self.blocks['$empty?']()['$!']()\n }, TMP_AbstractBlock_blocks$q_18.$$arity = 0);\n \n Opal.def(self, '$<<', TMP_AbstractBlock_$lt$lt_19 = function(block) {\n var self = this;\n\n \n self.blocks['$<<'](block);\n return self;\n }, TMP_AbstractBlock_$lt$lt_19.$$arity = 1);\n Opal.alias(self, \"append\", \"<<\");\n \n Opal.def(self, '$sections', TMP_AbstractBlock_sections_21 = function $$sections() {\n var TMP_20, self = this;\n\n return $send(self.blocks, 'select', [], (TMP_20 = function(block){var self = TMP_20.$$s || this;\nif (block == null) block = nil;\n return block.$context()['$=='](\"section\")}, TMP_20.$$s = self, TMP_20.$$arity = 1, TMP_20))\n }, TMP_AbstractBlock_sections_21.$$arity = 0);\n \n Opal.def(self, '$sections?', TMP_AbstractBlock_sections$q_22 = function() {\n var self = this;\n\n return $rb_gt(self.next_section_index, 0)\n }, TMP_AbstractBlock_sections$q_22.$$arity = 0);\n \n Opal.def(self, '$find_by', TMP_AbstractBlock_find_by_23 = function $$find_by(selector) {\n var $a, $b, $c, $d, TMP_24, TMP_25, self = this, $iter = TMP_AbstractBlock_find_by_23.$$p, block = $iter || nil, result = nil, any_context = nil, context_selector = nil, style_selector = nil, role_selector = nil, id_selector = nil;\n\n if (selector == null) {\n selector = $hash2([], {});\n }\n if ($iter) TMP_AbstractBlock_find_by_23.$$p = null;\n \n result = [];\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = (any_context = (context_selector = selector['$[]'](\"context\"))['$!']())) ? $d : context_selector['$=='](self.context))) ? ($truthy($d = (style_selector = selector['$[]'](\"style\"))['$!']()) ? $d : style_selector['$=='](self.style)) : $c)) ? ($truthy($c = (role_selector = selector['$[]'](\"role\"))['$!']()) ? $c : self['$has_role?'](role_selector)) : $b)) ? ($truthy($b = (id_selector = selector['$[]'](\"id\"))['$!']()) ? $b : id_selector['$=='](self.id)) : $a))) {\n if ($truthy(id_selector)) {\n if ((block !== nil)) {\n return (function() {if ($truthy(Opal.yield1(block, self))) {\n return [self]\n } else {\n return result\n }; return nil; })()\n } else {\n return [self]\n }\n } else if ((block !== nil)) {\n if ($truthy(Opal.yield1(block, self))) {\n result['$<<'](self)}\n } else {\n result['$<<'](self)\n }};\n if ($truthy(($truthy($a = (($b = self.context['$=='](\"document\")) ? ($truthy($c = any_context) ? $c : context_selector['$=='](\"section\")) : self.context['$=='](\"document\"))) ? self['$header?']() : $a))) {\n result.$concat($send(self.header, 'find_by', [selector], block.$to_proc()))};\n if (context_selector['$=='](\"document\")) {\n } else if (self.context['$=='](\"dlist\")) {\n if ($truthy(($truthy($a = any_context) ? $a : context_selector['$!='](\"section\")))) {\n $send(self.blocks.$flatten(), 'each', [], (TMP_24 = function(li){var self = TMP_24.$$s || this;\nif (li == null) li = nil;\n if ($truthy(li)) {\n return result.$concat($send(li, 'find_by', [selector], block.$to_proc()))\n } else {\n return nil\n }}, TMP_24.$$s = self, TMP_24.$$arity = 1, TMP_24))}\n } else if ($truthy($send(self.blocks, 'each', [], (TMP_25 = function(b){var self = TMP_25.$$s || this, $e;\nif (b == null) b = nil;\n \n if ($truthy((($e = context_selector['$=='](\"section\")) ? b.$context()['$!='](\"section\") : context_selector['$=='](\"section\")))) {\n return nil;};\n return result.$concat($send(b, 'find_by', [selector], block.$to_proc()));}, TMP_25.$$s = self, TMP_25.$$arity = 1, TMP_25)))) {};\n return result;\n }, TMP_AbstractBlock_find_by_23.$$arity = -1);\n Opal.alias(self, \"query\", \"find_by\");\n \n Opal.def(self, '$next_adjacent_block', TMP_AbstractBlock_next_adjacent_block_26 = function $$next_adjacent_block() {\n var self = this, sib = nil, p = nil;\n\n if (self.context['$=='](\"document\")) {\n return nil\n } else if ($truthy((sib = (p = self.$parent()).$blocks()['$[]']($rb_plus(p.$blocks().$find_index(self), 1))))) {\n return sib\n } else {\n return p.$next_adjacent_block()\n }\n }, TMP_AbstractBlock_next_adjacent_block_26.$$arity = 0);\n \n Opal.def(self, '$remove_sub', TMP_AbstractBlock_remove_sub_27 = function $$remove_sub(sub) {\n var self = this;\n\n \n self.subs.$delete(sub);\n return nil;\n }, TMP_AbstractBlock_remove_sub_27.$$arity = 1);\n \n Opal.def(self, '$assign_caption', TMP_AbstractBlock_assign_caption_28 = function $$assign_caption(value, key) {\n var $a, $b, self = this, prefix = nil;\n\n if (value == null) {\n value = nil;\n }\n if (key == null) {\n key = nil;\n }\n if ($truthy(($truthy($a = ($truthy($b = self.caption) ? $b : self.title['$!']())) ? $a : (self.caption = ($truthy($b = value) ? $b : self.document.$attributes()['$[]'](\"caption\")))))) {\n return nil\n } else if ($truthy((prefix = self.document.$attributes()['$[]'](\"\" + ((key = ($truthy($a = key) ? $a : self.context))) + \"-caption\")))) {\n \n self.caption = \"\" + (prefix) + \" \" + ((self.number = self.document.$increment_and_store_counter(\"\" + (key) + \"-number\", self))) + \". \";\n return nil;\n } else {\n return nil\n }\n }, TMP_AbstractBlock_assign_caption_28.$$arity = -1);\n \n Opal.def(self, '$enumerate_section', TMP_AbstractBlock_enumerate_section_29 = function $$enumerate_section(section) {\n var self = this, $writer = nil, sectname = nil, caption = nil;\n\n \n self.next_section_index = $rb_plus((($writer = [self.next_section_index]), $send(section, 'index=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]), 1);\n if ($truthy(section.$numbered())) {\n if ((sectname = section.$sectname())['$=='](\"appendix\")) {\n \n \n $writer = [self.document.$counter(\"appendix-number\", \"A\")];\n $send(section, 'number=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy((caption = self.document.$attributes()['$[]'](\"appendix-caption\")))) {\n \n $writer = [\"\" + (caption) + \" \" + (section.$number()) + \": \"];\n $send(section, 'caption=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [\"\" + (section.$number()) + \". \"];\n $send(section, 'caption=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n } else if (sectname['$=='](\"chapter\")) {\n \n $writer = [self.document.$counter(\"chapter-number\", 1)];\n $send(section, 'number=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n self.next_section_number = $rb_plus((($writer = [self.next_section_number]), $send(section, 'number=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]), 1)\n }};\n return nil;\n }, TMP_AbstractBlock_enumerate_section_29.$$arity = 1);\n \n Opal.def(self, '$list_marker_keyword', TMP_AbstractBlock_list_marker_keyword_30 = function $$list_marker_keyword(list_type) {\n var $a, self = this;\n\n if (list_type == null) {\n list_type = nil;\n }\n return $$($nesting, 'ORDERED_LIST_KEYWORDS')['$[]'](($truthy($a = list_type) ? $a : self.style))\n }, TMP_AbstractBlock_list_marker_keyword_30.$$arity = -1);\n return (Opal.def(self, '$reindex_sections', TMP_AbstractBlock_reindex_sections_32 = function $$reindex_sections() {\n var TMP_31, self = this;\n\n \n self.next_section_index = 0;\n self.next_section_number = 1;\n return $send(self.blocks, 'each', [], (TMP_31 = function(block){var self = TMP_31.$$s || this;\nif (block == null) block = nil;\n if (block.$context()['$=='](\"section\")) {\n \n self.$enumerate_section(block);\n return block.$reindex_sections();\n } else {\n return nil\n }}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31));\n }, TMP_AbstractBlock_reindex_sections_32.$$arity = 0), nil) && 'reindex_sections';\n })($nesting[0], $$($nesting, 'AbstractNode'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/attribute_list\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send;\n\n Opal.add_stubs(['$new', '$[]', '$update', '$parse', '$parse_attribute', '$eos?', '$skip_delimiter', '$+', '$rekey', '$each_with_index', '$[]=', '$-', '$skip_blank', '$==', '$peek', '$parse_attribute_value', '$get_byte', '$scan_name', '$!', '$!=', '$*', '$scan_to_delimiter', '$===', '$include?', '$delete', '$each', '$split', '$empty?', '$strip', '$apply_subs', '$scan_to_quote', '$gsub', '$skip', '$scan']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $AttributeList(){};\n var self = $AttributeList = $klass($base, $super, 'AttributeList', $AttributeList);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_AttributeList_initialize_1, TMP_AttributeList_parse_into_2, TMP_AttributeList_parse_3, TMP_AttributeList_rekey_4, TMP_AttributeList_rekey_6, TMP_AttributeList_parse_attribute_8, TMP_AttributeList_parse_attribute_value_9, TMP_AttributeList_skip_blank_10, TMP_AttributeList_skip_delimiter_11, TMP_AttributeList_scan_name_12, TMP_AttributeList_scan_to_delimiter_13, TMP_AttributeList_scan_to_quote_14;\n\n def.attributes = def.scanner = def.delimiter = def.block = def.delimiter_skip_pattern = def.delimiter_boundary_pattern = nil;\n \n Opal.const_set($nesting[0], 'BACKSLASH', \"\\\\\");\n Opal.const_set($nesting[0], 'BoundaryRxs', $hash2([\"\\\"\", \"'\", \",\"], {\"\\\"\": /.*?[^\\\\](?=\")/, \"'\": /.*?[^\\\\](?=')/, \",\": /.*?(?=[ \\t]*(,|$))/}));\n Opal.const_set($nesting[0], 'EscapedQuotes', $hash2([\"\\\"\", \"'\"], {\"\\\"\": \"\\\\\\\"\", \"'\": \"\\\\'\"}));\n Opal.const_set($nesting[0], 'NameRx', new RegExp(\"\" + ($$($nesting, 'CG_WORD')) + \"[\" + ($$($nesting, 'CC_WORD')) + \"\\\\-.]*\"));\n Opal.const_set($nesting[0], 'BlankRx', /[ \\t]+/);\n Opal.const_set($nesting[0], 'SkipRxs', $hash2([\"blank\", \",\"], {\"blank\": $$($nesting, 'BlankRx'), \",\": /[ \\t]*(,|$)/}));\n \n Opal.def(self, '$initialize', TMP_AttributeList_initialize_1 = function $$initialize(source, block, delimiter) {\n var self = this;\n\n if (block == null) {\n block = nil;\n }\n if (delimiter == null) {\n delimiter = \",\";\n }\n \n self.scanner = $$$('::', 'StringScanner').$new(source);\n self.block = block;\n self.delimiter = delimiter;\n self.delimiter_skip_pattern = $$($nesting, 'SkipRxs')['$[]'](delimiter);\n self.delimiter_boundary_pattern = $$($nesting, 'BoundaryRxs')['$[]'](delimiter);\n return (self.attributes = nil);\n }, TMP_AttributeList_initialize_1.$$arity = -2);\n \n Opal.def(self, '$parse_into', TMP_AttributeList_parse_into_2 = function $$parse_into(attributes, posattrs) {\n var self = this;\n\n if (posattrs == null) {\n posattrs = [];\n }\n return attributes.$update(self.$parse(posattrs))\n }, TMP_AttributeList_parse_into_2.$$arity = -2);\n \n Opal.def(self, '$parse', TMP_AttributeList_parse_3 = function $$parse(posattrs) {\n var $a, self = this, index = nil;\n\n if (posattrs == null) {\n posattrs = [];\n }\n \n if ($truthy(self.attributes)) {\n return self.attributes};\n self.attributes = $hash2([], {});\n index = 0;\n while ($truthy(self.$parse_attribute(index, posattrs))) {\n \n if ($truthy(self.scanner['$eos?']())) {\n break;};\n self.$skip_delimiter();\n index = $rb_plus(index, 1);\n };\n return self.attributes;\n }, TMP_AttributeList_parse_3.$$arity = -1);\n \n Opal.def(self, '$rekey', TMP_AttributeList_rekey_4 = function $$rekey(posattrs) {\n var self = this;\n\n return $$($nesting, 'AttributeList').$rekey(self.attributes, posattrs)\n }, TMP_AttributeList_rekey_4.$$arity = 1);\n Opal.defs(self, '$rekey', TMP_AttributeList_rekey_6 = function $$rekey(attributes, pos_attrs) {\n var TMP_5, self = this;\n\n \n $send(pos_attrs, 'each_with_index', [], (TMP_5 = function(key, index){var self = TMP_5.$$s || this, pos = nil, val = nil, $writer = nil;\nif (key == null) key = nil;if (index == null) index = nil;\n \n if ($truthy(key)) {\n } else {\n return nil;\n };\n pos = $rb_plus(index, 1);\n if ($truthy((val = attributes['$[]'](pos)))) {\n \n $writer = [key, val];\n $send(attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return nil\n };}, TMP_5.$$s = self, TMP_5.$$arity = 2, TMP_5));\n return attributes;\n }, TMP_AttributeList_rekey_6.$$arity = 2);\n \n Opal.def(self, '$parse_attribute', TMP_AttributeList_parse_attribute_8 = function $$parse_attribute(index, pos_attrs) {\n var $a, TMP_7, self = this, single_quoted_value = nil, first = nil, name = nil, value = nil, skipped = nil, c = nil, $case = nil, $writer = nil, resolved_name = nil, pos_name = nil;\n\n if (index == null) {\n index = 0;\n }\n if (pos_attrs == null) {\n pos_attrs = [];\n }\n \n single_quoted_value = false;\n self.$skip_blank();\n if ((first = self.scanner.$peek(1))['$=='](\"\\\"\")) {\n \n name = self.$parse_attribute_value(self.scanner.$get_byte());\n value = nil;\n } else if (first['$=='](\"'\")) {\n \n name = self.$parse_attribute_value(self.scanner.$get_byte());\n value = nil;\n single_quoted_value = true;\n } else {\n \n name = self.$scan_name();\n skipped = 0;\n c = nil;\n if ($truthy(self.scanner['$eos?']())) {\n if ($truthy(name)) {\n } else {\n return false\n }\n } else {\n \n skipped = ($truthy($a = self.$skip_blank()) ? $a : 0);\n c = self.scanner.$get_byte();\n };\n if ($truthy(($truthy($a = c['$!']()) ? $a : c['$=='](self.delimiter)))) {\n value = nil\n } else if ($truthy(($truthy($a = c['$!='](\"=\")) ? $a : name['$!']()))) {\n \n name = \"\" + (name) + ($rb_times(\" \", skipped)) + (c) + (self.$scan_to_delimiter());\n value = nil;\n } else {\n \n self.$skip_blank();\n if ($truthy(self.scanner.$peek(1))) {\n if ((c = self.scanner.$get_byte())['$=='](\"\\\"\")) {\n value = self.$parse_attribute_value(c)\n } else if (c['$=='](\"'\")) {\n \n value = self.$parse_attribute_value(c);\n single_quoted_value = true;\n } else if (c['$=='](self.delimiter)) {\n value = nil\n } else {\n \n value = \"\" + (c) + (self.$scan_to_delimiter());\n if (value['$=='](\"None\")) {\n return true};\n }};\n };\n };\n if ($truthy(value)) {\n $case = name;\n if (\"options\"['$===']($case) || \"opts\"['$===']($case)) {\n if ($truthy(value['$include?'](\",\"))) {\n \n if ($truthy(value['$include?'](\" \"))) {\n value = value.$delete(\" \")};\n $send(value.$split(\",\"), 'each', [], (TMP_7 = function(opt){var self = TMP_7.$$s || this, $writer = nil;\n if (self.attributes == null) self.attributes = nil;\nif (opt == null) opt = nil;\n if ($truthy(opt['$empty?']())) {\n return nil\n } else {\n \n $writer = [\"\" + (opt) + \"-option\", \"\"];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7));\n } else {\n \n $writer = [\"\" + ((value = value.$strip())) + \"-option\", \"\"];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n \n $writer = [\"options\", value];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;}\n else {if ($truthy(($truthy($a = single_quoted_value) ? self.block : $a))) {\n $case = name;\n if (\"title\"['$===']($case) || \"reftext\"['$===']($case)) {\n $writer = [name, value];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n else {\n $writer = [name, self.block.$apply_subs(value)];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n } else {\n \n $writer = [name, value];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n }}\n } else {\n \n resolved_name = (function() {if ($truthy(($truthy($a = single_quoted_value) ? self.block : $a))) {\n \n return self.block.$apply_subs(name);\n } else {\n return name\n }; return nil; })();\n if ($truthy((pos_name = pos_attrs['$[]'](index)))) {\n \n $writer = [pos_name, resolved_name];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n \n $writer = [$rb_plus(index, 1), resolved_name];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n return true;\n }, TMP_AttributeList_parse_attribute_8.$$arity = -1);\n \n Opal.def(self, '$parse_attribute_value', TMP_AttributeList_parse_attribute_value_9 = function $$parse_attribute_value(quote) {\n var self = this, value = nil;\n\n \n if (self.scanner.$peek(1)['$=='](quote)) {\n \n self.scanner.$get_byte();\n return \"\";};\n if ($truthy((value = self.$scan_to_quote(quote)))) {\n \n self.scanner.$get_byte();\n if ($truthy(value['$include?']($$($nesting, 'BACKSLASH')))) {\n return value.$gsub($$($nesting, 'EscapedQuotes')['$[]'](quote), quote)\n } else {\n return value\n };\n } else {\n return \"\" + (quote) + (self.$scan_to_delimiter())\n };\n }, TMP_AttributeList_parse_attribute_value_9.$$arity = 1);\n \n Opal.def(self, '$skip_blank', TMP_AttributeList_skip_blank_10 = function $$skip_blank() {\n var self = this;\n\n return self.scanner.$skip($$($nesting, 'BlankRx'))\n }, TMP_AttributeList_skip_blank_10.$$arity = 0);\n \n Opal.def(self, '$skip_delimiter', TMP_AttributeList_skip_delimiter_11 = function $$skip_delimiter() {\n var self = this;\n\n return self.scanner.$skip(self.delimiter_skip_pattern)\n }, TMP_AttributeList_skip_delimiter_11.$$arity = 0);\n \n Opal.def(self, '$scan_name', TMP_AttributeList_scan_name_12 = function $$scan_name() {\n var self = this;\n\n return self.scanner.$scan($$($nesting, 'NameRx'))\n }, TMP_AttributeList_scan_name_12.$$arity = 0);\n \n Opal.def(self, '$scan_to_delimiter', TMP_AttributeList_scan_to_delimiter_13 = function $$scan_to_delimiter() {\n var self = this;\n\n return self.scanner.$scan(self.delimiter_boundary_pattern)\n }, TMP_AttributeList_scan_to_delimiter_13.$$arity = 0);\n return (Opal.def(self, '$scan_to_quote', TMP_AttributeList_scan_to_quote_14 = function $$scan_to_quote(quote) {\n var self = this;\n\n return self.scanner.$scan($$($nesting, 'BoundaryRxs')['$[]'](quote))\n }, TMP_AttributeList_scan_to_quote_14.$$arity = 1), nil) && 'scan_to_quote';\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/block\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$default=', '$-', '$attr_accessor', '$[]', '$key?', '$==', '$===', '$dup', '$delete', '$[]=', '$lock_in_subs', '$nil_or_empty?', '$normalize_lines_from_string', '$apply_subs', '$*', '$<', '$size', '$empty?', '$rstrip', '$shift', '$pop', '$warn', '$to_s', '$class', '$object_id', '$inspect']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Block(){};\n var self = $Block = $klass($base, $super, 'Block', $Block);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Block_initialize_1, TMP_Block_content_2, TMP_Block_source_3, TMP_Block_to_s_4, $writer = nil;\n\n def.attributes = def.content_model = def.lines = def.subs = def.blocks = def.context = def.style = nil;\n \n \n $writer = [\"simple\"];\n $send(Opal.const_set($nesting[0], 'DEFAULT_CONTENT_MODEL', $hash2([\"audio\", \"image\", \"listing\", \"literal\", \"stem\", \"open\", \"page_break\", \"pass\", \"thematic_break\", \"video\"], {\"audio\": \"empty\", \"image\": \"empty\", \"listing\": \"verbatim\", \"literal\": \"verbatim\", \"stem\": \"raw\", \"open\": \"compound\", \"page_break\": \"empty\", \"pass\": \"raw\", \"thematic_break\": \"empty\", \"video\": \"empty\"})), 'default=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n Opal.alias(self, \"blockname\", \"context\");\n self.$attr_accessor(\"lines\");\n \n Opal.def(self, '$initialize', TMP_Block_initialize_1 = function $$initialize(parent, context, opts) {\n var $a, self = this, $iter = TMP_Block_initialize_1.$$p, $yield = $iter || nil, subs = nil, $writer = nil, raw_source = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n if ($iter) TMP_Block_initialize_1.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Block_initialize_1, false), $zuper, $iter);\n self.content_model = ($truthy($a = opts['$[]'](\"content_model\")) ? $a : $$($nesting, 'DEFAULT_CONTENT_MODEL')['$[]'](context));\n if ($truthy(opts['$key?'](\"subs\"))) {\n if ($truthy((subs = opts['$[]'](\"subs\")))) {\n \n if (subs['$=='](\"default\")) {\n self.default_subs = opts['$[]'](\"default_subs\")\n } else if ($truthy($$$('::', 'Array')['$==='](subs))) {\n \n self.default_subs = subs.$dup();\n self.attributes.$delete(\"subs\");\n } else {\n \n self.default_subs = nil;\n \n $writer = [\"subs\", \"\" + (subs)];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n self.$lock_in_subs();\n } else {\n \n self.default_subs = [];\n self.attributes.$delete(\"subs\");\n }\n } else {\n self.default_subs = nil\n };\n if ($truthy((raw_source = opts['$[]'](\"source\"))['$nil_or_empty?']())) {\n return (self.lines = [])\n } else if ($truthy($$$('::', 'String')['$==='](raw_source))) {\n return (self.lines = $$($nesting, 'Helpers').$normalize_lines_from_string(raw_source))\n } else {\n return (self.lines = raw_source.$dup())\n };\n }, TMP_Block_initialize_1.$$arity = -3);\n \n Opal.def(self, '$content', TMP_Block_content_2 = function $$content() {\n var $a, $b, self = this, $iter = TMP_Block_content_2.$$p, $yield = $iter || nil, $case = nil, result = nil, first = nil, last = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Block_content_2.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n return (function() {$case = self.content_model;\n if (\"compound\"['$===']($case)) {return $send(self, Opal.find_super_dispatcher(self, 'content', TMP_Block_content_2, false), $zuper, $iter)}\n else if (\"simple\"['$===']($case)) {return self.$apply_subs($rb_times(self.lines, $$($nesting, 'LF')), self.subs)}\n else if (\"verbatim\"['$===']($case) || \"raw\"['$===']($case)) {\n result = self.$apply_subs(self.lines, self.subs);\n if ($truthy($rb_lt(result.$size(), 2))) {\n return result['$[]'](0)\n } else {\n \n while ($truthy(($truthy($b = (first = result['$[]'](0))) ? first.$rstrip()['$empty?']() : $b))) {\n result.$shift()\n };\n while ($truthy(($truthy($b = (last = result['$[]'](-1))) ? last.$rstrip()['$empty?']() : $b))) {\n result.$pop()\n };\n return $rb_times(result, $$($nesting, 'LF'));\n };}\n else {\n if (self.content_model['$=='](\"empty\")) {\n } else {\n self.$warn(\"\" + \"Unknown content model '\" + (self.content_model) + \"' for block: \" + (self.$to_s()))\n };\n return nil;}})()\n }, TMP_Block_content_2.$$arity = 0);\n \n Opal.def(self, '$source', TMP_Block_source_3 = function $$source() {\n var self = this;\n\n return $rb_times(self.lines, $$($nesting, 'LF'))\n }, TMP_Block_source_3.$$arity = 0);\n return (Opal.def(self, '$to_s', TMP_Block_to_s_4 = function $$to_s() {\n var self = this, content_summary = nil;\n\n \n content_summary = (function() {if (self.content_model['$=='](\"compound\")) {\n return \"\" + \"blocks: \" + (self.blocks.$size())\n } else {\n return \"\" + \"lines: \" + (self.lines.$size())\n }; return nil; })();\n return \"\" + \"#<\" + (self.$class()) + \"@\" + (self.$object_id()) + \" {context: \" + (self.context.$inspect()) + \", content_model: \" + (self.content_model.$inspect()) + \", style: \" + (self.style.$inspect()) + \", \" + (content_summary) + \"}>\";\n }, TMP_Block_to_s_4.$$arity = 0), nil) && 'to_s';\n })($nesting[0], $$($nesting, 'AbstractBlock'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/callouts\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy, $send = Opal.send;\n\n Opal.add_stubs(['$next_list', '$<<', '$current_list', '$to_i', '$generate_next_callout_id', '$+', '$<=', '$size', '$[]', '$-', '$chop', '$join', '$map', '$==', '$<', '$generate_callout_id']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Callouts(){};\n var self = $Callouts = $klass($base, $super, 'Callouts', $Callouts);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Callouts_initialize_1, TMP_Callouts_register_2, TMP_Callouts_read_next_id_3, TMP_Callouts_callout_ids_5, TMP_Callouts_current_list_6, TMP_Callouts_next_list_7, TMP_Callouts_rewind_8, TMP_Callouts_generate_next_callout_id_9, TMP_Callouts_generate_callout_id_10;\n\n def.co_index = def.lists = def.list_index = nil;\n \n \n Opal.def(self, '$initialize', TMP_Callouts_initialize_1 = function $$initialize() {\n var self = this;\n\n \n self.lists = [];\n self.list_index = 0;\n return self.$next_list();\n }, TMP_Callouts_initialize_1.$$arity = 0);\n \n Opal.def(self, '$register', TMP_Callouts_register_2 = function $$register(li_ordinal) {\n var self = this, id = nil;\n\n \n self.$current_list()['$<<']($hash2([\"ordinal\", \"id\"], {\"ordinal\": li_ordinal.$to_i(), \"id\": (id = self.$generate_next_callout_id())}));\n self.co_index = $rb_plus(self.co_index, 1);\n return id;\n }, TMP_Callouts_register_2.$$arity = 1);\n \n Opal.def(self, '$read_next_id', TMP_Callouts_read_next_id_3 = function $$read_next_id() {\n var self = this, id = nil, list = nil;\n\n \n id = nil;\n list = self.$current_list();\n if ($truthy($rb_le(self.co_index, list.$size()))) {\n id = list['$[]']($rb_minus(self.co_index, 1))['$[]'](\"id\")};\n self.co_index = $rb_plus(self.co_index, 1);\n return id;\n }, TMP_Callouts_read_next_id_3.$$arity = 0);\n \n Opal.def(self, '$callout_ids', TMP_Callouts_callout_ids_5 = function $$callout_ids(li_ordinal) {\n var TMP_4, self = this;\n\n return $send(self.$current_list(), 'map', [], (TMP_4 = function(element){var self = TMP_4.$$s || this;\nif (element == null) element = nil;\n if (element['$[]'](\"ordinal\")['$=='](li_ordinal)) {\n return \"\" + (element['$[]'](\"id\")) + \" \"\n } else {\n return nil\n }}, TMP_4.$$s = self, TMP_4.$$arity = 1, TMP_4)).$join().$chop()\n }, TMP_Callouts_callout_ids_5.$$arity = 1);\n \n Opal.def(self, '$current_list', TMP_Callouts_current_list_6 = function $$current_list() {\n var self = this;\n\n return self.lists['$[]']($rb_minus(self.list_index, 1))\n }, TMP_Callouts_current_list_6.$$arity = 0);\n \n Opal.def(self, '$next_list', TMP_Callouts_next_list_7 = function $$next_list() {\n var self = this;\n\n \n self.list_index = $rb_plus(self.list_index, 1);\n if ($truthy($rb_lt(self.lists.$size(), self.list_index))) {\n self.lists['$<<']([])};\n self.co_index = 1;\n return nil;\n }, TMP_Callouts_next_list_7.$$arity = 0);\n \n Opal.def(self, '$rewind', TMP_Callouts_rewind_8 = function $$rewind() {\n var self = this;\n\n \n self.list_index = 1;\n self.co_index = 1;\n return nil;\n }, TMP_Callouts_rewind_8.$$arity = 0);\n \n Opal.def(self, '$generate_next_callout_id', TMP_Callouts_generate_next_callout_id_9 = function $$generate_next_callout_id() {\n var self = this;\n\n return self.$generate_callout_id(self.list_index, self.co_index)\n }, TMP_Callouts_generate_next_callout_id_9.$$arity = 0);\n return (Opal.def(self, '$generate_callout_id', TMP_Callouts_generate_callout_id_10 = function $$generate_callout_id(list_index, co_index) {\n var self = this;\n\n return \"\" + \"CO\" + (list_index) + \"-\" + (co_index)\n }, TMP_Callouts_generate_callout_id_10.$$arity = 2), nil) && 'generate_callout_id';\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/converter/base\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $hash2 = Opal.hash2, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$include', '$node_name', '$empty?', '$send', '$content']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n (function($base, $parent_nesting) {\n var $Converter, self = $Converter = $module($base, 'Converter');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n nil\n })($nesting[0], $nesting);\n (function($base, $super, $parent_nesting) {\n function $Base(){};\n var self = $Base = $klass($base, $super, 'Base', $Base);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return self.$include($$($nesting, 'Converter'))\n })($$($nesting, 'Converter'), null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $BuiltIn(){};\n var self = $BuiltIn = $klass($base, $super, 'BuiltIn', $BuiltIn);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BuiltIn_initialize_1, TMP_BuiltIn_convert_2, TMP_BuiltIn_content_3, TMP_BuiltIn_skip_4;\n\n \n \n Opal.def(self, '$initialize', TMP_BuiltIn_initialize_1 = function $$initialize(backend, opts) {\n var self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n return nil\n }, TMP_BuiltIn_initialize_1.$$arity = -2);\n \n Opal.def(self, '$convert', TMP_BuiltIn_convert_2 = function $$convert(node, transform, opts) {\n var $a, self = this;\n\n if (transform == null) {\n transform = nil;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n transform = ($truthy($a = transform) ? $a : node.$node_name());\n if ($truthy(opts['$empty?']())) {\n \n return self.$send(transform, node);\n } else {\n \n return self.$send(transform, node, opts);\n };\n }, TMP_BuiltIn_convert_2.$$arity = -2);\n Opal.alias(self, \"handles?\", \"respond_to?\");\n \n Opal.def(self, '$content', TMP_BuiltIn_content_3 = function $$content(node) {\n var self = this;\n\n return node.$content()\n }, TMP_BuiltIn_content_3.$$arity = 1);\n Opal.alias(self, \"pass\", \"content\");\n return (Opal.def(self, '$skip', TMP_BuiltIn_skip_4 = function $$skip(node) {\n var self = this;\n\n return nil\n }, TMP_BuiltIn_skip_4.$$arity = 1), nil) && 'skip';\n })($$($nesting, 'Converter'), null, $nesting);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/converter/factory\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send;\n\n Opal.add_stubs(['$new', '$require', '$to_s', '$warn', '$register', '$default', '$resolve', '$create', '$converters', '$unregister_all', '$attr_reader', '$each', '$[]=', '$-', '$==', '$[]', '$clear', '$===', '$key?']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $parent_nesting) {\n var $Converter, self = $Converter = $module($base, 'Converter');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Factory(){};\n var self = $Factory = $klass($base, $super, 'Factory', $Factory);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Factory_initialize_7, TMP_Factory_register_9, TMP_Factory_resolve_10, TMP_Factory_unregister_all_11, TMP_Factory_create_12;\n\n def.converters = def.star_converter = nil;\n \n self.__default__ = nil;\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_default_1, TMP_register_2, TMP_resolve_3, TMP_create_4, TMP_converters_5, TMP_unregister_all_6;\n\n \n \n Opal.def(self, '$default', TMP_default_1 = function(initialize_singleton) {\n var $a, $b, self = this;\n if (self.__default__ == null) self.__default__ = nil;\n\n if (initialize_singleton == null) {\n initialize_singleton = true;\n }\n \n if ($truthy(initialize_singleton)) {\n } else {\n return ($truthy($a = self.__default__) ? $a : self.$new())\n };\n return (self.__default__ = ($truthy($a = self.__default__) ? $a : (function() { try {\n \n if ($truthy((($b = $$$('::', 'ThreadSafe', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n self.$require(\"thread_safe\".$to_s())\n };\n return self.$new($$$($$$('::', 'ThreadSafe'), 'Cache').$new());\n } catch ($err) {\n if (Opal.rescue($err, [$$$('::', 'LoadError')])) {\n try {\n \n self.$warn(\"asciidoctor: WARNING: gem 'thread_safe' is not installed. This gem is recommended when registering custom converters.\");\n return self.$new();\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }})()));\n }, TMP_default_1.$$arity = -1);\n \n Opal.def(self, '$register', TMP_register_2 = function $$register(converter, backends) {\n var self = this;\n\n if (backends == null) {\n backends = [\"*\"];\n }\n return self.$default().$register(converter, backends)\n }, TMP_register_2.$$arity = -2);\n \n Opal.def(self, '$resolve', TMP_resolve_3 = function $$resolve(backend) {\n var self = this;\n\n return self.$default().$resolve(backend)\n }, TMP_resolve_3.$$arity = 1);\n \n Opal.def(self, '$create', TMP_create_4 = function $$create(backend, opts) {\n var self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n return self.$default().$create(backend, opts)\n }, TMP_create_4.$$arity = -2);\n \n Opal.def(self, '$converters', TMP_converters_5 = function $$converters() {\n var self = this;\n\n return self.$default().$converters()\n }, TMP_converters_5.$$arity = 0);\n return (Opal.def(self, '$unregister_all', TMP_unregister_all_6 = function $$unregister_all() {\n var self = this;\n\n return self.$default().$unregister_all()\n }, TMP_unregister_all_6.$$arity = 0), nil) && 'unregister_all';\n })(Opal.get_singleton_class(self), $nesting);\n self.$attr_reader(\"converters\");\n \n Opal.def(self, '$initialize', TMP_Factory_initialize_7 = function $$initialize(converters) {\n var $a, self = this;\n\n if (converters == null) {\n converters = nil;\n }\n \n self.converters = ($truthy($a = converters) ? $a : $hash2([], {}));\n return (self.star_converter = nil);\n }, TMP_Factory_initialize_7.$$arity = -1);\n \n Opal.def(self, '$register', TMP_Factory_register_9 = function $$register(converter, backends) {\n var TMP_8, self = this;\n\n if (backends == null) {\n backends = [\"*\"];\n }\n \n $send(backends, 'each', [], (TMP_8 = function(backend){var self = TMP_8.$$s || this, $writer = nil;\n if (self.converters == null) self.converters = nil;\nif (backend == null) backend = nil;\n \n \n $writer = [backend, converter];\n $send(self.converters, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if (backend['$=='](\"*\")) {\n return (self.star_converter = converter)\n } else {\n return nil\n };}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8));\n return nil;\n }, TMP_Factory_register_9.$$arity = -2);\n \n Opal.def(self, '$resolve', TMP_Factory_resolve_10 = function $$resolve(backend) {\n var $a, $b, self = this;\n\n return ($truthy($a = self.converters) ? ($truthy($b = self.converters['$[]'](backend)) ? $b : self.star_converter) : $a)\n }, TMP_Factory_resolve_10.$$arity = 1);\n \n Opal.def(self, '$unregister_all', TMP_Factory_unregister_all_11 = function $$unregister_all() {\n var self = this;\n\n \n self.converters.$clear();\n return (self.star_converter = nil);\n }, TMP_Factory_unregister_all_11.$$arity = 0);\n return (Opal.def(self, '$create', TMP_Factory_create_12 = function $$create(backend, opts) {\n var $a, $b, $c, $d, $e, $f, $g, $h, $i, $j, $k, $l, $m, $n, $o, $p, $q, $r, self = this, converter = nil, base_converter = nil, $case = nil, template_converter = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy((converter = self.$resolve(backend)))) {\n return (function() {if ($truthy($$$('::', 'Class')['$==='](converter))) {\n \n return converter.$new(backend, opts);\n } else {\n return converter\n }; return nil; })()};\n base_converter = (function() {$case = backend;\n if (\"html5\"['$===']($case)) {\n if ($truthy((($c = $$$('::', 'Asciidoctor', 'skip_raise')) && ($b = $$$($c, 'Converter', 'skip_raise')) && ($a = $$$($b, 'Html5Converter', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n self.$require(\"asciidoctor/converter/html5\".$to_s())\n };\n return $$($nesting, 'Html5Converter').$new(backend, opts);}\n else if (\"docbook5\"['$===']($case)) {\n if ($truthy((($f = $$$('::', 'Asciidoctor', 'skip_raise')) && ($e = $$$($f, 'Converter', 'skip_raise')) && ($d = $$$($e, 'DocBook5Converter', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n self.$require(\"asciidoctor/converter/docbook5\".$to_s())\n };\n return $$($nesting, 'DocBook5Converter').$new(backend, opts);}\n else if (\"docbook45\"['$===']($case)) {\n if ($truthy((($i = $$$('::', 'Asciidoctor', 'skip_raise')) && ($h = $$$($i, 'Converter', 'skip_raise')) && ($g = $$$($h, 'DocBook45Converter', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n self.$require(\"asciidoctor/converter/docbook45\".$to_s())\n };\n return $$($nesting, 'DocBook45Converter').$new(backend, opts);}\n else if (\"manpage\"['$===']($case)) {\n if ($truthy((($l = $$$('::', 'Asciidoctor', 'skip_raise')) && ($k = $$$($l, 'Converter', 'skip_raise')) && ($j = $$$($k, 'ManPageConverter', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n self.$require(\"asciidoctor/converter/manpage\".$to_s())\n };\n return $$($nesting, 'ManPageConverter').$new(backend, opts);}\n else { return nil }})();\n if ($truthy(opts['$key?'](\"template_dirs\"))) {\n } else {\n return base_converter\n };\n if ($truthy((($o = $$$('::', 'Asciidoctor', 'skip_raise')) && ($n = $$$($o, 'Converter', 'skip_raise')) && ($m = $$$($n, 'TemplateConverter', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n self.$require(\"asciidoctor/converter/template\".$to_s())\n };\n if ($truthy((($r = $$$('::', 'Asciidoctor', 'skip_raise')) && ($q = $$$($r, 'Converter', 'skip_raise')) && ($p = $$$($q, 'CompositeConverter', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n self.$require(\"asciidoctor/converter/composite\".$to_s())\n };\n template_converter = $$($nesting, 'TemplateConverter').$new(backend, opts['$[]'](\"template_dirs\"), opts);\n return $$($nesting, 'CompositeConverter').$new(backend, template_converter, base_converter);\n }, TMP_Factory_create_12.$$arity = -2), nil) && 'create';\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/converter\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $send = Opal.send, $truthy = Opal.truthy, $range = Opal.range, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$register', '$==', '$send', '$include?', '$setup_backend_info', '$raise', '$class', '$sub', '$[]', '$[]=', '$backend_info', '$-', '$extend', '$include', '$respond_to?', '$write', '$chomp', '$require']);\n \n (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n (function($base, $parent_nesting) {\n var $Converter, self = $Converter = $module($base, 'Converter');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Converter_initialize_11, TMP_Converter_convert_12;\n\n \n (function($base, $parent_nesting) {\n var $Config, self = $Config = $module($base, 'Config');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Config_register_for_3;\n\n \n Opal.def(self, '$register_for', TMP_Config_register_for_3 = function $$register_for($a_rest) {\n var TMP_1, TMP_2, self = this, backends, metaclass = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n backends = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n backends[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n $$($nesting, 'Factory').$register(self, backends);\n metaclass = (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return self\n })(Opal.get_singleton_class(self), $nesting);\n if (backends['$==']([\"*\"])) {\n $send(metaclass, 'send', [\"define_method\", \"converts?\"], (TMP_1 = function(name){var self = TMP_1.$$s || this;\nif (name == null) name = nil;\n return true}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1))\n } else {\n $send(metaclass, 'send', [\"define_method\", \"converts?\"], (TMP_2 = function(name){var self = TMP_2.$$s || this;\nif (name == null) name = nil;\n return backends['$include?'](name)}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2))\n };\n return nil;\n }, TMP_Config_register_for_3.$$arity = -1)\n })($nesting[0], $nesting);\n (function($base, $parent_nesting) {\n var $BackendInfo, self = $BackendInfo = $module($base, 'BackendInfo');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BackendInfo_backend_info_4, TMP_BackendInfo_setup_backend_info_5, TMP_BackendInfo_filetype_6, TMP_BackendInfo_basebackend_7, TMP_BackendInfo_outfilesuffix_8, TMP_BackendInfo_htmlsyntax_9;\n\n \n \n Opal.def(self, '$backend_info', TMP_BackendInfo_backend_info_4 = function $$backend_info() {\n var $a, self = this;\n if (self.backend_info == null) self.backend_info = nil;\n\n return (self.backend_info = ($truthy($a = self.backend_info) ? $a : self.$setup_backend_info()))\n }, TMP_BackendInfo_backend_info_4.$$arity = 0);\n \n Opal.def(self, '$setup_backend_info', TMP_BackendInfo_setup_backend_info_5 = function $$setup_backend_info() {\n var self = this, base = nil, ext = nil, type = nil, syntax = nil;\n if (self.backend == null) self.backend = nil;\n\n \n if ($truthy(self.backend)) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"Cannot determine backend for converter: \" + (self.$class()))\n };\n base = self.backend.$sub($$($nesting, 'TrailingDigitsRx'), \"\");\n if ($truthy((ext = $$($nesting, 'DEFAULT_EXTENSIONS')['$[]'](base)))) {\n type = ext['$[]']($range(1, -1, false))\n } else {\n \n base = \"html\";\n ext = \".html\";\n type = \"html\";\n syntax = \"html\";\n };\n return $hash2([\"basebackend\", \"outfilesuffix\", \"filetype\", \"htmlsyntax\"], {\"basebackend\": base, \"outfilesuffix\": ext, \"filetype\": type, \"htmlsyntax\": syntax});\n }, TMP_BackendInfo_setup_backend_info_5.$$arity = 0);\n \n Opal.def(self, '$filetype', TMP_BackendInfo_filetype_6 = function $$filetype(value) {\n var self = this, $writer = nil;\n\n if (value == null) {\n value = nil;\n }\n if ($truthy(value)) {\n \n $writer = [\"filetype\", value];\n $send(self.$backend_info(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return self.$backend_info()['$[]'](\"filetype\")\n }\n }, TMP_BackendInfo_filetype_6.$$arity = -1);\n \n Opal.def(self, '$basebackend', TMP_BackendInfo_basebackend_7 = function $$basebackend(value) {\n var self = this, $writer = nil;\n\n if (value == null) {\n value = nil;\n }\n if ($truthy(value)) {\n \n $writer = [\"basebackend\", value];\n $send(self.$backend_info(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return self.$backend_info()['$[]'](\"basebackend\")\n }\n }, TMP_BackendInfo_basebackend_7.$$arity = -1);\n \n Opal.def(self, '$outfilesuffix', TMP_BackendInfo_outfilesuffix_8 = function $$outfilesuffix(value) {\n var self = this, $writer = nil;\n\n if (value == null) {\n value = nil;\n }\n if ($truthy(value)) {\n \n $writer = [\"outfilesuffix\", value];\n $send(self.$backend_info(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return self.$backend_info()['$[]'](\"outfilesuffix\")\n }\n }, TMP_BackendInfo_outfilesuffix_8.$$arity = -1);\n \n Opal.def(self, '$htmlsyntax', TMP_BackendInfo_htmlsyntax_9 = function $$htmlsyntax(value) {\n var self = this, $writer = nil;\n\n if (value == null) {\n value = nil;\n }\n if ($truthy(value)) {\n \n $writer = [\"htmlsyntax\", value];\n $send(self.$backend_info(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return self.$backend_info()['$[]'](\"htmlsyntax\")\n }\n }, TMP_BackendInfo_htmlsyntax_9.$$arity = -1);\n })($nesting[0], $nesting);\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_included_10;\n\n return (Opal.def(self, '$included', TMP_included_10 = function $$included(converter) {\n var self = this;\n\n return converter.$extend($$($nesting, 'Config'))\n }, TMP_included_10.$$arity = 1), nil) && 'included'\n })(Opal.get_singleton_class(self), $nesting);\n self.$include($$($nesting, 'Config'));\n self.$include($$($nesting, 'BackendInfo'));\n \n Opal.def(self, '$initialize', TMP_Converter_initialize_11 = function $$initialize(backend, opts) {\n var self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n self.backend = backend;\n return self.$setup_backend_info();\n }, TMP_Converter_initialize_11.$$arity = -2);\n \n Opal.def(self, '$convert', TMP_Converter_convert_12 = function $$convert(node, transform, opts) {\n var self = this;\n\n if (transform == null) {\n transform = nil;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n return self.$raise($$$('::', 'NotImplementedError'))\n }, TMP_Converter_convert_12.$$arity = -2);\n Opal.alias(self, \"convert_with_options\", \"convert\");\n })($nesting[0], $nesting);\n (function($base, $parent_nesting) {\n var $Writer, self = $Writer = $module($base, 'Writer');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Writer_write_13;\n\n \n Opal.def(self, '$write', TMP_Writer_write_13 = function $$write(output, target) {\n var self = this;\n\n \n if ($truthy(target['$respond_to?'](\"write\"))) {\n \n target.$write(output.$chomp());\n target.$write($$($nesting, 'LF'));\n } else {\n $$$('::', 'IO').$write(target, output)\n };\n return nil;\n }, TMP_Writer_write_13.$$arity = 2)\n })($nesting[0], $nesting);\n (function($base, $parent_nesting) {\n var $VoidWriter, self = $VoidWriter = $module($base, 'VoidWriter');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_VoidWriter_write_14;\n\n \n self.$include($$($nesting, 'Writer'));\n \n Opal.def(self, '$write', TMP_VoidWriter_write_14 = function $$write(output, target) {\n var self = this;\n\n return nil\n }, TMP_VoidWriter_write_14.$$arity = 2);\n })($nesting[0], $nesting);\n })($nesting[0], $nesting);\n self.$require(\"asciidoctor/converter/base\");\n return self.$require(\"asciidoctor/converter/factory\");\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/document\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $send = Opal.send, $hash2 = Opal.hash2, $range = Opal.range, $gvars = Opal.gvars;\n\n Opal.add_stubs(['$new', '$attr_reader', '$nil?', '$<<', '$[]', '$[]=', '$-', '$include?', '$strip', '$squeeze', '$gsub', '$empty?', '$!', '$rpartition', '$attr_accessor', '$delete', '$base_dir', '$inject', '$catalog', '$==', '$callouts', '$dup', '$attributes', '$safe', '$compat_mode', '$sourcemap', '$converter', '$extensions', '$each', '$start_with?', '$end_with?', '$chop', '$downcase', '$===', '$value_for_name', '$to_s', '$key?', '$freeze', '$attribute_undefined', '$attribute_missing', '$name_for_value', '$expand_path', '$pwd', '$>=', '$+', '$length', '$fetch', '$abs', '$to_i', '$delete_if', '$update_doctype_attributes', '$parse', '$restore_attributes', '$update_backend_attributes', '$utc', '$at', '$Integer', '$now', '$index', '$slice', '$strftime', '$year', '$join', '$create', '$to_proc', '$activate', '$preprocessors?', '$preprocessors', '$process_method', '$tree_processors?', '$tree_processors', '$!=', '$counter', '$nil_or_empty?', '$nextval', '$value', '$save_to', '$chr', '$ord', '$source', '$source_lines', '$sectname=', '$title=', '$title', '$first_section', '$merge', '$find', '$context', '$enumerate_section', '$clear_playback_attributes', '$save_attributes', '$attribute_locked?', '$doctitle', '$rewind', '$name', '$negate', '$limit_bytesize', '$apply_attribute_value_subs', '$delete?', '$=~', '$apply_subs', '$resolve_pass_subs', '$apply_header_subs', '$create_converter', '$basebackend', '$outfilesuffix', '$filetype', '$sub', '$raise', '$backend', '$default', '$doctype', '$content_model', '$warn', '$content', '$convert', '$postprocessors?', '$postprocessors', '$write', '$respond_to?', '$chomp', '$map', '$split', '$resolve_docinfo_subs', '$&', '$normalize_system_path', '$read_asset', '$docinfo_processors?', '$compact', '$*', '$resolve_subs', '$docinfo_processors', '$class', '$object_id', '$inspect', '$size']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Document(){};\n var self = $Document = $klass($base, $super, 'Document', $Document);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Document_initialize_7, TMP_Document_parse_13, TMP_Document_counter_14, TMP_Document_increment_and_store_counter_15, TMP_Document_nextval_16, TMP_Document_register_17, TMP_Document_footnotes$q_18, TMP_Document_footnotes_19, TMP_Document_nested$q_20, TMP_Document_embedded$q_21, TMP_Document_extensions$q_22, TMP_Document_source_23, TMP_Document_source_lines_24, TMP_Document_basebackend$q_25, TMP_Document_title_26, TMP_Document_title$eq_27, TMP_Document_doctitle_28, TMP_Document_author_29, TMP_Document_revdate_30, TMP_Document_notitle_31, TMP_Document_noheader_32, TMP_Document_nofooter_33, TMP_Document_first_section_35, TMP_Document_has_header$q_36, TMP_Document_$lt$lt_37, TMP_Document_finalize_header_38, TMP_Document_save_attributes_40, TMP_Document_restore_attributes_41, TMP_Document_clear_playback_attributes_42, TMP_Document_playback_attributes_44, TMP_Document_set_attribute_45, TMP_Document_delete_attribute_46, TMP_Document_attribute_locked$q_47, TMP_Document_apply_attribute_value_subs_48, TMP_Document_update_backend_attributes_49, TMP_Document_update_doctype_attributes_50, TMP_Document_create_converter_51, TMP_Document_convert_53, TMP_Document_write_54, TMP_Document_content_55, TMP_Document_docinfo_58, TMP_Document_resolve_docinfo_subs_59, TMP_Document_docinfo_processors$q_60, TMP_Document_to_s_61;\n\n def.attributes = def.safe = def.reader = def.base_dir = def.parsed = def.parent_document = def.extensions = def.options = def.counters = def.catalog = def.header = def.blocks = def.attributes_modified = def.id = def.callouts = def.header_attributes = def.max_attribute_value_size = def.attribute_overrides = def.backend = def.doctype = def.converter = def.outfilesuffix = def.docinfo_processor_extensions = def.document = nil;\n \n Opal.const_set($nesting[0], 'Footnote', $$$('::', 'Struct').$new(\"index\", \"id\", \"text\"));\n (function($base, $super, $parent_nesting) {\n function $AttributeEntry(){};\n var self = $AttributeEntry = $klass($base, $super, 'AttributeEntry', $AttributeEntry);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_AttributeEntry_initialize_1, TMP_AttributeEntry_save_to_2;\n\n \n self.$attr_reader(\"name\", \"value\", \"negate\");\n \n Opal.def(self, '$initialize', TMP_AttributeEntry_initialize_1 = function $$initialize(name, value, negate) {\n var self = this;\n\n if (negate == null) {\n negate = nil;\n }\n \n self.name = name;\n self.value = value;\n return (self.negate = (function() {if ($truthy(negate['$nil?']())) {\n return value['$nil?']()\n } else {\n return negate\n }; return nil; })());\n }, TMP_AttributeEntry_initialize_1.$$arity = -3);\n return (Opal.def(self, '$save_to', TMP_AttributeEntry_save_to_2 = function $$save_to(block_attributes) {\n var $a, self = this, $writer = nil;\n\n \n ($truthy($a = block_attributes['$[]'](\"attribute_entries\")) ? $a : (($writer = [\"attribute_entries\", []]), $send(block_attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))['$<<'](self);\n return self;\n }, TMP_AttributeEntry_save_to_2.$$arity = 1), nil) && 'save_to';\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $Title(){};\n var self = $Title = $klass($base, $super, 'Title', $Title);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Title_initialize_3, TMP_Title_sanitized$q_4, TMP_Title_subtitle$q_5, TMP_Title_to_s_6;\n\n def.sanitized = def.subtitle = def.combined = nil;\n \n self.$attr_reader(\"main\");\n Opal.alias(self, \"title\", \"main\");\n self.$attr_reader(\"subtitle\");\n self.$attr_reader(\"combined\");\n \n Opal.def(self, '$initialize', TMP_Title_initialize_3 = function $$initialize(val, opts) {\n var $a, $b, self = this, sep = nil, _ = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy(($truthy($a = (self.sanitized = opts['$[]'](\"sanitize\"))) ? val['$include?'](\"<\") : $a))) {\n val = val.$gsub($$($nesting, 'XmlSanitizeRx'), \"\").$squeeze(\" \").$strip()};\n if ($truthy(($truthy($a = (sep = ($truthy($b = opts['$[]'](\"separator\")) ? $b : \":\"))['$empty?']()) ? $a : val['$include?']((sep = \"\" + (sep) + \" \"))['$!']()))) {\n \n self.main = val;\n self.subtitle = nil;\n } else {\n $b = val.$rpartition(sep), $a = Opal.to_ary($b), (self.main = ($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), (self.subtitle = ($a[2] == null ? nil : $a[2])), $b\n };\n return (self.combined = val);\n }, TMP_Title_initialize_3.$$arity = -2);\n \n Opal.def(self, '$sanitized?', TMP_Title_sanitized$q_4 = function() {\n var self = this;\n\n return self.sanitized\n }, TMP_Title_sanitized$q_4.$$arity = 0);\n \n Opal.def(self, '$subtitle?', TMP_Title_subtitle$q_5 = function() {\n var self = this;\n\n if ($truthy(self.subtitle)) {\n return true\n } else {\n return false\n }\n }, TMP_Title_subtitle$q_5.$$arity = 0);\n return (Opal.def(self, '$to_s', TMP_Title_to_s_6 = function $$to_s() {\n var self = this;\n\n return self.combined\n }, TMP_Title_to_s_6.$$arity = 0), nil) && 'to_s';\n })($nesting[0], null, $nesting);\n self.$attr_reader(\"safe\");\n self.$attr_reader(\"compat_mode\");\n self.$attr_reader(\"backend\");\n self.$attr_reader(\"doctype\");\n self.$attr_accessor(\"sourcemap\");\n self.$attr_reader(\"catalog\");\n Opal.alias(self, \"references\", \"catalog\");\n self.$attr_reader(\"counters\");\n self.$attr_reader(\"callouts\");\n self.$attr_reader(\"header\");\n self.$attr_reader(\"base_dir\");\n self.$attr_reader(\"options\");\n self.$attr_reader(\"outfilesuffix\");\n self.$attr_reader(\"parent_document\");\n self.$attr_reader(\"reader\");\n self.$attr_reader(\"converter\");\n self.$attr_reader(\"extensions\");\n \n Opal.def(self, '$initialize', TMP_Document_initialize_7 = function $$initialize(data, options) {\n var $a, TMP_8, TMP_9, $b, $c, TMP_10, $d, self = this, $iter = TMP_Document_initialize_7.$$p, $yield = $iter || nil, parent_doc = nil, $writer = nil, attr_overrides = nil, parent_doctype = nil, initialize_extensions = nil, safe_mode = nil, header_footer = nil, attrs = nil, safe_mode_name = nil, base_dir_val = nil, backend_val = nil, doctype_val = nil, size = nil, now = nil, localdate = nil, localyear = nil, localtime = nil, ext_registry = nil, ext_block = nil;\n\n if (data == null) {\n data = nil;\n }\n if (options == null) {\n options = $hash2([], {});\n }\n if ($iter) TMP_Document_initialize_7.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Document_initialize_7, false), [self, \"document\"], null);\n if ($truthy((parent_doc = options.$delete(\"parent\")))) {\n \n self.parent_document = parent_doc;\n ($truthy($a = options['$[]'](\"base_dir\")) ? $a : (($writer = [\"base_dir\", parent_doc.$base_dir()]), $send(options, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n self.catalog = $send(parent_doc.$catalog(), 'inject', [$hash2([], {})], (TMP_8 = function(accum, $b){var self = TMP_8.$$s || this, $b_args, key, table;\n\n if ($b == null) {\n $b = nil;\n }\n $b = Opal.to_ary($b);\n $b_args = Opal.slice.call($b, 0, $b.length);\n key = $b_args.splice(0,1)[0];\n if (key == null) {\n key = nil;\n }\n table = $b_args.splice(0,1)[0];\n if (table == null) {\n table = nil;\n }if (accum == null) accum = nil;\n \n \n $writer = [key, (function() {if (key['$=='](\"footnotes\")) {\n return []\n } else {\n return table\n }; return nil; })()];\n $send(accum, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return accum;}, TMP_8.$$s = self, TMP_8.$$arity = 2, TMP_8.$$has_top_level_mlhs_arg = true, TMP_8));\n self.callouts = parent_doc.$callouts();\n self.attribute_overrides = (attr_overrides = parent_doc.$attributes().$dup());\n parent_doctype = attr_overrides.$delete(\"doctype\");\n attr_overrides.$delete(\"compat-mode\");\n attr_overrides.$delete(\"toc\");\n attr_overrides.$delete(\"toc-placement\");\n attr_overrides.$delete(\"toc-position\");\n self.safe = parent_doc.$safe();\n if ($truthy((self.compat_mode = parent_doc.$compat_mode()))) {\n \n $writer = [\"compat-mode\", \"\"];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n self.sourcemap = parent_doc.$sourcemap();\n self.converter = parent_doc.$converter();\n initialize_extensions = false;\n self.extensions = parent_doc.$extensions();\n } else {\n \n self.parent_document = nil;\n self.catalog = $hash2([\"ids\", \"refs\", \"footnotes\", \"links\", \"images\", \"indexterms\", \"includes\"], {\"ids\": $hash2([], {}), \"refs\": $hash2([], {}), \"footnotes\": [], \"links\": [], \"images\": [], \"indexterms\": [], \"includes\": $$$('::', 'Set').$new()});\n self.callouts = $$($nesting, 'Callouts').$new();\n attr_overrides = $hash2([], {});\n $send(($truthy($a = options['$[]'](\"attributes\")) ? $a : $hash2([], {})), 'each', [], (TMP_9 = function(key, value){var self = TMP_9.$$s || this;\nif (key == null) key = nil;if (value == null) value = nil;\n \n if ($truthy(key['$start_with?'](\"!\"))) {\n \n key = key['$[]']($range(1, -1, false));\n value = nil;\n } else if ($truthy(key['$end_with?'](\"!\"))) {\n \n key = key.$chop();\n value = nil;};\n \n $writer = [key.$downcase(), value];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;}, TMP_9.$$s = self, TMP_9.$$arity = 2, TMP_9));\n self.attribute_overrides = attr_overrides;\n if ($truthy((safe_mode = options['$[]'](\"safe\"))['$!']())) {\n self.safe = $$$($$($nesting, 'SafeMode'), 'SECURE')\n } else if ($truthy($$$('::', 'Integer')['$==='](safe_mode))) {\n self.safe = safe_mode\n } else {\n \n try {\n self.safe = $$($nesting, 'SafeMode').$value_for_name(safe_mode.$to_s())\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n self.safe = $$$($$($nesting, 'SafeMode'), 'SECURE')\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };\n };\n self.compat_mode = attr_overrides['$key?'](\"compat-mode\");\n self.sourcemap = options['$[]'](\"sourcemap\");\n self.converter = nil;\n initialize_extensions = (($b = $$$('::', 'Asciidoctor', 'skip_raise')) && ($a = $$$($b, 'Extensions', 'skip_raise')) ? 'constant' : nil);\n self.extensions = nil;\n };\n self.parsed = false;\n self.header = nil;\n self.counters = $hash2([], {});\n self.attributes_modified = $$$('::', 'Set').$new();\n self.docinfo_processor_extensions = $hash2([], {});\n header_footer = ($truthy($c = options['$[]'](\"header_footer\")) ? $c : (($writer = [\"header_footer\", false]), $send(options, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n (self.options = options).$freeze();\n attrs = self.attributes;\n \n $writer = [\"sectids\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"toc-placement\", \"auto\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(header_footer)) {\n \n \n $writer = [\"copycss\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"embedded\", nil];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n \n \n $writer = [\"notitle\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"embedded\", \"\"];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n \n $writer = [\"stylesheet\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"webfonts\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"prewrap\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"attribute-undefined\", $$($nesting, 'Compliance').$attribute_undefined()];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"attribute-missing\", $$($nesting, 'Compliance').$attribute_missing()];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"iconfont-remote\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"caution-caption\", \"Caution\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"important-caption\", \"Important\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"note-caption\", \"Note\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"tip-caption\", \"Tip\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"warning-caption\", \"Warning\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"example-caption\", \"Example\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"figure-caption\", \"Figure\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"table-caption\", \"Table\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"toc-title\", \"Table of Contents\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"manname-title\", \"NAME\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"section-refsig\", \"Section\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"chapter-refsig\", \"Chapter\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"appendix-caption\", (($writer = [\"appendix-refsig\", \"Appendix\"]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"untitled-label\", \"Untitled\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"version-label\", \"Version\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"last-update-label\", \"Last updated\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"asciidoctor\", \"\"];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"asciidoctor-version\", $$($nesting, 'VERSION')];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"safe-mode-name\", (safe_mode_name = $$($nesting, 'SafeMode').$name_for_value(self.safe))];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"\" + \"safe-mode-\" + (safe_mode_name), \"\"];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"safe-mode-level\", self.safe];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n ($truthy($c = attr_overrides['$[]'](\"max-include-depth\")) ? $c : (($writer = [\"max-include-depth\", 64]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attr_overrides['$[]'](\"allow-uri-read\")) ? $c : (($writer = [\"allow-uri-read\", nil]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n \n $writer = [\"user-home\", $$($nesting, 'USER_HOME')];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(attr_overrides['$key?'](\"numbered\"))) {\n \n $writer = [\"sectnums\", attr_overrides.$delete(\"numbered\")];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy((base_dir_val = options['$[]'](\"base_dir\")))) {\n self.base_dir = (($writer = [\"docdir\", $$$('::', 'File').$expand_path(base_dir_val)]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])\n } else if ($truthy(attr_overrides['$[]'](\"docdir\"))) {\n self.base_dir = attr_overrides['$[]'](\"docdir\")\n } else {\n self.base_dir = (($writer = [\"docdir\", $$$('::', 'Dir').$pwd()]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])\n };\n if ($truthy((backend_val = options['$[]'](\"backend\")))) {\n \n $writer = [\"backend\", \"\" + (backend_val)];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy((doctype_val = options['$[]'](\"doctype\")))) {\n \n $writer = [\"doctype\", \"\" + (doctype_val)];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy($rb_ge(self.safe, $$$($$($nesting, 'SafeMode'), 'SERVER')))) {\n \n ($truthy($c = attr_overrides['$[]'](\"copycss\")) ? $c : (($writer = [\"copycss\", nil]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attr_overrides['$[]'](\"source-highlighter\")) ? $c : (($writer = [\"source-highlighter\", nil]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attr_overrides['$[]'](\"backend\")) ? $c : (($writer = [\"backend\", $$($nesting, 'DEFAULT_BACKEND')]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n if ($truthy(($truthy($c = parent_doc['$!']()) ? attr_overrides['$key?'](\"docfile\") : $c))) {\n \n $writer = [\"docfile\", attr_overrides['$[]'](\"docfile\")['$[]'](Opal.Range.$new($rb_plus(attr_overrides['$[]'](\"docdir\").$length(), 1), -1, false))];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n \n $writer = [\"docdir\", \"\"];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"user-home\", \".\"];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy($rb_ge(self.safe, $$$($$($nesting, 'SafeMode'), 'SECURE')))) {\n \n if ($truthy(attr_overrides['$key?'](\"max-attribute-value-size\"))) {\n } else {\n \n $writer = [\"max-attribute-value-size\", 4096];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if ($truthy(attr_overrides.$fetch(\"linkcss\", \"\")['$nil?']())) {\n } else {\n \n $writer = [\"linkcss\", \"\"];\n $send(attr_overrides, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n ($truthy($c = attr_overrides['$[]'](\"icons\")) ? $c : (($writer = [\"icons\", nil]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));};};\n self.max_attribute_value_size = (function() {if ($truthy((size = ($truthy($c = attr_overrides['$[]'](\"max-attribute-value-size\")) ? $c : (($writer = [\"max-attribute-value-size\", nil]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))))) {\n return size.$to_i().$abs()\n } else {\n return nil\n }; return nil; })();\n $send(attr_overrides, 'delete_if', [], (TMP_10 = function(key, val){var self = TMP_10.$$s || this, $d, verdict = nil;\nif (key == null) key = nil;if (val == null) val = nil;\n \n verdict = false;\n if ($truthy(val['$nil?']())) {\n attrs.$delete(key)\n } else {\n \n if ($truthy(($truthy($d = $$$('::', 'String')['$==='](val)) ? val['$end_with?'](\"@\") : $d))) {\n \n val = val.$chop();\n verdict = true;};\n \n $writer = [key, val];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n return verdict;}, TMP_10.$$s = self, TMP_10.$$arity = 2, TMP_10));\n if ($truthy(parent_doc)) {\n \n self.backend = attrs['$[]'](\"backend\");\n if ((self.doctype = (($writer = [\"doctype\", parent_doctype]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))['$==']($$($nesting, 'DEFAULT_DOCTYPE'))) {\n } else {\n self.$update_doctype_attributes($$($nesting, 'DEFAULT_DOCTYPE'))\n };\n self.reader = $$($nesting, 'Reader').$new(data, options['$[]'](\"cursor\"));\n $$($nesting, 'Parser').$parse(self.reader, self);\n self.$restore_attributes();\n return (self.parsed = true);\n } else {\n \n self.backend = nil;\n if (($truthy($c = attrs['$[]'](\"backend\")) ? $c : (($writer = [\"backend\", $$($nesting, 'DEFAULT_BACKEND')]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))['$=='](\"manpage\")) {\n self.doctype = (($writer = [\"doctype\", (($writer = [\"doctype\", \"manpage\"]), $send(attr_overrides, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])\n } else {\n self.doctype = ($truthy($c = attrs['$[]'](\"doctype\")) ? $c : (($writer = [\"doctype\", $$($nesting, 'DEFAULT_DOCTYPE')]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n };\n self.$update_backend_attributes(attrs['$[]'](\"backend\"), true);\n now = (function() {if ($truthy($$$('::', 'ENV')['$[]'](\"SOURCE_DATE_EPOCH\"))) {\n return $$$('::', 'Time').$at(self.$Integer($$$('::', 'ENV')['$[]'](\"SOURCE_DATE_EPOCH\"))).$utc()\n } else {\n return $$$('::', 'Time').$now()\n }; return nil; })();\n if ($truthy((localdate = attrs['$[]'](\"localdate\")))) {\n localyear = ($truthy($c = attrs['$[]'](\"localyear\")) ? $c : (($writer = [\"localyear\", (function() {if (localdate.$index(\"-\")['$=='](4)) {\n \n return localdate.$slice(0, 4);\n } else {\n return nil\n }; return nil; })()]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n } else {\n \n localdate = (($writer = [\"localdate\", now.$strftime(\"%Y-%m-%d\")]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]);\n localyear = ($truthy($c = attrs['$[]'](\"localyear\")) ? $c : (($writer = [\"localyear\", now.$year().$to_s()]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n };\n localtime = ($truthy($c = attrs['$[]'](\"localtime\")) ? $c : (($writer = [\"localtime\", (function() { try {\n return now.$strftime(\"%H:%M:%S %Z\")\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n return now.$strftime(\"%H:%M:%S %z\")\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }})()]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attrs['$[]'](\"localdatetime\")) ? $c : (($writer = [\"localdatetime\", \"\" + (localdate) + \" \" + (localtime)]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attrs['$[]'](\"docdate\")) ? $c : (($writer = [\"docdate\", localdate]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attrs['$[]'](\"docyear\")) ? $c : (($writer = [\"docyear\", localyear]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attrs['$[]'](\"doctime\")) ? $c : (($writer = [\"doctime\", localtime]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attrs['$[]'](\"docdatetime\")) ? $c : (($writer = [\"docdatetime\", \"\" + (localdate) + \" \" + (localtime)]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attrs['$[]'](\"stylesdir\")) ? $c : (($writer = [\"stylesdir\", \".\"]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($c = attrs['$[]'](\"iconsdir\")) ? $c : (($writer = [\"iconsdir\", $$$('::', 'File').$join(attrs.$fetch(\"imagesdir\", \"./images\"), \"icons\")]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n if ($truthy(initialize_extensions)) {\n \n if ($truthy((ext_registry = options['$[]'](\"extension_registry\")))) {\n if ($truthy(($truthy($c = $$$($$($nesting, 'Extensions'), 'Registry')['$==='](ext_registry)) ? $c : ($truthy($d = $$$('::', 'RUBY_ENGINE_JRUBY')) ? $$$($$$($$$('::', 'AsciidoctorJ'), 'Extensions'), 'ExtensionRegistry')['$==='](ext_registry) : $d)))) {\n } else {\n ext_registry = $$$($$($nesting, 'Extensions'), 'Registry').$new()\n }\n } else if ($truthy($$$('::', 'Proc')['$===']((ext_block = options['$[]'](\"extensions\"))))) {\n ext_registry = $send($$($nesting, 'Extensions'), 'create', [], ext_block.$to_proc())\n } else {\n ext_registry = $$$($$($nesting, 'Extensions'), 'Registry').$new()\n };\n self.extensions = ext_registry.$activate(self);};\n return (self.reader = $$($nesting, 'PreprocessorReader').$new(self, data, $$$($$($nesting, 'Reader'), 'Cursor').$new(attrs['$[]'](\"docfile\"), self.base_dir), $hash2([\"normalize\"], {\"normalize\": true})));\n };\n }, TMP_Document_initialize_7.$$arity = -1);\n \n Opal.def(self, '$parse', TMP_Document_parse_13 = function $$parse(data) {\n var $a, TMP_11, TMP_12, self = this, doc = nil, exts = nil;\n\n if (data == null) {\n data = nil;\n }\n if ($truthy(self.parsed)) {\n return self\n } else {\n \n doc = self;\n if ($truthy(data)) {\n self.reader = $$($nesting, 'PreprocessorReader').$new(doc, data, $$$($$($nesting, 'Reader'), 'Cursor').$new(self.attributes['$[]'](\"docfile\"), self.base_dir), $hash2([\"normalize\"], {\"normalize\": true}))};\n if ($truthy(($truthy($a = (exts = (function() {if ($truthy(self.parent_document)) {\n return nil\n } else {\n return self.extensions\n }; return nil; })())) ? exts['$preprocessors?']() : $a))) {\n $send(exts.$preprocessors(), 'each', [], (TMP_11 = function(ext){var self = TMP_11.$$s || this, $b;\n if (self.reader == null) self.reader = nil;\nif (ext == null) ext = nil;\n return (self.reader = ($truthy($b = ext.$process_method()['$[]'](doc, self.reader)) ? $b : self.reader))}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11))};\n $$($nesting, 'Parser').$parse(self.reader, doc, $hash2([\"header_only\"], {\"header_only\": self.options['$[]'](\"parse_header_only\")}));\n self.$restore_attributes();\n if ($truthy(($truthy($a = exts) ? exts['$tree_processors?']() : $a))) {\n $send(exts.$tree_processors(), 'each', [], (TMP_12 = function(ext){var self = TMP_12.$$s || this, $b, $c, result = nil;\nif (ext == null) ext = nil;\n if ($truthy(($truthy($b = ($truthy($c = (result = ext.$process_method()['$[]'](doc))) ? $$($nesting, 'Document')['$==='](result) : $c)) ? result['$!='](doc) : $b))) {\n return (doc = result)\n } else {\n return nil\n }}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12))};\n self.parsed = true;\n return doc;\n }\n }, TMP_Document_parse_13.$$arity = -1);\n \n Opal.def(self, '$counter', TMP_Document_counter_14 = function $$counter(name, seed) {\n var $a, self = this, attr_seed = nil, attr_val = nil, $writer = nil;\n\n if (seed == null) {\n seed = nil;\n }\n \n if ($truthy(self.parent_document)) {\n return self.parent_document.$counter(name, seed)};\n if ($truthy(($truthy($a = (attr_seed = (attr_val = self.attributes['$[]'](name))['$nil_or_empty?']()['$!']())) ? self.counters['$key?'](name) : $a))) {\n \n $writer = [name, (($writer = [name, self.$nextval(attr_val)]), $send(self.counters, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else if ($truthy(seed)) {\n \n $writer = [name, (($writer = [name, (function() {if (seed['$=='](seed.$to_i().$to_s())) {\n return seed.$to_i()\n } else {\n return seed\n }; return nil; })()]), $send(self.counters, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [name, (($writer = [name, self.$nextval((function() {if ($truthy(attr_seed)) {\n return attr_val\n } else {\n return 0\n }; return nil; })())]), $send(self.counters, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n };\n }, TMP_Document_counter_14.$$arity = -2);\n \n Opal.def(self, '$increment_and_store_counter', TMP_Document_increment_and_store_counter_15 = function $$increment_and_store_counter(counter_name, block) {\n var self = this;\n\n return $$($nesting, 'AttributeEntry').$new(counter_name, self.$counter(counter_name)).$save_to(block.$attributes()).$value()\n }, TMP_Document_increment_and_store_counter_15.$$arity = 2);\n Opal.alias(self, \"counter_increment\", \"increment_and_store_counter\");\n \n Opal.def(self, '$nextval', TMP_Document_nextval_16 = function $$nextval(current) {\n var self = this, intval = nil;\n\n if ($truthy($$$('::', 'Integer')['$==='](current))) {\n return $rb_plus(current, 1)\n } else {\n \n intval = current.$to_i();\n if ($truthy(intval.$to_s()['$!='](current.$to_s()))) {\n return $rb_plus(current['$[]'](0).$ord(), 1).$chr()\n } else {\n return $rb_plus(intval, 1)\n };\n }\n }, TMP_Document_nextval_16.$$arity = 1);\n \n Opal.def(self, '$register', TMP_Document_register_17 = function $$register(type, value) {\n var $a, $b, self = this, $case = nil, id = nil, reftext = nil, $logical_op_recvr_tmp_1 = nil, $writer = nil, ref = nil, refs = nil;\n\n return (function() {$case = type;\n if (\"ids\"['$===']($case)) {\n $b = value, $a = Opal.to_ary($b), (id = ($a[0] == null ? nil : $a[0])), (reftext = ($a[1] == null ? nil : $a[1])), $b;\n \n $logical_op_recvr_tmp_1 = self.catalog['$[]'](\"ids\");\n return ($truthy($a = $logical_op_recvr_tmp_1['$[]'](id)) ? $a : (($writer = [id, ($truthy($b = reftext) ? $b : $rb_plus($rb_plus(\"[\", id), \"]\"))]), $send($logical_op_recvr_tmp_1, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));;}\n else if (\"refs\"['$===']($case)) {\n $b = value, $a = Opal.to_ary($b), (id = ($a[0] == null ? nil : $a[0])), (ref = ($a[1] == null ? nil : $a[1])), (reftext = ($a[2] == null ? nil : $a[2])), $b;\n if ($truthy((refs = self.catalog['$[]'](\"refs\"))['$key?'](id))) {\n return nil\n } else {\n \n \n $writer = [id, ($truthy($a = reftext) ? $a : $rb_plus($rb_plus(\"[\", id), \"]\"))];\n $send(self.catalog['$[]'](\"ids\"), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [id, ref];\n $send(refs, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n };}\n else if (\"footnotes\"['$===']($case) || \"indexterms\"['$===']($case)) {return self.catalog['$[]'](type)['$<<'](value)}\n else {if ($truthy(self.options['$[]'](\"catalog_assets\"))) {\n return self.catalog['$[]'](type)['$<<'](value)\n } else {\n return nil\n }}})()\n }, TMP_Document_register_17.$$arity = 2);\n \n Opal.def(self, '$footnotes?', TMP_Document_footnotes$q_18 = function() {\n var self = this;\n\n if ($truthy(self.catalog['$[]'](\"footnotes\")['$empty?']())) {\n return false\n } else {\n return true\n }\n }, TMP_Document_footnotes$q_18.$$arity = 0);\n \n Opal.def(self, '$footnotes', TMP_Document_footnotes_19 = function $$footnotes() {\n var self = this;\n\n return self.catalog['$[]'](\"footnotes\")\n }, TMP_Document_footnotes_19.$$arity = 0);\n \n Opal.def(self, '$nested?', TMP_Document_nested$q_20 = function() {\n var self = this;\n\n if ($truthy(self.parent_document)) {\n return true\n } else {\n return false\n }\n }, TMP_Document_nested$q_20.$$arity = 0);\n \n Opal.def(self, '$embedded?', TMP_Document_embedded$q_21 = function() {\n var self = this;\n\n return self.attributes['$key?'](\"embedded\")\n }, TMP_Document_embedded$q_21.$$arity = 0);\n \n Opal.def(self, '$extensions?', TMP_Document_extensions$q_22 = function() {\n var self = this;\n\n if ($truthy(self.extensions)) {\n return true\n } else {\n return false\n }\n }, TMP_Document_extensions$q_22.$$arity = 0);\n \n Opal.def(self, '$source', TMP_Document_source_23 = function $$source() {\n var self = this;\n\n if ($truthy(self.reader)) {\n return self.reader.$source()\n } else {\n return nil\n }\n }, TMP_Document_source_23.$$arity = 0);\n \n Opal.def(self, '$source_lines', TMP_Document_source_lines_24 = function $$source_lines() {\n var self = this;\n\n if ($truthy(self.reader)) {\n return self.reader.$source_lines()\n } else {\n return nil\n }\n }, TMP_Document_source_lines_24.$$arity = 0);\n \n Opal.def(self, '$basebackend?', TMP_Document_basebackend$q_25 = function(base) {\n var self = this;\n\n return self.attributes['$[]'](\"basebackend\")['$=='](base)\n }, TMP_Document_basebackend$q_25.$$arity = 1);\n \n Opal.def(self, '$title', TMP_Document_title_26 = function $$title() {\n var self = this;\n\n return self.attributes['$[]'](\"title\")\n }, TMP_Document_title_26.$$arity = 0);\n \n Opal.def(self, '$title=', TMP_Document_title$eq_27 = function(title) {\n var self = this, sect = nil, $writer = nil;\n\n \n if ($truthy((sect = self.header))) {\n } else {\n \n $writer = [\"header\"];\n $send((sect = (self.header = $$($nesting, 'Section').$new(self, 0, false))), 'sectname=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n \n $writer = [title];\n $send(sect, 'title=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n }, TMP_Document_title$eq_27.$$arity = 1);\n \n Opal.def(self, '$doctitle', TMP_Document_doctitle_28 = function $$doctitle(opts) {\n var $a, self = this, val = nil, sect = nil, separator = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy((val = self.attributes['$[]'](\"title\")['$nil_or_empty?']())['$!']())) {\n val = self.$title()\n } else if ($truthy((sect = self.$first_section()))) {\n val = sect.$title()\n } else if ($truthy(($truthy($a = opts['$[]'](\"use_fallback\")) ? (val = self.attributes['$[]'](\"untitled-label\")) : $a))) {\n } else {\n return nil\n };\n if ($truthy((separator = opts['$[]'](\"partition\")))) {\n return $$($nesting, 'Title').$new(val, opts.$merge($hash2([\"separator\"], {\"separator\": (function() {if (separator['$=='](true)) {\n return self.attributes['$[]'](\"title-separator\")\n } else {\n return separator\n }; return nil; })()})))\n } else if ($truthy(($truthy($a = opts['$[]'](\"sanitize\")) ? val['$include?'](\"<\") : $a))) {\n return val.$gsub($$($nesting, 'XmlSanitizeRx'), \"\").$squeeze(\" \").$strip()\n } else {\n return val\n };\n }, TMP_Document_doctitle_28.$$arity = -1);\n Opal.alias(self, \"name\", \"doctitle\");\n \n Opal.def(self, '$author', TMP_Document_author_29 = function $$author() {\n var self = this;\n\n return self.attributes['$[]'](\"author\")\n }, TMP_Document_author_29.$$arity = 0);\n \n Opal.def(self, '$revdate', TMP_Document_revdate_30 = function $$revdate() {\n var self = this;\n\n return self.attributes['$[]'](\"revdate\")\n }, TMP_Document_revdate_30.$$arity = 0);\n \n Opal.def(self, '$notitle', TMP_Document_notitle_31 = function $$notitle() {\n var $a, self = this;\n\n return ($truthy($a = self.attributes['$key?'](\"showtitle\")['$!']()) ? self.attributes['$key?'](\"notitle\") : $a)\n }, TMP_Document_notitle_31.$$arity = 0);\n \n Opal.def(self, '$noheader', TMP_Document_noheader_32 = function $$noheader() {\n var self = this;\n\n return self.attributes['$key?'](\"noheader\")\n }, TMP_Document_noheader_32.$$arity = 0);\n \n Opal.def(self, '$nofooter', TMP_Document_nofooter_33 = function $$nofooter() {\n var self = this;\n\n return self.attributes['$key?'](\"nofooter\")\n }, TMP_Document_nofooter_33.$$arity = 0);\n \n Opal.def(self, '$first_section', TMP_Document_first_section_35 = function $$first_section() {\n var $a, TMP_34, self = this;\n\n return ($truthy($a = self.header) ? $a : $send(self.blocks, 'find', [], (TMP_34 = function(e){var self = TMP_34.$$s || this;\nif (e == null) e = nil;\n return e.$context()['$=='](\"section\")}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34)))\n }, TMP_Document_first_section_35.$$arity = 0);\n \n Opal.def(self, '$has_header?', TMP_Document_has_header$q_36 = function() {\n var self = this;\n\n if ($truthy(self.header)) {\n return true\n } else {\n return false\n }\n }, TMP_Document_has_header$q_36.$$arity = 0);\n Opal.alias(self, \"header?\", \"has_header?\");\n \n Opal.def(self, '$<<', TMP_Document_$lt$lt_37 = function(block) {\n var self = this, $iter = TMP_Document_$lt$lt_37.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Document_$lt$lt_37.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n if (block.$context()['$=='](\"section\")) {\n self.$enumerate_section(block)};\n return $send(self, Opal.find_super_dispatcher(self, '<<', TMP_Document_$lt$lt_37, false), $zuper, $iter);\n }, TMP_Document_$lt$lt_37.$$arity = 1);\n \n Opal.def(self, '$finalize_header', TMP_Document_finalize_header_38 = function $$finalize_header(unrooted_attributes, header_valid) {\n var self = this, $writer = nil;\n\n if (header_valid == null) {\n header_valid = true;\n }\n \n self.$clear_playback_attributes(unrooted_attributes);\n self.$save_attributes();\n if ($truthy(header_valid)) {\n } else {\n \n $writer = [\"invalid-header\", true];\n $send(unrooted_attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n return unrooted_attributes;\n }, TMP_Document_finalize_header_38.$$arity = -2);\n \n Opal.def(self, '$save_attributes', TMP_Document_save_attributes_40 = function $$save_attributes() {\n var $a, $b, TMP_39, self = this, attrs = nil, $writer = nil, val = nil, toc_position_val = nil, toc_val = nil, toc_placement = nil, default_toc_position = nil, default_toc_class = nil, position = nil, $case = nil;\n\n \n if ((attrs = self.attributes)['$[]'](\"basebackend\")['$=='](\"docbook\")) {\n \n if ($truthy(($truthy($a = self['$attribute_locked?'](\"toc\")) ? $a : self.attributes_modified['$include?'](\"toc\")))) {\n } else {\n \n $writer = [\"toc\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if ($truthy(($truthy($a = self['$attribute_locked?'](\"sectnums\")) ? $a : self.attributes_modified['$include?'](\"sectnums\")))) {\n } else {\n \n $writer = [\"sectnums\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };};\n if ($truthy(($truthy($a = attrs['$key?'](\"doctitle\")) ? $a : (val = self.$doctitle())['$!']()))) {\n } else {\n \n $writer = [\"doctitle\", val];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if ($truthy(self.id)) {\n } else {\n self.id = attrs['$[]'](\"css-signature\")\n };\n toc_position_val = (function() {if ($truthy((toc_val = (function() {if ($truthy(attrs.$delete(\"toc2\"))) {\n return \"left\"\n } else {\n return attrs['$[]'](\"toc\")\n }; return nil; })()))) {\n if ($truthy(($truthy($a = (toc_placement = attrs.$fetch(\"toc-placement\", \"macro\"))) ? toc_placement['$!='](\"auto\") : $a))) {\n return toc_placement\n } else {\n return attrs['$[]'](\"toc-position\")\n }\n } else {\n return nil\n }; return nil; })();\n if ($truthy(($truthy($a = toc_val) ? ($truthy($b = toc_val['$empty?']()['$!']()) ? $b : toc_position_val['$nil_or_empty?']()['$!']()) : $a))) {\n \n default_toc_position = \"left\";\n default_toc_class = \"toc2\";\n if ($truthy(toc_position_val['$nil_or_empty?']()['$!']())) {\n position = toc_position_val\n } else if ($truthy(toc_val['$empty?']()['$!']())) {\n position = toc_val\n } else {\n position = default_toc_position\n };\n \n $writer = [\"toc\", \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"toc-placement\", \"auto\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n $case = position;\n if (\"left\"['$===']($case) || \"<\"['$===']($case) || \"<\"['$===']($case)) {\n $writer = [\"toc-position\", \"left\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n else if (\"right\"['$===']($case) || \">\"['$===']($case) || \">\"['$===']($case)) {\n $writer = [\"toc-position\", \"right\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n else if (\"top\"['$===']($case) || \"^\"['$===']($case)) {\n $writer = [\"toc-position\", \"top\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n else if (\"bottom\"['$===']($case) || \"v\"['$===']($case)) {\n $writer = [\"toc-position\", \"bottom\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n else if (\"preamble\"['$===']($case) || \"macro\"['$===']($case)) {\n \n $writer = [\"toc-position\", \"content\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"toc-placement\", position];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n default_toc_class = nil;}\n else {\n attrs.$delete(\"toc-position\");\n default_toc_class = nil;};\n if ($truthy(default_toc_class)) {\n ($truthy($a = attrs['$[]'](\"toc-class\")) ? $a : (($writer = [\"toc-class\", default_toc_class]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))};};\n if ($truthy((self.compat_mode = attrs['$key?'](\"compat-mode\")))) {\n if ($truthy(attrs['$key?'](\"language\"))) {\n \n $writer = [\"source-language\", attrs['$[]'](\"language\")];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}};\n self.outfilesuffix = attrs['$[]'](\"outfilesuffix\");\n self.header_attributes = attrs.$dup();\n if ($truthy(self.parent_document)) {\n return nil\n } else {\n return $send($$($nesting, 'FLEXIBLE_ATTRIBUTES'), 'each', [], (TMP_39 = function(name){var self = TMP_39.$$s || this, $c;\n if (self.attribute_overrides == null) self.attribute_overrides = nil;\nif (name == null) name = nil;\n if ($truthy(($truthy($c = self.attribute_overrides['$key?'](name)) ? self.attribute_overrides['$[]'](name) : $c))) {\n return self.attribute_overrides.$delete(name)\n } else {\n return nil\n }}, TMP_39.$$s = self, TMP_39.$$arity = 1, TMP_39))\n };\n }, TMP_Document_save_attributes_40.$$arity = 0);\n \n Opal.def(self, '$restore_attributes', TMP_Document_restore_attributes_41 = function $$restore_attributes() {\n var self = this;\n\n \n if ($truthy(self.parent_document)) {\n } else {\n self.callouts.$rewind()\n };\n return (self.attributes = self.header_attributes);\n }, TMP_Document_restore_attributes_41.$$arity = 0);\n \n Opal.def(self, '$clear_playback_attributes', TMP_Document_clear_playback_attributes_42 = function $$clear_playback_attributes(attributes) {\n var self = this;\n\n return attributes.$delete(\"attribute_entries\")\n }, TMP_Document_clear_playback_attributes_42.$$arity = 1);\n \n Opal.def(self, '$playback_attributes', TMP_Document_playback_attributes_44 = function $$playback_attributes(block_attributes) {\n var TMP_43, self = this;\n\n if ($truthy(block_attributes['$key?'](\"attribute_entries\"))) {\n return $send(block_attributes['$[]'](\"attribute_entries\"), 'each', [], (TMP_43 = function(entry){var self = TMP_43.$$s || this, name = nil, $writer = nil;\n if (self.attributes == null) self.attributes = nil;\nif (entry == null) entry = nil;\n \n name = entry.$name();\n if ($truthy(entry.$negate())) {\n \n self.attributes.$delete(name);\n if (name['$=='](\"compat-mode\")) {\n return (self.compat_mode = false)\n } else {\n return nil\n };\n } else {\n \n \n $writer = [name, entry.$value()];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if (name['$=='](\"compat-mode\")) {\n return (self.compat_mode = true)\n } else {\n return nil\n };\n };}, TMP_43.$$s = self, TMP_43.$$arity = 1, TMP_43))\n } else {\n return nil\n }\n }, TMP_Document_playback_attributes_44.$$arity = 1);\n \n Opal.def(self, '$set_attribute', TMP_Document_set_attribute_45 = function $$set_attribute(name, value) {\n var self = this, resolved_value = nil, $case = nil, $writer = nil;\n\n if (value == null) {\n value = \"\";\n }\n if ($truthy(self['$attribute_locked?'](name))) {\n return false\n } else {\n \n if ($truthy(self.max_attribute_value_size)) {\n resolved_value = self.$apply_attribute_value_subs(value).$limit_bytesize(self.max_attribute_value_size)\n } else {\n resolved_value = self.$apply_attribute_value_subs(value)\n };\n $case = name;\n if (\"backend\"['$===']($case)) {self.$update_backend_attributes(resolved_value, self.attributes_modified['$delete?'](\"htmlsyntax\"))}\n else if (\"doctype\"['$===']($case)) {self.$update_doctype_attributes(resolved_value)}\n else {\n $writer = [name, resolved_value];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n self.attributes_modified['$<<'](name);\n return resolved_value;\n }\n }, TMP_Document_set_attribute_45.$$arity = -2);\n \n Opal.def(self, '$delete_attribute', TMP_Document_delete_attribute_46 = function $$delete_attribute(name) {\n var self = this;\n\n if ($truthy(self['$attribute_locked?'](name))) {\n return false\n } else {\n \n self.attributes.$delete(name);\n self.attributes_modified['$<<'](name);\n return true;\n }\n }, TMP_Document_delete_attribute_46.$$arity = 1);\n \n Opal.def(self, '$attribute_locked?', TMP_Document_attribute_locked$q_47 = function(name) {\n var self = this;\n\n return self.attribute_overrides['$key?'](name)\n }, TMP_Document_attribute_locked$q_47.$$arity = 1);\n \n Opal.def(self, '$apply_attribute_value_subs', TMP_Document_apply_attribute_value_subs_48 = function $$apply_attribute_value_subs(value) {\n var $a, self = this;\n\n if ($truthy($$($nesting, 'AttributeEntryPassMacroRx')['$=~'](value))) {\n if ($truthy((($a = $gvars['~']) === nil ? nil : $a['$[]'](1)))) {\n \n return self.$apply_subs((($a = $gvars['~']) === nil ? nil : $a['$[]'](2)), self.$resolve_pass_subs((($a = $gvars['~']) === nil ? nil : $a['$[]'](1))));\n } else {\n return (($a = $gvars['~']) === nil ? nil : $a['$[]'](2))\n }\n } else {\n return self.$apply_header_subs(value)\n }\n }, TMP_Document_apply_attribute_value_subs_48.$$arity = 1);\n \n Opal.def(self, '$update_backend_attributes', TMP_Document_update_backend_attributes_49 = function $$update_backend_attributes(new_backend, force) {\n var $a, $b, self = this, attrs = nil, current_backend = nil, current_basebackend = nil, current_doctype = nil, $writer = nil, resolved_backend = nil, new_basebackend = nil, new_filetype = nil, new_outfilesuffix = nil, current_filetype = nil, page_width = nil;\n\n if (force == null) {\n force = nil;\n }\n if ($truthy(($truthy($a = force) ? $a : ($truthy($b = new_backend) ? new_backend['$!='](self.backend) : $b)))) {\n \n $a = [self.backend, (attrs = self.attributes)['$[]'](\"basebackend\"), self.doctype], (current_backend = $a[0]), (current_basebackend = $a[1]), (current_doctype = $a[2]), $a;\n if ($truthy(new_backend['$start_with?'](\"xhtml\"))) {\n \n \n $writer = [\"htmlsyntax\", \"xml\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n new_backend = new_backend['$[]']($range(1, -1, false));\n } else if ($truthy(new_backend['$start_with?'](\"html\"))) {\n if (attrs['$[]'](\"htmlsyntax\")['$=='](\"xml\")) {\n } else {\n \n $writer = [\"htmlsyntax\", \"html\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n }};\n if ($truthy((resolved_backend = $$($nesting, 'BACKEND_ALIASES')['$[]'](new_backend)))) {\n new_backend = resolved_backend};\n if ($truthy(current_doctype)) {\n \n if ($truthy(current_backend)) {\n \n attrs.$delete(\"\" + \"backend-\" + (current_backend));\n attrs.$delete(\"\" + \"backend-\" + (current_backend) + \"-doctype-\" + (current_doctype));};\n \n $writer = [\"\" + \"backend-\" + (new_backend) + \"-doctype-\" + (current_doctype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"\" + \"doctype-\" + (current_doctype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else if ($truthy(current_backend)) {\n attrs.$delete(\"\" + \"backend-\" + (current_backend))};\n \n $writer = [\"\" + \"backend-\" + (new_backend), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n self.backend = (($writer = [\"backend\", new_backend]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]);\n if ($truthy($$$($$($nesting, 'Converter'), 'BackendInfo')['$===']((self.converter = self.$create_converter())))) {\n \n new_basebackend = self.converter.$basebackend();\n if ($truthy(self['$attribute_locked?'](\"outfilesuffix\"))) {\n } else {\n \n $writer = [\"outfilesuffix\", self.converter.$outfilesuffix()];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n new_filetype = self.converter.$filetype();\n } else if ($truthy(self.converter)) {\n \n new_basebackend = new_backend.$sub($$($nesting, 'TrailingDigitsRx'), \"\");\n if ($truthy((new_outfilesuffix = $$($nesting, 'DEFAULT_EXTENSIONS')['$[]'](new_basebackend)))) {\n new_filetype = new_outfilesuffix['$[]']($range(1, -1, false))\n } else {\n $a = [\".html\", \"html\", \"html\"], (new_outfilesuffix = $a[0]), (new_basebackend = $a[1]), (new_filetype = $a[2]), $a\n };\n if ($truthy(self['$attribute_locked?'](\"outfilesuffix\"))) {\n } else {\n \n $writer = [\"outfilesuffix\", new_outfilesuffix];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n } else {\n self.$raise($$$('::', 'NotImplementedError'), \"\" + \"asciidoctor: FAILED: missing converter for backend '\" + (new_backend) + \"'. Processing aborted.\")\n };\n if ($truthy((current_filetype = attrs['$[]'](\"filetype\")))) {\n attrs.$delete(\"\" + \"filetype-\" + (current_filetype))};\n \n $writer = [\"filetype\", new_filetype];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"\" + \"filetype-\" + (new_filetype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy((page_width = $$($nesting, 'DEFAULT_PAGE_WIDTHS')['$[]'](new_basebackend)))) {\n \n $writer = [\"pagewidth\", page_width];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n attrs.$delete(\"pagewidth\")\n };\n if ($truthy(new_basebackend['$!='](current_basebackend))) {\n \n if ($truthy(current_doctype)) {\n \n if ($truthy(current_basebackend)) {\n \n attrs.$delete(\"\" + \"basebackend-\" + (current_basebackend));\n attrs.$delete(\"\" + \"basebackend-\" + (current_basebackend) + \"-doctype-\" + (current_doctype));};\n \n $writer = [\"\" + \"basebackend-\" + (new_basebackend) + \"-doctype-\" + (current_doctype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else if ($truthy(current_basebackend)) {\n attrs.$delete(\"\" + \"basebackend-\" + (current_basebackend))};\n \n $writer = [\"\" + \"basebackend-\" + (new_basebackend), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"basebackend\", new_basebackend];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n return new_backend;\n } else {\n return nil\n }\n }, TMP_Document_update_backend_attributes_49.$$arity = -2);\n \n Opal.def(self, '$update_doctype_attributes', TMP_Document_update_doctype_attributes_50 = function $$update_doctype_attributes(new_doctype) {\n var $a, self = this, attrs = nil, current_backend = nil, current_basebackend = nil, current_doctype = nil, $writer = nil;\n\n if ($truthy(($truthy($a = new_doctype) ? new_doctype['$!='](self.doctype) : $a))) {\n \n $a = [self.backend, (attrs = self.attributes)['$[]'](\"basebackend\"), self.doctype], (current_backend = $a[0]), (current_basebackend = $a[1]), (current_doctype = $a[2]), $a;\n if ($truthy(current_doctype)) {\n \n attrs.$delete(\"\" + \"doctype-\" + (current_doctype));\n if ($truthy(current_backend)) {\n \n attrs.$delete(\"\" + \"backend-\" + (current_backend) + \"-doctype-\" + (current_doctype));\n \n $writer = [\"\" + \"backend-\" + (current_backend) + \"-doctype-\" + (new_doctype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n if ($truthy(current_basebackend)) {\n \n attrs.$delete(\"\" + \"basebackend-\" + (current_basebackend) + \"-doctype-\" + (current_doctype));\n \n $writer = [\"\" + \"basebackend-\" + (current_basebackend) + \"-doctype-\" + (new_doctype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n } else {\n \n if ($truthy(current_backend)) {\n \n $writer = [\"\" + \"backend-\" + (current_backend) + \"-doctype-\" + (new_doctype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(current_basebackend)) {\n \n $writer = [\"\" + \"basebackend-\" + (current_basebackend) + \"-doctype-\" + (new_doctype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n };\n \n $writer = [\"\" + \"doctype-\" + (new_doctype), \"\"];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return (self.doctype = (($writer = [\"doctype\", new_doctype]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n } else {\n return nil\n }\n }, TMP_Document_update_doctype_attributes_50.$$arity = 1);\n \n Opal.def(self, '$create_converter', TMP_Document_create_converter_51 = function $$create_converter() {\n var self = this, converter_opts = nil, $writer = nil, template_dirs = nil, template_dir = nil, converter = nil, converter_factory = nil;\n\n \n converter_opts = $hash2([], {});\n \n $writer = [\"htmlsyntax\", self.attributes['$[]'](\"htmlsyntax\")];\n $send(converter_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n template_dirs = (function() {if ($truthy((template_dir = self.options['$[]'](\"template_dir\")))) {\n \n $writer = [\"template_dirs\", [template_dir]];\n $send(converter_opts, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else if ($truthy((template_dirs = self.options['$[]'](\"template_dirs\")))) {\n \n $writer = [\"template_dirs\", template_dirs];\n $send(converter_opts, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return nil\n }; return nil; })();\n if ($truthy(template_dirs)) {\n \n \n $writer = [\"template_cache\", self.options.$fetch(\"template_cache\", true)];\n $send(converter_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"template_engine\", self.options['$[]'](\"template_engine\")];\n $send(converter_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"template_engine_options\", self.options['$[]'](\"template_engine_options\")];\n $send(converter_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"eruby\", self.options['$[]'](\"eruby\")];\n $send(converter_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"safe\", self.safe];\n $send(converter_opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n if ($truthy((converter = self.options['$[]'](\"converter\")))) {\n converter_factory = $$$($$($nesting, 'Converter'), 'Factory').$new($$$('::', 'Hash')['$[]'](self.$backend(), converter))\n } else {\n converter_factory = $$$($$($nesting, 'Converter'), 'Factory').$default(false)\n };\n return converter_factory.$create(self.$backend(), converter_opts);\n }, TMP_Document_create_converter_51.$$arity = 0);\n \n Opal.def(self, '$convert', TMP_Document_convert_53 = function $$convert(opts) {\n var $a, TMP_52, self = this, $writer = nil, block = nil, output = nil, transform = nil, exts = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy(self.parsed)) {\n } else {\n self.$parse()\n };\n if ($truthy(($truthy($a = $rb_ge(self.safe, $$$($$($nesting, 'SafeMode'), 'SERVER'))) ? $a : opts['$empty?']()))) {\n } else {\n \n if ($truthy((($writer = [\"outfile\", opts['$[]'](\"outfile\")]), $send(self.attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))) {\n } else {\n self.attributes.$delete(\"outfile\")\n };\n if ($truthy((($writer = [\"outdir\", opts['$[]'](\"outdir\")]), $send(self.attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))) {\n } else {\n self.attributes.$delete(\"outdir\")\n };\n };\n if (self.$doctype()['$=='](\"inline\")) {\n if ($truthy((block = self.blocks['$[]'](0)))) {\n if ($truthy(($truthy($a = block.$content_model()['$=='](\"compound\")) ? $a : block.$content_model()['$=='](\"empty\")))) {\n self.$warn(\"asciidoctor: WARNING: no inline candidate; use the inline doctype to convert a single paragragh, verbatim, or raw block\")\n } else {\n output = block.$content()\n }}\n } else {\n \n transform = (function() {if ($truthy((function() {if ($truthy(opts['$key?'](\"header_footer\"))) {\n return opts['$[]'](\"header_footer\")\n } else {\n return self.options['$[]'](\"header_footer\")\n }; return nil; })())) {\n return \"document\"\n } else {\n return \"embedded\"\n }; return nil; })();\n output = self.converter.$convert(self, transform);\n };\n if ($truthy(self.parent_document)) {\n } else if ($truthy(($truthy($a = (exts = self.extensions)) ? exts['$postprocessors?']() : $a))) {\n $send(exts.$postprocessors(), 'each', [], (TMP_52 = function(ext){var self = TMP_52.$$s || this;\nif (ext == null) ext = nil;\n return (output = ext.$process_method()['$[]'](self, output))}, TMP_52.$$s = self, TMP_52.$$arity = 1, TMP_52))};\n return output;\n }, TMP_Document_convert_53.$$arity = -1);\n Opal.alias(self, \"render\", \"convert\");\n \n Opal.def(self, '$write', TMP_Document_write_54 = function $$write(output, target) {\n var self = this;\n\n if ($truthy($$($nesting, 'Writer')['$==='](self.converter))) {\n return self.converter.$write(output, target)\n } else {\n \n if ($truthy(target['$respond_to?'](\"write\"))) {\n if ($truthy(output['$nil_or_empty?']())) {\n } else {\n \n target.$write(output.$chomp());\n target.$write($$($nesting, 'LF'));\n }\n } else {\n $$$('::', 'IO').$write(target, output)\n };\n return nil;\n }\n }, TMP_Document_write_54.$$arity = 2);\n \n Opal.def(self, '$content', TMP_Document_content_55 = function $$content() {\n var self = this, $iter = TMP_Document_content_55.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Document_content_55.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n self.attributes.$delete(\"title\");\n return $send(self, Opal.find_super_dispatcher(self, 'content', TMP_Document_content_55, false), $zuper, $iter);\n }, TMP_Document_content_55.$$arity = 0);\n \n Opal.def(self, '$docinfo', TMP_Document_docinfo_58 = function $$docinfo(location, suffix) {\n var TMP_56, $a, TMP_57, self = this, content = nil, qualifier = nil, docinfo = nil, docinfo_file = nil, docinfo_dir = nil, docinfo_subs = nil, docinfo_path = nil, shd_content = nil, pvt_content = nil;\n\n if (location == null) {\n location = \"head\";\n }\n if (suffix == null) {\n suffix = nil;\n }\n if ($truthy($rb_ge(self.$safe(), $$$($$($nesting, 'SafeMode'), 'SECURE')))) {\n return \"\"\n } else {\n \n content = [];\n if (location['$=='](\"head\")) {\n } else {\n qualifier = \"\" + \"-\" + (location)\n };\n if ($truthy(suffix)) {\n } else {\n suffix = self.outfilesuffix\n };\n if ($truthy((docinfo = self.attributes['$[]'](\"docinfo\"))['$nil_or_empty?']())) {\n if ($truthy(self.attributes['$key?'](\"docinfo2\"))) {\n docinfo = [\"private\", \"shared\"]\n } else if ($truthy(self.attributes['$key?'](\"docinfo1\"))) {\n docinfo = [\"shared\"]\n } else {\n docinfo = (function() {if ($truthy(docinfo)) {\n return [\"private\"]\n } else {\n return nil\n }; return nil; })()\n }\n } else {\n docinfo = $send(docinfo.$split(\",\"), 'map', [], (TMP_56 = function(it){var self = TMP_56.$$s || this;\nif (it == null) it = nil;\n return it.$strip()}, TMP_56.$$s = self, TMP_56.$$arity = 1, TMP_56))\n };\n if ($truthy(docinfo)) {\n \n $a = [\"\" + \"docinfo\" + (qualifier) + (suffix), self.attributes['$[]'](\"docinfodir\"), self.$resolve_docinfo_subs()], (docinfo_file = $a[0]), (docinfo_dir = $a[1]), (docinfo_subs = $a[2]), $a;\n if ($truthy(docinfo['$&']([\"shared\", \"\" + \"shared-\" + (location)])['$empty?']())) {\n } else {\n \n docinfo_path = self.$normalize_system_path(docinfo_file, docinfo_dir);\n if ($truthy((shd_content = self.$read_asset(docinfo_path, $hash2([\"normalize\"], {\"normalize\": true}))))) {\n content['$<<'](self.$apply_subs(shd_content, docinfo_subs))};\n };\n if ($truthy(($truthy($a = self.attributes['$[]'](\"docname\")['$nil_or_empty?']()) ? $a : docinfo['$&']([\"private\", \"\" + \"private-\" + (location)])['$empty?']()))) {\n } else {\n \n docinfo_path = self.$normalize_system_path(\"\" + (self.attributes['$[]'](\"docname\")) + \"-\" + (docinfo_file), docinfo_dir);\n if ($truthy((pvt_content = self.$read_asset(docinfo_path, $hash2([\"normalize\"], {\"normalize\": true}))))) {\n content['$<<'](self.$apply_subs(pvt_content, docinfo_subs))};\n };};\n if ($truthy(($truthy($a = self.extensions) ? self['$docinfo_processors?'](location) : $a))) {\n content = $rb_plus(content, $send(self.docinfo_processor_extensions['$[]'](location), 'map', [], (TMP_57 = function(ext){var self = TMP_57.$$s || this;\nif (ext == null) ext = nil;\n return ext.$process_method()['$[]'](self)}, TMP_57.$$s = self, TMP_57.$$arity = 1, TMP_57)).$compact())};\n return $rb_times(content, $$($nesting, 'LF'));\n }\n }, TMP_Document_docinfo_58.$$arity = -1);\n \n Opal.def(self, '$resolve_docinfo_subs', TMP_Document_resolve_docinfo_subs_59 = function $$resolve_docinfo_subs() {\n var self = this;\n\n if ($truthy(self.attributes['$key?'](\"docinfosubs\"))) {\n \n return self.$resolve_subs(self.attributes['$[]'](\"docinfosubs\"), \"block\", nil, \"docinfo\");\n } else {\n return [\"attributes\"]\n }\n }, TMP_Document_resolve_docinfo_subs_59.$$arity = 0);\n \n Opal.def(self, '$docinfo_processors?', TMP_Document_docinfo_processors$q_60 = function(location) {\n var $a, self = this, $writer = nil;\n\n if (location == null) {\n location = \"head\";\n }\n if ($truthy(self.docinfo_processor_extensions['$key?'](location))) {\n return self.docinfo_processor_extensions['$[]'](location)['$!='](false)\n } else if ($truthy(($truthy($a = self.extensions) ? self.document.$extensions()['$docinfo_processors?'](location) : $a))) {\n return (($writer = [location, self.document.$extensions().$docinfo_processors(location)]), $send(self.docinfo_processor_extensions, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])['$!']()['$!']()\n } else {\n \n $writer = [location, false];\n $send(self.docinfo_processor_extensions, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }\n }, TMP_Document_docinfo_processors$q_60.$$arity = -1);\n return (Opal.def(self, '$to_s', TMP_Document_to_s_61 = function $$to_s() {\n var self = this;\n\n return \"\" + \"#<\" + (self.$class()) + \"@\" + (self.$object_id()) + \" {doctype: \" + (self.$doctype().$inspect()) + \", doctitle: \" + ((function() {if ($truthy(self.header['$!='](nil))) {\n return self.header.$title()\n } else {\n return nil\n }; return nil; })().$inspect()) + \", blocks: \" + (self.blocks.$size()) + \"}>\"\n }, TMP_Document_to_s_61.$$arity = 0), nil) && 'to_s';\n })($nesting[0], $$($nesting, 'AbstractBlock'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/inline\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$attr_reader', '$attr_accessor', '$[]', '$nil_or_empty?', '$update_attributes', '$convert', '$converter', '$attr', '$==', '$apply_reftext_subs', '$reftext']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Inline(){};\n var self = $Inline = $klass($base, $super, 'Inline', $Inline);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Inline_initialize_1, TMP_Inline_block$q_2, TMP_Inline_inline$q_3, TMP_Inline_convert_4, TMP_Inline_alt_5, TMP_Inline_reftext$q_6, TMP_Inline_reftext_7, TMP_Inline_xreftext_8;\n\n def.text = def.type = nil;\n \n self.$attr_reader(\"text\");\n self.$attr_reader(\"type\");\n self.$attr_accessor(\"target\");\n \n Opal.def(self, '$initialize', TMP_Inline_initialize_1 = function $$initialize(parent, context, text, opts) {\n var self = this, $iter = TMP_Inline_initialize_1.$$p, $yield = $iter || nil, more_attributes = nil;\n\n if (text == null) {\n text = nil;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n if ($iter) TMP_Inline_initialize_1.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Inline_initialize_1, false), [parent, context], null);\n self.node_name = \"\" + \"inline_\" + (context);\n self.text = text;\n self.id = opts['$[]'](\"id\");\n self.type = opts['$[]'](\"type\");\n self.target = opts['$[]'](\"target\");\n if ($truthy((more_attributes = opts['$[]'](\"attributes\"))['$nil_or_empty?']())) {\n return nil\n } else {\n return self.$update_attributes(more_attributes)\n };\n }, TMP_Inline_initialize_1.$$arity = -3);\n \n Opal.def(self, '$block?', TMP_Inline_block$q_2 = function() {\n var self = this;\n\n return false\n }, TMP_Inline_block$q_2.$$arity = 0);\n \n Opal.def(self, '$inline?', TMP_Inline_inline$q_3 = function() {\n var self = this;\n\n return true\n }, TMP_Inline_inline$q_3.$$arity = 0);\n \n Opal.def(self, '$convert', TMP_Inline_convert_4 = function $$convert() {\n var self = this;\n\n return self.$converter().$convert(self)\n }, TMP_Inline_convert_4.$$arity = 0);\n Opal.alias(self, \"render\", \"convert\");\n \n Opal.def(self, '$alt', TMP_Inline_alt_5 = function $$alt() {\n var self = this;\n\n return self.$attr(\"alt\")\n }, TMP_Inline_alt_5.$$arity = 0);\n \n Opal.def(self, '$reftext?', TMP_Inline_reftext$q_6 = function() {\n var $a, $b, self = this;\n\n return ($truthy($a = self.text) ? ($truthy($b = self.type['$=='](\"ref\")) ? $b : self.type['$=='](\"bibref\")) : $a)\n }, TMP_Inline_reftext$q_6.$$arity = 0);\n \n Opal.def(self, '$reftext', TMP_Inline_reftext_7 = function $$reftext() {\n var self = this, val = nil;\n\n if ($truthy((val = self.text))) {\n \n return self.$apply_reftext_subs(val);\n } else {\n return nil\n }\n }, TMP_Inline_reftext_7.$$arity = 0);\n return (Opal.def(self, '$xreftext', TMP_Inline_xreftext_8 = function $$xreftext(xrefstyle) {\n var self = this;\n\n if (xrefstyle == null) {\n xrefstyle = nil;\n }\n return self.$reftext()\n }, TMP_Inline_xreftext_8.$$arity = -1), nil) && 'xreftext';\n })($nesting[0], $$($nesting, 'AbstractNode'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/list\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$==', '$next_list', '$callouts', '$class', '$object_id', '$inspect', '$size', '$items', '$attr_accessor', '$level', '$dup', '$!', '$nil_or_empty?', '$apply_subs', '$empty?', '$===', '$[]', '$outline?', '$simple?', '$context', '$option?', '$shift', '$blocks', '$unshift', '$lines', '$source', '$parent']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n (function($base, $super, $parent_nesting) {\n function $List(){};\n var self = $List = $klass($base, $super, 'List', $List);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_List_initialize_1, TMP_List_outline$q_2, TMP_List_convert_3, TMP_List_to_s_4;\n\n def.context = def.document = def.style = nil;\n \n Opal.alias(self, \"items\", \"blocks\");\n Opal.alias(self, \"content\", \"blocks\");\n Opal.alias(self, \"items?\", \"blocks?\");\n \n Opal.def(self, '$initialize', TMP_List_initialize_1 = function $$initialize(parent, context) {\n var self = this, $iter = TMP_List_initialize_1.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_List_initialize_1.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n return $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_List_initialize_1, false), $zuper, $iter)\n }, TMP_List_initialize_1.$$arity = 2);\n \n Opal.def(self, '$outline?', TMP_List_outline$q_2 = function() {\n var $a, self = this;\n\n return ($truthy($a = self.context['$=='](\"ulist\")) ? $a : self.context['$=='](\"olist\"))\n }, TMP_List_outline$q_2.$$arity = 0);\n \n Opal.def(self, '$convert', TMP_List_convert_3 = function $$convert() {\n var self = this, $iter = TMP_List_convert_3.$$p, $yield = $iter || nil, result = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_List_convert_3.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if (self.context['$=='](\"colist\")) {\n \n result = $send(self, Opal.find_super_dispatcher(self, 'convert', TMP_List_convert_3, false), $zuper, $iter);\n self.document.$callouts().$next_list();\n return result;\n } else {\n return $send(self, Opal.find_super_dispatcher(self, 'convert', TMP_List_convert_3, false), $zuper, $iter)\n }\n }, TMP_List_convert_3.$$arity = 0);\n Opal.alias(self, \"render\", \"convert\");\n return (Opal.def(self, '$to_s', TMP_List_to_s_4 = function $$to_s() {\n var self = this;\n\n return \"\" + \"#<\" + (self.$class()) + \"@\" + (self.$object_id()) + \" {context: \" + (self.context.$inspect()) + \", style: \" + (self.style.$inspect()) + \", items: \" + (self.$items().$size()) + \"}>\"\n }, TMP_List_to_s_4.$$arity = 0), nil) && 'to_s';\n })($nesting[0], $$($nesting, 'AbstractBlock'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $ListItem(){};\n var self = $ListItem = $klass($base, $super, 'ListItem', $ListItem);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ListItem_initialize_5, TMP_ListItem_text$q_6, TMP_ListItem_text_7, TMP_ListItem_text$eq_8, TMP_ListItem_simple$q_9, TMP_ListItem_compound$q_10, TMP_ListItem_fold_first_11, TMP_ListItem_to_s_12;\n\n def.text = def.subs = def.blocks = nil;\n \n Opal.alias(self, \"list\", \"parent\");\n self.$attr_accessor(\"marker\");\n \n Opal.def(self, '$initialize', TMP_ListItem_initialize_5 = function $$initialize(parent, text) {\n var self = this, $iter = TMP_ListItem_initialize_5.$$p, $yield = $iter || nil;\n\n if (text == null) {\n text = nil;\n }\n if ($iter) TMP_ListItem_initialize_5.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_ListItem_initialize_5, false), [parent, \"list_item\"], null);\n self.text = text;\n self.level = parent.$level();\n return (self.subs = $$($nesting, 'NORMAL_SUBS').$dup());\n }, TMP_ListItem_initialize_5.$$arity = -2);\n \n Opal.def(self, '$text?', TMP_ListItem_text$q_6 = function() {\n var self = this;\n\n return self.text['$nil_or_empty?']()['$!']()\n }, TMP_ListItem_text$q_6.$$arity = 0);\n \n Opal.def(self, '$text', TMP_ListItem_text_7 = function $$text() {\n var self = this;\n\n return self.$apply_subs(self.text, self.subs)\n }, TMP_ListItem_text_7.$$arity = 0);\n \n Opal.def(self, '$text=', TMP_ListItem_text$eq_8 = function(val) {\n var self = this;\n\n return (self.text = val)\n }, TMP_ListItem_text$eq_8.$$arity = 1);\n \n Opal.def(self, '$simple?', TMP_ListItem_simple$q_9 = function() {\n var $a, $b, $c, self = this, blk = nil;\n\n return ($truthy($a = self.blocks['$empty?']()) ? $a : ($truthy($b = (($c = self.blocks.$size()['$=='](1)) ? $$($nesting, 'List')['$===']((blk = self.blocks['$[]'](0))) : self.blocks.$size()['$=='](1))) ? blk['$outline?']() : $b))\n }, TMP_ListItem_simple$q_9.$$arity = 0);\n \n Opal.def(self, '$compound?', TMP_ListItem_compound$q_10 = function() {\n var self = this;\n\n return self['$simple?']()['$!']()\n }, TMP_ListItem_compound$q_10.$$arity = 0);\n \n Opal.def(self, '$fold_first', TMP_ListItem_fold_first_11 = function $$fold_first(continuation_connects_first_block, content_adjacent) {\n var $a, $b, $c, $d, $e, self = this, first_block = nil, block = nil;\n\n if (continuation_connects_first_block == null) {\n continuation_connects_first_block = false;\n }\n if (content_adjacent == null) {\n content_adjacent = false;\n }\n \n if ($truthy(($truthy($a = ($truthy($b = (first_block = self.blocks['$[]'](0))) ? $$($nesting, 'Block')['$==='](first_block) : $b)) ? ($truthy($b = (($c = first_block.$context()['$=='](\"paragraph\")) ? continuation_connects_first_block['$!']() : first_block.$context()['$=='](\"paragraph\"))) ? $b : ($truthy($c = ($truthy($d = ($truthy($e = content_adjacent) ? $e : continuation_connects_first_block['$!']())) ? first_block.$context()['$=='](\"literal\") : $d)) ? first_block['$option?'](\"listparagraph\") : $c)) : $a))) {\n \n block = self.$blocks().$shift();\n if ($truthy(self.text['$nil_or_empty?']())) {\n } else {\n block.$lines().$unshift(self.text)\n };\n self.text = block.$source();};\n return nil;\n }, TMP_ListItem_fold_first_11.$$arity = -1);\n return (Opal.def(self, '$to_s', TMP_ListItem_to_s_12 = function $$to_s() {\n var $a, self = this;\n\n return \"\" + \"#<\" + (self.$class()) + \"@\" + (self.$object_id()) + \" {list_context: \" + (self.$parent().$context().$inspect()) + \", text: \" + (self.text.$inspect()) + \", blocks: \" + (($truthy($a = self.blocks) ? $a : []).$size()) + \"}>\"\n }, TMP_ListItem_to_s_12.$$arity = 0), nil) && 'to_s';\n })($nesting[0], $$($nesting, 'AbstractBlock'), $nesting);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/parser\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2, $hash = Opal.hash, $gvars = Opal.gvars, $range = Opal.range;\n\n Opal.add_stubs(['$new', '$lambda', '$start_with?', '$match?', '$is_delimited_block?', '$raise', '$parse_document_header', '$[]', '$has_more_lines?', '$next_section', '$<<', '$parse_block_metadata_lines', '$is_next_line_doctitle?', '$attributes', '$key?', '$finalize_header', '$nil_or_empty?', '$title=', '$-', '$sourcemap', '$cursor', '$parse_section_title', '$id=', '$attribute_locked?', '$set_attr', '$delete', '$source_location=', '$header', '$[]=', '$id', '$parse_style_attribute', '$parse_header_metadata', '$==', '$doctype', '$parse_manpage_header', '$=~', '$sub_attributes', '$downcase', '$warn', '$prev_line_info', '$skip_blank_lines', '$is_next_line_section?', '$initialize_section', '$level', '$*', '$read_lines_until', '$match', '$backend', '$context', '$empty?', '$blocks', '$has_header?', '$!', '$!=', '$attr?', '$attr', '$document', '$sectname', '$+', '$to_i', '$>', '$line_info', '$include?', '$size', '$next_block', '$blocks?', '$style', '$context=', '$style=', '$parent=', '$content_model', '$shift', '$unwrap_standalone_preamble', '$dup', '$fetch', '$parse_block_metadata_line', '$extensions', '$block_macros?', '$path', '$lineno', '$read_line', '$===', '$terminator', '$to_s', '$masq', '$to_sym', '$registered_for_block?', '$strict_verbatim_paragraphs', '$unshift_line', '$markdown_syntax', '$lstrip', '$keys', '$chr', '$length', '$end_with?', '$parse_attributes', '$attribute_missing', '$clear', '$register', '$tr', '$basename', '$assign_caption', '$registered_for_block_macro?', '$config', '$update', '$process_method', '$replace', '$peek_line', '$next_list_item', '$callout_ids', '$callouts', '$items', '$next_list', '$next_item_list', '$each', '$catalog_inline_biblio_anchor', '$instance_variable_get', '$marker', '$find', '$next_description_list', '$underline_style_section_titles', '$is_section_title?', '$atx_section_title?', '$generate_id', '$title', '$level=', '$read_paragraph_lines', '$adjust_indentation!', '$set_option', '$map!', '$split', '$pop', '$build_block', '$chop', '$catalog_inline_anchors', '$rekey', '$index', '$slice', '$strip', '$<', '$next_table', '$concat', '$title?', '$lock_in_subs', '$sub?', '$catalog_callouts', '$source', '$remove_sub', '$block_terminates_paragraph', '$to_proc', '$<=', '$nil?', '$lines', '$parse_blocks', '$resolve_list_marker', '$items?', '$parent', '$scan', '$gsub', '$reader', '$marker=', '$read_lines_for_list_item', '$skip_line_comments', '$unshift_lines', '$fold_first', '$text?', '$is_sibling_list_item?', '$delete_at', '$casecmp', '$sectname=', '$special=', '$numbered=', '$special', '$numbered', '$update_attributes', '$peek_lines', '$setext_section_title?', '$abs', '$line_length', '$process_attribute_entries', '$next_line_empty?', '$process_authors', '$apply_header_subs', '$rstrip', '$each_with_index', '$map', '$compact', '$Array', '$squeeze', '$to_a', '$process_attribute_entry', '$skip_comment_lines', '$advance', '$store_attribute', '$sanitize_attribute_name', '$set_attribute', '$save_to', '$delete_attribute', '$resolve_ordered_list_marker', '$ord', '$roman_numeral_to_int', '$parse_colspecs', '$create_columns', '$format', '$starts_with_delimiter?', '$close_open_cell', '$parse_cellspec', '$delimiter', '$match_delimiter', '$buffer_has_unclosed_quotes?', '$pre_match', '$skip_past_delimiter', '$buffer', '$buffer=', '$skip_past_escaped_delimiter', '$keep_cell_open', '$push_cellspec', '$post_match', '$close_cell', '$cell_open?', '$columns', '$assign_column_widths', '$has_header_option=', '$partition_header_footer', '$upto', '$shorthand_property_syntax', '$join', '$each_char', '$call', '$sub!', '$gsub!', '$%', '$begin']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Parser(){};\n var self = $Parser = $klass($base, $super, 'Parser', $Parser);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Parser_1, TMP_Parser_2, TMP_Parser_3, TMP_Parser_initialize_4, TMP_Parser_parse_5, TMP_Parser_parse_document_header_6, TMP_Parser_parse_manpage_header_7, TMP_Parser_next_section_8, TMP_Parser_next_block_14, TMP_Parser_read_paragraph_lines_15, TMP_Parser_is_delimited_block$q_16, TMP_Parser_build_block_17, TMP_Parser_parse_blocks_18, TMP_Parser_next_item_list_19, TMP_Parser_catalog_callouts_21, TMP_Parser_catalog_inline_anchors_23, TMP_Parser_catalog_inline_biblio_anchor_24, TMP_Parser_next_description_list_25, TMP_Parser_next_list_item_26, TMP_Parser_read_lines_for_list_item_32, TMP_Parser_initialize_section_33, TMP_Parser_is_next_line_section$q_34, TMP_Parser_is_next_line_doctitle$q_35, TMP_Parser_is_section_title$q_36, TMP_Parser_atx_section_title$q_37, TMP_Parser_setext_section_title$q_38, TMP_Parser_parse_section_title_39, TMP_Parser_line_length_40, TMP_Parser_line_length_41, TMP_Parser_parse_header_metadata_46, TMP_Parser_process_authors_52, TMP_Parser_parse_block_metadata_lines_53, TMP_Parser_parse_block_metadata_line_54, TMP_Parser_process_attribute_entries_55, TMP_Parser_process_attribute_entry_56, TMP_Parser_store_attribute_57, TMP_Parser_resolve_list_marker_58, TMP_Parser_resolve_ordered_list_marker_60, TMP_Parser_is_sibling_list_item$q_61, TMP_Parser_next_table_62, TMP_Parser_parse_colspecs_66, TMP_Parser_parse_cellspec_67, TMP_Parser_parse_style_attribute_71, TMP_Parser_adjust_indentation$B_79, TMP_Parser_sanitize_attribute_name_80, TMP_Parser_roman_numeral_to_int_82;\n\n \n Opal.const_set($nesting[0], 'BlockMatchData', $$($nesting, 'Struct').$new(\"context\", \"masq\", \"tip\", \"terminator\"));\n Opal.const_set($nesting[0], 'TabRx', /\\t/);\n Opal.const_set($nesting[0], 'TabIndentRx', /^\\t+/);\n Opal.const_set($nesting[0], 'StartOfBlockProc', $send(self, 'lambda', [], (TMP_Parser_1 = function(l){var self = TMP_Parser_1.$$s || this, $a, $b;\nif (l == null) l = nil;\n return ($truthy($a = ($truthy($b = l['$start_with?'](\"[\")) ? $$($nesting, 'BlockAttributeLineRx')['$match?'](l) : $b)) ? $a : self['$is_delimited_block?'](l))}, TMP_Parser_1.$$s = self, TMP_Parser_1.$$arity = 1, TMP_Parser_1)));\n Opal.const_set($nesting[0], 'StartOfListProc', $send(self, 'lambda', [], (TMP_Parser_2 = function(l){var self = TMP_Parser_2.$$s || this;\nif (l == null) l = nil;\n return $$($nesting, 'AnyListRx')['$match?'](l)}, TMP_Parser_2.$$s = self, TMP_Parser_2.$$arity = 1, TMP_Parser_2)));\n Opal.const_set($nesting[0], 'StartOfBlockOrListProc', $send(self, 'lambda', [], (TMP_Parser_3 = function(l){var self = TMP_Parser_3.$$s || this, $a, $b, $c;\nif (l == null) l = nil;\n return ($truthy($a = ($truthy($b = self['$is_delimited_block?'](l)) ? $b : ($truthy($c = l['$start_with?'](\"[\")) ? $$($nesting, 'BlockAttributeLineRx')['$match?'](l) : $c))) ? $a : $$($nesting, 'AnyListRx')['$match?'](l))}, TMP_Parser_3.$$s = self, TMP_Parser_3.$$arity = 1, TMP_Parser_3)));\n Opal.const_set($nesting[0], 'NoOp', nil);\n Opal.const_set($nesting[0], 'TableCellHorzAlignments', $hash2([\"<\", \">\", \"^\"], {\"<\": \"left\", \">\": \"right\", \"^\": \"center\"}));\n Opal.const_set($nesting[0], 'TableCellVertAlignments', $hash2([\"<\", \">\", \"^\"], {\"<\": \"top\", \">\": \"bottom\", \"^\": \"middle\"}));\n Opal.const_set($nesting[0], 'TableCellStyles', $hash2([\"d\", \"s\", \"e\", \"m\", \"h\", \"l\", \"v\", \"a\"], {\"d\": \"none\", \"s\": \"strong\", \"e\": \"emphasis\", \"m\": \"monospaced\", \"h\": \"header\", \"l\": \"literal\", \"v\": \"verse\", \"a\": \"asciidoc\"}));\n \n Opal.def(self, '$initialize', TMP_Parser_initialize_4 = function $$initialize() {\n var self = this;\n\n return self.$raise(\"Au contraire, mon frere. No parser instances will be running around.\")\n }, TMP_Parser_initialize_4.$$arity = 0);\n Opal.defs(self, '$parse', TMP_Parser_parse_5 = function $$parse(reader, document, options) {\n var $a, $b, $c, self = this, block_attributes = nil, new_section = nil;\n\n if (options == null) {\n options = $hash2([], {});\n }\n \n block_attributes = self.$parse_document_header(reader, document);\n if ($truthy(options['$[]'](\"header_only\"))) {\n } else {\n while ($truthy(reader['$has_more_lines?']())) {\n \n $c = self.$next_section(reader, document, block_attributes), $b = Opal.to_ary($c), (new_section = ($b[0] == null ? nil : $b[0])), (block_attributes = ($b[1] == null ? nil : $b[1])), $c;\n if ($truthy(new_section)) {\n document['$<<'](new_section)};\n }\n };\n return document;\n }, TMP_Parser_parse_5.$$arity = -3);\n Opal.defs(self, '$parse_document_header', TMP_Parser_parse_document_header_6 = function $$parse_document_header(reader, document) {\n var $a, $b, self = this, block_attributes = nil, implicit_doctitle = nil, assigned_doctitle = nil, val = nil, $writer = nil, section_title = nil, source_location = nil, _ = nil, doctitle = nil, atx = nil, separator = nil, style = nil, style_attrs = nil;\n\n \n block_attributes = self.$parse_block_metadata_lines(reader, document);\n if ($truthy(($truthy($a = (implicit_doctitle = self['$is_next_line_doctitle?'](reader, block_attributes, document.$attributes()['$[]'](\"leveloffset\")))) ? block_attributes['$key?'](\"title\") : $a))) {\n return document.$finalize_header(block_attributes, false)};\n assigned_doctitle = nil;\n if ($truthy((val = document.$attributes()['$[]'](\"doctitle\"))['$nil_or_empty?']())) {\n } else {\n \n $writer = [(assigned_doctitle = val)];\n $send(document, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n section_title = nil;\n if ($truthy(implicit_doctitle)) {\n \n if ($truthy(document.$sourcemap())) {\n source_location = reader.$cursor()};\n $b = self.$parse_section_title(reader, document), $a = Opal.to_ary($b), document['$id='](($a[0] == null ? nil : $a[0])), (_ = ($a[1] == null ? nil : $a[1])), (doctitle = ($a[2] == null ? nil : $a[2])), (_ = ($a[3] == null ? nil : $a[3])), (atx = ($a[4] == null ? nil : $a[4])), $b;\n if ($truthy(assigned_doctitle)) {\n } else {\n \n $writer = [(assigned_doctitle = doctitle)];\n $send(document, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if ($truthy(($truthy($a = atx) ? $a : document['$attribute_locked?'](\"compat-mode\")))) {\n } else {\n document.$set_attr(\"compat-mode\")\n };\n if ($truthy((separator = block_attributes.$delete(\"separator\")))) {\n if ($truthy(document['$attribute_locked?'](\"title-separator\"))) {\n } else {\n document.$set_attr(\"title-separator\", separator)\n }};\n if ($truthy(source_location)) {\n \n $writer = [source_location];\n $send(document.$header(), 'source_location=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n \n $writer = [\"doctitle\", (section_title = doctitle)];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(document.$id())) {\n \n block_attributes.$delete(1);\n block_attributes.$delete(\"id\");\n } else {\n \n if ($truthy((style = block_attributes.$delete(1)))) {\n \n style_attrs = $hash(1, style);\n self.$parse_style_attribute(style_attrs, reader);\n if ($truthy(style_attrs['$key?'](\"id\"))) {\n \n $writer = [\"id\", style_attrs['$[]'](\"id\")];\n $send(block_attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};};\n \n $writer = [block_attributes.$delete(\"id\")];\n $send(document, 'id=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n self.$parse_header_metadata(reader, document);};\n if ($truthy(($truthy($a = (val = document.$attributes()['$[]'](\"doctitle\"))['$nil_or_empty?']()) ? $a : val['$=='](section_title)))) {\n } else {\n \n $writer = [(assigned_doctitle = val)];\n $send(document, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if ($truthy(assigned_doctitle)) {\n \n $writer = [\"doctitle\", assigned_doctitle];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if (document.$doctype()['$=='](\"manpage\")) {\n self.$parse_manpage_header(reader, document)};\n return document.$finalize_header(block_attributes);\n }, TMP_Parser_parse_document_header_6.$$arity = 2);\n Opal.defs(self, '$parse_manpage_header', TMP_Parser_parse_manpage_header_7 = function $$parse_manpage_header(reader, document) {\n var $a, self = this, $writer = nil, name_section = nil, name_section_buffer = nil, m = nil;\n\n \n if ($truthy($$($nesting, 'ManpageTitleVolnumRx')['$=~'](document.$attributes()['$[]'](\"doctitle\")))) {\n \n \n $writer = [\"mantitle\", document.$sub_attributes((($a = $gvars['~']) === nil ? nil : $a['$[]'](1)).$downcase())];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"manvolnum\", (($a = $gvars['~']) === nil ? nil : $a['$[]'](2))];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n \n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (reader.$prev_line_info()) + \": malformed manpage title\");\n \n $writer = [\"mantitle\", document.$attributes()['$[]'](\"doctitle\")];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"manvolnum\", \"1\"];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n reader.$skip_blank_lines();\n if ($truthy(self['$is_next_line_section?'](reader, $hash2([], {})))) {\n \n name_section = self.$initialize_section(reader, document, $hash2([], {}));\n if (name_section.$level()['$=='](1)) {\n \n name_section_buffer = $rb_times(reader.$read_lines_until($hash2([\"break_on_blank_lines\"], {\"break_on_blank_lines\": true})), \" \");\n if ($truthy((m = $$($nesting, 'ManpageNamePurposeRx').$match(name_section_buffer)))) {\n \n \n $writer = [\"manname\", document.$sub_attributes(m['$[]'](1))];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"manpurpose\", m['$[]'](2)];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if (document.$backend()['$=='](\"manpage\")) {\n \n \n $writer = [\"docname\", document.$attributes()['$[]'](\"manname\")];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"outfilesuffix\", \"\" + \".\" + (document.$attributes()['$[]'](\"manvolnum\"))];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n return nil\n };\n } else {\n return self.$warn(\"\" + \"asciidoctor: ERROR: \" + (reader.$prev_line_info()) + \": malformed name section body\")\n };\n } else {\n return self.$warn(\"\" + \"asciidoctor: ERROR: \" + (reader.$prev_line_info()) + \": name section title must be at level 1\")\n };\n } else {\n return self.$warn(\"\" + \"asciidoctor: ERROR: \" + (reader.$prev_line_info()) + \": name section expected\")\n };\n }, TMP_Parser_parse_manpage_header_7.$$arity = 2);\n Opal.defs(self, '$next_section', TMP_Parser_next_section_8 = function $$next_section(reader, parent, attributes) {\n var $a, $b, $c, self = this, preamble = nil, intro = nil, part = nil, has_header = nil, doctype = nil, document = nil, $writer = nil, section = nil, current_level = nil, expected_next_levels = nil, title = nil, next_level = nil, new_section = nil, block_line_info = nil, new_block = nil, first_block = nil, child_block = nil;\n\n if (attributes == null) {\n attributes = $hash2([], {});\n }\n \n preamble = (intro = (part = false));\n if ($truthy(($truthy($a = (($b = parent.$context()['$=='](\"document\")) ? parent.$blocks()['$empty?']() : parent.$context()['$=='](\"document\"))) ? ($truthy($b = ($truthy($c = (has_header = parent['$has_header?']())) ? $c : attributes.$delete(\"invalid-header\"))) ? $b : self['$is_next_line_section?'](reader, attributes)['$!']()) : $a))) {\n \n doctype = (document = parent).$doctype();\n if ($truthy(($truthy($a = has_header) ? $a : (($b = doctype['$=='](\"book\")) ? attributes['$[]'](1)['$!='](\"abstract\") : doctype['$=='](\"book\"))))) {\n \n preamble = (intro = $$($nesting, 'Block').$new(parent, \"preamble\", $hash2([\"content_model\"], {\"content_model\": \"compound\"})));\n if ($truthy((($a = doctype['$=='](\"book\")) ? parent['$attr?'](\"preface-title\") : doctype['$=='](\"book\")))) {\n \n $writer = [parent.$attr(\"preface-title\")];\n $send(preamble, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n parent['$<<'](preamble);};\n section = parent;\n current_level = 0;\n if ($truthy(parent.$attributes()['$key?'](\"fragment\"))) {\n expected_next_levels = nil\n } else if (doctype['$=='](\"book\")) {\n expected_next_levels = [0, 1]\n } else {\n expected_next_levels = [1]\n };\n } else {\n \n doctype = (document = parent.$document()).$doctype();\n section = self.$initialize_section(reader, parent, attributes);\n attributes = (function() {if ($truthy((title = attributes['$[]'](\"title\")))) {\n return $hash2([\"title\"], {\"title\": title})\n } else {\n return $hash2([], {})\n }; return nil; })();\n part = section.$sectname()['$=='](\"part\");\n expected_next_levels = [$rb_plus((current_level = section.$level()), 1)];\n };\n reader.$skip_blank_lines();\n while ($truthy(reader['$has_more_lines?']())) {\n \n self.$parse_block_metadata_lines(reader, document, attributes);\n if ($truthy((next_level = self['$is_next_line_section?'](reader, attributes)))) {\n \n if ($truthy(document['$attr?'](\"leveloffset\"))) {\n next_level = $rb_plus(next_level, document.$attr(\"leveloffset\").$to_i())};\n if ($truthy(($truthy($b = $rb_gt(next_level, current_level)) ? $b : (($c = next_level['$=='](0)) ? section.$context()['$=='](\"document\") : next_level['$=='](0))))) {\n \n if ($truthy((($b = next_level['$=='](0)) ? doctype['$!='](\"book\") : next_level['$=='](0)))) {\n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (reader.$line_info()) + \": only book doctypes can contain level 0 sections\")\n } else if ($truthy(($truthy($b = expected_next_levels) ? expected_next_levels['$include?'](next_level)['$!']() : $b))) {\n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (reader.$line_info()) + \": section title out of sequence: expected \" + ((function() {if ($truthy($rb_gt(expected_next_levels.$size(), 1))) {\n return \"levels\"\n } else {\n return \"level\"\n }; return nil; })()) + \" \" + ($rb_times(expected_next_levels, \" or \")) + \", got level \" + (next_level))};\n $c = self.$next_section(reader, section, attributes), $b = Opal.to_ary($c), (new_section = ($b[0] == null ? nil : $b[0])), (attributes = ($b[1] == null ? nil : $b[1])), $c;\n section['$<<'](new_section);\n } else {\n \n if ($truthy((($b = next_level['$=='](0)) ? doctype['$!='](\"book\") : next_level['$=='](0)))) {\n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (reader.$line_info()) + \": only book doctypes can contain level 0 sections\")};\n break;;\n };\n } else {\n \n block_line_info = reader.$line_info();\n if ($truthy((new_block = self.$next_block(reader, ($truthy($b = intro) ? $b : section), attributes, $hash2([\"parse_metadata\"], {\"parse_metadata\": false}))))) {\n \n if ($truthy(part)) {\n if ($truthy(section['$blocks?']()['$!']())) {\n if ($truthy(new_block.$style()['$!='](\"partintro\"))) {\n if (new_block.$context()['$=='](\"paragraph\")) {\n \n \n $writer = [\"open\"];\n $send(new_block, 'context=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"partintro\"];\n $send(new_block, 'style=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n \n intro = $$($nesting, 'Block').$new(section, \"open\", $hash2([\"content_model\"], {\"content_model\": \"compound\"}));\n \n $writer = [\"partintro\"];\n $send(intro, 'style=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [intro];\n $send(new_block, 'parent=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n section['$<<'](intro);\n }}\n } else if (section.$blocks().$size()['$=='](1)) {\n \n first_block = section.$blocks()['$[]'](0);\n if ($truthy(($truthy($b = intro['$!']()) ? first_block.$content_model()['$=='](\"compound\") : $b))) {\n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (block_line_info) + \": illegal block content outside of partintro block\")\n } else if ($truthy(first_block.$content_model()['$!='](\"compound\"))) {\n \n intro = $$($nesting, 'Block').$new(section, \"open\", $hash2([\"content_model\"], {\"content_model\": \"compound\"}));\n \n $writer = [\"partintro\"];\n $send(intro, 'style=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n section.$blocks().$shift();\n if (first_block.$style()['$=='](\"partintro\")) {\n \n \n $writer = [\"paragraph\"];\n $send(first_block, 'context=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [nil];\n $send(first_block, 'style=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n \n $writer = [intro];\n $send(first_block, 'parent=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n intro['$<<'](first_block);\n \n $writer = [intro];\n $send(new_block, 'parent=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n section['$<<'](intro);};}};\n ($truthy($b = intro) ? $b : section)['$<<'](new_block);\n attributes = $hash2([], {});};\n };\n if ($truthy($b = reader.$skip_blank_lines())) {\n $b\n } else {\n break;\n };\n };\n if ($truthy(part)) {\n if ($truthy(($truthy($a = section['$blocks?']()) ? section.$blocks()['$[]'](-1).$context()['$=='](\"section\") : $a))) {\n } else {\n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (reader.$line_info()) + \": invalid part, must have at least one section (e.g., chapter, appendix, etc.)\")\n }\n } else if ($truthy(preamble)) {\n if ($truthy(preamble['$blocks?']())) {\n if ($truthy(($truthy($a = ($truthy($b = $$($nesting, 'Compliance').$unwrap_standalone_preamble()) ? document.$blocks().$size()['$=='](1) : $b)) ? doctype['$!='](\"book\") : $a))) {\n \n document.$blocks().$shift();\n while ($truthy((child_block = preamble.$blocks().$shift()))) {\n \n \n $writer = [document];\n $send(child_block, 'parent=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n document['$<<'](child_block);\n };}\n } else {\n document.$blocks().$shift()\n }};\n return [(function() {if ($truthy(section['$!='](parent))) {\n return section\n } else {\n return nil\n }; return nil; })(), attributes.$dup()];\n }, TMP_Parser_next_section_8.$$arity = -3);\n Opal.defs(self, '$next_block', TMP_Parser_next_block_14 = function $$next_block(reader, parent, attributes, options) {try {\n\n var $a, $b, $c, TMP_9, $d, $e, TMP_10, TMP_11, TMP_12, TMP_13, self = this, skipped = nil, text_only = nil, document = nil, extensions = nil, block_extensions = nil, block_macro_extensions = nil, source_location = nil, this_path = nil, this_lineno = nil, this_line = nil, in_list = nil, block = nil, block_context = nil, cloaked_context = nil, terminator = nil, style = nil, delimited_block = nil, $writer = nil, indented = nil, md_syntax = nil, ch0 = nil, layout_break_chars = nil, ll = nil, match = nil, blk_ctx = nil, target = nil, $case = nil, posattrs = nil, scaledwidth = nil, extension = nil, content = nil, default_attrs = nil, expected_index = nil, list_item_lineno = nil, list_item = nil, coids = nil, marker = nil, float_id = nil, float_reftext = nil, float_title = nil, float_level = nil, _ = nil, break_at_list = nil, lines = nil, admonition_name = nil, attribution = nil, citetitle = nil, language = nil, comma_idx = nil, explicit_stem_syntax = nil, default_stem_syntax = nil, block_reader = nil, content_model = nil, pos_attrs = nil, block_id = nil;\n\n if (attributes == null) {\n attributes = $hash2([], {});\n }\n if (options == null) {\n options = $hash2([], {});\n }\n \n if ($truthy((skipped = reader.$skip_blank_lines()))) {\n } else {\n return nil\n };\n if ($truthy(($truthy($a = (text_only = options['$[]'](\"text\"))) ? $rb_gt(skipped, 0) : $a))) {\n \n options.$delete(\"text\");\n text_only = false;};\n document = parent.$document();\n if ($truthy(options.$fetch(\"parse_metadata\", true))) {\n while ($truthy(self.$parse_block_metadata_line(reader, document, attributes, options))) {\n \n reader.$shift();\n ($truthy($b = reader.$skip_blank_lines()) ? $b : Opal.ret(nil));\n }};\n if ($truthy((extensions = document.$extensions()))) {\n $a = [extensions['$blocks?'](), extensions['$block_macros?']()], (block_extensions = $a[0]), (block_macro_extensions = $a[1]), $a};\n if ($truthy(document.$sourcemap())) {\n source_location = reader.$cursor()};\n $a = [reader.$path(), reader.$lineno(), reader.$read_line(), $$($nesting, 'ListItem')['$==='](parent)], (this_path = $a[0]), (this_lineno = $a[1]), (this_line = $a[2]), (in_list = $a[3]), $a;\n block = (block_context = (cloaked_context = (terminator = nil)));\n style = (function() {if ($truthy(attributes['$[]'](1))) {\n \n return self.$parse_style_attribute(attributes, reader);\n } else {\n return nil\n }; return nil; })();\n if ($truthy((delimited_block = self['$is_delimited_block?'](this_line, true)))) {\n \n block_context = (cloaked_context = delimited_block.$context());\n terminator = delimited_block.$terminator();\n if ($truthy(style['$!']())) {\n style = (($writer = [\"style\", block_context.$to_s()]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])\n } else if ($truthy(style['$!='](block_context.$to_s()))) {\n if ($truthy(delimited_block.$masq()['$include?'](style))) {\n block_context = style.$to_sym()\n } else if ($truthy(($truthy($a = delimited_block.$masq()['$include?'](\"admonition\")) ? $$($nesting, 'ADMONITION_STYLES')['$include?'](style) : $a))) {\n block_context = \"admonition\"\n } else if ($truthy(($truthy($a = block_extensions) ? extensions['$registered_for_block?'](style, block_context) : $a))) {\n block_context = style.$to_sym()\n } else {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (this_path) + \": line \" + (this_lineno) + \": invalid style for \" + (block_context) + \" block: \" + (style));\n style = block_context.$to_s();\n }};};\n if ($truthy(delimited_block)) {\n } else {\n while ($truthy(true)) {\n \n if ($truthy(($truthy($b = ($truthy($c = style) ? $$($nesting, 'Compliance').$strict_verbatim_paragraphs() : $c)) ? $$($nesting, 'VERBATIM_STYLES')['$include?'](style) : $b))) {\n \n block_context = style.$to_sym();\n reader.$unshift_line(this_line);\n break;;};\n if ($truthy(text_only)) {\n indented = this_line['$start_with?'](\" \", $$($nesting, 'TAB'))\n } else {\n \n md_syntax = $$($nesting, 'Compliance').$markdown_syntax();\n if ($truthy(this_line['$start_with?'](\" \"))) {\n \n $b = [true, \" \"], (indented = $b[0]), (ch0 = $b[1]), $b;\n if ($truthy(($truthy($b = ($truthy($c = md_syntax) ? $send(this_line.$lstrip(), 'start_with?', Opal.to_a($$($nesting, 'MARKDOWN_THEMATIC_BREAK_CHARS').$keys())) : $c)) ? $$($nesting, 'MarkdownThematicBreakRx')['$match?'](this_line) : $b))) {\n \n block = $$($nesting, 'Block').$new(parent, \"thematic_break\", $hash2([\"content_model\"], {\"content_model\": \"empty\"}));\n break;;};\n } else if ($truthy(this_line['$start_with?']($$($nesting, 'TAB')))) {\n $b = [true, $$($nesting, 'TAB')], (indented = $b[0]), (ch0 = $b[1]), $b\n } else {\n \n $b = [false, this_line.$chr()], (indented = $b[0]), (ch0 = $b[1]), $b;\n layout_break_chars = (function() {if ($truthy(md_syntax)) {\n return $$($nesting, 'HYBRID_LAYOUT_BREAK_CHARS')\n } else {\n return $$($nesting, 'LAYOUT_BREAK_CHARS')\n }; return nil; })();\n if ($truthy(($truthy($b = layout_break_chars['$key?'](ch0)) ? (function() {if ($truthy(md_syntax)) {\n \n return $$($nesting, 'ExtLayoutBreakRx')['$match?'](this_line);\n } else {\n \n return (($c = this_line['$==']($rb_times(ch0, (ll = this_line.$length())))) ? $rb_gt(ll, 2) : this_line['$==']($rb_times(ch0, (ll = this_line.$length()))));\n }; return nil; })() : $b))) {\n \n block = $$($nesting, 'Block').$new(parent, layout_break_chars['$[]'](ch0), $hash2([\"content_model\"], {\"content_model\": \"empty\"}));\n break;;\n } else if ($truthy(($truthy($b = this_line['$end_with?'](\"]\")) ? this_line['$include?'](\"::\") : $b))) {\n if ($truthy(($truthy($b = ($truthy($c = ch0['$=='](\"i\")) ? $c : this_line['$start_with?'](\"video:\", \"audio:\"))) ? (match = $$($nesting, 'BlockMediaMacroRx').$match(this_line)) : $b))) {\n \n $b = [match['$[]'](1).$to_sym(), match['$[]'](2)], (blk_ctx = $b[0]), (target = $b[1]), $b;\n block = $$($nesting, 'Block').$new(parent, blk_ctx, $hash2([\"content_model\"], {\"content_model\": \"empty\"}));\n $case = blk_ctx;\n if (\"video\"['$===']($case)) {posattrs = [\"poster\", \"width\", \"height\"]}\n else if (\"audio\"['$===']($case)) {posattrs = []}\n else {posattrs = [\"alt\", \"width\", \"height\"]};\n block.$parse_attributes(match['$[]'](3), posattrs, $hash2([\"sub_input\", \"sub_result\", \"into\"], {\"sub_input\": true, \"sub_result\": false, \"into\": attributes}));\n if ($truthy(attributes['$key?'](\"style\"))) {\n attributes.$delete(\"style\")};\n if ($truthy(($truthy($b = target['$include?']($$($nesting, 'ATTR_REF_HEAD'))) ? (target = block.$sub_attributes(target, $hash2([\"attribute_missing\"], {\"attribute_missing\": \"drop-line\"})))['$empty?']() : $b))) {\n if (document.$attributes().$fetch(\"attribute-missing\", $$($nesting, 'Compliance').$attribute_missing())['$=='](\"skip\")) {\n return $$($nesting, 'Block').$new(parent, \"paragraph\", $hash2([\"content_model\", \"source\"], {\"content_model\": \"simple\", \"source\": [this_line]}))\n } else {\n \n attributes.$clear();\n return nil;\n }};\n if (blk_ctx['$=='](\"image\")) {\n \n block.$document().$register(\"images\", target);\n ($truthy($b = attributes['$[]'](\"alt\")) ? $b : (($writer = [\"alt\", ($truthy($c = style) ? $c : (($writer = [\"default-alt\", $$($nesting, 'Helpers').$basename(target, true).$tr(\"_-\", \" \")]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n if ($truthy((scaledwidth = attributes.$delete(\"scaledwidth\"))['$nil_or_empty?']())) {\n } else {\n \n $writer = [\"scaledwidth\", (function() {if ($truthy($$($nesting, 'TrailingDigitsRx')['$match?'](scaledwidth))) {\n return \"\" + (scaledwidth) + \"%\"\n } else {\n return scaledwidth\n }; return nil; })()];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n \n $writer = [attributes.$delete(\"title\")];\n $send(block, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n block.$assign_caption(attributes.$delete(\"caption\"), \"figure\");};\n \n $writer = [\"target\", target];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n break;;\n } else if ($truthy(($truthy($b = (($c = ch0['$=='](\"t\")) ? this_line['$start_with?'](\"toc:\") : ch0['$=='](\"t\"))) ? (match = $$($nesting, 'BlockTocMacroRx').$match(this_line)) : $b))) {\n \n block = $$($nesting, 'Block').$new(parent, \"toc\", $hash2([\"content_model\"], {\"content_model\": \"empty\"}));\n block.$parse_attributes(match['$[]'](1), [], $hash2([\"sub_result\", \"into\"], {\"sub_result\": false, \"into\": attributes}));\n break;;\n } else if ($truthy(($truthy($b = ($truthy($c = block_macro_extensions) ? (match = $$($nesting, 'CustomBlockMacroRx').$match(this_line)) : $c)) ? (extension = extensions['$registered_for_block_macro?'](match['$[]'](1))) : $b))) {\n \n target = match['$[]'](2);\n content = match['$[]'](3);\n if (extension.$config()['$[]'](\"content_model\")['$=='](\"attributes\")) {\n if ($truthy(content['$empty?']())) {\n } else {\n document.$parse_attributes(content, ($truthy($b = extension.$config()['$[]'](\"pos_attrs\")) ? $b : []), $hash2([\"sub_input\", \"sub_result\", \"into\"], {\"sub_input\": true, \"sub_result\": false, \"into\": attributes}))\n }\n } else {\n \n $writer = [\"text\", content];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if ($truthy((default_attrs = extension.$config()['$[]'](\"default_attrs\")))) {\n $send(attributes, 'update', [default_attrs], (TMP_9 = function(_, old_v){var self = TMP_9.$$s || this;\nif (_ == null) _ = nil;if (old_v == null) old_v = nil;\n return old_v}, TMP_9.$$s = self, TMP_9.$$arity = 2, TMP_9))};\n if ($truthy((block = extension.$process_method()['$[]'](parent, target, attributes)))) {\n \n attributes.$replace(block.$attributes());\n break;;\n } else {\n \n attributes.$clear();\n return nil;\n };}};\n };\n };\n if ($truthy(($truthy($b = ($truthy($c = ($truthy($d = indented['$!']()) ? $$($nesting, 'CALLOUT_LIST_HEADS')['$include?']((ch0 = ($truthy($e = ch0) ? $e : this_line.$chr()))) : $d)) ? $$($nesting, 'CalloutListSniffRx')['$match?'](this_line) : $c)) ? (match = $$($nesting, 'CalloutListRx').$match(this_line)) : $b))) {\n \n block = $$($nesting, 'List').$new(parent, \"colist\");\n \n $writer = [\"style\", \"arabic\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n reader.$unshift_line(this_line);\n expected_index = 1;\n while ($truthy(($truthy($c = match) ? $c : ($truthy($d = reader['$has_more_lines?']()) ? (match = $$($nesting, 'CalloutListRx').$match(reader.$peek_line())) : $d)))) {\n \n list_item_lineno = reader.$lineno();\n if (match['$[]'](1)['$=='](expected_index.$to_s())) {\n } else {\n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (reader.$path()) + \": line \" + (list_item_lineno) + \": callout list item index: expected \" + (expected_index) + \" got \" + (match['$[]'](1)))\n };\n if ($truthy((list_item = self.$next_list_item(reader, block, match)))) {\n \n block['$<<'](list_item);\n if ($truthy((coids = document.$callouts().$callout_ids(block.$items().$size()))['$empty?']())) {\n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (reader.$path()) + \": line \" + (list_item_lineno) + \": no callouts refer to list item \" + (block.$items().$size()))\n } else {\n \n $writer = [\"coids\", coids];\n $send(list_item.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };};\n expected_index = $rb_plus(expected_index, 1);\n match = nil;\n };\n document.$callouts().$next_list();\n break;;\n } else if ($truthy($$($nesting, 'UnorderedListRx')['$match?'](this_line))) {\n \n reader.$unshift_line(this_line);\n block = self.$next_item_list(reader, \"ulist\", parent);\n if (($truthy($b = style) ? $b : ($truthy($c = $$($nesting, 'Section')['$==='](parent)) ? parent.$sectname() : $c))['$=='](\"bibliography\")) {\n \n if ($truthy(style)) {\n } else {\n \n $writer = [\"style\", \"bibliography\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n $send(block.$items(), 'each', [], (TMP_10 = function(item){var self = TMP_10.$$s || this;\nif (item == null) item = nil;\n return self.$catalog_inline_biblio_anchor(item.$instance_variable_get(\"@text\"), item, document)}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10));};\n break;;\n } else if ($truthy((match = $$($nesting, 'OrderedListRx').$match(this_line)))) {\n \n reader.$unshift_line(this_line);\n block = self.$next_item_list(reader, \"olist\", parent);\n if ($truthy(style)) {\n } else {\n \n marker = block.$items()['$[]'](0).$marker();\n if ($truthy(marker['$start_with?'](\".\"))) {\n \n $writer = [\"style\", ($truthy($b = $$($nesting, 'ORDERED_LIST_STYLES')['$[]']($rb_minus(marker.$length(), 1))) ? $b : \"arabic\").$to_s()];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [\"style\", ($truthy($b = $send($$($nesting, 'ORDERED_LIST_STYLES'), 'find', [], (TMP_11 = function(s){var self = TMP_11.$$s || this;\nif (s == null) s = nil;\n return $$($nesting, 'OrderedListMarkerRxMap')['$[]'](s)['$match?'](marker)}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11))) ? $b : \"arabic\").$to_s()];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n };\n break;;\n } else if ($truthy((match = $$($nesting, 'DescriptionListRx').$match(this_line)))) {\n \n reader.$unshift_line(this_line);\n block = self.$next_description_list(reader, match, parent);\n break;;\n } else if ($truthy(($truthy($b = ($truthy($c = style['$=='](\"float\")) ? $c : style['$=='](\"discrete\"))) ? (function() {if ($truthy($$($nesting, 'Compliance').$underline_style_section_titles())) {\n \n return self['$is_section_title?'](this_line, reader.$peek_line());\n } else {\n return ($truthy($c = indented['$!']()) ? self['$atx_section_title?'](this_line) : $c)\n }; return nil; })() : $b))) {\n \n reader.$unshift_line(this_line);\n $c = self.$parse_section_title(reader, document), $b = Opal.to_ary($c), (float_id = ($b[0] == null ? nil : $b[0])), (float_reftext = ($b[1] == null ? nil : $b[1])), (float_title = ($b[2] == null ? nil : $b[2])), (float_level = ($b[3] == null ? nil : $b[3])), (_ = ($b[4] == null ? nil : $b[4])), $c;\n if ($truthy(float_reftext)) {\n \n $writer = [\"reftext\", float_reftext];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n block = $$($nesting, 'Block').$new(parent, \"floating_title\", $hash2([\"content_model\"], {\"content_model\": \"empty\"}));\n \n $writer = [float_title];\n $send(block, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n attributes.$delete(\"title\");\n \n $writer = [($truthy($b = ($truthy($c = float_id) ? $c : attributes['$[]'](\"id\"))) ? $b : (function() {if ($truthy(document.$attributes()['$key?'](\"sectids\"))) {\n \n return $$($nesting, 'Section').$generate_id(block.$title(), document);\n } else {\n return nil\n }; return nil; })())];\n $send(block, 'id=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [float_level];\n $send(block, 'level=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n break;;\n } else if ($truthy(($truthy($b = style) ? style['$!='](\"normal\") : $b))) {\n if ($truthy($$($nesting, 'PARAGRAPH_STYLES')['$include?'](style))) {\n \n block_context = style.$to_sym();\n cloaked_context = \"paragraph\";\n reader.$unshift_line(this_line);\n break;;\n } else if ($truthy($$($nesting, 'ADMONITION_STYLES')['$include?'](style))) {\n \n block_context = \"admonition\";\n cloaked_context = \"paragraph\";\n reader.$unshift_line(this_line);\n break;;\n } else if ($truthy(($truthy($b = block_extensions) ? extensions['$registered_for_block?'](style, \"paragraph\") : $b))) {\n \n block_context = style.$to_sym();\n cloaked_context = \"paragraph\";\n reader.$unshift_line(this_line);\n break;;\n } else {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (this_path) + \": line \" + (this_lineno) + \": invalid style for paragraph: \" + (style));\n style = nil;\n }};\n break_at_list = (($b = skipped['$=='](0)) ? in_list : skipped['$=='](0));\n reader.$unshift_line(this_line);\n if ($truthy(($truthy($b = indented) ? style['$!']() : $b))) {\n \n lines = self.$read_paragraph_lines(reader, break_at_list, $hash2([\"skip_line_comments\"], {\"skip_line_comments\": text_only}));\n self['$adjust_indentation!'](lines);\n block = $$($nesting, 'Block').$new(parent, \"literal\", $hash2([\"content_model\", \"source\", \"attributes\"], {\"content_model\": \"verbatim\", \"source\": lines, \"attributes\": attributes}));\n if ($truthy(in_list)) {\n block.$set_option(\"listparagraph\")};\n } else {\n \n lines = self.$read_paragraph_lines(reader, break_at_list, $hash2([\"skip_line_comments\"], {\"skip_line_comments\": true}));\n if ($truthy(text_only)) {\n \n if ($truthy(($truthy($b = indented) ? style['$=='](\"normal\") : $b))) {\n self['$adjust_indentation!'](lines)};\n block = $$($nesting, 'Block').$new(parent, \"paragraph\", $hash2([\"content_model\", \"source\", \"attributes\"], {\"content_model\": \"simple\", \"source\": lines, \"attributes\": attributes}));\n } else if ($truthy(($truthy($b = ($truthy($c = $$($nesting, 'ADMONITION_STYLE_HEADS')['$include?'](ch0)) ? this_line['$include?'](\":\") : $c)) ? $$($nesting, 'AdmonitionParagraphRx')['$=~'](this_line) : $b))) {\n \n \n $writer = [0, (($b = $gvars['~']) === nil ? nil : $b.$post_match())];\n $send(lines, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"name\", (admonition_name = (($writer = [\"style\", (($b = $gvars['~']) === nil ? nil : $b['$[]'](1))]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]).$downcase())];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"textlabel\", ($truthy($b = attributes.$delete(\"caption\")) ? $b : document.$attributes()['$[]'](\"\" + (admonition_name) + \"-caption\"))];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n block = $$($nesting, 'Block').$new(parent, \"admonition\", $hash2([\"content_model\", \"source\", \"attributes\"], {\"content_model\": \"simple\", \"source\": lines, \"attributes\": attributes}));\n } else if ($truthy(($truthy($b = ($truthy($c = md_syntax) ? ch0['$=='](\">\") : $c)) ? this_line['$start_with?'](\"> \") : $b))) {\n \n $send(lines, 'map!', [], (TMP_12 = function(line){var self = TMP_12.$$s || this;\nif (line == null) line = nil;\n if (line['$=='](\">\")) {\n return line['$[]']($range(1, -1, false))\n } else {\n \n if ($truthy(line['$start_with?'](\"> \"))) {\n return line['$[]']($range(2, -1, false))\n } else {\n return line\n };\n }}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12));\n if ($truthy(lines['$[]'](-1)['$start_with?'](\"-- \"))) {\n \n $c = lines.$pop()['$[]']($range(3, -1, false)).$split(\", \", 2), $b = Opal.to_ary($c), (attribution = ($b[0] == null ? nil : $b[0])), (citetitle = ($b[1] == null ? nil : $b[1])), $c;\n if ($truthy(attribution)) {\n \n $writer = [\"attribution\", attribution];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(citetitle)) {\n \n $writer = [\"citetitle\", citetitle];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n while ($truthy(lines['$[]'](-1)['$empty?']())) {\n lines.$pop()\n };};\n \n $writer = [\"style\", \"quote\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n block = self.$build_block(\"quote\", \"compound\", false, parent, $$($nesting, 'Reader').$new(lines), attributes);\n } else if ($truthy(($truthy($b = ($truthy($c = (($d = ch0['$=='](\"\\\"\")) ? $rb_gt(lines.$size(), 1) : ch0['$=='](\"\\\"\"))) ? lines['$[]'](-1)['$start_with?'](\"-- \") : $c)) ? lines['$[]'](-2)['$end_with?'](\"\\\"\") : $b))) {\n \n \n $writer = [0, this_line['$[]']($range(1, -1, false))];\n $send(lines, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n $c = lines.$pop()['$[]']($range(3, -1, false)).$split(\", \", 2), $b = Opal.to_ary($c), (attribution = ($b[0] == null ? nil : $b[0])), (citetitle = ($b[1] == null ? nil : $b[1])), $c;\n if ($truthy(attribution)) {\n \n $writer = [\"attribution\", attribution];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(citetitle)) {\n \n $writer = [\"citetitle\", citetitle];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n while ($truthy(lines['$[]'](-1)['$empty?']())) {\n lines.$pop()\n };\n \n $writer = [-1, lines['$[]'](-1).$chop()];\n $send(lines, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"style\", \"quote\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n block = $$($nesting, 'Block').$new(parent, \"quote\", $hash2([\"content_model\", \"source\", \"attributes\"], {\"content_model\": \"simple\", \"source\": lines, \"attributes\": attributes}));\n } else {\n \n if ($truthy(($truthy($b = indented) ? style['$=='](\"normal\") : $b))) {\n self['$adjust_indentation!'](lines)};\n block = $$($nesting, 'Block').$new(parent, \"paragraph\", $hash2([\"content_model\", \"source\", \"attributes\"], {\"content_model\": \"simple\", \"source\": lines, \"attributes\": attributes}));\n };\n self.$catalog_inline_anchors($rb_times(lines, $$($nesting, 'LF')), block, document);\n };\n break;;\n }\n };\n if ($truthy(block)) {\n } else {\n \n if ($truthy(($truthy($a = block_context['$=='](\"abstract\")) ? $a : block_context['$=='](\"partintro\")))) {\n block_context = \"open\"};\n $case = block_context;\n if (\"admonition\"['$===']($case)) {\n \n $writer = [\"name\", (admonition_name = style.$downcase())];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"textlabel\", ($truthy($a = attributes.$delete(\"caption\")) ? $a : document.$attributes()['$[]'](\"\" + (admonition_name) + \"-caption\"))];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n block = self.$build_block(block_context, \"compound\", terminator, parent, reader, attributes);}\n else if (\"comment\"['$===']($case)) {\n self.$build_block(block_context, \"skip\", terminator, parent, reader, attributes);\n attributes.$clear();\n return nil;}\n else if (\"example\"['$===']($case)) {block = self.$build_block(block_context, \"compound\", terminator, parent, reader, attributes)}\n else if (\"listing\"['$===']($case) || \"literal\"['$===']($case)) {block = self.$build_block(block_context, \"verbatim\", terminator, parent, reader, attributes)}\n else if (\"source\"['$===']($case)) {\n $$($nesting, 'AttributeList').$rekey(attributes, [nil, \"language\", \"linenums\"]);\n if ($truthy(attributes['$key?'](\"language\"))) {\n } else if ($truthy(document.$attributes()['$key?'](\"source-language\"))) {\n \n $writer = [\"language\", ($truthy($a = document.$attributes()['$[]'](\"source-language\")) ? $a : \"text\")];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(attributes['$key?'](\"linenums\"))) {\n } else if ($truthy(($truthy($a = attributes['$key?'](\"linenums-option\")) ? $a : document.$attributes()['$key?'](\"source-linenums-option\")))) {\n \n $writer = [\"linenums\", \"\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(attributes['$key?'](\"indent\"))) {\n } else if ($truthy(document.$attributes()['$key?'](\"source-indent\"))) {\n \n $writer = [\"indent\", document.$attributes()['$[]'](\"source-indent\")];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n block = self.$build_block(\"listing\", \"verbatim\", terminator, parent, reader, attributes);}\n else if (\"fenced_code\"['$===']($case)) {\n \n $writer = [\"style\", \"source\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ((ll = this_line.$length())['$=='](3)) {\n language = nil\n } else if ($truthy((comma_idx = (language = this_line.$slice(3, ll)).$index(\",\")))) {\n if ($truthy($rb_gt(comma_idx, 0))) {\n \n language = language.$slice(0, comma_idx).$strip();\n if ($truthy($rb_lt(comma_idx, $rb_minus(ll, 4)))) {\n \n $writer = [\"linenums\", \"\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n } else {\n \n language = nil;\n if ($truthy($rb_gt(ll, 4))) {\n \n $writer = [\"linenums\", \"\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n }\n } else {\n language = language.$lstrip()\n };\n if ($truthy(language['$nil_or_empty?']())) {\n if ($truthy(document.$attributes()['$key?'](\"source-language\"))) {\n \n $writer = [\"language\", ($truthy($a = document.$attributes()['$[]'](\"source-language\")) ? $a : \"text\")];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n } else {\n \n $writer = [\"language\", language];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if ($truthy(attributes['$key?'](\"linenums\"))) {\n } else if ($truthy(($truthy($a = attributes['$key?'](\"linenums-option\")) ? $a : document.$attributes()['$key?'](\"source-linenums-option\")))) {\n \n $writer = [\"linenums\", \"\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(attributes['$key?'](\"indent\"))) {\n } else if ($truthy(document.$attributes()['$key?'](\"source-indent\"))) {\n \n $writer = [\"indent\", document.$attributes()['$[]'](\"source-indent\")];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n terminator = terminator.$slice(0, 3);\n block = self.$build_block(\"listing\", \"verbatim\", terminator, parent, reader, attributes);}\n else if (\"pass\"['$===']($case)) {block = self.$build_block(block_context, \"raw\", terminator, parent, reader, attributes)}\n else if (\"stem\"['$===']($case) || \"latexmath\"['$===']($case) || \"asciimath\"['$===']($case)) {\n if (block_context['$=='](\"stem\")) {\n \n $writer = [\"style\", (function() {if ($truthy((explicit_stem_syntax = attributes['$[]'](2)))) {\n if ($truthy(explicit_stem_syntax['$include?'](\"tex\"))) {\n return \"latexmath\"\n } else {\n return \"asciimath\"\n }\n } else if ($truthy((default_stem_syntax = document.$attributes()['$[]'](\"stem\"))['$nil_or_empty?']())) {\n return \"asciimath\"\n } else {\n return default_stem_syntax\n }; return nil; })()];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n block = self.$build_block(\"stem\", \"raw\", terminator, parent, reader, attributes);}\n else if (\"open\"['$===']($case) || \"sidebar\"['$===']($case)) {block = self.$build_block(block_context, \"compound\", terminator, parent, reader, attributes)}\n else if (\"table\"['$===']($case)) {\n block_reader = $$($nesting, 'Reader').$new(reader.$read_lines_until($hash2([\"terminator\", \"skip_line_comments\"], {\"terminator\": terminator, \"skip_line_comments\": true})), reader.$cursor());\n if ($truthy(terminator['$start_with?'](\"|\", \"!\"))) {\n } else {\n ($truthy($a = attributes['$[]'](\"format\")) ? $a : (($writer = [\"format\", (function() {if ($truthy(terminator['$start_with?'](\",\"))) {\n return \"csv\"\n } else {\n return \"dsv\"\n }; return nil; })()]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n };\n block = self.$next_table(block_reader, parent, attributes);}\n else if (\"quote\"['$===']($case) || \"verse\"['$===']($case)) {\n $$($nesting, 'AttributeList').$rekey(attributes, [nil, \"attribution\", \"citetitle\"]);\n block = self.$build_block(block_context, (function() {if (block_context['$=='](\"verse\")) {\n return \"verbatim\"\n } else {\n return \"compound\"\n }; return nil; })(), terminator, parent, reader, attributes);}\n else {if ($truthy(($truthy($a = block_extensions) ? (extension = extensions['$registered_for_block?'](block_context, cloaked_context)) : $a))) {\n \n if ($truthy((content_model = extension.$config()['$[]'](\"content_model\"))['$!='](\"skip\"))) {\n \n if ($truthy((pos_attrs = ($truthy($a = extension.$config()['$[]'](\"pos_attrs\")) ? $a : []))['$empty?']()['$!']())) {\n $$($nesting, 'AttributeList').$rekey(attributes, [nil].$concat(pos_attrs))};\n if ($truthy((default_attrs = extension.$config()['$[]'](\"default_attrs\")))) {\n $send(default_attrs, 'each', [], (TMP_13 = function(k, v){var self = TMP_13.$$s || this, $f;\nif (k == null) k = nil;if (v == null) v = nil;\n return ($truthy($f = attributes['$[]'](k)) ? $f : (($writer = [k, v]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))}, TMP_13.$$s = self, TMP_13.$$arity = 2, TMP_13))};\n \n $writer = [\"cloaked-context\", cloaked_context];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n block = self.$build_block(block_context, content_model, terminator, parent, reader, attributes, $hash2([\"extension\"], {\"extension\": extension}));\n if ($truthy(block)) {\n } else {\n \n attributes.$clear();\n return nil;\n };\n } else {\n self.$raise(\"\" + \"Unsupported block type \" + (block_context) + \" at \" + (reader.$line_info()))\n }};\n };\n if ($truthy(source_location)) {\n \n $writer = [source_location];\n $send(block, 'source_location=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(attributes['$key?'](\"title\"))) {\n \n $writer = [attributes.$delete(\"title\")];\n $send(block, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n \n $writer = [attributes['$[]'](\"style\")];\n $send(block, 'style=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy((block_id = ($truthy($a = block.$id()) ? $a : (($writer = [attributes['$[]'](\"id\")]), $send(block, 'id=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))))) {\n if ($truthy(document.$register(\"refs\", [block_id, block, ($truthy($a = attributes['$[]'](\"reftext\")) ? $a : (function() {if ($truthy(block['$title?']())) {\n return block.$title()\n } else {\n return nil\n }; return nil; })())]))) {\n } else {\n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (this_path) + \": line \" + (this_lineno) + \": id assigned to block already in use: \" + (block_id))\n }};\n if ($truthy(attributes['$empty?']())) {\n } else {\n block.$attributes().$update(attributes)\n };\n block.$lock_in_subs();\n if ($truthy(block['$sub?'](\"callouts\"))) {\n if ($truthy(self.$catalog_callouts(block.$source(), document))) {\n } else {\n block.$remove_sub(\"callouts\")\n }};\n return block;\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_Parser_next_block_14.$$arity = -3);\n Opal.defs(self, '$read_paragraph_lines', TMP_Parser_read_paragraph_lines_15 = function $$read_paragraph_lines(reader, break_at_list, opts) {\n var self = this, $writer = nil, break_condition = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n \n $writer = [\"break_on_blank_lines\", true];\n $send(opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"break_on_list_continuation\", true];\n $send(opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"preserve_last_line\", true];\n $send(opts, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n break_condition = (function() {if ($truthy(break_at_list)) {\n \n if ($truthy($$($nesting, 'Compliance').$block_terminates_paragraph())) {\n return $$($nesting, 'StartOfBlockOrListProc')\n } else {\n return $$($nesting, 'StartOfListProc')\n };\n } else {\n \n if ($truthy($$($nesting, 'Compliance').$block_terminates_paragraph())) {\n return $$($nesting, 'StartOfBlockProc')\n } else {\n return $$($nesting, 'NoOp')\n };\n }; return nil; })();\n return $send(reader, 'read_lines_until', [opts], break_condition.$to_proc());\n }, TMP_Parser_read_paragraph_lines_15.$$arity = -3);\n Opal.defs(self, '$is_delimited_block?', TMP_Parser_is_delimited_block$q_16 = function(line, return_match_data) {\n var $a, $b, self = this, line_len = nil, tip = nil, tl = nil, fenced_code = nil, tip_3 = nil, context = nil, masq = nil;\n\n if (return_match_data == null) {\n return_match_data = false;\n }\n \n if ($truthy(($truthy($a = $rb_gt((line_len = line.$length()), 1)) ? $$($nesting, 'DELIMITED_BLOCK_HEADS')['$include?'](line.$slice(0, 2)) : $a))) {\n } else {\n return nil\n };\n if (line_len['$=='](2)) {\n \n tip = line;\n tl = 2;\n } else {\n \n if ($truthy($rb_le(line_len, 4))) {\n \n tip = line;\n tl = line_len;\n } else {\n \n tip = line.$slice(0, 4);\n tl = 4;\n };\n fenced_code = false;\n if ($truthy($$($nesting, 'Compliance').$markdown_syntax())) {\n \n tip_3 = (function() {if (tl['$=='](4)) {\n return tip.$chop()\n } else {\n return tip\n }; return nil; })();\n if (tip_3['$=='](\"```\")) {\n \n if ($truthy((($a = tl['$=='](4)) ? tip['$end_with?'](\"`\") : tl['$=='](4)))) {\n return nil};\n tip = tip_3;\n tl = 3;\n fenced_code = true;};};\n if ($truthy((($a = tl['$=='](3)) ? fenced_code['$!']() : tl['$=='](3)))) {\n return nil};\n };\n if ($truthy($$($nesting, 'DELIMITED_BLOCKS')['$key?'](tip))) {\n if ($truthy(($truthy($a = $rb_lt(tl, 4)) ? $a : tl['$=='](line_len)))) {\n if ($truthy(return_match_data)) {\n \n $b = $$($nesting, 'DELIMITED_BLOCKS')['$[]'](tip), $a = Opal.to_ary($b), (context = ($a[0] == null ? nil : $a[0])), (masq = ($a[1] == null ? nil : $a[1])), $b;\n return $$($nesting, 'BlockMatchData').$new(context, masq, tip, tip);\n } else {\n return true\n }\n } else if (((\"\" + (tip)) + ($rb_times(tip['$[]']($range(-1, -1, false)), $rb_minus(line_len, tl))))['$=='](line)) {\n if ($truthy(return_match_data)) {\n \n $b = $$($nesting, 'DELIMITED_BLOCKS')['$[]'](tip), $a = Opal.to_ary($b), (context = ($a[0] == null ? nil : $a[0])), (masq = ($a[1] == null ? nil : $a[1])), $b;\n return $$($nesting, 'BlockMatchData').$new(context, masq, tip, line);\n } else {\n return true\n }\n } else {\n return nil\n }\n } else {\n return nil\n };\n }, TMP_Parser_is_delimited_block$q_16.$$arity = -2);\n Opal.defs(self, '$build_block', TMP_Parser_build_block_17 = function $$build_block(block_context, content_model, terminator, parent, reader, attributes, options) {\n var $a, $b, self = this, skip_processing = nil, parse_as_content_model = nil, lines = nil, block_reader = nil, indent = nil, tab_size = nil, extension = nil, block = nil, $writer = nil;\n\n if (options == null) {\n options = $hash2([], {});\n }\n \n if (content_model['$=='](\"skip\")) {\n $a = [true, \"simple\"], (skip_processing = $a[0]), (parse_as_content_model = $a[1]), $a\n } else if (content_model['$=='](\"raw\")) {\n $a = [false, \"simple\"], (skip_processing = $a[0]), (parse_as_content_model = $a[1]), $a\n } else {\n $a = [false, content_model], (skip_processing = $a[0]), (parse_as_content_model = $a[1]), $a\n };\n if ($truthy(terminator['$nil?']())) {\n \n if (parse_as_content_model['$=='](\"verbatim\")) {\n lines = reader.$read_lines_until($hash2([\"break_on_blank_lines\", \"break_on_list_continuation\"], {\"break_on_blank_lines\": true, \"break_on_list_continuation\": true}))\n } else {\n \n if (content_model['$=='](\"compound\")) {\n content_model = \"simple\"};\n lines = self.$read_paragraph_lines(reader, false, $hash2([\"skip_line_comments\", \"skip_processing\"], {\"skip_line_comments\": true, \"skip_processing\": skip_processing}));\n };\n block_reader = nil;\n } else if ($truthy(parse_as_content_model['$!='](\"compound\"))) {\n \n lines = reader.$read_lines_until($hash2([\"terminator\", \"skip_processing\"], {\"terminator\": terminator, \"skip_processing\": skip_processing}));\n block_reader = nil;\n } else if (terminator['$=='](false)) {\n \n lines = nil;\n block_reader = reader;\n } else {\n \n lines = nil;\n block_reader = $$($nesting, 'Reader').$new(reader.$read_lines_until($hash2([\"terminator\", \"skip_processing\"], {\"terminator\": terminator, \"skip_processing\": skip_processing})), reader.$cursor());\n };\n if (content_model['$=='](\"verbatim\")) {\n if ($truthy((indent = attributes['$[]'](\"indent\")))) {\n self['$adjust_indentation!'](lines, indent, ($truthy($a = attributes['$[]'](\"tabsize\")) ? $a : parent.$document().$attributes()['$[]'](\"tabsize\")))\n } else if ($truthy($rb_gt((tab_size = ($truthy($a = attributes['$[]'](\"tabsize\")) ? $a : parent.$document().$attributes()['$[]'](\"tabsize\")).$to_i()), 0))) {\n self['$adjust_indentation!'](lines, nil, tab_size)}\n } else if (content_model['$=='](\"skip\")) {\n return nil};\n if ($truthy((extension = options['$[]'](\"extension\")))) {\n \n attributes.$delete(\"style\");\n if ($truthy((block = extension.$process_method()['$[]'](parent, ($truthy($a = block_reader) ? $a : $$($nesting, 'Reader').$new(lines)), attributes.$dup())))) {\n \n attributes.$replace(block.$attributes());\n if ($truthy((($a = block.$content_model()['$=='](\"compound\")) ? (lines = block.$lines())['$nil_or_empty?']()['$!']() : block.$content_model()['$=='](\"compound\")))) {\n \n content_model = \"compound\";\n block_reader = $$($nesting, 'Reader').$new(lines);};\n } else {\n return nil\n };\n } else {\n block = $$($nesting, 'Block').$new(parent, block_context, $hash2([\"content_model\", \"source\", \"attributes\"], {\"content_model\": content_model, \"source\": lines, \"attributes\": attributes}))\n };\n if ($truthy(($truthy($a = ($truthy($b = attributes['$key?'](\"title\")) ? block.$context()['$!='](\"admonition\") : $b)) ? parent.$document().$attributes()['$key?'](\"\" + (block.$context()) + \"-caption\") : $a))) {\n \n \n $writer = [attributes.$delete(\"title\")];\n $send(block, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n block.$assign_caption(attributes.$delete(\"caption\"));};\n if (content_model['$=='](\"compound\")) {\n self.$parse_blocks(block_reader, block)};\n return block;\n }, TMP_Parser_build_block_17.$$arity = -7);\n Opal.defs(self, '$parse_blocks', TMP_Parser_parse_blocks_18 = function $$parse_blocks(reader, parent) {\n var $a, $b, $c, self = this, block = nil;\n\n while ($truthy(($truthy($b = ($truthy($c = (block = self.$next_block(reader, parent))) ? parent['$<<'](block) : $c)) ? $b : reader['$has_more_lines?']()))) {\n \n }\n }, TMP_Parser_parse_blocks_18.$$arity = 2);\n Opal.defs(self, '$next_item_list', TMP_Parser_next_item_list_19 = function $$next_item_list(reader, list_type, parent) {\n var $a, $b, self = this, list_block = nil, $writer = nil, match = nil, marker = nil, this_item_level = nil, ancestor = nil, list_item = nil;\n\n \n list_block = $$($nesting, 'List').$new(parent, list_type);\n if (parent.$context()['$=='](list_type)) {\n \n $writer = [$rb_plus(parent.$level(), 1)];\n $send(list_block, 'level=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [1];\n $send(list_block, 'level=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n while ($truthy(($truthy($b = reader['$has_more_lines?']()) ? (match = $$($nesting, 'ListRxMap')['$[]'](list_type).$match(reader.$peek_line())) : $b))) {\n \n marker = self.$resolve_list_marker(list_type, match['$[]'](1));\n if ($truthy(($truthy($b = list_block['$items?']()) ? marker['$!='](list_block.$items()['$[]'](0).$marker()) : $b))) {\n \n this_item_level = $rb_plus(list_block.$level(), 1);\n ancestor = parent;\n while (ancestor.$context()['$=='](list_type)) {\n \n if (marker['$=='](ancestor.$items()['$[]'](0).$marker())) {\n \n this_item_level = ancestor.$level();\n break;;};\n ancestor = ancestor.$parent();\n };\n } else {\n this_item_level = list_block.$level()\n };\n if ($truthy(($truthy($b = list_block['$items?']()['$!']()) ? $b : this_item_level['$=='](list_block.$level())))) {\n list_item = self.$next_list_item(reader, list_block, match)\n } else if ($truthy($rb_lt(this_item_level, list_block.$level()))) {\n break;\n } else if ($truthy($rb_gt(this_item_level, list_block.$level()))) {\n list_block.$items()['$[]'](-1)['$<<'](self.$next_block(reader, list_block))};\n if ($truthy(list_item)) {\n list_block['$<<'](list_item)};\n list_item = nil;\n if ($truthy($b = reader.$skip_blank_lines())) {\n $b\n } else {\n break;\n };\n };\n return list_block;\n }, TMP_Parser_next_item_list_19.$$arity = 3);\n Opal.defs(self, '$catalog_callouts', TMP_Parser_catalog_callouts_21 = function $$catalog_callouts(text, document) {\n var TMP_20, self = this, found = nil;\n\n \n found = false;\n if ($truthy(text['$include?'](\"<\"))) {\n $send(text, 'scan', [$$($nesting, 'CalloutScanRx')], (TMP_20 = function(){var self = TMP_20.$$s || this, $a, $b, captured = nil, num = nil;\n\n \n $a = [(($b = $gvars['~']) === nil ? nil : $b['$[]'](0)), (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))], (captured = $a[0]), (num = $a[1]), $a;\n if ($truthy(captured['$start_with?'](\"\\\\\"))) {\n } else {\n document.$callouts().$register(num)\n };\n return (found = true);}, TMP_20.$$s = self, TMP_20.$$arity = 0, TMP_20))};\n return found;\n }, TMP_Parser_catalog_callouts_21.$$arity = 2);\n Opal.defs(self, '$catalog_inline_anchors', TMP_Parser_catalog_inline_anchors_23 = function $$catalog_inline_anchors(text, block, document) {\n var $a, TMP_22, self = this;\n\n \n if ($truthy(($truthy($a = text['$include?'](\"[[\")) ? $a : text['$include?'](\"or:\")))) {\n $send(text, 'scan', [$$($nesting, 'InlineAnchorScanRx')], (TMP_22 = function(){var self = TMP_22.$$s || this, $b, id = nil, reftext = nil;\n\n \n if ($truthy((id = (($b = $gvars['~']) === nil ? nil : $b['$[]'](1))))) {\n if ($truthy((reftext = (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))))) {\n if ($truthy(($truthy($b = reftext['$include?']($$($nesting, 'ATTR_REF_HEAD'))) ? (reftext = document.$sub_attributes(reftext))['$empty?']() : $b))) {\n return nil;}}\n } else {\n \n id = (($b = $gvars['~']) === nil ? nil : $b['$[]'](3));\n if ($truthy((reftext = (($b = $gvars['~']) === nil ? nil : $b['$[]'](4))))) {\n \n if ($truthy(reftext['$include?'](\"]\"))) {\n reftext = reftext.$gsub(\"\\\\]\", \"]\")};\n if ($truthy(($truthy($b = reftext['$include?']($$($nesting, 'ATTR_REF_HEAD'))) ? (reftext = document.$sub_attributes(reftext))['$empty?']() : $b))) {\n return nil;};};\n };\n if ($truthy(document.$register(\"refs\", [id, $$($nesting, 'Inline').$new(block, \"anchor\", reftext, $hash2([\"type\", \"id\"], {\"type\": \"ref\", \"id\": id})), reftext]))) {\n return nil\n } else {\n return self.$warn(\"\" + \"asciidoctor: WARNING: \" + (document.$reader().$path()) + \": id assigned to anchor already in use: \" + (id))\n };}, TMP_22.$$s = self, TMP_22.$$arity = 0, TMP_22))};\n return nil;\n }, TMP_Parser_catalog_inline_anchors_23.$$arity = 3);\n Opal.defs(self, '$catalog_inline_biblio_anchor', TMP_Parser_catalog_inline_biblio_anchor_24 = function $$catalog_inline_biblio_anchor(text, block, document) {\n var $a, $b, self = this, id = nil, reftext = nil;\n\n \n if ($truthy($$($nesting, 'InlineBiblioAnchorRx')['$=~'](text))) {\n if ($truthy(document.$register(\"refs\", [(id = (($a = $gvars['~']) === nil ? nil : $a['$[]'](1))), $$($nesting, 'Inline').$new(block, \"anchor\", (reftext = \"\" + \"[\" + (($truthy($a = (($b = $gvars['~']) === nil ? nil : $b['$[]'](2))) ? $a : id)) + \"]\"), $hash2([\"type\", \"id\"], {\"type\": \"bibref\", \"id\": id})), reftext]))) {\n } else {\n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (document.$reader().$path()) + \": id assigned to bibliography anchor already in use: \" + (id))\n }};\n return nil;\n }, TMP_Parser_catalog_inline_biblio_anchor_24.$$arity = 3);\n Opal.defs(self, '$next_description_list', TMP_Parser_next_description_list_25 = function $$next_description_list(reader, match, parent) {\n var $a, $b, $c, self = this, list_block = nil, previous_pair = nil, sibling_pattern = nil, term = nil, item = nil;\n\n \n list_block = $$($nesting, 'List').$new(parent, \"dlist\");\n previous_pair = nil;\n sibling_pattern = $$($nesting, 'DescriptionListSiblingRx')['$[]'](match['$[]'](2));\n while ($truthy(($truthy($b = match) ? $b : ($truthy($c = reader['$has_more_lines?']()) ? (match = sibling_pattern.$match(reader.$peek_line())) : $c)))) {\n \n $c = self.$next_list_item(reader, list_block, match, sibling_pattern), $b = Opal.to_ary($c), (term = ($b[0] == null ? nil : $b[0])), (item = ($b[1] == null ? nil : $b[1])), $c;\n if ($truthy(($truthy($b = previous_pair) ? previous_pair['$[]'](-1)['$!']() : $b))) {\n \n previous_pair.$pop();\n previous_pair['$[]'](0)['$<<'](term);\n previous_pair['$<<'](item);\n } else {\n list_block.$items()['$<<']((previous_pair = [[term], item]))\n };\n match = nil;\n };\n return list_block;\n }, TMP_Parser_next_description_list_25.$$arity = 3);\n Opal.defs(self, '$next_list_item', TMP_Parser_next_list_item_26 = function $$next_list_item(reader, list_block, match, sibling_trait) {\n var $a, $b, $c, self = this, list_type = nil, list_term = nil, list_item = nil, has_text = nil, text = nil, checkbox = nil, checked = nil, $writer = nil, list_item_reader = nil, comment_lines = nil, subsequent_line = nil, continuation_connects_first_block = nil, content_adjacent = nil, options = nil, block = nil;\n\n if (sibling_trait == null) {\n sibling_trait = nil;\n }\n \n if ((list_type = list_block.$context())['$=='](\"dlist\")) {\n \n list_term = $$($nesting, 'ListItem').$new(list_block, match['$[]'](1));\n list_item = $$($nesting, 'ListItem').$new(list_block, match['$[]'](3));\n has_text = match['$[]'](3)['$nil_or_empty?']()['$!']();\n } else {\n \n text = match['$[]'](2);\n checkbox = false;\n if ($truthy((($a = list_type['$=='](\"ulist\")) ? text['$start_with?'](\"[\") : list_type['$=='](\"ulist\")))) {\n if ($truthy(text['$start_with?'](\"[ ] \"))) {\n \n checkbox = true;\n checked = false;\n text = text['$[]']($range(3, -1, false)).$lstrip();\n } else if ($truthy(text['$start_with?'](\"[x] \", \"[*] \"))) {\n \n checkbox = true;\n checked = true;\n text = text['$[]']($range(3, -1, false)).$lstrip();}};\n list_item = $$($nesting, 'ListItem').$new(list_block, text);\n if ($truthy(checkbox)) {\n \n \n $writer = [\"checklist-option\", \"\"];\n $send(list_block.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"checkbox\", \"\"];\n $send(list_item.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(checked)) {\n \n $writer = [\"checked\", \"\"];\n $send(list_item.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};};\n sibling_trait = ($truthy($a = sibling_trait) ? $a : self.$resolve_list_marker(list_type, match['$[]'](1), list_block.$items().$size(), true, reader));\n \n $writer = [sibling_trait];\n $send(list_item, 'marker=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n has_text = true;\n };\n reader.$shift();\n list_item_reader = $$($nesting, 'Reader').$new(self.$read_lines_for_list_item(reader, list_type, sibling_trait, has_text), reader.$cursor());\n if ($truthy(list_item_reader['$has_more_lines?']())) {\n \n comment_lines = list_item_reader.$skip_line_comments();\n if ($truthy((subsequent_line = list_item_reader.$peek_line()))) {\n \n if ($truthy(comment_lines['$empty?']())) {\n } else {\n list_item_reader.$unshift_lines(comment_lines)\n };\n if ($truthy((continuation_connects_first_block = subsequent_line['$empty?']()))) {\n content_adjacent = false\n } else {\n \n content_adjacent = true;\n if (list_type['$=='](\"dlist\")) {\n } else {\n has_text = false\n };\n };\n } else {\n \n continuation_connects_first_block = false;\n content_adjacent = false;\n };\n options = $hash2([\"text\"], {\"text\": has_text['$!']()});\n while ($truthy(($truthy($b = ($truthy($c = (block = self.$next_block(list_item_reader, list_item, $hash2([], {}), options))) ? list_item['$<<'](block) : $c)) ? $b : list_item_reader['$has_more_lines?']()))) {\n \n };\n list_item.$fold_first(continuation_connects_first_block, content_adjacent);};\n if (list_type['$=='](\"dlist\")) {\n if ($truthy(($truthy($a = list_item['$text?']()) ? $a : list_item['$blocks?']()))) {\n return [list_term, list_item]\n } else {\n return [list_term, nil]\n }\n } else {\n return list_item\n };\n }, TMP_Parser_next_list_item_26.$$arity = -4);\n Opal.defs(self, '$read_lines_for_list_item', TMP_Parser_read_lines_for_list_item_32 = function $$read_lines_for_list_item(reader, list_type, sibling_trait, has_text) {\n var $a, $b, $c, TMP_27, TMP_28, TMP_29, TMP_30, TMP_31, self = this, buffer = nil, continuation = nil, within_nested_list = nil, detached_continuation = nil, this_line = nil, prev_line = nil, $writer = nil, match = nil, nested_list_type = nil;\n\n if (sibling_trait == null) {\n sibling_trait = nil;\n }\n if (has_text == null) {\n has_text = true;\n }\n \n buffer = [];\n continuation = \"inactive\";\n within_nested_list = false;\n detached_continuation = nil;\n while ($truthy(reader['$has_more_lines?']())) {\n \n this_line = reader.$read_line();\n if ($truthy(self['$is_sibling_list_item?'](this_line, list_type, sibling_trait))) {\n break;};\n prev_line = (function() {if ($truthy(buffer['$empty?']())) {\n return nil\n } else {\n return buffer['$[]'](-1)\n }; return nil; })();\n if (prev_line['$==']($$($nesting, 'LIST_CONTINUATION'))) {\n \n if (continuation['$=='](\"inactive\")) {\n \n continuation = \"active\";\n has_text = true;\n if ($truthy(within_nested_list)) {\n } else {\n \n $writer = [-1, \"\"];\n $send(buffer, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };};\n if (this_line['$==']($$($nesting, 'LIST_CONTINUATION'))) {\n \n if ($truthy(continuation['$!='](\"frozen\"))) {\n \n continuation = \"frozen\";\n buffer['$<<'](this_line);};\n this_line = nil;\n continue;;};};\n if ($truthy((match = self['$is_delimited_block?'](this_line, true)))) {\n if (continuation['$=='](\"active\")) {\n \n buffer['$<<'](this_line);\n buffer.$concat(reader.$read_lines_until($hash2([\"terminator\", \"read_last_line\"], {\"terminator\": match.$terminator(), \"read_last_line\": true})));\n continuation = \"inactive\";\n } else {\n break;\n }\n } else if ($truthy(($truthy($b = (($c = list_type['$=='](\"dlist\")) ? continuation['$!='](\"active\") : list_type['$=='](\"dlist\"))) ? $$($nesting, 'BlockAttributeLineRx')['$match?'](this_line) : $b))) {\n break;\n } else if ($truthy((($b = continuation['$=='](\"active\")) ? this_line['$empty?']()['$!']() : continuation['$=='](\"active\")))) {\n if ($truthy($$($nesting, 'LiteralParagraphRx')['$match?'](this_line))) {\n \n reader.$unshift_line(this_line);\n buffer.$concat($send(reader, 'read_lines_until', [$hash2([\"preserve_last_line\", \"break_on_blank_lines\", \"break_on_list_continuation\"], {\"preserve_last_line\": true, \"break_on_blank_lines\": true, \"break_on_list_continuation\": true})], (TMP_27 = function(line){var self = TMP_27.$$s || this, $d;\nif (line == null) line = nil;\n return (($d = list_type['$=='](\"dlist\")) ? self['$is_sibling_list_item?'](line, list_type, sibling_trait) : list_type['$=='](\"dlist\"))}, TMP_27.$$s = self, TMP_27.$$arity = 1, TMP_27)));\n continuation = \"inactive\";\n } else if ($truthy(($truthy($b = ($truthy($c = $$($nesting, 'BlockTitleRx')['$match?'](this_line)) ? $c : $$($nesting, 'BlockAttributeLineRx')['$match?'](this_line))) ? $b : $$($nesting, 'AttributeEntryRx')['$match?'](this_line)))) {\n buffer['$<<'](this_line)\n } else {\n \n if ($truthy((nested_list_type = $send((function() {if ($truthy(within_nested_list)) {\n return [\"dlist\"]\n } else {\n return $$($nesting, 'NESTABLE_LIST_CONTEXTS')\n }; return nil; })(), 'find', [], (TMP_28 = function(ctx){var self = TMP_28.$$s || this;\nif (ctx == null) ctx = nil;\n return $$($nesting, 'ListRxMap')['$[]'](ctx)['$match?'](this_line)}, TMP_28.$$s = self, TMP_28.$$arity = 1, TMP_28))))) {\n \n within_nested_list = true;\n if ($truthy((($b = nested_list_type['$=='](\"dlist\")) ? (($c = $gvars['~']) === nil ? nil : $c['$[]'](3))['$nil_or_empty?']() : nested_list_type['$=='](\"dlist\")))) {\n has_text = false};};\n buffer['$<<'](this_line);\n continuation = \"inactive\";\n }\n } else if ($truthy(($truthy($b = prev_line) ? prev_line['$empty?']() : $b))) {\n \n if ($truthy(this_line['$empty?']())) {\n \n if ($truthy((this_line = ($truthy($b = reader.$skip_blank_lines()) ? reader.$read_line() : $b)))) {\n } else {\n break;\n };\n if ($truthy(self['$is_sibling_list_item?'](this_line, list_type, sibling_trait))) {\n break;};};\n if (this_line['$==']($$($nesting, 'LIST_CONTINUATION'))) {\n \n detached_continuation = buffer.$size();\n buffer['$<<'](this_line);\n } else if ($truthy(has_text)) {\n if ($truthy(self['$is_sibling_list_item?'](this_line, list_type, sibling_trait))) {\n break;\n } else if ($truthy((nested_list_type = $send($$($nesting, 'NESTABLE_LIST_CONTEXTS'), 'find', [], (TMP_29 = function(ctx){var self = TMP_29.$$s || this;\nif (ctx == null) ctx = nil;\n return $$($nesting, 'ListRxMap')['$[]'](ctx)['$=~'](this_line)}, TMP_29.$$s = self, TMP_29.$$arity = 1, TMP_29))))) {\n \n buffer['$<<'](this_line);\n within_nested_list = true;\n if ($truthy((($b = nested_list_type['$=='](\"dlist\")) ? (($c = $gvars['~']) === nil ? nil : $c['$[]'](3))['$nil_or_empty?']() : nested_list_type['$=='](\"dlist\")))) {\n has_text = false};\n } else if ($truthy($$($nesting, 'LiteralParagraphRx')['$match?'](this_line))) {\n \n reader.$unshift_line(this_line);\n buffer.$concat($send(reader, 'read_lines_until', [$hash2([\"preserve_last_line\", \"break_on_blank_lines\", \"break_on_list_continuation\"], {\"preserve_last_line\": true, \"break_on_blank_lines\": true, \"break_on_list_continuation\": true})], (TMP_30 = function(line){var self = TMP_30.$$s || this, $d;\nif (line == null) line = nil;\n return (($d = list_type['$=='](\"dlist\")) ? self['$is_sibling_list_item?'](line, list_type, sibling_trait) : list_type['$=='](\"dlist\"))}, TMP_30.$$s = self, TMP_30.$$arity = 1, TMP_30)));\n } else {\n break;\n }\n } else {\n \n if ($truthy(within_nested_list)) {\n } else {\n buffer.$pop()\n };\n buffer['$<<'](this_line);\n has_text = true;\n };\n } else {\n \n if ($truthy(this_line['$empty?']()['$!']())) {\n has_text = true};\n if ($truthy((nested_list_type = $send((function() {if ($truthy(within_nested_list)) {\n return [\"dlist\"]\n } else {\n return $$($nesting, 'NESTABLE_LIST_CONTEXTS')\n }; return nil; })(), 'find', [], (TMP_31 = function(ctx){var self = TMP_31.$$s || this;\nif (ctx == null) ctx = nil;\n return $$($nesting, 'ListRxMap')['$[]'](ctx)['$=~'](this_line)}, TMP_31.$$s = self, TMP_31.$$arity = 1, TMP_31))))) {\n \n within_nested_list = true;\n if ($truthy((($b = nested_list_type['$=='](\"dlist\")) ? (($c = $gvars['~']) === nil ? nil : $c['$[]'](3))['$nil_or_empty?']() : nested_list_type['$=='](\"dlist\")))) {\n has_text = false};};\n buffer['$<<'](this_line);\n };\n this_line = nil;\n };\n if ($truthy(this_line)) {\n reader.$unshift_line(this_line)};\n if ($truthy(detached_continuation)) {\n buffer.$delete_at(detached_continuation)};\n while ($truthy(($truthy($b = buffer['$empty?']()['$!']()) ? buffer['$[]'](-1)['$empty?']() : $b))) {\n buffer.$pop()\n };\n if ($truthy(($truthy($a = buffer['$empty?']()['$!']()) ? buffer['$[]'](-1)['$==']($$($nesting, 'LIST_CONTINUATION')) : $a))) {\n buffer.$pop()};\n return buffer;\n }, TMP_Parser_read_lines_for_list_item_32.$$arity = -3);\n Opal.defs(self, '$initialize_section', TMP_Parser_initialize_section_33 = function $$initialize_section(reader, parent, attributes) {\n var $a, $b, self = this, document = nil, source_location = nil, sect_id = nil, sect_reftext = nil, sect_title = nil, sect_level = nil, atx = nil, $writer = nil, style = nil, sect_name = nil, sect_special = nil, sect_numbered_force = nil, $case = nil, section = nil, id = nil;\n\n if (attributes == null) {\n attributes = $hash2([], {});\n }\n \n document = parent.$document();\n if ($truthy(document.$sourcemap())) {\n source_location = reader.$cursor()};\n $b = self.$parse_section_title(reader, document), $a = Opal.to_ary($b), (sect_id = ($a[0] == null ? nil : $a[0])), (sect_reftext = ($a[1] == null ? nil : $a[1])), (sect_title = ($a[2] == null ? nil : $a[2])), (sect_level = ($a[3] == null ? nil : $a[3])), (atx = ($a[4] == null ? nil : $a[4])), $b;\n if ($truthy(sect_reftext)) {\n \n $writer = [\"reftext\", sect_reftext];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else if ($truthy(attributes['$key?'](\"reftext\"))) {\n sect_reftext = attributes['$[]'](\"reftext\")};\n style = (function() {if ($truthy(attributes['$[]'](1))) {\n \n return self.$parse_style_attribute(attributes, reader);\n } else {\n return nil\n }; return nil; })();\n if ($truthy(style)) {\n if ($truthy((($a = style['$=='](\"abstract\")) ? document.$doctype()['$=='](\"book\") : style['$=='](\"abstract\")))) {\n $a = [\"chapter\", 1], (sect_name = $a[0]), (sect_level = $a[1]), $a\n } else {\n \n $a = [style, true], (sect_name = $a[0]), (sect_special = $a[1]), $a;\n if (sect_level['$=='](0)) {\n sect_level = 1};\n sect_numbered_force = style['$=='](\"appendix\");\n }\n } else {\n $case = document.$doctype();\n if (\"book\"['$===']($case)) {sect_name = (function() {if (sect_level['$=='](0)) {\n return \"part\"\n } else {\n \n if (sect_level['$=='](1)) {\n return \"chapter\"\n } else {\n return \"section\"\n };\n }; return nil; })()}\n else if (\"manpage\"['$===']($case)) {if (sect_title.$casecmp(\"synopsis\")['$=='](0)) {\n $a = [\"synopsis\", true], (sect_name = $a[0]), (sect_special = $a[1]), $a\n } else {\n sect_name = \"section\"\n }}\n else {sect_name = \"section\"}\n };\n section = $$($nesting, 'Section').$new(parent, sect_level, false);\n $a = [sect_id, sect_title, sect_name, source_location], section['$id=']($a[0]), section['$title=']($a[1]), section['$sectname=']($a[2]), section['$source_location=']($a[3]), $a;\n if ($truthy(sect_special)) {\n \n \n $writer = [true];\n $send(section, 'special=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(sect_numbered_force)) {\n \n $writer = [true];\n $send(section, 'numbered=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n } else if ($truthy(($truthy($a = $rb_gt(sect_level, 0)) ? document.$attributes()['$key?'](\"sectnums\") : $a))) {\n \n $writer = [(function() {if ($truthy(section.$special())) {\n \n return (($a = parent.$context()['$=='](\"section\")) ? parent.$numbered() : parent.$context()['$=='](\"section\"));\n } else {\n return true\n }; return nil; })()];\n $send(section, 'numbered=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy((id = ($truthy($a = section.$id()) ? $a : (($writer = [($truthy($b = attributes['$[]'](\"id\")) ? $b : (function() {if ($truthy(document.$attributes()['$key?'](\"sectids\"))) {\n \n return $$($nesting, 'Section').$generate_id(section.$title(), document);\n } else {\n return nil\n }; return nil; })())]), $send(section, 'id=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))))) {\n if ($truthy(document.$register(\"refs\", [id, section, ($truthy($a = sect_reftext) ? $a : section.$title())]))) {\n } else {\n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (reader.$path()) + \": line \" + ($rb_minus(reader.$lineno(), (function() {if ($truthy(atx)) {\n return 1\n } else {\n return 2\n }; return nil; })())) + \": id assigned to section already in use: \" + (id))\n }};\n section.$update_attributes(attributes);\n reader.$skip_blank_lines();\n return section;\n }, TMP_Parser_initialize_section_33.$$arity = -3);\n Opal.defs(self, '$is_next_line_section?', TMP_Parser_is_next_line_section$q_34 = function(reader, attributes) {\n var $a, $b, self = this, style = nil;\n\n if ($truthy(($truthy($a = ($truthy($b = (style = attributes['$[]'](1))) ? style['$start_with?'](\"discrete\", \"float\") : $b)) ? $$($nesting, 'DiscreteHeadingStyleRx')['$match?'](style) : $a))) {\n return nil\n } else if ($truthy(reader['$has_more_lines?']())) {\n if ($truthy($$($nesting, 'Compliance').$underline_style_section_titles())) {\n return $send(self, 'is_section_title?', Opal.to_a(reader.$peek_lines(2, ($truthy($a = style) ? style['$=='](\"comment\") : $a))))\n } else {\n return self['$atx_section_title?'](reader.$peek_line())\n }\n } else {\n return nil\n }\n }, TMP_Parser_is_next_line_section$q_34.$$arity = 2);\n Opal.defs(self, '$is_next_line_doctitle?', TMP_Parser_is_next_line_doctitle$q_35 = function(reader, attributes, leveloffset) {\n var $a, self = this, sect_level = nil;\n\n if ($truthy(leveloffset)) {\n return ($truthy($a = (sect_level = self['$is_next_line_section?'](reader, attributes))) ? $rb_plus(sect_level, leveloffset.$to_i())['$=='](0) : $a)\n } else {\n return self['$is_next_line_section?'](reader, attributes)['$=='](0)\n }\n }, TMP_Parser_is_next_line_doctitle$q_35.$$arity = 3);\n Opal.defs(self, '$is_section_title?', TMP_Parser_is_section_title$q_36 = function(line1, line2) {\n var $a, self = this;\n\n if (line2 == null) {\n line2 = nil;\n }\n return ($truthy($a = self['$atx_section_title?'](line1)) ? $a : (function() {if ($truthy(line2['$nil_or_empty?']())) {\n return nil\n } else {\n return self['$setext_section_title?'](line1, line2)\n }; return nil; })())\n }, TMP_Parser_is_section_title$q_36.$$arity = -2);\n Opal.defs(self, '$atx_section_title?', TMP_Parser_atx_section_title$q_37 = function(line) {\n var $a, self = this;\n\n if ($truthy((function() {if ($truthy($$($nesting, 'Compliance').$markdown_syntax())) {\n \n return ($truthy($a = line['$start_with?'](\"=\", \"#\")) ? $$($nesting, 'ExtAtxSectionTitleRx')['$=~'](line) : $a);\n } else {\n \n return ($truthy($a = line['$start_with?'](\"=\")) ? $$($nesting, 'AtxSectionTitleRx')['$=~'](line) : $a);\n }; return nil; })())) {\n return $rb_minus((($a = $gvars['~']) === nil ? nil : $a['$[]'](1)).$length(), 1)\n } else {\n return nil\n }\n }, TMP_Parser_atx_section_title$q_37.$$arity = 1);\n Opal.defs(self, '$setext_section_title?', TMP_Parser_setext_section_title$q_38 = function(line1, line2) {\n var $a, $b, $c, self = this, level = nil, line2_ch1 = nil, line2_len = nil;\n\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = (level = $$($nesting, 'SETEXT_SECTION_LEVELS')['$[]']((line2_ch1 = line2.$chr())))) ? $rb_times(line2_ch1, (line2_len = line2.$length()))['$=='](line2) : $c)) ? $$($nesting, 'SetextSectionTitleRx')['$match?'](line1) : $b)) ? $rb_lt($rb_minus(self.$line_length(line1), line2_len).$abs(), 2) : $a))) {\n return level\n } else {\n return nil\n }\n }, TMP_Parser_setext_section_title$q_38.$$arity = 2);\n Opal.defs(self, '$parse_section_title', TMP_Parser_parse_section_title_39 = function $$parse_section_title(reader, document) {\n var $a, $b, $c, $d, $e, self = this, sect_id = nil, sect_reftext = nil, line1 = nil, sect_level = nil, sect_title = nil, atx = nil, line2 = nil, line2_ch1 = nil, line2_len = nil;\n\n \n sect_id = (sect_reftext = nil);\n line1 = reader.$read_line();\n if ($truthy((function() {if ($truthy($$($nesting, 'Compliance').$markdown_syntax())) {\n \n return ($truthy($a = line1['$start_with?'](\"=\", \"#\")) ? $$($nesting, 'ExtAtxSectionTitleRx')['$=~'](line1) : $a);\n } else {\n \n return ($truthy($a = line1['$start_with?'](\"=\")) ? $$($nesting, 'AtxSectionTitleRx')['$=~'](line1) : $a);\n }; return nil; })())) {\n \n $a = [$rb_minus((($b = $gvars['~']) === nil ? nil : $b['$[]'](1)).$length(), 1), (($b = $gvars['~']) === nil ? nil : $b['$[]'](2)), true], (sect_level = $a[0]), (sect_title = $a[1]), (atx = $a[2]), $a;\n if ($truthy(($truthy($a = ($truthy($b = sect_title['$end_with?'](\"]]\")) ? $$($nesting, 'InlineSectionAnchorRx')['$=~'](sect_title) : $b)) ? (($b = $gvars['~']) === nil ? nil : $b['$[]'](1))['$!']() : $a))) {\n $a = [sect_title.$slice(0, $rb_minus(sect_title.$length(), (($b = $gvars['~']) === nil ? nil : $b['$[]'](0)).$length())), (($b = $gvars['~']) === nil ? nil : $b['$[]'](2)), (($b = $gvars['~']) === nil ? nil : $b['$[]'](3))], (sect_title = $a[0]), (sect_id = $a[1]), (sect_reftext = $a[2]), $a};\n } else if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = ($truthy($e = $$($nesting, 'Compliance').$underline_style_section_titles()) ? (line2 = reader.$peek_line(true)) : $e)) ? (sect_level = $$($nesting, 'SETEXT_SECTION_LEVELS')['$[]']((line2_ch1 = line2.$chr()))) : $d)) ? $rb_times(line2_ch1, (line2_len = line2.$length()))['$=='](line2) : $c)) ? (sect_title = ($truthy($c = $$($nesting, 'SetextSectionTitleRx')['$=~'](line1)) ? (($d = $gvars['~']) === nil ? nil : $d['$[]'](1)) : $c)) : $b)) ? $rb_lt($rb_minus(self.$line_length(line1), line2_len).$abs(), 2) : $a))) {\n \n atx = false;\n if ($truthy(($truthy($a = ($truthy($b = sect_title['$end_with?'](\"]]\")) ? $$($nesting, 'InlineSectionAnchorRx')['$=~'](sect_title) : $b)) ? (($b = $gvars['~']) === nil ? nil : $b['$[]'](1))['$!']() : $a))) {\n $a = [sect_title.$slice(0, $rb_minus(sect_title.$length(), (($b = $gvars['~']) === nil ? nil : $b['$[]'](0)).$length())), (($b = $gvars['~']) === nil ? nil : $b['$[]'](2)), (($b = $gvars['~']) === nil ? nil : $b['$[]'](3))], (sect_title = $a[0]), (sect_id = $a[1]), (sect_reftext = $a[2]), $a};\n reader.$shift();\n } else {\n self.$raise(\"\" + \"Unrecognized section at \" + (reader.$prev_line_info()))\n };\n if ($truthy(document['$attr?'](\"leveloffset\"))) {\n sect_level = $rb_plus(sect_level, document.$attr(\"leveloffset\").$to_i())};\n return [sect_id, sect_reftext, sect_title, sect_level, atx];\n }, TMP_Parser_parse_section_title_39.$$arity = 2);\n if ($truthy($$($nesting, 'FORCE_UNICODE_LINE_LENGTH'))) {\n Opal.defs(self, '$line_length', TMP_Parser_line_length_40 = function $$line_length(line) {\n var self = this;\n\n return line.$scan($$($nesting, 'UnicodeCharScanRx')).$size()\n }, TMP_Parser_line_length_40.$$arity = 1)\n } else {\n Opal.defs(self, '$line_length', TMP_Parser_line_length_41 = function $$line_length(line) {\n var self = this;\n\n return line.$length()\n }, TMP_Parser_line_length_41.$$arity = 1)\n };\n Opal.defs(self, '$parse_header_metadata', TMP_Parser_parse_header_metadata_46 = function $$parse_header_metadata(reader, document) {\n var $a, TMP_42, TMP_43, TMP_44, self = this, metadata = nil, implicit_author = nil, implicit_authors = nil, author_metadata = nil, rev_metadata = nil, rev_line = nil, match = nil, $writer = nil, component = nil, author_line = nil, authors = nil, author_idx = nil, author_key = nil, explicit = nil, sparse = nil, author_override = nil;\n\n if (document == null) {\n document = nil;\n }\n \n self.$process_attribute_entries(reader, document);\n $a = [$hash2([], {}), nil, nil], (metadata = $a[0]), (implicit_author = $a[1]), (implicit_authors = $a[2]), $a;\n if ($truthy(($truthy($a = reader['$has_more_lines?']()) ? reader['$next_line_empty?']()['$!']() : $a))) {\n \n if ($truthy((author_metadata = self.$process_authors(reader.$read_line()))['$empty?']())) {\n } else {\n \n if ($truthy(document)) {\n \n $send(author_metadata, 'each', [], (TMP_42 = function(key, val){var self = TMP_42.$$s || this, $writer = nil;\nif (key == null) key = nil;if (val == null) val = nil;\n if ($truthy(document.$attributes()['$key?'](key))) {\n return nil\n } else {\n \n $writer = [key, (function() {if ($truthy($$$('::', 'String')['$==='](val))) {\n \n return document.$apply_header_subs(val);\n } else {\n return val\n }; return nil; })()];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }}, TMP_42.$$s = self, TMP_42.$$arity = 2, TMP_42));\n implicit_author = document.$attributes()['$[]'](\"author\");\n implicit_authors = document.$attributes()['$[]'](\"authors\");};\n metadata = author_metadata;\n };\n self.$process_attribute_entries(reader, document);\n rev_metadata = $hash2([], {});\n if ($truthy(($truthy($a = reader['$has_more_lines?']()) ? reader['$next_line_empty?']()['$!']() : $a))) {\n \n rev_line = reader.$read_line();\n if ($truthy((match = $$($nesting, 'RevisionInfoLineRx').$match(rev_line)))) {\n \n if ($truthy(match['$[]'](1))) {\n \n $writer = [\"revnumber\", match['$[]'](1).$rstrip()];\n $send(rev_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy((component = match['$[]'](2).$strip())['$empty?']())) {\n } else if ($truthy(($truthy($a = match['$[]'](1)['$!']()) ? component['$start_with?'](\"v\") : $a))) {\n \n $writer = [\"revnumber\", component['$[]']($range(1, -1, false))];\n $send(rev_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [\"revdate\", component];\n $send(rev_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if ($truthy(match['$[]'](3))) {\n \n $writer = [\"revremark\", match['$[]'](3).$rstrip()];\n $send(rev_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n } else {\n reader.$unshift_line(rev_line)\n };};\n if ($truthy(rev_metadata['$empty?']())) {\n } else {\n \n if ($truthy(document)) {\n $send(rev_metadata, 'each', [], (TMP_43 = function(key, val){var self = TMP_43.$$s || this;\nif (key == null) key = nil;if (val == null) val = nil;\n if ($truthy(document.$attributes()['$key?'](key))) {\n return nil\n } else {\n \n $writer = [key, document.$apply_header_subs(val)];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }}, TMP_43.$$s = self, TMP_43.$$arity = 2, TMP_43))};\n metadata.$update(rev_metadata);\n };\n self.$process_attribute_entries(reader, document);\n reader.$skip_blank_lines();};\n if ($truthy(document)) {\n \n if ($truthy(($truthy($a = document.$attributes()['$key?'](\"author\")) ? (author_line = document.$attributes()['$[]'](\"author\"))['$!='](implicit_author) : $a))) {\n author_metadata = self.$process_authors(author_line, true, false)\n } else if ($truthy(($truthy($a = document.$attributes()['$key?'](\"authors\")) ? (author_line = document.$attributes()['$[]'](\"authors\"))['$!='](implicit_authors) : $a))) {\n author_metadata = self.$process_authors(author_line, true)\n } else {\n \n $a = [[], 1, \"author_1\", false, false], (authors = $a[0]), (author_idx = $a[1]), (author_key = $a[2]), (explicit = $a[3]), (sparse = $a[4]), $a;\n while ($truthy(document.$attributes()['$key?'](author_key))) {\n \n if ((author_override = document.$attributes()['$[]'](author_key))['$=='](author_metadata['$[]'](author_key))) {\n \n authors['$<<'](nil);\n sparse = true;\n } else {\n \n authors['$<<'](author_override);\n explicit = true;\n };\n author_key = \"\" + \"author_\" + ((author_idx = $rb_plus(author_idx, 1)));\n };\n if ($truthy(explicit)) {\n \n if ($truthy(sparse)) {\n $send(authors, 'each_with_index', [], (TMP_44 = function(author, idx){var self = TMP_44.$$s || this, TMP_45, name_idx = nil;\nif (author == null) author = nil;if (idx == null) idx = nil;\n if ($truthy(author)) {\n return nil\n } else {\n \n $writer = [idx, $rb_times($send([author_metadata['$[]'](\"\" + \"firstname_\" + ((name_idx = $rb_plus(idx, 1)))), author_metadata['$[]'](\"\" + \"middlename_\" + (name_idx)), author_metadata['$[]'](\"\" + \"lastname_\" + (name_idx))].$compact(), 'map', [], (TMP_45 = function(it){var self = TMP_45.$$s || this;\nif (it == null) it = nil;\n return it.$tr(\" \", \"_\")}, TMP_45.$$s = self, TMP_45.$$arity = 1, TMP_45)), \" \")];\n $send(authors, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }}, TMP_44.$$s = self, TMP_44.$$arity = 2, TMP_44))};\n author_metadata = self.$process_authors(authors, true, false);\n } else {\n author_metadata = $hash2([], {})\n };\n };\n if ($truthy(author_metadata['$empty?']())) {\n } else {\n \n document.$attributes().$update(author_metadata);\n if ($truthy(($truthy($a = document.$attributes()['$key?'](\"email\")['$!']()) ? document.$attributes()['$key?'](\"email_1\") : $a))) {\n \n $writer = [\"email\", document.$attributes()['$[]'](\"email_1\")];\n $send(document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n };};\n return metadata;\n }, TMP_Parser_parse_header_metadata_46.$$arity = -2);\n Opal.defs(self, '$process_authors', TMP_Parser_process_authors_52 = function $$process_authors(author_line, names_only, multiple) {\n var TMP_47, TMP_48, self = this, author_metadata = nil, keys = nil, author_entries = nil;\n\n if (names_only == null) {\n names_only = false;\n }\n if (multiple == null) {\n multiple = true;\n }\n \n author_metadata = $hash2([], {});\n keys = [\"author\", \"authorinitials\", \"firstname\", \"middlename\", \"lastname\", \"email\"];\n author_entries = (function() {if ($truthy(multiple)) {\n return $send(author_line.$split(\";\"), 'map', [], (TMP_47 = function(it){var self = TMP_47.$$s || this;\nif (it == null) it = nil;\n return it.$strip()}, TMP_47.$$s = self, TMP_47.$$arity = 1, TMP_47))\n } else {\n return self.$Array(author_line)\n }; return nil; })();\n $send(author_entries, 'each_with_index', [], (TMP_48 = function(author_entry, idx){var self = TMP_48.$$s || this, TMP_49, TMP_50, $a, TMP_51, key_map = nil, segments = nil, $writer = nil, match = nil, author = nil, fname = nil, mname = nil, lname = nil;\nif (author_entry == null) author_entry = nil;if (idx == null) idx = nil;\n \n if ($truthy(author_entry['$empty?']())) {\n return nil;};\n key_map = $hash2([], {});\n if (idx['$=='](0)) {\n $send(keys, 'each', [], (TMP_49 = function(key){var self = TMP_49.$$s || this, $writer = nil;\nif (key == null) key = nil;\n \n $writer = [key.$to_sym(), key];\n $send(key_map, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_49.$$s = self, TMP_49.$$arity = 1, TMP_49))\n } else {\n $send(keys, 'each', [], (TMP_50 = function(key){var self = TMP_50.$$s || this, $writer = nil;\nif (key == null) key = nil;\n \n $writer = [key.$to_sym(), \"\" + (key) + \"_\" + ($rb_plus(idx, 1))];\n $send(key_map, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_50.$$s = self, TMP_50.$$arity = 1, TMP_50))\n };\n segments = nil;\n if ($truthy(names_only)) {\n \n if ($truthy(author_entry['$include?'](\"<\"))) {\n \n \n $writer = [key_map['$[]'](\"author\"), author_entry.$tr(\"_\", \" \")];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n author_entry = author_entry.$gsub($$($nesting, 'XmlSanitizeRx'), \"\");};\n if ((segments = author_entry.$split(nil, 3)).$size()['$=='](3)) {\n segments['$<<'](segments.$pop().$squeeze(\" \"))};\n } else if ($truthy((match = $$($nesting, 'AuthorInfoLineRx').$match(author_entry)))) {\n (segments = match.$to_a()).$shift()};\n if ($truthy(segments)) {\n \n author = (($writer = [key_map['$[]'](\"firstname\"), (fname = segments['$[]'](0).$tr(\"_\", \" \"))]), $send(author_metadata, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]);\n \n $writer = [key_map['$[]'](\"authorinitials\"), fname.$chr()];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(segments['$[]'](1))) {\n if ($truthy(segments['$[]'](2))) {\n \n \n $writer = [key_map['$[]'](\"middlename\"), (mname = segments['$[]'](1).$tr(\"_\", \" \"))];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [key_map['$[]'](\"lastname\"), (lname = segments['$[]'](2).$tr(\"_\", \" \"))];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n author = $rb_plus($rb_plus($rb_plus($rb_plus(fname, \" \"), mname), \" \"), lname);\n \n $writer = [key_map['$[]'](\"authorinitials\"), \"\" + (fname.$chr()) + (mname.$chr()) + (lname.$chr())];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n \n \n $writer = [key_map['$[]'](\"lastname\"), (lname = segments['$[]'](1).$tr(\"_\", \" \"))];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n author = $rb_plus($rb_plus(fname, \" \"), lname);\n \n $writer = [key_map['$[]'](\"authorinitials\"), \"\" + (fname.$chr()) + (lname.$chr())];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n }};\n ($truthy($a = author_metadata['$[]'](key_map['$[]'](\"author\"))) ? $a : (($writer = [key_map['$[]'](\"author\"), author]), $send(author_metadata, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n if ($truthy(($truthy($a = names_only) ? $a : segments['$[]'](3)['$!']()))) {\n } else {\n \n $writer = [key_map['$[]'](\"email\"), segments['$[]'](3)];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n } else {\n \n \n $writer = [key_map['$[]'](\"author\"), (($writer = [key_map['$[]'](\"firstname\"), (fname = author_entry.$squeeze(\" \").$strip())]), $send(author_metadata, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [key_map['$[]'](\"authorinitials\"), fname.$chr()];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n \n $writer = [\"authorcount\", $rb_plus(idx, 1)];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if (idx['$=='](1)) {\n $send(keys, 'each', [], (TMP_51 = function(key){var self = TMP_51.$$s || this;\nif (key == null) key = nil;\n if ($truthy(author_metadata['$key?'](key))) {\n \n $writer = [\"\" + (key) + \"_1\", author_metadata['$[]'](key)];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return nil\n }}, TMP_51.$$s = self, TMP_51.$$arity = 1, TMP_51))};\n if (idx['$=='](0)) {\n \n $writer = [\"authors\", author_metadata['$[]'](key_map['$[]'](\"author\"))];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [\"authors\", \"\" + (author_metadata['$[]'](\"authors\")) + \", \" + (author_metadata['$[]'](key_map['$[]'](\"author\")))];\n $send(author_metadata, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n };}, TMP_48.$$s = self, TMP_48.$$arity = 2, TMP_48));\n return author_metadata;\n }, TMP_Parser_process_authors_52.$$arity = -2);\n Opal.defs(self, '$parse_block_metadata_lines', TMP_Parser_parse_block_metadata_lines_53 = function $$parse_block_metadata_lines(reader, document, attributes, options) {\n var $a, $b, self = this;\n\n if (attributes == null) {\n attributes = $hash2([], {});\n }\n if (options == null) {\n options = $hash2([], {});\n }\n \n while ($truthy(self.$parse_block_metadata_line(reader, document, attributes, options))) {\n \n reader.$shift();\n if ($truthy($b = reader.$skip_blank_lines())) {\n $b\n } else {\n break;\n };\n };\n return attributes;\n }, TMP_Parser_parse_block_metadata_lines_53.$$arity = -3);\n Opal.defs(self, '$parse_block_metadata_line', TMP_Parser_parse_block_metadata_line_54 = function $$parse_block_metadata_line(reader, document, attributes, options) {\n var $a, $b, self = this, next_line = nil, normal = nil, $writer = nil, reftext = nil, ll = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n if (options == null) {\n options = $hash2([], {});\n }\n if ($truthy(($truthy($a = (next_line = reader.$peek_line())) ? (function() {if ($truthy(options['$[]'](\"text\"))) {\n \n return next_line['$start_with?'](\"[\", \"/\");\n } else {\n \n return (normal = next_line['$start_with?'](\"[\", \".\", \"/\", \":\"));\n }; return nil; })() : $a))) {\n if ($truthy(next_line['$start_with?'](\"[\"))) {\n if ($truthy(next_line['$start_with?'](\"[[\"))) {\n if ($truthy(($truthy($a = next_line['$end_with?'](\"]]\")) ? $$($nesting, 'BlockAnchorRx')['$=~'](next_line) : $a))) {\n \n \n $writer = [\"id\", (($a = $gvars['~']) === nil ? nil : $a['$[]'](1))];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy((reftext = (($a = $gvars['~']) === nil ? nil : $a['$[]'](2))))) {\n \n $writer = [\"reftext\", (function() {if ($truthy(reftext['$include?']($$($nesting, 'ATTR_REF_HEAD')))) {\n \n return document.$sub_attributes(reftext);\n } else {\n return reftext\n }; return nil; })()];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return true;\n } else {\n return nil\n }\n } else if ($truthy(($truthy($a = next_line['$end_with?'](\"]\")) ? $$($nesting, 'BlockAttributeListRx')['$=~'](next_line) : $a))) {\n \n document.$parse_attributes((($a = $gvars['~']) === nil ? nil : $a['$[]'](1)), [], $hash2([\"sub_input\", \"into\"], {\"sub_input\": true, \"into\": attributes}));\n return true;\n } else {\n return nil\n }\n } else if ($truthy(($truthy($a = normal) ? next_line['$start_with?'](\".\") : $a))) {\n if ($truthy($$($nesting, 'BlockTitleRx')['$=~'](next_line))) {\n \n \n $writer = [\"title\", (($a = $gvars['~']) === nil ? nil : $a['$[]'](1))];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return true;\n } else {\n return nil\n }\n } else if ($truthy(($truthy($a = normal['$!']()) ? $a : next_line['$start_with?'](\"/\")))) {\n if ($truthy(next_line['$start_with?'](\"//\"))) {\n if (next_line['$=='](\"//\")) {\n return true\n } else if ($truthy(($truthy($a = normal) ? $rb_times(\"/\", (ll = next_line.$length()))['$=='](next_line) : $a))) {\n if (ll['$=='](3)) {\n return nil\n } else {\n \n reader.$read_lines_until($hash2([\"skip_first_line\", \"preserve_last_line\", \"terminator\", \"skip_processing\"], {\"skip_first_line\": true, \"preserve_last_line\": true, \"terminator\": next_line, \"skip_processing\": true}));\n return true;\n }\n } else if ($truthy(next_line['$start_with?'](\"///\"))) {\n return nil\n } else {\n return true\n }\n } else {\n return nil\n }\n } else if ($truthy(($truthy($a = ($truthy($b = normal) ? next_line['$start_with?'](\":\") : $b)) ? $$($nesting, 'AttributeEntryRx')['$=~'](next_line) : $a))) {\n \n self.$process_attribute_entry(reader, document, attributes, $gvars[\"~\"]);\n return true;\n } else {\n return nil\n }\n } else {\n return nil\n }\n }, TMP_Parser_parse_block_metadata_line_54.$$arity = -4);\n Opal.defs(self, '$process_attribute_entries', TMP_Parser_process_attribute_entries_55 = function $$process_attribute_entries(reader, document, attributes) {\n var $a, self = this;\n\n if (attributes == null) {\n attributes = nil;\n }\n \n reader.$skip_comment_lines();\n while ($truthy(self.$process_attribute_entry(reader, document, attributes))) {\n \n reader.$shift();\n reader.$skip_comment_lines();\n };\n }, TMP_Parser_process_attribute_entries_55.$$arity = -3);\n Opal.defs(self, '$process_attribute_entry', TMP_Parser_process_attribute_entry_56 = function $$process_attribute_entry(reader, document, attributes, match) {\n var $a, $b, self = this, value = nil, con = nil, next_line = nil, keep_open = nil;\n\n if (attributes == null) {\n attributes = nil;\n }\n if (match == null) {\n match = nil;\n }\n if ($truthy((match = ($truthy($a = match) ? $a : (function() {if ($truthy(reader['$has_more_lines?']())) {\n \n return $$($nesting, 'AttributeEntryRx').$match(reader.$peek_line());\n } else {\n return nil\n }; return nil; })())))) {\n \n if ($truthy((value = match['$[]'](2))['$nil_or_empty?']())) {\n value = \"\"\n } else if ($truthy(value['$end_with?']($$($nesting, 'LINE_CONTINUATION'), $$($nesting, 'LINE_CONTINUATION_LEGACY')))) {\n \n $a = [value.$slice(-2, 2), value.$slice(0, $rb_minus(value.$length(), 2)).$rstrip()], (con = $a[0]), (value = $a[1]), $a;\n while ($truthy(($truthy($b = reader.$advance()) ? (next_line = reader.$peek_line().$lstrip())['$empty?']()['$!']() : $b))) {\n \n if ($truthy((keep_open = next_line['$end_with?'](con)))) {\n next_line = next_line.$slice(0, $rb_minus(next_line.$length(), 2)).$rstrip()};\n value = \"\" + (value) + ((function() {if ($truthy(value['$end_with?']($$($nesting, 'HARD_LINE_BREAK')))) {\n return $$($nesting, 'LF')\n } else {\n return \" \"\n }; return nil; })()) + (next_line);\n if ($truthy(keep_open)) {\n } else {\n break;\n };\n };};\n self.$store_attribute(match['$[]'](1), value, document, attributes);\n return true;\n } else {\n return nil\n }\n }, TMP_Parser_process_attribute_entry_56.$$arity = -3);\n Opal.defs(self, '$store_attribute', TMP_Parser_store_attribute_57 = function $$store_attribute(name, value, doc, attrs) {\n var $a, self = this, resolved_value = nil;\n\n if (doc == null) {\n doc = nil;\n }\n if (attrs == null) {\n attrs = nil;\n }\n \n if ($truthy(name['$end_with?'](\"!\"))) {\n $a = [name.$chop(), nil], (name = $a[0]), (value = $a[1]), $a\n } else if ($truthy(name['$start_with?'](\"!\"))) {\n $a = [name.$slice(1, name.$length()), nil], (name = $a[0]), (value = $a[1]), $a};\n name = self.$sanitize_attribute_name(name);\n if (name['$=='](\"numbered\")) {\n name = \"sectnums\"};\n if ($truthy(doc)) {\n if ($truthy(value)) {\n \n if (name['$=='](\"leveloffset\")) {\n if ($truthy(value['$start_with?'](\"+\"))) {\n value = $rb_plus(doc.$attr(\"leveloffset\", 0).$to_i(), ($truthy($a = value['$[]']($range(1, -1, false))) ? $a : 0).$to_i()).$to_s()\n } else if ($truthy(value['$start_with?'](\"-\"))) {\n value = $rb_minus(doc.$attr(\"leveloffset\", 0).$to_i(), ($truthy($a = value['$[]']($range(1, -1, false))) ? $a : 0).$to_i()).$to_s()}};\n if ($truthy((resolved_value = doc.$set_attribute(name, value)))) {\n \n value = resolved_value;\n if ($truthy(attrs)) {\n $$$($$($nesting, 'Document'), 'AttributeEntry').$new(name, value).$save_to(attrs)};};\n } else if ($truthy(($truthy($a = doc.$delete_attribute(name)) ? attrs : $a))) {\n $$$($$($nesting, 'Document'), 'AttributeEntry').$new(name, value).$save_to(attrs)}\n } else if ($truthy(attrs)) {\n $$$($$($nesting, 'Document'), 'AttributeEntry').$new(name, value).$save_to(attrs)};\n return [name, value];\n }, TMP_Parser_store_attribute_57.$$arity = -3);\n Opal.defs(self, '$resolve_list_marker', TMP_Parser_resolve_list_marker_58 = function $$resolve_list_marker(list_type, marker, ordinal, validate, reader) {\n var self = this;\n\n if (ordinal == null) {\n ordinal = 0;\n }\n if (validate == null) {\n validate = false;\n }\n if (reader == null) {\n reader = nil;\n }\n if (list_type['$=='](\"olist\")) {\n if ($truthy(marker['$start_with?'](\".\"))) {\n return marker\n } else {\n \n return self.$resolve_ordered_list_marker(marker, ordinal, validate, reader);\n }\n } else if (list_type['$=='](\"colist\")) {\n return \"<1>\"\n } else {\n return marker\n }\n }, TMP_Parser_resolve_list_marker_58.$$arity = -3);\n Opal.defs(self, '$resolve_ordered_list_marker', TMP_Parser_resolve_ordered_list_marker_60 = function $$resolve_ordered_list_marker(marker, ordinal, validate, reader) {\n var TMP_59, $a, self = this, expected = nil, actual = nil, $case = nil;\n\n if (ordinal == null) {\n ordinal = 0;\n }\n if (validate == null) {\n validate = false;\n }\n if (reader == null) {\n reader = nil;\n }\n \n expected = (actual = nil);\n $case = $send($$($nesting, 'ORDERED_LIST_STYLES'), 'find', [], (TMP_59 = function(s){var self = TMP_59.$$s || this;\nif (s == null) s = nil;\n return $$($nesting, 'OrderedListMarkerRxMap')['$[]'](s)['$match?'](marker)}, TMP_59.$$s = self, TMP_59.$$arity = 1, TMP_59));\n if (\"arabic\"['$===']($case)) {\n if ($truthy(validate)) {\n \n expected = $rb_plus(ordinal, 1);\n actual = marker.$to_i();};\n marker = \"1.\";}\n else if (\"loweralpha\"['$===']($case)) {\n if ($truthy(validate)) {\n \n expected = $rb_plus(\"a\"['$[]'](0).$ord(), ordinal).$chr();\n actual = marker.$chop();};\n marker = \"a.\";}\n else if (\"upperalpha\"['$===']($case)) {\n if ($truthy(validate)) {\n \n expected = $rb_plus(\"A\"['$[]'](0).$ord(), ordinal).$chr();\n actual = marker.$chop();};\n marker = \"A.\";}\n else if (\"lowerroman\"['$===']($case)) {\n if ($truthy(validate)) {\n \n expected = $rb_plus(ordinal, 1);\n actual = self.$roman_numeral_to_int(marker.$chop());};\n marker = \"i)\";}\n else if (\"upperroman\"['$===']($case)) {\n if ($truthy(validate)) {\n \n expected = $rb_plus(ordinal, 1);\n actual = self.$roman_numeral_to_int(marker.$chop());};\n marker = \"I)\";};\n if ($truthy(($truthy($a = validate) ? expected['$!='](actual) : $a))) {\n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (reader.$line_info()) + \": list item index: expected \" + (expected) + \", got \" + (actual))};\n return marker;\n }, TMP_Parser_resolve_ordered_list_marker_60.$$arity = -2);\n Opal.defs(self, '$is_sibling_list_item?', TMP_Parser_is_sibling_list_item$q_61 = function(line, list_type, sibling_trait) {\n var self = this, matcher = nil, expected_marker = nil, m = nil;\n\n \n if ($truthy($$$('::', 'Regexp')['$==='](sibling_trait))) {\n \n matcher = sibling_trait;\n expected_marker = false;\n } else {\n \n matcher = $$($nesting, 'ListRxMap')['$[]'](list_type);\n expected_marker = sibling_trait;\n };\n if ($truthy((m = matcher.$match(line)))) {\n if ($truthy(expected_marker)) {\n return expected_marker['$=='](self.$resolve_list_marker(list_type, m['$[]'](1)))\n } else {\n return true\n }\n } else {\n return false\n };\n }, TMP_Parser_is_sibling_list_item$q_61.$$arity = 3);\n Opal.defs(self, '$next_table', TMP_Parser_next_table_62 = function $$next_table(table_reader, parent, attributes) {\n var $a, $b, $c, $d, self = this, table = nil, $writer = nil, colspecs = nil, explicit_colspecs = nil, skipped = nil, parser_ctx = nil, format = nil, loop_idx = nil, implicit_header_boundary = nil, implicit_header = nil, line = nil, next_cellspec = nil, m = nil, $case = nil, cell_text = nil, $logical_op_recvr_tmp_2 = nil;\n\n \n table = $$($nesting, 'Table').$new(parent, attributes);\n if ($truthy(attributes['$key?'](\"title\"))) {\n \n \n $writer = [attributes.$delete(\"title\")];\n $send(table, 'title=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n table.$assign_caption(attributes.$delete(\"caption\"));};\n if ($truthy(($truthy($a = attributes['$key?'](\"cols\")) ? (colspecs = self.$parse_colspecs(attributes['$[]'](\"cols\")))['$empty?']()['$!']() : $a))) {\n \n table.$create_columns(colspecs);\n explicit_colspecs = true;};\n skipped = ($truthy($a = table_reader.$skip_blank_lines()) ? $a : 0);\n parser_ctx = $$$($$($nesting, 'Table'), 'ParserContext').$new(table_reader, table, attributes);\n $a = [parser_ctx.$format(), -1, nil], (format = $a[0]), (loop_idx = $a[1]), (implicit_header_boundary = $a[2]), $a;\n if ($truthy(($truthy($a = ($truthy($b = $rb_gt(skipped, 0)) ? $b : attributes['$key?'](\"header-option\"))) ? $a : attributes['$key?'](\"noheader-option\")))) {\n } else {\n implicit_header = true\n };\n $a = false; while ($a || $truthy((line = table_reader.$read_line()))) {$a = false;\n \n if ($truthy(($truthy($b = $rb_gt((loop_idx = $rb_plus(loop_idx, 1)), 0)) ? line['$empty?']() : $b))) {\n \n line = nil;\n if ($truthy(implicit_header_boundary)) {\n implicit_header_boundary = $rb_plus(implicit_header_boundary, 1)};\n } else if (format['$=='](\"psv\")) {\n if ($truthy(parser_ctx['$starts_with_delimiter?'](line))) {\n \n line = line.$slice(1, line.$length());\n parser_ctx.$close_open_cell();\n if ($truthy(implicit_header_boundary)) {\n implicit_header_boundary = nil};\n } else {\n \n $c = self.$parse_cellspec(line, \"start\", parser_ctx.$delimiter()), $b = Opal.to_ary($c), (next_cellspec = ($b[0] == null ? nil : $b[0])), (line = ($b[1] == null ? nil : $b[1])), $c;\n if ($truthy(next_cellspec)) {\n \n parser_ctx.$close_open_cell(next_cellspec);\n if ($truthy(implicit_header_boundary)) {\n implicit_header_boundary = nil};\n } else if ($truthy(($truthy($b = implicit_header_boundary) ? implicit_header_boundary['$=='](loop_idx) : $b))) {\n $b = [false, nil], (implicit_header = $b[0]), (implicit_header_boundary = $b[1]), $b};\n }};\n if ($truthy((($b = loop_idx['$=='](0)) ? implicit_header : loop_idx['$=='](0)))) {\n if ($truthy(($truthy($b = table_reader['$has_more_lines?']()) ? table_reader.$peek_line()['$empty?']() : $b))) {\n implicit_header_boundary = 1\n } else {\n implicit_header = false\n }};\n $b = false; while ($b || $truthy(true)) {$b = false;\n if ($truthy(($truthy($c = line) ? (m = parser_ctx.$match_delimiter(line)) : $c))) {\n \n $case = format;\n if (\"csv\"['$===']($case)) {\n if ($truthy(parser_ctx['$buffer_has_unclosed_quotes?'](m.$pre_match()))) {\n \n if ($truthy((line = parser_ctx.$skip_past_delimiter(m))['$empty?']())) {\n break;};\n $b = true;};\n \n $writer = [\"\" + (parser_ctx.$buffer()) + (m.$pre_match())];\n $send(parser_ctx, 'buffer=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;}\n else if (\"dsv\"['$===']($case)) {\n if ($truthy(m.$pre_match()['$end_with?'](\"\\\\\"))) {\n \n if ($truthy((line = parser_ctx.$skip_past_escaped_delimiter(m))['$empty?']())) {\n \n \n $writer = [\"\" + (parser_ctx.$buffer()) + ($$($nesting, 'LF'))];\n $send(parser_ctx, 'buffer=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n parser_ctx.$keep_cell_open();\n break;;};\n $b = true;};\n \n $writer = [\"\" + (parser_ctx.$buffer()) + (m.$pre_match())];\n $send(parser_ctx, 'buffer=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;}\n else {\n if ($truthy(m.$pre_match()['$end_with?'](\"\\\\\"))) {\n \n if ($truthy((line = parser_ctx.$skip_past_escaped_delimiter(m))['$empty?']())) {\n \n \n $writer = [\"\" + (parser_ctx.$buffer()) + ($$($nesting, 'LF'))];\n $send(parser_ctx, 'buffer=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n parser_ctx.$keep_cell_open();\n break;;};\n $b = true;};\n $d = self.$parse_cellspec(m.$pre_match()), $c = Opal.to_ary($d), (next_cellspec = ($c[0] == null ? nil : $c[0])), (cell_text = ($c[1] == null ? nil : $c[1])), $d;\n parser_ctx.$push_cellspec(next_cellspec);\n \n $writer = [\"\" + (parser_ctx.$buffer()) + (cell_text)];\n $send(parser_ctx, 'buffer=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n if ($truthy((line = m.$post_match())['$empty?']())) {\n line = nil};\n parser_ctx.$close_cell();\n } else {\n \n \n $writer = [\"\" + (parser_ctx.$buffer()) + (line) + ($$($nesting, 'LF'))];\n $send(parser_ctx, 'buffer=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n $case = format;\n if (\"csv\"['$===']($case)) {\n \n $writer = [\"\" + (parser_ctx.$buffer().$rstrip()) + \" \"];\n $send(parser_ctx, 'buffer=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(parser_ctx['$buffer_has_unclosed_quotes?']())) {\n \n if ($truthy(($truthy($c = implicit_header_boundary) ? loop_idx['$=='](0) : $c))) {\n $c = [false, nil], (implicit_header = $c[0]), (implicit_header_boundary = $c[1]), $c};\n parser_ctx.$keep_cell_open();\n } else {\n parser_ctx.$close_cell(true)\n };}\n else if (\"dsv\"['$===']($case)) {parser_ctx.$close_cell(true)}\n else {parser_ctx.$keep_cell_open()};\n break;;\n }\n };\n if ($truthy(parser_ctx['$cell_open?']())) {\n if ($truthy(table_reader['$has_more_lines?']())) {\n } else {\n parser_ctx.$close_cell(true)\n }\n } else {\n if ($truthy($b = table_reader.$skip_blank_lines())) {\n $b\n } else {\n break;\n }\n };\n };\n if ($truthy(($truthy($a = (($logical_op_recvr_tmp_2 = table.$attributes()), ($truthy($b = $logical_op_recvr_tmp_2['$[]'](\"colcount\")) ? $b : (($writer = [\"colcount\", table.$columns().$size()]), $send($logical_op_recvr_tmp_2, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])))['$=='](0)) ? $a : explicit_colspecs))) {\n } else {\n table.$assign_column_widths()\n };\n if ($truthy(implicit_header)) {\n \n \n $writer = [true];\n $send(table, 'has_header_option=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"header-option\", \"\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"options\", (function() {if ($truthy(attributes['$key?'](\"options\"))) {\n return \"\" + (attributes['$[]'](\"options\")) + \",header\"\n } else {\n return \"header\"\n }; return nil; })()];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n table.$partition_header_footer(attributes);\n return table;\n }, TMP_Parser_next_table_62.$$arity = 3);\n Opal.defs(self, '$parse_colspecs', TMP_Parser_parse_colspecs_66 = function $$parse_colspecs(records) {\n var TMP_63, TMP_64, self = this, specs = nil;\n\n \n if ($truthy(records['$include?'](\" \"))) {\n records = records.$delete(\" \")};\n if (records['$=='](records.$to_i().$to_s())) {\n return $send($$$('::', 'Array'), 'new', [records.$to_i()], (TMP_63 = function(){var self = TMP_63.$$s || this;\n\n return $hash2([\"width\"], {\"width\": 1})}, TMP_63.$$s = self, TMP_63.$$arity = 0, TMP_63))};\n specs = [];\n $send(records.$split(\",\", -1), 'each', [], (TMP_64 = function(record){var self = TMP_64.$$s || this, $a, $b, TMP_65, m = nil, spec = nil, colspec = nil, rowspec = nil, $writer = nil;\nif (record == null) record = nil;\n if ($truthy(record['$empty?']())) {\n return specs['$<<']($hash2([\"width\"], {\"width\": 1}))\n } else if ($truthy((m = $$($nesting, 'ColumnSpecRx').$match(record)))) {\n \n spec = $hash2([], {});\n if ($truthy(m['$[]'](2))) {\n \n $b = m['$[]'](2).$split(\".\"), $a = Opal.to_ary($b), (colspec = ($a[0] == null ? nil : $a[0])), (rowspec = ($a[1] == null ? nil : $a[1])), $b;\n if ($truthy(($truthy($a = colspec['$nil_or_empty?']()['$!']()) ? $$($nesting, 'TableCellHorzAlignments')['$key?'](colspec) : $a))) {\n \n $writer = [\"halign\", $$($nesting, 'TableCellHorzAlignments')['$[]'](colspec)];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(($truthy($a = rowspec['$nil_or_empty?']()['$!']()) ? $$($nesting, 'TableCellVertAlignments')['$key?'](rowspec) : $a))) {\n \n $writer = [\"valign\", $$($nesting, 'TableCellVertAlignments')['$[]'](rowspec)];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};};\n \n $writer = [\"width\", (function() {if ($truthy(m['$[]'](3))) {\n return m['$[]'](3).$to_i()\n } else {\n return 1\n }; return nil; })()];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(($truthy($a = m['$[]'](4)) ? $$($nesting, 'TableCellStyles')['$key?'](m['$[]'](4)) : $a))) {\n \n $writer = [\"style\", $$($nesting, 'TableCellStyles')['$[]'](m['$[]'](4))];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(m['$[]'](1))) {\n return $send((1), 'upto', [m['$[]'](1).$to_i()], (TMP_65 = function(){var self = TMP_65.$$s || this;\n\n return specs['$<<'](spec.$dup())}, TMP_65.$$s = self, TMP_65.$$arity = 0, TMP_65))\n } else {\n return specs['$<<'](spec)\n };\n } else {\n return nil\n }}, TMP_64.$$s = self, TMP_64.$$arity = 1, TMP_64));\n return specs;\n }, TMP_Parser_parse_colspecs_66.$$arity = 1);\n Opal.defs(self, '$parse_cellspec', TMP_Parser_parse_cellspec_67 = function $$parse_cellspec(line, pos, delimiter) {\n var $a, $b, self = this, m = nil, rest = nil, spec_part = nil, spec = nil, colspec = nil, rowspec = nil, $writer = nil;\n\n if (pos == null) {\n pos = \"end\";\n }\n if (delimiter == null) {\n delimiter = nil;\n }\n \n $a = [nil, \"\"], (m = $a[0]), (rest = $a[1]), $a;\n if (pos['$=='](\"start\")) {\n if ($truthy(line['$include?'](delimiter))) {\n \n $b = line.$split(delimiter, 2), $a = Opal.to_ary($b), (spec_part = ($a[0] == null ? nil : $a[0])), (rest = ($a[1] == null ? nil : $a[1])), $b;\n if ($truthy((m = $$($nesting, 'CellSpecStartRx').$match(spec_part)))) {\n if ($truthy(m['$[]'](0)['$empty?']())) {\n return [$hash2([], {}), rest]}\n } else {\n return [nil, line]\n };\n } else {\n return [nil, line]\n }\n } else if ($truthy((m = $$($nesting, 'CellSpecEndRx').$match(line)))) {\n \n if ($truthy(m['$[]'](0).$lstrip()['$empty?']())) {\n return [$hash2([], {}), line.$rstrip()]};\n rest = m.$pre_match();\n } else {\n return [$hash2([], {}), line]\n };\n spec = $hash2([], {});\n if ($truthy(m['$[]'](1))) {\n \n $b = m['$[]'](1).$split(\".\"), $a = Opal.to_ary($b), (colspec = ($a[0] == null ? nil : $a[0])), (rowspec = ($a[1] == null ? nil : $a[1])), $b;\n colspec = (function() {if ($truthy(colspec['$nil_or_empty?']())) {\n return 1\n } else {\n return colspec.$to_i()\n }; return nil; })();\n rowspec = (function() {if ($truthy(rowspec['$nil_or_empty?']())) {\n return 1\n } else {\n return rowspec.$to_i()\n }; return nil; })();\n if (m['$[]'](2)['$=='](\"+\")) {\n \n if (colspec['$=='](1)) {\n } else {\n \n $writer = [\"colspan\", colspec];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n if (rowspec['$=='](1)) {\n } else {\n \n $writer = [\"rowspan\", rowspec];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n } else if (m['$[]'](2)['$=='](\"*\")) {\n if (colspec['$=='](1)) {\n } else {\n \n $writer = [\"repeatcol\", colspec];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n }};};\n if ($truthy(m['$[]'](3))) {\n \n $b = m['$[]'](3).$split(\".\"), $a = Opal.to_ary($b), (colspec = ($a[0] == null ? nil : $a[0])), (rowspec = ($a[1] == null ? nil : $a[1])), $b;\n if ($truthy(($truthy($a = colspec['$nil_or_empty?']()['$!']()) ? $$($nesting, 'TableCellHorzAlignments')['$key?'](colspec) : $a))) {\n \n $writer = [\"halign\", $$($nesting, 'TableCellHorzAlignments')['$[]'](colspec)];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(($truthy($a = rowspec['$nil_or_empty?']()['$!']()) ? $$($nesting, 'TableCellVertAlignments')['$key?'](rowspec) : $a))) {\n \n $writer = [\"valign\", $$($nesting, 'TableCellVertAlignments')['$[]'](rowspec)];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};};\n if ($truthy(($truthy($a = m['$[]'](4)) ? $$($nesting, 'TableCellStyles')['$key?'](m['$[]'](4)) : $a))) {\n \n $writer = [\"style\", $$($nesting, 'TableCellStyles')['$[]'](m['$[]'](4))];\n $send(spec, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return [spec, rest];\n }, TMP_Parser_parse_cellspec_67.$$arity = -2);\n Opal.defs(self, '$parse_style_attribute', TMP_Parser_parse_style_attribute_71 = function $$parse_style_attribute(attributes, reader) {\n var $a, $b, TMP_68, TMP_69, TMP_70, self = this, raw_style = nil, type = nil, collector = nil, parsed = nil, save_current = nil, $writer = nil, parsed_style = nil, options = nil, existing_opts = nil;\n\n if (reader == null) {\n reader = nil;\n }\n if ($truthy(($truthy($a = ($truthy($b = (raw_style = attributes['$[]'](1))) ? raw_style['$include?'](\" \")['$!']() : $b)) ? $$($nesting, 'Compliance').$shorthand_property_syntax() : $a))) {\n \n $a = [\"style\", [], $hash2([], {})], (type = $a[0]), (collector = $a[1]), (parsed = $a[2]), $a;\n save_current = $send(self, 'lambda', [], (TMP_68 = function(){var self = TMP_68.$$s || this, $c, $case = nil, $writer = nil;\n\n if ($truthy(collector['$empty?']())) {\n if (type['$=='](\"style\")) {\n return nil\n } else {\n return self.$warn(\"\" + \"asciidoctor: WARNING:\" + ((function() {if ($truthy(reader)) {\n return \"\" + \" \" + (reader.$prev_line_info()) + \":\"\n } else {\n return nil\n }; return nil; })()) + \" invalid empty \" + (type) + \" detected in style attribute\")\n }\n } else {\n \n $case = type;\n if (\"role\"['$===']($case) || \"option\"['$===']($case)) {($truthy($c = parsed['$[]'](type)) ? $c : (($writer = [type, []]), $send(parsed, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))['$<<'](collector.$join())}\n else if (\"id\"['$===']($case)) {\n if ($truthy(parsed['$key?'](\"id\"))) {\n self.$warn(\"\" + \"asciidoctor: WARNING:\" + ((function() {if ($truthy(reader)) {\n return \"\" + \" \" + (reader.$prev_line_info()) + \":\"\n } else {\n return nil\n }; return nil; })()) + \" multiple ids detected in style attribute\")};\n \n $writer = [type, collector.$join()];\n $send(parsed, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;}\n else {\n $writer = [type, collector.$join()];\n $send(parsed, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return (collector = []);\n }}, TMP_68.$$s = self, TMP_68.$$arity = 0, TMP_68));\n $send(raw_style, 'each_char', [], (TMP_69 = function(c){var self = TMP_69.$$s || this, $c, $d, $case = nil;\nif (c == null) c = nil;\n if ($truthy(($truthy($c = ($truthy($d = c['$=='](\".\")) ? $d : c['$=='](\"#\"))) ? $c : c['$=='](\"%\")))) {\n \n save_current.$call();\n return (function() {$case = c;\n if (\".\"['$===']($case)) {return (type = \"role\")}\n else if (\"#\"['$===']($case)) {return (type = \"id\")}\n else if (\"%\"['$===']($case)) {return (type = \"option\")}\n else { return nil }})();\n } else {\n return collector['$<<'](c)\n }}, TMP_69.$$s = self, TMP_69.$$arity = 1, TMP_69));\n if (type['$=='](\"style\")) {\n \n $writer = [\"style\", raw_style];\n $send(attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n save_current.$call();\n if ($truthy(parsed['$key?'](\"style\"))) {\n parsed_style = (($writer = [\"style\", parsed['$[]'](\"style\")]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])};\n if ($truthy(parsed['$key?'](\"id\"))) {\n \n $writer = [\"id\", parsed['$[]'](\"id\")];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(parsed['$key?'](\"role\"))) {\n \n $writer = [\"role\", $rb_times(parsed['$[]'](\"role\"), \" \")];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(parsed['$key?'](\"option\"))) {\n \n $send((options = parsed['$[]'](\"option\")), 'each', [], (TMP_70 = function(option){var self = TMP_70.$$s || this;\nif (option == null) option = nil;\n \n $writer = [\"\" + (option) + \"-option\", \"\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_70.$$s = self, TMP_70.$$arity = 1, TMP_70));\n if ($truthy((existing_opts = attributes['$[]'](\"options\")))) {\n \n $writer = [\"options\", $rb_times($rb_plus(options, existing_opts.$split(\",\")), \",\")];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [\"options\", $rb_times(options, \",\")];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };};\n return parsed_style;\n };\n } else {\n \n $writer = [\"style\", raw_style];\n $send(attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }\n }, TMP_Parser_parse_style_attribute_71.$$arity = -2);\n Opal.defs(self, '$adjust_indentation!', TMP_Parser_adjust_indentation$B_79 = function(lines, indent, tab_size) {\n var $a, TMP_72, TMP_75, TMP_76, TMP_77, TMP_78, self = this, full_tab_space = nil, gutter_width = nil, padding = nil;\n\n if (indent == null) {\n indent = 0;\n }\n if (tab_size == null) {\n tab_size = 0;\n }\n \n if ($truthy(lines['$empty?']())) {\n return nil};\n if ($truthy(($truthy($a = $rb_gt((tab_size = tab_size.$to_i()), 0)) ? lines.$join()['$include?']($$($nesting, 'TAB')) : $a))) {\n \n full_tab_space = $rb_times(\" \", tab_size);\n $send(lines, 'map!', [], (TMP_72 = function(line){var self = TMP_72.$$s || this, TMP_73, TMP_74, spaces_added = nil;\nif (line == null) line = nil;\n \n if ($truthy(line['$empty?']())) {\n return line;};\n if ($truthy(line['$start_with?']($$($nesting, 'TAB')))) {\n line = $send(line, 'sub', [$$($nesting, 'TabIndentRx')], (TMP_73 = function(){var self = TMP_73.$$s || this, $b;\n\n return $rb_times(full_tab_space, (($b = $gvars['~']) === nil ? nil : $b['$[]'](0)).$length())}, TMP_73.$$s = self, TMP_73.$$arity = 0, TMP_73))};\n if ($truthy(line['$include?']($$($nesting, 'TAB')))) {\n \n spaces_added = 0;\n return line = $send(line, 'gsub', [$$($nesting, 'TabRx')], (TMP_74 = function(){var self = TMP_74.$$s || this, offset = nil, spaces = nil;\n if ($gvars[\"~\"] == null) $gvars[\"~\"] = nil;\n\n if ((offset = $rb_plus($gvars[\"~\"].$begin(0), spaces_added))['$%'](tab_size)['$=='](0)) {\n \n spaces_added = $rb_plus(spaces_added, $rb_minus(tab_size, 1));\n return full_tab_space;\n } else {\n \n if ((spaces = $rb_minus(tab_size, offset['$%'](tab_size)))['$=='](1)) {\n } else {\n spaces_added = $rb_plus(spaces_added, $rb_minus(spaces, 1))\n };\n return $rb_times(\" \", spaces);\n }}, TMP_74.$$s = self, TMP_74.$$arity = 0, TMP_74));\n } else {\n return line\n };}, TMP_72.$$s = self, TMP_72.$$arity = 1, TMP_72));};\n if ($truthy(($truthy($a = indent) ? $rb_gt((indent = indent.$to_i()), -1) : $a))) {\n } else {\n return nil\n };\n gutter_width = nil;\n (function(){var $brk = Opal.new_brk(); try {return $send(lines, 'each', [], (TMP_75 = function(line){var self = TMP_75.$$s || this, $b, line_indent = nil;\nif (line == null) line = nil;\n \n if ($truthy(line['$empty?']())) {\n return nil;};\n if ((line_indent = $rb_minus(line.$length(), line.$lstrip().$length()))['$=='](0)) {\n \n gutter_width = nil;\n \n Opal.brk(nil, $brk);\n } else if ($truthy(($truthy($b = gutter_width) ? $rb_gt(line_indent, gutter_width) : $b))) {\n return nil\n } else {\n return (gutter_width = line_indent)\n };}, TMP_75.$$s = self, TMP_75.$$brk = $brk, TMP_75.$$arity = 1, TMP_75))\n } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();\n if (indent['$=='](0)) {\n if ($truthy(gutter_width)) {\n $send(lines, 'map!', [], (TMP_76 = function(line){var self = TMP_76.$$s || this;\nif (line == null) line = nil;\n if ($truthy(line['$empty?']())) {\n return line\n } else {\n return line['$[]'](Opal.Range.$new(gutter_width, -1, false))\n }}, TMP_76.$$s = self, TMP_76.$$arity = 1, TMP_76))}\n } else {\n \n padding = $rb_times(\" \", indent);\n if ($truthy(gutter_width)) {\n $send(lines, 'map!', [], (TMP_77 = function(line){var self = TMP_77.$$s || this;\nif (line == null) line = nil;\n if ($truthy(line['$empty?']())) {\n return line\n } else {\n return $rb_plus(padding, line['$[]'](Opal.Range.$new(gutter_width, -1, false)))\n }}, TMP_77.$$s = self, TMP_77.$$arity = 1, TMP_77))\n } else {\n $send(lines, 'map!', [], (TMP_78 = function(line){var self = TMP_78.$$s || this;\nif (line == null) line = nil;\n if ($truthy(line['$empty?']())) {\n return line\n } else {\n return $rb_plus(padding, line)\n }}, TMP_78.$$s = self, TMP_78.$$arity = 1, TMP_78))\n };\n };\n return nil;\n }, TMP_Parser_adjust_indentation$B_79.$$arity = -2);\n Opal.defs(self, '$sanitize_attribute_name', TMP_Parser_sanitize_attribute_name_80 = function $$sanitize_attribute_name(name) {\n var self = this;\n\n return name.$gsub($$($nesting, 'InvalidAttributeNameCharsRx'), \"\").$downcase()\n }, TMP_Parser_sanitize_attribute_name_80.$$arity = 1);\n return (Opal.defs(self, '$roman_numeral_to_int', TMP_Parser_roman_numeral_to_int_82 = function $$roman_numeral_to_int(value) {\n var TMP_81, self = this, digits = nil, result = nil;\n\n \n value = value.$downcase();\n digits = $hash2([\"i\", \"v\", \"x\"], {\"i\": 1, \"v\": 5, \"x\": 10});\n result = 0;\n $send(Opal.Range.$new(0, $rb_minus(value.$length(), 1), false), 'each', [], (TMP_81 = function(i){var self = TMP_81.$$s || this, $a, digit = nil;\nif (i == null) i = nil;\n \n digit = digits['$[]'](value['$[]'](Opal.Range.$new(i, i, false)));\n if ($truthy(($truthy($a = $rb_lt($rb_plus(i, 1), value.$length())) ? $rb_gt(digits['$[]'](value['$[]'](Opal.Range.$new($rb_plus(i, 1), $rb_plus(i, 1), false))), digit) : $a))) {\n return (result = $rb_minus(result, digit))\n } else {\n return (result = $rb_plus(result, digit))\n };}, TMP_81.$$s = self, TMP_81.$$arity = 1, TMP_81));\n return result;\n }, TMP_Parser_roman_numeral_to_int_82.$$arity = 1), nil) && 'roman_numeral_to_int';\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/path_resolver\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $range = Opal.range, $send = Opal.send;\n\n Opal.add_stubs(['$attr_accessor', '$root?', '$expand_path', '$pwd', '$start_with?', '$==', '$match?', '$absolute_path?', '$+', '$length', '$nil_or_empty?', '$include?', '$tr', '$partition_path', '$join_path', '$[]', '$posixify', '$web_root?', '$unc?', '$slice', '$index', '$split', '$shift', '$delete', '$[]=', '$-', '$*', '$raise', '$empty?', '$system_path', '$!=', '$!', '$dup', '$each', '$>', '$size', '$pop', '$fetch', '$warn', '$<<', '$end_with?', '$uri_prefix', '$gsub']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $PathResolver(){};\n var self = $PathResolver = $klass($base, $super, 'PathResolver', $PathResolver);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_PathResolver_initialize_1, TMP_PathResolver_absolute_path$q_2, $a, TMP_PathResolver_root$q_3, TMP_PathResolver_unc$q_4, TMP_PathResolver_web_root$q_5, TMP_PathResolver_descends_from$q_6, TMP_PathResolver_posixify_7, TMP_PathResolver_expand_path_8, TMP_PathResolver_partition_path_9, TMP_PathResolver_join_path_10, TMP_PathResolver_system_path_12, TMP_PathResolver_web_path_14, TMP_PathResolver_relative_path_15;\n\n def.file_separator = def._partition_path_web = def._partition_path_sys = def.working_dir = nil;\n \n Opal.const_set($nesting[0], 'DOT', \".\");\n Opal.const_set($nesting[0], 'DOT_DOT', \"..\");\n Opal.const_set($nesting[0], 'DOT_SLASH', \"./\");\n Opal.const_set($nesting[0], 'SLASH', \"/\");\n Opal.const_set($nesting[0], 'BACKSLASH', \"\\\\\");\n Opal.const_set($nesting[0], 'DOUBLE_SLASH', \"//\");\n Opal.const_set($nesting[0], 'WindowsRootRx', /^[a-zA-Z]:(?:\\\\|\\/)/);\n self.$attr_accessor(\"file_separator\");\n self.$attr_accessor(\"working_dir\");\n \n Opal.def(self, '$initialize', TMP_PathResolver_initialize_1 = function $$initialize(file_separator, working_dir) {\n var $a, self = this;\n\n if (file_separator == null) {\n file_separator = nil;\n }\n if (working_dir == null) {\n working_dir = nil;\n }\n \n self.file_separator = (function() {if ($truthy(file_separator)) {\n return file_separator\n } else {\n \n return ($truthy($a = $$$($$$('::', 'File'), 'ALT_SEPARATOR')) ? $a : $$$($$$('::', 'File'), 'SEPARATOR'));\n }; return nil; })();\n if ($truthy(working_dir)) {\n self.working_dir = (function() {if ($truthy(self['$root?'](working_dir))) {\n return working_dir\n } else {\n \n return $$$('::', 'File').$expand_path(working_dir);\n }; return nil; })()\n } else {\n self.working_dir = $$$('::', 'File').$expand_path($$$('::', 'Dir').$pwd())\n };\n return $a = [$hash2([], {}), $hash2([], {})], (self._partition_path_sys = $a[0]), (self._partition_path_web = $a[1]), $a;\n }, TMP_PathResolver_initialize_1.$$arity = -1);\n \n Opal.def(self, '$absolute_path?', TMP_PathResolver_absolute_path$q_2 = function(path) {\n var $a, $b, self = this;\n\n return ($truthy($a = path['$start_with?']($$($nesting, 'SLASH'))) ? $a : (($b = self.file_separator['$==']($$($nesting, 'BACKSLASH'))) ? $$($nesting, 'WindowsRootRx')['$match?'](path) : self.file_separator['$==']($$($nesting, 'BACKSLASH'))))\n }, TMP_PathResolver_absolute_path$q_2.$$arity = 1);\n if ($truthy((($a = $$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) ? $$$('::', 'JAVASCRIPT_IO_MODULE')['$=='](\"xmlhttprequest\") : $$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")))) {\n \n Opal.def(self, '$root?', TMP_PathResolver_root$q_3 = function(path) {\n var $a, self = this;\n\n return ($truthy($a = self['$absolute_path?'](path)) ? $a : path['$start_with?'](\"file://\", \"http://\", \"https://\"))\n }, TMP_PathResolver_root$q_3.$$arity = 1)\n } else {\n Opal.alias(self, \"root?\", \"absolute_path?\")\n };\n \n Opal.def(self, '$unc?', TMP_PathResolver_unc$q_4 = function(path) {\n var self = this;\n\n return path['$start_with?']($$($nesting, 'DOUBLE_SLASH'))\n }, TMP_PathResolver_unc$q_4.$$arity = 1);\n \n Opal.def(self, '$web_root?', TMP_PathResolver_web_root$q_5 = function(path) {\n var self = this;\n\n return path['$start_with?']($$($nesting, 'SLASH'))\n }, TMP_PathResolver_web_root$q_5.$$arity = 1);\n \n Opal.def(self, '$descends_from?', TMP_PathResolver_descends_from$q_6 = function(path, base) {\n var self = this;\n\n if (base['$=='](path)) {\n return 0\n } else {\n \n if ($truthy(path['$start_with?']($rb_plus(base, \"/\")))) {\n return $rb_plus(base.$length(), 1)\n } else {\n return false\n };\n }\n }, TMP_PathResolver_descends_from$q_6.$$arity = 2);\n \n Opal.def(self, '$posixify', TMP_PathResolver_posixify_7 = function $$posixify(path) {\n var self = this;\n\n if ($truthy(path['$nil_or_empty?']())) {\n return \"\"\n } else if ($truthy(path['$include?']($$($nesting, 'BACKSLASH')))) {\n return path.$tr($$($nesting, 'BACKSLASH'), $$($nesting, 'SLASH'))\n } else {\n return path\n }\n }, TMP_PathResolver_posixify_7.$$arity = 1);\n Opal.alias(self, \"posixfy\", \"posixify\");\n \n Opal.def(self, '$expand_path', TMP_PathResolver_expand_path_8 = function $$expand_path(path) {\n var $a, $b, self = this, path_segments = nil, path_root = nil, _ = nil;\n\n \n $b = self.$partition_path(path), $a = Opal.to_ary($b), (path_segments = ($a[0] == null ? nil : $a[0])), (path_root = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $b;\n return self.$join_path(path_segments, path_root);\n }, TMP_PathResolver_expand_path_8.$$arity = 1);\n \n Opal.def(self, '$partition_path', TMP_PathResolver_partition_path_9 = function $$partition_path(path, web) {\n var self = this, result = nil, cache = nil, posix_path = nil, root = nil, path_segments = nil, $writer = nil;\n\n if (web == null) {\n web = nil;\n }\n \n if ($truthy((result = (cache = (function() {if ($truthy(web)) {\n return self._partition_path_web\n } else {\n return self._partition_path_sys\n }; return nil; })())['$[]'](path)))) {\n return result};\n posix_path = self.$posixify(path);\n root = (function() {if ($truthy(web)) {\n if ($truthy(self['$web_root?'](posix_path))) {\n return $$($nesting, 'SLASH')\n } else if ($truthy(posix_path['$start_with?']($$($nesting, 'DOT_SLASH')))) {\n return $$($nesting, 'DOT_SLASH')\n } else {\n return nil\n }\n } else if ($truthy(self['$root?'](posix_path))) {\n if ($truthy(self['$unc?'](posix_path))) {\n return $$($nesting, 'DOUBLE_SLASH')\n } else if ($truthy(posix_path['$start_with?']($$($nesting, 'SLASH')))) {\n return $$($nesting, 'SLASH')\n } else {\n return posix_path.$slice(0, $rb_plus(posix_path.$index($$($nesting, 'SLASH')), 1))\n }\n } else if ($truthy(posix_path['$start_with?']($$($nesting, 'DOT_SLASH')))) {\n return $$($nesting, 'DOT_SLASH')\n } else {\n return nil\n }; return nil; })();\n path_segments = posix_path.$split($$($nesting, 'SLASH'));\n if (root['$==']($$($nesting, 'DOUBLE_SLASH'))) {\n path_segments = path_segments['$[]']($range(2, -1, false))\n } else if ($truthy(root)) {\n path_segments.$shift()};\n path_segments.$delete($$($nesting, 'DOT'));\n \n $writer = [path, [path_segments, root, posix_path]];\n $send(cache, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n }, TMP_PathResolver_partition_path_9.$$arity = -2);\n \n Opal.def(self, '$join_path', TMP_PathResolver_join_path_10 = function $$join_path(segments, root) {\n var self = this;\n\n if (root == null) {\n root = nil;\n }\n if ($truthy(root)) {\n return \"\" + (root) + ($rb_times(segments, $$($nesting, 'SLASH')))\n } else {\n return $rb_times(segments, $$($nesting, 'SLASH'))\n }\n }, TMP_PathResolver_join_path_10.$$arity = -2);\n \n Opal.def(self, '$system_path', TMP_PathResolver_system_path_12 = function $$system_path(target, start, jail, opts) {\n var $a, $b, TMP_11, self = this, target_segments = nil, target_root = nil, _ = nil, resolved_target = nil, jail_segments = nil, jail_root = nil, start_segments = nil, start_root = nil, resolved_segments = nil, warned = nil;\n\n if (start == null) {\n start = nil;\n }\n if (jail == null) {\n jail = nil;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy(jail)) {\n \n if ($truthy(self['$root?'](jail))) {\n } else {\n self.$raise($$$('::', 'SecurityError'), \"\" + \"Jail is not an absolute path: \" + (jail))\n };\n jail = self.$posixify(jail);};\n if ($truthy(target['$nil_or_empty?']())) {\n target_segments = []\n } else {\n $b = self.$partition_path(target), $a = Opal.to_ary($b), (target_segments = ($a[0] == null ? nil : $a[0])), (target_root = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $b\n };\n if ($truthy(target_segments['$empty?']())) {\n if ($truthy(start['$nil_or_empty?']())) {\n return (function() {if ($truthy(jail)) {\n return jail\n } else {\n return self.working_dir\n }; return nil; })()\n } else if ($truthy(self['$root?'](start))) {\n if ($truthy(jail)) {\n } else {\n return self.$expand_path(start)\n }\n } else {\n return self.$system_path(start, jail, jail, opts)\n }};\n if ($truthy(($truthy($a = target_root) ? target_root['$!=']($$($nesting, 'DOT_SLASH')) : $a))) {\n \n resolved_target = self.$join_path(target_segments, target_root);\n if ($truthy(($truthy($a = jail['$!']()) ? $a : resolved_target['$start_with?'](jail)))) {\n return resolved_target};};\n if ($truthy(start['$nil_or_empty?']())) {\n start = (function() {if ($truthy(jail)) {\n return jail\n } else {\n return self.working_dir\n }; return nil; })()\n } else if ($truthy(self['$root?'](start))) {\n start = self.$posixify(start)\n } else {\n start = self.$system_path(start, jail, jail, opts)\n };\n if (jail['$=='](start)) {\n \n $b = self.$partition_path(jail), $a = Opal.to_ary($b), (jail_segments = ($a[0] == null ? nil : $a[0])), (jail_root = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $b;\n start_segments = jail_segments.$dup();\n } else if ($truthy(jail)) {\n \n if ($truthy(start['$start_with?'](jail))) {\n } else {\n self.$raise($$$('::', 'SecurityError'), \"\" + (($truthy($a = opts['$[]'](\"target_name\")) ? $a : \"Start path\")) + \" \" + (start) + \" is outside of jail: \" + (jail) + \" (disallowed in safe mode)\")\n };\n $b = self.$partition_path(start), $a = Opal.to_ary($b), (start_segments = ($a[0] == null ? nil : $a[0])), (start_root = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $b;\n $b = self.$partition_path(jail), $a = Opal.to_ary($b), (jail_segments = ($a[0] == null ? nil : $a[0])), (jail_root = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $b;\n } else {\n \n $b = self.$partition_path(start), $a = Opal.to_ary($b), (start_segments = ($a[0] == null ? nil : $a[0])), (start_root = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $b;\n jail_root = start_root;\n };\n resolved_segments = start_segments.$dup();\n warned = false;\n $send(target_segments, 'each', [], (TMP_11 = function(segment){var self = TMP_11.$$s || this, $c, recover = nil;\nif (segment == null) segment = nil;\n if (segment['$==']($$($nesting, 'DOT_DOT'))) {\n if ($truthy(jail)) {\n if ($truthy($rb_gt(resolved_segments.$size(), jail_segments.$size()))) {\n return resolved_segments.$pop()\n } else if ($truthy((recover = ($truthy($c = recover) ? $c : opts.$fetch(\"recover\", true)))['$!']())) {\n return self.$raise($$$('::', 'SecurityError'), \"\" + (($truthy($c = opts['$[]'](\"target_name\")) ? $c : \"path\")) + \" \" + (target) + \" refers to location outside jail: \" + (jail) + \" (disallowed in safe mode)\")\n } else if ($truthy(warned['$!']())) {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (($truthy($c = opts['$[]'](\"target_name\")) ? $c : \"path\")) + \" has illegal reference to ancestor of jail, auto-recovering\");\n return (warned = true);\n } else {\n return nil\n }\n } else {\n return resolved_segments.$pop()\n }\n } else {\n return resolved_segments['$<<'](segment)\n }}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11));\n return self.$join_path(resolved_segments, jail_root);\n }, TMP_PathResolver_system_path_12.$$arity = -2);\n \n Opal.def(self, '$web_path', TMP_PathResolver_web_path_14 = function $$web_path(target, start) {\n var $a, $b, TMP_13, self = this, uri_prefix = nil, target_segments = nil, target_root = nil, _ = nil, resolved_segments = nil, resolved_path = nil;\n\n if (start == null) {\n start = nil;\n }\n \n target = self.$posixify(target);\n start = self.$posixify(start);\n uri_prefix = nil;\n if ($truthy(($truthy($a = start['$nil_or_empty?']()) ? $a : self['$web_root?'](target)))) {\n } else {\n \n target = (function() {if ($truthy(start['$end_with?']($$($nesting, 'SLASH')))) {\n return \"\" + (start) + (target)\n } else {\n return \"\" + (start) + ($$($nesting, 'SLASH')) + (target)\n }; return nil; })();\n if ($truthy((uri_prefix = $$($nesting, 'Helpers').$uri_prefix(target)))) {\n target = target['$[]'](Opal.Range.$new(uri_prefix.$length(), -1, false))};\n };\n $b = self.$partition_path(target, true), $a = Opal.to_ary($b), (target_segments = ($a[0] == null ? nil : $a[0])), (target_root = ($a[1] == null ? nil : $a[1])), (_ = ($a[2] == null ? nil : $a[2])), $b;\n resolved_segments = [];\n $send(target_segments, 'each', [], (TMP_13 = function(segment){var self = TMP_13.$$s || this, $c;\nif (segment == null) segment = nil;\n if (segment['$==']($$($nesting, 'DOT_DOT'))) {\n if ($truthy(resolved_segments['$empty?']())) {\n if ($truthy(($truthy($c = target_root) ? target_root['$!=']($$($nesting, 'DOT_SLASH')) : $c))) {\n return nil\n } else {\n return resolved_segments['$<<'](segment)\n }\n } else if (resolved_segments['$[]'](-1)['$==']($$($nesting, 'DOT_DOT'))) {\n return resolved_segments['$<<'](segment)\n } else {\n return resolved_segments.$pop()\n }\n } else {\n return resolved_segments['$<<'](segment)\n }}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13));\n if ($truthy((resolved_path = self.$join_path(resolved_segments, target_root))['$include?'](\" \"))) {\n resolved_path = resolved_path.$gsub(\" \", \"%20\")};\n if ($truthy(uri_prefix)) {\n return \"\" + (uri_prefix) + (resolved_path)\n } else {\n return resolved_path\n };\n }, TMP_PathResolver_web_path_14.$$arity = -2);\n return (Opal.def(self, '$relative_path', TMP_PathResolver_relative_path_15 = function $$relative_path(filename, base_directory) {\n var $a, self = this;\n\n if ($truthy(($truthy($a = self['$root?'](filename)) ? filename['$start_with?'](base_directory) : $a))) {\n return filename.$slice($rb_plus(base_directory.$length(), 1), filename.$length())\n } else {\n return filename\n }\n }, TMP_PathResolver_relative_path_15.$$arity = 2), nil) && 'relative_path';\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/reader\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $range = Opal.range, $send = Opal.send, $gvars = Opal.gvars, $hash = Opal.hash;\n\n Opal.add_stubs(['$attr_accessor', '$path', '$lineno', '$attr_reader', '$!', '$===', '$split', '$file', '$dir', '$dirname', '$==', '$basename', '$prepare_lines', '$dup', '$[]', '$normalize_lines_from_string', '$normalize_lines_array', '$+', '$empty?', '$nil_or_empty?', '$peek_line', '$>', '$process_line', '$times', '$shift', '$read_line', '$<<', '$-', '$unshift_all', '$has_more_lines?', '$*', '$read_lines', '$unshift', '$start_with?', '$length', '$push', '$read_lines_until', '$size', '$clear', '$[]=', '$new', '$line_info', '$to_i', '$fetch', '$attributes', '$<', '$catalog', '$key?', '$skip_front_matter!', '$pop', '$adjust_indentation!', '$attr', '$end_with?', '$include?', '$=~', '$preprocess_conditional_directive', '$preprocess_include_directive', '$strip', '$pop_include', '$downcase', '$warn', '$none?', '$any?', '$all?', '$resolve_expr_val', '$send', '$to_sym', '$replace_next_line', '$rstrip', '$sub_attributes', '$attribute_missing', '$include_processors?', '$find', '$handles?', '$instance', '$process_method', '$parse', '$>=', '$safe', '$resolve_include_path', '$each', '$map', '$/', '$concat', '$to_a', '$uniq', '$sort', '$slice', '$open', '$each_line', '$infinite?', '$push_include', '$delete', '$value?', '$rindex', '$force_encoding', '$chomp', '$delete_at', '$nil?', '$keys', '$read', '$uriish?', '$require_library', '$normalize_system_path', '$file?', '$relative_path', '$base_dir', '$extname', '$rootname', '$<=', '$!=', '$to_f', '$extensions?', '$extensions', '$include_processors', '$class', '$object_id', '$inspect', '$to_s']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n (function($base, $super, $parent_nesting) {\n function $Reader(){};\n var self = $Reader = $klass($base, $super, 'Reader', $Reader);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Reader_initialize_3, TMP_Reader_prepare_lines_4, TMP_Reader_process_line_5, TMP_Reader_has_more_lines$q_6, TMP_Reader_empty$q_7, TMP_Reader_next_line_empty$q_8, TMP_Reader_peek_line_9, TMP_Reader_peek_lines_11, TMP_Reader_read_line_12, TMP_Reader_read_lines_13, TMP_Reader_read_14, TMP_Reader_advance_15, TMP_Reader_unshift_line_16, TMP_Reader_unshift_lines_17, TMP_Reader_replace_next_line_18, TMP_Reader_skip_blank_lines_19, TMP_Reader_skip_comment_lines_20, TMP_Reader_skip_line_comments_21, TMP_Reader_terminate_22, TMP_Reader_read_lines_until_23, TMP_Reader_shift_24, TMP_Reader_unshift_25, TMP_Reader_unshift_all_26, TMP_Reader_cursor_27, TMP_Reader_line_info_28, TMP_Reader_prev_line_info_29, TMP_Reader_lines_30, TMP_Reader_string_31, TMP_Reader_source_32, TMP_Reader_to_s_33;\n\n def.file = def.dir = def.lines = def.process_lines = def.look_ahead = def.unescape_next_line = def.lineno = def.path = def.source_lines = nil;\n \n (function($base, $super, $parent_nesting) {\n function $Cursor(){};\n var self = $Cursor = $klass($base, $super, 'Cursor', $Cursor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Cursor_initialize_1, TMP_Cursor_line_info_2;\n\n \n self.$attr_accessor(\"file\");\n self.$attr_accessor(\"dir\");\n self.$attr_accessor(\"path\");\n self.$attr_accessor(\"lineno\");\n \n Opal.def(self, '$initialize', TMP_Cursor_initialize_1 = function $$initialize(file, dir, path, lineno) {\n var self = this;\n\n if (dir == null) {\n dir = nil;\n }\n if (path == null) {\n path = nil;\n }\n if (lineno == null) {\n lineno = nil;\n }\n \n self.file = file;\n self.dir = dir;\n self.path = path;\n return (self.lineno = lineno);\n }, TMP_Cursor_initialize_1.$$arity = -2);\n \n Opal.def(self, '$line_info', TMP_Cursor_line_info_2 = function $$line_info() {\n var self = this;\n\n return \"\" + (self.$path()) + \": line \" + (self.$lineno())\n }, TMP_Cursor_line_info_2.$$arity = 0);\n return Opal.alias(self, \"to_s\", \"line_info\");\n })($nesting[0], null, $nesting);\n self.$attr_reader(\"file\");\n self.$attr_reader(\"dir\");\n self.$attr_reader(\"path\");\n self.$attr_reader(\"lineno\");\n self.$attr_reader(\"source_lines\");\n self.$attr_accessor(\"process_lines\");\n \n Opal.def(self, '$initialize', TMP_Reader_initialize_3 = function $$initialize(data, cursor, opts) {\n var $a, $b, self = this;\n\n if (data == null) {\n data = nil;\n }\n if (cursor == null) {\n cursor = nil;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy(cursor['$!']())) {\n \n self.file = (self.dir = nil);\n self.path = \"<stdin>\";\n self.lineno = 1;\n } else if ($truthy($$$('::', 'String')['$==='](cursor))) {\n \n self.file = cursor;\n $b = $$$('::', 'File').$split(self.file), $a = Opal.to_ary($b), (self.dir = ($a[0] == null ? nil : $a[0])), (self.path = ($a[1] == null ? nil : $a[1])), $b;\n self.lineno = 1;\n } else {\n \n self.file = cursor.$file();\n self.dir = cursor.$dir();\n self.path = ($truthy($a = cursor.$path()) ? $a : \"<stdin>\");\n if ($truthy(self.file)) {\n \n if ($truthy(self.dir)) {\n } else {\n \n self.dir = $$$('::', 'File').$dirname(self.file);\n if (self.dir['$=='](\".\")) {\n self.dir = nil};\n };\n if ($truthy(cursor.$path())) {\n } else {\n self.path = $$$('::', 'File').$basename(self.file)\n };};\n self.lineno = ($truthy($a = cursor.$lineno()) ? $a : 1);\n };\n self.lines = (function() {if ($truthy(data)) {\n \n return self.$prepare_lines(data, opts);\n } else {\n return []\n }; return nil; })();\n self.source_lines = self.lines.$dup();\n self.look_ahead = 0;\n self.process_lines = true;\n return (self.unescape_next_line = false);\n }, TMP_Reader_initialize_3.$$arity = -1);\n \n Opal.def(self, '$prepare_lines', TMP_Reader_prepare_lines_4 = function $$prepare_lines(data, opts) {\n var self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n if ($truthy($$$('::', 'String')['$==='](data))) {\n if ($truthy(opts['$[]'](\"normalize\"))) {\n return $$($nesting, 'Helpers').$normalize_lines_from_string(data)\n } else {\n return data.$split($$($nesting, 'LF'), -1)\n }\n } else if ($truthy(opts['$[]'](\"normalize\"))) {\n return $$($nesting, 'Helpers').$normalize_lines_array(data)\n } else {\n return data.$dup()\n }\n }, TMP_Reader_prepare_lines_4.$$arity = -2);\n \n Opal.def(self, '$process_line', TMP_Reader_process_line_5 = function $$process_line(line) {\n var self = this;\n\n \n if ($truthy(self.process_lines)) {\n self.look_ahead = $rb_plus(self.look_ahead, 1)};\n return line;\n }, TMP_Reader_process_line_5.$$arity = 1);\n \n Opal.def(self, '$has_more_lines?', TMP_Reader_has_more_lines$q_6 = function() {\n var self = this;\n\n if ($truthy(self.lines['$empty?']())) {\n \n self.look_ahead = 0;\n return false;\n } else {\n return true\n }\n }, TMP_Reader_has_more_lines$q_6.$$arity = 0);\n \n Opal.def(self, '$empty?', TMP_Reader_empty$q_7 = function() {\n var self = this;\n\n if ($truthy(self.lines['$empty?']())) {\n \n self.look_ahead = 0;\n return true;\n } else {\n return false\n }\n }, TMP_Reader_empty$q_7.$$arity = 0);\n Opal.alias(self, \"eof?\", \"empty?\");\n \n Opal.def(self, '$next_line_empty?', TMP_Reader_next_line_empty$q_8 = function() {\n var self = this;\n\n return self.$peek_line()['$nil_or_empty?']()\n }, TMP_Reader_next_line_empty$q_8.$$arity = 0);\n \n Opal.def(self, '$peek_line', TMP_Reader_peek_line_9 = function $$peek_line(direct) {\n var $a, self = this, line = nil;\n\n if (direct == null) {\n direct = false;\n }\n if ($truthy(($truthy($a = direct) ? $a : $rb_gt(self.look_ahead, 0)))) {\n if ($truthy(self.unescape_next_line)) {\n return self.lines['$[]'](0)['$[]']($range(1, -1, false))\n } else {\n return self.lines['$[]'](0)\n }\n } else if ($truthy(self.lines['$empty?']())) {\n \n self.look_ahead = 0;\n return nil;\n } else if ($truthy((line = self.$process_line(self.lines['$[]'](0))))) {\n return line\n } else {\n return self.$peek_line()\n }\n }, TMP_Reader_peek_line_9.$$arity = -1);\n \n Opal.def(self, '$peek_lines', TMP_Reader_peek_lines_11 = function $$peek_lines(num, direct) {\n var TMP_10, self = this, old_look_ahead = nil, result = nil;\n\n if (direct == null) {\n direct = false;\n }\n \n old_look_ahead = self.look_ahead;\n result = [];\n (function(){var $brk = Opal.new_brk(); try {return $send(num, 'times', [], (TMP_10 = function(){var self = TMP_10.$$s || this, line = nil;\n if (self.lineno == null) self.lineno = nil;\n\n if ($truthy((line = (function() {if ($truthy(direct)) {\n return self.$shift()\n } else {\n return self.$read_line()\n }; return nil; })()))) {\n return result['$<<'](line)\n } else {\n \n if ($truthy(direct)) {\n self.lineno = $rb_minus(self.lineno, 1)};\n \n Opal.brk(nil, $brk);\n }}, TMP_10.$$s = self, TMP_10.$$brk = $brk, TMP_10.$$arity = 0, TMP_10))\n } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})();\n if ($truthy(result['$empty?']())) {\n } else {\n \n self.$unshift_all(result);\n if ($truthy(direct)) {\n self.look_ahead = old_look_ahead};\n };\n return result;\n }, TMP_Reader_peek_lines_11.$$arity = -2);\n \n Opal.def(self, '$read_line', TMP_Reader_read_line_12 = function $$read_line() {\n var $a, self = this;\n\n if ($truthy(($truthy($a = $rb_gt(self.look_ahead, 0)) ? $a : self['$has_more_lines?']()))) {\n return self.$shift()\n } else {\n return nil\n }\n }, TMP_Reader_read_line_12.$$arity = 0);\n \n Opal.def(self, '$read_lines', TMP_Reader_read_lines_13 = function $$read_lines() {\n var $a, self = this, lines = nil;\n\n \n lines = [];\n while ($truthy(self['$has_more_lines?']())) {\n lines['$<<'](self.$shift())\n };\n return lines;\n }, TMP_Reader_read_lines_13.$$arity = 0);\n Opal.alias(self, \"readlines\", \"read_lines\");\n \n Opal.def(self, '$read', TMP_Reader_read_14 = function $$read() {\n var self = this;\n\n return $rb_times(self.$read_lines(), $$($nesting, 'LF'))\n }, TMP_Reader_read_14.$$arity = 0);\n \n Opal.def(self, '$advance', TMP_Reader_advance_15 = function $$advance() {\n var self = this;\n\n if ($truthy(self.$shift())) {\n return true\n } else {\n return false\n }\n }, TMP_Reader_advance_15.$$arity = 0);\n \n Opal.def(self, '$unshift_line', TMP_Reader_unshift_line_16 = function $$unshift_line(line_to_restore) {\n var self = this;\n\n \n self.$unshift(line_to_restore);\n return nil;\n }, TMP_Reader_unshift_line_16.$$arity = 1);\n Opal.alias(self, \"restore_line\", \"unshift_line\");\n \n Opal.def(self, '$unshift_lines', TMP_Reader_unshift_lines_17 = function $$unshift_lines(lines_to_restore) {\n var self = this;\n\n \n self.$unshift_all(lines_to_restore);\n return nil;\n }, TMP_Reader_unshift_lines_17.$$arity = 1);\n Opal.alias(self, \"restore_lines\", \"unshift_lines\");\n \n Opal.def(self, '$replace_next_line', TMP_Reader_replace_next_line_18 = function $$replace_next_line(replacement) {\n var self = this;\n\n \n self.$shift();\n self.$unshift(replacement);\n return true;\n }, TMP_Reader_replace_next_line_18.$$arity = 1);\n Opal.alias(self, \"replace_line\", \"replace_next_line\");\n \n Opal.def(self, '$skip_blank_lines', TMP_Reader_skip_blank_lines_19 = function $$skip_blank_lines() {\n var $a, self = this, num_skipped = nil, next_line = nil;\n\n \n if ($truthy(self['$empty?']())) {\n return nil};\n num_skipped = 0;\n while ($truthy((next_line = self.$peek_line()))) {\n if ($truthy(next_line['$empty?']())) {\n \n self.$shift();\n num_skipped = $rb_plus(num_skipped, 1);\n } else {\n return num_skipped\n }\n };\n }, TMP_Reader_skip_blank_lines_19.$$arity = 0);\n \n Opal.def(self, '$skip_comment_lines', TMP_Reader_skip_comment_lines_20 = function $$skip_comment_lines() {\n var $a, $b, self = this, comment_lines = nil, next_line = nil, ll = nil;\n\n \n if ($truthy(self['$empty?']())) {\n return []};\n comment_lines = [];\n while ($truthy(($truthy($b = (next_line = self.$peek_line())) ? next_line['$empty?']()['$!']() : $b))) {\n if ($truthy(next_line['$start_with?'](\"//\"))) {\n if ($truthy(next_line['$start_with?'](\"///\"))) {\n if ($truthy(($truthy($b = $rb_gt((ll = next_line.$length()), 3)) ? next_line['$==']($rb_times(\"/\", ll)) : $b))) {\n \n comment_lines['$<<'](self.$shift());\n $send(comment_lines, 'push', Opal.to_a(self.$read_lines_until($hash2([\"terminator\", \"read_last_line\", \"skip_processing\"], {\"terminator\": next_line, \"read_last_line\": true, \"skip_processing\": true}))));\n } else {\n break;\n }\n } else {\n comment_lines['$<<'](self.$shift())\n }\n } else {\n break;\n }\n };\n return comment_lines;\n }, TMP_Reader_skip_comment_lines_20.$$arity = 0);\n \n Opal.def(self, '$skip_line_comments', TMP_Reader_skip_line_comments_21 = function $$skip_line_comments() {\n var $a, $b, self = this, comment_lines = nil, next_line = nil;\n\n \n if ($truthy(self['$empty?']())) {\n return []};\n comment_lines = [];\n while ($truthy(($truthy($b = (next_line = self.$peek_line())) ? next_line['$empty?']()['$!']() : $b))) {\n if ($truthy(next_line['$start_with?'](\"//\"))) {\n comment_lines['$<<'](self.$shift())\n } else {\n break;\n }\n };\n return comment_lines;\n }, TMP_Reader_skip_line_comments_21.$$arity = 0);\n \n Opal.def(self, '$terminate', TMP_Reader_terminate_22 = function $$terminate() {\n var self = this;\n\n \n self.lineno = $rb_plus(self.lineno, self.lines.$size());\n self.lines.$clear();\n self.look_ahead = 0;\n return nil;\n }, TMP_Reader_terminate_22.$$arity = 0);\n \n Opal.def(self, '$read_lines_until', TMP_Reader_read_lines_until_23 = function $$read_lines_until(options) {\n var $a, $b, $c, $d, self = this, $iter = TMP_Reader_read_lines_until_23.$$p, $yield = $iter || nil, result = nil, restore_process_lines = nil, terminator = nil, break_on_blank_lines = nil, break_on_list_continuation = nil, skip_comments = nil, line_read = nil, line_restored = nil, complete = nil, line = nil, $writer = nil;\n\n if (options == null) {\n options = $hash2([], {});\n }\n if ($iter) TMP_Reader_read_lines_until_23.$$p = null;\n \n result = [];\n if ($truthy(options['$[]'](\"skip_first_line\"))) {\n self.$shift()};\n if ($truthy(($truthy($a = self.process_lines) ? options['$[]'](\"skip_processing\") : $a))) {\n \n self.process_lines = false;\n restore_process_lines = true;\n } else {\n restore_process_lines = false\n };\n if ($truthy((terminator = options['$[]'](\"terminator\")))) {\n \n break_on_blank_lines = false;\n break_on_list_continuation = false;\n } else {\n \n break_on_blank_lines = options['$[]'](\"break_on_blank_lines\");\n break_on_list_continuation = options['$[]'](\"break_on_list_continuation\");\n };\n skip_comments = options['$[]'](\"skip_line_comments\");\n line_read = false;\n line_restored = false;\n complete = false;\n while ($truthy(($truthy($b = complete['$!']()) ? (line = self.$read_line()) : $b))) {\n \n complete = (function() {while ($truthy(true)) {\n \n if ($truthy(($truthy($c = terminator) ? line['$=='](terminator) : $c))) {\n return true};\n if ($truthy(($truthy($c = break_on_blank_lines) ? line['$empty?']() : $c))) {\n return true};\n if ($truthy(($truthy($c = ($truthy($d = break_on_list_continuation) ? line_read : $d)) ? line['$==']($$($nesting, 'LIST_CONTINUATION')) : $c))) {\n \n \n $writer = [\"preserve_last_line\", true];\n $send(options, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n return true;};\n if ($truthy((($c = ($yield !== nil)) ? Opal.yield1($yield, line) : ($yield !== nil)))) {\n return true};\n return false;\n }; return nil; })();\n if ($truthy(complete)) {\n \n if ($truthy(options['$[]'](\"read_last_line\"))) {\n \n result['$<<'](line);\n line_read = true;};\n if ($truthy(options['$[]'](\"preserve_last_line\"))) {\n \n self.$unshift(line);\n line_restored = true;};\n } else if ($truthy(($truthy($b = ($truthy($c = skip_comments) ? line['$start_with?'](\"//\") : $c)) ? line['$start_with?'](\"///\")['$!']() : $b))) {\n } else {\n \n result['$<<'](line);\n line_read = true;\n };\n };\n if ($truthy(restore_process_lines)) {\n \n self.process_lines = true;\n if ($truthy(($truthy($a = line_restored) ? terminator['$!']() : $a))) {\n self.look_ahead = $rb_minus(self.look_ahead, 1)};};\n return result;\n }, TMP_Reader_read_lines_until_23.$$arity = -1);\n \n Opal.def(self, '$shift', TMP_Reader_shift_24 = function $$shift() {\n var self = this;\n\n \n self.lineno = $rb_plus(self.lineno, 1);\n if (self.look_ahead['$=='](0)) {\n } else {\n self.look_ahead = $rb_minus(self.look_ahead, 1)\n };\n return self.lines.$shift();\n }, TMP_Reader_shift_24.$$arity = 0);\n \n Opal.def(self, '$unshift', TMP_Reader_unshift_25 = function $$unshift(line) {\n var self = this;\n\n \n self.lineno = $rb_minus(self.lineno, 1);\n self.look_ahead = $rb_plus(self.look_ahead, 1);\n return self.lines.$unshift(line);\n }, TMP_Reader_unshift_25.$$arity = 1);\n \n Opal.def(self, '$unshift_all', TMP_Reader_unshift_all_26 = function $$unshift_all(lines) {\n var self = this;\n\n \n self.lineno = $rb_minus(self.lineno, lines.$size());\n self.look_ahead = $rb_plus(self.look_ahead, lines.$size());\n return $send(self.lines, 'unshift', Opal.to_a(lines));\n }, TMP_Reader_unshift_all_26.$$arity = 1);\n \n Opal.def(self, '$cursor', TMP_Reader_cursor_27 = function $$cursor() {\n var self = this;\n\n return $$($nesting, 'Cursor').$new(self.file, self.dir, self.path, self.lineno)\n }, TMP_Reader_cursor_27.$$arity = 0);\n \n Opal.def(self, '$line_info', TMP_Reader_line_info_28 = function $$line_info() {\n var self = this;\n\n return \"\" + (self.path) + \": line \" + (self.lineno)\n }, TMP_Reader_line_info_28.$$arity = 0);\n Opal.alias(self, \"next_line_info\", \"line_info\");\n \n Opal.def(self, '$prev_line_info', TMP_Reader_prev_line_info_29 = function $$prev_line_info() {\n var self = this;\n\n return \"\" + (self.path) + \": line \" + ($rb_minus(self.lineno, 1))\n }, TMP_Reader_prev_line_info_29.$$arity = 0);\n \n Opal.def(self, '$lines', TMP_Reader_lines_30 = function $$lines() {\n var self = this;\n\n return self.lines.$dup()\n }, TMP_Reader_lines_30.$$arity = 0);\n \n Opal.def(self, '$string', TMP_Reader_string_31 = function $$string() {\n var self = this;\n\n return $rb_times(self.lines, $$($nesting, 'LF'))\n }, TMP_Reader_string_31.$$arity = 0);\n \n Opal.def(self, '$source', TMP_Reader_source_32 = function $$source() {\n var self = this;\n\n return $rb_times(self.source_lines, $$($nesting, 'LF'))\n }, TMP_Reader_source_32.$$arity = 0);\n return (Opal.def(self, '$to_s', TMP_Reader_to_s_33 = function $$to_s() {\n var self = this;\n\n return self.$line_info()\n }, TMP_Reader_to_s_33.$$arity = 0), nil) && 'to_s';\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $PreprocessorReader(){};\n var self = $PreprocessorReader = $klass($base, $super, 'PreprocessorReader', $PreprocessorReader);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_PreprocessorReader_initialize_34, TMP_PreprocessorReader_prepare_lines_35, TMP_PreprocessorReader_process_line_36, TMP_PreprocessorReader_has_more_lines$q_37, TMP_PreprocessorReader_empty$q_38, TMP_PreprocessorReader_peek_line_39, TMP_PreprocessorReader_preprocess_conditional_directive_44, TMP_PreprocessorReader_preprocess_include_directive_55, TMP_PreprocessorReader_resolve_include_path_56, TMP_PreprocessorReader_push_include_57, TMP_PreprocessorReader_pop_include_58, TMP_PreprocessorReader_include_depth_59, TMP_PreprocessorReader_exceeded_max_depth$q_60, TMP_PreprocessorReader_shift_61, TMP_PreprocessorReader_skip_front_matter$B_62, TMP_PreprocessorReader_resolve_expr_val_63, TMP_PreprocessorReader_include_processors$q_64, TMP_PreprocessorReader_to_s_66;\n\n def.document = def.lineno = def.process_lines = def.look_ahead = def.skipping = def.include_stack = def.conditional_stack = def.path = def.include_processor_extensions = def.maxdepth = def.dir = def.path_resolver = def.lines = def.file = def.includes = def.unescape_next_line = nil;\n \n self.$attr_reader(\"include_stack\");\n self.$attr_reader(\"includes\");\n \n Opal.def(self, '$initialize', TMP_PreprocessorReader_initialize_34 = function $$initialize(document, data, cursor, opts) {\n var self = this, $iter = TMP_PreprocessorReader_initialize_34.$$p, $yield = $iter || nil, include_depth_default = nil;\n\n if (data == null) {\n data = nil;\n }\n if (cursor == null) {\n cursor = nil;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n if ($iter) TMP_PreprocessorReader_initialize_34.$$p = null;\n \n self.document = document;\n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_PreprocessorReader_initialize_34, false), [data, cursor, opts], null);\n include_depth_default = document.$attributes().$fetch(\"max-include-depth\", 64).$to_i();\n if ($truthy($rb_lt(include_depth_default, 0))) {\n include_depth_default = 0};\n self.maxdepth = $hash2([\"abs\", \"rel\"], {\"abs\": include_depth_default, \"rel\": include_depth_default});\n self.include_stack = [];\n self.includes = document.$catalog()['$[]'](\"includes\");\n self.skipping = false;\n self.conditional_stack = [];\n return (self.include_processor_extensions = nil);\n }, TMP_PreprocessorReader_initialize_34.$$arity = -2);\n \n Opal.def(self, '$prepare_lines', TMP_PreprocessorReader_prepare_lines_35 = function $$prepare_lines(data, opts) {\n var $a, $b, self = this, $iter = TMP_PreprocessorReader_prepare_lines_35.$$p, $yield = $iter || nil, result = nil, front_matter = nil, $writer = nil, first = nil, last = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n if ($iter) TMP_PreprocessorReader_prepare_lines_35.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n result = $send(self, Opal.find_super_dispatcher(self, 'prepare_lines', TMP_PreprocessorReader_prepare_lines_35, false), $zuper, $iter);\n if ($truthy(($truthy($a = self.document) ? self.document.$attributes()['$key?'](\"skip-front-matter\") : $a))) {\n if ($truthy((front_matter = self['$skip_front_matter!'](result)))) {\n \n $writer = [\"front-matter\", $rb_times(front_matter, $$($nesting, 'LF'))];\n $send(self.document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}};\n if ($truthy(opts.$fetch(\"condense\", true))) {\n \n while ($truthy(($truthy($b = (first = result['$[]'](0))) ? first['$empty?']() : $b))) {\n ($truthy($b = result.$shift()) ? (self.lineno = $rb_plus(self.lineno, 1)) : $b)\n };\n while ($truthy(($truthy($b = (last = result['$[]'](-1))) ? last['$empty?']() : $b))) {\n result.$pop()\n };};\n if ($truthy(opts['$[]'](\"indent\"))) {\n $$($nesting, 'Parser')['$adjust_indentation!'](result, opts['$[]'](\"indent\"), self.document.$attr(\"tabsize\"))};\n return result;\n }, TMP_PreprocessorReader_prepare_lines_35.$$arity = -2);\n \n Opal.def(self, '$process_line', TMP_PreprocessorReader_process_line_36 = function $$process_line(line) {\n var $a, $b, self = this;\n\n \n if ($truthy(self.process_lines)) {\n } else {\n return line\n };\n if ($truthy(line['$empty?']())) {\n \n self.look_ahead = $rb_plus(self.look_ahead, 1);\n return line;};\n if ($truthy(($truthy($a = ($truthy($b = line['$end_with?'](\"]\")) ? line['$start_with?'](\"[\")['$!']() : $b)) ? line['$include?'](\"::\") : $a))) {\n if ($truthy(($truthy($a = line['$include?'](\"if\")) ? $$($nesting, 'ConditionalDirectiveRx')['$=~'](line) : $a))) {\n if ((($a = $gvars['~']) === nil ? nil : $a['$[]'](1))['$=='](\"\\\\\")) {\n \n self.unescape_next_line = true;\n self.look_ahead = $rb_plus(self.look_ahead, 1);\n return line['$[]']($range(1, -1, false));\n } else if ($truthy(self.$preprocess_conditional_directive((($a = $gvars['~']) === nil ? nil : $a['$[]'](2)), (($a = $gvars['~']) === nil ? nil : $a['$[]'](3)), (($a = $gvars['~']) === nil ? nil : $a['$[]'](4)), (($a = $gvars['~']) === nil ? nil : $a['$[]'](5))))) {\n \n self.$shift();\n return nil;\n } else {\n \n self.look_ahead = $rb_plus(self.look_ahead, 1);\n return line;\n }\n } else if ($truthy(self.skipping)) {\n \n self.$shift();\n return nil;\n } else if ($truthy(($truthy($a = line['$start_with?'](\"inc\", \"\\\\inc\")) ? $$($nesting, 'IncludeDirectiveRx')['$=~'](line) : $a))) {\n if ((($a = $gvars['~']) === nil ? nil : $a['$[]'](1))['$=='](\"\\\\\")) {\n \n self.unescape_next_line = true;\n self.look_ahead = $rb_plus(self.look_ahead, 1);\n return line['$[]']($range(1, -1, false));\n } else if ($truthy(self.$preprocess_include_directive((($a = $gvars['~']) === nil ? nil : $a['$[]'](2)), (($a = $gvars['~']) === nil ? nil : $a['$[]'](3)).$strip()))) {\n return nil\n } else {\n \n self.look_ahead = $rb_plus(self.look_ahead, 1);\n return line;\n }\n } else {\n \n self.look_ahead = $rb_plus(self.look_ahead, 1);\n return line;\n }\n } else if ($truthy(self.skipping)) {\n \n self.$shift();\n return nil;\n } else {\n \n self.look_ahead = $rb_plus(self.look_ahead, 1);\n return line;\n };\n }, TMP_PreprocessorReader_process_line_36.$$arity = 1);\n \n Opal.def(self, '$has_more_lines?', TMP_PreprocessorReader_has_more_lines$q_37 = function() {\n var self = this;\n\n if ($truthy(self.$peek_line())) {\n return true\n } else {\n return false\n }\n }, TMP_PreprocessorReader_has_more_lines$q_37.$$arity = 0);\n \n Opal.def(self, '$empty?', TMP_PreprocessorReader_empty$q_38 = function() {\n var self = this;\n\n if ($truthy(self.$peek_line())) {\n return false\n } else {\n return true\n }\n }, TMP_PreprocessorReader_empty$q_38.$$arity = 0);\n Opal.alias(self, \"eof?\", \"empty?\");\n \n Opal.def(self, '$peek_line', TMP_PreprocessorReader_peek_line_39 = function $$peek_line(direct) {\n var self = this, $iter = TMP_PreprocessorReader_peek_line_39.$$p, $yield = $iter || nil, line = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if (direct == null) {\n direct = false;\n }\n if ($iter) TMP_PreprocessorReader_peek_line_39.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if ($truthy((line = $send(self, Opal.find_super_dispatcher(self, 'peek_line', TMP_PreprocessorReader_peek_line_39, false), $zuper, $iter)))) {\n return line\n } else if ($truthy(self.include_stack['$empty?']())) {\n return nil\n } else {\n \n self.$pop_include();\n return self.$peek_line(direct);\n }\n }, TMP_PreprocessorReader_peek_line_39.$$arity = -1);\n \n Opal.def(self, '$preprocess_conditional_directive', TMP_PreprocessorReader_preprocess_conditional_directive_44 = function $$preprocess_conditional_directive(keyword, target, delimiter, text) {\n var $a, $b, $c, TMP_40, TMP_41, TMP_42, TMP_43, self = this, no_target = nil, pair = nil, skip = nil, $case = nil, lhs = nil, op = nil, rhs = nil;\n\n \n if ($truthy((no_target = target['$empty?']()))) {\n } else {\n target = target.$downcase()\n };\n if ($truthy(($truthy($a = ($truthy($b = no_target) ? ($truthy($c = keyword['$=='](\"ifdef\")) ? $c : keyword['$=='](\"ifndef\")) : $b)) ? $a : ($truthy($b = text) ? keyword['$=='](\"endif\") : $b)))) {\n return false};\n if (keyword['$=='](\"endif\")) {\n \n if ($truthy(self.conditional_stack['$empty?']())) {\n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (self.$line_info()) + \": unmatched macro: endif::\" + (target) + \"[]\")\n } else if ($truthy(($truthy($a = no_target) ? $a : target['$==']((pair = self.conditional_stack['$[]'](-1))['$[]'](\"target\"))))) {\n \n self.conditional_stack.$pop();\n self.skipping = (function() {if ($truthy(self.conditional_stack['$empty?']())) {\n return false\n } else {\n return self.conditional_stack['$[]'](-1)['$[]'](\"skipping\")\n }; return nil; })();\n } else {\n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (self.$line_info()) + \": mismatched macro: endif::\" + (target) + \"[], expected endif::\" + (pair['$[]'](\"target\")) + \"[]\")\n };\n return true;};\n if ($truthy(self.skipping)) {\n skip = false\n } else {\n $case = keyword;\n if (\"ifdef\"['$===']($case)) {$case = delimiter;\n if (\",\"['$===']($case)) {skip = $send(target.$split(\",\", -1), 'none?', [], (TMP_40 = function(name){var self = TMP_40.$$s || this;\n if (self.document == null) self.document = nil;\nif (name == null) name = nil;\n return self.document.$attributes()['$key?'](name)}, TMP_40.$$s = self, TMP_40.$$arity = 1, TMP_40))}\n else if (\"+\"['$===']($case)) {skip = $send(target.$split(\"+\", -1), 'any?', [], (TMP_41 = function(name){var self = TMP_41.$$s || this;\n if (self.document == null) self.document = nil;\nif (name == null) name = nil;\n return self.document.$attributes()['$key?'](name)['$!']()}, TMP_41.$$s = self, TMP_41.$$arity = 1, TMP_41))}\n else {skip = self.document.$attributes()['$key?'](target)['$!']()}}\n else if (\"ifndef\"['$===']($case)) {$case = delimiter;\n if (\",\"['$===']($case)) {skip = $send(target.$split(\",\", -1), 'any?', [], (TMP_42 = function(name){var self = TMP_42.$$s || this;\n if (self.document == null) self.document = nil;\nif (name == null) name = nil;\n return self.document.$attributes()['$key?'](name)}, TMP_42.$$s = self, TMP_42.$$arity = 1, TMP_42))}\n else if (\"+\"['$===']($case)) {skip = $send(target.$split(\"+\", -1), 'all?', [], (TMP_43 = function(name){var self = TMP_43.$$s || this;\n if (self.document == null) self.document = nil;\nif (name == null) name = nil;\n return self.document.$attributes()['$key?'](name)}, TMP_43.$$s = self, TMP_43.$$arity = 1, TMP_43))}\n else {skip = self.document.$attributes()['$key?'](target)}}\n else if (\"ifeval\"['$===']($case)) {\n if ($truthy(($truthy($a = no_target) ? $$($nesting, 'EvalExpressionRx')['$=~'](text.$strip()) : $a))) {\n } else {\n return false\n };\n $a = [(($b = $gvars['~']) === nil ? nil : $b['$[]'](1)), (($b = $gvars['~']) === nil ? nil : $b['$[]'](2)), (($b = $gvars['~']) === nil ? nil : $b['$[]'](3))], (lhs = $a[0]), (op = $a[1]), (rhs = $a[2]), $a;\n lhs = self.$resolve_expr_val(lhs);\n rhs = self.$resolve_expr_val(rhs);\n if (op['$=='](\"!=\")) {\n skip = lhs.$send(\"==\", rhs)\n } else {\n skip = lhs.$send(op.$to_sym(), rhs)['$!']()\n };}\n };\n if ($truthy(($truthy($a = keyword['$=='](\"ifeval\")) ? $a : text['$!']()))) {\n \n if ($truthy(skip)) {\n self.skipping = true};\n self.conditional_stack['$<<']($hash2([\"target\", \"skip\", \"skipping\"], {\"target\": target, \"skip\": skip, \"skipping\": self.skipping}));\n } else if ($truthy(($truthy($a = self.skipping) ? $a : skip))) {\n } else {\n \n self.$replace_next_line(text.$rstrip());\n self.$unshift(\"\");\n if ($truthy(text['$start_with?'](\"include::\"))) {\n self.look_ahead = $rb_minus(self.look_ahead, 1)};\n };\n return true;\n }, TMP_PreprocessorReader_preprocess_conditional_directive_44.$$arity = 4);\n \n Opal.def(self, '$preprocess_include_directive', TMP_PreprocessorReader_preprocess_include_directive_55 = function $$preprocess_include_directive(target, attrlist) {\n var $a, TMP_45, $b, TMP_46, TMP_48, TMP_49, TMP_51, TMP_54, self = this, expanded_target = nil, ext = nil, abs_maxdepth = nil, parsed_attributes = nil, inc_path = nil, target_type = nil, relpath = nil, inc_linenos = nil, inc_tags = nil, tag = nil, inc_lines = nil, inc_offset = nil, inc_lineno = nil, tag_stack = nil, tags_used = nil, active_tag = nil, select = nil, base_select = nil, wildcard = nil, ext_idx = nil, circ_cmt = nil, cmt_suffix_len = nil, tag_suffix = nil, missing_tags = nil, inc_content = nil;\n\n if ($truthy(($truthy($a = (expanded_target = target)['$include?']($$($nesting, 'ATTR_REF_HEAD'))) ? (expanded_target = self.document.$sub_attributes(target, $hash2([\"attribute_missing\"], {\"attribute_missing\": \"drop-line\"})))['$empty?']() : $a))) {\n \n self.$shift();\n if (self.document.$attributes().$fetch(\"attribute-missing\", $$($nesting, 'Compliance').$attribute_missing())['$=='](\"skip\")) {\n self.$unshift(\"\" + \"Unresolved directive in \" + (self.path) + \" - include::\" + (target) + \"[\" + (attrlist) + \"]\")};\n return true;\n } else if ($truthy(($truthy($a = self['$include_processors?']()) ? (ext = $send(self.include_processor_extensions, 'find', [], (TMP_45 = function(candidate){var self = TMP_45.$$s || this;\nif (candidate == null) candidate = nil;\n return candidate.$instance()['$handles?'](expanded_target)}, TMP_45.$$s = self, TMP_45.$$arity = 1, TMP_45))) : $a))) {\n \n self.$shift();\n ext.$process_method()['$[]'](self.document, self, expanded_target, $$($nesting, 'AttributeList').$new(attrlist).$parse());\n return true;\n } else if ($truthy($rb_ge(self.document.$safe(), $$$($$($nesting, 'SafeMode'), 'SECURE')))) {\n return self.$replace_next_line(\"\" + \"link:\" + (expanded_target) + \"[]\")\n } else if ($truthy($rb_gt((abs_maxdepth = self.maxdepth['$[]'](\"abs\")), 0))) {\n \n if ($truthy($rb_ge(self.include_stack.$size(), abs_maxdepth))) {\n \n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (self.$line_info()) + \": maximum include depth of \" + (self.maxdepth['$[]'](\"rel\")) + \" exceeded\");\n return nil;};\n parsed_attributes = (function() {if ($truthy(attrlist['$empty?']())) {\n return $hash2([], {})\n } else {\n return $$($nesting, 'AttributeList').$new(attrlist).$parse()\n }; return nil; })();\n $b = self.$resolve_include_path(expanded_target, attrlist, parsed_attributes), $a = Opal.to_ary($b), (inc_path = ($a[0] == null ? nil : $a[0])), (target_type = ($a[1] == null ? nil : $a[1])), (relpath = ($a[2] == null ? nil : $a[2])), $b;\n if ($truthy(target_type)) {\n } else {\n return inc_path\n };\n inc_linenos = (inc_tags = nil);\n if ($truthy(parsed_attributes['$empty?']())) {\n } else if ($truthy(parsed_attributes['$key?'](\"lines\"))) {\n \n inc_linenos = [];\n $send(parsed_attributes['$[]'](\"lines\").$split($$($nesting, 'DataDelimiterRx')), 'each', [], (TMP_46 = function(linedef){var self = TMP_46.$$s || this, $c, $d, TMP_47, from = nil, to = nil;\nif (linedef == null) linedef = nil;\n if ($truthy(linedef['$include?'](\"..\"))) {\n \n $d = $send(linedef.$split(\"..\", 2), 'map', [], (TMP_47 = function(it){var self = TMP_47.$$s || this;\nif (it == null) it = nil;\n return it.$to_i()}, TMP_47.$$s = self, TMP_47.$$arity = 1, TMP_47)), $c = Opal.to_ary($d), (from = ($c[0] == null ? nil : $c[0])), (to = ($c[1] == null ? nil : $c[1])), $d;\n if (to['$=='](-1)) {\n \n inc_linenos['$<<'](from);\n return inc_linenos['$<<']($rb_divide(1, 0));\n } else {\n return inc_linenos.$concat($$$('::', 'Range').$new(from, to).$to_a())\n };\n } else {\n return inc_linenos['$<<'](linedef.$to_i())\n }}, TMP_46.$$s = self, TMP_46.$$arity = 1, TMP_46));\n inc_linenos = (function() {if ($truthy(inc_linenos['$empty?']())) {\n return nil\n } else {\n return inc_linenos.$sort().$uniq()\n }; return nil; })();\n } else if ($truthy(parsed_attributes['$key?'](\"tag\"))) {\n if ($truthy((tag = parsed_attributes['$[]'](\"tag\"))['$empty?']())) {\n } else if ($truthy(tag['$start_with?'](\"!\"))) {\n if (tag['$=='](\"!\")) {\n } else {\n inc_tags = $hash(tag.$slice(1, tag.$length()), false)\n }\n } else {\n inc_tags = $hash(tag, true)\n }\n } else if ($truthy(parsed_attributes['$key?'](\"tags\"))) {\n \n inc_tags = $hash2([], {});\n $send(parsed_attributes['$[]'](\"tags\").$split($$($nesting, 'DataDelimiterRx')), 'each', [], (TMP_48 = function(tagdef){var self = TMP_48.$$s || this, $writer = nil;\nif (tagdef == null) tagdef = nil;\n if ($truthy(tagdef['$empty?']())) {\n return nil\n } else if ($truthy(tagdef['$start_with?'](\"!\"))) {\n if (tagdef['$=='](\"!\")) {\n return nil\n } else {\n \n $writer = [tagdef.$slice(1, tagdef.$length()), false];\n $send(inc_tags, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }\n } else {\n \n $writer = [tagdef, true];\n $send(inc_tags, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }}, TMP_48.$$s = self, TMP_48.$$arity = 1, TMP_48));\n if ($truthy(inc_tags['$empty?']())) {\n inc_tags = nil};};\n if ($truthy(inc_linenos)) {\n \n $a = [[], nil, 0], (inc_lines = $a[0]), (inc_offset = $a[1]), (inc_lineno = $a[2]), $a;\n \n try {\n (function(){var $brk = Opal.new_brk(); try {return $send(self, 'open', [inc_path, \"r\"], (TMP_49 = function(f){var self = TMP_49.$$s || this, TMP_50;\nif (f == null) f = nil;\n return (function(){var $brk = Opal.new_brk(); try {return $send(f, 'each_line', [], (TMP_50 = function(l){var self = TMP_50.$$s || this, $c, select = nil;\nif (l == null) l = nil;\n \n inc_lineno = $rb_plus(inc_lineno, 1);\n select = inc_linenos['$[]'](0);\n if ($truthy(($truthy($c = $$$('::', 'Float')['$==='](select)) ? select['$infinite?']() : $c))) {\n \n inc_offset = ($truthy($c = inc_offset) ? $c : inc_lineno);\n return inc_lines['$<<'](l);\n } else {\n \n if (inc_lineno['$=='](select)) {\n \n inc_offset = ($truthy($c = inc_offset) ? $c : inc_lineno);\n inc_lines['$<<'](l);\n inc_linenos.$shift();};\n if ($truthy(inc_linenos['$empty?']())) {\n \n Opal.brk(nil, $brk)\n } else {\n return nil\n };\n };}, TMP_50.$$s = self, TMP_50.$$brk = $brk, TMP_50.$$arity = 1, TMP_50))\n } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()}, TMP_49.$$s = self, TMP_49.$$brk = $brk, TMP_49.$$arity = 1, TMP_49))\n } catch (err) { if (err === $brk) { return err.$v } else { throw err } }})()\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (self.$line_info()) + \": include \" + (target_type) + \" not readable: \" + (inc_path));\n return self.$replace_next_line(\"\" + \"Unresolved directive in \" + (self.path) + \" - include::\" + (expanded_target) + \"[\" + (attrlist) + \"]\");\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };;\n self.$shift();\n if ($truthy(inc_offset)) {\n self.$push_include(inc_lines, inc_path, relpath, inc_offset, parsed_attributes)};\n } else if ($truthy(inc_tags)) {\n \n $a = [[], nil, 0, [], $$$('::', 'Set').$new(), nil], (inc_lines = $a[0]), (inc_offset = $a[1]), (inc_lineno = $a[2]), (tag_stack = $a[3]), (tags_used = $a[4]), (active_tag = $a[5]), $a;\n if ($truthy(inc_tags['$key?'](\"**\"))) {\n if ($truthy(inc_tags['$key?'](\"*\"))) {\n \n select = (base_select = inc_tags.$delete(\"**\"));\n wildcard = inc_tags.$delete(\"*\");\n } else {\n select = (base_select = (wildcard = inc_tags.$delete(\"**\")))\n }\n } else {\n \n select = (base_select = inc_tags['$value?'](true)['$!']());\n wildcard = inc_tags.$delete(\"*\");\n };\n if ($truthy(($truthy($a = (ext_idx = inc_path.$rindex(\".\"))) ? (circ_cmt = $$($nesting, 'CIRCUMFIX_COMMENTS')['$[]'](inc_path.$slice(ext_idx, inc_path.$length()))) : $a))) {\n cmt_suffix_len = $rb_minus((tag_suffix = \"\" + \"[] \" + (circ_cmt['$[]'](\"suffix\"))).$length(), 2)};\n \n try {\n $send(self, 'open', [inc_path, \"r\"], (TMP_51 = function(f){var self = TMP_51.$$s || this, TMP_52;\nif (f == null) f = nil;\n return $send(f, 'each_line', [], (TMP_52 = function(l){var self = TMP_52.$$s || this, $c, $d, $e, $f, TMP_53, tl = nil, this_tag = nil, idx = nil;\nif (l == null) l = nil;\n \n inc_lineno = $rb_plus(inc_lineno, 1);\n if ($truthy($$($nesting, 'FORCE_ENCODING'))) {\n l.$force_encoding($$$($$$('::', 'Encoding'), 'UTF_8'))};\n if ($truthy(($truthy($c = ($truthy($d = (tl = l.$chomp())['$end_with?'](\"[]\")) ? $d : ($truthy($e = ($truthy($f = tag_suffix) ? tl['$end_with?'](tag_suffix) : $f)) ? (tl = tl.$slice(0, $rb_minus(tl.$length(), cmt_suffix_len))) : $e))) ? $$($nesting, 'TagDirectiveRx')['$=~'](tl) : $c))) {\n if ($truthy((($c = $gvars['~']) === nil ? nil : $c['$[]'](1)))) {\n if ((this_tag = (($c = $gvars['~']) === nil ? nil : $c['$[]'](2)))['$=='](active_tag)) {\n \n tag_stack.$pop();\n return $d = (function() {if ($truthy(tag_stack['$empty?']())) {\n return [nil, base_select]\n } else {\n return tag_stack['$[]'](-1)\n }; return nil; })(), $c = Opal.to_ary($d), (active_tag = ($c[0] == null ? nil : $c[0])), (select = ($c[1] == null ? nil : $c[1])), $d;\n } else if ($truthy(inc_tags['$key?'](this_tag))) {\n if ($truthy((idx = $send(tag_stack, 'rindex', [], (TMP_53 = function(key, _){var self = TMP_53.$$s || this;\nif (key == null) key = nil;if (_ == null) _ = nil;\n return key['$=='](this_tag)}, TMP_53.$$s = self, TMP_53.$$arity = 2, TMP_53))))) {\n \n if (idx['$=='](0)) {\n tag_stack.$shift()\n } else {\n \n tag_stack.$delete_at(idx);\n };\n return self.$warn(\"\" + \"asciidoctor: WARNING: \" + (expanded_target) + \": line \" + (inc_lineno) + \": mismatched end tag in include: expected \" + (active_tag) + \", found \" + (this_tag));\n } else {\n return self.$warn(\"\" + \"asciidoctor: WARNING: \" + (expanded_target) + \": line \" + (inc_lineno) + \": unexpected end tag in include: \" + (this_tag))\n }\n } else {\n return nil\n }\n } else if ($truthy(inc_tags['$key?']((this_tag = (($c = $gvars['~']) === nil ? nil : $c['$[]'](2)))))) {\n \n tags_used['$<<'](this_tag);\n return tag_stack['$<<']([(active_tag = this_tag), (select = inc_tags['$[]'](this_tag))]);\n } else if ($truthy(wildcard['$nil?']()['$!']())) {\n \n select = (function() {if ($truthy(($truthy($c = active_tag) ? select['$!']() : $c))) {\n return false\n } else {\n return wildcard\n }; return nil; })();\n return tag_stack['$<<']([(active_tag = this_tag), select]);\n } else {\n return nil\n }\n } else if ($truthy(select)) {\n \n inc_offset = ($truthy($c = inc_offset) ? $c : inc_lineno);\n return inc_lines['$<<'](l);\n } else {\n return nil\n };}, TMP_52.$$s = self, TMP_52.$$arity = 1, TMP_52))}, TMP_51.$$s = self, TMP_51.$$arity = 1, TMP_51))\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (self.$line_info()) + \": include \" + (target_type) + \" not readable: \" + (inc_path));\n return self.$replace_next_line(\"\" + \"Unresolved directive in \" + (self.path) + \" - include::\" + (expanded_target) + \"[\" + (attrlist) + \"]\");\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };;\n if ($truthy((missing_tags = $rb_minus(inc_tags.$keys().$to_a(), tags_used.$to_a()))['$empty?']())) {\n } else {\n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (self.$line_info()) + \": tag\" + ((function() {if ($truthy($rb_gt(missing_tags.$size(), 1))) {\n return \"s\"\n } else {\n return nil\n }; return nil; })()) + \" '\" + ($rb_times(missing_tags, \",\")) + \"' not found in include \" + (target_type) + \": \" + (inc_path))\n };\n self.$shift();\n if ($truthy(inc_offset)) {\n self.$push_include(inc_lines, inc_path, relpath, inc_offset, parsed_attributes)};\n } else {\n \n try {\n \n inc_content = (function() {if (target_type['$=='](\"file\")) {\n \n return $$$('::', 'IO').$read(inc_path);\n } else {\n return $send(self, 'open', [inc_path, \"r\"], (TMP_54 = function(f){var self = TMP_54.$$s || this;\nif (f == null) f = nil;\n return f.$read()}, TMP_54.$$s = self, TMP_54.$$arity = 1, TMP_54))\n }; return nil; })();\n self.$shift();\n self.$push_include(inc_content, inc_path, relpath, 1, parsed_attributes);\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (self.$line_info()) + \": include \" + (target_type) + \" not readable: \" + (inc_path));\n return self.$replace_next_line(\"\" + \"Unresolved directive in \" + (self.path) + \" - include::\" + (expanded_target) + \"[\" + (attrlist) + \"]\");\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };\n };\n return true;\n } else {\n return false\n }\n }, TMP_PreprocessorReader_preprocess_include_directive_55.$$arity = 2);\n \n Opal.def(self, '$resolve_include_path', TMP_PreprocessorReader_resolve_include_path_56 = function $$resolve_include_path(target, attrlist, attributes) {\n var $a, $b, $c, self = this, inc_path = nil, relpath = nil;\n\n if ($truthy($$($nesting, 'Helpers')['$uriish?'](target))) {\n \n if ($truthy(self.document.$attributes()['$key?'](\"allow-uri-read\"))) {\n } else {\n return self.$replace_next_line(\"\" + \"link:\" + (target) + \"[\" + (attrlist) + \"]\")\n };\n if ($truthy(self.document.$attributes()['$key?'](\"cache-uri\"))) {\n if ($truthy((($b = $$$('::', 'OpenURI', 'skip_raise')) && ($a = $$$($b, 'Cache', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n $$($nesting, 'Helpers').$require_library(\"open-uri/cached\", \"open-uri-cached\")\n }\n } else if ($truthy($$$('::', 'RUBY_ENGINE_OPAL')['$!']())) {\n $$$('::', 'OpenURI')};\n return [target, \"uri\", target];\n } else {\n \n inc_path = self.document.$normalize_system_path(target, self.dir, nil, $hash2([\"target_name\"], {\"target_name\": \"include file\"}));\n if ($truthy($$$('::', 'File')['$file?'](inc_path))) {\n } else {\n \n self.$warn(\"\" + \"asciidoctor: WARNING: \" + (self.$line_info()) + \": include file not found: \" + (inc_path));\n return self.$replace_next_line(\"\" + \"Unresolved directive in \" + (self.path) + \" - include::\" + (target) + \"[\" + (attrlist) + \"]\");\n };\n relpath = (self.path_resolver = ($truthy($c = self.path_resolver) ? $c : $$($nesting, 'PathResolver').$new())).$relative_path(inc_path, self.document.$base_dir());\n return [inc_path, \"file\", relpath];\n }\n }, TMP_PreprocessorReader_resolve_include_path_56.$$arity = 3);\n \n Opal.def(self, '$push_include', TMP_PreprocessorReader_push_include_57 = function $$push_include(data, file, path, lineno, attributes) {\n var self = this, depth = nil, old_leveloffset = nil;\n\n if (file == null) {\n file = nil;\n }\n if (path == null) {\n path = nil;\n }\n if (lineno == null) {\n lineno = 1;\n }\n if (attributes == null) {\n attributes = $hash2([], {});\n }\n \n self.include_stack['$<<']([self.lines, self.file, self.dir, self.path, self.lineno, self.maxdepth, self.process_lines]);\n if ($truthy(file)) {\n \n self.file = file;\n self.dir = $$($nesting, 'File').$dirname(file);\n self.process_lines = $$($nesting, 'ASCIIDOC_EXTENSIONS')['$[]']($$$('::', 'File').$extname(file));\n } else {\n \n self.file = nil;\n self.dir = \".\";\n self.process_lines = true;\n };\n if ($truthy(path)) {\n self.includes['$<<']($$($nesting, 'Helpers').$rootname((self.path = path)))\n } else {\n self.path = \"<stdin>\"\n };\n self.lineno = lineno;\n if ($truthy(attributes['$key?'](\"depth\"))) {\n \n depth = attributes['$[]'](\"depth\").$to_i();\n if ($truthy($rb_le(depth, 0))) {\n depth = 1};\n self.maxdepth = $hash2([\"abs\", \"rel\"], {\"abs\": $rb_plus($rb_minus(self.include_stack.$size(), 1), depth), \"rel\": depth});};\n if ($truthy((self.lines = self.$prepare_lines(data, $hash2([\"normalize\", \"condense\", \"indent\"], {\"normalize\": true, \"condense\": false, \"indent\": attributes['$[]'](\"indent\")})))['$empty?']())) {\n self.$pop_include()\n } else {\n \n if ($truthy(attributes['$key?'](\"leveloffset\"))) {\n \n self.lines.$unshift(\"\");\n self.lines.$unshift(\"\" + \":leveloffset: \" + (attributes['$[]'](\"leveloffset\")));\n self.lines['$<<'](\"\");\n if ($truthy((old_leveloffset = self.document.$attr(\"leveloffset\")))) {\n self.lines['$<<'](\"\" + \":leveloffset: \" + (old_leveloffset))\n } else {\n self.lines['$<<'](\":leveloffset!:\")\n };\n self.lineno = $rb_minus(self.lineno, 2);};\n self.look_ahead = 0;\n };\n return self;\n }, TMP_PreprocessorReader_push_include_57.$$arity = -2);\n \n Opal.def(self, '$pop_include', TMP_PreprocessorReader_pop_include_58 = function $$pop_include() {\n var $a, $b, self = this;\n\n if ($truthy($rb_gt(self.include_stack.$size(), 0))) {\n \n $b = self.include_stack.$pop(), $a = Opal.to_ary($b), (self.lines = ($a[0] == null ? nil : $a[0])), (self.file = ($a[1] == null ? nil : $a[1])), (self.dir = ($a[2] == null ? nil : $a[2])), (self.path = ($a[3] == null ? nil : $a[3])), (self.lineno = ($a[4] == null ? nil : $a[4])), (self.maxdepth = ($a[5] == null ? nil : $a[5])), (self.process_lines = ($a[6] == null ? nil : $a[6])), $b;\n self.look_ahead = 0;\n return nil;\n } else {\n return nil\n }\n }, TMP_PreprocessorReader_pop_include_58.$$arity = 0);\n \n Opal.def(self, '$include_depth', TMP_PreprocessorReader_include_depth_59 = function $$include_depth() {\n var self = this;\n\n return self.include_stack.$size()\n }, TMP_PreprocessorReader_include_depth_59.$$arity = 0);\n \n Opal.def(self, '$exceeded_max_depth?', TMP_PreprocessorReader_exceeded_max_depth$q_60 = function() {\n var $a, self = this, abs_maxdepth = nil;\n\n if ($truthy(($truthy($a = $rb_gt((abs_maxdepth = self.maxdepth['$[]'](\"abs\")), 0)) ? $rb_ge(self.include_stack.$size(), abs_maxdepth) : $a))) {\n return self.maxdepth['$[]'](\"rel\")\n } else {\n return false\n }\n }, TMP_PreprocessorReader_exceeded_max_depth$q_60.$$arity = 0);\n \n Opal.def(self, '$shift', TMP_PreprocessorReader_shift_61 = function $$shift() {\n var self = this, $iter = TMP_PreprocessorReader_shift_61.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_PreprocessorReader_shift_61.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if ($truthy(self.unescape_next_line)) {\n \n self.unescape_next_line = false;\n return $send(self, Opal.find_super_dispatcher(self, 'shift', TMP_PreprocessorReader_shift_61, false), $zuper, $iter)['$[]']($range(1, -1, false));\n } else {\n return $send(self, Opal.find_super_dispatcher(self, 'shift', TMP_PreprocessorReader_shift_61, false), $zuper, $iter)\n }\n }, TMP_PreprocessorReader_shift_61.$$arity = 0);\n \n Opal.def(self, '$skip_front_matter!', TMP_PreprocessorReader_skip_front_matter$B_62 = function(data, increment_linenos) {\n var $a, $b, self = this, front_matter = nil, original_data = nil;\n\n if (increment_linenos == null) {\n increment_linenos = true;\n }\n \n front_matter = nil;\n if (data['$[]'](0)['$=='](\"---\")) {\n \n original_data = data.$dup();\n front_matter = [];\n data.$shift();\n if ($truthy(increment_linenos)) {\n self.lineno = $rb_plus(self.lineno, 1)};\n while ($truthy(($truthy($b = data['$empty?']()['$!']()) ? data['$[]'](0)['$!='](\"---\") : $b))) {\n \n front_matter['$<<'](data.$shift());\n if ($truthy(increment_linenos)) {\n self.lineno = $rb_plus(self.lineno, 1)};\n };\n if ($truthy(data['$empty?']())) {\n \n $send(data, 'unshift', Opal.to_a(original_data));\n if ($truthy(increment_linenos)) {\n self.lineno = 0};\n front_matter = nil;\n } else {\n \n data.$shift();\n if ($truthy(increment_linenos)) {\n self.lineno = $rb_plus(self.lineno, 1)};\n };};\n return front_matter;\n }, TMP_PreprocessorReader_skip_front_matter$B_62.$$arity = -2);\n \n Opal.def(self, '$resolve_expr_val', TMP_PreprocessorReader_resolve_expr_val_63 = function $$resolve_expr_val(val) {\n var $a, $b, self = this, quoted = nil;\n\n \n if ($truthy(($truthy($a = ($truthy($b = val['$start_with?'](\"\\\"\")) ? val['$end_with?'](\"\\\"\") : $b)) ? $a : ($truthy($b = val['$start_with?'](\"'\")) ? val['$end_with?'](\"'\") : $b)))) {\n \n quoted = true;\n val = val['$[]']($range(1, -1, true));\n } else {\n quoted = false\n };\n if ($truthy(val['$include?']($$($nesting, 'ATTR_REF_HEAD')))) {\n val = self.document.$sub_attributes(val, $hash2([\"attribute_missing\"], {\"attribute_missing\": \"drop\"}))};\n if ($truthy(quoted)) {\n return val\n } else if ($truthy(val['$empty?']())) {\n return nil\n } else if (val['$=='](\"true\")) {\n return true\n } else if (val['$=='](\"false\")) {\n return false\n } else if ($truthy(val.$rstrip()['$empty?']())) {\n return \" \"\n } else if ($truthy(val['$include?'](\".\"))) {\n return val.$to_f()\n } else {\n return val.$to_i()\n };\n }, TMP_PreprocessorReader_resolve_expr_val_63.$$arity = 1);\n \n Opal.def(self, '$include_processors?', TMP_PreprocessorReader_include_processors$q_64 = function() {\n var $a, self = this;\n\n if ($truthy(self.include_processor_extensions['$nil?']())) {\n if ($truthy(($truthy($a = self.document['$extensions?']()) ? self.document.$extensions()['$include_processors?']() : $a))) {\n return (self.include_processor_extensions = self.document.$extensions().$include_processors())['$!']()['$!']()\n } else {\n return (self.include_processor_extensions = false)\n }\n } else {\n return self.include_processor_extensions['$!='](false)\n }\n }, TMP_PreprocessorReader_include_processors$q_64.$$arity = 0);\n return (Opal.def(self, '$to_s', TMP_PreprocessorReader_to_s_66 = function $$to_s() {\n var TMP_65, self = this;\n\n return \"\" + \"#<\" + (self.$class()) + \"@\" + (self.$object_id()) + \" {path: \" + (self.path.$inspect()) + \", line #: \" + (self.lineno) + \", include depth: \" + (self.include_stack.$size()) + \", include stack: [\" + ($rb_times($send(self.include_stack, 'map', [], (TMP_65 = function(inc){var self = TMP_65.$$s || this;\nif (inc == null) inc = nil;\n return inc.$to_s()}, TMP_65.$$s = self, TMP_65.$$arity = 1, TMP_65)), \", \")) + \"]}>\"\n }, TMP_PreprocessorReader_to_s_66.$$arity = 0), nil) && 'to_s';\n })($nesting[0], $$($nesting, 'Reader'), $nesting);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/section\"] = function(Opal) {\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$attr_accessor', '$attr_reader', '$+', '$level', '$>', '$==', '$context', '$special', '$generate_id', '$title', '$sectnum', '$reftext', '$!', '$empty?', '$===', '$sprintf', '$sub_quotes', '$compat_mode', '$[]', '$attributes', '$enumerate_section', '$class', '$object_id', '$inspect', '$size', '$gsub', '$downcase', '$tr_s', '$end_with?', '$chop', '$start_with?', '$slice', '$length', '$key?', '$catalog', '$unique_id_start_index']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Section(){};\n var self = $Section = $klass($base, $super, 'Section', $Section);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Section_initialize_1, TMP_Section_generate_id_2, TMP_Section_sectnum_3, TMP_Section_xreftext_4, TMP_Section_$lt$lt_5, TMP_Section_to_s_6, TMP_Section_generate_id_7;\n\n def.level = def.document = def.parent = def.number = def.numbered = def.sectname = def.title = def.blocks = nil;\n \n self.$attr_accessor(\"index\");\n self.$attr_accessor(\"sectname\");\n self.$attr_accessor(\"special\");\n self.$attr_accessor(\"numbered\");\n self.$attr_reader(\"caption\");\n \n Opal.def(self, '$initialize', TMP_Section_initialize_1 = function $$initialize(parent, level, numbered, opts) {\n var $a, $b, self = this, $iter = TMP_Section_initialize_1.$$p, $yield = $iter || nil;\n\n if (parent == null) {\n parent = nil;\n }\n if (level == null) {\n level = nil;\n }\n if (numbered == null) {\n numbered = true;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n if ($iter) TMP_Section_initialize_1.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Section_initialize_1, false), [parent, \"section\", opts], null);\n self.level = (function() {if ($truthy(level)) {\n return level\n } else {\n \n if ($truthy(parent)) {\n \n return $rb_plus(parent.$level(), 1);\n } else {\n return 1\n };\n }; return nil; })();\n self.numbered = ($truthy($a = numbered) ? $rb_gt(self.level, 0) : $a);\n self.special = ($truthy($a = ($truthy($b = parent) ? parent.$context()['$=='](\"section\") : $b)) ? parent.$special() : $a);\n self.index = 0;\n return (self.number = 1);\n }, TMP_Section_initialize_1.$$arity = -1);\n Opal.alias(self, \"name\", \"title\");\n \n Opal.def(self, '$generate_id', TMP_Section_generate_id_2 = function $$generate_id() {\n var self = this;\n\n return $$($nesting, 'Section').$generate_id(self.$title(), self.document)\n }, TMP_Section_generate_id_2.$$arity = 0);\n \n Opal.def(self, '$sectnum', TMP_Section_sectnum_3 = function $$sectnum(delimiter, append) {\n var $a, $b, $c, self = this;\n\n if (delimiter == null) {\n delimiter = \".\";\n }\n if (append == null) {\n append = nil;\n }\n \n append = ($truthy($a = append) ? $a : (function() {if (append['$=='](false)) {\n return \"\"\n } else {\n return delimiter\n }; return nil; })());\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = self.level) ? $rb_gt(self.level, 1) : $c)) ? self.parent : $b)) ? self.parent.$context()['$=='](\"section\") : $a))) {\n return \"\" + (self.parent.$sectnum(delimiter)) + (self.number) + (append)\n } else {\n return \"\" + (self.number) + (append)\n };\n }, TMP_Section_sectnum_3.$$arity = -1);\n \n Opal.def(self, '$xreftext', TMP_Section_xreftext_4 = function $$xreftext(xrefstyle) {\n var $a, self = this, val = nil, $case = nil, type = nil, quoted_title = nil, signifier = nil;\n\n if (xrefstyle == null) {\n xrefstyle = nil;\n }\n if ($truthy(($truthy($a = (val = self.$reftext())) ? val['$empty?']()['$!']() : $a))) {\n return val\n } else if ($truthy(xrefstyle)) {\n if ($truthy(self.numbered)) {\n return (function() {$case = xrefstyle;\n if (\"full\"['$===']($case)) {\n if ($truthy(($truthy($a = (type = self.sectname)['$=='](\"chapter\")) ? $a : type['$=='](\"appendix\")))) {\n quoted_title = self.$sprintf(self.$sub_quotes(\"_%s_\"), self.$title())\n } else {\n quoted_title = self.$sprintf(self.$sub_quotes((function() {if ($truthy(self.document.$compat_mode())) {\n return \"``%s''\"\n } else {\n return \"\\\"`%s`\\\"\"\n }; return nil; })()), self.$title())\n };\n if ($truthy((signifier = self.document.$attributes()['$[]'](\"\" + (type) + \"-refsig\")))) {\n return \"\" + (signifier) + \" \" + (self.$sectnum(\".\", \",\")) + \" \" + (quoted_title)\n } else {\n return \"\" + (self.$sectnum(\".\", \",\")) + \" \" + (quoted_title)\n };}\n else if (\"short\"['$===']($case)) {if ($truthy((signifier = self.document.$attributes()['$[]'](\"\" + (self.sectname) + \"-refsig\")))) {\n return \"\" + (signifier) + \" \" + (self.$sectnum(\".\", \"\"))\n } else {\n return self.$sectnum(\".\", \"\")\n }}\n else {if ($truthy(($truthy($a = (type = self.sectname)['$=='](\"chapter\")) ? $a : type['$=='](\"appendix\")))) {\n \n return self.$sprintf(self.$sub_quotes(\"_%s_\"), self.$title());\n } else {\n return self.$title()\n }}})()\n } else if ($truthy(($truthy($a = (type = self.sectname)['$=='](\"chapter\")) ? $a : type['$=='](\"appendix\")))) {\n \n return self.$sprintf(self.$sub_quotes(\"_%s_\"), self.$title());\n } else {\n return self.$title()\n }\n } else {\n return self.$title()\n }\n }, TMP_Section_xreftext_4.$$arity = -1);\n \n Opal.def(self, '$<<', TMP_Section_$lt$lt_5 = function(block) {\n var self = this, $iter = TMP_Section_$lt$lt_5.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Section_$lt$lt_5.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n if (block.$context()['$=='](\"section\")) {\n self.$enumerate_section(block)};\n return $send(self, Opal.find_super_dispatcher(self, '<<', TMP_Section_$lt$lt_5, false), $zuper, $iter);\n }, TMP_Section_$lt$lt_5.$$arity = 1);\n \n Opal.def(self, '$to_s', TMP_Section_to_s_6 = function $$to_s() {\n var self = this, $iter = TMP_Section_to_s_6.$$p, $yield = $iter || nil, formal_title = nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Section_to_s_6.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n if ($truthy(self.title)) {\n \n formal_title = (function() {if ($truthy(self.numbered)) {\n return \"\" + (self.$sectnum()) + \" \" + (self.title)\n } else {\n return self.title\n }; return nil; })();\n return \"\" + \"#<\" + (self.$class()) + \"@\" + (self.$object_id()) + \" {level: \" + (self.level) + \", title: \" + (formal_title.$inspect()) + \", blocks: \" + (self.blocks.$size()) + \"}>\";\n } else {\n return $send(self, Opal.find_super_dispatcher(self, 'to_s', TMP_Section_to_s_6, false), $zuper, $iter)\n }\n }, TMP_Section_to_s_6.$$arity = 0);\n return (Opal.defs(self, '$generate_id', TMP_Section_generate_id_7 = function $$generate_id(title, document) {\n var $a, self = this, attrs = nil, sep = nil, pre = nil, gen_id = nil, ids = nil, cnt = nil, candidate_id = nil;\n\n \n attrs = document.$attributes();\n sep = ($truthy($a = attrs['$[]'](\"idseparator\")) ? $a : \"_\");\n pre = ($truthy($a = attrs['$[]'](\"idprefix\")) ? $a : \"_\");\n gen_id = \"\" + (pre) + (title.$downcase().$gsub($$($nesting, 'InvalidSectionIdCharsRx'), sep));\n if ($truthy(sep['$empty?']())) {\n } else {\n \n gen_id = gen_id.$tr_s(sep, sep);\n if ($truthy(gen_id['$end_with?'](sep))) {\n gen_id = gen_id.$chop()};\n if ($truthy(pre['$empty?']())) {\n while ($truthy(gen_id['$start_with?'](sep))) {\n gen_id = gen_id.$slice(1, gen_id.$length())\n }};\n };\n if ($truthy(document.$catalog()['$[]'](\"ids\")['$key?'](gen_id))) {\n \n $a = [document.$catalog()['$[]'](\"ids\"), $$($nesting, 'Compliance').$unique_id_start_index()], (ids = $a[0]), (cnt = $a[1]), $a;\n while ($truthy(ids['$key?']((candidate_id = \"\" + (gen_id) + (sep) + (cnt))))) {\n cnt = $rb_plus(cnt, 1)\n };\n return candidate_id;\n } else {\n return gen_id\n };\n }, TMP_Section_generate_id_7.$$arity = 2), nil) && 'generate_id';\n })($nesting[0], $$($nesting, 'AbstractBlock'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/stylesheets\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send;\n\n Opal.add_stubs(['$join', '$new', '$chomp', '$read', '$primary_stylesheet_data', '$write', '$primary_stylesheet_name', '$coderay_stylesheet_data', '$coderay_stylesheet_name', '$load_pygments', '$[]', '$sub', '$css', '$[]=', '$-', '$pygments_stylesheet_data', '$pygments_stylesheet_name', '$!', '$nil?', '$require_library']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Stylesheets(){};\n var self = $Stylesheets = $klass($base, $super, 'Stylesheets', $Stylesheets);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Stylesheets_instance_1, TMP_Stylesheets_primary_stylesheet_name_2, TMP_Stylesheets_primary_stylesheet_data_3, TMP_Stylesheets_embed_primary_stylesheet_4, TMP_Stylesheets_write_primary_stylesheet_5, TMP_Stylesheets_coderay_stylesheet_name_6, TMP_Stylesheets_coderay_stylesheet_data_7, TMP_Stylesheets_embed_coderay_stylesheet_8, TMP_Stylesheets_write_coderay_stylesheet_9, TMP_Stylesheets_pygments_stylesheet_name_10, TMP_Stylesheets_pygments_stylesheet_data_11, TMP_Stylesheets_embed_pygments_stylesheet_12, TMP_Stylesheets_write_pygments_stylesheet_13, TMP_Stylesheets_load_pygments_14;\n\n def.primary_stylesheet_data = def.coderay_stylesheet_data = def.pygments_stylesheet_data = nil;\n \n Opal.const_set($nesting[0], 'DEFAULT_STYLESHEET_NAME', \"asciidoctor.css\");\n Opal.const_set($nesting[0], 'DEFAULT_PYGMENTS_STYLE', \"default\");\n Opal.const_set($nesting[0], 'STYLESHEETS_DATA_PATH', $$$('::', 'File').$join($$($nesting, 'DATA_PATH'), \"stylesheets\"));\n self.__instance__ = self.$new();\n Opal.defs(self, '$instance', TMP_Stylesheets_instance_1 = function $$instance() {\n var self = this;\n if (self.__instance__ == null) self.__instance__ = nil;\n\n return self.__instance__\n }, TMP_Stylesheets_instance_1.$$arity = 0);\n \n Opal.def(self, '$primary_stylesheet_name', TMP_Stylesheets_primary_stylesheet_name_2 = function $$primary_stylesheet_name() {\n var self = this;\n\n return $$($nesting, 'DEFAULT_STYLESHEET_NAME')\n }, TMP_Stylesheets_primary_stylesheet_name_2.$$arity = 0);\n \n Opal.def(self, '$primary_stylesheet_data', TMP_Stylesheets_primary_stylesheet_data_3 = function $$primary_stylesheet_data() {\n\nvar File = Opal.const_get_relative([], \"File\");\nvar stylesheetsPath;\nif (Opal.const_get_relative([], \"JAVASCRIPT_PLATFORM\")[\"$==\"](\"node\")) {\n if (File.$basename(__dirname) === \"node\" && File.$basename(File.$dirname(__dirname)) === \"dist\") {\n stylesheetsPath = File.$join(File.$dirname(__dirname), \"css\");\n } else {\n stylesheetsPath = File.$join(__dirname, \"css\");\n }\n} else if (Opal.const_get_relative([], \"JAVASCRIPT_ENGINE\")[\"$==\"](\"nashorn\")) {\n if (File.$basename(__DIR__) === \"nashorn\" && File.$basename(File.$dirname(__DIR__)) === \"dist\") {\n stylesheetsPath = File.$join(File.$dirname(__DIR__), \"css\");\n } else {\n stylesheetsPath = File.$join(__DIR__, \"css\");\n }\n} else {\n stylesheetsPath = \"css\";\n}\nreturn ((($a = self.primary_stylesheet_data) !== false && $a !== nil && $a != null) ? $a : self.primary_stylesheet_data = Opal.const_get_relative([], \"IO\").$read(File.$join(stylesheetsPath, \"asciidoctor.css\")).$chomp());\n \n }, TMP_Stylesheets_primary_stylesheet_data_3.$$arity = 0);\n \n Opal.def(self, '$embed_primary_stylesheet', TMP_Stylesheets_embed_primary_stylesheet_4 = function $$embed_primary_stylesheet() {\n var self = this;\n\n return \"\" + \"<style>\\n\" + (self.$primary_stylesheet_data()) + \"\\n\" + \"</style>\"\n }, TMP_Stylesheets_embed_primary_stylesheet_4.$$arity = 0);\n \n Opal.def(self, '$write_primary_stylesheet', TMP_Stylesheets_write_primary_stylesheet_5 = function $$write_primary_stylesheet(target_dir) {\n var self = this;\n\n if (target_dir == null) {\n target_dir = \".\";\n }\n return $$$('::', 'IO').$write($$$('::', 'File').$join(target_dir, self.$primary_stylesheet_name()), self.$primary_stylesheet_data())\n }, TMP_Stylesheets_write_primary_stylesheet_5.$$arity = -1);\n \n Opal.def(self, '$coderay_stylesheet_name', TMP_Stylesheets_coderay_stylesheet_name_6 = function $$coderay_stylesheet_name() {\n var self = this;\n\n return \"coderay-asciidoctor.css\"\n }, TMP_Stylesheets_coderay_stylesheet_name_6.$$arity = 0);\n \n Opal.def(self, '$coderay_stylesheet_data', TMP_Stylesheets_coderay_stylesheet_data_7 = function $$coderay_stylesheet_data() {\n var $a, self = this;\n\n return (self.coderay_stylesheet_data = ($truthy($a = self.coderay_stylesheet_data) ? $a : $$$('::', 'IO').$read($$$('::', 'File').$join($$($nesting, 'STYLESHEETS_DATA_PATH'), \"coderay-asciidoctor.css\")).$chomp()))\n }, TMP_Stylesheets_coderay_stylesheet_data_7.$$arity = 0);\n \n Opal.def(self, '$embed_coderay_stylesheet', TMP_Stylesheets_embed_coderay_stylesheet_8 = function $$embed_coderay_stylesheet() {\n var self = this;\n\n return \"\" + \"<style>\\n\" + (self.$coderay_stylesheet_data()) + \"\\n\" + \"</style>\"\n }, TMP_Stylesheets_embed_coderay_stylesheet_8.$$arity = 0);\n \n Opal.def(self, '$write_coderay_stylesheet', TMP_Stylesheets_write_coderay_stylesheet_9 = function $$write_coderay_stylesheet(target_dir) {\n var self = this;\n\n if (target_dir == null) {\n target_dir = \".\";\n }\n return $$$('::', 'IO').$write($$$('::', 'File').$join(target_dir, self.$coderay_stylesheet_name()), self.$coderay_stylesheet_data())\n }, TMP_Stylesheets_write_coderay_stylesheet_9.$$arity = -1);\n \n Opal.def(self, '$pygments_stylesheet_name', TMP_Stylesheets_pygments_stylesheet_name_10 = function $$pygments_stylesheet_name(style) {\n var $a, self = this;\n\n if (style == null) {\n style = nil;\n }\n return \"\" + \"pygments-\" + (($truthy($a = style) ? $a : $$($nesting, 'DEFAULT_PYGMENTS_STYLE'))) + \".css\"\n }, TMP_Stylesheets_pygments_stylesheet_name_10.$$arity = -1);\n \n Opal.def(self, '$pygments_stylesheet_data', TMP_Stylesheets_pygments_stylesheet_data_11 = function $$pygments_stylesheet_data(style) {\n var $a, $b, self = this, $writer = nil;\n\n if (style == null) {\n style = nil;\n }\n if ($truthy(self.$load_pygments())) {\n return ($truthy($a = (self.pygments_stylesheet_data = ($truthy($b = self.pygments_stylesheet_data) ? $b : $hash2([], {})))['$[]'](($truthy($b = style) ? $b : $$($nesting, 'DEFAULT_PYGMENTS_STYLE')))) ? $a : (($writer = [($truthy($b = style) ? $b : $$($nesting, 'DEFAULT_PYGMENTS_STYLE')), $$$('::', 'Pygments').$css(\".listingblock .pygments\", $hash2([\"classprefix\", \"style\"], {\"classprefix\": \"tok-\", \"style\": ($truthy($b = style) ? $b : $$($nesting, 'DEFAULT_PYGMENTS_STYLE'))})).$sub(\".listingblock .pygments {\", \".listingblock .pygments, .listingblock .pygments code {\")]), $send((self.pygments_stylesheet_data = ($truthy($b = self.pygments_stylesheet_data) ? $b : $hash2([], {}))), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n } else {\n return \"/* Pygments styles disabled. Pygments is not available. */\"\n }\n }, TMP_Stylesheets_pygments_stylesheet_data_11.$$arity = -1);\n \n Opal.def(self, '$embed_pygments_stylesheet', TMP_Stylesheets_embed_pygments_stylesheet_12 = function $$embed_pygments_stylesheet(style) {\n var self = this;\n\n if (style == null) {\n style = nil;\n }\n return \"\" + \"<style>\\n\" + (self.$pygments_stylesheet_data(style)) + \"\\n\" + \"</style>\"\n }, TMP_Stylesheets_embed_pygments_stylesheet_12.$$arity = -1);\n \n Opal.def(self, '$write_pygments_stylesheet', TMP_Stylesheets_write_pygments_stylesheet_13 = function $$write_pygments_stylesheet(target_dir, style) {\n var self = this;\n\n if (target_dir == null) {\n target_dir = \".\";\n }\n if (style == null) {\n style = nil;\n }\n return $$$('::', 'IO').$write($$$('::', 'File').$join(target_dir, self.$pygments_stylesheet_name(style)), self.$pygments_stylesheet_data(style))\n }, TMP_Stylesheets_write_pygments_stylesheet_13.$$arity = -1);\n return (Opal.def(self, '$load_pygments', TMP_Stylesheets_load_pygments_14 = function $$load_pygments() {\n var $a, self = this;\n\n if ($truthy((($a = $$$('::', 'Pygments', 'skip_raise')) ? 'constant' : nil))) {\n return true\n } else {\n return $$($nesting, 'Helpers').$require_library(\"pygments\", \"pygments.rb\", \"ignore\")['$nil?']()['$!']()\n }\n }, TMP_Stylesheets_load_pygments_14.$$arity = 0), nil) && 'load_pygments';\n })($nesting[0], null, $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/table\"] = function(Opal) {\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_divide(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs / rhs : lhs['$/'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2, $range = Opal.range;\n\n Opal.add_stubs(['$attr_accessor', '$attr_reader', '$new', '$key?', '$[]', '$>', '$to_i', '$<', '$==', '$[]=', '$-', '$attributes', '$round', '$*', '$/', '$to_f', '$empty?', '$body', '$each', '$+', '$<<', '$size', '$assign_column_widths', '$**', '$assign_width', '$shift', '$style=', '$head=', '$pop', '$foot=', '$update_attributes', '$parent', '$header_row?', '$table', '$delete', '$!', '$rstrip', '$start_with?', '$slice', '$length', '$strip', '$split', '$include?', '$readlines', '$unshift', '$nil?', '$apply_subs', '$convert', '$map', '$text', '$to_s', '$to_set', '$cursor', '$nested?', '$document', '$warn', '$prev_line_info', '$nil_or_empty?', '$escape', '$columns', '$match', '$pre_match', '$post_match', '$chop', '$buffer', '$end_with?', '$gsub', '$push_cellspec', '$cell_open?', '$close_cell', '$advance', '$take_cellspec', '$line_info', '$squeeze', '$upto', '$times', '$rowspan', '$activate_rowspan', '$colspan', '$end_of_row?', '$!=', '$close_row', '$rows', '$effective_column_visits']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n (function($base, $super, $parent_nesting) {\n function $Table(){};\n var self = $Table = $klass($base, $super, 'Table', $Table);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Table_initialize_3, TMP_Table_header_row$q_4, TMP_Table_create_columns_6, TMP_Table_assign_column_widths_9, TMP_Table_partition_header_footer_11;\n\n def.attributes = def.document = def.has_header_option = def.rows = def.columns = nil;\n \n (function($base, $super, $parent_nesting) {\n function $Rows(){};\n var self = $Rows = $klass($base, $super, 'Rows', $Rows);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Rows_initialize_1, TMP_Rows_by_section_2;\n\n def.head = def.foot = def.body = nil;\n \n self.$attr_accessor(\"head\", \"foot\", \"body\");\n \n Opal.def(self, '$initialize', TMP_Rows_initialize_1 = function $$initialize(head, foot, body) {\n var self = this;\n\n if (head == null) {\n head = [];\n }\n if (foot == null) {\n foot = [];\n }\n if (body == null) {\n body = [];\n }\n \n self.head = head;\n self.foot = foot;\n return (self.body = body);\n }, TMP_Rows_initialize_1.$$arity = -1);\n Opal.alias(self, \"[]\", \"send\");\n return (Opal.def(self, '$by_section', TMP_Rows_by_section_2 = function $$by_section() {\n var self = this;\n\n return [[\"head\", self.head], [\"foot\", self.foot], [\"body\", self.body]]\n }, TMP_Rows_by_section_2.$$arity = 0), nil) && 'by_section';\n })($nesting[0], null, $nesting);\n self.$attr_accessor(\"columns\");\n self.$attr_accessor(\"rows\");\n self.$attr_accessor(\"has_header_option\");\n self.$attr_reader(\"caption\");\n \n Opal.def(self, '$initialize', TMP_Table_initialize_3 = function $$initialize(parent, attributes) {\n var $a, $b, self = this, $iter = TMP_Table_initialize_3.$$p, $yield = $iter || nil, pcwidth = nil, pcwidth_intval = nil, $writer = nil;\n\n if ($iter) TMP_Table_initialize_3.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Table_initialize_3, false), [parent, \"table\"], null);\n self.rows = $$($nesting, 'Rows').$new();\n self.columns = [];\n self.has_header_option = attributes['$key?'](\"header-option\");\n if ($truthy((pcwidth = attributes['$[]'](\"width\")))) {\n if ($truthy(($truthy($a = $rb_gt((pcwidth_intval = pcwidth.$to_i()), 100)) ? $a : $rb_lt(pcwidth_intval, 1)))) {\n if ($truthy((($a = pcwidth_intval['$=='](0)) ? ($truthy($b = pcwidth['$=='](\"0\")) ? $b : pcwidth['$=='](\"0%\")) : pcwidth_intval['$=='](0)))) {\n } else {\n pcwidth_intval = 100\n }}\n } else {\n pcwidth_intval = 100\n };\n \n $writer = [\"tablepcwidth\", pcwidth_intval];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(self.document.$attributes()['$key?'](\"pagewidth\"))) {\n ($truthy($a = self.attributes['$[]'](\"tableabswidth\")) ? $a : (($writer = [\"tableabswidth\", $rb_times($rb_divide(self.attributes['$[]'](\"tablepcwidth\").$to_f(), 100), self.document.$attributes()['$[]'](\"pagewidth\")).$round()]), $send(self.attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))};\n if ($truthy(attributes['$key?'](\"rotate-option\"))) {\n \n $writer = [\"orientation\", \"landscape\"];\n $send(attributes, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return nil\n };\n }, TMP_Table_initialize_3.$$arity = 2);\n \n Opal.def(self, '$header_row?', TMP_Table_header_row$q_4 = function() {\n var $a, self = this;\n\n return ($truthy($a = self.has_header_option) ? self.rows.$body()['$empty?']() : $a)\n }, TMP_Table_header_row$q_4.$$arity = 0);\n \n Opal.def(self, '$create_columns', TMP_Table_create_columns_6 = function $$create_columns(colspecs) {\n var TMP_5, self = this, cols = nil, width_base = nil, $writer = nil;\n\n \n cols = [];\n width_base = 0;\n $send(colspecs, 'each', [], (TMP_5 = function(colspec){var self = TMP_5.$$s || this;\nif (colspec == null) colspec = nil;\n \n width_base = $rb_plus(width_base, colspec['$[]'](\"width\"));\n return cols['$<<']($$($nesting, 'Column').$new(self, cols.$size(), colspec));}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5));\n if ($truthy((self.columns = cols)['$empty?']())) {\n } else {\n \n \n $writer = [\"colcount\", cols.$size()];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n self.$assign_column_widths((function() {if (width_base['$=='](0)) {\n return nil\n } else {\n return width_base\n }; return nil; })());\n };\n return nil;\n }, TMP_Table_create_columns_6.$$arity = 1);\n \n Opal.def(self, '$assign_column_widths', TMP_Table_assign_column_widths_9 = function $$assign_column_widths(width_base) {\n var TMP_7, TMP_8, self = this, pf = nil, total_width = nil, col_pcwidth = nil;\n\n if (width_base == null) {\n width_base = nil;\n }\n \n pf = (10)['$**'](4);\n total_width = (col_pcwidth = 0);\n if ($truthy(width_base)) {\n $send(self.columns, 'each', [], (TMP_7 = function(col){var self = TMP_7.$$s || this;\nif (col == null) col = nil;\n return (total_width = $rb_plus(total_width, (col_pcwidth = col.$assign_width(nil, width_base, pf))))}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7))\n } else {\n \n col_pcwidth = $rb_divide($rb_divide($rb_times(100, pf), self.columns.$size()).$to_i(), pf);\n if (col_pcwidth.$to_i()['$=='](col_pcwidth)) {\n col_pcwidth = col_pcwidth.$to_i()};\n $send(self.columns, 'each', [], (TMP_8 = function(col){var self = TMP_8.$$s || this;\nif (col == null) col = nil;\n return (total_width = $rb_plus(total_width, col.$assign_width(col_pcwidth)))}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8));\n };\n if (total_width['$=='](100)) {\n } else {\n self.columns['$[]'](-1).$assign_width($rb_divide($rb_times($rb_plus($rb_minus(100, total_width), col_pcwidth), pf).$round(), pf))\n };\n return nil;\n }, TMP_Table_assign_column_widths_9.$$arity = -1);\n return (Opal.def(self, '$partition_header_footer', TMP_Table_partition_header_footer_11 = function $$partition_header_footer(attrs) {\n var $a, TMP_10, self = this, $writer = nil, num_body_rows = nil, head = nil;\n\n \n \n $writer = [\"rowcount\", self.rows.$body().$size()];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n num_body_rows = self.rows.$body().$size();\n if ($truthy(($truthy($a = $rb_gt(num_body_rows, 0)) ? self.has_header_option : $a))) {\n \n head = self.rows.$body().$shift();\n num_body_rows = $rb_minus(num_body_rows, 1);\n $send(head, 'each', [], (TMP_10 = function(c){var self = TMP_10.$$s || this;\nif (c == null) c = nil;\n \n $writer = [nil];\n $send(c, 'style=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10));\n \n $writer = [[head]];\n $send(self.rows, 'head=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n if ($truthy(($truthy($a = $rb_gt(num_body_rows, 0)) ? attrs['$key?'](\"footer-option\") : $a))) {\n \n $writer = [[self.rows.$body().$pop()]];\n $send(self.rows, 'foot=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return nil;\n }, TMP_Table_partition_header_footer_11.$$arity = 1), nil) && 'partition_header_footer';\n })($nesting[0], $$($nesting, 'AbstractBlock'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $Column(){};\n var self = $Column = $klass($base, $super, 'Column', $Column);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Column_initialize_12, TMP_Column_assign_width_13;\n\n def.attributes = nil;\n \n self.$attr_accessor(\"style\");\n \n Opal.def(self, '$initialize', TMP_Column_initialize_12 = function $$initialize(table, index, attributes) {\n var $a, self = this, $iter = TMP_Column_initialize_12.$$p, $yield = $iter || nil, $writer = nil;\n\n if (attributes == null) {\n attributes = $hash2([], {});\n }\n if ($iter) TMP_Column_initialize_12.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Column_initialize_12, false), [table, \"column\"], null);\n self.style = attributes['$[]'](\"style\");\n \n $writer = [\"colnumber\", $rb_plus(index, 1)];\n $send(attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n ($truthy($a = attributes['$[]'](\"width\")) ? $a : (($writer = [\"width\", 1]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($a = attributes['$[]'](\"halign\")) ? $a : (($writer = [\"halign\", \"left\"]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n ($truthy($a = attributes['$[]'](\"valign\")) ? $a : (($writer = [\"valign\", \"top\"]), $send(attributes, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n return self.$update_attributes(attributes);\n }, TMP_Column_initialize_12.$$arity = -3);\n Opal.alias(self, \"table\", \"parent\");\n return (Opal.def(self, '$assign_width', TMP_Column_assign_width_13 = function $$assign_width(col_pcwidth, width_base, pf) {\n var self = this, $writer = nil;\n\n if (width_base == null) {\n width_base = nil;\n }\n if (pf == null) {\n pf = 10000;\n }\n \n if ($truthy(width_base)) {\n \n col_pcwidth = $rb_divide($rb_times($rb_times($rb_divide(self.attributes['$[]'](\"width\").$to_f(), width_base), 100), pf).$to_i(), pf);\n if (col_pcwidth.$to_i()['$=='](col_pcwidth)) {\n col_pcwidth = col_pcwidth.$to_i()};};\n \n $writer = [\"colpcwidth\", col_pcwidth];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(self.$parent().$attributes()['$key?'](\"tableabswidth\"))) {\n \n $writer = [\"colabswidth\", $rb_times($rb_divide(col_pcwidth, 100), self.$parent().$attributes()['$[]'](\"tableabswidth\")).$round()];\n $send(self.attributes, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return col_pcwidth;\n }, TMP_Column_assign_width_13.$$arity = -2), nil) && 'assign_width';\n })($$($nesting, 'Table'), $$($nesting, 'AbstractNode'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $Cell(){};\n var self = $Cell = $klass($base, $super, 'Cell', $Cell);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Cell_initialize_14, TMP_Cell_text_15, TMP_Cell_text$eq_16, TMP_Cell_content_18, TMP_Cell_to_s_19;\n\n def.document = def.text = def.style = def.inner_document = def.colspan = def.rowspan = def.attributes = nil;\n \n self.$attr_accessor(\"style\");\n self.$attr_accessor(\"colspan\");\n self.$attr_accessor(\"rowspan\");\n Opal.alias(self, \"column\", \"parent\");\n self.$attr_reader(\"inner_document\");\n \n Opal.def(self, '$initialize', TMP_Cell_initialize_14 = function $$initialize(column, cell_text, attributes, opts) {\n var $a, self = this, $iter = TMP_Cell_initialize_14.$$p, $yield = $iter || nil, cell_style = nil, in_header_row = nil, parent_doctitle = nil, inner_document_lines = nil, unprocessed_line1 = nil, preprocessed_lines = nil, $writer = nil;\n\n if (attributes == null) {\n attributes = $hash2([], {});\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n if ($iter) TMP_Cell_initialize_14.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_Cell_initialize_14, false), [column, \"cell\"], null);\n if ($truthy(column)) {\n \n cell_style = (function() {if ($truthy((in_header_row = column.$table()['$header_row?']()))) {\n return nil\n } else {\n return column.$attributes()['$[]'](\"style\")\n }; return nil; })();\n self.$update_attributes(column.$attributes());\n } else {\n in_header_row = (cell_style = nil)\n };\n if ($truthy(attributes)) {\n \n self.colspan = attributes.$delete(\"colspan\");\n self.rowspan = attributes.$delete(\"rowspan\");\n if ($truthy(($truthy($a = in_header_row) ? $a : attributes['$key?'](\"style\")['$!']()))) {\n } else {\n cell_style = attributes['$[]'](\"style\")\n };\n if ($truthy(opts['$[]'](\"strip_text\"))) {\n if ($truthy(($truthy($a = cell_style['$=='](\"literal\")) ? $a : cell_style['$=='](\"verse\")))) {\n \n cell_text = cell_text.$rstrip();\n while ($truthy(cell_text['$start_with?']($$($nesting, 'LF')))) {\n cell_text = cell_text.$slice(1, $rb_minus(cell_text.$length(), 1))\n };\n } else {\n cell_text = cell_text.$strip()\n }};\n self.$update_attributes(attributes);\n } else {\n \n self.colspan = nil;\n self.rowspan = nil;\n };\n if (cell_style['$=='](\"asciidoc\")) {\n \n parent_doctitle = self.document.$attributes().$delete(\"doctitle\");\n inner_document_lines = cell_text.$split($$($nesting, 'LF'), -1);\n if ($truthy(inner_document_lines['$empty?']())) {\n } else if ($truthy((unprocessed_line1 = inner_document_lines['$[]'](0))['$include?'](\"::\"))) {\n \n preprocessed_lines = $$($nesting, 'PreprocessorReader').$new(self.document, [unprocessed_line1]).$readlines();\n if ($truthy((($a = unprocessed_line1['$=='](preprocessed_lines['$[]'](0))) ? $rb_lt(preprocessed_lines.$size(), 2) : unprocessed_line1['$=='](preprocessed_lines['$[]'](0))))) {\n } else {\n \n inner_document_lines.$shift();\n if ($truthy(preprocessed_lines['$empty?']())) {\n } else {\n $send(inner_document_lines, 'unshift', Opal.to_a(preprocessed_lines))\n };\n };};\n self.inner_document = $$($nesting, 'Document').$new(inner_document_lines, $hash2([\"header_footer\", \"parent\", \"cursor\"], {\"header_footer\": false, \"parent\": self.document, \"cursor\": opts['$[]'](\"cursor\")}));\n if ($truthy(parent_doctitle['$nil?']())) {\n } else {\n \n $writer = [\"doctitle\", parent_doctitle];\n $send(self.document.$attributes(), '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };};\n self.text = cell_text;\n return (self.style = cell_style);\n }, TMP_Cell_initialize_14.$$arity = -3);\n \n Opal.def(self, '$text', TMP_Cell_text_15 = function $$text() {\n var self = this;\n\n return self.$apply_subs(self.text, (function() {if (self.style['$=='](\"literal\")) {\n return $$($nesting, 'BASIC_SUBS')\n } else {\n return $$($nesting, 'NORMAL_SUBS')\n }; return nil; })())\n }, TMP_Cell_text_15.$$arity = 0);\n \n Opal.def(self, '$text=', TMP_Cell_text$eq_16 = function(val) {\n var self = this;\n\n return (self.text = val)\n }, TMP_Cell_text$eq_16.$$arity = 1);\n \n Opal.def(self, '$content', TMP_Cell_content_18 = function $$content() {\n var TMP_17, self = this;\n\n if (self.style['$=='](\"asciidoc\")) {\n return self.inner_document.$convert()\n } else {\n return $send(self.$text().$split($$($nesting, 'BlankLineRx')), 'map', [], (TMP_17 = function(p){var self = TMP_17.$$s || this, $a;\n if (self.style == null) self.style = nil;\nif (p == null) p = nil;\n if ($truthy(($truthy($a = self.style['$!']()) ? $a : self.style['$=='](\"header\")))) {\n return p\n } else {\n return $$($nesting, 'Inline').$new(self.$parent(), \"quoted\", p, $hash2([\"type\"], {\"type\": self.style})).$convert()\n }}, TMP_17.$$s = self, TMP_17.$$arity = 1, TMP_17))\n }\n }, TMP_Cell_content_18.$$arity = 0);\n return (Opal.def(self, '$to_s', TMP_Cell_to_s_19 = function $$to_s() {\n var $a, self = this, $iter = TMP_Cell_to_s_19.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n if ($iter) TMP_Cell_to_s_19.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n return \"\" + ($send(self, Opal.find_super_dispatcher(self, 'to_s', TMP_Cell_to_s_19, false), $zuper, $iter).$to_s()) + \" - [text: \" + (self.text) + \", colspan: \" + (($truthy($a = self.colspan) ? $a : 1)) + \", rowspan: \" + (($truthy($a = self.rowspan) ? $a : 1)) + \", attributes: \" + (self.attributes) + \"]\"\n }, TMP_Cell_to_s_19.$$arity = 0), nil) && 'to_s';\n })($$($nesting, 'Table'), $$($nesting, 'AbstractNode'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $ParserContext(){};\n var self = $ParserContext = $klass($base, $super, 'ParserContext', $ParserContext);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ParserContext_initialize_20, TMP_ParserContext_starts_with_delimiter$q_21, TMP_ParserContext_match_delimiter_22, TMP_ParserContext_skip_past_delimiter_23, TMP_ParserContext_skip_past_escaped_delimiter_24, TMP_ParserContext_buffer_has_unclosed_quotes$q_25, TMP_ParserContext_take_cellspec_26, TMP_ParserContext_push_cellspec_27, TMP_ParserContext_keep_cell_open_28, TMP_ParserContext_mark_cell_closed_29, TMP_ParserContext_cell_open$q_30, TMP_ParserContext_cell_closed$q_31, TMP_ParserContext_close_open_cell_32, TMP_ParserContext_close_cell_35, TMP_ParserContext_close_row_36, TMP_ParserContext_activate_rowspan_38, TMP_ParserContext_end_of_row$q_39, TMP_ParserContext_effective_column_visits_40, TMP_ParserContext_advance_41;\n\n def.delimiter = def.delimiter_re = def.buffer = def.cellspecs = def.cell_open = def.format = def.last_cursor = def.table = def.current_row = def.colcount = def.column_visits = def.active_rowspans = def.linenum = nil;\n \n Opal.const_set($nesting[0], 'FORMATS', [\"psv\", \"csv\", \"dsv\", \"tsv\"].$to_set());\n Opal.const_set($nesting[0], 'DELIMITERS', $hash2([\"psv\", \"csv\", \"dsv\", \"tsv\", \"!sv\"], {\"psv\": [\"|\", /\\|/], \"csv\": [\",\", /,/], \"dsv\": [\":\", /:/], \"tsv\": [\"\\t\", /\\t/], \"!sv\": [\"!\", /!/]}));\n self.$attr_accessor(\"table\");\n self.$attr_accessor(\"format\");\n self.$attr_reader(\"colcount\");\n self.$attr_accessor(\"buffer\");\n self.$attr_reader(\"delimiter\");\n self.$attr_reader(\"delimiter_re\");\n \n Opal.def(self, '$initialize', TMP_ParserContext_initialize_20 = function $$initialize(reader, table, attributes) {\n var $a, $b, self = this, xsv = nil, sep = nil;\n\n if (attributes == null) {\n attributes = $hash2([], {});\n }\n \n self.reader = reader;\n self.table = table;\n self.last_cursor = reader.$cursor();\n if ($truthy(attributes['$key?'](\"format\"))) {\n if ($truthy($$($nesting, 'FORMATS')['$include?']((xsv = attributes['$[]'](\"format\"))))) {\n if (xsv['$=='](\"tsv\")) {\n self.format = \"csv\"\n } else if ($truthy((($a = (self.format = xsv)['$=='](\"psv\")) ? table.$document()['$nested?']() : (self.format = xsv)['$=='](\"psv\")))) {\n xsv = \"!sv\"}\n } else {\n \n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (reader.$prev_line_info()) + \": illegal table format: \" + (xsv));\n $a = [\"psv\", (function() {if ($truthy(table.$document()['$nested?']())) {\n return \"!sv\"\n } else {\n return \"psv\"\n }; return nil; })()], (self.format = $a[0]), (xsv = $a[1]), $a;\n }\n } else {\n $a = [\"psv\", (function() {if ($truthy(table.$document()['$nested?']())) {\n return \"!sv\"\n } else {\n return \"psv\"\n }; return nil; })()], (self.format = $a[0]), (xsv = $a[1]), $a\n };\n if ($truthy(attributes['$key?'](\"separator\"))) {\n if ($truthy((sep = attributes['$[]'](\"separator\"))['$nil_or_empty?']())) {\n $b = $$($nesting, 'DELIMITERS')['$[]'](xsv), $a = Opal.to_ary($b), (self.delimiter = ($a[0] == null ? nil : $a[0])), (self.delimiter_re = ($a[1] == null ? nil : $a[1])), $b\n } else if (sep['$=='](\"\\\\t\")) {\n $b = $$($nesting, 'DELIMITERS')['$[]'](\"tsv\"), $a = Opal.to_ary($b), (self.delimiter = ($a[0] == null ? nil : $a[0])), (self.delimiter_re = ($a[1] == null ? nil : $a[1])), $b\n } else {\n $a = [sep, new RegExp($$$('::', 'Regexp').$escape(sep))], (self.delimiter = $a[0]), (self.delimiter_re = $a[1]), $a\n }\n } else {\n $b = $$($nesting, 'DELIMITERS')['$[]'](xsv), $a = Opal.to_ary($b), (self.delimiter = ($a[0] == null ? nil : $a[0])), (self.delimiter_re = ($a[1] == null ? nil : $a[1])), $b\n };\n self.colcount = (function() {if ($truthy(table.$columns()['$empty?']())) {\n return -1\n } else {\n return table.$columns().$size()\n }; return nil; })();\n self.buffer = \"\";\n self.cellspecs = [];\n self.cell_open = false;\n self.active_rowspans = [0];\n self.column_visits = 0;\n self.current_row = [];\n return (self.linenum = -1);\n }, TMP_ParserContext_initialize_20.$$arity = -3);\n \n Opal.def(self, '$starts_with_delimiter?', TMP_ParserContext_starts_with_delimiter$q_21 = function(line) {\n var self = this;\n\n return line['$start_with?'](self.delimiter)\n }, TMP_ParserContext_starts_with_delimiter$q_21.$$arity = 1);\n \n Opal.def(self, '$match_delimiter', TMP_ParserContext_match_delimiter_22 = function $$match_delimiter(line) {\n var self = this;\n\n return self.delimiter_re.$match(line)\n }, TMP_ParserContext_match_delimiter_22.$$arity = 1);\n \n Opal.def(self, '$skip_past_delimiter', TMP_ParserContext_skip_past_delimiter_23 = function $$skip_past_delimiter(match) {\n var self = this;\n\n \n self.buffer = \"\" + (self.buffer) + (match.$pre_match()) + (self.delimiter);\n return match.$post_match();\n }, TMP_ParserContext_skip_past_delimiter_23.$$arity = 1);\n \n Opal.def(self, '$skip_past_escaped_delimiter', TMP_ParserContext_skip_past_escaped_delimiter_24 = function $$skip_past_escaped_delimiter(match) {\n var self = this;\n\n \n self.buffer = \"\" + (self.buffer) + (match.$pre_match().$chop()) + (self.delimiter);\n return match.$post_match();\n }, TMP_ParserContext_skip_past_escaped_delimiter_24.$$arity = 1);\n \n Opal.def(self, '$buffer_has_unclosed_quotes?', TMP_ParserContext_buffer_has_unclosed_quotes$q_25 = function(append) {\n var $a, $b, self = this, record = nil, trailing_quote = nil;\n\n if (append == null) {\n append = nil;\n }\n if ($truthy((record = (function() {if ($truthy(append)) {\n return $rb_plus(self.$buffer(), append).$strip()\n } else {\n return self.$buffer().$strip()\n }; return nil; })())['$start_with?'](\"\\\"\"))) {\n if ($truthy(($truthy($a = ($truthy($b = (trailing_quote = record['$end_with?'](\"\\\"\"))) ? record['$end_with?'](\"\\\"\\\"\") : $b)) ? $a : record['$start_with?'](\"\\\"\\\"\")))) {\n return ($truthy($a = (record = record.$gsub(\"\\\"\\\"\", \"\"))['$start_with?'](\"\\\"\")) ? record['$end_with?'](\"\\\"\")['$!']() : $a)\n } else {\n return trailing_quote['$!']()\n }\n } else {\n return false\n }\n }, TMP_ParserContext_buffer_has_unclosed_quotes$q_25.$$arity = -1);\n \n Opal.def(self, '$take_cellspec', TMP_ParserContext_take_cellspec_26 = function $$take_cellspec() {\n var self = this;\n\n return self.cellspecs.$shift()\n }, TMP_ParserContext_take_cellspec_26.$$arity = 0);\n \n Opal.def(self, '$push_cellspec', TMP_ParserContext_push_cellspec_27 = function $$push_cellspec(cellspec) {\n var $a, self = this;\n\n if (cellspec == null) {\n cellspec = $hash2([], {});\n }\n \n self.cellspecs['$<<'](($truthy($a = cellspec) ? $a : $hash2([], {})));\n return nil;\n }, TMP_ParserContext_push_cellspec_27.$$arity = -1);\n \n Opal.def(self, '$keep_cell_open', TMP_ParserContext_keep_cell_open_28 = function $$keep_cell_open() {\n var self = this;\n\n \n self.cell_open = true;\n return nil;\n }, TMP_ParserContext_keep_cell_open_28.$$arity = 0);\n \n Opal.def(self, '$mark_cell_closed', TMP_ParserContext_mark_cell_closed_29 = function $$mark_cell_closed() {\n var self = this;\n\n \n self.cell_open = false;\n return nil;\n }, TMP_ParserContext_mark_cell_closed_29.$$arity = 0);\n \n Opal.def(self, '$cell_open?', TMP_ParserContext_cell_open$q_30 = function() {\n var self = this;\n\n return self.cell_open\n }, TMP_ParserContext_cell_open$q_30.$$arity = 0);\n \n Opal.def(self, '$cell_closed?', TMP_ParserContext_cell_closed$q_31 = function() {\n var self = this;\n\n return self.cell_open['$!']()\n }, TMP_ParserContext_cell_closed$q_31.$$arity = 0);\n \n Opal.def(self, '$close_open_cell', TMP_ParserContext_close_open_cell_32 = function $$close_open_cell(next_cellspec) {\n var self = this;\n\n if (next_cellspec == null) {\n next_cellspec = $hash2([], {});\n }\n \n self.$push_cellspec(next_cellspec);\n if ($truthy(self['$cell_open?']())) {\n self.$close_cell(true)};\n self.$advance();\n return nil;\n }, TMP_ParserContext_close_open_cell_32.$$arity = -1);\n \n Opal.def(self, '$close_cell', TMP_ParserContext_close_cell_35 = function $$close_cell(eol) {try {\n\n var $a, TMP_33, self = this, strip_text = nil, cell_text = nil, cellspec = nil, repeat = nil;\n\n if (eol == null) {\n eol = false;\n }\n \n if (self.format['$=='](\"psv\")) {\n \n strip_text = true;\n cell_text = self.buffer;\n self.buffer = \"\";\n if ($truthy((cellspec = self.$take_cellspec()))) {\n repeat = ($truthy($a = cellspec.$delete(\"repeatcol\")) ? $a : 1)\n } else {\n \n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (self.last_cursor.$line_info()) + \": table missing leading separator, recovering automatically\");\n cellspec = $hash2([], {});\n repeat = 1;\n };\n } else {\n \n strip_text = false;\n cell_text = self.buffer.$strip();\n self.buffer = \"\";\n cellspec = nil;\n repeat = 1;\n if (self.format['$=='](\"csv\")) {\n if ($truthy(($truthy($a = cell_text['$empty?']()['$!']()) ? cell_text['$include?'](\"\\\"\") : $a))) {\n \n if ($truthy(($truthy($a = cell_text['$start_with?'](\"\\\"\")) ? cell_text['$end_with?'](\"\\\"\") : $a))) {\n cell_text = cell_text['$[]']($range(1, -1, true)).$strip()};\n cell_text = cell_text.$squeeze(\"\\\"\");}};\n };\n $send((1), 'upto', [repeat], (TMP_33 = function(i){var self = TMP_33.$$s || this, $b, $c, TMP_34, $d, column = nil, extra_cols = nil, offset = nil, cell = nil;\n if (self.colcount == null) self.colcount = nil;\n if (self.table == null) self.table = nil;\n if (self.current_row == null) self.current_row = nil;\n if (self.last_cursor == null) self.last_cursor = nil;\n if (self.reader == null) self.reader = nil;\n if (self.column_visits == null) self.column_visits = nil;\n if (self.linenum == null) self.linenum = nil;\nif (i == null) i = nil;\n \n if (self.colcount['$=='](-1)) {\n \n self.table.$columns()['$<<']((column = $$$($$($nesting, 'Table'), 'Column').$new(self.table, $rb_minus($rb_plus(self.table.$columns().$size(), i), 1))));\n if ($truthy(($truthy($b = ($truthy($c = cellspec) ? cellspec['$key?'](\"colspan\") : $c)) ? $rb_gt((extra_cols = $rb_minus(cellspec['$[]'](\"colspan\").$to_i(), 1)), 0) : $b))) {\n \n offset = self.table.$columns().$size();\n $send(extra_cols, 'times', [], (TMP_34 = function(j){var self = TMP_34.$$s || this;\n if (self.table == null) self.table = nil;\nif (j == null) j = nil;\n return self.table.$columns()['$<<']($$$($$($nesting, 'Table'), 'Column').$new(self.table, $rb_plus(offset, j)))}, TMP_34.$$s = self, TMP_34.$$arity = 1, TMP_34));};\n } else if ($truthy((column = self.table.$columns()['$[]'](self.current_row.$size())))) {\n } else {\n \n self.$warn(\"\" + \"asciidoctor: ERROR: \" + (self.last_cursor.$line_info()) + \": dropping cell because it exceeds specified number of columns\");\n Opal.ret(nil);\n };\n cell = $$$($$($nesting, 'Table'), 'Cell').$new(column, cell_text, cellspec, $hash2([\"cursor\", \"strip_text\"], {\"cursor\": self.last_cursor, \"strip_text\": strip_text}));\n self.last_cursor = self.reader.$cursor();\n if ($truthy(($truthy($b = cell.$rowspan()['$!']()) ? $b : cell.$rowspan()['$=='](1)))) {\n } else {\n self.$activate_rowspan(cell.$rowspan(), ($truthy($b = cell.$colspan()) ? $b : 1))\n };\n self.column_visits = $rb_plus(self.column_visits, ($truthy($b = cell.$colspan()) ? $b : 1));\n self.current_row['$<<'](cell);\n if ($truthy(($truthy($b = self['$end_of_row?']()) ? ($truthy($c = ($truthy($d = self.colcount['$!='](-1)) ? $d : $rb_gt(self.linenum, 0))) ? $c : ($truthy($d = eol) ? i['$=='](repeat) : $d)) : $b))) {\n return self.$close_row()\n } else {\n return nil\n };}, TMP_33.$$s = self, TMP_33.$$arity = 1, TMP_33));\n self.cell_open = false;\n return nil;\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_ParserContext_close_cell_35.$$arity = -1);\n \n Opal.def(self, '$close_row', TMP_ParserContext_close_row_36 = function $$close_row() {\n var $a, self = this, $writer = nil;\n\n \n self.table.$rows().$body()['$<<'](self.current_row);\n if (self.colcount['$=='](-1)) {\n self.colcount = self.column_visits};\n self.column_visits = 0;\n self.current_row = [];\n self.active_rowspans.$shift();\n ($truthy($a = self.active_rowspans['$[]'](0)) ? $a : (($writer = [0, 0]), $send(self.active_rowspans, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n return nil;\n }, TMP_ParserContext_close_row_36.$$arity = 0);\n \n Opal.def(self, '$activate_rowspan', TMP_ParserContext_activate_rowspan_38 = function $$activate_rowspan(rowspan, colspan) {\n var TMP_37, self = this;\n\n \n $send((1).$upto($rb_minus(rowspan, 1)), 'each', [], (TMP_37 = function(i){var self = TMP_37.$$s || this, $a, $writer = nil;\n if (self.active_rowspans == null) self.active_rowspans = nil;\nif (i == null) i = nil;\n \n $writer = [i, $rb_plus(($truthy($a = self.active_rowspans['$[]'](i)) ? $a : 0), colspan)];\n $send(self.active_rowspans, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_37.$$s = self, TMP_37.$$arity = 1, TMP_37));\n return nil;\n }, TMP_ParserContext_activate_rowspan_38.$$arity = 2);\n \n Opal.def(self, '$end_of_row?', TMP_ParserContext_end_of_row$q_39 = function() {\n var $a, self = this;\n\n return ($truthy($a = self.colcount['$=='](-1)) ? $a : self.$effective_column_visits()['$=='](self.colcount))\n }, TMP_ParserContext_end_of_row$q_39.$$arity = 0);\n \n Opal.def(self, '$effective_column_visits', TMP_ParserContext_effective_column_visits_40 = function $$effective_column_visits() {\n var self = this;\n\n return $rb_plus(self.column_visits, self.active_rowspans['$[]'](0))\n }, TMP_ParserContext_effective_column_visits_40.$$arity = 0);\n return (Opal.def(self, '$advance', TMP_ParserContext_advance_41 = function $$advance() {\n var self = this;\n\n return (self.linenum = $rb_plus(self.linenum, 1))\n }, TMP_ParserContext_advance_41.$$arity = 0), nil) && 'advance';\n })($$($nesting, 'Table'), null, $nesting);\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/converter/composite\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $truthy = Opal.truthy, $hash2 = Opal.hash2;\n\n Opal.add_stubs(['$attr_reader', '$each', '$compact', '$flatten', '$respond_to?', '$composed', '$node_name', '$convert', '$converter_for', '$[]', '$find_converter', '$[]=', '$-', '$handles?', '$raise']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $CompositeConverter(){};\n var self = $CompositeConverter = $klass($base, $super, 'CompositeConverter', $CompositeConverter);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_CompositeConverter_initialize_2, TMP_CompositeConverter_convert_3, TMP_CompositeConverter_converter_for_4, TMP_CompositeConverter_find_converter_6;\n\n def.converter_map = def.converters = nil;\n \n self.$attr_reader(\"converters\");\n \n Opal.def(self, '$initialize', TMP_CompositeConverter_initialize_2 = function $$initialize(backend, $a_rest) {\n var TMP_1, self = this, converters;\n\n var $args_len = arguments.length, $rest_len = $args_len - 1;\n if ($rest_len < 0) { $rest_len = 0; }\n converters = new Array($rest_len);\n for (var $arg_idx = 1; $arg_idx < $args_len; $arg_idx++) {\n converters[$arg_idx - 1] = arguments[$arg_idx];\n }\n \n self.backend = backend;\n $send((self.converters = converters.$flatten().$compact()), 'each', [], (TMP_1 = function(converter){var self = TMP_1.$$s || this;\nif (converter == null) converter = nil;\n if ($truthy(converter['$respond_to?'](\"composed\"))) {\n return converter.$composed(self)\n } else {\n return nil\n }}, TMP_1.$$s = self, TMP_1.$$arity = 1, TMP_1));\n return (self.converter_map = $hash2([], {}));\n }, TMP_CompositeConverter_initialize_2.$$arity = -2);\n \n Opal.def(self, '$convert', TMP_CompositeConverter_convert_3 = function $$convert(node, transform, opts) {\n var $a, self = this;\n\n if (transform == null) {\n transform = nil;\n }\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n transform = ($truthy($a = transform) ? $a : node.$node_name());\n return self.$converter_for(transform).$convert(node, transform, opts);\n }, TMP_CompositeConverter_convert_3.$$arity = -2);\n Opal.alias(self, \"convert_with_options\", \"convert\");\n \n Opal.def(self, '$converter_for', TMP_CompositeConverter_converter_for_4 = function $$converter_for(transform) {\n var $a, self = this, $writer = nil;\n\n return ($truthy($a = self.converter_map['$[]'](transform)) ? $a : (($writer = [transform, self.$find_converter(transform)]), $send(self.converter_map, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n }, TMP_CompositeConverter_converter_for_4.$$arity = 1);\n return (Opal.def(self, '$find_converter', TMP_CompositeConverter_find_converter_6 = function $$find_converter(transform) {try {\n\n var TMP_5, self = this;\n\n \n $send(self.converters, 'each', [], (TMP_5 = function(candidate){var self = TMP_5.$$s || this;\nif (candidate == null) candidate = nil;\n if ($truthy(candidate['$handles?'](transform))) {\n Opal.ret(candidate)\n } else {\n return nil\n }}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5));\n return self.$raise(\"\" + \"Could not find a converter to handle transform: \" + (transform));\n } catch ($returner) { if ($returner === Opal.returner) { return $returner.$v } throw $returner; }\n }, TMP_CompositeConverter_find_converter_6.$$arity = 1), nil) && 'find_converter';\n })($$($nesting, 'Converter'), $$$($$($nesting, 'Converter'), 'Base'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/converter/html5\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_le(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs <= rhs : lhs['$<='](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $send = Opal.send, $hash2 = Opal.hash2, $truthy = Opal.truthy, $range = Opal.range;\n\n Opal.add_stubs(['$default=', '$-', '$==', '$[]', '$instance', '$empty?', '$attr', '$>=', '$safe', '$attr?', '$<<', '$include?', '$gsub', '$extname', '$doctitle', '$normalize_web_path', '$embed_primary_stylesheet', '$read_asset', '$normalize_system_path', '$===', '$coderay_stylesheet_name', '$embed_coderay_stylesheet', '$pygments_stylesheet_name', '$embed_pygments_stylesheet', '$docinfo', '$id', '$sections?', '$doctype', '$*', '$noheader', '$outline', '$has_header?', '$notitle', '$title', '$header', '$sub_macros', '$>', '$to_i', '$each', '$downcase', '$concat', '$content', '$footnotes?', '$!', '$footnotes', '$index', '$text', '$nofooter', '$inspect', '$!=', '$document', '$sections', '$level', '$caption', '$captioned_title', '$numbered', '$<=', '$sectnum', '$<', '$+', '$role', '$title?', '$icon_uri', '$compact', '$media_uri', '$option?', '$append_boolean_attribute', '$style', '$items', '$blocks?', '$text?', '$chomp', '$read_svg_contents', '$alt', '$image_uri', '$encode_quotes', '$to_sym', '$start_with?', '$end_with?', '$list_marker_keyword', '$parent', '$warn', '$context', '$times', '$size', '$columns', '$by_section', '$rows', '$colspan', '$rowspan', '$role?', '$unshift', '$shift', '$split', '$nil_or_empty?', '$type', '$attributes', '$catalog', '$xreftext', '$target', '$join', '$map', '$chop', '$read_contents', '$sub', '$match', '$length']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $Html5Converter(){};\n var self = $Html5Converter = $klass($base, $super, 'Html5Converter', $Html5Converter);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Html5Converter_initialize_1, TMP_Html5Converter_document_4, TMP_Html5Converter_embedded_6, TMP_Html5Converter_outline_8, TMP_Html5Converter_section_9, TMP_Html5Converter_admonition_10, TMP_Html5Converter_audio_11, TMP_Html5Converter_colist_14, TMP_Html5Converter_dlist_21, TMP_Html5Converter_example_22, TMP_Html5Converter_floating_title_23, TMP_Html5Converter_image_24, TMP_Html5Converter_listing_25, TMP_Html5Converter_literal_26, TMP_Html5Converter_stem_27, TMP_Html5Converter_olist_29, TMP_Html5Converter_open_30, TMP_Html5Converter_page_break_31, TMP_Html5Converter_paragraph_32, TMP_Html5Converter_preamble_33, TMP_Html5Converter_quote_34, TMP_Html5Converter_thematic_break_35, TMP_Html5Converter_sidebar_36, TMP_Html5Converter_table_42, TMP_Html5Converter_toc_43, TMP_Html5Converter_ulist_45, TMP_Html5Converter_verse_46, TMP_Html5Converter_video_47, TMP_Html5Converter_inline_anchor_48, TMP_Html5Converter_inline_break_49, TMP_Html5Converter_inline_button_50, TMP_Html5Converter_inline_callout_51, TMP_Html5Converter_inline_footnote_52, TMP_Html5Converter_inline_image_55, TMP_Html5Converter_inline_indexterm_56, TMP_Html5Converter_inline_kbd_57, TMP_Html5Converter_inline_menu_58, TMP_Html5Converter_inline_quoted_59, TMP_Html5Converter_append_boolean_attribute_60, TMP_Html5Converter_encode_quotes_61, TMP_Html5Converter_read_svg_contents_63, $writer = nil;\n\n def.xml_mode = def.void_element_slash = def.stylesheets = def.xrefstyle = nil;\n \n \n $writer = [[\"\", \"\", false]];\n $send(Opal.const_set($nesting[0], 'QUOTE_TAGS', $hash2([\"monospaced\", \"emphasis\", \"strong\", \"double\", \"single\", \"mark\", \"superscript\", \"subscript\", \"asciimath\", \"latexmath\"], {\"monospaced\": [\"<code>\", \"</code>\", true], \"emphasis\": [\"<em>\", \"</em>\", true], \"strong\": [\"<strong>\", \"</strong>\", true], \"double\": [\"“\", \"”\", false], \"single\": [\"‘\", \"’\", false], \"mark\": [\"<mark>\", \"</mark>\", true], \"superscript\": [\"<sup>\", \"</sup>\", true], \"subscript\": [\"<sub>\", \"</sub>\", true], \"asciimath\": [\"\\\\$\", \"\\\\$\", false], \"latexmath\": [\"\\\\(\", \"\\\\)\", false]})), 'default=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n Opal.const_set($nesting[0], 'SvgPreambleRx', /^.*?(?=<svg\\b)/m);\n Opal.const_set($nesting[0], 'SvgStartTagRx', /^<svg[^>]*>/);\n Opal.const_set($nesting[0], 'DimensionAttributeRx', /\\s(?:width|height|style)=([\"'])[^\\n]*?\\1/);\n \n Opal.def(self, '$initialize', TMP_Html5Converter_initialize_1 = function $$initialize(backend, opts) {\n var self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n self.xml_mode = opts['$[]'](\"htmlsyntax\")['$=='](\"xml\");\n self.void_element_slash = (function() {if ($truthy(self.xml_mode)) {\n return \"/\"\n } else {\n return nil\n }; return nil; })();\n return (self.stylesheets = $$($nesting, 'Stylesheets').$instance());\n }, TMP_Html5Converter_initialize_1.$$arity = -2);\n \n Opal.def(self, '$document', TMP_Html5Converter_document_4 = function $$document(node) {\n var $a, $b, $c, TMP_2, TMP_3, self = this, slash = nil, br = nil, asset_uri_scheme = nil, cdn_base = nil, linkcss = nil, result = nil, lang_attribute = nil, authors = nil, icon_href = nil, icon_type = nil, icon_ext = nil, webfonts = nil, iconfont_stylesheet = nil, $case = nil, highlighter = nil, pygments_style = nil, docinfo_content = nil, body_attrs = nil, sectioned = nil, details = nil, authorcount = nil, highlightjs_path = nil, prettify_path = nil, eqnums_val = nil, eqnums_opt = nil;\n\n \n slash = self.void_element_slash;\n br = \"\" + \"<br\" + (slash) + \">\";\n if ($truthy((asset_uri_scheme = node.$attr(\"asset-uri-scheme\", \"https\"))['$empty?']())) {\n } else {\n asset_uri_scheme = \"\" + (asset_uri_scheme) + \":\"\n };\n cdn_base = \"\" + (asset_uri_scheme) + \"//cdnjs.cloudflare.com/ajax/libs\";\n linkcss = ($truthy($a = $rb_ge(node.$safe(), $$$($$($nesting, 'SafeMode'), 'SECURE'))) ? $a : node['$attr?'](\"linkcss\"));\n result = [\"<!DOCTYPE html>\"];\n lang_attribute = (function() {if ($truthy(node['$attr?'](\"nolang\"))) {\n return nil\n } else {\n return \"\" + \" lang=\\\"\" + (node.$attr(\"lang\", \"en\")) + \"\\\"\"\n }; return nil; })();\n result['$<<'](\"\" + \"<html\" + ((function() {if ($truthy(self.xml_mode)) {\n return \" xmlns=\\\"http://www.w3.org/1999/xhtml\\\"\"\n } else {\n return nil\n }; return nil; })()) + (lang_attribute) + \">\");\n result['$<<'](\"\" + \"<head>\\n\" + \"<meta charset=\\\"\" + (node.$attr(\"encoding\", \"UTF-8\")) + \"\\\"\" + (slash) + \">\\n\" + \"<!--[if IE]><meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\"\" + (slash) + \"><![endif]-->\\n\" + \"<meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\"\" + (slash) + \">\\n\" + \"<meta name=\\\"generator\\\" content=\\\"Asciidoctor \" + (node.$attr(\"asciidoctor-version\")) + \"\\\"\" + (slash) + \">\");\n if ($truthy(node['$attr?'](\"app-name\"))) {\n result['$<<'](\"\" + \"<meta name=\\\"application-name\\\" content=\\\"\" + (node.$attr(\"app-name\")) + \"\\\"\" + (slash) + \">\")};\n if ($truthy(node['$attr?'](\"description\"))) {\n result['$<<'](\"\" + \"<meta name=\\\"description\\\" content=\\\"\" + (node.$attr(\"description\")) + \"\\\"\" + (slash) + \">\")};\n if ($truthy(node['$attr?'](\"keywords\"))) {\n result['$<<'](\"\" + \"<meta name=\\\"keywords\\\" content=\\\"\" + (node.$attr(\"keywords\")) + \"\\\"\" + (slash) + \">\")};\n if ($truthy(node['$attr?'](\"authors\"))) {\n result['$<<'](\"\" + \"<meta name=\\\"author\\\" content=\\\"\" + ((function() {if ($truthy((authors = node.$attr(\"authors\"))['$include?'](\"<\"))) {\n \n return authors.$gsub($$($nesting, 'XmlSanitizeRx'), \"\");\n } else {\n return authors\n }; return nil; })()) + \"\\\"\" + (slash) + \">\")};\n if ($truthy(node['$attr?'](\"copyright\"))) {\n result['$<<'](\"\" + \"<meta name=\\\"copyright\\\" content=\\\"\" + (node.$attr(\"copyright\")) + \"\\\"\" + (slash) + \">\")};\n if ($truthy(node['$attr?'](\"favicon\"))) {\n \n if ($truthy((icon_href = node.$attr(\"favicon\"))['$empty?']())) {\n $a = [\"favicon.ico\", \"image/x-icon\"], (icon_href = $a[0]), (icon_type = $a[1]), $a\n } else {\n icon_type = (function() {if ((icon_ext = $$$('::', 'File').$extname(icon_href))['$=='](\".ico\")) {\n return \"image/x-icon\"\n } else {\n return \"\" + \"image/\" + (icon_ext['$[]']($range(1, -1, false)))\n }; return nil; })()\n };\n result['$<<'](\"\" + \"<link rel=\\\"shortcut icon\\\" type=\\\"\" + (icon_type) + \"\\\" href=\\\"\" + (icon_href) + \"\\\">\");};\n result['$<<'](\"\" + \"<title>\" + (node.$doctitle($hash2([\"sanitize\", \"use_fallback\"], {\"sanitize\": true, \"use_fallback\": true}))) + \"</title>\");\n if ($truthy($$($nesting, 'DEFAULT_STYLESHEET_KEYS')['$include?'](node.$attr(\"stylesheet\")))) {\n \n if ($truthy((webfonts = node.$attr(\"webfonts\")))) {\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (asset_uri_scheme) + \"//fonts.googleapis.com/css?family=\" + ((function() {if ($truthy(webfonts['$empty?']())) {\n return \"Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700\"\n } else {\n return webfonts\n }; return nil; })()) + \"\\\"\" + (slash) + \">\")};\n if ($truthy(linkcss)) {\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (node.$normalize_web_path($$($nesting, 'DEFAULT_STYLESHEET_NAME'), node.$attr(\"stylesdir\", \"\"), false)) + \"\\\"\" + (slash) + \">\")\n } else {\n result['$<<'](self.stylesheets.$embed_primary_stylesheet())\n };\n } else if ($truthy(node['$attr?'](\"stylesheet\"))) {\n if ($truthy(linkcss)) {\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (node.$normalize_web_path(node.$attr(\"stylesheet\"), node.$attr(\"stylesdir\", \"\"))) + \"\\\"\" + (slash) + \">\")\n } else {\n result['$<<'](\"\" + \"<style>\\n\" + (node.$read_asset(node.$normalize_system_path(node.$attr(\"stylesheet\"), node.$attr(\"stylesdir\", \"\")), $hash2([\"warn_on_failure\", \"label\"], {\"warn_on_failure\": true, \"label\": \"stylesheet\"}))) + \"\\n\" + \"</style>\")\n }};\n if ($truthy(node['$attr?'](\"icons\", \"font\"))) {\n if ($truthy(node['$attr?'](\"iconfont-remote\"))) {\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (node.$attr(\"iconfont-cdn\", \"\" + (cdn_base) + \"/font-awesome/4.6.3/css/font-awesome.min.css\")) + \"\\\"\" + (slash) + \">\")\n } else {\n \n iconfont_stylesheet = \"\" + (node.$attr(\"iconfont-name\", \"font-awesome\")) + \".css\";\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (node.$normalize_web_path(iconfont_stylesheet, node.$attr(\"stylesdir\", \"\"), false)) + \"\\\"\" + (slash) + \">\");\n }};\n $case = (highlighter = node.$attr(\"source-highlighter\"));\n if (\"coderay\"['$===']($case)) {if (node.$attr(\"coderay-css\", \"class\")['$=='](\"class\")) {\n if ($truthy(linkcss)) {\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (node.$normalize_web_path(self.stylesheets.$coderay_stylesheet_name(), node.$attr(\"stylesdir\", \"\"), false)) + \"\\\"\" + (slash) + \">\")\n } else {\n result['$<<'](self.stylesheets.$embed_coderay_stylesheet())\n }}}\n else if (\"pygments\"['$===']($case)) {if (node.$attr(\"pygments-css\", \"class\")['$=='](\"class\")) {\n \n pygments_style = node.$attr(\"pygments-style\");\n if ($truthy(linkcss)) {\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (node.$normalize_web_path(self.stylesheets.$pygments_stylesheet_name(pygments_style), node.$attr(\"stylesdir\", \"\"), false)) + \"\\\"\" + (slash) + \">\")\n } else {\n result['$<<'](self.stylesheets.$embed_pygments_stylesheet(pygments_style))\n };}};\n if ($truthy((docinfo_content = node.$docinfo())['$empty?']())) {\n } else {\n result['$<<'](docinfo_content)\n };\n result['$<<'](\"</head>\");\n body_attrs = [];\n if ($truthy(node.$id())) {\n body_attrs['$<<'](\"\" + \"id=\\\"\" + (node.$id()) + \"\\\"\")};\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = (sectioned = node['$sections?']())) ? node['$attr?'](\"toc-class\") : $c)) ? node['$attr?'](\"toc\") : $b)) ? node['$attr?'](\"toc-placement\", \"auto\") : $a))) {\n body_attrs['$<<'](\"\" + \"class=\\\"\" + (node.$doctype()) + \" \" + (node.$attr(\"toc-class\")) + \" toc-\" + (node.$attr(\"toc-position\", \"header\")) + \"\\\"\")\n } else {\n body_attrs['$<<'](\"\" + \"class=\\\"\" + (node.$doctype()) + \"\\\"\")\n };\n if ($truthy(node['$attr?'](\"max-width\"))) {\n body_attrs['$<<'](\"\" + \"style=\\\"max-width: \" + (node.$attr(\"max-width\")) + \";\\\"\")};\n result['$<<'](\"\" + \"<body \" + ($rb_times(body_attrs, \" \")) + \">\");\n if ($truthy(node.$noheader())) {\n } else {\n \n result['$<<'](\"<div id=\\\"header\\\">\");\n if (node.$doctype()['$=='](\"manpage\")) {\n \n result['$<<'](\"\" + \"<h1>\" + (node.$doctitle()) + \" Manual Page</h1>\");\n if ($truthy(($truthy($a = ($truthy($b = sectioned) ? node['$attr?'](\"toc\") : $b)) ? node['$attr?'](\"toc-placement\", \"auto\") : $a))) {\n result['$<<'](\"\" + \"<div id=\\\"toc\\\" class=\\\"\" + (node.$attr(\"toc-class\", \"toc\")) + \"\\\">\\n\" + \"<div id=\\\"toctitle\\\">\" + (node.$attr(\"toc-title\")) + \"</div>\\n\" + (self.$outline(node)) + \"\\n\" + \"</div>\")};\n result['$<<'](\"\" + \"<h2>\" + (node.$attr(\"manname-title\")) + \"</h2>\\n\" + \"<div class=\\\"sectionbody\\\">\\n\" + \"<p>\" + (node.$attr(\"manname\")) + \" - \" + (node.$attr(\"manpurpose\")) + \"</p>\\n\" + \"</div>\");\n } else {\n \n if ($truthy(node['$has_header?']())) {\n \n if ($truthy(node.$notitle())) {\n } else {\n result['$<<'](\"\" + \"<h1>\" + (node.$header().$title()) + \"</h1>\")\n };\n details = [];\n if ($truthy(node['$attr?'](\"author\"))) {\n \n details['$<<'](\"\" + \"<span id=\\\"author\\\" class=\\\"author\\\">\" + (node.$attr(\"author\")) + \"</span>\" + (br));\n if ($truthy(node['$attr?'](\"email\"))) {\n details['$<<'](\"\" + \"<span id=\\\"email\\\" class=\\\"email\\\">\" + (node.$sub_macros(node.$attr(\"email\"))) + \"</span>\" + (br))};\n if ($truthy($rb_gt((authorcount = node.$attr(\"authorcount\").$to_i()), 1))) {\n $send(Opal.Range.$new(2, authorcount, false), 'each', [], (TMP_2 = function(idx){var self = TMP_2.$$s || this;\nif (idx == null) idx = nil;\n \n details['$<<'](\"\" + \"<span id=\\\"author\" + (idx) + \"\\\" class=\\\"author\\\">\" + (node.$attr(\"\" + \"author_\" + (idx))) + \"</span>\" + (br));\n if ($truthy(node['$attr?'](\"\" + \"email_\" + (idx)))) {\n return details['$<<'](\"\" + \"<span id=\\\"email\" + (idx) + \"\\\" class=\\\"email\\\">\" + (node.$sub_macros(node.$attr(\"\" + \"email_\" + (idx)))) + \"</span>\" + (br))\n } else {\n return nil\n };}, TMP_2.$$s = self, TMP_2.$$arity = 1, TMP_2))};};\n if ($truthy(node['$attr?'](\"revnumber\"))) {\n details['$<<'](\"\" + \"<span id=\\\"revnumber\\\">\" + (($truthy($a = node.$attr(\"version-label\")) ? $a : \"\").$downcase()) + \" \" + (node.$attr(\"revnumber\")) + ((function() {if ($truthy(node['$attr?'](\"revdate\"))) {\n return \",\"\n } else {\n return \"\"\n }; return nil; })()) + \"</span>\")};\n if ($truthy(node['$attr?'](\"revdate\"))) {\n details['$<<'](\"\" + \"<span id=\\\"revdate\\\">\" + (node.$attr(\"revdate\")) + \"</span>\")};\n if ($truthy(node['$attr?'](\"revremark\"))) {\n details['$<<'](\"\" + (br) + \"<span id=\\\"revremark\\\">\" + (node.$attr(\"revremark\")) + \"</span>\")};\n if ($truthy(details['$empty?']())) {\n } else {\n \n result['$<<'](\"<div class=\\\"details\\\">\");\n result.$concat(details);\n result['$<<'](\"</div>\");\n };};\n if ($truthy(($truthy($a = ($truthy($b = sectioned) ? node['$attr?'](\"toc\") : $b)) ? node['$attr?'](\"toc-placement\", \"auto\") : $a))) {\n result['$<<'](\"\" + \"<div id=\\\"toc\\\" class=\\\"\" + (node.$attr(\"toc-class\", \"toc\")) + \"\\\">\\n\" + \"<div id=\\\"toctitle\\\">\" + (node.$attr(\"toc-title\")) + \"</div>\\n\" + (self.$outline(node)) + \"\\n\" + \"</div>\")};\n };\n result['$<<'](\"</div>\");\n };\n result['$<<'](\"\" + \"<div id=\\\"content\\\">\\n\" + (node.$content()) + \"\\n\" + \"</div>\");\n if ($truthy(($truthy($a = node['$footnotes?']()) ? node['$attr?'](\"nofootnotes\")['$!']() : $a))) {\n \n result['$<<'](\"\" + \"<div id=\\\"footnotes\\\">\\n\" + \"<hr\" + (slash) + \">\");\n $send(node.$footnotes(), 'each', [], (TMP_3 = function(footnote){var self = TMP_3.$$s || this;\nif (footnote == null) footnote = nil;\n return result['$<<'](\"\" + \"<div class=\\\"footnote\\\" id=\\\"_footnote_\" + (footnote.$index()) + \"\\\">\\n\" + \"<a href=\\\"#_footnoteref_\" + (footnote.$index()) + \"\\\">\" + (footnote.$index()) + \"</a>. \" + (footnote.$text()) + \"\\n\" + \"</div>\")}, TMP_3.$$s = self, TMP_3.$$arity = 1, TMP_3));\n result['$<<'](\"</div>\");};\n if ($truthy(node.$nofooter())) {\n } else {\n \n result['$<<'](\"<div id=\\\"footer\\\">\");\n result['$<<'](\"<div id=\\\"footer-text\\\">\");\n if ($truthy(node['$attr?'](\"revnumber\"))) {\n result['$<<'](\"\" + (node.$attr(\"version-label\")) + \" \" + (node.$attr(\"revnumber\")) + (br))};\n if ($truthy(($truthy($a = node['$attr?'](\"last-update-label\")) ? node['$attr?'](\"reproducible\")['$!']() : $a))) {\n result['$<<'](\"\" + (node.$attr(\"last-update-label\")) + \" \" + (node.$attr(\"docdatetime\")))};\n result['$<<'](\"</div>\");\n result['$<<'](\"</div>\");\n };\n if ($truthy((docinfo_content = node.$docinfo(\"footer\"))['$empty?']())) {\n } else {\n result['$<<'](docinfo_content)\n };\n $case = highlighter;\n if (\"highlightjs\"['$===']($case) || \"highlight.js\"['$===']($case)) {\n highlightjs_path = node.$attr(\"highlightjsdir\", \"\" + (cdn_base) + \"/highlight.js/9.12.0\");\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (highlightjs_path) + \"/styles/\" + (node.$attr(\"highlightjs-theme\", \"github\")) + \".min.css\\\"\" + (slash) + \">\");\n result['$<<'](\"\" + \"<script src=\\\"\" + (highlightjs_path) + \"/highlight.min.js\\\"></script>\\n\" + \"<script>hljs.initHighlighting()</script>\");}\n else if (\"prettify\"['$===']($case)) {\n prettify_path = node.$attr(\"prettifydir\", \"\" + (cdn_base) + \"/prettify/r298\");\n result['$<<'](\"\" + \"<link rel=\\\"stylesheet\\\" href=\\\"\" + (prettify_path) + \"/\" + (node.$attr(\"prettify-theme\", \"prettify\")) + \".min.css\\\"\" + (slash) + \">\");\n result['$<<'](\"\" + \"<script src=\\\"\" + (prettify_path) + \"/prettify.min.js\\\"></script>\\n\" + \"<script>prettyPrint()</script>\");};\n if ($truthy(node['$attr?'](\"stem\"))) {\n \n eqnums_val = node.$attr(\"eqnums\", \"none\");\n if ($truthy(eqnums_val['$empty?']())) {\n eqnums_val = \"AMS\"};\n eqnums_opt = \"\" + \" equationNumbers: { autoNumber: \\\"\" + (eqnums_val) + \"\\\" } \";\n result['$<<'](\"\" + \"<script type=\\\"text/x-mathjax-config\\\">\\n\" + \"MathJax.Hub.Config({\\n\" + \" messageStyle: \\\"none\\\",\\n\" + \" tex2jax: {\\n\" + \" inlineMath: [\" + ($$($nesting, 'INLINE_MATH_DELIMITERS')['$[]'](\"latexmath\").$inspect()) + \"],\\n\" + \" displayMath: [\" + ($$($nesting, 'BLOCK_MATH_DELIMITERS')['$[]'](\"latexmath\").$inspect()) + \"],\\n\" + \" ignoreClass: \\\"nostem|nolatexmath\\\"\\n\" + \" },\\n\" + \" asciimath2jax: {\\n\" + \" delimiters: [\" + ($$($nesting, 'BLOCK_MATH_DELIMITERS')['$[]'](\"asciimath\").$inspect()) + \"],\\n\" + \" ignoreClass: \\\"nostem|noasciimath\\\"\\n\" + \" },\\n\" + \" TeX: {\" + (eqnums_opt) + \"}\\n\" + \"});\\n\" + \"</script>\\n\" + \"<script src=\\\"\" + (cdn_base) + \"/mathjax/2.6.0/MathJax.js?config=TeX-MML-AM_HTMLorMML\\\"></script>\");};\n result['$<<'](\"</body>\");\n result['$<<'](\"</html>\");\n return $rb_times(result, $$($nesting, 'LF'));\n }, TMP_Html5Converter_document_4.$$arity = 1);\n \n Opal.def(self, '$embedded', TMP_Html5Converter_embedded_6 = function $$embedded(node) {\n var $a, $b, $c, TMP_5, self = this, result = nil, id_attr = nil, toc_p = nil;\n\n \n result = [];\n if (node.$doctype()['$=='](\"manpage\")) {\n \n if ($truthy(node.$notitle())) {\n } else {\n \n id_attr = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n result['$<<'](\"\" + \"<h1\" + (id_attr) + \">\" + (node.$doctitle()) + \" Manual Page</h1>\");\n };\n result['$<<'](\"\" + \"<h2>\" + (node.$attr(\"manname-title\")) + \"</h2>\\n\" + \"<div class=\\\"sectionbody\\\">\\n\" + \"<p>\" + (node.$attr(\"manname\")) + \" - \" + (node.$attr(\"manpurpose\")) + \"</p>\\n\" + \"</div>\");\n } else if ($truthy(($truthy($a = node['$has_header?']()) ? node.$notitle()['$!']() : $a))) {\n \n id_attr = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n result['$<<'](\"\" + \"<h1\" + (id_attr) + \">\" + (node.$header().$title()) + \"</h1>\");};\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = node['$sections?']()) ? node['$attr?'](\"toc\") : $c)) ? (toc_p = node.$attr(\"toc-placement\"))['$!='](\"macro\") : $b)) ? toc_p['$!='](\"preamble\") : $a))) {\n result['$<<'](\"\" + \"<div id=\\\"toc\\\" class=\\\"toc\\\">\\n\" + \"<div id=\\\"toctitle\\\">\" + (node.$attr(\"toc-title\")) + \"</div>\\n\" + (self.$outline(node)) + \"\\n\" + \"</div>\")};\n result['$<<'](node.$content());\n if ($truthy(($truthy($a = node['$footnotes?']()) ? node['$attr?'](\"nofootnotes\")['$!']() : $a))) {\n \n result['$<<'](\"\" + \"<div id=\\\"footnotes\\\">\\n\" + \"<hr\" + (self.void_element_slash) + \">\");\n $send(node.$footnotes(), 'each', [], (TMP_5 = function(footnote){var self = TMP_5.$$s || this;\nif (footnote == null) footnote = nil;\n return result['$<<'](\"\" + \"<div class=\\\"footnote\\\" id=\\\"_footnote_\" + (footnote.$index()) + \"\\\">\\n\" + \"<a href=\\\"#_footnoteref_\" + (footnote.$index()) + \"\\\">\" + (footnote.$index()) + \"</a>. \" + (footnote.$text()) + \"\\n\" + \"</div>\")}, TMP_5.$$s = self, TMP_5.$$arity = 1, TMP_5));\n result['$<<'](\"</div>\");};\n return $rb_times(result, $$($nesting, 'LF'));\n }, TMP_Html5Converter_embedded_6.$$arity = 1);\n \n Opal.def(self, '$outline', TMP_Html5Converter_outline_8 = function $$outline(node, opts) {\n var $a, TMP_7, self = this, sectnumlevels = nil, toclevels = nil, sections = nil, result = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy(node['$sections?']())) {\n } else {\n return nil\n };\n sectnumlevels = ($truthy($a = opts['$[]'](\"sectnumlevels\")) ? $a : node.$document().$attr(\"sectnumlevels\", 3).$to_i());\n toclevels = ($truthy($a = opts['$[]'](\"toclevels\")) ? $a : node.$document().$attr(\"toclevels\", 2).$to_i());\n sections = node.$sections();\n result = [\"\" + \"<ul class=\\\"sectlevel\" + (sections['$[]'](0).$level()) + \"\\\">\"];\n $send(sections, 'each', [], (TMP_7 = function(section){var self = TMP_7.$$s || this, $b, slevel = nil, stitle = nil, child_toc_level = nil;\nif (section == null) section = nil;\n \n slevel = section.$level();\n if ($truthy(section.$caption())) {\n stitle = section.$captioned_title()\n } else if ($truthy(($truthy($b = section.$numbered()) ? $rb_le(slevel, sectnumlevels) : $b))) {\n stitle = \"\" + (section.$sectnum()) + \" \" + (section.$title())\n } else {\n stitle = section.$title()\n };\n if ($truthy(($truthy($b = $rb_lt(slevel, toclevels)) ? (child_toc_level = self.$outline(section, $hash2([\"toclevels\", \"secnumlevels\"], {\"toclevels\": toclevels, \"secnumlevels\": sectnumlevels}))) : $b))) {\n \n result['$<<'](\"\" + \"<li><a href=\\\"#\" + (section.$id()) + \"\\\">\" + (stitle) + \"</a>\");\n result['$<<'](child_toc_level);\n return result['$<<'](\"</li>\");\n } else {\n return result['$<<'](\"\" + \"<li><a href=\\\"#\" + (section.$id()) + \"\\\">\" + (stitle) + \"</a></li>\")\n };}, TMP_7.$$s = self, TMP_7.$$arity = 1, TMP_7));\n result['$<<'](\"</ul>\");\n return $rb_times(result, $$($nesting, 'LF'));\n }, TMP_Html5Converter_outline_8.$$arity = -2);\n \n Opal.def(self, '$section', TMP_Html5Converter_section_9 = function $$section(node) {\n var $a, $b, self = this, slevel = nil, htag = nil, id_attr = nil, anchor = nil, link_start = nil, link_end = nil, id = nil, doc = nil, class_attr = nil, role = nil, sectnum = nil;\n\n \n slevel = node.$level();\n htag = \"\" + \"h\" + ($rb_plus(slevel, 1));\n id_attr = (anchor = (link_start = (link_end = nil)));\n if ($truthy(node.$id())) {\n \n id_attr = \"\" + \" id=\\\"\" + ((id = node.$id())) + \"\\\"\";\n if ($truthy((doc = node.$document())['$attr?'](\"sectanchors\"))) {\n anchor = \"\" + \"<a class=\\\"anchor\\\" href=\\\"#\" + (id) + \"\\\"></a>\"};\n if ($truthy(doc['$attr?'](\"sectlinks\"))) {\n \n link_start = \"\" + \"<a class=\\\"link\\\" href=\\\"#\" + (id) + \"\\\">\";\n link_end = \"</a>\";};};\n if (slevel['$=='](0)) {\n return \"\" + \"<h1\" + (id_attr) + \" class=\\\"sect0\\\">\" + (anchor) + (link_start) + (node.$title()) + (link_end) + \"</h1>\\n\" + (node.$content())\n } else {\n \n class_attr = (function() {if ($truthy((role = node.$role()))) {\n return \"\" + \" class=\\\"sect\" + (slevel) + \" \" + (role) + \"\\\"\"\n } else {\n return \"\" + \" class=\\\"sect\" + (slevel) + \"\\\"\"\n }; return nil; })();\n sectnum = (function() {if ($truthy(($truthy($a = ($truthy($b = node.$numbered()) ? node.$caption()['$!']() : $b)) ? $rb_le(slevel, node.$document().$attr(\"sectnumlevels\", 3).$to_i()) : $a))) {\n return \"\" + (node.$sectnum()) + \" \"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (class_attr) + \">\\n\" + \"<\" + (htag) + (id_attr) + \">\" + (anchor) + (link_start) + (sectnum) + (node.$captioned_title()) + (link_end) + \"</\" + (htag) + \">\\n\" + ((function() {if (slevel['$=='](1)) {\n return \"\" + \"<div class=\\\"sectionbody\\\">\\n\" + (node.$content()) + \"\\n</div>\"\n } else {\n return node.$content()\n }; return nil; })()) + \"\\n\" + \"</div>\";\n };\n }, TMP_Html5Converter_section_9.$$arity = 1);\n \n Opal.def(self, '$admonition', TMP_Html5Converter_admonition_10 = function $$admonition(node) {\n var $a, self = this, id_attr = nil, name = nil, title_element = nil, label = nil, role = nil;\n\n \n id_attr = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n name = node.$attr(\"name\");\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n if ($truthy(node.$document()['$attr?'](\"icons\"))) {\n if ($truthy(($truthy($a = node.$document()['$attr?'](\"icons\", \"font\")) ? node['$attr?'](\"icon\")['$!']() : $a))) {\n label = \"\" + \"<i class=\\\"fa icon-\" + (name) + \"\\\" title=\\\"\" + (node.$attr(\"textlabel\")) + \"\\\"></i>\"\n } else {\n label = \"\" + \"<img src=\\\"\" + (node.$icon_uri(name)) + \"\\\" alt=\\\"\" + (node.$attr(\"textlabel\")) + \"\\\"\" + (self.void_element_slash) + \">\"\n }\n } else {\n label = \"\" + \"<div class=\\\"title\\\">\" + (node.$attr(\"textlabel\")) + \"</div>\"\n };\n return \"\" + \"<div\" + (id_attr) + \" class=\\\"admonitionblock \" + (name) + (($truthy($a = (role = node.$role())) ? \"\" + \" \" + (role) : $a)) + \"\\\">\\n\" + \"<table>\\n\" + \"<tr>\\n\" + \"<td class=\\\"icon\\\">\\n\" + (label) + \"\\n\" + \"</td>\\n\" + \"<td class=\\\"content\\\">\\n\" + (title_element) + (node.$content()) + \"\\n\" + \"</td>\\n\" + \"</tr>\\n\" + \"</table>\\n\" + \"</div>\";\n }, TMP_Html5Converter_admonition_10.$$arity = 1);\n \n Opal.def(self, '$audio', TMP_Html5Converter_audio_11 = function $$audio(node) {\n var $a, self = this, xml = nil, id_attribute = nil, classes = nil, class_attribute = nil, title_element = nil, start_t = nil, end_t = nil, time_anchor = nil;\n\n \n xml = self.xml_mode;\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [\"audioblock\", node.$role()].$compact();\n class_attribute = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n start_t = node.$attr(\"start\", nil, false);\n end_t = node.$attr(\"end\", nil, false);\n time_anchor = (function() {if ($truthy(($truthy($a = start_t) ? $a : end_t))) {\n return \"\" + \"#t=\" + (start_t) + ((function() {if ($truthy(end_t)) {\n return \",\"\n } else {\n return nil\n }; return nil; })()) + (end_t)\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\\n\" + (title_element) + \"<div class=\\\"content\\\">\\n\" + \"<audio src=\\\"\" + (node.$media_uri(node.$attr(\"target\"))) + (time_anchor) + \"\\\"\" + ((function() {if ($truthy(node['$option?'](\"autoplay\"))) {\n \n return self.$append_boolean_attribute(\"autoplay\", xml);\n } else {\n return nil\n }; return nil; })()) + ((function() {if ($truthy(node['$option?'](\"nocontrols\"))) {\n return nil\n } else {\n \n return self.$append_boolean_attribute(\"controls\", xml);\n }; return nil; })()) + ((function() {if ($truthy(node['$option?'](\"loop\"))) {\n \n return self.$append_boolean_attribute(\"loop\", xml);\n } else {\n return nil\n }; return nil; })()) + \">\\n\" + \"Your browser does not support the audio tag.\\n\" + \"</audio>\\n\" + \"</div>\\n\" + \"</div>\";\n }, TMP_Html5Converter_audio_11.$$arity = 1);\n \n Opal.def(self, '$colist', TMP_Html5Converter_colist_14 = function $$colist(node) {\n var $a, TMP_12, TMP_13, self = this, result = nil, id_attribute = nil, classes = nil, class_attribute = nil, font_icons = nil, num = nil;\n\n \n result = [];\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [\"colist\", node.$style(), node.$role()].$compact();\n class_attribute = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n result['$<<'](\"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\");\n if ($truthy(node['$title?']())) {\n result['$<<'](\"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\")};\n if ($truthy(node.$document()['$attr?'](\"icons\"))) {\n \n result['$<<'](\"<table>\");\n $a = [node.$document()['$attr?'](\"icons\", \"font\"), 0], (font_icons = $a[0]), (num = $a[1]), $a;\n $send(node.$items(), 'each', [], (TMP_12 = function(item){var self = TMP_12.$$s || this, num_label = nil;\n if (self.void_element_slash == null) self.void_element_slash = nil;\nif (item == null) item = nil;\n \n num = $rb_plus(num, 1);\n if ($truthy(font_icons)) {\n num_label = \"\" + \"<i class=\\\"conum\\\" data-value=\\\"\" + (num) + \"\\\"></i><b>\" + (num) + \"</b>\"\n } else {\n num_label = \"\" + \"<img src=\\\"\" + (node.$icon_uri(\"\" + \"callouts/\" + (num))) + \"\\\" alt=\\\"\" + (num) + \"\\\"\" + (self.void_element_slash) + \">\"\n };\n return result['$<<'](\"\" + \"<tr>\\n\" + \"<td>\" + (num_label) + \"</td>\\n\" + \"<td>\" + (item.$text()) + ((function() {if ($truthy(item['$blocks?']())) {\n return $rb_plus($$($nesting, 'LF'), item.$content())\n } else {\n return \"\"\n }; return nil; })()) + \"</td>\\n\" + \"</tr>\");}, TMP_12.$$s = self, TMP_12.$$arity = 1, TMP_12));\n result['$<<'](\"</table>\");\n } else {\n \n result['$<<'](\"<ol>\");\n $send(node.$items(), 'each', [], (TMP_13 = function(item){var self = TMP_13.$$s || this;\nif (item == null) item = nil;\n return result['$<<'](\"\" + \"<li>\\n\" + \"<p>\" + (item.$text()) + \"</p>\" + ((function() {if ($truthy(item['$blocks?']())) {\n return $rb_plus($$($nesting, 'LF'), item.$content())\n } else {\n return \"\"\n }; return nil; })()) + \"\\n\" + \"</li>\")}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13));\n result['$<<'](\"</ol>\");\n };\n result['$<<'](\"</div>\");\n return $rb_times(result, $$($nesting, 'LF'));\n }, TMP_Html5Converter_colist_14.$$arity = 1);\n \n Opal.def(self, '$dlist', TMP_Html5Converter_dlist_21 = function $$dlist(node) {\n var TMP_15, $a, TMP_17, TMP_19, self = this, result = nil, id_attribute = nil, classes = nil, $case = nil, class_attribute = nil, slash = nil, col_style_attribute = nil, dt_style_attribute = nil;\n\n \n result = [];\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = (function() {$case = node.$style();\n if (\"qanda\"['$===']($case)) {return [\"qlist\", \"qanda\", node.$role()]}\n else if (\"horizontal\"['$===']($case)) {return [\"hdlist\", node.$role()]}\n else {return [\"dlist\", node.$style(), node.$role()]}})().$compact();\n class_attribute = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n result['$<<'](\"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\");\n if ($truthy(node['$title?']())) {\n result['$<<'](\"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\")};\n $case = node.$style();\n if (\"qanda\"['$===']($case)) {\n result['$<<'](\"<ol>\");\n $send(node.$items(), 'each', [], (TMP_15 = function(terms, dd){var self = TMP_15.$$s || this, TMP_16;\nif (terms == null) terms = nil;if (dd == null) dd = nil;\n \n result['$<<'](\"<li>\");\n $send([].concat(Opal.to_a(terms)), 'each', [], (TMP_16 = function(dt){var self = TMP_16.$$s || this;\nif (dt == null) dt = nil;\n return result['$<<'](\"\" + \"<p><em>\" + (dt.$text()) + \"</em></p>\")}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16));\n if ($truthy(dd)) {\n \n if ($truthy(dd['$text?']())) {\n result['$<<'](\"\" + \"<p>\" + (dd.$text()) + \"</p>\")};\n if ($truthy(dd['$blocks?']())) {\n result['$<<'](dd.$content())};};\n return result['$<<'](\"</li>\");}, TMP_15.$$s = self, TMP_15.$$arity = 2, TMP_15));\n result['$<<'](\"</ol>\");}\n else if (\"horizontal\"['$===']($case)) {\n slash = self.void_element_slash;\n result['$<<'](\"<table>\");\n if ($truthy(($truthy($a = node['$attr?'](\"labelwidth\")) ? $a : node['$attr?'](\"itemwidth\")))) {\n \n result['$<<'](\"<colgroup>\");\n col_style_attribute = (function() {if ($truthy(node['$attr?'](\"labelwidth\"))) {\n return \"\" + \" style=\\\"width: \" + (node.$attr(\"labelwidth\").$chomp(\"%\")) + \"%;\\\"\"\n } else {\n return nil\n }; return nil; })();\n result['$<<'](\"\" + \"<col\" + (col_style_attribute) + (slash) + \">\");\n col_style_attribute = (function() {if ($truthy(node['$attr?'](\"itemwidth\"))) {\n return \"\" + \" style=\\\"width: \" + (node.$attr(\"itemwidth\").$chomp(\"%\")) + \"%;\\\"\"\n } else {\n return nil\n }; return nil; })();\n result['$<<'](\"\" + \"<col\" + (col_style_attribute) + (slash) + \">\");\n result['$<<'](\"</colgroup>\");};\n $send(node.$items(), 'each', [], (TMP_17 = function(terms, dd){var self = TMP_17.$$s || this, TMP_18, terms_array = nil, last_term = nil;\nif (terms == null) terms = nil;if (dd == null) dd = nil;\n \n result['$<<'](\"<tr>\");\n result['$<<'](\"\" + \"<td class=\\\"hdlist1\" + ((function() {if ($truthy(node['$option?'](\"strong\"))) {\n return \" strong\"\n } else {\n return nil\n }; return nil; })()) + \"\\\">\");\n terms_array = [].concat(Opal.to_a(terms));\n last_term = terms_array['$[]'](-1);\n $send(terms_array, 'each', [], (TMP_18 = function(dt){var self = TMP_18.$$s || this;\nif (dt == null) dt = nil;\n \n result['$<<'](dt.$text());\n if ($truthy(dt['$!='](last_term))) {\n return result['$<<'](\"\" + \"<br\" + (slash) + \">\")\n } else {\n return nil\n };}, TMP_18.$$s = self, TMP_18.$$arity = 1, TMP_18));\n result['$<<'](\"</td>\");\n result['$<<'](\"<td class=\\\"hdlist2\\\">\");\n if ($truthy(dd)) {\n \n if ($truthy(dd['$text?']())) {\n result['$<<'](\"\" + \"<p>\" + (dd.$text()) + \"</p>\")};\n if ($truthy(dd['$blocks?']())) {\n result['$<<'](dd.$content())};};\n result['$<<'](\"</td>\");\n return result['$<<'](\"</tr>\");}, TMP_17.$$s = self, TMP_17.$$arity = 2, TMP_17));\n result['$<<'](\"</table>\");}\n else {\n result['$<<'](\"<dl>\");\n dt_style_attribute = (function() {if ($truthy(node.$style())) {\n return nil\n } else {\n return \" class=\\\"hdlist1\\\"\"\n }; return nil; })();\n $send(node.$items(), 'each', [], (TMP_19 = function(terms, dd){var self = TMP_19.$$s || this, TMP_20;\nif (terms == null) terms = nil;if (dd == null) dd = nil;\n \n $send([].concat(Opal.to_a(terms)), 'each', [], (TMP_20 = function(dt){var self = TMP_20.$$s || this;\nif (dt == null) dt = nil;\n return result['$<<'](\"\" + \"<dt\" + (dt_style_attribute) + \">\" + (dt.$text()) + \"</dt>\")}, TMP_20.$$s = self, TMP_20.$$arity = 1, TMP_20));\n if ($truthy(dd)) {\n \n result['$<<'](\"<dd>\");\n if ($truthy(dd['$text?']())) {\n result['$<<'](\"\" + \"<p>\" + (dd.$text()) + \"</p>\")};\n if ($truthy(dd['$blocks?']())) {\n result['$<<'](dd.$content())};\n return result['$<<'](\"</dd>\");\n } else {\n return nil\n };}, TMP_19.$$s = self, TMP_19.$$arity = 2, TMP_19));\n result['$<<'](\"</dl>\");};\n result['$<<'](\"</div>\");\n return $rb_times(result, $$($nesting, 'LF'));\n }, TMP_Html5Converter_dlist_21.$$arity = 1);\n \n Opal.def(self, '$example', TMP_Html5Converter_example_22 = function $$example(node) {\n var $a, self = this, id_attribute = nil, title_element = nil, role = nil;\n\n \n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$captioned_title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attribute) + \" class=\\\"exampleblock\" + (($truthy($a = (role = node.$role())) ? \"\" + \" \" + (role) : $a)) + \"\\\">\\n\" + (title_element) + \"<div class=\\\"content\\\">\\n\" + (node.$content()) + \"\\n\" + \"</div>\\n\" + \"</div>\";\n }, TMP_Html5Converter_example_22.$$arity = 1);\n \n Opal.def(self, '$floating_title', TMP_Html5Converter_floating_title_23 = function $$floating_title(node) {\n var self = this, tag_name = nil, id_attribute = nil, classes = nil;\n\n \n tag_name = \"\" + \"h\" + ($rb_plus(node.$level(), 1));\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [node.$style(), node.$role()].$compact();\n return \"\" + \"<\" + (tag_name) + (id_attribute) + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\">\" + (node.$title()) + \"</\" + (tag_name) + \">\";\n }, TMP_Html5Converter_floating_title_23.$$arity = 1);\n \n Opal.def(self, '$image', TMP_Html5Converter_image_24 = function $$image(node) {\n var $a, $b, $c, self = this, target = nil, width_attr = nil, height_attr = nil, svg = nil, obj = nil, img = nil, fallback = nil, window_attr = nil, window = nil, id_attr = nil, classes = nil, class_attr = nil, styles = nil, style_attr = nil, title_el = nil;\n\n \n target = node.$attr(\"target\");\n width_attr = (function() {if ($truthy(node['$attr?'](\"width\"))) {\n return \"\" + \" width=\\\"\" + (node.$attr(\"width\")) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n height_attr = (function() {if ($truthy(node['$attr?'](\"height\"))) {\n return \"\" + \" height=\\\"\" + (node.$attr(\"height\")) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = node['$attr?'](\"format\", \"svg\", false)) ? $c : target['$include?'](\".svg\"))) ? $rb_lt(node.$document().$safe(), $$$($$($nesting, 'SafeMode'), 'SECURE')) : $b)) ? ($truthy($b = (svg = node['$option?'](\"inline\"))) ? $b : (obj = node['$option?'](\"interactive\"))) : $a))) {\n if ($truthy(svg)) {\n img = ($truthy($a = self.$read_svg_contents(node, target)) ? $a : \"\" + \"<span class=\\\"alt\\\">\" + (node.$alt()) + \"</span>\")\n } else if ($truthy(obj)) {\n \n fallback = (function() {if ($truthy(node['$attr?'](\"fallback\"))) {\n return \"\" + \"<img src=\\\"\" + (node.$image_uri(node.$attr(\"fallback\"))) + \"\\\" alt=\\\"\" + (self.$encode_quotes(node.$alt())) + \"\\\"\" + (width_attr) + (height_attr) + (self.void_element_slash) + \">\"\n } else {\n return \"\" + \"<span class=\\\"alt\\\">\" + (node.$alt()) + \"</span>\"\n }; return nil; })();\n img = \"\" + \"<object type=\\\"image/svg+xml\\\" data=\\\"\" + (node.$image_uri(target)) + \"\\\"\" + (width_attr) + (height_attr) + \">\" + (fallback) + \"</object>\";}};\n img = ($truthy($a = img) ? $a : \"\" + \"<img src=\\\"\" + (node.$image_uri(target)) + \"\\\" alt=\\\"\" + (self.$encode_quotes(node.$alt())) + \"\\\"\" + (width_attr) + (height_attr) + (self.void_element_slash) + \">\");\n if ($truthy(node['$attr?'](\"link\"))) {\n \n if ($truthy(node['$attr?'](\"window\"))) {\n window_attr = \"\" + \" target=\\\"\" + ((window = node.$attr(\"window\"))) + \"\\\"\" + ((function() {if ($truthy(($truthy($a = window['$=='](\"_blank\")) ? $a : node['$option?'](\"noopener\")))) {\n return \" rel=\\\"noopener\\\"\"\n } else {\n return \"\"\n }; return nil; })())};\n img = \"\" + \"<a class=\\\"image\\\" href=\\\"\" + (node.$attr(\"link\")) + \"\\\"\" + (window_attr) + \">\" + (img) + \"</a>\";};\n id_attr = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [\"imageblock\", node.$role()].$compact();\n class_attr = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n styles = [];\n if ($truthy(node['$attr?'](\"align\"))) {\n styles['$<<'](\"\" + \"text-align: \" + (node.$attr(\"align\")))};\n if ($truthy(node['$attr?'](\"float\"))) {\n styles['$<<'](\"\" + \"float: \" + (node.$attr(\"float\")))};\n style_attr = (function() {if ($truthy(styles['$empty?']())) {\n return nil\n } else {\n return \"\" + \" style=\\\"\" + ($rb_times(styles, \";\")) + \"\\\"\"\n }; return nil; })();\n title_el = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"\\n<div class=\\\"title\\\">\" + (node.$captioned_title()) + \"</div>\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attr) + (class_attr) + (style_attr) + \">\\n\" + \"<div class=\\\"content\\\">\\n\" + (img) + \"\\n\" + \"</div>\" + (title_el) + \"\\n\" + \"</div>\";\n }, TMP_Html5Converter_image_24.$$arity = 1);\n \n Opal.def(self, '$listing', TMP_Html5Converter_listing_25 = function $$listing(node) {\n var $a, self = this, nowrap = nil, language = nil, code_attrs = nil, $case = nil, pre_class = nil, pre_start = nil, pre_end = nil, id_attribute = nil, title_element = nil, role = nil;\n\n \n nowrap = ($truthy($a = node.$document()['$attr?'](\"prewrap\")['$!']()) ? $a : node['$option?'](\"nowrap\"));\n if (node.$style()['$=='](\"source\")) {\n \n if ($truthy((language = node.$attr(\"language\", nil, false)))) {\n code_attrs = \"\" + \" data-lang=\\\"\" + (language) + \"\\\"\"\n } else {\n code_attrs = nil\n };\n $case = node.$document().$attr(\"source-highlighter\");\n if (\"coderay\"['$===']($case)) {pre_class = \"\" + \" class=\\\"CodeRay highlight\" + ((function() {if ($truthy(nowrap)) {\n return \" nowrap\"\n } else {\n return nil\n }; return nil; })()) + \"\\\"\"}\n else if (\"pygments\"['$===']($case)) {pre_class = \"\" + \" class=\\\"pygments highlight\" + ((function() {if ($truthy(nowrap)) {\n return \" nowrap\"\n } else {\n return nil\n }; return nil; })()) + \"\\\"\"}\n else if (\"highlightjs\"['$===']($case) || \"highlight.js\"['$===']($case)) {\n pre_class = \"\" + \" class=\\\"highlightjs highlight\" + ((function() {if ($truthy(nowrap)) {\n return \" nowrap\"\n } else {\n return nil\n }; return nil; })()) + \"\\\"\";\n if ($truthy(language)) {\n code_attrs = \"\" + \" class=\\\"language-\" + (language) + \" hljs\\\"\" + (code_attrs)};}\n else if (\"prettify\"['$===']($case)) {\n pre_class = \"\" + \" class=\\\"prettyprint highlight\" + ((function() {if ($truthy(nowrap)) {\n return \" nowrap\"\n } else {\n return nil\n }; return nil; })()) + ((function() {if ($truthy(node['$attr?'](\"linenums\", nil, false))) {\n return \" linenums\"\n } else {\n return nil\n }; return nil; })()) + \"\\\"\";\n if ($truthy(language)) {\n code_attrs = \"\" + \" class=\\\"language-\" + (language) + \"\\\"\" + (code_attrs)};}\n else if (\"html-pipeline\"['$===']($case)) {\n pre_class = (function() {if ($truthy(language)) {\n return \"\" + \" lang=\\\"\" + (language) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n code_attrs = nil;}\n else {\n pre_class = \"\" + \" class=\\\"highlight\" + ((function() {if ($truthy(nowrap)) {\n return \" nowrap\"\n } else {\n return nil\n }; return nil; })()) + \"\\\"\";\n if ($truthy(language)) {\n code_attrs = \"\" + \" class=\\\"language-\" + (language) + \"\\\"\" + (code_attrs)};};\n pre_start = \"\" + \"<pre\" + (pre_class) + \"><code\" + (code_attrs) + \">\";\n pre_end = \"</code></pre>\";\n } else {\n \n pre_start = \"\" + \"<pre\" + ((function() {if ($truthy(nowrap)) {\n return \" class=\\\"nowrap\\\"\"\n } else {\n return nil\n }; return nil; })()) + \">\";\n pre_end = \"</pre>\";\n };\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$captioned_title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attribute) + \" class=\\\"listingblock\" + (($truthy($a = (role = node.$role())) ? \"\" + \" \" + (role) : $a)) + \"\\\">\\n\" + (title_element) + \"<div class=\\\"content\\\">\\n\" + (pre_start) + (node.$content()) + (pre_end) + \"\\n\" + \"</div>\\n\" + \"</div>\";\n }, TMP_Html5Converter_listing_25.$$arity = 1);\n \n Opal.def(self, '$literal', TMP_Html5Converter_literal_26 = function $$literal(node) {\n var $a, self = this, id_attribute = nil, title_element = nil, nowrap = nil, role = nil;\n\n \n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n nowrap = ($truthy($a = node.$document()['$attr?'](\"prewrap\")['$!']()) ? $a : node['$option?'](\"nowrap\"));\n return \"\" + \"<div\" + (id_attribute) + \" class=\\\"literalblock\" + (($truthy($a = (role = node.$role())) ? \"\" + \" \" + (role) : $a)) + \"\\\">\\n\" + (title_element) + \"<div class=\\\"content\\\">\\n\" + \"<pre\" + ((function() {if ($truthy(nowrap)) {\n return \" class=\\\"nowrap\\\"\"\n } else {\n return nil\n }; return nil; })()) + \">\" + (node.$content()) + \"</pre>\\n\" + \"</div>\\n\" + \"</div>\";\n }, TMP_Html5Converter_literal_26.$$arity = 1);\n \n Opal.def(self, '$stem', TMP_Html5Converter_stem_27 = function $$stem(node) {\n var $a, $b, self = this, id_attribute = nil, title_element = nil, open = nil, close = nil, equation = nil, role = nil;\n\n \n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n $b = $$($nesting, 'BLOCK_MATH_DELIMITERS')['$[]'](node.$style().$to_sym()), $a = Opal.to_ary($b), (open = ($a[0] == null ? nil : $a[0])), (close = ($a[1] == null ? nil : $a[1])), $b;\n if ($truthy(($truthy($a = (equation = node.$content())['$start_with?'](open)) ? equation['$end_with?'](close) : $a))) {\n } else {\n equation = \"\" + (open) + (equation) + (close)\n };\n return \"\" + \"<div\" + (id_attribute) + \" class=\\\"stemblock\" + (($truthy($a = (role = node.$role())) ? \"\" + \" \" + (role) : $a)) + \"\\\">\\n\" + (title_element) + \"<div class=\\\"content\\\">\\n\" + (equation) + \"\\n\" + \"</div>\\n\" + \"</div>\";\n }, TMP_Html5Converter_stem_27.$$arity = 1);\n \n Opal.def(self, '$olist', TMP_Html5Converter_olist_29 = function $$olist(node) {\n var TMP_28, self = this, result = nil, id_attribute = nil, classes = nil, class_attribute = nil, type_attribute = nil, keyword = nil, start_attribute = nil, reversed_attribute = nil;\n\n \n result = [];\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [\"olist\", node.$style(), node.$role()].$compact();\n class_attribute = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n result['$<<'](\"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\");\n if ($truthy(node['$title?']())) {\n result['$<<'](\"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\")};\n type_attribute = (function() {if ($truthy((keyword = node.$list_marker_keyword()))) {\n return \"\" + \" type=\\\"\" + (keyword) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n start_attribute = (function() {if ($truthy(node['$attr?'](\"start\"))) {\n return \"\" + \" start=\\\"\" + (node.$attr(\"start\")) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n reversed_attribute = (function() {if ($truthy(node['$option?'](\"reversed\"))) {\n \n return self.$append_boolean_attribute(\"reversed\", self.xml_mode);\n } else {\n return nil\n }; return nil; })();\n result['$<<'](\"\" + \"<ol class=\\\"\" + (node.$style()) + \"\\\"\" + (type_attribute) + (start_attribute) + (reversed_attribute) + \">\");\n $send(node.$items(), 'each', [], (TMP_28 = function(item){var self = TMP_28.$$s || this;\nif (item == null) item = nil;\n \n result['$<<'](\"<li>\");\n result['$<<'](\"\" + \"<p>\" + (item.$text()) + \"</p>\");\n if ($truthy(item['$blocks?']())) {\n result['$<<'](item.$content())};\n return result['$<<'](\"</li>\");}, TMP_28.$$s = self, TMP_28.$$arity = 1, TMP_28));\n result['$<<'](\"</ol>\");\n result['$<<'](\"</div>\");\n return $rb_times(result, $$($nesting, 'LF'));\n }, TMP_Html5Converter_olist_29.$$arity = 1);\n \n Opal.def(self, '$open', TMP_Html5Converter_open_30 = function $$open(node) {\n var $a, $b, $c, self = this, style = nil, id_attr = nil, title_el = nil, role = nil;\n\n if ((style = node.$style())['$=='](\"abstract\")) {\n if ($truthy((($a = node.$parent()['$=='](node.$document())) ? node.$document().$doctype()['$=='](\"book\") : node.$parent()['$=='](node.$document())))) {\n \n self.$warn(\"asciidoctor: WARNING: abstract block cannot be used in a document without a title when doctype is book. Excluding block content.\");\n return \"\";\n } else {\n \n id_attr = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n title_el = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attr) + \" class=\\\"quoteblock abstract\" + (($truthy($a = (role = node.$role())) ? \"\" + \" \" + (role) : $a)) + \"\\\">\\n\" + (title_el) + \"<blockquote>\\n\" + (node.$content()) + \"\\n\" + \"</blockquote>\\n\" + \"</div>\";\n }\n } else if ($truthy((($a = style['$=='](\"partintro\")) ? ($truthy($b = ($truthy($c = $rb_gt(node.$level(), 0)) ? $c : node.$parent().$context()['$!='](\"section\"))) ? $b : node.$document().$doctype()['$!='](\"book\")) : style['$=='](\"partintro\")))) {\n \n self.$warn(\"asciidoctor: ERROR: partintro block can only be used when doctype is book and it's a child of a book part. Excluding block content.\");\n return \"\";\n } else {\n \n id_attr = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n title_el = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attr) + \" class=\\\"openblock\" + ((function() {if ($truthy(($truthy($a = style) ? style['$!='](\"open\") : $a))) {\n return \"\" + \" \" + (style)\n } else {\n return \"\"\n }; return nil; })()) + (($truthy($a = (role = node.$role())) ? \"\" + \" \" + (role) : $a)) + \"\\\">\\n\" + (title_el) + \"<div class=\\\"content\\\">\\n\" + (node.$content()) + \"\\n\" + \"</div>\\n\" + \"</div>\";\n }\n }, TMP_Html5Converter_open_30.$$arity = 1);\n \n Opal.def(self, '$page_break', TMP_Html5Converter_page_break_31 = function $$page_break(node) {\n var self = this;\n\n return \"<div style=\\\"page-break-after: always;\\\"></div>\"\n }, TMP_Html5Converter_page_break_31.$$arity = 1);\n \n Opal.def(self, '$paragraph', TMP_Html5Converter_paragraph_32 = function $$paragraph(node) {\n var self = this, class_attribute = nil, attributes = nil;\n\n \n class_attribute = (function() {if ($truthy(node.$role())) {\n return \"\" + \"class=\\\"paragraph \" + (node.$role()) + \"\\\"\"\n } else {\n return \"class=\\\"paragraph\\\"\"\n }; return nil; })();\n attributes = (function() {if ($truthy(node.$id())) {\n return \"\" + \"id=\\\"\" + (node.$id()) + \"\\\" \" + (class_attribute)\n } else {\n return class_attribute\n }; return nil; })();\n if ($truthy(node['$title?']())) {\n return \"\" + \"<div \" + (attributes) + \">\\n\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\\n\" + \"<p>\" + (node.$content()) + \"</p>\\n\" + \"</div>\"\n } else {\n return \"\" + \"<div \" + (attributes) + \">\\n\" + \"<p>\" + (node.$content()) + \"</p>\\n\" + \"</div>\"\n };\n }, TMP_Html5Converter_paragraph_32.$$arity = 1);\n \n Opal.def(self, '$preamble', TMP_Html5Converter_preamble_33 = function $$preamble(node) {\n var $a, $b, self = this, doc = nil, toc = nil;\n\n \n if ($truthy(($truthy($a = ($truthy($b = (doc = node.$document())['$attr?'](\"toc-placement\", \"preamble\")) ? doc['$sections?']() : $b)) ? doc['$attr?'](\"toc\") : $a))) {\n toc = \"\" + \"\\n\" + \"<div id=\\\"toc\\\" class=\\\"\" + (doc.$attr(\"toc-class\", \"toc\")) + \"\\\">\\n\" + \"<div id=\\\"toctitle\\\">\" + (doc.$attr(\"toc-title\")) + \"</div>\\n\" + (self.$outline(doc)) + \"\\n\" + \"</div>\"\n } else {\n toc = nil\n };\n return \"\" + \"<div id=\\\"preamble\\\">\\n\" + \"<div class=\\\"sectionbody\\\">\\n\" + (node.$content()) + \"\\n\" + \"</div>\" + (toc) + \"\\n\" + \"</div>\";\n }, TMP_Html5Converter_preamble_33.$$arity = 1);\n \n Opal.def(self, '$quote', TMP_Html5Converter_quote_34 = function $$quote(node) {\n var $a, self = this, id_attribute = nil, classes = nil, class_attribute = nil, title_element = nil, attribution = nil, citetitle = nil, cite_element = nil, attribution_text = nil, attribution_element = nil;\n\n \n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [\"quoteblock\", node.$role()].$compact();\n class_attribute = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"\\n<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\"\n } else {\n return nil\n }; return nil; })();\n attribution = (function() {if ($truthy(node['$attr?'](\"attribution\"))) {\n \n return node.$attr(\"attribution\");\n } else {\n return nil\n }; return nil; })();\n citetitle = (function() {if ($truthy(node['$attr?'](\"citetitle\"))) {\n \n return node.$attr(\"citetitle\");\n } else {\n return nil\n }; return nil; })();\n if ($truthy(($truthy($a = attribution) ? $a : citetitle))) {\n \n cite_element = (function() {if ($truthy(citetitle)) {\n return \"\" + \"<cite>\" + (citetitle) + \"</cite>\"\n } else {\n return nil\n }; return nil; })();\n attribution_text = (function() {if ($truthy(attribution)) {\n return \"\" + \"— \" + (attribution) + ((function() {if ($truthy(citetitle)) {\n return \"\" + \"<br\" + (self.void_element_slash) + \">\\n\"\n } else {\n return nil\n }; return nil; })())\n } else {\n return nil\n }; return nil; })();\n attribution_element = \"\" + \"\\n<div class=\\\"attribution\\\">\\n\" + (attribution_text) + (cite_element) + \"\\n</div>\";\n } else {\n attribution_element = nil\n };\n return \"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\" + (title_element) + \"\\n\" + \"<blockquote>\\n\" + (node.$content()) + \"\\n\" + \"</blockquote>\" + (attribution_element) + \"\\n\" + \"</div>\";\n }, TMP_Html5Converter_quote_34.$$arity = 1);\n \n Opal.def(self, '$thematic_break', TMP_Html5Converter_thematic_break_35 = function $$thematic_break(node) {\n var self = this;\n\n return \"\" + \"<hr\" + (self.void_element_slash) + \">\"\n }, TMP_Html5Converter_thematic_break_35.$$arity = 1);\n \n Opal.def(self, '$sidebar', TMP_Html5Converter_sidebar_36 = function $$sidebar(node) {\n var $a, self = this, id_attribute = nil, title_element = nil, role = nil;\n\n \n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\\n\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attribute) + \" class=\\\"sidebarblock\" + (($truthy($a = (role = node.$role())) ? \"\" + \" \" + (role) : $a)) + \"\\\">\\n\" + \"<div class=\\\"content\\\">\\n\" + (title_element) + (node.$content()) + \"\\n\" + \"</div>\\n\" + \"</div>\";\n }, TMP_Html5Converter_sidebar_36.$$arity = 1);\n \n Opal.def(self, '$table', TMP_Html5Converter_table_42 = function $$table(node) {\n var $a, TMP_37, TMP_38, TMP_39, self = this, result = nil, id_attribute = nil, classes = nil, styles = nil, role = nil, class_attribute = nil, style_attribute = nil, slash = nil, tag = nil;\n\n \n result = [];\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [\"tableblock\", \"\" + \"frame-\" + (node.$attr(\"frame\", \"all\")), \"\" + \"grid-\" + (node.$attr(\"grid\", \"all\"))];\n styles = [];\n if ($truthy(($truthy($a = node['$option?'](\"autowidth\")) ? node['$attr?'](\"width\", nil, false)['$!']() : $a))) {\n } else if ($truthy(node['$attr?'](\"tablepcwidth\", 100))) {\n classes['$<<'](\"spread\")\n } else {\n styles['$<<'](\"\" + \"width: \" + (node.$attr(\"tablepcwidth\")) + \"%;\")\n };\n if ($truthy((role = node.$role()))) {\n classes['$<<'](role)};\n class_attribute = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n if ($truthy(node['$attr?'](\"float\"))) {\n styles['$<<'](\"\" + \"float: \" + (node.$attr(\"float\")) + \";\")};\n style_attribute = (function() {if ($truthy(styles['$empty?']())) {\n return nil\n } else {\n return \"\" + \" style=\\\"\" + ($rb_times(styles, \" \")) + \"\\\"\"\n }; return nil; })();\n result['$<<'](\"\" + \"<table\" + (id_attribute) + (class_attribute) + (style_attribute) + \">\");\n if ($truthy(node['$title?']())) {\n result['$<<'](\"\" + \"<caption class=\\\"title\\\">\" + (node.$captioned_title()) + \"</caption>\")};\n if ($truthy($rb_gt(node.$attr(\"rowcount\"), 0))) {\n \n slash = self.void_element_slash;\n result['$<<'](\"<colgroup>\");\n if ($truthy(node['$option?'](\"autowidth\"))) {\n \n tag = \"\" + \"<col\" + (slash) + \">\";\n $send(node.$columns().$size(), 'times', [], (TMP_37 = function(){var self = TMP_37.$$s || this;\n\n return result['$<<'](tag)}, TMP_37.$$s = self, TMP_37.$$arity = 0, TMP_37));\n } else {\n $send(node.$columns(), 'each', [], (TMP_38 = function(col){var self = TMP_38.$$s || this;\nif (col == null) col = nil;\n return result['$<<'](\"\" + \"<col style=\\\"width: \" + (col.$attr(\"colpcwidth\")) + \"%;\\\"\" + (slash) + \">\")}, TMP_38.$$s = self, TMP_38.$$arity = 1, TMP_38))\n };\n result['$<<'](\"</colgroup>\");\n $send(node.$rows().$by_section(), 'each', [], (TMP_39 = function(tsec, rows){var self = TMP_39.$$s || this, TMP_40;\nif (tsec == null) tsec = nil;if (rows == null) rows = nil;\n \n if ($truthy(rows['$empty?']())) {\n return nil;};\n result['$<<'](\"\" + \"<t\" + (tsec) + \">\");\n $send(rows, 'each', [], (TMP_40 = function(row){var self = TMP_40.$$s || this, TMP_41;\nif (row == null) row = nil;\n \n result['$<<'](\"<tr>\");\n $send(row, 'each', [], (TMP_41 = function(cell){var self = TMP_41.$$s || this, $b, cell_content = nil, $case = nil, cell_tag_name = nil, cell_class_attribute = nil, cell_colspan_attribute = nil, cell_rowspan_attribute = nil, cell_style_attribute = nil;\nif (cell == null) cell = nil;\n \n if (tsec['$=='](\"head\")) {\n cell_content = cell.$text()\n } else {\n $case = cell.$style();\n if (\"asciidoc\"['$===']($case)) {cell_content = \"\" + \"<div>\" + (cell.$content()) + \"</div>\"}\n else if (\"verse\"['$===']($case)) {cell_content = \"\" + \"<div class=\\\"verse\\\">\" + (cell.$text()) + \"</div>\"}\n else if (\"literal\"['$===']($case)) {cell_content = \"\" + \"<div class=\\\"literal\\\"><pre>\" + (cell.$text()) + \"</pre></div>\"}\n else {cell_content = (function() {if ($truthy((cell_content = cell.$content())['$empty?']())) {\n return \"\"\n } else {\n return \"\" + \"<p class=\\\"tableblock\\\">\" + ($rb_times(cell_content, \"\" + \"</p>\\n\" + \"<p class=\\\"tableblock\\\">\")) + \"</p>\"\n }; return nil; })()}\n };\n cell_tag_name = (function() {if ($truthy(($truthy($b = tsec['$=='](\"head\")) ? $b : cell.$style()['$=='](\"header\")))) {\n return \"th\"\n } else {\n return \"td\"\n }; return nil; })();\n cell_class_attribute = \"\" + \" class=\\\"tableblock halign-\" + (cell.$attr(\"halign\")) + \" valign-\" + (cell.$attr(\"valign\")) + \"\\\"\";\n cell_colspan_attribute = (function() {if ($truthy(cell.$colspan())) {\n return \"\" + \" colspan=\\\"\" + (cell.$colspan()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n cell_rowspan_attribute = (function() {if ($truthy(cell.$rowspan())) {\n return \"\" + \" rowspan=\\\"\" + (cell.$rowspan()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n cell_style_attribute = (function() {if ($truthy(node.$document()['$attr?'](\"cellbgcolor\"))) {\n return \"\" + \" style=\\\"background-color: \" + (node.$document().$attr(\"cellbgcolor\")) + \";\\\"\"\n } else {\n return nil\n }; return nil; })();\n return result['$<<'](\"\" + \"<\" + (cell_tag_name) + (cell_class_attribute) + (cell_colspan_attribute) + (cell_rowspan_attribute) + (cell_style_attribute) + \">\" + (cell_content) + \"</\" + (cell_tag_name) + \">\");}, TMP_41.$$s = self, TMP_41.$$arity = 1, TMP_41));\n return result['$<<'](\"</tr>\");}, TMP_40.$$s = self, TMP_40.$$arity = 1, TMP_40));\n return result['$<<'](\"\" + \"</t\" + (tsec) + \">\");}, TMP_39.$$s = self, TMP_39.$$arity = 2, TMP_39));};\n result['$<<'](\"</table>\");\n return $rb_times(result, $$($nesting, 'LF'));\n }, TMP_Html5Converter_table_42.$$arity = 1);\n \n Opal.def(self, '$toc', TMP_Html5Converter_toc_43 = function $$toc(node) {\n var $a, $b, self = this, doc = nil, id_attr = nil, title_id_attr = nil, title = nil, levels = nil, role = nil;\n\n \n if ($truthy(($truthy($a = ($truthy($b = (doc = node.$document())['$attr?'](\"toc-placement\", \"macro\")) ? doc['$sections?']() : $b)) ? doc['$attr?'](\"toc\") : $a))) {\n } else {\n return \"<!-- toc disabled -->\"\n };\n if ($truthy(node.$id())) {\n \n id_attr = \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\";\n title_id_attr = \"\" + \" id=\\\"\" + (node.$id()) + \"title\\\"\";\n } else {\n \n id_attr = \" id=\\\"toc\\\"\";\n title_id_attr = \" id=\\\"toctitle\\\"\";\n };\n title = (function() {if ($truthy(node['$title?']())) {\n return node.$title()\n } else {\n \n return doc.$attr(\"toc-title\");\n }; return nil; })();\n levels = (function() {if ($truthy(node['$attr?'](\"levels\"))) {\n return node.$attr(\"levels\").$to_i()\n } else {\n return nil\n }; return nil; })();\n role = (function() {if ($truthy(node['$role?']())) {\n return node.$role()\n } else {\n \n return doc.$attr(\"toc-class\", \"toc\");\n }; return nil; })();\n return \"\" + \"<div\" + (id_attr) + \" class=\\\"\" + (role) + \"\\\">\\n\" + \"<div\" + (title_id_attr) + \" class=\\\"title\\\">\" + (title) + \"</div>\\n\" + (self.$outline(doc, $hash2([\"toclevels\"], {\"toclevels\": levels}))) + \"\\n\" + \"</div>\";\n }, TMP_Html5Converter_toc_43.$$arity = 1);\n \n Opal.def(self, '$ulist', TMP_Html5Converter_ulist_45 = function $$ulist(node) {\n var TMP_44, self = this, result = nil, id_attribute = nil, div_classes = nil, marker_checked = nil, marker_unchecked = nil, checklist = nil, ul_class_attribute = nil;\n\n \n result = [];\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n div_classes = [\"ulist\", node.$style(), node.$role()].$compact();\n marker_checked = nil;\n marker_unchecked = nil;\n if ($truthy((checklist = node['$option?'](\"checklist\")))) {\n \n div_classes.$unshift(div_classes.$shift(), \"checklist\");\n ul_class_attribute = \" class=\\\"checklist\\\"\";\n if ($truthy(node['$option?'](\"interactive\"))) {\n if ($truthy(self.xml_mode)) {\n \n marker_checked = \"<input type=\\\"checkbox\\\" data-item-complete=\\\"1\\\" checked=\\\"checked\\\"/> \";\n marker_unchecked = \"<input type=\\\"checkbox\\\" data-item-complete=\\\"0\\\"/> \";\n } else {\n \n marker_checked = \"<input type=\\\"checkbox\\\" data-item-complete=\\\"1\\\" checked> \";\n marker_unchecked = \"<input type=\\\"checkbox\\\" data-item-complete=\\\"0\\\"> \";\n }\n } else if ($truthy(node.$document()['$attr?'](\"icons\", \"font\"))) {\n \n marker_checked = \"<i class=\\\"fa fa-check-square-o\\\"></i> \";\n marker_unchecked = \"<i class=\\\"fa fa-square-o\\\"></i> \";\n } else {\n \n marker_checked = \"✓ \";\n marker_unchecked = \"❏ \";\n };\n } else {\n ul_class_attribute = (function() {if ($truthy(node.$style())) {\n return \"\" + \" class=\\\"\" + (node.$style()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })()\n };\n result['$<<'](\"\" + \"<div\" + (id_attribute) + \" class=\\\"\" + ($rb_times(div_classes, \" \")) + \"\\\">\");\n if ($truthy(node['$title?']())) {\n result['$<<'](\"\" + \"<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\")};\n result['$<<'](\"\" + \"<ul\" + (ul_class_attribute) + \">\");\n $send(node.$items(), 'each', [], (TMP_44 = function(item){var self = TMP_44.$$s || this, $a;\nif (item == null) item = nil;\n \n result['$<<'](\"<li>\");\n if ($truthy(($truthy($a = checklist) ? item['$attr?'](\"checkbox\") : $a))) {\n result['$<<'](\"\" + \"<p>\" + ((function() {if ($truthy(item['$attr?'](\"checked\"))) {\n return marker_checked\n } else {\n return marker_unchecked\n }; return nil; })()) + (item.$text()) + \"</p>\")\n } else {\n result['$<<'](\"\" + \"<p>\" + (item.$text()) + \"</p>\")\n };\n if ($truthy(item['$blocks?']())) {\n result['$<<'](item.$content())};\n return result['$<<'](\"</li>\");}, TMP_44.$$s = self, TMP_44.$$arity = 1, TMP_44));\n result['$<<'](\"</ul>\");\n result['$<<'](\"</div>\");\n return $rb_times(result, $$($nesting, 'LF'));\n }, TMP_Html5Converter_ulist_45.$$arity = 1);\n \n Opal.def(self, '$verse', TMP_Html5Converter_verse_46 = function $$verse(node) {\n var $a, self = this, id_attribute = nil, classes = nil, class_attribute = nil, title_element = nil, attribution = nil, citetitle = nil, cite_element = nil, attribution_text = nil, attribution_element = nil;\n\n \n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [\"verseblock\", node.$role()].$compact();\n class_attribute = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"\\n<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\"\n } else {\n return nil\n }; return nil; })();\n attribution = (function() {if ($truthy(node['$attr?'](\"attribution\"))) {\n \n return node.$attr(\"attribution\");\n } else {\n return nil\n }; return nil; })();\n citetitle = (function() {if ($truthy(node['$attr?'](\"citetitle\"))) {\n \n return node.$attr(\"citetitle\");\n } else {\n return nil\n }; return nil; })();\n if ($truthy(($truthy($a = attribution) ? $a : citetitle))) {\n \n cite_element = (function() {if ($truthy(citetitle)) {\n return \"\" + \"<cite>\" + (citetitle) + \"</cite>\"\n } else {\n return nil\n }; return nil; })();\n attribution_text = (function() {if ($truthy(attribution)) {\n return \"\" + \"— \" + (attribution) + ((function() {if ($truthy(citetitle)) {\n return \"\" + \"<br\" + (self.void_element_slash) + \">\\n\"\n } else {\n return nil\n }; return nil; })())\n } else {\n return nil\n }; return nil; })();\n attribution_element = \"\" + \"\\n<div class=\\\"attribution\\\">\\n\" + (attribution_text) + (cite_element) + \"\\n</div>\";\n } else {\n attribution_element = nil\n };\n return \"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\" + (title_element) + \"\\n\" + \"<pre class=\\\"content\\\">\" + (node.$content()) + \"</pre>\" + (attribution_element) + \"\\n\" + \"</div>\";\n }, TMP_Html5Converter_verse_46.$$arity = 1);\n \n Opal.def(self, '$video', TMP_Html5Converter_video_47 = function $$video(node) {\n var $a, $b, self = this, xml = nil, id_attribute = nil, classes = nil, class_attribute = nil, title_element = nil, width_attribute = nil, height_attribute = nil, $case = nil, asset_uri_scheme = nil, start_anchor = nil, delimiter = nil, autoplay_param = nil, loop_param = nil, rel_param_val = nil, start_param = nil, end_param = nil, controls_param = nil, fs_param = nil, fs_attribute = nil, modest_param = nil, theme_param = nil, hl_param = nil, target = nil, list = nil, list_param = nil, playlist = nil, poster_attribute = nil, val = nil, preload_attribute = nil, start_t = nil, end_t = nil, time_anchor = nil;\n\n \n xml = self.xml_mode;\n id_attribute = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n classes = [\"videoblock\", node.$role()].$compact();\n class_attribute = \"\" + \" class=\\\"\" + ($rb_times(classes, \" \")) + \"\\\"\";\n title_element = (function() {if ($truthy(node['$title?']())) {\n return \"\" + \"\\n<div class=\\\"title\\\">\" + (node.$title()) + \"</div>\"\n } else {\n return nil\n }; return nil; })();\n width_attribute = (function() {if ($truthy(node['$attr?'](\"width\"))) {\n return \"\" + \" width=\\\"\" + (node.$attr(\"width\")) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n height_attribute = (function() {if ($truthy(node['$attr?'](\"height\"))) {\n return \"\" + \" height=\\\"\" + (node.$attr(\"height\")) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n return (function() {$case = node.$attr(\"poster\");\n if (\"vimeo\"['$===']($case)) {\n if ($truthy((asset_uri_scheme = node.$document().$attr(\"asset-uri-scheme\", \"https\"))['$empty?']())) {\n } else {\n asset_uri_scheme = \"\" + (asset_uri_scheme) + \":\"\n };\n start_anchor = (function() {if ($truthy(node['$attr?'](\"start\", nil, false))) {\n return \"\" + \"#at=\" + (node.$attr(\"start\"))\n } else {\n return nil\n }; return nil; })();\n delimiter = \"?\";\n autoplay_param = (function() {if ($truthy(node['$option?'](\"autoplay\"))) {\n return \"\" + (delimiter) + \"autoplay=1\"\n } else {\n return nil\n }; return nil; })();\n if ($truthy(autoplay_param)) {\n delimiter = \"&\"};\n loop_param = (function() {if ($truthy(node['$option?'](\"loop\"))) {\n return \"\" + (delimiter) + \"loop=1\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\" + (title_element) + \"\\n\" + \"<div class=\\\"content\\\">\\n\" + \"<iframe\" + (width_attribute) + (height_attribute) + \" src=\\\"\" + (asset_uri_scheme) + \"//player.vimeo.com/video/\" + (node.$attr(\"target\")) + (start_anchor) + (autoplay_param) + (loop_param) + \"\\\" frameborder=\\\"0\\\"\" + ((function() {if ($truthy(node['$option?'](\"nofullscreen\"))) {\n return nil\n } else {\n \n return self.$append_boolean_attribute(\"allowfullscreen\", xml);\n }; return nil; })()) + \"></iframe>\\n\" + \"</div>\\n\" + \"</div>\";}\n else if (\"youtube\"['$===']($case)) {\n if ($truthy((asset_uri_scheme = node.$document().$attr(\"asset-uri-scheme\", \"https\"))['$empty?']())) {\n } else {\n asset_uri_scheme = \"\" + (asset_uri_scheme) + \":\"\n };\n rel_param_val = (function() {if ($truthy(node['$option?'](\"related\"))) {\n return 1\n } else {\n return 0\n }; return nil; })();\n start_param = (function() {if ($truthy(node['$attr?'](\"start\", nil, false))) {\n return \"\" + \"&start=\" + (node.$attr(\"start\"))\n } else {\n return nil\n }; return nil; })();\n end_param = (function() {if ($truthy(node['$attr?'](\"end\", nil, false))) {\n return \"\" + \"&end=\" + (node.$attr(\"end\"))\n } else {\n return nil\n }; return nil; })();\n autoplay_param = (function() {if ($truthy(node['$option?'](\"autoplay\"))) {\n return \"&autoplay=1\"\n } else {\n return nil\n }; return nil; })();\n loop_param = (function() {if ($truthy(node['$option?'](\"loop\"))) {\n return \"&loop=1\"\n } else {\n return nil\n }; return nil; })();\n controls_param = (function() {if ($truthy(node['$option?'](\"nocontrols\"))) {\n return \"&controls=0\"\n } else {\n return nil\n }; return nil; })();\n if ($truthy(node['$option?'](\"nofullscreen\"))) {\n \n fs_param = \"&fs=0\";\n fs_attribute = nil;\n } else {\n \n fs_param = nil;\n fs_attribute = self.$append_boolean_attribute(\"allowfullscreen\", xml);\n };\n modest_param = (function() {if ($truthy(node['$option?'](\"modest\"))) {\n return \"&modestbranding=1\"\n } else {\n return nil\n }; return nil; })();\n theme_param = (function() {if ($truthy(node['$attr?'](\"theme\", nil, false))) {\n return \"\" + \"&theme=\" + (node.$attr(\"theme\"))\n } else {\n return nil\n }; return nil; })();\n hl_param = (function() {if ($truthy(node['$attr?'](\"lang\"))) {\n return \"\" + \"&hl=\" + (node.$attr(\"lang\"))\n } else {\n return nil\n }; return nil; })();\n $b = node.$attr(\"target\").$split(\"/\", 2), $a = Opal.to_ary($b), (target = ($a[0] == null ? nil : $a[0])), (list = ($a[1] == null ? nil : $a[1])), $b;\n if ($truthy((list = ($truthy($a = list) ? $a : node.$attr(\"list\", nil, false))))) {\n list_param = \"\" + \"&list=\" + (list)\n } else {\n \n $b = target.$split(\",\", 2), $a = Opal.to_ary($b), (target = ($a[0] == null ? nil : $a[0])), (playlist = ($a[1] == null ? nil : $a[1])), $b;\n if ($truthy((playlist = ($truthy($a = playlist) ? $a : node.$attr(\"playlist\", nil, false))))) {\n list_param = \"\" + \"&playlist=\" + (playlist)\n } else {\n list_param = (function() {if ($truthy(loop_param)) {\n return \"\" + \"&playlist=\" + (target)\n } else {\n return nil\n }; return nil; })()\n };\n };\n return \"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\" + (title_element) + \"\\n\" + \"<div class=\\\"content\\\">\\n\" + \"<iframe\" + (width_attribute) + (height_attribute) + \" src=\\\"\" + (asset_uri_scheme) + \"//www.youtube.com/embed/\" + (target) + \"?rel=\" + (rel_param_val) + (start_param) + (end_param) + (autoplay_param) + (loop_param) + (controls_param) + (list_param) + (fs_param) + (modest_param) + (theme_param) + (hl_param) + \"\\\" frameborder=\\\"0\\\"\" + (fs_attribute) + \"></iframe>\\n\" + \"</div>\\n\" + \"</div>\";}\n else {\n poster_attribute = (function() {if ($truthy((val = node.$attr(\"poster\", nil, false))['$nil_or_empty?']())) {\n return nil\n } else {\n return \"\" + \" poster=\\\"\" + (node.$media_uri(val)) + \"\\\"\"\n }; return nil; })();\n preload_attribute = (function() {if ($truthy((val = node.$attr(\"preload\", nil, false))['$nil_or_empty?']())) {\n return nil\n } else {\n return \"\" + \" preload=\\\"\" + (val) + \"\\\"\"\n }; return nil; })();\n start_t = node.$attr(\"start\", nil, false);\n end_t = node.$attr(\"end\", nil, false);\n time_anchor = (function() {if ($truthy(($truthy($a = start_t) ? $a : end_t))) {\n return \"\" + \"#t=\" + (start_t) + ((function() {if ($truthy(end_t)) {\n return \",\"\n } else {\n return nil\n }; return nil; })()) + (end_t)\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<div\" + (id_attribute) + (class_attribute) + \">\" + (title_element) + \"\\n\" + \"<div class=\\\"content\\\">\\n\" + \"<video src=\\\"\" + (node.$media_uri(node.$attr(\"target\"))) + (time_anchor) + \"\\\"\" + (width_attribute) + (height_attribute) + (poster_attribute) + ((function() {if ($truthy(node['$option?'](\"autoplay\"))) {\n \n return self.$append_boolean_attribute(\"autoplay\", xml);\n } else {\n return nil\n }; return nil; })()) + ((function() {if ($truthy(node['$option?'](\"nocontrols\"))) {\n return nil\n } else {\n \n return self.$append_boolean_attribute(\"controls\", xml);\n }; return nil; })()) + ((function() {if ($truthy(node['$option?'](\"loop\"))) {\n \n return self.$append_boolean_attribute(\"loop\", xml);\n } else {\n return nil\n }; return nil; })()) + (preload_attribute) + \">\\n\" + \"Your browser does not support the video tag.\\n\" + \"</video>\\n\" + \"</div>\\n\" + \"</div>\";}})();\n }, TMP_Html5Converter_video_47.$$arity = 1);\n \n Opal.def(self, '$inline_anchor', TMP_Html5Converter_inline_anchor_48 = function $$inline_anchor(node) {\n var $a, $b, self = this, $case = nil, text = nil, ref = nil, refid = nil, attrs = nil, role = nil, window = nil;\n\n return (function() {$case = node.$type();\n if (\"xref\"['$===']($case)) {\n if ($truthy(($truthy($a = (text = node.$text())) ? $a : (text = node.$attributes()['$[]'](\"path\"))))) {\n } else if ($truthy($$($nesting, 'AbstractNode')['$===']((ref = node.$document().$catalog()['$[]'](\"refs\")['$[]']((refid = node.$attributes()['$[]'](\"refid\"))))))) {\n text = ($truthy($a = ref.$xreftext((self.xrefstyle = ($truthy($b = self.xrefstyle) ? $b : node.$document().$attributes()['$[]'](\"xrefstyle\"))))) ? $a : \"\" + \"[\" + (refid) + \"]\")\n } else {\n text = \"\" + \"[\" + (refid) + \"]\"\n };\n return \"\" + \"<a href=\\\"\" + (node.$target()) + \"\\\">\" + (text) + \"</a>\";}\n else if (\"ref\"['$===']($case)) {return \"\" + \"<a id=\\\"\" + (node.$id()) + \"\\\"></a>\"}\n else if (\"link\"['$===']($case)) {\n attrs = (function() {if ($truthy(node.$id())) {\n return [\"\" + \" id=\\\"\" + (node.$id()) + \"\\\"\"]\n } else {\n return []\n }; return nil; })();\n if ($truthy((role = node.$role()))) {\n attrs['$<<'](\"\" + \" class=\\\"\" + (role) + \"\\\"\")};\n if ($truthy(node['$attr?'](\"title\", nil, false))) {\n attrs['$<<'](\"\" + \" title=\\\"\" + (node.$attr(\"title\")) + \"\\\"\")};\n if ($truthy(node['$attr?'](\"window\", nil, false))) {\n attrs['$<<'](\"\" + \" target=\\\"\" + ((window = node.$attr(\"window\"))) + \"\\\"\" + ((function() {if ($truthy(($truthy($a = window['$=='](\"_blank\")) ? $a : node['$option?'](\"noopener\")))) {\n return \" rel=\\\"noopener\\\"\"\n } else {\n return \"\"\n }; return nil; })()))};\n return \"\" + \"<a href=\\\"\" + (node.$target()) + \"\\\"\" + (attrs.$join()) + \">\" + (node.$text()) + \"</a>\";}\n else if (\"bibref\"['$===']($case)) {return \"\" + \"<a id=\\\"\" + (node.$id()) + \"\\\"></a>\" + (node.$text())}\n else {return self.$warn(\"\" + \"asciidoctor: WARNING: unknown anchor type: \" + (node.$type().$inspect()))}})()\n }, TMP_Html5Converter_inline_anchor_48.$$arity = 1);\n \n Opal.def(self, '$inline_break', TMP_Html5Converter_inline_break_49 = function $$inline_break(node) {\n var self = this;\n\n return \"\" + (node.$text()) + \"<br\" + (self.void_element_slash) + \">\"\n }, TMP_Html5Converter_inline_break_49.$$arity = 1);\n \n Opal.def(self, '$inline_button', TMP_Html5Converter_inline_button_50 = function $$inline_button(node) {\n var self = this;\n\n return \"\" + \"<b class=\\\"button\\\">\" + (node.$text()) + \"</b>\"\n }, TMP_Html5Converter_inline_button_50.$$arity = 1);\n \n Opal.def(self, '$inline_callout', TMP_Html5Converter_inline_callout_51 = function $$inline_callout(node) {\n var self = this, src = nil;\n\n if ($truthy(node.$document()['$attr?'](\"icons\", \"font\"))) {\n return \"\" + \"<i class=\\\"conum\\\" data-value=\\\"\" + (node.$text()) + \"\\\"></i><b>(\" + (node.$text()) + \")</b>\"\n } else if ($truthy(node.$document()['$attr?'](\"icons\"))) {\n \n src = node.$icon_uri(\"\" + \"callouts/\" + (node.$text()));\n return \"\" + \"<img src=\\\"\" + (src) + \"\\\" alt=\\\"\" + (node.$text()) + \"\\\"\" + (self.void_element_slash) + \">\";\n } else {\n return \"\" + \"<b class=\\\"conum\\\">(\" + (node.$text()) + \")</b>\"\n }\n }, TMP_Html5Converter_inline_callout_51.$$arity = 1);\n \n Opal.def(self, '$inline_footnote', TMP_Html5Converter_inline_footnote_52 = function $$inline_footnote(node) {\n var self = this, index = nil, id_attr = nil;\n\n if ($truthy((index = node.$attr(\"index\", nil, false)))) {\n if (node.$type()['$=='](\"xref\")) {\n return \"\" + \"<sup class=\\\"footnoteref\\\">[<a class=\\\"footnote\\\" href=\\\"#_footnote_\" + (index) + \"\\\" title=\\\"View footnote.\\\">\" + (index) + \"</a>]</sup>\"\n } else {\n \n id_attr = (function() {if ($truthy(node.$id())) {\n return \"\" + \" id=\\\"_footnote_\" + (node.$id()) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<sup class=\\\"footnote\\\"\" + (id_attr) + \">[<a id=\\\"_footnoteref_\" + (index) + \"\\\" class=\\\"footnote\\\" href=\\\"#_footnote_\" + (index) + \"\\\" title=\\\"View footnote.\\\">\" + (index) + \"</a>]</sup>\";\n }\n } else if (node.$type()['$=='](\"xref\")) {\n return \"\" + \"<sup class=\\\"footnoteref red\\\" title=\\\"Unresolved footnote reference.\\\">[\" + (node.$text()) + \"]</sup>\"\n } else {\n return nil\n }\n }, TMP_Html5Converter_inline_footnote_52.$$arity = 1);\n \n Opal.def(self, '$inline_image', TMP_Html5Converter_inline_image_55 = function $$inline_image(node) {\n var $a, TMP_53, TMP_54, $b, $c, $d, self = this, type = nil, class_attr_val = nil, title_attr = nil, img = nil, target = nil, attrs = nil, svg = nil, obj = nil, fallback = nil, window_attr = nil, window = nil, role = nil, style_attr = nil;\n\n \n if ($truthy((($a = (type = node.$type())['$=='](\"icon\")) ? node.$document()['$attr?'](\"icons\", \"font\") : (type = node.$type())['$=='](\"icon\")))) {\n \n class_attr_val = \"\" + \"fa fa-\" + (node.$target());\n $send($hash2([\"size\", \"rotate\", \"flip\"], {\"size\": \"fa-\", \"rotate\": \"fa-rotate-\", \"flip\": \"fa-flip-\"}), 'each', [], (TMP_53 = function(key, prefix){var self = TMP_53.$$s || this;\nif (key == null) key = nil;if (prefix == null) prefix = nil;\n if ($truthy(node['$attr?'](key))) {\n return (class_attr_val = \"\" + (class_attr_val) + \" \" + (prefix) + (node.$attr(key)))\n } else {\n return nil\n }}, TMP_53.$$s = self, TMP_53.$$arity = 2, TMP_53));\n title_attr = (function() {if ($truthy(node['$attr?'](\"title\"))) {\n return \"\" + \" title=\\\"\" + (node.$attr(\"title\")) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n img = \"\" + \"<i class=\\\"\" + (class_attr_val) + \"\\\"\" + (title_attr) + \"></i>\";\n } else if ($truthy((($a = type['$=='](\"icon\")) ? node.$document()['$attr?'](\"icons\")['$!']() : type['$=='](\"icon\")))) {\n img = \"\" + \"[\" + (node.$alt()) + \"]\"\n } else {\n \n target = node.$target();\n attrs = $send([\"width\", \"height\", \"title\"], 'map', [], (TMP_54 = function(name){var self = TMP_54.$$s || this;\nif (name == null) name = nil;\n if ($truthy(node['$attr?'](name))) {\n return \"\" + \" \" + (name) + \"=\\\"\" + (node.$attr(name)) + \"\\\"\"\n } else {\n return nil\n }}, TMP_54.$$s = self, TMP_54.$$arity = 1, TMP_54)).$join();\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = type['$!='](\"icon\")) ? ($truthy($d = node['$attr?'](\"format\", \"svg\", false)) ? $d : target['$include?'](\".svg\")) : $c)) ? $rb_lt(node.$document().$safe(), $$$($$($nesting, 'SafeMode'), 'SECURE')) : $b)) ? ($truthy($b = (svg = node['$option?'](\"inline\"))) ? $b : (obj = node['$option?'](\"interactive\"))) : $a))) {\n if ($truthy(svg)) {\n img = ($truthy($a = self.$read_svg_contents(node, target)) ? $a : \"\" + \"<span class=\\\"alt\\\">\" + (node.$alt()) + \"</span>\")\n } else if ($truthy(obj)) {\n \n fallback = (function() {if ($truthy(node['$attr?'](\"fallback\"))) {\n return \"\" + \"<img src=\\\"\" + (node.$image_uri(node.$attr(\"fallback\"))) + \"\\\" alt=\\\"\" + (self.$encode_quotes(node.$alt())) + \"\\\"\" + (attrs) + (self.void_element_slash) + \">\"\n } else {\n return \"\" + \"<span class=\\\"alt\\\">\" + (node.$alt()) + \"</span>\"\n }; return nil; })();\n img = \"\" + \"<object type=\\\"image/svg+xml\\\" data=\\\"\" + (node.$image_uri(target)) + \"\\\"\" + (attrs) + \">\" + (fallback) + \"</object>\";}};\n img = ($truthy($a = img) ? $a : \"\" + \"<img src=\\\"\" + ((function() {if (type['$=='](\"icon\")) {\n \n return node.$icon_uri(target);\n } else {\n \n return node.$image_uri(target);\n }; return nil; })()) + \"\\\" alt=\\\"\" + (self.$encode_quotes(node.$alt())) + \"\\\"\" + (attrs) + (self.void_element_slash) + \">\");\n };\n if ($truthy(node['$attr?'](\"link\"))) {\n \n if ($truthy(node['$attr?'](\"window\"))) {\n window_attr = \"\" + \" target=\\\"\" + ((window = node.$attr(\"window\"))) + \"\\\"\" + ((function() {if ($truthy(($truthy($a = window['$=='](\"_blank\")) ? $a : node['$option?'](\"noopener\")))) {\n return \" rel=\\\"noopener\\\"\"\n } else {\n return \"\"\n }; return nil; })())};\n img = \"\" + \"<a class=\\\"image\\\" href=\\\"\" + (node.$attr(\"link\")) + \"\\\"\" + (window_attr) + \">\" + (img) + \"</a>\";};\n class_attr_val = (function() {if ($truthy((role = node.$role()))) {\n return \"\" + (type) + \" \" + (role)\n } else {\n return type\n }; return nil; })();\n style_attr = (function() {if ($truthy(node['$attr?'](\"float\"))) {\n return \"\" + \" style=\\\"float: \" + (node.$attr(\"float\")) + \"\\\"\"\n } else {\n return nil\n }; return nil; })();\n return \"\" + \"<span class=\\\"\" + (class_attr_val) + \"\\\"\" + (style_attr) + \">\" + (img) + \"</span>\";\n }, TMP_Html5Converter_inline_image_55.$$arity = 1);\n \n Opal.def(self, '$inline_indexterm', TMP_Html5Converter_inline_indexterm_56 = function $$inline_indexterm(node) {\n var self = this;\n\n if (node.$type()['$=='](\"visible\")) {\n return node.$text()\n } else {\n return \"\"\n }\n }, TMP_Html5Converter_inline_indexterm_56.$$arity = 1);\n \n Opal.def(self, '$inline_kbd', TMP_Html5Converter_inline_kbd_57 = function $$inline_kbd(node) {\n var self = this, keys = nil;\n\n if ((keys = node.$attr(\"keys\")).$size()['$=='](1)) {\n return \"\" + \"<kbd>\" + (keys['$[]'](0)) + \"</kbd>\"\n } else {\n return \"\" + \"<span class=\\\"keyseq\\\"><kbd>\" + ($rb_times(keys, \"</kbd>+<kbd>\")) + \"</kbd></span>\"\n }\n }, TMP_Html5Converter_inline_kbd_57.$$arity = 1);\n \n Opal.def(self, '$inline_menu', TMP_Html5Converter_inline_menu_58 = function $$inline_menu(node) {\n var self = this, caret = nil, submenu_joiner = nil, menu = nil, submenus = nil, menuitem = nil;\n\n \n caret = (function() {if ($truthy(node.$document()['$attr?'](\"icons\", \"font\"))) {\n return \" <i class=\\\"fa fa-angle-right caret\\\"></i> \"\n } else {\n return \" <b class=\\\"caret\\\">›</b> \"\n }; return nil; })();\n submenu_joiner = \"\" + \"</b>\" + (caret) + \"<b class=\\\"submenu\\\">\";\n menu = node.$attr(\"menu\");\n if ($truthy((submenus = node.$attr(\"submenus\"))['$empty?']())) {\n if ($truthy((menuitem = node.$attr(\"menuitem\", nil, false)))) {\n return \"\" + \"<span class=\\\"menuseq\\\"><b class=\\\"menu\\\">\" + (menu) + \"</b>\" + (caret) + \"<b class=\\\"menuitem\\\">\" + (menuitem) + \"</b></span>\"\n } else {\n return \"\" + \"<b class=\\\"menuref\\\">\" + (menu) + \"</b>\"\n }\n } else {\n return \"\" + \"<span class=\\\"menuseq\\\"><b class=\\\"menu\\\">\" + (menu) + \"</b>\" + (caret) + \"<b class=\\\"submenu\\\">\" + ($rb_times(submenus, submenu_joiner)) + \"</b>\" + (caret) + \"<b class=\\\"menuitem\\\">\" + (node.$attr(\"menuitem\")) + \"</b></span>\"\n };\n }, TMP_Html5Converter_inline_menu_58.$$arity = 1);\n \n Opal.def(self, '$inline_quoted', TMP_Html5Converter_inline_quoted_59 = function $$inline_quoted(node) {\n var $a, $b, self = this, open = nil, close = nil, is_tag = nil, quoted_text = nil;\n\n \n $b = $$($nesting, 'QUOTE_TAGS')['$[]'](node.$type()), $a = Opal.to_ary($b), (open = ($a[0] == null ? nil : $a[0])), (close = ($a[1] == null ? nil : $a[1])), (is_tag = ($a[2] == null ? nil : $a[2])), $b;\n if ($truthy(node.$role())) {\n if ($truthy(is_tag)) {\n quoted_text = \"\" + (open.$chop()) + \" class=\\\"\" + (node.$role()) + \"\\\">\" + (node.$text()) + (close)\n } else {\n quoted_text = \"\" + \"<span class=\\\"\" + (node.$role()) + \"\\\">\" + (open) + (node.$text()) + (close) + \"</span>\"\n }\n } else {\n quoted_text = \"\" + (open) + (node.$text()) + (close)\n };\n if ($truthy(node.$id())) {\n return \"\" + \"<a id=\\\"\" + (node.$id()) + \"\\\"></a>\" + (quoted_text)\n } else {\n return quoted_text\n };\n }, TMP_Html5Converter_inline_quoted_59.$$arity = 1);\n \n Opal.def(self, '$append_boolean_attribute', TMP_Html5Converter_append_boolean_attribute_60 = function $$append_boolean_attribute(name, xml) {\n var self = this;\n\n if ($truthy(xml)) {\n return \"\" + \" \" + (name) + \"=\\\"\" + (name) + \"\\\"\"\n } else {\n return \"\" + \" \" + (name)\n }\n }, TMP_Html5Converter_append_boolean_attribute_60.$$arity = 2);\n \n Opal.def(self, '$encode_quotes', TMP_Html5Converter_encode_quotes_61 = function $$encode_quotes(val) {\n var self = this;\n\n if ($truthy(val['$include?'](\"\\\"\"))) {\n \n return val.$gsub(\"\\\"\", \""\");\n } else {\n return val\n }\n }, TMP_Html5Converter_encode_quotes_61.$$arity = 1);\n return (Opal.def(self, '$read_svg_contents', TMP_Html5Converter_read_svg_contents_63 = function $$read_svg_contents(node, target) {\n var TMP_62, self = this, svg = nil, old_start_tag = nil, new_start_tag = nil;\n\n \n if ($truthy((svg = node.$read_contents(target, $hash2([\"start\", \"normalize\", \"label\"], {\"start\": node.$document().$attr(\"imagesdir\"), \"normalize\": true, \"label\": \"SVG\"}))))) {\n \n if ($truthy(svg['$start_with?'](\"<svg\"))) {\n } else {\n svg = svg.$sub($$($nesting, 'SvgPreambleRx'), \"\")\n };\n old_start_tag = (new_start_tag = nil);\n $send([\"width\", \"height\"], 'each', [], (TMP_62 = function(dim){var self = TMP_62.$$s || this;\nif (dim == null) dim = nil;\n if ($truthy(node['$attr?'](dim))) {\n \n if ($truthy(new_start_tag)) {\n } else {\n new_start_tag = (old_start_tag = svg.$match($$($nesting, 'SvgStartTagRx'))['$[]'](0)).$gsub($$($nesting, 'DimensionAttributeRx'), \"\")\n };\n return (new_start_tag = \"\" + (new_start_tag.$chop()) + \" \" + (dim) + \"=\\\"\" + (node.$attr(dim)) + \"px\\\">\");\n } else {\n return nil\n }}, TMP_62.$$s = self, TMP_62.$$arity = 1, TMP_62));\n if ($truthy(new_start_tag)) {\n svg = \"\" + (new_start_tag) + (svg['$[]'](Opal.Range.$new(old_start_tag.$length(), -1, false)))};};\n return svg;\n }, TMP_Html5Converter_read_svg_contents_63.$$arity = 2), nil) && 'read_svg_contents';\n })($$($nesting, 'Converter'), $$$($$($nesting, 'Converter'), 'BuiltIn'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/extensions\"] = function(Opal) {\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_plus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);\n }\n function $rb_gt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs > rhs : lhs['$>'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy, $hash2 = Opal.hash2, $send = Opal.send, $hash = Opal.hash;\n\n Opal.add_stubs(['$[]=', '$config', '$-', '$nil_or_empty?', '$name', '$grep', '$constants', '$include', '$const_get', '$extend', '$attr_reader', '$merge', '$class', '$update', '$raise', '$document', '$doctype', '$[]', '$+', '$level', '$delete', '$==', '$casecmp', '$new', '$title=', '$sectname=', '$special=', '$fetch', '$numbered=', '$>', '$key?', '$attributes', '$special', '$context', '$numbered', '$generate_id', '$title', '$id=', '$update_attributes', '$tr', '$basename', '$create_block', '$===', '$next_block', '$dup', '$<<', '$has_more_lines?', '$each', '$define_method', '$unshift', '$shift', '$send', '$empty?', '$size', '$call', '$option', '$flatten', '$respond_to?', '$include?', '$to_s', '$split', '$to_i', '$compact', '$inspect', '$attr_accessor', '$to_set', '$!', '$resolve_regexp', '$match?', '$method', '$register', '$values', '$groups', '$arity', '$instance_exec', '$to_proc', '$activate', '$add_document_processor', '$any?', '$select', '$add_syntax_processor', '$to_sym', '$private', '$join', '$map', '$capitalize', '$instance_variable_get', '$instance_variable_set', '$resolve_args', '$freeze', '$process_block_given?', '$source_location', '$resolve_class', '$<', '$update_config', '$push', '$as_symbol', '$name=', '$pop', '$-@', '$next_auto_id', '$generate_name', '$class_for_name', '$const_defined?']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $parent_nesting) {\n var $Extensions, self = $Extensions = $module($base, 'Extensions');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n \n (function($base, $super, $parent_nesting) {\n function $Processor(){};\n var self = $Processor = $klass($base, $super, 'Processor', $Processor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Processor_initialize_4, TMP_Processor_update_config_5, TMP_Processor_process_6, TMP_Processor_create_section_7, TMP_Processor_create_block_8, TMP_Processor_create_image_block_9, TMP_Processor_create_inline_10, TMP_Processor_parse_content_11, TMP_Processor_12;\n\n def.config = nil;\n \n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_config_1, TMP_option_2, TMP_use_dsl_3;\n\n \n \n Opal.def(self, '$config', TMP_config_1 = function $$config() {\n var $a, self = this;\n if (self.config == null) self.config = nil;\n\n return (self.config = ($truthy($a = self.config) ? $a : $hash2([], {})))\n }, TMP_config_1.$$arity = 0);\n \n Opal.def(self, '$option', TMP_option_2 = function $$option(key, default_value) {\n var self = this, $writer = nil;\n\n \n $writer = [key, default_value];\n $send(self.$config(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }, TMP_option_2.$$arity = 2);\n \n Opal.def(self, '$use_dsl', TMP_use_dsl_3 = function $$use_dsl() {\n var self = this;\n\n if ($truthy(self.$name()['$nil_or_empty?']())) {\n if ($truthy((Opal.Module.$$nesting = $nesting, self.$constants()).$grep(\"DSL\"))) {\n return self.$include(self.$const_get(\"DSL\"))\n } else {\n return nil\n }\n } else if ($truthy((Opal.Module.$$nesting = $nesting, self.$constants()).$grep(\"DSL\"))) {\n return self.$extend(self.$const_get(\"DSL\"))\n } else {\n return nil\n }\n }, TMP_use_dsl_3.$$arity = 0);\n Opal.alias(self, \"extend_dsl\", \"use_dsl\");\n return Opal.alias(self, \"include_dsl\", \"use_dsl\");\n })(Opal.get_singleton_class(self), $nesting);\n self.$attr_reader(\"config\");\n \n Opal.def(self, '$initialize', TMP_Processor_initialize_4 = function $$initialize(config) {\n var self = this;\n\n if (config == null) {\n config = $hash2([], {});\n }\n return (self.config = self.$class().$config().$merge(config))\n }, TMP_Processor_initialize_4.$$arity = -1);\n \n Opal.def(self, '$update_config', TMP_Processor_update_config_5 = function $$update_config(config) {\n var self = this;\n\n return self.config.$update(config)\n }, TMP_Processor_update_config_5.$$arity = 1);\n \n Opal.def(self, '$process', TMP_Processor_process_6 = function $$process($a_rest) {\n var self = this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n return self.$raise($$$('::', 'NotImplementedError'), \"\" + \"Asciidoctor::Extensions::Processor subclass must implement #\" + (\"process\") + \" method\")\n }, TMP_Processor_process_6.$$arity = -1);\n \n Opal.def(self, '$create_section', TMP_Processor_create_section_7 = function $$create_section(parent, title, attrs, opts) {\n var $a, $b, self = this, doc = nil, doctype = nil, level = nil, style = nil, sectname = nil, special = nil, sect = nil, $writer = nil, id = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n doc = parent.$document();\n $a = [doc.$doctype(), ($truthy($b = opts['$[]'](\"level\")) ? $b : $rb_plus(parent.$level(), 1))], (doctype = $a[0]), (level = $a[1]), $a;\n if ($truthy((style = attrs.$delete(\"style\")))) {\n if ($truthy((($a = style['$=='](\"abstract\")) ? doctype['$=='](\"book\") : style['$=='](\"abstract\")))) {\n $a = [\"chapter\", 1], (sectname = $a[0]), (level = $a[1]), $a\n } else {\n \n $a = [style, true], (sectname = $a[0]), (special = $a[1]), $a;\n if (level['$=='](0)) {\n level = 1};\n }\n } else if (doctype['$=='](\"book\")) {\n sectname = (function() {if (level['$=='](0)) {\n return \"part\"\n } else {\n \n if (level['$=='](1)) {\n return \"chapter\"\n } else {\n return \"section\"\n };\n }; return nil; })()\n } else if ($truthy((($a = doctype['$=='](\"manpage\")) ? title.$casecmp(\"synopsis\")['$=='](0) : doctype['$=='](\"manpage\")))) {\n $a = [\"synopsis\", true], (sectname = $a[0]), (special = $a[1]), $a\n } else {\n sectname = \"section\"\n };\n sect = $$($nesting, 'Section').$new(parent, level, false);\n $a = [title, sectname], sect['$title=']($a[0]), sect['$sectname=']($a[1]), $a;\n if ($truthy(special)) {\n \n \n $writer = [true];\n $send(sect, 'special=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy(opts.$fetch(\"numbered\", style['$=='](\"appendix\")))) {\n \n $writer = [true];\n $send(sect, 'numbered=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n } else if ($truthy(opts.$fetch(\"numbered\", ($truthy($a = $rb_gt(level, 0)) ? doc.$attributes()['$key?'](\"sectnums\") : $a)))) {\n \n $writer = [(function() {if ($truthy(sect.$special())) {\n \n return (($a = parent.$context()['$=='](\"section\")) ? parent.$numbered() : parent.$context()['$=='](\"section\"));\n } else {\n return true\n }; return nil; })()];\n $send(sect, 'numbered=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ((id = attrs.$delete(\"id\"))['$=='](false)) {\n } else {\n \n $writer = [(($writer = [\"id\", ($truthy($a = id) ? $a : (function() {if ($truthy(doc.$attributes()['$key?'](\"sectids\"))) {\n \n return $$($nesting, 'Section').$generate_id(sect.$title(), doc);\n } else {\n return nil\n }; return nil; })())]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])];\n $send(sect, 'id=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n sect.$update_attributes(attrs);\n return sect;\n }, TMP_Processor_create_section_7.$$arity = -4);\n \n Opal.def(self, '$create_block', TMP_Processor_create_block_8 = function $$create_block(parent, context, source, attrs, opts) {\n var self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n return $$($nesting, 'Block').$new(parent, context, $hash2([\"source\", \"attributes\"], {\"source\": source, \"attributes\": attrs}).$merge(opts))\n }, TMP_Processor_create_block_8.$$arity = -5);\n \n Opal.def(self, '$create_image_block', TMP_Processor_create_image_block_9 = function $$create_image_block(parent, attrs, opts) {\n var $a, self = this, target = nil, $writer = nil;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n \n if ($truthy((target = attrs['$[]'](\"target\")))) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"Unable to create an image block, target attribute is required\")\n };\n ($truthy($a = attrs['$[]'](\"alt\")) ? $a : (($writer = [\"alt\", (($writer = [\"default-alt\", $$($nesting, 'Helpers').$basename(target, true).$tr(\"_-\", \" \")]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)])]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n return self.$create_block(parent, \"image\", nil, attrs, opts);\n }, TMP_Processor_create_image_block_9.$$arity = -3);\n \n Opal.def(self, '$create_inline', TMP_Processor_create_inline_10 = function $$create_inline(parent, context, text, opts) {\n var self = this;\n\n if (opts == null) {\n opts = $hash2([], {});\n }\n return $$($nesting, 'Inline').$new(parent, context, text, opts)\n }, TMP_Processor_create_inline_10.$$arity = -4);\n \n Opal.def(self, '$parse_content', TMP_Processor_parse_content_11 = function $$parse_content(parent, content, attributes) {\n var $a, $b, $c, self = this, reader = nil, block = nil;\n\n if (attributes == null) {\n attributes = nil;\n }\n \n reader = (function() {if ($truthy($$($nesting, 'Reader')['$==='](content))) {\n return content\n } else {\n \n return $$($nesting, 'Reader').$new(content);\n }; return nil; })();\n while ($truthy(($truthy($b = ($truthy($c = (block = $$($nesting, 'Parser').$next_block(reader, parent, (function() {if ($truthy(attributes)) {\n return attributes.$dup()\n } else {\n return $hash2([], {})\n }; return nil; })()))) ? parent['$<<'](block) : $c)) ? $b : reader['$has_more_lines?']()))) {\n \n };\n return parent;\n }, TMP_Processor_parse_content_11.$$arity = -3);\n return $send([[\"create_paragraph\", \"create_block\", \"paragraph\"], [\"create_open_block\", \"create_block\", \"open\"], [\"create_example_block\", \"create_block\", \"example\"], [\"create_pass_block\", \"create_block\", \"pass\"], [\"create_listing_block\", \"create_block\", \"listing\"], [\"create_literal_block\", \"create_block\", \"literal\"], [\"create_anchor\", \"create_inline\", \"anchor\"]], 'each', [], (TMP_Processor_12 = function(method_name, delegate_method_name, context){var self = TMP_Processor_12.$$s || this, TMP_13;\nif (method_name == null) method_name = nil;if (delegate_method_name == null) delegate_method_name = nil;if (context == null) context = nil;\n return $send(self, 'define_method', [method_name], (TMP_13 = function($a_rest){var self = TMP_13.$$s || this, args;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n args.$unshift(args.$shift(), context);\n return $send(self, 'send', [delegate_method_name].concat(Opal.to_a(args)));}, TMP_13.$$s = self, TMP_13.$$arity = -1, TMP_13))}, TMP_Processor_12.$$s = self, TMP_Processor_12.$$arity = 3, TMP_Processor_12));\n })($nesting[0], null, $nesting);\n (function($base, $parent_nesting) {\n var $ProcessorDsl, self = $ProcessorDsl = $module($base, 'ProcessorDsl');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ProcessorDsl_option_14, TMP_ProcessorDsl_process_15, TMP_ProcessorDsl_process_block_given$q_16;\n\n \n \n Opal.def(self, '$option', TMP_ProcessorDsl_option_14 = function $$option(key, value) {\n var self = this, $writer = nil;\n\n \n $writer = [key, value];\n $send(self.$config(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n }, TMP_ProcessorDsl_option_14.$$arity = 2);\n \n Opal.def(self, '$process', TMP_ProcessorDsl_process_15 = function $$process($a_rest) {\n var $b, self = this, args, $iter = TMP_ProcessorDsl_process_15.$$p, block = $iter || nil;\n if (self.process_block == null) self.process_block = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_ProcessorDsl_process_15.$$p = null;\n if ((block !== nil)) {\n \n if ($truthy(args['$empty?']())) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"wrong number of arguments (given \" + (args.$size()) + \", expected 0)\")\n };\n return (self.process_block = block);\n } else if ($truthy((($b = self['process_block'], $b != null && $b !== nil) ? 'instance-variable' : nil))) {\n return $send(self.process_block, 'call', Opal.to_a(args))\n } else {\n return self.$raise($$$('::', 'NotImplementedError'))\n }\n }, TMP_ProcessorDsl_process_15.$$arity = -1);\n \n Opal.def(self, '$process_block_given?', TMP_ProcessorDsl_process_block_given$q_16 = function() {\n var $a, self = this;\n\n return (($a = self['process_block'], $a != null && $a !== nil) ? 'instance-variable' : nil)\n }, TMP_ProcessorDsl_process_block_given$q_16.$$arity = 0);\n })($nesting[0], $nesting);\n (function($base, $parent_nesting) {\n var $SyntaxDsl, self = $SyntaxDsl = $module($base, 'SyntaxDsl');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SyntaxDsl_named_17, TMP_SyntaxDsl_content_model_18, TMP_SyntaxDsl_positional_attrs_19, TMP_SyntaxDsl_default_attrs_20, TMP_SyntaxDsl_resolves_attributes_23;\n\n \n self.$include($$($nesting, 'ProcessorDsl'));\n \n Opal.def(self, '$named', TMP_SyntaxDsl_named_17 = function $$named(value) {\n var self = this;\n\n if ($truthy($$($nesting, 'Processor')['$==='](self))) {\n return (self.name = value)\n } else {\n return self.$option(\"name\", value)\n }\n }, TMP_SyntaxDsl_named_17.$$arity = 1);\n Opal.alias(self, \"match_name\", \"named\");\n \n Opal.def(self, '$content_model', TMP_SyntaxDsl_content_model_18 = function $$content_model(value) {\n var self = this;\n\n return self.$option(\"content_model\", value)\n }, TMP_SyntaxDsl_content_model_18.$$arity = 1);\n Opal.alias(self, \"parse_content_as\", \"content_model\");\n Opal.alias(self, \"parses_content_as\", \"content_model\");\n \n Opal.def(self, '$positional_attrs', TMP_SyntaxDsl_positional_attrs_19 = function $$positional_attrs($a_rest) {\n var self = this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n return self.$option(\"pos_attrs\", value.$flatten())\n }, TMP_SyntaxDsl_positional_attrs_19.$$arity = -1);\n Opal.alias(self, \"name_attributes\", \"positional_attrs\");\n Opal.alias(self, \"name_positional_attributes\", \"positional_attrs\");\n \n Opal.def(self, '$default_attrs', TMP_SyntaxDsl_default_attrs_20 = function $$default_attrs(value) {\n var self = this;\n\n return self.$option(\"default_attrs\", value)\n }, TMP_SyntaxDsl_default_attrs_20.$$arity = 1);\n \n Opal.def(self, '$resolves_attributes', TMP_SyntaxDsl_resolves_attributes_23 = function $$resolves_attributes($a_rest) {\n var $b, TMP_21, TMP_22, self = this, args, $case = nil, names = nil, defaults = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n if ($truthy($rb_gt(args.$size(), 1))) {\n } else if ($truthy((args = args.$fetch(0, true))['$respond_to?'](\"to_sym\"))) {\n args = [args]};\n return (function() {$case = args;\n if (true['$===']($case)) {\n self.$option(\"pos_attrs\", []);\n return self.$option(\"default_attrs\", $hash2([], {}));}\n else if ($$$('::', 'Array')['$===']($case)) {\n $b = [[], $hash2([], {})], (names = $b[0]), (defaults = $b[1]), $b;\n $send(args, 'each', [], (TMP_21 = function(arg){var self = TMP_21.$$s || this, $a, $c, name = nil, value = nil, idx = nil, $writer = nil;\nif (arg == null) arg = nil;\n if ($truthy((arg = arg.$to_s())['$include?'](\"=\"))) {\n \n $c = arg.$split(\"=\", 2), $a = Opal.to_ary($c), (name = ($a[0] == null ? nil : $a[0])), (value = ($a[1] == null ? nil : $a[1])), $c;\n if ($truthy(name['$include?'](\":\"))) {\n \n $c = name.$split(\":\", 2), $a = Opal.to_ary($c), (idx = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $c;\n idx = (function() {if (idx['$=='](\"@\")) {\n return names.$size()\n } else {\n return idx.$to_i()\n }; return nil; })();\n \n $writer = [idx, name];\n $send(names, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n \n $writer = [name, value];\n $send(defaults, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n } else if ($truthy(arg['$include?'](\":\"))) {\n \n $c = arg.$split(\":\", 2), $a = Opal.to_ary($c), (idx = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $c;\n idx = (function() {if (idx['$=='](\"@\")) {\n return names.$size()\n } else {\n return idx.$to_i()\n }; return nil; })();\n \n $writer = [idx, name];\n $send(names, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n return names['$<<'](arg)\n }}, TMP_21.$$s = self, TMP_21.$$arity = 1, TMP_21));\n self.$option(\"pos_attrs\", names.$compact());\n return self.$option(\"default_attrs\", defaults);}\n else if ($$$('::', 'Hash')['$===']($case)) {\n $b = [[], $hash2([], {})], (names = $b[0]), (defaults = $b[1]), $b;\n $send(args, 'each', [], (TMP_22 = function(key, val){var self = TMP_22.$$s || this, $a, $c, name = nil, idx = nil, $writer = nil;\nif (key == null) key = nil;if (val == null) val = nil;\n \n if ($truthy((name = key.$to_s())['$include?'](\":\"))) {\n \n $c = name.$split(\":\", 2), $a = Opal.to_ary($c), (idx = ($a[0] == null ? nil : $a[0])), (name = ($a[1] == null ? nil : $a[1])), $c;\n idx = (function() {if (idx['$=='](\"@\")) {\n return names.$size()\n } else {\n return idx.$to_i()\n }; return nil; })();\n \n $writer = [idx, name];\n $send(names, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;};\n if ($truthy(val)) {\n \n $writer = [name, val];\n $send(defaults, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n return nil\n };}, TMP_22.$$s = self, TMP_22.$$arity = 2, TMP_22));\n self.$option(\"pos_attrs\", names.$compact());\n return self.$option(\"default_attrs\", defaults);}\n else {return self.$raise($$$('::', 'ArgumentError'), \"\" + \"unsupported attributes specification for macro: \" + (args.$inspect()))}})();\n }, TMP_SyntaxDsl_resolves_attributes_23.$$arity = -1);\n Opal.alias(self, \"resolve_attributes\", \"resolves_attributes\");\n })($nesting[0], $nesting);\n (function($base, $super, $parent_nesting) {\n function $Preprocessor(){};\n var self = $Preprocessor = $klass($base, $super, 'Preprocessor', $Preprocessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Preprocessor_process_24;\n\n return (Opal.def(self, '$process', TMP_Preprocessor_process_24 = function $$process(document, reader) {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'), \"\" + \"Asciidoctor::Extensions::Preprocessor subclass must implement #\" + (\"process\") + \" method\")\n }, TMP_Preprocessor_process_24.$$arity = 2), nil) && 'process'\n })($nesting[0], $$($nesting, 'Processor'), $nesting);\n Opal.const_set($$($nesting, 'Preprocessor'), 'DSL', $$($nesting, 'ProcessorDsl'));\n (function($base, $super, $parent_nesting) {\n function $TreeProcessor(){};\n var self = $TreeProcessor = $klass($base, $super, 'TreeProcessor', $TreeProcessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_TreeProcessor_process_25;\n\n return (Opal.def(self, '$process', TMP_TreeProcessor_process_25 = function $$process(document) {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'), \"\" + \"Asciidoctor::Extensions::TreeProcessor subclass must implement #\" + (\"process\") + \" method\")\n }, TMP_TreeProcessor_process_25.$$arity = 1), nil) && 'process'\n })($nesting[0], $$($nesting, 'Processor'), $nesting);\n Opal.const_set($$($nesting, 'TreeProcessor'), 'DSL', $$($nesting, 'ProcessorDsl'));\n Opal.const_set($nesting[0], 'Treeprocessor', $$($nesting, 'TreeProcessor'));\n (function($base, $super, $parent_nesting) {\n function $Postprocessor(){};\n var self = $Postprocessor = $klass($base, $super, 'Postprocessor', $Postprocessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Postprocessor_process_26;\n\n return (Opal.def(self, '$process', TMP_Postprocessor_process_26 = function $$process(document, output) {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'), \"\" + \"Asciidoctor::Extensions::Postprocessor subclass must implement #\" + (\"process\") + \" method\")\n }, TMP_Postprocessor_process_26.$$arity = 2), nil) && 'process'\n })($nesting[0], $$($nesting, 'Processor'), $nesting);\n Opal.const_set($$($nesting, 'Postprocessor'), 'DSL', $$($nesting, 'ProcessorDsl'));\n (function($base, $super, $parent_nesting) {\n function $IncludeProcessor(){};\n var self = $IncludeProcessor = $klass($base, $super, 'IncludeProcessor', $IncludeProcessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_IncludeProcessor_process_27, TMP_IncludeProcessor_handles$q_28;\n\n \n \n Opal.def(self, '$process', TMP_IncludeProcessor_process_27 = function $$process(document, reader, target, attributes) {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'), \"\" + \"Asciidoctor::Extensions::IncludeProcessor subclass must implement #\" + (\"process\") + \" method\")\n }, TMP_IncludeProcessor_process_27.$$arity = 4);\n return (Opal.def(self, '$handles?', TMP_IncludeProcessor_handles$q_28 = function(target) {\n var self = this;\n\n return true\n }, TMP_IncludeProcessor_handles$q_28.$$arity = 1), nil) && 'handles?';\n })($nesting[0], $$($nesting, 'Processor'), $nesting);\n (function($base, $parent_nesting) {\n var $IncludeProcessorDsl, self = $IncludeProcessorDsl = $module($base, 'IncludeProcessorDsl');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_IncludeProcessorDsl_handles$q_29;\n\n \n self.$include($$($nesting, 'ProcessorDsl'));\n \n Opal.def(self, '$handles?', TMP_IncludeProcessorDsl_handles$q_29 = function($a_rest) {\n var $b, self = this, args, $iter = TMP_IncludeProcessorDsl_handles$q_29.$$p, block = $iter || nil;\n if (self.handles_block == null) self.handles_block = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_IncludeProcessorDsl_handles$q_29.$$p = null;\n if ((block !== nil)) {\n \n if ($truthy(args['$empty?']())) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"wrong number of arguments (given \" + (args.$size()) + \", expected 0)\")\n };\n return (self.handles_block = block);\n } else if ($truthy((($b = self['handles_block'], $b != null && $b !== nil) ? 'instance-variable' : nil))) {\n return self.handles_block.$call(args['$[]'](0))\n } else {\n return true\n }\n }, TMP_IncludeProcessorDsl_handles$q_29.$$arity = -1);\n })($nesting[0], $nesting);\n Opal.const_set($$($nesting, 'IncludeProcessor'), 'DSL', $$($nesting, 'IncludeProcessorDsl'));\n (function($base, $super, $parent_nesting) {\n function $DocinfoProcessor(){};\n var self = $DocinfoProcessor = $klass($base, $super, 'DocinfoProcessor', $DocinfoProcessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DocinfoProcessor_initialize_30, TMP_DocinfoProcessor_process_31;\n\n def.config = nil;\n \n self.$attr_accessor(\"location\");\n \n Opal.def(self, '$initialize', TMP_DocinfoProcessor_initialize_30 = function $$initialize(config) {\n var $a, self = this, $iter = TMP_DocinfoProcessor_initialize_30.$$p, $yield = $iter || nil, $writer = nil;\n\n if (config == null) {\n config = $hash2([], {});\n }\n if ($iter) TMP_DocinfoProcessor_initialize_30.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_DocinfoProcessor_initialize_30, false), [config], null);\n return ($truthy($a = self.config['$[]'](\"location\")) ? $a : (($writer = [\"location\", \"head\"]), $send(self.config, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n }, TMP_DocinfoProcessor_initialize_30.$$arity = -1);\n return (Opal.def(self, '$process', TMP_DocinfoProcessor_process_31 = function $$process(document) {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'), \"\" + \"Asciidoctor::Extensions::DocinfoProcessor subclass must implement #\" + (\"process\") + \" method\")\n }, TMP_DocinfoProcessor_process_31.$$arity = 1), nil) && 'process';\n })($nesting[0], $$($nesting, 'Processor'), $nesting);\n (function($base, $parent_nesting) {\n var $DocinfoProcessorDsl, self = $DocinfoProcessorDsl = $module($base, 'DocinfoProcessorDsl');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_DocinfoProcessorDsl_at_location_32;\n\n \n self.$include($$($nesting, 'ProcessorDsl'));\n \n Opal.def(self, '$at_location', TMP_DocinfoProcessorDsl_at_location_32 = function $$at_location(value) {\n var self = this;\n\n return self.$option(\"location\", value)\n }, TMP_DocinfoProcessorDsl_at_location_32.$$arity = 1);\n })($nesting[0], $nesting);\n Opal.const_set($$($nesting, 'DocinfoProcessor'), 'DSL', $$($nesting, 'DocinfoProcessorDsl'));\n (function($base, $super, $parent_nesting) {\n function $BlockProcessor(){};\n var self = $BlockProcessor = $klass($base, $super, 'BlockProcessor', $BlockProcessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BlockProcessor_initialize_33, TMP_BlockProcessor_process_34;\n\n def.config = nil;\n \n self.$attr_accessor(\"name\");\n \n Opal.def(self, '$initialize', TMP_BlockProcessor_initialize_33 = function $$initialize(name, config) {\n var $a, self = this, $iter = TMP_BlockProcessor_initialize_33.$$p, $yield = $iter || nil, $case = nil, $writer = nil;\n\n if (name == null) {\n name = nil;\n }\n if (config == null) {\n config = $hash2([], {});\n }\n if ($iter) TMP_BlockProcessor_initialize_33.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_BlockProcessor_initialize_33, false), [config], null);\n self.name = ($truthy($a = name) ? $a : self.config['$[]'](\"name\"));\n $case = self.config['$[]'](\"contexts\");\n if ($$$('::', 'NilClass')['$===']($case)) {($truthy($a = self.config['$[]'](\"contexts\")) ? $a : (($writer = [\"contexts\", [\"open\", \"paragraph\"].$to_set()]), $send(self.config, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))}\n else if ($$$('::', 'Symbol')['$===']($case)) {\n $writer = [\"contexts\", [self.config['$[]'](\"contexts\")].$to_set()];\n $send(self.config, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n else {\n $writer = [\"contexts\", self.config['$[]'](\"contexts\").$to_set()];\n $send(self.config, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n return ($truthy($a = self.config['$[]'](\"content_model\")) ? $a : (($writer = [\"content_model\", \"compound\"]), $send(self.config, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n }, TMP_BlockProcessor_initialize_33.$$arity = -1);\n return (Opal.def(self, '$process', TMP_BlockProcessor_process_34 = function $$process(parent, reader, attributes) {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'), \"\" + \"Asciidoctor::Extensions::BlockProcessor subclass must implement #\" + (\"process\") + \" method\")\n }, TMP_BlockProcessor_process_34.$$arity = 3), nil) && 'process';\n })($nesting[0], $$($nesting, 'Processor'), $nesting);\n (function($base, $parent_nesting) {\n var $BlockProcessorDsl, self = $BlockProcessorDsl = $module($base, 'BlockProcessorDsl');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_BlockProcessorDsl_contexts_35;\n\n \n self.$include($$($nesting, 'SyntaxDsl'));\n \n Opal.def(self, '$contexts', TMP_BlockProcessorDsl_contexts_35 = function $$contexts($a_rest) {\n var self = this, value;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n value = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n value[$arg_idx - 0] = arguments[$arg_idx];\n }\n return self.$option(\"contexts\", value.$flatten().$to_set())\n }, TMP_BlockProcessorDsl_contexts_35.$$arity = -1);\n Opal.alias(self, \"on_contexts\", \"contexts\");\n Opal.alias(self, \"on_context\", \"contexts\");\n Opal.alias(self, \"bound_to\", \"contexts\");\n })($nesting[0], $nesting);\n Opal.const_set($$($nesting, 'BlockProcessor'), 'DSL', $$($nesting, 'BlockProcessorDsl'));\n (function($base, $super, $parent_nesting) {\n function $MacroProcessor(){};\n var self = $MacroProcessor = $klass($base, $super, 'MacroProcessor', $MacroProcessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MacroProcessor_initialize_36, TMP_MacroProcessor_process_37;\n\n def.config = nil;\n \n self.$attr_accessor(\"name\");\n \n Opal.def(self, '$initialize', TMP_MacroProcessor_initialize_36 = function $$initialize(name, config) {\n var $a, self = this, $iter = TMP_MacroProcessor_initialize_36.$$p, $yield = $iter || nil, $writer = nil;\n\n if (name == null) {\n name = nil;\n }\n if (config == null) {\n config = $hash2([], {});\n }\n if ($iter) TMP_MacroProcessor_initialize_36.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_MacroProcessor_initialize_36, false), [config], null);\n self.name = ($truthy($a = name) ? $a : self.config['$[]'](\"name\"));\n return ($truthy($a = self.config['$[]'](\"content_model\")) ? $a : (($writer = [\"content_model\", \"attributes\"]), $send(self.config, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n }, TMP_MacroProcessor_initialize_36.$$arity = -1);\n return (Opal.def(self, '$process', TMP_MacroProcessor_process_37 = function $$process(parent, target, attributes) {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'), \"\" + \"Asciidoctor::Extensions::MacroProcessor subclass must implement #\" + (\"process\") + \" method\")\n }, TMP_MacroProcessor_process_37.$$arity = 3), nil) && 'process';\n })($nesting[0], $$($nesting, 'Processor'), $nesting);\n (function($base, $parent_nesting) {\n var $MacroProcessorDsl, self = $MacroProcessorDsl = $module($base, 'MacroProcessorDsl');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_MacroProcessorDsl_resolves_attributes_38;\n\n \n self.$include($$($nesting, 'SyntaxDsl'));\n \n Opal.def(self, '$resolves_attributes', TMP_MacroProcessorDsl_resolves_attributes_38 = function $$resolves_attributes($a_rest) {\n var $b, self = this, args, $iter = TMP_MacroProcessorDsl_resolves_attributes_38.$$p, $yield = $iter || nil, $zuper = nil, $zuper_i = nil, $zuper_ii = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_MacroProcessorDsl_resolves_attributes_38.$$p = null;\n // Prepare super implicit arguments\n for($zuper_i = 0, $zuper_ii = arguments.length, $zuper = new Array($zuper_ii); $zuper_i < $zuper_ii; $zuper_i++) {\n $zuper[$zuper_i] = arguments[$zuper_i];\n }\n \n if ($truthy((($b = args.$size()['$=='](1)) ? args['$[]'](0)['$!']() : args.$size()['$=='](1)))) {\n \n self.$option(\"content_model\", \"text\");\n return nil;};\n $send(self, Opal.find_super_dispatcher(self, 'resolves_attributes', TMP_MacroProcessorDsl_resolves_attributes_38, false), $zuper, $iter);\n return self.$option(\"content_model\", \"attributes\");\n }, TMP_MacroProcessorDsl_resolves_attributes_38.$$arity = -1);\n Opal.alias(self, \"resolve_attributes\", \"resolves_attributes\");\n })($nesting[0], $nesting);\n (function($base, $super, $parent_nesting) {\n function $BlockMacroProcessor(){};\n var self = $BlockMacroProcessor = $klass($base, $super, 'BlockMacroProcessor', $BlockMacroProcessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return nil\n })($nesting[0], $$($nesting, 'MacroProcessor'), $nesting);\n Opal.const_set($$($nesting, 'BlockMacroProcessor'), 'DSL', $$($nesting, 'MacroProcessorDsl'));\n (function($base, $super, $parent_nesting) {\n function $InlineMacroProcessor(){};\n var self = $InlineMacroProcessor = $klass($base, $super, 'InlineMacroProcessor', $InlineMacroProcessor);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_InlineMacroProcessor_regexp_39, TMP_InlineMacroProcessor_resolve_regexp_40;\n\n def.config = def.name = nil;\n \n (Opal.class_variable_set($InlineMacroProcessor, '@@rx_cache', $hash2([], {})));\n \n Opal.def(self, '$regexp', TMP_InlineMacroProcessor_regexp_39 = function $$regexp() {\n var $a, self = this, $writer = nil;\n\n return ($truthy($a = self.config['$[]'](\"regexp\")) ? $a : (($writer = [\"regexp\", self.$resolve_regexp(self.name.$to_s(), self.config['$[]'](\"format\"))]), $send(self.config, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n }, TMP_InlineMacroProcessor_regexp_39.$$arity = 0);\n return (Opal.def(self, '$resolve_regexp', TMP_InlineMacroProcessor_resolve_regexp_40 = function $$resolve_regexp(name, format) {\n var $a, $b, self = this, $writer = nil;\n\n \n if ($truthy($$($nesting, 'MacroNameRx')['$match?'](name))) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"invalid name for inline macro: \" + (name))\n };\n return ($truthy($a = (($b = $InlineMacroProcessor.$$cvars['@@rx_cache']) == null ? nil : $b)['$[]']([name, format])) ? $a : (($writer = [[name, format], new RegExp(\"\" + \"\\\\\\\\?\" + (name) + \":\" + ((function() {if (format['$=='](\"short\")) {\n return \"(){0}\"\n } else {\n return \"(\\\\S+?)\"\n }; return nil; })()) + \"\\\\[(|.*?[^\\\\\\\\])\\\\]\")]), $send((($b = $InlineMacroProcessor.$$cvars['@@rx_cache']) == null ? nil : $b), '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n }, TMP_InlineMacroProcessor_resolve_regexp_40.$$arity = 2), nil) && 'resolve_regexp';\n })($nesting[0], $$($nesting, 'MacroProcessor'), $nesting);\n (function($base, $parent_nesting) {\n var $InlineMacroProcessorDsl, self = $InlineMacroProcessorDsl = $module($base, 'InlineMacroProcessorDsl');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_InlineMacroProcessorDsl_with_format_41, TMP_InlineMacroProcessorDsl_matches_42;\n\n \n self.$include($$($nesting, 'MacroProcessorDsl'));\n \n Opal.def(self, '$with_format', TMP_InlineMacroProcessorDsl_with_format_41 = function $$with_format(value) {\n var self = this;\n\n return self.$option(\"format\", value)\n }, TMP_InlineMacroProcessorDsl_with_format_41.$$arity = 1);\n Opal.alias(self, \"using_format\", \"with_format\");\n \n Opal.def(self, '$matches', TMP_InlineMacroProcessorDsl_matches_42 = function $$matches(value) {\n var self = this;\n\n return self.$option(\"regexp\", value)\n }, TMP_InlineMacroProcessorDsl_matches_42.$$arity = 1);\n Opal.alias(self, \"match\", \"matches\");\n Opal.alias(self, \"matching\", \"matches\");\n })($nesting[0], $nesting);\n Opal.const_set($$($nesting, 'InlineMacroProcessor'), 'DSL', $$($nesting, 'InlineMacroProcessorDsl'));\n (function($base, $super, $parent_nesting) {\n function $Extension(){};\n var self = $Extension = $klass($base, $super, 'Extension', $Extension);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Extension_initialize_43;\n\n \n self.$attr_reader(\"kind\");\n self.$attr_reader(\"config\");\n self.$attr_reader(\"instance\");\n return (Opal.def(self, '$initialize', TMP_Extension_initialize_43 = function $$initialize(kind, instance, config) {\n var self = this;\n\n \n self.kind = kind;\n self.instance = instance;\n return (self.config = config);\n }, TMP_Extension_initialize_43.$$arity = 3), nil) && 'initialize';\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $ProcessorExtension(){};\n var self = $ProcessorExtension = $klass($base, $super, 'ProcessorExtension', $ProcessorExtension);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_ProcessorExtension_initialize_44;\n\n \n self.$attr_reader(\"process_method\");\n return (Opal.def(self, '$initialize', TMP_ProcessorExtension_initialize_44 = function $$initialize(kind, instance, process_method) {\n var $a, self = this, $iter = TMP_ProcessorExtension_initialize_44.$$p, $yield = $iter || nil;\n\n if (process_method == null) {\n process_method = nil;\n }\n if ($iter) TMP_ProcessorExtension_initialize_44.$$p = null;\n \n $send(self, Opal.find_super_dispatcher(self, 'initialize', TMP_ProcessorExtension_initialize_44, false), [kind, instance, instance.$config()], null);\n return (self.process_method = ($truthy($a = process_method) ? $a : instance.$method(\"process\")));\n }, TMP_ProcessorExtension_initialize_44.$$arity = -3), nil) && 'initialize';\n })($nesting[0], $$($nesting, 'Extension'), $nesting);\n (function($base, $super, $parent_nesting) {\n function $Group(){};\n var self = $Group = $klass($base, $super, 'Group', $Group);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Group_activate_46;\n\n \n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_register_45;\n\n return (Opal.def(self, '$register', TMP_register_45 = function $$register(name) {\n var self = this;\n\n if (name == null) {\n name = nil;\n }\n return $$($nesting, 'Extensions').$register(name, self)\n }, TMP_register_45.$$arity = -1), nil) && 'register'\n })(Opal.get_singleton_class(self), $nesting);\n return (Opal.def(self, '$activate', TMP_Group_activate_46 = function $$activate(registry) {\n var self = this;\n\n return self.$raise($$$('::', 'NotImplementedError'))\n }, TMP_Group_activate_46.$$arity = 1), nil) && 'activate';\n })($nesting[0], null, $nesting);\n (function($base, $super, $parent_nesting) {\n function $Registry(){};\n var self = $Registry = $klass($base, $super, 'Registry', $Registry);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Registry_initialize_47, TMP_Registry_activate_49, TMP_Registry_preprocessor_50, TMP_Registry_preprocessors$q_51, TMP_Registry_preprocessors_52, TMP_Registry_tree_processor_53, TMP_Registry_tree_processors$q_54, TMP_Registry_tree_processors_55, TMP_Registry_postprocessor_56, TMP_Registry_postprocessors$q_57, TMP_Registry_postprocessors_58, TMP_Registry_include_processor_59, TMP_Registry_include_processors$q_60, TMP_Registry_include_processors_61, TMP_Registry_docinfo_processor_62, TMP_Registry_docinfo_processors$q_64, TMP_Registry_docinfo_processors_66, TMP_Registry_block_67, TMP_Registry_blocks$q_68, TMP_Registry_registered_for_block$q_69, TMP_Registry_find_block_extension_70, TMP_Registry_block_macro_71, TMP_Registry_block_macros$q_72, TMP_Registry_registered_for_block_macro$q_73, TMP_Registry_find_block_macro_extension_74, TMP_Registry_inline_macro_75, TMP_Registry_inline_macros$q_76, TMP_Registry_registered_for_inline_macro$q_77, TMP_Registry_find_inline_macro_extension_78, TMP_Registry_inline_macros_79, TMP_Registry_add_document_processor_80, TMP_Registry_add_syntax_processor_82, TMP_Registry_resolve_args_84, TMP_Registry_as_symbol_85;\n\n def.groups = def.preprocessor_extensions = def.tree_processor_extensions = def.postprocessor_extensions = def.include_processor_extensions = def.docinfo_processor_extensions = def.block_extensions = def.block_macro_extensions = def.inline_macro_extensions = nil;\n \n self.$attr_reader(\"document\");\n self.$attr_reader(\"groups\");\n \n Opal.def(self, '$initialize', TMP_Registry_initialize_47 = function $$initialize(groups) {\n var self = this;\n\n if (groups == null) {\n groups = $hash2([], {});\n }\n \n self.groups = groups;\n self.preprocessor_extensions = (self.tree_processor_extensions = (self.postprocessor_extensions = (self.include_processor_extensions = (self.docinfo_processor_extensions = nil))));\n self.block_extensions = (self.block_macro_extensions = (self.inline_macro_extensions = nil));\n return (self.document = nil);\n }, TMP_Registry_initialize_47.$$arity = -1);\n \n Opal.def(self, '$activate', TMP_Registry_activate_49 = function $$activate(document) {\n var TMP_48, self = this;\n\n \n self.document = document;\n $send($rb_plus($$($nesting, 'Extensions').$groups().$values(), self.groups.$values()), 'each', [], (TMP_48 = function(group){var self = TMP_48.$$s || this, $case = nil;\nif (group == null) group = nil;\n return (function() {$case = group;\n if ($$$('::', 'Proc')['$===']($case)) {return (function() {$case = group.$arity();\n if ((0)['$===']($case) || (-1)['$===']($case)) {return $send(self, 'instance_exec', [], group.$to_proc())}\n else if ((1)['$===']($case)) {return group.$call(self)}\n else { return nil }})()}\n else if ($$$('::', 'Class')['$===']($case)) {return group.$new().$activate(self)}\n else {return group.$activate(self)}})()}, TMP_48.$$s = self, TMP_48.$$arity = 1, TMP_48));\n return self;\n }, TMP_Registry_activate_49.$$arity = 1);\n \n Opal.def(self, '$preprocessor', TMP_Registry_preprocessor_50 = function $$preprocessor($a_rest) {\n var self = this, args, $iter = TMP_Registry_preprocessor_50.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Registry_preprocessor_50.$$p = null;\n return $send(self, 'add_document_processor', [\"preprocessor\", args], block.$to_proc())\n }, TMP_Registry_preprocessor_50.$$arity = -1);\n \n Opal.def(self, '$preprocessors?', TMP_Registry_preprocessors$q_51 = function() {\n var self = this;\n\n return self.preprocessor_extensions['$!']()['$!']()\n }, TMP_Registry_preprocessors$q_51.$$arity = 0);\n \n Opal.def(self, '$preprocessors', TMP_Registry_preprocessors_52 = function $$preprocessors() {\n var self = this;\n\n return self.preprocessor_extensions\n }, TMP_Registry_preprocessors_52.$$arity = 0);\n \n Opal.def(self, '$tree_processor', TMP_Registry_tree_processor_53 = function $$tree_processor($a_rest) {\n var self = this, args, $iter = TMP_Registry_tree_processor_53.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Registry_tree_processor_53.$$p = null;\n return $send(self, 'add_document_processor', [\"tree_processor\", args], block.$to_proc())\n }, TMP_Registry_tree_processor_53.$$arity = -1);\n \n Opal.def(self, '$tree_processors?', TMP_Registry_tree_processors$q_54 = function() {\n var self = this;\n\n return self.tree_processor_extensions['$!']()['$!']()\n }, TMP_Registry_tree_processors$q_54.$$arity = 0);\n \n Opal.def(self, '$tree_processors', TMP_Registry_tree_processors_55 = function $$tree_processors() {\n var self = this;\n\n return self.tree_processor_extensions\n }, TMP_Registry_tree_processors_55.$$arity = 0);\n Opal.alias(self, \"treeprocessor\", \"tree_processor\");\n Opal.alias(self, \"treeprocessors?\", \"tree_processors?\");\n Opal.alias(self, \"treeprocessors\", \"tree_processors\");\n \n Opal.def(self, '$postprocessor', TMP_Registry_postprocessor_56 = function $$postprocessor($a_rest) {\n var self = this, args, $iter = TMP_Registry_postprocessor_56.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Registry_postprocessor_56.$$p = null;\n return $send(self, 'add_document_processor', [\"postprocessor\", args], block.$to_proc())\n }, TMP_Registry_postprocessor_56.$$arity = -1);\n \n Opal.def(self, '$postprocessors?', TMP_Registry_postprocessors$q_57 = function() {\n var self = this;\n\n return self.postprocessor_extensions['$!']()['$!']()\n }, TMP_Registry_postprocessors$q_57.$$arity = 0);\n \n Opal.def(self, '$postprocessors', TMP_Registry_postprocessors_58 = function $$postprocessors() {\n var self = this;\n\n return self.postprocessor_extensions\n }, TMP_Registry_postprocessors_58.$$arity = 0);\n \n Opal.def(self, '$include_processor', TMP_Registry_include_processor_59 = function $$include_processor($a_rest) {\n var self = this, args, $iter = TMP_Registry_include_processor_59.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Registry_include_processor_59.$$p = null;\n return $send(self, 'add_document_processor', [\"include_processor\", args], block.$to_proc())\n }, TMP_Registry_include_processor_59.$$arity = -1);\n \n Opal.def(self, '$include_processors?', TMP_Registry_include_processors$q_60 = function() {\n var self = this;\n\n return self.include_processor_extensions['$!']()['$!']()\n }, TMP_Registry_include_processors$q_60.$$arity = 0);\n \n Opal.def(self, '$include_processors', TMP_Registry_include_processors_61 = function $$include_processors() {\n var self = this;\n\n return self.include_processor_extensions\n }, TMP_Registry_include_processors_61.$$arity = 0);\n \n Opal.def(self, '$docinfo_processor', TMP_Registry_docinfo_processor_62 = function $$docinfo_processor($a_rest) {\n var self = this, args, $iter = TMP_Registry_docinfo_processor_62.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Registry_docinfo_processor_62.$$p = null;\n return $send(self, 'add_document_processor', [\"docinfo_processor\", args], block.$to_proc())\n }, TMP_Registry_docinfo_processor_62.$$arity = -1);\n \n Opal.def(self, '$docinfo_processors?', TMP_Registry_docinfo_processors$q_64 = function(location) {\n var TMP_63, self = this;\n\n if (location == null) {\n location = nil;\n }\n if ($truthy(self.docinfo_processor_extensions)) {\n if ($truthy(location)) {\n return $send(self.docinfo_processor_extensions, 'any?', [], (TMP_63 = function(ext){var self = TMP_63.$$s || this;\nif (ext == null) ext = nil;\n return ext.$config()['$[]'](\"location\")['$=='](location)}, TMP_63.$$s = self, TMP_63.$$arity = 1, TMP_63))\n } else {\n return true\n }\n } else {\n return false\n }\n }, TMP_Registry_docinfo_processors$q_64.$$arity = -1);\n \n Opal.def(self, '$docinfo_processors', TMP_Registry_docinfo_processors_66 = function $$docinfo_processors(location) {\n var TMP_65, self = this;\n\n if (location == null) {\n location = nil;\n }\n if ($truthy(self.docinfo_processor_extensions)) {\n if ($truthy(location)) {\n return $send(self.docinfo_processor_extensions, 'select', [], (TMP_65 = function(ext){var self = TMP_65.$$s || this;\nif (ext == null) ext = nil;\n return ext.$config()['$[]'](\"location\")['$=='](location)}, TMP_65.$$s = self, TMP_65.$$arity = 1, TMP_65))\n } else {\n return self.docinfo_processor_extensions\n }\n } else {\n return nil\n }\n }, TMP_Registry_docinfo_processors_66.$$arity = -1);\n \n Opal.def(self, '$block', TMP_Registry_block_67 = function $$block($a_rest) {\n var self = this, args, $iter = TMP_Registry_block_67.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Registry_block_67.$$p = null;\n return $send(self, 'add_syntax_processor', [\"block\", args], block.$to_proc())\n }, TMP_Registry_block_67.$$arity = -1);\n \n Opal.def(self, '$blocks?', TMP_Registry_blocks$q_68 = function() {\n var self = this;\n\n return self.block_extensions['$!']()['$!']()\n }, TMP_Registry_blocks$q_68.$$arity = 0);\n \n Opal.def(self, '$registered_for_block?', TMP_Registry_registered_for_block$q_69 = function(name, context) {\n var self = this, ext = nil;\n\n if ($truthy((ext = self.block_extensions['$[]'](name.$to_sym())))) {\n if ($truthy(ext.$config()['$[]'](\"contexts\")['$include?'](context))) {\n return ext\n } else {\n return false\n }\n } else {\n return false\n }\n }, TMP_Registry_registered_for_block$q_69.$$arity = 2);\n \n Opal.def(self, '$find_block_extension', TMP_Registry_find_block_extension_70 = function $$find_block_extension(name) {\n var self = this;\n\n return self.block_extensions['$[]'](name.$to_sym())\n }, TMP_Registry_find_block_extension_70.$$arity = 1);\n \n Opal.def(self, '$block_macro', TMP_Registry_block_macro_71 = function $$block_macro($a_rest) {\n var self = this, args, $iter = TMP_Registry_block_macro_71.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Registry_block_macro_71.$$p = null;\n return $send(self, 'add_syntax_processor', [\"block_macro\", args], block.$to_proc())\n }, TMP_Registry_block_macro_71.$$arity = -1);\n \n Opal.def(self, '$block_macros?', TMP_Registry_block_macros$q_72 = function() {\n var self = this;\n\n return self.block_macro_extensions['$!']()['$!']()\n }, TMP_Registry_block_macros$q_72.$$arity = 0);\n \n Opal.def(self, '$registered_for_block_macro?', TMP_Registry_registered_for_block_macro$q_73 = function(name) {\n var self = this, ext = nil;\n\n if ($truthy((ext = self.block_macro_extensions['$[]'](name.$to_sym())))) {\n return ext\n } else {\n return false\n }\n }, TMP_Registry_registered_for_block_macro$q_73.$$arity = 1);\n \n Opal.def(self, '$find_block_macro_extension', TMP_Registry_find_block_macro_extension_74 = function $$find_block_macro_extension(name) {\n var self = this;\n\n return self.block_macro_extensions['$[]'](name.$to_sym())\n }, TMP_Registry_find_block_macro_extension_74.$$arity = 1);\n \n Opal.def(self, '$inline_macro', TMP_Registry_inline_macro_75 = function $$inline_macro($a_rest) {\n var self = this, args, $iter = TMP_Registry_inline_macro_75.$$p, block = $iter || nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_Registry_inline_macro_75.$$p = null;\n return $send(self, 'add_syntax_processor', [\"inline_macro\", args], block.$to_proc())\n }, TMP_Registry_inline_macro_75.$$arity = -1);\n \n Opal.def(self, '$inline_macros?', TMP_Registry_inline_macros$q_76 = function() {\n var self = this;\n\n return self.inline_macro_extensions['$!']()['$!']()\n }, TMP_Registry_inline_macros$q_76.$$arity = 0);\n \n Opal.def(self, '$registered_for_inline_macro?', TMP_Registry_registered_for_inline_macro$q_77 = function(name) {\n var self = this, ext = nil;\n\n if ($truthy((ext = self.inline_macro_extensions['$[]'](name.$to_sym())))) {\n return ext\n } else {\n return false\n }\n }, TMP_Registry_registered_for_inline_macro$q_77.$$arity = 1);\n \n Opal.def(self, '$find_inline_macro_extension', TMP_Registry_find_inline_macro_extension_78 = function $$find_inline_macro_extension(name) {\n var self = this;\n\n return self.inline_macro_extensions['$[]'](name.$to_sym())\n }, TMP_Registry_find_inline_macro_extension_78.$$arity = 1);\n \n Opal.def(self, '$inline_macros', TMP_Registry_inline_macros_79 = function $$inline_macros() {\n var self = this;\n\n return self.inline_macro_extensions.$values()\n }, TMP_Registry_inline_macros_79.$$arity = 0);\n self.$private();\n \n Opal.def(self, '$add_document_processor', TMP_Registry_add_document_processor_80 = function $$add_document_processor(kind, args) {\n var TMP_81, $a, $b, $c, self = this, $iter = TMP_Registry_add_document_processor_80.$$p, block = $iter || nil, kind_name = nil, kind_class_symbol = nil, kind_class = nil, kind_java_class = nil, kind_store = nil, extension = nil, config = nil, processor = nil, processor_class = nil, processor_instance = nil;\n\n if ($iter) TMP_Registry_add_document_processor_80.$$p = null;\n \n kind_name = kind.$to_s().$tr(\"_\", \" \");\n kind_class_symbol = $send(kind_name.$split(), 'map', [], (TMP_81 = function(it){var self = TMP_81.$$s || this;\nif (it == null) it = nil;\n return it.$capitalize()}, TMP_81.$$s = self, TMP_81.$$arity = 1, TMP_81)).$join().$to_sym();\n kind_class = $$($nesting, 'Extensions').$const_get(kind_class_symbol);\n kind_java_class = (function() {if ($truthy((($a = $$$('::', 'AsciidoctorJ', 'skip_raise')) ? 'constant' : nil))) {\n \n return $$$($$$('::', 'AsciidoctorJ'), 'Extensions').$const_get(kind_class_symbol);\n } else {\n return nil\n }; return nil; })();\n kind_store = ($truthy($b = self.$instance_variable_get((((\"\" + \"@\") + (kind)) + \"_extensions\").$to_sym())) ? $b : self.$instance_variable_set((((\"\" + \"@\") + (kind)) + \"_extensions\").$to_sym(), []));\n extension = (function() {if ((block !== nil)) {\n \n config = self.$resolve_args(args, 1);\n processor = kind_class.$new(config);\n if ($truthy(kind_class.$constants().$grep(\"DSL\"))) {\n processor.$extend(kind_class.$const_get(\"DSL\"))};\n $send(processor, 'instance_exec', [], block.$to_proc());\n processor.$freeze();\n if ($truthy(processor['$process_block_given?']())) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"No block specified to process \" + (kind_name) + \" extension at \" + (block.$source_location()))\n };\n return $$($nesting, 'ProcessorExtension').$new(kind, processor);\n } else {\n \n $c = self.$resolve_args(args, 2), $b = Opal.to_ary($c), (processor = ($b[0] == null ? nil : $b[0])), (config = ($b[1] == null ? nil : $b[1])), $c;\n if ($truthy((processor_class = $$($nesting, 'Extensions').$resolve_class(processor)))) {\n \n if ($truthy(($truthy($b = $rb_lt(processor_class, kind_class)) ? $b : ($truthy($c = kind_java_class) ? $rb_lt(processor_class, kind_java_class) : $c)))) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"Invalid type for \" + (kind_name) + \" extension: \" + (processor))\n };\n processor_instance = processor_class.$new(config);\n processor_instance.$freeze();\n return $$($nesting, 'ProcessorExtension').$new(kind, processor_instance);\n } else if ($truthy(($truthy($b = kind_class['$==='](processor)) ? $b : ($truthy($c = kind_java_class) ? kind_java_class['$==='](processor) : $c)))) {\n \n processor.$update_config(config);\n processor.$freeze();\n return $$($nesting, 'ProcessorExtension').$new(kind, processor);\n } else {\n return self.$raise($$$('::', 'ArgumentError'), \"\" + \"Invalid arguments specified for registering \" + (kind_name) + \" extension: \" + (args))\n };\n }; return nil; })();\n if (extension.$config()['$[]'](\"position\")['$=='](\">>\")) {\n return kind_store.$unshift(extension)\n } else {\n return kind_store['$<<'](extension)\n };\n }, TMP_Registry_add_document_processor_80.$$arity = 2);\n \n Opal.def(self, '$add_syntax_processor', TMP_Registry_add_syntax_processor_82 = function $$add_syntax_processor(kind, args) {\n var TMP_83, $a, $b, $c, self = this, $iter = TMP_Registry_add_syntax_processor_82.$$p, block = $iter || nil, kind_name = nil, kind_class_symbol = nil, kind_class = nil, kind_java_class = nil, kind_store = nil, name = nil, config = nil, processor = nil, $writer = nil, processor_class = nil, processor_instance = nil;\n\n if ($iter) TMP_Registry_add_syntax_processor_82.$$p = null;\n \n kind_name = kind.$to_s().$tr(\"_\", \" \");\n kind_class_symbol = $send(kind_name.$split(), 'map', [], (TMP_83 = function(it){var self = TMP_83.$$s || this;\nif (it == null) it = nil;\n return it.$capitalize()}, TMP_83.$$s = self, TMP_83.$$arity = 1, TMP_83)).$push(\"Processor\").$join().$to_sym();\n kind_class = $$($nesting, 'Extensions').$const_get(kind_class_symbol);\n kind_java_class = (function() {if ($truthy((($a = $$$('::', 'AsciidoctorJ', 'skip_raise')) ? 'constant' : nil))) {\n \n return $$$($$$('::', 'AsciidoctorJ'), 'Extensions').$const_get(kind_class_symbol);\n } else {\n return nil\n }; return nil; })();\n kind_store = ($truthy($b = self.$instance_variable_get((((\"\" + \"@\") + (kind)) + \"_extensions\").$to_sym())) ? $b : self.$instance_variable_set((((\"\" + \"@\") + (kind)) + \"_extensions\").$to_sym(), $hash2([], {})));\n if ((block !== nil)) {\n \n $c = self.$resolve_args(args, 2), $b = Opal.to_ary($c), (name = ($b[0] == null ? nil : $b[0])), (config = ($b[1] == null ? nil : $b[1])), $c;\n processor = kind_class.$new(self.$as_symbol(name), config);\n if ($truthy(kind_class.$constants().$grep(\"DSL\"))) {\n processor.$extend(kind_class.$const_get(\"DSL\"))};\n if (block.$arity()['$=='](1)) {\n Opal.yield1(block, processor)\n } else {\n $send(processor, 'instance_exec', [], block.$to_proc())\n };\n if ($truthy((name = self.$as_symbol(processor.$name())))) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"No name specified for \" + (kind_name) + \" extension at \" + (block.$source_location()))\n };\n if ($truthy(processor['$process_block_given?']())) {\n } else {\n self.$raise($$$('::', 'NoMethodError'), \"\" + \"No block specified to process \" + (kind_name) + \" extension at \" + (block.$source_location()))\n };\n processor.$freeze();\n \n $writer = [name, $$($nesting, 'ProcessorExtension').$new(kind, processor)];\n $send(kind_store, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n \n $c = self.$resolve_args(args, 3), $b = Opal.to_ary($c), (processor = ($b[0] == null ? nil : $b[0])), (name = ($b[1] == null ? nil : $b[1])), (config = ($b[2] == null ? nil : $b[2])), $c;\n if ($truthy((processor_class = $$($nesting, 'Extensions').$resolve_class(processor)))) {\n \n if ($truthy(($truthy($b = $rb_lt(processor_class, kind_class)) ? $b : ($truthy($c = kind_java_class) ? $rb_lt(processor_class, kind_java_class) : $c)))) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"Class specified for \" + (kind_name) + \" extension does not inherit from \" + (kind_class) + \": \" + (processor))\n };\n processor_instance = processor_class.$new(self.$as_symbol(name), config);\n if ($truthy((name = self.$as_symbol(processor_instance.$name())))) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"No name specified for \" + (kind_name) + \" extension: \" + (processor))\n };\n processor_instance.$freeze();\n \n $writer = [name, $$($nesting, 'ProcessorExtension').$new(kind, processor_instance)];\n $send(kind_store, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n } else if ($truthy(($truthy($b = kind_class['$==='](processor)) ? $b : ($truthy($c = kind_java_class) ? kind_java_class['$==='](processor) : $c)))) {\n \n processor.$update_config(config);\n if ($truthy((name = (function() {if ($truthy(name)) {\n \n \n $writer = [self.$as_symbol(name)];\n $send(processor, 'name=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n \n return self.$as_symbol(processor.$name());\n }; return nil; })()))) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"No name specified for \" + (kind_name) + \" extension: \" + (processor))\n };\n processor.$freeze();\n \n $writer = [name, $$($nesting, 'ProcessorExtension').$new(kind, processor)];\n $send(kind_store, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n } else {\n return self.$raise($$$('::', 'ArgumentError'), \"\" + \"Invalid arguments specified for registering \" + (kind_name) + \" extension: \" + (args))\n };\n };\n }, TMP_Registry_add_syntax_processor_82.$$arity = 2);\n \n Opal.def(self, '$resolve_args', TMP_Registry_resolve_args_84 = function $$resolve_args(args, expect) {\n var self = this, opts = nil, missing = nil;\n\n \n opts = (function() {if ($truthy($$$('::', 'Hash')['$==='](args['$[]'](-1)))) {\n return args.$pop()\n } else {\n return $hash2([], {})\n }; return nil; })();\n if (expect['$=='](1)) {\n return opts};\n if ($truthy($rb_gt((missing = $rb_minus($rb_minus(expect, 1), args.$size())), 0))) {\n args = $rb_plus(args, $$$('::', 'Array').$new(missing))\n } else if ($truthy($rb_lt(missing, 0))) {\n args.$pop(missing['$-@']())};\n args['$<<'](opts);\n return args;\n }, TMP_Registry_resolve_args_84.$$arity = 2);\n return (Opal.def(self, '$as_symbol', TMP_Registry_as_symbol_85 = function $$as_symbol(name) {\n var self = this;\n\n if ($truthy(name)) {\n return name.$to_sym()\n } else {\n return nil\n }\n }, TMP_Registry_as_symbol_85.$$arity = 1), nil) && 'as_symbol';\n })($nesting[0], null, $nesting);\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_generate_name_86, TMP_next_auto_id_87, TMP_groups_88, TMP_create_89, TMP_register_90, TMP_unregister_all_91, TMP_unregister_93, TMP_resolve_class_94, TMP_class_for_name_96;\n\n \n \n Opal.def(self, '$generate_name', TMP_generate_name_86 = function $$generate_name() {\n var self = this;\n\n return \"\" + \"extgrp\" + (self.$next_auto_id())\n }, TMP_generate_name_86.$$arity = 0);\n \n Opal.def(self, '$next_auto_id', TMP_next_auto_id_87 = function $$next_auto_id() {\n var $a, self = this;\n if (self.auto_id == null) self.auto_id = nil;\n\n \n self.auto_id = ($truthy($a = self.auto_id) ? $a : -1);\n return (self.auto_id = $rb_plus(self.auto_id, 1));\n }, TMP_next_auto_id_87.$$arity = 0);\n \n Opal.def(self, '$groups', TMP_groups_88 = function $$groups() {\n var $a, self = this;\n if (self.groups == null) self.groups = nil;\n\n return (self.groups = ($truthy($a = self.groups) ? $a : $hash2([], {})))\n }, TMP_groups_88.$$arity = 0);\n \n Opal.def(self, '$create', TMP_create_89 = function $$create(name) {\n var $a, self = this, $iter = TMP_create_89.$$p, block = $iter || nil;\n\n if (name == null) {\n name = nil;\n }\n if ($iter) TMP_create_89.$$p = null;\n if ((block !== nil)) {\n return $$($nesting, 'Registry').$new($hash(($truthy($a = name) ? $a : self.$generate_name()), block))\n } else {\n return $$($nesting, 'Registry').$new()\n }\n }, TMP_create_89.$$arity = -1);\n Opal.alias(self, \"build_registry\", \"create\");\n \n Opal.def(self, '$register', TMP_register_90 = function $$register($a_rest) {\n var $b, self = this, args, $iter = TMP_register_90.$$p, block = $iter || nil, argc = nil, resolved_group = nil, group = nil, name = nil, $writer = nil;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n args = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n args[$arg_idx - 0] = arguments[$arg_idx];\n }\n if ($iter) TMP_register_90.$$p = null;\n \n argc = args.$size();\n if ((block !== nil)) {\n resolved_group = block\n } else if ($truthy((group = args.$pop()))) {\n resolved_group = ($truthy($b = self.$resolve_class(group)) ? $b : group)\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"Extension group to register not specified\")\n };\n name = ($truthy($b = args.$pop()) ? $b : self.$generate_name());\n if ($truthy(args['$empty?']())) {\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"Wrong number of arguments (\" + (argc) + \" for 1..2)\")\n };\n \n $writer = [name.$to_sym(), resolved_group];\n $send(self.$groups(), '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;\n }, TMP_register_90.$$arity = -1);\n \n Opal.def(self, '$unregister_all', TMP_unregister_all_91 = function $$unregister_all() {\n var self = this;\n\n \n self.groups = $hash2([], {});\n return nil;\n }, TMP_unregister_all_91.$$arity = 0);\n \n Opal.def(self, '$unregister', TMP_unregister_93 = function $$unregister($a_rest) {\n var TMP_92, self = this, names;\n\n var $args_len = arguments.length, $rest_len = $args_len - 0;\n if ($rest_len < 0) { $rest_len = 0; }\n names = new Array($rest_len);\n for (var $arg_idx = 0; $arg_idx < $args_len; $arg_idx++) {\n names[$arg_idx - 0] = arguments[$arg_idx];\n }\n \n $send(names, 'each', [], (TMP_92 = function(group){var self = TMP_92.$$s || this;\n if (self.groups == null) self.groups = nil;\nif (group == null) group = nil;\n return self.groups.$delete(group.$to_sym())}, TMP_92.$$s = self, TMP_92.$$arity = 1, TMP_92));\n return nil;\n }, TMP_unregister_93.$$arity = -1);\n \n Opal.def(self, '$resolve_class', TMP_resolve_class_94 = function $$resolve_class(object) {\n var self = this, $case = nil;\n\n return (function() {$case = object;\n if ($$$('::', 'Class')['$===']($case)) {return object}\n else if ($$$('::', 'String')['$===']($case)) {return self.$class_for_name(object)}\n else { return nil }})()\n }, TMP_resolve_class_94.$$arity = 1);\n return (Opal.def(self, '$class_for_name', TMP_class_for_name_96 = function $$class_for_name(qualified_name) {\n var TMP_95, self = this, resolved = nil;\n\n \n resolved = $$$('::', 'Object');\n $send(qualified_name.$split(\"::\"), 'each', [], (TMP_95 = function(name){var self = TMP_95.$$s || this, $a, $b;\nif (name == null) name = nil;\n if ($truthy(($truthy($a = name['$empty?']()) ? $a : ($truthy($b = resolved['$const_defined?'](name)) ? $$$('::', 'Module')['$===']((resolved = resolved.$const_get(name))) : $b)))) {\n return nil\n } else {\n return self.$raise($$$('::', 'NameError'), \"\" + \"Could not resolve class for name: \" + (qualified_name))\n }}, TMP_95.$$s = self, TMP_95.$$arity = 1, TMP_95));\n if ($truthy($$$('::', 'Class')['$==='](resolved))) {\n } else {\n self.$raise($$$('::', 'NameError'), \"\" + \"Could not resolve class for name: \" + (qualified_name))\n };\n return resolved;\n }, TMP_class_for_name_96.$$arity = 1), nil) && 'class_for_name';\n })(Opal.get_singleton_class(self), $nesting);\n })($nesting[0], $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/opal_ext/browser/reader\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $module = Opal.module, $klass = Opal.klass, $truthy = Opal.truthy;\n\n Opal.add_stubs(['$posixify', '$new', '$base_dir', '$start_with?', '$uriish?', '$descends_from?', '$key?', '$attributes', '$replace_next_line', '$absolute_path?', '$==', '$empty?', '$!', '$slice', '$length']);\n return (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n (function($base, $super, $parent_nesting) {\n function $PreprocessorReader(){};\n var self = $PreprocessorReader = $klass($base, $super, 'PreprocessorReader', $PreprocessorReader);\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_PreprocessorReader_resolve_include_path_1;\n\n def.path_resolver = def.document = def.include_stack = def.dir = nil;\n return (Opal.def(self, '$resolve_include_path', TMP_PreprocessorReader_resolve_include_path_1 = function $$resolve_include_path(target, attrlist, attributes) {\n var $a, self = this, p_target = nil, target_type = nil, base_dir = nil, inc_path = nil, relpath = nil, ctx_dir = nil, top_level = nil, offset = nil;\n\n \n p_target = (self.path_resolver = ($truthy($a = self.path_resolver) ? $a : $$($nesting, 'PathResolver').$new(\"\\\\\"))).$posixify(target);\n $a = [\"file\", self.document.$base_dir()], (target_type = $a[0]), (base_dir = $a[1]), $a;\n if ($truthy(p_target['$start_with?'](\"file://\"))) {\n inc_path = (relpath = p_target)\n } else if ($truthy($$($nesting, 'Helpers')['$uriish?'](p_target))) {\n \n if ($truthy(($truthy($a = self.path_resolver['$descends_from?'](p_target, base_dir)) ? $a : self.document.$attributes()['$key?'](\"allow-uri-read\")))) {\n } else {\n return self.$replace_next_line(\"\" + \"link:\" + (target) + \"[\" + (attrlist) + \"]\")\n };\n inc_path = (relpath = p_target);\n } else if ($truthy(self.path_resolver['$absolute_path?'](p_target))) {\n inc_path = (relpath = \"\" + \"file://\" + ((function() {if ($truthy(p_target['$start_with?'](\"/\"))) {\n return \"\"\n } else {\n return \"/\"\n }; return nil; })()) + (p_target))\n } else if ((ctx_dir = (function() {if ($truthy((top_level = self.include_stack['$empty?']()))) {\n return base_dir\n } else {\n return self.dir\n }; return nil; })())['$=='](\".\")) {\n inc_path = (relpath = p_target)\n } else if ($truthy(($truthy($a = ctx_dir['$start_with?'](\"file://\")) ? $a : $$($nesting, 'Helpers')['$uriish?'](ctx_dir)['$!']()))) {\n \n inc_path = \"\" + (ctx_dir) + \"/\" + (p_target);\n if ($truthy(top_level)) {\n relpath = p_target\n } else if ($truthy(($truthy($a = base_dir['$=='](\".\")) ? $a : (offset = self.path_resolver['$descends_from?'](inc_path, base_dir))['$!']()))) {\n relpath = inc_path\n } else {\n relpath = inc_path.$slice(offset, inc_path.$length())\n };\n } else if ($truthy(top_level)) {\n inc_path = \"\" + (ctx_dir) + \"/\" + ((relpath = p_target))\n } else if ($truthy(($truthy($a = (offset = self.path_resolver['$descends_from?'](ctx_dir, base_dir))) ? $a : self.document.$attributes()['$key?'](\"allow-uri-read\")))) {\n \n inc_path = \"\" + (ctx_dir) + \"/\" + (p_target);\n relpath = (function() {if ($truthy(offset)) {\n \n return inc_path.$slice(offset, inc_path.$length());\n } else {\n return p_target\n }; return nil; })();\n } else {\n return self.$replace_next_line(\"\" + \"link:\" + (target) + \"[\" + (attrlist) + \"]\")\n };\n return [inc_path, \"file\", relpath];\n }, TMP_PreprocessorReader_resolve_include_path_1.$$arity = 3), nil) && 'resolve_include_path'\n })($nesting[0], $$($nesting, 'Reader'), $nesting)\n })($nesting[0], $nesting)\n};\n\n/* Generated by Opal 0.11.1.dev */\nOpal.modules[\"asciidoctor/js/postscript\"] = function(Opal) {\n var self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice;\n\n Opal.add_stubs(['$require', '$==']);\n \n self.$require(\"asciidoctor/converter/composite\");\n self.$require(\"asciidoctor/converter/html5\");\n self.$require(\"asciidoctor/extensions\");\n if ($$($nesting, 'JAVASCRIPT_IO_MODULE')['$=='](\"xmlhttprequest\")) {\n return self.$require(\"asciidoctor/js/opal_ext/browser/reader\")\n } else {\n return nil\n };\n};\n\n/* Generated by Opal 0.11.1.dev */\n(function(Opal) {\n function $rb_ge(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs >= rhs : lhs['$>='](rhs);\n }\n function $rb_minus(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs);\n }\n function $rb_times(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs * rhs : lhs['$*'](rhs);\n }\n function $rb_lt(lhs, rhs) {\n return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs < rhs : lhs['$<'](rhs);\n }\n var $a, self = Opal.top, $nesting = [], nil = Opal.nil, $$$ = Opal.const_get_qualified, $$ = Opal.const_get_relative, $breaker = Opal.breaker, $slice = Opal.slice, $truthy = Opal.truthy, $gvars = Opal.gvars, $module = Opal.module, $hash2 = Opal.hash2, $send = Opal.send, $hash = Opal.hash;\n if ($gvars[\":\"] == null) $gvars[\":\"] = nil;\n\n Opal.add_stubs(['$==', '$>=', '$require', '$unshift', '$dirname', '$each', '$constants', '$const_get', '$downcase', '$to_s', '$[]=', '$-', '$upcase', '$[]', '$values', '$new', '$attr_reader', '$instance_variable_set', '$send', '$<<', '$define', '$expand_path', '$join', '$home', '$pwd', '$!', '$!=', '$default_external', '$to_set', '$map', '$keys', '$slice', '$merge', '$inject', '$*', '$to_a', '$dup', '$insert', '$start', '$===', '$split', '$gsub', '$respond_to?', '$raise', '$ancestors', '$class', '$path', '$utc', '$at', '$Integer', '$mtime', '$readlines', '$basename', '$extname', '$index', '$strftime', '$year', '$rewind', '$lines', '$each_line', '$record', '$parse', '$exception', '$message', '$set_backtrace', '$backtrace', '$stack_trace', '$stack_trace=', '$open', '$load', '$delete', '$key?', '$attributes', '$outfilesuffix', '$safe', '$normalize_system_path', '$directory?', '$mkdir_p', '$convert', '$write', '$<', '$attr?', '$attr', '$uriish?', '$include?', '$write_primary_stylesheet', '$instance', '$empty?', '$read_asset', '$file?', '$write_coderay_stylesheet', '$write_pygments_stylesheet']);\n \n if ($truthy((($a = $$($nesting, 'RUBY_ENGINE', 'skip_raise')) ? 'constant' : nil))) {\n } else {\n Opal.const_set($nesting[0], 'RUBY_ENGINE', \"unknown\")\n };\n Opal.const_set($nesting[0], 'RUBY_ENGINE_OPAL', $$($nesting, 'RUBY_ENGINE')['$=='](\"opal\"));\n Opal.const_set($nesting[0], 'RUBY_ENGINE_JRUBY', $$($nesting, 'RUBY_ENGINE')['$=='](\"jruby\"));\n Opal.const_set($nesting[0], 'RUBY_MIN_VERSION_1_9', $rb_ge($$($nesting, 'RUBY_VERSION'), \"1.9\"));\n Opal.const_set($nesting[0], 'RUBY_MIN_VERSION_2', $rb_ge($$($nesting, 'RUBY_VERSION'), \"2\"));\n self.$require(\"set\");\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n self.$require(\"asciidoctor/js\")\n } else {\n nil\n };\n $gvars[\":\"].$unshift($$($nesting, 'File').$dirname(\"asciidoctor\"));\n (function($base, $parent_nesting) {\n var $Asciidoctor, self = $Asciidoctor = $module($base, 'Asciidoctor');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), $a, TMP_Asciidoctor_6, TMP_Asciidoctor_7, quote_subs = nil, compat_quote_subs = nil, $writer = nil;\n\n \n Opal.const_set($nesting[0], 'RUBY_ENGINE', $$$('::', 'RUBY_ENGINE'));\n (function($base, $parent_nesting) {\n var $SafeMode, self = $SafeMode = $module($base, 'SafeMode');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_SafeMode_1, TMP_SafeMode_value_for_name_2, TMP_SafeMode_name_for_value_3, TMP_SafeMode_names_4, rec = nil;\n\n \n Opal.const_set($nesting[0], 'UNSAFE', 0);\n Opal.const_set($nesting[0], 'SAFE', 1);\n Opal.const_set($nesting[0], 'SERVER', 10);\n Opal.const_set($nesting[0], 'SECURE', 20);\n rec = $hash2([], {});\n $send((Opal.Module.$$nesting = $nesting, self.$constants()), 'each', [], (TMP_SafeMode_1 = function(sym){var self = TMP_SafeMode_1.$$s || this, $writer = nil;\nif (sym == null) sym = nil;\n \n $writer = [self.$const_get(sym), sym.$to_s().$downcase()];\n $send(rec, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_SafeMode_1.$$s = self, TMP_SafeMode_1.$$arity = 1, TMP_SafeMode_1));\n self.names_by_value = rec;\n Opal.defs(self, '$value_for_name', TMP_SafeMode_value_for_name_2 = function $$value_for_name(name) {\n var self = this;\n\n return self.$const_get(name.$upcase())\n }, TMP_SafeMode_value_for_name_2.$$arity = 1);\n Opal.defs(self, '$name_for_value', TMP_SafeMode_name_for_value_3 = function $$name_for_value(value) {\n var self = this;\n if (self.names_by_value == null) self.names_by_value = nil;\n\n return self.names_by_value['$[]'](value)\n }, TMP_SafeMode_name_for_value_3.$$arity = 1);\n Opal.defs(self, '$names', TMP_SafeMode_names_4 = function $$names() {\n var self = this;\n if (self.names_by_value == null) self.names_by_value = nil;\n\n return self.names_by_value.$values()\n }, TMP_SafeMode_names_4.$$arity = 0);\n })($nesting[0], $nesting);\n (function($base, $parent_nesting) {\n var $Compliance, self = $Compliance = $module($base, 'Compliance');\n\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_Compliance_define_5;\n\n \n self.keys = $$$('::', 'Set').$new();\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return self.$attr_reader(\"keys\")\n })(Opal.get_singleton_class(self), $nesting);\n Opal.defs(self, '$define', TMP_Compliance_define_5 = function $$define(key, value) {\n var self = this;\n if (self.keys == null) self.keys = nil;\n\n \n self.$instance_variable_set(\"\" + \"@\" + (key), value);\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting);\n\n return self\n })(Opal.get_singleton_class(self), $nesting).$send(\"attr_accessor\", key);\n self.keys['$<<'](key);\n return nil;\n }, TMP_Compliance_define_5.$$arity = 2);\n self.$define(\"block_terminates_paragraph\", true);\n self.$define(\"strict_verbatim_paragraphs\", true);\n self.$define(\"underline_style_section_titles\", true);\n self.$define(\"unwrap_standalone_preamble\", true);\n self.$define(\"attribute_missing\", \"skip\");\n self.$define(\"attribute_undefined\", \"drop-line\");\n self.$define(\"shorthand_property_syntax\", true);\n self.$define(\"unique_id_start_index\", 2);\n self.$define(\"markdown_syntax\", true);\n })($nesting[0], $nesting);\n Opal.const_set($nesting[0], 'ROOT_PATH', $$$('::', 'File').$dirname($$$('::', 'File').$dirname($$$('::', 'File').$expand_path(\"asciidoctor\"))));\n Opal.const_set($nesting[0], 'DATA_PATH', $$$('::', 'File').$join($$($nesting, 'ROOT_PATH'), \"data\"));\n \n try {\n Opal.const_set($nesting[0], 'USER_HOME', $$$('::', 'Dir').$home())\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n Opal.const_set($nesting[0], 'USER_HOME', ($truthy($a = $$$('::', 'ENV')['$[]'](\"HOME\")) ? $a : $$$('::', 'Dir').$pwd()))\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };;\n Opal.const_set($nesting[0], 'COERCE_ENCODING', ($truthy($a = $$$('::', 'RUBY_ENGINE_OPAL')['$!']()) ? $$$('::', 'RUBY_MIN_VERSION_1_9') : $a));\n Opal.const_set($nesting[0], 'FORCE_ENCODING', ($truthy($a = $$($nesting, 'COERCE_ENCODING')) ? $$$('::', 'Encoding').$default_external()['$!=']($$$($$$('::', 'Encoding'), 'UTF_8')) : $a));\n Opal.const_set($nesting[0], 'BOM_BYTES_UTF_8', [239, 187, 191]);\n Opal.const_set($nesting[0], 'BOM_BYTES_UTF_16LE', [255, 254]);\n Opal.const_set($nesting[0], 'BOM_BYTES_UTF_16BE', [254, 255]);\n Opal.const_set($nesting[0], 'FORCE_UNICODE_LINE_LENGTH', $$$('::', 'RUBY_MIN_VERSION_1_9')['$!']());\n Opal.const_set($nesting[0], 'LF', Opal.const_set($nesting[0], 'EOL', \"\\n\"));\n Opal.const_set($nesting[0], 'NULL', \"\\u0000\");\n Opal.const_set($nesting[0], 'TAB', \"\\t\");\n Opal.const_set($nesting[0], 'DEFAULT_DOCTYPE', \"article\");\n Opal.const_set($nesting[0], 'DEFAULT_BACKEND', \"html5\");\n Opal.const_set($nesting[0], 'DEFAULT_STYLESHEET_KEYS', [\"\", \"DEFAULT\"].$to_set());\n Opal.const_set($nesting[0], 'DEFAULT_STYLESHEET_NAME', \"asciidoctor.css\");\n Opal.const_set($nesting[0], 'BACKEND_ALIASES', $hash2([\"html\", \"docbook\"], {\"html\": \"html5\", \"docbook\": \"docbook5\"}));\n Opal.const_set($nesting[0], 'DEFAULT_PAGE_WIDTHS', $hash2([\"docbook\"], {\"docbook\": 425}));\n Opal.const_set($nesting[0], 'DEFAULT_EXTENSIONS', $hash2([\"html\", \"docbook\", \"pdf\", \"epub\", \"manpage\", \"asciidoc\"], {\"html\": \".html\", \"docbook\": \".xml\", \"pdf\": \".pdf\", \"epub\": \".epub\", \"manpage\": \".man\", \"asciidoc\": \".adoc\"}));\n Opal.const_set($nesting[0], 'ASCIIDOC_EXTENSIONS', $hash2([\".asciidoc\", \".adoc\", \".ad\", \".asc\", \".txt\"], {\".asciidoc\": true, \".adoc\": true, \".ad\": true, \".asc\": true, \".txt\": true}));\n Opal.const_set($nesting[0], 'SETEXT_SECTION_LEVELS', $hash2([\"=\", \"-\", \"~\", \"^\", \"+\"], {\"=\": 0, \"-\": 1, \"~\": 2, \"^\": 3, \"+\": 4}));\n Opal.const_set($nesting[0], 'ADMONITION_STYLES', [\"NOTE\", \"TIP\", \"IMPORTANT\", \"WARNING\", \"CAUTION\"].$to_set());\n Opal.const_set($nesting[0], 'ADMONITION_STYLE_HEADS', [\"N\", \"T\", \"I\", \"W\", \"C\"].$to_set());\n Opal.const_set($nesting[0], 'CALLOUT_LIST_HEADS', [\"<\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\"].$to_set());\n Opal.const_set($nesting[0], 'PARAGRAPH_STYLES', [\"comment\", \"example\", \"literal\", \"listing\", \"normal\", \"pass\", \"quote\", \"sidebar\", \"source\", \"verse\", \"abstract\", \"partintro\"].$to_set());\n Opal.const_set($nesting[0], 'VERBATIM_STYLES', [\"literal\", \"listing\", \"source\", \"verse\"].$to_set());\n Opal.const_set($nesting[0], 'DELIMITED_BLOCKS', $hash2([\"--\", \"----\", \"....\", \"====\", \"****\", \"____\", \"\\\"\\\"\", \"++++\", \"|===\", \",===\", \":===\", \"!===\", \"////\", \"```\"], {\"--\": [\"open\", [\"comment\", \"example\", \"literal\", \"listing\", \"pass\", \"quote\", \"sidebar\", \"source\", \"verse\", \"admonition\", \"abstract\", \"partintro\"].$to_set()], \"----\": [\"listing\", [\"literal\", \"source\"].$to_set()], \"....\": [\"literal\", [\"listing\", \"source\"].$to_set()], \"====\": [\"example\", [\"admonition\"].$to_set()], \"****\": [\"sidebar\", $$$('::', 'Set').$new()], \"____\": [\"quote\", [\"verse\"].$to_set()], \"\\\"\\\"\": [\"quote\", [\"verse\"].$to_set()], \"++++\": [\"pass\", [\"stem\", \"latexmath\", \"asciimath\"].$to_set()], \"|===\": [\"table\", $$$('::', 'Set').$new()], \",===\": [\"table\", $$$('::', 'Set').$new()], \":===\": [\"table\", $$$('::', 'Set').$new()], \"!===\": [\"table\", $$$('::', 'Set').$new()], \"////\": [\"comment\", $$$('::', 'Set').$new()], \"```\": [\"fenced_code\", $$$('::', 'Set').$new()]}));\n Opal.const_set($nesting[0], 'DELIMITED_BLOCK_HEADS', $send($$($nesting, 'DELIMITED_BLOCKS').$keys(), 'map', [], (TMP_Asciidoctor_6 = function(key){var self = TMP_Asciidoctor_6.$$s || this;\nif (key == null) key = nil;\n return key.$slice(0, 2)}, TMP_Asciidoctor_6.$$s = self, TMP_Asciidoctor_6.$$arity = 1, TMP_Asciidoctor_6)).$to_set());\n Opal.const_set($nesting[0], 'LAYOUT_BREAK_CHARS', $hash2([\"'\", \"<\"], {\"'\": \"thematic_break\", \"<\": \"page_break\"}));\n Opal.const_set($nesting[0], 'MARKDOWN_THEMATIC_BREAK_CHARS', $hash2([\"-\", \"*\", \"_\"], {\"-\": \"thematic_break\", \"*\": \"thematic_break\", \"_\": \"thematic_break\"}));\n Opal.const_set($nesting[0], 'HYBRID_LAYOUT_BREAK_CHARS', $$($nesting, 'LAYOUT_BREAK_CHARS').$merge($$($nesting, 'MARKDOWN_THEMATIC_BREAK_CHARS')));\n Opal.const_set($nesting[0], 'NESTABLE_LIST_CONTEXTS', [\"ulist\", \"olist\", \"dlist\"]);\n Opal.const_set($nesting[0], 'ORDERED_LIST_STYLES', [\"arabic\", \"loweralpha\", \"lowerroman\", \"upperalpha\", \"upperroman\"]);\n Opal.const_set($nesting[0], 'ORDERED_LIST_KEYWORDS', $hash2([\"loweralpha\", \"lowerroman\", \"upperalpha\", \"upperroman\"], {\"loweralpha\": \"a\", \"lowerroman\": \"i\", \"upperalpha\": \"A\", \"upperroman\": \"I\"}));\n Opal.const_set($nesting[0], 'ATTR_REF_HEAD', \"{\");\n Opal.const_set($nesting[0], 'LIST_CONTINUATION', \"+\");\n Opal.const_set($nesting[0], 'HARD_LINE_BREAK', \" +\");\n Opal.const_set($nesting[0], 'LINE_CONTINUATION', \" \\\\\");\n Opal.const_set($nesting[0], 'LINE_CONTINUATION_LEGACY', \" +\");\n Opal.const_set($nesting[0], 'BLOCK_MATH_DELIMITERS', $hash2([\"asciimath\", \"latexmath\"], {\"asciimath\": [\"\\\\$\", \"\\\\$\"], \"latexmath\": [\"\\\\[\", \"\\\\]\"]}));\n Opal.const_set($nesting[0], 'INLINE_MATH_DELIMITERS', $hash2([\"asciimath\", \"latexmath\"], {\"asciimath\": [\"\\\\$\", \"\\\\$\"], \"latexmath\": [\"\\\\(\", \"\\\\)\"]}));\n Opal.const_set($nesting[0], 'FLEXIBLE_ATTRIBUTES', [\"sectnums\"]);\n Opal.const_set($nesting[0], 'CIRCUMFIX_COMMENTS', $send($hash([\"/*\", \"*/\"], [\".css\"], [\"(*\", \"*)\"], [\".ml\", \".mli\", \".nb\"], [\"<!--\", \"-->\"], [\".html\", \".xhtml\", \".xml\", \".xsl\"], [\"<%--\", \"--%>\"], [\".asp\", \".jsp\"]), 'inject', [$hash2([], {})], (TMP_Asciidoctor_7 = function(accum, $b){var self = TMP_Asciidoctor_7.$$s || this, $b_args, affixes, exts, TMP_8;\n\n if ($b == null) {\n $b = nil;\n }\n $b = Opal.to_ary($b);\n $b_args = Opal.slice.call($b, 0, $b.length);\n affixes = $b_args.splice(0,1)[0];\n if (affixes == null) {\n affixes = nil;\n }\n exts = $b_args.splice(0,1)[0];\n if (exts == null) {\n exts = nil;\n }if (accum == null) accum = nil;\n \n $send(exts, 'each', [], (TMP_8 = function(ext){var self = TMP_8.$$s || this, $writer = nil;\nif (ext == null) ext = nil;\n \n $writer = [ext, $hash2([\"prefix\", \"suffix\"], {\"prefix\": affixes['$[]'](0), \"suffix\": affixes['$[]'](-1)})];\n $send(accum, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];}, TMP_8.$$s = self, TMP_8.$$arity = 1, TMP_8));\n return accum;}, TMP_Asciidoctor_7.$$s = self, TMP_Asciidoctor_7.$$arity = 2, TMP_Asciidoctor_7.$$has_top_level_mlhs_arg = true, TMP_Asciidoctor_7)));\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n } else {\n nil\n };\n Opal.const_set($nesting[0], 'AuthorInfoLineRx', new RegExp(\"\" + \"^(\" + ($$($nesting, 'CG_WORD')) + \"[\" + ($$($nesting, 'CC_WORD')) + \"\\\\-'.]*)(?: +(\" + ($$($nesting, 'CG_WORD')) + \"[\" + ($$($nesting, 'CC_WORD')) + \"\\\\-'.]*))?(?: +(\" + ($$($nesting, 'CG_WORD')) + \"[\" + ($$($nesting, 'CC_WORD')) + \"\\\\-'.]*))?(?: +<([^>]+)>)?$\"));\n Opal.const_set($nesting[0], 'RevisionInfoLineRx', /^(?:\\D*([^\\n]*?),)? *(?!:)([^\\n]*?)(?: *(?!^),?: *([^\\n]*))?$/);\n Opal.const_set($nesting[0], 'ManpageTitleVolnumRx', /^([^\\n]+?) *\\( *([^\\n]+?) *\\)$/);\n Opal.const_set($nesting[0], 'ManpageNamePurposeRx', /^([^\\n]+?) +- +([^\\n]+)$/);\n Opal.const_set($nesting[0], 'ConditionalDirectiveRx', /^(\\\\)?(ifdef|ifndef|ifeval|endif)::(\\S*?(?:([,+])\\S*?)?)\\[([^\\n]+)?\\]$/);\n Opal.const_set($nesting[0], 'EvalExpressionRx', /^([^\\n]+?) *([=!><]=|[><]) *([^\\n]+)$/);\n Opal.const_set($nesting[0], 'IncludeDirectiveRx', /^(\\\\)?include::([^\\[][^\\[]*)\\[([^\\n]*)\\]$/);\n Opal.const_set($nesting[0], 'TagDirectiveRx', /\\b(?:tag|(end))::(\\S+)\\[\\]$/);\n Opal.const_set($nesting[0], 'AttributeEntryRx', /^:(!?\\w[^\\n]*?):(?:[ \\t]+([^\\n]*))?$/);\n Opal.const_set($nesting[0], 'InvalidAttributeNameCharsRx', /[^\\w\\-]/);\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n Opal.const_set($nesting[0], 'AttributeEntryPassMacroRx', /^pass:([a-z]+(?:,[a-z]+)*)?\\[([\\S\\s]*)\\]$/)\n } else {\n nil\n };\n Opal.const_set($nesting[0], 'AttributeReferenceRx', /(\\\\)?\\{(\\w+[-\\w]*|(set|counter2?):[^\\n]+?)(\\\\)?\\}/);\n Opal.const_set($nesting[0], 'BlockAnchorRx', new RegExp(\"\" + \"^\\\\[\\\\[(?:|([\" + ($$($nesting, 'CC_ALPHA')) + \"_:][\" + ($$($nesting, 'CC_WORD')) + \":.-]*)(?:, *(.+))?)\\\\]\\\\]$\"));\n Opal.const_set($nesting[0], 'BlockAttributeListRx', new RegExp(\"\" + \"^\\\\[(|[\" + ($$($nesting, 'CC_WORD')) + \".#%{,\\\"'].*)\\\\]$\"));\n Opal.const_set($nesting[0], 'BlockAttributeLineRx', new RegExp(\"\" + \"^\\\\[(?:|[\" + ($$($nesting, 'CC_WORD')) + \".#%{,\\\"'].*|\\\\[(?:|[\" + ($$($nesting, 'CC_ALPHA')) + \"_:][\" + ($$($nesting, 'CC_WORD')) + \":.-]*(?:, *.+)?)\\\\])\\\\]$\"));\n Opal.const_set($nesting[0], 'BlockTitleRx', /^\\.([^ \\t.][^\\n]*)$/);\n Opal.const_set($nesting[0], 'AdmonitionParagraphRx', new RegExp(\"\" + \"^(\" + ($rb_times($$($nesting, 'ADMONITION_STYLES').$to_a(), \"|\")) + \"):[ \\\\t]+\"));\n Opal.const_set($nesting[0], 'LiteralParagraphRx', /^([ \\t]+[^\\n]*)$/);\n Opal.const_set($nesting[0], 'AtxSectionTitleRx', /^(=={0,5})[ \\t]+([^\\n]+?)(?:[ \\t]+\\1)?$/);\n Opal.const_set($nesting[0], 'ExtAtxSectionTitleRx', /^(=={0,5}|#\\#{0,5})[ \\t]+([^\\n]+?)(?:[ \\t]+\\1)?$/);\n Opal.const_set($nesting[0], 'SetextSectionTitleRx', new RegExp(\"\" + \"^((?=.*\" + ($$($nesting, 'CG_WORD')) + \"+.*)[^.].*?)$\"));\n Opal.const_set($nesting[0], 'InlineSectionAnchorRx', new RegExp(\"\" + \" (\\\\\\\\)?\\\\[\\\\[([\" + ($$($nesting, 'CC_ALPHA')) + \"_:][\" + ($$($nesting, 'CC_WORD')) + \":.-]*)(?:, *(.+))?\\\\]\\\\]$\"));\n Opal.const_set($nesting[0], 'InvalidSectionIdCharsRx', new RegExp(\"\" + \"&(?:[a-z][a-z]+\\\\d{0,2}|#\\\\d\\\\d\\\\d{0,4}|#x[\\\\da-f][\\\\da-f][\\\\da-f]{0,3});|[^\" + ($$($nesting, 'CC_WORD')) + \"]+?\"));\n Opal.const_set($nesting[0], 'DiscreteHeadingStyleRx', /^(?:discrete|float)\\b/);\n Opal.const_set($nesting[0], 'AnyListRx', /^(?:[ \\t]*(?:-|\\*\\*{0,4}|\\.\\.{0,4}|\\u2022\\u2022{0,4}|\\d+\\.|[a-zA-Z]\\.|[IVXivx]+\\))[ \\t]|[ \\t]*[^\\n]*?(?::{2,4}|;;)(?:$|[ \\t])|<?\\d+>[ \\t])/);\n Opal.const_set($nesting[0], 'UnorderedListRx', /^[ \\t]*(-|\\*\\*{0,4}|\\u2022\\u2022{0,4})[ \\t]+([^\\n]*)$/);\n Opal.const_set($nesting[0], 'OrderedListRx', /^[ \\t]*(\\.\\.{0,4}|\\d+\\.|[a-zA-Z]\\.|[IVXivx]+\\))[ \\t]+([^\\n]*)$/);\n Opal.const_set($nesting[0], 'OrderedListMarkerRxMap', $hash2([\"arabic\", \"loweralpha\", \"lowerroman\", \"upperalpha\", \"upperroman\"], {\"arabic\": /\\d+\\./, \"loweralpha\": /[a-z]\\./, \"lowerroman\": /[ivx]+\\)/, \"upperalpha\": /[A-Z]\\./, \"upperroman\": /[IVX]+\\)/}));\n Opal.const_set($nesting[0], 'DescriptionListRx', /^(?!\\/\\/)[ \\t]*([^\\n]*?)(:{2,4}|;;)(?:[ \\t]+([^\\n]*))?$/);\n Opal.const_set($nesting[0], 'DescriptionListSiblingRx', $hash2([\"::\", \":::\", \"::::\", \";;\"], {\"::\": /^(?!\\/\\/)[ \\t]*((?:.*[^:])?)(::)(?:[ \\t]+(.*))?$/, \":::\": /^(?!\\/\\/)[ \\t]*((?:.*[^:])?)(:::)(?:[ \\t]+(.*))?$/, \"::::\": /^(?!\\/\\/)[ \\t]*((?:.*[^:])?)(::::)(?:[ \\t]+(.*))?$/, \";;\": /^(?!\\/\\/)[ \\t]*(.*)(;;)(?:[ \\t]+(.*))?$/}));\n Opal.const_set($nesting[0], 'CalloutListRx', /^<?(\\d+)>[ \\t]+([^\\n]*)$/);\n Opal.const_set($nesting[0], 'CalloutListSniffRx', /^<?\\d+>/);\n Opal.const_set($nesting[0], 'CalloutExtractRx', /(?:(?:\\/\\/|#|--|;;) ?)?(\\\\)?<!?(|--)(\\d+)\\2>(?=(?: ?\\\\?<!?\\2\\d+\\2>)*$)/);\n Opal.const_set($nesting[0], 'CalloutExtractRxt', \"(\\\\\\\\)?<()(\\\\d+)>(?=(?: ?\\\\\\\\?<\\\\d+>)*$)\");\n Opal.const_set($nesting[0], 'CalloutScanRx', new RegExp(\"\" + \"\\\\\\\\?<!?(|--)(\\\\d+)\\\\1>(?=(?: ?\\\\\\\\?<!?\\\\1\\\\d+\\\\1>)*\" + ($$($nesting, 'CC_EOL')) + \")\"));\n Opal.const_set($nesting[0], 'CalloutSourceRx', new RegExp(\"\" + \"(?:(?://|#|--|;;) ?)?(\\\\\\\\)?<!?(|--)(\\\\d+)\\\\2>(?=(?: ?\\\\\\\\?<!?\\\\2\\\\d+\\\\2>)*\" + ($$($nesting, 'CC_EOL')) + \")\"));\n Opal.const_set($nesting[0], 'CalloutSourceRxt', \"\" + \"(\\\\\\\\)?<()(\\\\d+)>(?=(?: ?\\\\\\\\?<\\\\d+>)*\" + ($$($nesting, 'CC_EOL')) + \")\");\n Opal.const_set($nesting[0], 'ListRxMap', $hash2([\"ulist\", \"olist\", \"dlist\", \"colist\"], {\"ulist\": $$($nesting, 'UnorderedListRx'), \"olist\": $$($nesting, 'OrderedListRx'), \"dlist\": $$($nesting, 'DescriptionListRx'), \"colist\": $$($nesting, 'CalloutListRx')}));\n Opal.const_set($nesting[0], 'ColumnSpecRx', /^(?:(\\d+)\\*)?([<^>](?:\\.[<^>]?)?|(?:[<^>]?\\.)?[<^>])?(\\d+%?)?([a-z])?$/);\n Opal.const_set($nesting[0], 'CellSpecStartRx', /^[ \\t]*(?:(\\d+(?:\\.\\d*)?|(?:\\d*\\.)?\\d+)([*+]))?([<^>](?:\\.[<^>]?)?|(?:[<^>]?\\.)?[<^>])?([a-z])?$/);\n Opal.const_set($nesting[0], 'CellSpecEndRx', /[ \\t]+(?:(\\d+(?:\\.\\d*)?|(?:\\d*\\.)?\\d+)([*+]))?([<^>](?:\\.[<^>]?)?|(?:[<^>]?\\.)?[<^>])?([a-z])?$/);\n Opal.const_set($nesting[0], 'CustomBlockMacroRx', new RegExp(\"\" + \"^(\" + ($$($nesting, 'CG_WORD')) + \"+)::(|\\\\S|\\\\S.*?\\\\S)\\\\[(.*)\\\\]$\"));\n Opal.const_set($nesting[0], 'BlockMediaMacroRx', /^(image|video|audio)::(\\S|\\S[^\\n]*?\\S)\\[([^\\n]*)\\]$/);\n Opal.const_set($nesting[0], 'BlockTocMacroRx', /^toc::\\[([^\\n]*)\\]$/);\n Opal.const_set($nesting[0], 'InlineAnchorRx', new RegExp(\"\" + \"(\\\\\\\\)?(?:\\\\[\\\\[([\" + ($$($nesting, 'CC_ALPHA')) + \"_:][\" + ($$($nesting, 'CC_WORD')) + \":.-]*)(?:, *(.+?))?\\\\]\\\\]|anchor:([\" + ($$($nesting, 'CC_ALPHA')) + \"_:][\" + ($$($nesting, 'CC_WORD')) + \":.-]*)\\\\[(?:\\\\]|(.*?[^\\\\\\\\])\\\\]))\"));\n Opal.const_set($nesting[0], 'InlineAnchorScanRx', new RegExp(\"\" + \"(?:^|[^\\\\\\\\\\\\[])\\\\[\\\\[([\" + ($$($nesting, 'CC_ALPHA')) + \"_:][\" + ($$($nesting, 'CC_WORD')) + \":.-]*)(?:, *(.+?))?\\\\]\\\\]|(?:^|[^\\\\\\\\])anchor:([\" + ($$($nesting, 'CC_ALPHA')) + \"_:][\" + ($$($nesting, 'CC_WORD')) + \":.-]*)\\\\[(?:\\\\]|(.*?[^\\\\\\\\])\\\\])\"));\n Opal.const_set($nesting[0], 'InlineBiblioAnchorRx', new RegExp(\"\" + \"^\\\\[\\\\[\\\\[([\" + ($$($nesting, 'CC_ALPHA')) + \"_:][\" + ($$($nesting, 'CC_WORD')) + \":.-]*)(?:, *(.+?))?\\\\]\\\\]\\\\]\"));\n Opal.const_set($nesting[0], 'EmailInlineRx', new RegExp(\"\" + \"([\\\\\\\\>:/])?\" + ($$($nesting, 'CG_WORD')) + \"[\" + ($$($nesting, 'CC_WORD')) + \".%+-]*@\" + ($$($nesting, 'CG_ALNUM')) + \"[\" + ($$($nesting, 'CC_ALNUM')) + \".-]*\\\\.\" + ($$($nesting, 'CG_ALPHA')) + \"{2,4}\\\\b\"));\n Opal.const_set($nesting[0], 'InlineFootnoteMacroRx', new RegExp(\"\" + \"\\\\\\\\?(footnote(?:ref)?):\\\\[(\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\]\", 'm'));\n Opal.const_set($nesting[0], 'InlineImageMacroRx', new RegExp(\"\" + \"\\\\\\\\?i(?:mage|con):([^:\\\\s\\\\[](?:[^\\\\n\\\\[]*[^\\\\s\\\\[])?)\\\\[(|\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\]\", 'm'));\n Opal.const_set($nesting[0], 'InlineIndextermMacroRx', new RegExp(\"\" + \"\\\\\\\\?(?:(indexterm2?):\\\\[(\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\]|\\\\(\\\\((\" + ($$($nesting, 'CC_ALL')) + \"+?)\\\\)\\\\)(?!\\\\)))\", 'm'));\n Opal.const_set($nesting[0], 'InlineKbdBtnMacroRx', new RegExp(\"\" + \"(\\\\\\\\)?(kbd|btn):\\\\[(\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\]\", 'm'));\n Opal.const_set($nesting[0], 'LinkInlineRx', new RegExp(\"\" + \"(^|link:|\" + ($$($nesting, 'CG_BLANK')) + \"|<|[>\\\\(\\\\)\\\\[\\\\];])(\\\\\\\\?(?:https?|file|ftp|irc)://[^\\\\s\\\\[\\\\]<]*[^\\\\s.,\\\\[\\\\]<])(?:\\\\[(|\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\])?\", 'm'));\n Opal.const_set($nesting[0], 'InlineLinkMacroRx', new RegExp(\"\" + \"\\\\\\\\?(?:link|(mailto)):(|[^:\\\\s\\\\[][^\\\\s\\\\[]*)\\\\[(|\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\]\", 'm'));\n Opal.const_set($nesting[0], 'MacroNameRx', new RegExp(\"\" + \"^\" + ($$($nesting, 'CG_WORD')) + \"+$\"));\n Opal.const_set($nesting[0], 'InlineStemMacroRx', new RegExp(\"\" + \"\\\\\\\\?(stem|(?:latex|ascii)math):([a-z]+(?:,[a-z]+)*)?\\\\[(\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\]\", 'm'));\n Opal.const_set($nesting[0], 'InlineMenuMacroRx', new RegExp(\"\" + \"\\\\\\\\?menu:(\" + ($$($nesting, 'CG_WORD')) + \"|[\" + ($$($nesting, 'CC_WORD')) + \"&][^\\\\n\\\\[]*[^\\\\s\\\\[])\\\\[ *(\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])?\\\\]\", 'm'));\n Opal.const_set($nesting[0], 'MenuInlineRx', new RegExp(\"\" + \"\\\\\\\\?\\\"([\" + ($$($nesting, 'CC_WORD')) + \"&][^\\\"]*?[ \\\\n]+>[ \\\\n]+[^\\\"]*)\\\"\"));\n Opal.const_set($nesting[0], 'PassInlineRx', $hash(false, [\"+\", \"`\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:])(?:\\\\[([^\\\\]]+)\\\\])?(\\\\\\\\?(\\\\+|`)(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)\\\\4)(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')], true, [\"`\", nil, new RegExp(\"\" + \"(^|[^`\" + ($$($nesting, 'CC_WORD')) + \"])(?:\\\\[([^\\\\]]+)\\\\])?(\\\\\\\\?(`)([^`\\\\s]|[^`\\\\s]\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)\\\\4)(?![`\" + ($$($nesting, 'CC_WORD')) + \"])\", 'm')]));\n Opal.const_set($nesting[0], 'InlinePassMacroRx', new RegExp(\"\" + \"(?:(?:(\\\\\\\\?)\\\\[([^\\\\]]+)\\\\])?(\\\\\\\\{0,2})(\\\\+\\\\+\\\\+?|\\\\$\\\\$)(\" + ($$($nesting, 'CC_ALL')) + \"*?)\\\\4|(\\\\\\\\?)pass:([a-z]+(?:,[a-z]+)*)?\\\\[(|\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\])\", 'm'));\n Opal.const_set($nesting[0], 'InlineXrefMacroRx', new RegExp(\"\" + \"\\\\\\\\?(?:<<([\" + ($$($nesting, 'CC_WORD')) + \"#/.:{]\" + ($$($nesting, 'CC_ALL')) + \"*?)>>|xref:([\" + ($$($nesting, 'CC_WORD')) + \"#/.:{]\" + ($$($nesting, 'CC_ALL')) + \"*?)\\\\[(?:\\\\]|(\" + ($$($nesting, 'CC_ALL')) + \"*?[^\\\\\\\\])\\\\]))\", 'm'));\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n Opal.const_set($nesting[0], 'HardLineBreakRx', /^(.*) \\+$/m)\n } else {\n nil\n };\n Opal.const_set($nesting[0], 'MarkdownThematicBreakRx', /^ {0,3}([-*_])( *)\\1\\2\\1$/);\n Opal.const_set($nesting[0], 'ExtLayoutBreakRx', /^(?:'{3,}|<{3,}|([-*_])( *)\\1\\2\\1)$/);\n Opal.const_set($nesting[0], 'BlankLineRx', /\\n{2,}/);\n Opal.const_set($nesting[0], 'DataDelimiterRx', /[,;]/);\n Opal.const_set($nesting[0], 'TrailingDigitsRx', /\\d+$/);\n Opal.const_set($nesting[0], 'EscapedSpaceRx', /\\\\([ \\t\\n])/);\n Opal.const_set($nesting[0], 'ReplaceableTextRx', /[&']|--|\\.\\.\\.|\\([CRT]M?\\)/);\n Opal.const_set($nesting[0], 'SpaceDelimiterRx', /([^\\\\])[ \\t\\n]+/);\n Opal.const_set($nesting[0], 'SubModifierSniffRx', /[+-]/);\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n } else {\n nil\n };\n Opal.const_set($nesting[0], 'UriSniffRx', new RegExp(\"\" + \"^\" + ($$($nesting, 'CG_ALPHA')) + \"[\" + ($$($nesting, 'CC_ALNUM')) + \".+-]+:/{0,2}\"));\n Opal.const_set($nesting[0], 'UriTerminatorRx', /[);:]$/);\n Opal.const_set($nesting[0], 'XmlSanitizeRx', /<[^>]+>/);\n Opal.const_set($nesting[0], 'INTRINSIC_ATTRIBUTES', $hash2([\"startsb\", \"endsb\", \"vbar\", \"caret\", \"asterisk\", \"tilde\", \"plus\", \"backslash\", \"backtick\", \"blank\", \"empty\", \"sp\", \"two-colons\", \"two-semicolons\", \"nbsp\", \"deg\", \"zwsp\", \"quot\", \"apos\", \"lsquo\", \"rsquo\", \"ldquo\", \"rdquo\", \"wj\", \"brvbar\", \"cpp\", \"amp\", \"lt\", \"gt\"], {\"startsb\": \"[\", \"endsb\": \"]\", \"vbar\": \"|\", \"caret\": \"^\", \"asterisk\": \"*\", \"tilde\": \"~\", \"plus\": \"+\", \"backslash\": \"\\\\\", \"backtick\": \"`\", \"blank\": \"\", \"empty\": \"\", \"sp\": \" \", \"two-colons\": \"::\", \"two-semicolons\": \";;\", \"nbsp\": \" \", \"deg\": \"°\", \"zwsp\": \"​\", \"quot\": \""\", \"apos\": \"'\", \"lsquo\": \"‘\", \"rsquo\": \"’\", \"ldquo\": \"“\", \"rdquo\": \"”\", \"wj\": \"⁠\", \"brvbar\": \"¦\", \"cpp\": \"C++\", \"amp\": \"&\", \"lt\": \"<\", \"gt\": \">\"}));\n quote_subs = [[\"strong\", \"unconstrained\", new RegExp(\"\" + \"\\\\\\\\?(?:\\\\[([^\\\\]]+)\\\\])?\\\\*\\\\*(\" + ($$($nesting, 'CC_ALL')) + \"+?)\\\\*\\\\*\", 'm')], [\"strong\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:}])(?:\\\\[([^\\\\]]+)\\\\])?\\\\*(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)\\\\*(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')], [\"double\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:}])(?:\\\\[([^\\\\]]+)\\\\])?\\\"`(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)`\\\"(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')], [\"single\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:`}])(?:\\\\[([^\\\\]]+)\\\\])?'`(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)`'(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')], [\"monospaced\", \"unconstrained\", new RegExp(\"\" + \"\\\\\\\\?(?:\\\\[([^\\\\]]+)\\\\])?``(\" + ($$($nesting, 'CC_ALL')) + \"+?)``\", 'm')], [\"monospaced\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:\\\"'`}])(?:\\\\[([^\\\\]]+)\\\\])?`(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)`(?![\" + ($$($nesting, 'CC_WORD')) + \"\\\"'`])\", 'm')], [\"emphasis\", \"unconstrained\", new RegExp(\"\" + \"\\\\\\\\?(?:\\\\[([^\\\\]]+)\\\\])?__(\" + ($$($nesting, 'CC_ALL')) + \"+?)__\", 'm')], [\"emphasis\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:}])(?:\\\\[([^\\\\]]+)\\\\])?_(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)_(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')], [\"mark\", \"unconstrained\", new RegExp(\"\" + \"\\\\\\\\?(?:\\\\[([^\\\\]]+)\\\\])?##(\" + ($$($nesting, 'CC_ALL')) + \"+?)##\", 'm')], [\"mark\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \"&;:}])(?:\\\\[([^\\\\]]+)\\\\])?#(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)#(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')], [\"superscript\", \"unconstrained\", /\\\\?(?:\\[([^\\]]+)\\])?\\^(\\S+?)\\^/], [\"subscript\", \"unconstrained\", /\\\\?(?:\\[([^\\]]+)\\])?~(\\S+?)~/]];\n compat_quote_subs = quote_subs.$dup();\n \n $writer = [2, [\"double\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:}])(?:\\\\[([^\\\\]]+)\\\\])?``(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)''(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')]];\n $send(compat_quote_subs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [3, [\"single\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:}])(?:\\\\[([^\\\\]]+)\\\\])?`(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)'(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')]];\n $send(compat_quote_subs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [4, [\"monospaced\", \"unconstrained\", new RegExp(\"\" + \"\\\\\\\\?(?:\\\\[([^\\\\]]+)\\\\])?\\\\+\\\\+(\" + ($$($nesting, 'CC_ALL')) + \"+?)\\\\+\\\\+\", 'm')]];\n $send(compat_quote_subs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [5, [\"monospaced\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:}])(?:\\\\[([^\\\\]]+)\\\\])?\\\\+(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)\\\\+(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')]];\n $send(compat_quote_subs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n compat_quote_subs.$insert(3, [\"emphasis\", \"constrained\", new RegExp(\"\" + \"(^|[^\" + ($$($nesting, 'CC_WORD')) + \";:}])(?:\\\\[([^\\\\]]+)\\\\])?'(\\\\S|\\\\S\" + ($$($nesting, 'CC_ALL')) + \"*?\\\\S)'(?!\" + ($$($nesting, 'CG_WORD')) + \")\", 'm')]);\n Opal.const_set($nesting[0], 'QUOTE_SUBS', $hash(false, quote_subs, true, compat_quote_subs));\n quote_subs = nil;\n compat_quote_subs = nil;\n Opal.const_set($nesting[0], 'REPLACEMENTS', [[/\\\\?\\(C\\)/, \"©\", \"none\"], [/\\\\?\\(R\\)/, \"®\", \"none\"], [/\\\\?\\(TM\\)/, \"™\", \"none\"], [/(^|\\n| |\\\\)--( |\\n|$)/, \" — \", \"none\"], [new RegExp(\"\" + \"(\" + ($$($nesting, 'CG_WORD')) + \")\\\\\\\\?--(?=\" + ($$($nesting, 'CG_WORD')) + \")\"), \"—​\", \"leading\"], [/\\\\?\\.\\.\\./, \"…​\", \"leading\"], [/\\\\?`'/, \"’\", \"none\"], [new RegExp(\"\" + \"(\" + ($$($nesting, 'CG_ALNUM')) + \")\\\\\\\\?'(?=\" + ($$($nesting, 'CG_ALPHA')) + \")\"), \"’\", \"leading\"], [/\\\\?->/, \"→\", \"none\"], [/\\\\?=>/, \"⇒\", \"none\"], [/\\\\?<-/, \"←\", \"none\"], [/\\\\?<=/, \"⇐\", \"none\"], [/\\\\?(&)amp;((?:[a-zA-Z][a-zA-Z]+\\d{0,2}|#\\d\\d\\d{0,4}|#x[\\da-fA-F][\\da-fA-F][\\da-fA-F]{0,3});)/, \"\", \"bounding\"]]);\n (function(self, $parent_nesting) {\n var def = self.$$proto, $nesting = [self].concat($parent_nesting), TMP_load_12, TMP_load_file_14, TMP_convert_15, TMP_convert_file_17;\n\n \n \n Opal.def(self, '$load', TMP_load_12 = function $$load(input, options) {\n var $a, $b, TMP_9, TMP_10, TMP_11, self = this, timings = nil, attrs = nil, attrs_arr = nil, lines = nil, input_path = nil, input_mtime = nil, $writer = nil, docdate = nil, doctime = nil, doc = nil, ex = nil, context = nil, wrapped_ex = nil;\n\n if (options == null) {\n options = $hash2([], {});\n }\n try {\n \n options = options.$dup();\n if ($truthy((timings = options['$[]'](\"timings\")))) {\n timings.$start(\"read\")};\n if ($truthy((attrs = options['$[]'](\"attributes\"))['$!']())) {\n attrs = $hash2([], {})\n } else if ($truthy(($truthy($a = $$$('::', 'Hash')['$==='](attrs)) ? $a : ($truthy($b = $$$('::', 'RUBY_ENGINE_JRUBY')) ? $$$($$$($$$('::', 'Java'), 'JavaUtil'), 'Map')['$==='](attrs) : $b)))) {\n attrs = attrs.$dup()\n } else if ($truthy($$$('::', 'Array')['$==='](attrs))) {\n \n $a = [$hash2([], {}), attrs], (attrs = $a[0]), (attrs_arr = $a[1]), $a;\n $send(attrs_arr, 'each', [], (TMP_9 = function(entry){var self = TMP_9.$$s || this, $c, $d, k = nil, v = nil, $writer = nil;\nif (entry == null) entry = nil;\n \n $d = entry.$split(\"=\", 2), $c = Opal.to_ary($d), (k = ($c[0] == null ? nil : $c[0])), (v = ($c[1] == null ? nil : $c[1])), $d;\n \n $writer = [k, ($truthy($c = v) ? $c : \"\")];\n $send(attrs, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;}, TMP_9.$$s = self, TMP_9.$$arity = 1, TMP_9));\n } else if ($truthy($$$('::', 'String')['$==='](attrs))) {\n \n $a = [$hash2([], {}), attrs.$gsub($$($nesting, 'SpaceDelimiterRx'), \"\" + \"\\\\1\" + ($$($nesting, 'NULL'))).$gsub($$($nesting, 'EscapedSpaceRx'), \"\\\\1\").$split($$($nesting, 'NULL'))], (attrs = $a[0]), (attrs_arr = $a[1]), $a;\n $send(attrs_arr, 'each', [], (TMP_10 = function(entry){var self = TMP_10.$$s || this, $c, $d, k = nil, v = nil, $writer = nil;\nif (entry == null) entry = nil;\n \n $d = entry.$split(\"=\", 2), $c = Opal.to_ary($d), (k = ($c[0] == null ? nil : $c[0])), (v = ($c[1] == null ? nil : $c[1])), $d;\n \n $writer = [k, ($truthy($c = v) ? $c : \"\")];\n $send(attrs, '[]=', Opal.to_a($writer));\n return $writer[$rb_minus($writer[\"length\"], 1)];;}, TMP_10.$$s = self, TMP_10.$$arity = 1, TMP_10));\n } else if ($truthy(($truthy($a = attrs['$respond_to?'](\"keys\")) ? attrs['$respond_to?'](\"[]\") : $a))) {\n attrs = $$$('::', 'Hash')['$[]']($send(attrs.$keys(), 'map', [], (TMP_11 = function(k){var self = TMP_11.$$s || this;\nif (k == null) k = nil;\n return [k, attrs['$[]'](k)]}, TMP_11.$$s = self, TMP_11.$$arity = 1, TMP_11)))\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"illegal type for attributes option: \" + ($rb_times(attrs.$class().$ancestors(), \" < \")))\n };\n lines = nil;\n if ($truthy($$$('::', 'File')['$==='](input))) {\n \n input_path = $$$('::', 'File').$expand_path(input.$path());\n input_mtime = (function() {if ($truthy($$$('::', 'ENV')['$[]'](\"SOURCE_DATE_EPOCH\"))) {\n return $$$('::', 'Time').$at(self.$Integer($$$('::', 'ENV')['$[]'](\"SOURCE_DATE_EPOCH\"))).$utc()\n } else {\n return input.$mtime()\n }; return nil; })();\n lines = input.$readlines();\n \n $writer = [\"docfile\", input_path];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"docdir\", $$$('::', 'File').$dirname(input_path)];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n \n $writer = [\"docname\", $$($nesting, 'Helpers').$basename(input_path, (($writer = [\"docfilesuffix\", $$$('::', 'File').$extname(input_path)]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n if ($truthy((docdate = attrs['$[]'](\"docdate\")))) {\n ($truthy($a = attrs['$[]'](\"docyear\")) ? $a : (($writer = [\"docyear\", (function() {if (docdate.$index(\"-\")['$=='](4)) {\n \n return docdate.$slice(0, 4);\n } else {\n return nil\n }; return nil; })()]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]))\n } else {\n \n docdate = (($writer = [\"docdate\", input_mtime.$strftime(\"%Y-%m-%d\")]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]);\n ($truthy($a = attrs['$[]'](\"docyear\")) ? $a : (($writer = [\"docyear\", input_mtime.$year().$to_s()]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n };\n doctime = ($truthy($a = attrs['$[]'](\"doctime\")) ? $a : (($writer = [\"doctime\", input_mtime.$strftime(\"%H:%M:%S %Z\")]), $send(attrs, '[]=', Opal.to_a($writer)), $writer[$rb_minus($writer[\"length\"], 1)]));\n \n $writer = [\"docdatetime\", \"\" + (docdate) + \" \" + (doctime)];\n $send(attrs, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else if ($truthy(input['$respond_to?'](\"readlines\"))) {\n \n \n try {\n input.$rewind()\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n nil\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };;\n lines = input.$readlines();\n } else if ($truthy($$$('::', 'String')['$==='](input))) {\n lines = (function() {if ($truthy($$$('::', 'RUBY_MIN_VERSION_2'))) {\n return input.$lines()\n } else {\n return input.$each_line().$to_a()\n }; return nil; })()\n } else if ($truthy($$$('::', 'Array')['$==='](input))) {\n lines = input.$dup()\n } else {\n self.$raise($$$('::', 'ArgumentError'), \"\" + \"unsupported input type: \" + (input.$class()))\n };\n if ($truthy(timings)) {\n \n timings.$record(\"read\");\n timings.$start(\"parse\");};\n \n $writer = [\"attributes\", attrs];\n $send(options, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n doc = (function() {if (options['$[]'](\"parse\")['$=='](false)) {\n \n return $$($nesting, 'Document').$new(lines, options);\n } else {\n return $$($nesting, 'Document').$new(lines, options).$parse()\n }; return nil; })();\n if ($truthy(timings)) {\n timings.$record(\"parse\")};\n return doc;\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {ex = $err;\n try {\n \n \n try {\n \n context = \"\" + \"asciidoctor: FAILED: \" + (($truthy($a = attrs['$[]'](\"docfile\")) ? $a : \"<stdin>\")) + \": Failed to load AsciiDoc document\";\n if ($truthy(ex['$respond_to?'](\"exception\"))) {\n \n wrapped_ex = ex.$exception(\"\" + (context) + \" - \" + (ex.$message()));\n wrapped_ex.$set_backtrace(ex.$backtrace());\n } else {\n \n wrapped_ex = ex.$class().$new(context, ex);\n \n $writer = [ex.$stack_trace()];\n $send(wrapped_ex, 'stack_trace=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n };\n } catch ($err) {\n if (Opal.rescue($err, [$$($nesting, 'StandardError')])) {\n try {\n wrapped_ex = ex\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n };;\n return self.$raise(wrapped_ex);\n } finally { Opal.pop_exception() }\n } else { throw $err; }\n }\n }, TMP_load_12.$$arity = -2);\n \n Opal.def(self, '$load_file', TMP_load_file_14 = function $$load_file(filename, options) {\n var TMP_13, self = this;\n\n if (options == null) {\n options = $hash2([], {});\n }\n return $send($$$('::', 'File'), 'open', [filename], (TMP_13 = function(file){var self = TMP_13.$$s || this;\nif (file == null) file = nil;\n return self.$load(file, options)}, TMP_13.$$s = self, TMP_13.$$arity = 1, TMP_13))\n }, TMP_load_file_14.$$arity = -2);\n \n Opal.def(self, '$convert', TMP_convert_15 = function $$convert(input, options) {\n var $a, $b, $c, $d, $e, self = this, to_file = nil, to_dir = nil, mkdirs = nil, timings = nil, $case = nil, write_to_same_dir = nil, stream_output = nil, write_to_target = nil, $writer = nil, input_path = nil, outdir = nil, doc = nil, outfile = nil, working_dir = nil, jail = nil, opts = nil, output = nil, stylesdir = nil, copy_asciidoctor_stylesheet = nil, copy_user_stylesheet = nil, stylesheet = nil, copy_coderay_stylesheet = nil, copy_pygments_stylesheet = nil, stylesoutdir = nil, stylesheet_src = nil, stylesheet_dest = nil, stylesheet_data = nil;\n\n if (options == null) {\n options = $hash2([], {});\n }\n \n options = options.$dup();\n options.$delete(\"parse\");\n to_file = options.$delete(\"to_file\");\n to_dir = options.$delete(\"to_dir\");\n mkdirs = ($truthy($a = options.$delete(\"mkdirs\")) ? $a : false);\n timings = options['$[]'](\"timings\");\n $case = to_file;\n if (true['$===']($case) || nil['$===']($case)) {\n write_to_same_dir = ($truthy($a = to_dir['$!']()) ? $$$('::', 'File')['$==='](input) : $a);\n stream_output = false;\n write_to_target = to_dir;\n to_file = nil;}\n else if (false['$===']($case)) {\n write_to_same_dir = false;\n stream_output = false;\n write_to_target = false;\n to_file = nil;}\n else if (\"/dev/null\"['$===']($case)) {return self.$load(input, options)}\n else {\n write_to_same_dir = false;\n write_to_target = (function() {if ($truthy((stream_output = to_file['$respond_to?'](\"write\")))) {\n return false\n } else {\n return to_file\n }; return nil; })();};\n if ($truthy(options['$key?'](\"header_footer\"))) {\n } else if ($truthy(($truthy($a = write_to_same_dir) ? $a : write_to_target))) {\n \n $writer = [\"header_footer\", true];\n $send(options, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];};\n if ($truthy(write_to_same_dir)) {\n \n input_path = $$$('::', 'File').$expand_path(input.$path());\n \n $writer = [\"to_dir\", (outdir = $$$('::', 'File').$dirname(input_path))];\n $send(options, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];;\n } else if ($truthy(write_to_target)) {\n if ($truthy(to_dir)) {\n if ($truthy(to_file)) {\n \n $writer = [\"to_dir\", $$$('::', 'File').$expand_path($$$('::', 'File').$join(to_dir, to_file, \"..\"))];\n $send(options, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n } else {\n \n $writer = [\"to_dir\", $$$('::', 'File').$expand_path(to_dir)];\n $send(options, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n }\n } else if ($truthy(to_file)) {\n \n $writer = [\"to_dir\", $$$('::', 'File').$expand_path(to_file, \"..\")];\n $send(options, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];}\n } else {\n \n $writer = [\"to_dir\", nil];\n $send(options, '[]=', Opal.to_a($writer));\n $writer[$rb_minus($writer[\"length\"], 1)];\n };\n doc = self.$load(input, options);\n if ($truthy(write_to_same_dir)) {\n \n outfile = $$$('::', 'File').$join(outdir, \"\" + (doc.$attributes()['$[]'](\"docname\")) + (doc.$outfilesuffix()));\n if (outfile['$=='](input_path)) {\n self.$raise($$$('::', 'IOError'), \"\" + \"input file and output file cannot be the same: \" + (outfile))};\n } else if ($truthy(write_to_target)) {\n \n working_dir = (function() {if ($truthy(options['$key?'](\"base_dir\"))) {\n \n return $$$('::', 'File').$expand_path(options['$[]'](\"base_dir\"));\n } else {\n \n return $$$('::', 'File').$expand_path($$$('::', 'Dir').$pwd());\n }; return nil; })();\n jail = (function() {if ($truthy($rb_ge(doc.$safe(), $$$($$($nesting, 'SafeMode'), 'SAFE')))) {\n return working_dir\n } else {\n return nil\n }; return nil; })();\n if ($truthy(to_dir)) {\n \n outdir = doc.$normalize_system_path(to_dir, working_dir, jail, $hash2([\"target_name\", \"recover\"], {\"target_name\": \"to_dir\", \"recover\": false}));\n if ($truthy(to_file)) {\n \n outfile = doc.$normalize_system_path(to_file, outdir, nil, $hash2([\"target_name\", \"recover\"], {\"target_name\": \"to_dir\", \"recover\": false}));\n outdir = $$$('::', 'File').$dirname(outfile);\n } else {\n outfile = $$$('::', 'File').$join(outdir, \"\" + (doc.$attributes()['$[]'](\"docname\")) + (doc.$outfilesuffix()))\n };\n } else if ($truthy(to_file)) {\n \n outfile = doc.$normalize_system_path(to_file, working_dir, jail, $hash2([\"target_name\", \"recover\"], {\"target_name\": \"to_dir\", \"recover\": false}));\n outdir = $$$('::', 'File').$dirname(outfile);};\n if ($truthy(($truthy($a = $$$('::', 'File')['$==='](input)) ? outfile['$==']($$$('::', 'File').$expand_path(input.$path())) : $a))) {\n self.$raise($$$('::', 'IOError'), \"\" + \"input file and output file cannot be the same: \" + (outfile))};\n if ($truthy($$$('::', 'File')['$directory?'](outdir))) {\n } else if ($truthy(mkdirs)) {\n $$($nesting, 'Helpers').$mkdir_p(outdir)\n } else {\n self.$raise($$$('::', 'IOError'), \"\" + \"target directory does not exist: \" + (to_dir))\n };\n } else {\n \n outfile = to_file;\n outdir = nil;\n };\n if ($truthy(timings)) {\n timings.$start(\"convert\")};\n opts = (function() {if ($truthy(($truthy($a = outfile) ? stream_output['$!']() : $a))) {\n return $hash2([\"outfile\", \"outdir\"], {\"outfile\": outfile, \"outdir\": outdir})\n } else {\n return $hash2([], {})\n }; return nil; })();\n output = doc.$convert(opts);\n if ($truthy(timings)) {\n timings.$record(\"convert\")};\n if ($truthy(outfile)) {\n \n if ($truthy(timings)) {\n timings.$start(\"write\")};\n doc.$write(output, outfile);\n if ($truthy(timings)) {\n timings.$record(\"write\")};\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = ($truthy($d = ($truthy($e = stream_output['$!']()) ? $rb_lt(doc.$safe(), $$$($$($nesting, 'SafeMode'), 'SECURE')) : $e)) ? doc['$attr?'](\"linkcss\") : $d)) ? doc['$attr?'](\"copycss\") : $c)) ? doc['$attr?'](\"basebackend-html\") : $b)) ? ($truthy($b = (stylesdir = doc.$attr(\"stylesdir\"))) ? $$($nesting, 'Helpers')['$uriish?'](stylesdir) : $b)['$!']() : $a))) {\n \n copy_asciidoctor_stylesheet = false;\n copy_user_stylesheet = false;\n if ($truthy((stylesheet = doc.$attr(\"stylesheet\")))) {\n if ($truthy($$($nesting, 'DEFAULT_STYLESHEET_KEYS')['$include?'](stylesheet))) {\n copy_asciidoctor_stylesheet = true\n } else if ($truthy($$($nesting, 'Helpers')['$uriish?'](stylesheet)['$!']())) {\n copy_user_stylesheet = true}};\n copy_coderay_stylesheet = ($truthy($a = doc['$attr?'](\"source-highlighter\", \"coderay\")) ? doc.$attr(\"coderay-css\", \"class\")['$=='](\"class\") : $a);\n copy_pygments_stylesheet = ($truthy($a = doc['$attr?'](\"source-highlighter\", \"pygments\")) ? doc.$attr(\"pygments-css\", \"class\")['$=='](\"class\") : $a);\n if ($truthy(($truthy($a = ($truthy($b = ($truthy($c = copy_asciidoctor_stylesheet) ? $c : copy_user_stylesheet)) ? $b : copy_coderay_stylesheet)) ? $a : copy_pygments_stylesheet))) {\n \n stylesoutdir = doc.$normalize_system_path(stylesdir, outdir, (function() {if ($truthy($rb_ge(doc.$safe(), $$$($$($nesting, 'SafeMode'), 'SAFE')))) {\n return outdir\n } else {\n return nil\n }; return nil; })());\n if ($truthy(mkdirs)) {\n $$($nesting, 'Helpers').$mkdir_p(stylesoutdir)};\n if ($truthy(copy_asciidoctor_stylesheet)) {\n $$($nesting, 'Stylesheets').$instance().$write_primary_stylesheet(stylesoutdir)\n } else if ($truthy(copy_user_stylesheet)) {\n \n if ($truthy((stylesheet_src = doc.$attr(\"copycss\"))['$empty?']())) {\n stylesheet_src = doc.$normalize_system_path(stylesheet)\n } else {\n stylesheet_src = doc.$normalize_system_path(stylesheet_src)\n };\n stylesheet_dest = doc.$normalize_system_path(stylesheet, stylesoutdir, (function() {if ($truthy($rb_ge(doc.$safe(), $$$($$($nesting, 'SafeMode'), 'SAFE')))) {\n return outdir\n } else {\n return nil\n }; return nil; })());\n if ($truthy(($truthy($a = stylesheet_src['$!='](stylesheet_dest)) ? (stylesheet_data = doc.$read_asset(stylesheet_src, $hash2([\"warn_on_failure\", \"label\"], {\"warn_on_failure\": $$$('::', 'File')['$file?'](stylesheet_dest)['$!'](), \"label\": \"stylesheet\"}))) : $a))) {\n $$$('::', 'IO').$write(stylesheet_dest, stylesheet_data)};};\n if ($truthy(copy_coderay_stylesheet)) {\n $$($nesting, 'Stylesheets').$instance().$write_coderay_stylesheet(stylesoutdir)\n } else if ($truthy(copy_pygments_stylesheet)) {\n $$($nesting, 'Stylesheets').$instance().$write_pygments_stylesheet(stylesoutdir, doc.$attr(\"pygments-style\"))};};};\n return doc;\n } else {\n return output\n };\n }, TMP_convert_15.$$arity = -2);\n Opal.alias(self, \"render\", \"convert\");\n \n Opal.def(self, '$convert_file', TMP_convert_file_17 = function $$convert_file(filename, options) {\n var TMP_16, self = this;\n\n if (options == null) {\n options = $hash2([], {});\n }\n return $send($$$('::', 'File'), 'open', [filename], (TMP_16 = function(file){var self = TMP_16.$$s || this;\nif (file == null) file = nil;\n return self.$convert(file, options)}, TMP_16.$$s = self, TMP_16.$$arity = 1, TMP_16))\n }, TMP_convert_file_17.$$arity = -2);\n Opal.alias(self, \"render_file\", \"convert_file\");\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n return nil\n } else {\n return nil\n };\n })(Opal.get_singleton_class(self), $nesting);\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n \n self.$require(\"asciidoctor/timings\");\n self.$require(\"asciidoctor/version\");\n } else {\n nil\n };\n })($nesting[0], $nesting);\n self.$require(\"asciidoctor/core_ext\");\n self.$require(\"asciidoctor/helpers\");\n self.$require(\"asciidoctor/substitutors\");\n self.$require(\"asciidoctor/abstract_node\");\n self.$require(\"asciidoctor/abstract_block\");\n self.$require(\"asciidoctor/attribute_list\");\n self.$require(\"asciidoctor/block\");\n self.$require(\"asciidoctor/callouts\");\n self.$require(\"asciidoctor/converter\");\n self.$require(\"asciidoctor/document\");\n self.$require(\"asciidoctor/inline\");\n self.$require(\"asciidoctor/list\");\n self.$require(\"asciidoctor/parser\");\n self.$require(\"asciidoctor/path_resolver\");\n self.$require(\"asciidoctor/reader\");\n self.$require(\"asciidoctor/section\");\n self.$require(\"asciidoctor/stylesheets\");\n self.$require(\"asciidoctor/table\");\n if ($$($nesting, 'RUBY_ENGINE')['$=='](\"opal\")) {\n return self.$require(\"asciidoctor/js/postscript\")\n } else {\n return nil\n };\n})(Opal);\n\n\n/**\n * Convert a JSON to an (Opal) Hash.\n * @private\n */\nvar toHash = function (object) {\n return object && !('$$smap' in object) ? Opal.hash(object) : object;\n};\n\n/**\n * Convert an (Opal) Hash to JSON.\n * @private\n */\nvar fromHash = function (hash) {\n var object = {};\n for (var i = 0, keys = hash.$$keys, data = hash.$$smap, len = keys.length; i < len; i++) {\n var key = keys[i];\n object[key] = data[key];\n }\n return object;\n};\n\n/**\n * @private\n */\nvar prepareOptions = function (options) {\n if (options = toHash(options)) {\n var attrs = options['$[]']('attributes');\n if (attrs && typeof attrs === 'object' && attrs.constructor.name === 'Object') {\n options = options.$dup();\n options['$[]=']('attributes', toHash(attrs));\n }\n }\n return options;\n};\n\n// Asciidoctor API\n\n/**\n * @namespace\n * @description\n * Methods for parsing AsciiDoc input files and converting documents.\n *\n * AsciiDoc documents comprise a header followed by zero or more sections.\n * Sections are composed of blocks of content. For example:\n * <pre>\n * = Doc Title\n *\n * == Section 1\n *\n * This is a paragraph block in the first section.\n *\n * == Section 2\n *\n * This section has a paragraph block and an olist block.\n *\n * . Item 1\n * . Item 2\n * </pre>\n *\n * @example\n * asciidoctor.convertFile('sample.adoc');\n */\nvar Asciidoctor = Opal.Asciidoctor['$$class'];\n\n/**\n * Get Asciidoctor core version number.\n *\n * @memberof Asciidoctor\n * @returns {string} - returns the version number of Asciidoctor core.\n */\nAsciidoctor.$$proto.getCoreVersion = function () {\n return this.$$const.VERSION;\n};\n\n/**\n * Parse the AsciiDoc source input into an {@link Document} and convert it to the specified backend format.\n *\n * Accepts input as a Buffer or String.\n *\n * @param {string|Buffer} input - AsciiDoc input as String or Buffer\n * @param {Object} options - a JSON of options to control processing (default: {})\n * @returns {string|Document} - returns the {@link Document} object if the converted String is written to a file,\n * otherwise the converted String\n * @memberof Asciidoctor\n * @example\n * var input = '= Hello, AsciiDoc!\\n' +\n * 'Guillaume Grossetie <ggrossetie@example.com>\\n\\n' +\n * 'An introduction to http://asciidoc.org[AsciiDoc].\\n\\n' +\n * '== First Section\\n\\n' +\n * '* item 1\\n' +\n * '* item 2\\n';\n *\n * var html = asciidoctor.convert(input);\n */\nAsciidoctor.$$proto.convert = function (input, options) {\n if (typeof input === 'object' && input.constructor.name === 'Buffer') {\n input = input.toString('utf8');\n }\n var result = this.$convert(input, prepareOptions(options));\n return result === Opal.nil ? '' : result;\n};\n\n/**\n * Parse the AsciiDoc source input into an {@link Document} and convert it to the specified backend format.\n *\n * @param {string} filename - source filename\n * @param {Object} options - a JSON of options to control processing (default: {})\n * @returns {string|Document} - returns the {@link Document} object if the converted String is written to a file,\n * otherwise the converted String\n * @memberof Asciidoctor\n * @example\n * var html = asciidoctor.convertFile('./document.adoc');\n */\nAsciidoctor.$$proto.convertFile = function (filename, options) {\n return this.$convert_file(filename, prepareOptions(options));\n};\n\n/**\n * Parse the AsciiDoc source input into an {@link Document}\n *\n * Accepts input as a Buffer or String.\n *\n * @param {string|Buffer} input - AsciiDoc input as String or Buffer\n * @param {Object} options - a JSON of options to control processing (default: {})\n * @returns {Document} - returns the {@link Document} object\n * @memberof Asciidoctor\n */\nAsciidoctor.$$proto.load = function (input, options) {\n if (typeof input === 'object' && input.constructor.name === 'Buffer') {\n input = input.toString('utf8');\n }\n return this.$load(input, prepareOptions(options));\n};\n\n/**\n * Parse the contents of the AsciiDoc source file into an {@link Document}\n *\n * @param {string} filename - source filename\n * @param {Object} options - a JSON of options to control processing (default: {})\n * @returns {Document} - returns the {@link Document} object\n * @memberof Asciidoctor\n */\nAsciidoctor.$$proto.loadFile = function (filename, options) {\n return this.$load_file(filename, prepareOptions(options));\n};\n\n// AbstractBlock API\n\n/**\n * @namespace\n * @extends AbstractNode\n */\nvar AbstractBlock = Opal.Asciidoctor.AbstractBlock;\n\n/**\n * Get the String title of this Block with title substitions applied\n *\n * The following substitutions are applied to block and section titles:\n *\n * <code>specialcharacters</code>, <code>quotes</code>, <code>replacements</code>, <code>macros</code>, <code>attributes</code> and <code>post_replacements</code>\n *\n * @memberof AbstractBlock\n * @returns {string} - returns the converted String title for this Block, or undefined if the title is not set.\n * @example\n * block.title // \"Foo 3^ # {two-colons} Bar(1)\"\n * block.getTitle(); // \"Foo 3^ # :: Bar(1)\"\n */\nAbstractBlock.$$proto.getTitle = function () {\n var title = this.$title();\n return title === Opal.nil ? undefined : title;\n};\n\n/**\n * Convenience method that returns the interpreted title of the Block\n * with the caption prepended.\n * Concatenates the value of this Block's caption instance variable and the\n * return value of this Block's title method. No space is added between the\n * two values. If the Block does not have a caption, the interpreted title is\n * returned.\n *\n * @memberof AbstractBlock\n * @returns {string} - the converted String title prefixed with the caption, or just the\n * converted String title if no caption is set\n */\nAbstractBlock.$$proto.getCaptionedTitle = function () {\n return this.$captioned_title();\n};\n\n/**\n * Get the style (block type qualifier) for this block.\n * @memberof AbstractBlock\n * @returns {string} - returns the style for this block\n */\nAbstractBlock.$$proto.getStyle = function () {\n return this.style;\n};\n\n/**\n * Get the caption for this block.\n * @memberof AbstractBlock\n * @returns {string} - returns the caption for this block\n */\nAbstractBlock.$$proto.getCaption = function () {\n return this.$caption();\n};\n\n/**\n * Set the caption for this block.\n * @param {string} caption - Caption\n * @memberof AbstractBlock\n */\nAbstractBlock.$$proto.setCaption = function (caption) {\n this.caption = caption;\n};\n\n/**\n * Get the level of this section or the section level in which this block resides.\n * @memberof AbstractBlock\n * @returns {number} - returns the level of this section\n */\nAbstractBlock.$$proto.getLevel = function () {\n return this.level;\n};\n\n/**\n * Get the substitution keywords to be applied to the contents of this block.\n *\n * @memberof AbstractBlock\n * @returns {Array} - the list of {string} substitution keywords associated with this block.\n */\nAbstractBlock.$$proto.getSubstitutions = function () {\n return this.subs;\n};\n\n/**\n * Check whether a given substitution keyword is present in the substitutions for this block.\n *\n * @memberof AbstractBlock\n * @returns {boolean} - whether the substitution is present on this block.\n */\nAbstractBlock.$$proto.hasSubstitution = function (substitution) {\n return this['$sub?'](substitution);\n};\n\n/**\n * Remove the specified substitution keyword from the list of substitutions for this block.\n *\n * @memberof AbstractBlock\n * @returns undefined\n */\nAbstractBlock.$$proto.removeSubstitution = function (substitution) {\n this.$remove_sub(substitution);\n};\n\n/**\n * Get the list of {@link AbstractBlock} sub-blocks for this block.\n * @memberof AbstractBlock\n * @returns {Array} - returns a list of {@link AbstractBlock} sub-blocks\n */\nAbstractBlock.$$proto.getBlocks = function () {\n return this.blocks;\n};\n\n/**\n * Get the converted result of the child blocks by converting the children appropriate to content model that this block supports.\n * @memberof AbstractBlock\n * @returns {string} - returns the converted result of the child blocks\n */\nAbstractBlock.$$proto.getContent = function () {\n return this.$content();\n};\n\n/**\n * Get the converted content for this block.\n * If the block has child blocks, the content method should cause them to be converted\n * and returned as content that can be included in the parent block's template.\n * @memberof AbstractBlock\n * @returns {string} - returns the converted String content for this block\n */\nAbstractBlock.$$proto.convert = function () {\n return this.$convert();\n};\n\n/**\n * Query for all descendant block-level nodes in the document tree\n * that match the specified selector (context, style, id, and/or role).\n * If a function block is given, it's used as an additional filter.\n * If no selector or function block is supplied, all block-level nodes in the tree are returned.\n * @param {Object} [selector]\n * @param {function} [block]\n * @example\n * doc.findBy({'context': 'section'});\n * // => { level: 0, title: \"Hello, AsciiDoc!\", blocks: 0 }\n * // => { level: 1, title: \"First Section\", blocks: 1 }\n *\n * doc.findBy({'context': 'section'}, function (section) { return section.getLevel() === 1; });\n * // => { level: 1, title: \"First Section\", blocks: 1 }\n *\n * doc.findBy({'context': 'listing', 'style': 'source'});\n * // => { context: :listing, content_model: :verbatim, style: \"source\", lines: 1 }\n *\n * @memberof AbstractBlock\n * @returns {Array} - returns a list of block-level nodes that match the filter or an empty list if no matches are found\n */\nAbstractBlock.$$proto.findBy = function (selector, block) {\n if (typeof block === 'undefined' && typeof selector === 'function') {\n return Opal.send(this, 'find_by', null, selector);\n }\n else if (typeof block === 'function') {\n return Opal.send(this, 'find_by', [toHash(selector)], block);\n }\n else {\n return this.$find_by(toHash(selector));\n }\n};\n\n/**\n * Get the source line number where this block started.\n * @memberof AbstractBlock\n * @returns {number} - returns the source line number where this block started\n */\nAbstractBlock.$$proto.getLineNumber = function () {\n var lineno = this.$lineno();\n return lineno === Opal.nil ? undefined : lineno;\n};\n\n/**\n * @namespace\n */\nvar Block = Opal.Asciidoctor.Block;\n\n/**\n * Get the source of this block.\n * @memberof Block\n * @returns {string} - returns the String source of this block.\n */\nBlock.$$proto.getSource = function () {\n return this.$source();\n};\n\n/**\n * Get the source lines of this block.\n * @memberof Block\n * @returns {Array} - returns the String {Array} of source lines for this block.\n */\nBlock.$$proto.getSourceLines = function () {\n return this.lines;\n};\n\n// AbstractNode API\n\n/**\n * @namespace\n */\nvar AbstractNode = Opal.Asciidoctor.AbstractNode;\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getAttributes = function () {\n return fromHash(this.attributes);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getAttribute = function (name, defaultValue, inherit) {\n var value = this.$attr(name, defaultValue, inherit);\n return value === Opal.nil ? undefined : value;\n};\n\n/**\n * Check whether the specified attribute is present on this node.\n *\n * @memberof AbstractNode\n * @returns {boolean} true if the attribute is present, otherwise false\n */\nAbstractNode.$$proto.hasAttribute = function (name) {\n return name in this.attributes.$$smap;\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.isAttribute = function (name, expectedValue, inherit) {\n var result = this['$attr?'](name, expectedValue, inherit);\n return result === Opal.nil ? false : result;\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.setAttribute = function (name, value, overwrite) {\n if (typeof overwrite === 'undefined') overwrite = true;\n return this.$set_attr(name, value, overwrite);\n};\n\n/**\n * Remove the attribute from the current node.\n * @param {string} name - The String attribute name to remove\n * @returns {string} - returns the previous {String} value, or undefined if the attribute was not present.\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.removeAttribute = function (name) {\n var value = this.$remove_attr(name);\n return value === Opal.nil ? undefined : value;\n};\n\n/**\n * Get the {@link Document} to which this node belongs.\n *\n * @memberof AbstractNode\n * @returns {Document} - returns the {@link Document} object to which this node belongs.\n */\nAbstractNode.$$proto.getDocument = function () {\n return this.document;\n};\n\n/**\n * Get the {@link AbstractNode} to which this node is attached.\n *\n * @memberof AbstractNode\n * @returns {AbstractNode} - returns the {@link AbstractNode} object to which this node is attached,\n * or undefined if this node has no parent.\n */\nAbstractNode.$$proto.getParent = function () {\n var parent = this.parent;\n return parent === Opal.nil ? undefined : parent;\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.isInline = function () {\n return this['$inline?']();\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.isBlock = function () {\n return this['$block?']();\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.isRole = function (expected) {\n return this['$role?'](expected);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getRole = function () {\n return this.$role();\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.hasRole = function (name) {\n return this['$has_role?'](name);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getRoles = function () {\n return this.$roles();\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.addRole = function (name) {\n return this.$add_role(name);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.removeRole = function (name) {\n return this.$remove_role(name);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.isReftext = function () {\n return this['$reftext?']();\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getReftext = function () {\n return this.$reftext();\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getContext = function () {\n var context = this.context;\n // Automatically convert Opal pseudo-symbol to String\n return typeof context === 'string' ? context : context.toString();\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getId = function () {\n return this.id;\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.isOption = function (name) {\n return this['$option?'](name);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.setOption = function (name) {\n return this.$set_option(name);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getIconUri = function (name) {\n return this.$icon_uri(name);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getMediaUri = function (target, assetDirKey) {\n return this.$media_uri(target, assetDirKey);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getImageUri = function (targetImage, assetDirKey) {\n return this.$image_uri(targetImage, assetDirKey);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.getConverter = function () {\n return this.$converter();\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.readContents = function (target, options) {\n return this.$read_contents(target, toHash(options));\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.readAsset = function (path, options) {\n return this.$read_asset(path, toHash(options));\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.normalizeWebPath = function (target, start, preserveTargetUri) {\n return this.$normalize_web_path(target, start, preserveTargetUri);\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.normalizeSystemPath = function (target, start, jail, options) {\n return this.$normalize_system_path(target, start, jail, toHash(options));\n};\n\n/**\n * @memberof AbstractNode\n */\nAbstractNode.$$proto.normalizeAssetPath = function (assetRef, assetName, autoCorrect) {\n return this.$normalize_asset_path(assetRef, assetName, autoCorrect);\n};\n\n// Document API\n\n/**\n * @namespace\n * @extends AbstractBlock\n */\nvar Document = Opal.Asciidoctor.Document;\n\n/**\n * @returns {string} - returns the level-0 section\n * @memberof Document\n */\nDocument.$$proto.getHeader = function () {\n return this.header;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.setAttribute = function (name, value) {\n return this.$set_attribute(name, value);\n};\n\n/**\n\n * @memberof Document\n */\nDocument.$$proto.removeAttribute = function (name) {\n this.attributes.$delete(name);\n this.attribute_overrides.$delete(name);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.convert = function (options) {\n var result = this.$convert(toHash(options));\n return result === Opal.nil ? '' : result;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.write = function (output, target) {\n return this.$write(output, target);\n};\n\n/**\n * @returns {string} - returns the full name of the author as a String\n * @memberof Document\n */\nDocument.$$proto.getAuthor = function () {\n return this.$author();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getSource = function () {\n return this.$source();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getSourceLines = function () {\n return this.$source_lines();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.isNested = function () {\n return this['$nested?']();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.hasFootnotes = function () {\n return this['$footnotes?']();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getFootnotes = function () {\n return this.$footnotes();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.isEmbedded = function () {\n return this['$embedded?']();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.hasExtensions = function () {\n return this['$extensions?']();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getDoctype = function () {\n return this.doctype;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getBackend = function () {\n return this.backend;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.isBasebackend = function (base) {\n return this['$basebackend?'](base);\n};\n\n/**\n * Get the title explicitly defined in the document attributes.\n * @returns {string}\n * @see {@link AbstractNode#getAttributes}\n * @memberof Document\n */\nDocument.$$proto.getTitle = function () {\n var title = this.$title();\n return title === Opal.nil ? undefined : title;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.setTitle = function (title) {\n return this['$title='](title);\n};\n\n/**\n * @memberof Document\n * @returns {Document/Title} - returns a {@link Document/Title}\n */\nDocument.$$proto.getDocumentTitle = function (options) {\n var doctitle = this.$doctitle(toHash(options));\n return doctitle === Opal.nil ? undefined : doctitle;\n};\n\n/**\n * @memberof Document\n * @see {@link Document#getDocumentTitle}\n */\nDocument.$$proto.getDoctitle = Document.$$proto.getDocumentTitle;\n\n/**\n * Get the document catalog Hash.\n * @memberof Document\n */\nDocument.$$proto.getCatalog = function () {\n return fromHash(this.catalog);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getReferences = Document.$$proto.getCatalog;\n\n/**\n * Get the document revision date from document header (document attribute <code>revdate</code>).\n * @memberof Document\n */\nDocument.$$proto.getRevisionDate = function () {\n return this.getAttribute('revdate');\n};\n\n/**\n * @memberof Document\n * @see Document#getRevisionDate\n */\nDocument.$$proto.getRevdate = function () {\n return this.getRevisionDate();\n};\n\n/**\n * Get the document revision number from document header (document attribute <code>revnumber</code>).\n * @memberof Document\n */\nDocument.$$proto.getRevisionNumber = function () {\n return this.getAttribute('revnumber');\n};\n\n/**\n * Get the document revision remark from document header (document attribute <code>revremark</code>).\n * @memberof Document\n */\nDocument.$$proto.getRevisionRemark = function () {\n return this.getAttribute('revremark');\n};\n\n// private constructor\nDocument.RevisionInfo = function (date, number, remark) {\n this.date = date;\n this.number = number;\n this.remark = remark;\n};\n\n/**\n * @class\n * @namespace\n * @module Document/RevisionInfo\n */\nvar RevisionInfo = Document.RevisionInfo;\n\n/**\n * Get the document revision date from document header (document attribute <code>revdate</code>).\n * @memberof Document/RevisionInfo\n */\nRevisionInfo.prototype.getDate = function () {\n return this.date;\n};\n\n/**\n * Get the document revision number from document header (document attribute <code>revnumber</code>).\n * @memberof Document/RevisionInfo\n */\nRevisionInfo.prototype.getNumber = function () {\n return this.number;\n};\n\n/**\n * Get the document revision remark from document header (document attribute <code>revremark</code>).\n * A short summary of changes in this document revision.\n * @memberof Document/RevisionInfo\n */\nRevisionInfo.prototype.getRemark = function () {\n return this.remark;\n};\n\n/**\n * @memberof Document/RevisionInfo\n * @returns {boolean} - returns true if the revision info is empty (ie. not defined), otherwise false\n */\nRevisionInfo.prototype.isEmpty = function () {\n return this.date === undefined && this.number === undefined && this.remark === undefined;\n};\n\n/**\n * @memberof Document\n * @returns {Document/RevisionInfo} - returns a {@link Document/RevisionInfo}\n */\nDocument.$$proto.getRevisionInfo = function () {\n return new Document.RevisionInfo(this.getRevisionDate(), this.getRevisionNumber(), this.getRevisionRemark());\n};\n\n/**\n * @memberof Document\n * @returns {boolean} - returns true if the document contains revision info, otherwise false\n */\nDocument.$$proto.hasRevisionInfo = function () {\n var revisionInfo = this.getRevisionInfo();\n return !revisionInfo.isEmpty();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getNotitle = function () {\n return this.$notitle();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getNoheader = function () {\n return this.$noheader();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getNofooter = function () {\n return this.$nofooter();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.hasHeader = function () {\n return this['$header?']();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.deleteAttribute = function (name) {\n return this.$delete_attribute(name);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.isAttributeLocked = function (name) {\n return this['$attribute_locked?'](name);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.parse = function (data) {\n return this.$parse(data);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getDocinfo = function (docinfoLocation, suffix) {\n return this.$docinfo(docinfoLocation, suffix);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.hasDocinfoProcessors = function (docinfoLocation) {\n return this['$docinfo_processors?'](docinfoLocation);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.counterIncrement = function (counterName, block) {\n return this.$counter_increment(counterName, block);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.counter = function (name, seed) {\n return this.$counter(name, seed);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getSafe = function () {\n return this.safe;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getCompatMode = function () {\n return this.compat_mode;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getSourcemap = function () {\n return this.sourcemap;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getCounters = function () {\n return fromHash(this.counters);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getCallouts = function () {\n return this.$callouts();\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getBaseDir = function () {\n return this.base_dir;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getOptions = function () {\n return fromHash(this.options);\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getOutfilesuffix = function () {\n return this.outfilesuffix;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getParentDocument = function () {\n return this.parent_document;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getReader = function () {\n return this.reader;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getConverter = function () {\n return this.converter;\n};\n\n/**\n * @memberof Document\n */\nDocument.$$proto.getExtensions = function () {\n return this.extensions;\n};\n\n// Document.Title API\n\n/**\n * @namespace\n * @module Document/Title\n */\nvar Title = Document.Title;\n\n/**\n * @memberof Document/Title\n */\nTitle.$$proto.getMain = function () {\n return this.main;\n};\n\n/**\n * @memberof Document/Title\n */\nTitle.$$proto.getCombined = function () {\n return this.combined;\n};\n\n/**\n * @memberof Document/Title\n */\nTitle.$$proto.getSubtitle = function () {\n var subtitle = this.subtitle;\n return subtitle === Opal.nil ? undefined : subtitle;\n};\n\n/**\n * @memberof Document/Title\n */\nTitle.$$proto.isSanitized = function () {\n var sanitized = this['$sanitized?']();\n return sanitized === Opal.nil ? false : sanitized;\n};\n\n/**\n * @memberof Document/Title\n */\nTitle.$$proto.hasSubtitle = function () {\n return this['$subtitle?']();\n};\n\n// Inline API\n\n/**\n * @namespace\n * @extends AbstractNode\n */\nvar Inline = Opal.Asciidoctor.Inline;\n\n/**\n * Get the converted content for this inline node.\n *\n * @memberof Inline\n * @returns {string} - returns the converted String content for this inline node\n */\nInline.$$proto.convert = function () {\n return this.$convert();\n};\n\n/**\n * Get the converted String text of this Inline node, if applicable.\n *\n * @memberof Inline\n * @returns {string} - returns the converted String text for this Inline node, or undefined if not applicable for this node.\n */\nInline.$$proto.getText = function () {\n var text = this.$text();\n return text === Opal.nil ? undefined : text;\n};\n\n/**\n * Get the String sub-type (aka qualifier) of this Inline node.\n *\n * This value is used to distinguish different variations of the same node\n * category, such as different types of anchors.\n *\n * @memberof Inline\n * @returns {string} - returns the string sub-type of this Inline node.\n */\nInline.$$proto.getType = function () {\n return this.$type();\n};\n\n/**\n * Get the primary String target of this Inline node.\n *\n * @memberof Inline\n * @returns {string} - returns the string target of this Inline node.\n */\nInline.$$proto.getTarget = function () {\n var target = this.$target();\n return target === Opal.nil ? undefined : target;\n};\n\n// List API\n\n/** @namespace */\nvar List = Opal.Asciidoctor.List;\n\n/**\n * Get the Array of {@link ListItem} nodes for this {@link List}.\n *\n * @memberof List\n * @returns {Array} - returns an Array of {@link ListItem} nodes.\n */\nList.$$proto.getItems = function () {\n return this.blocks;\n};\n\n// ListItem API\n\n/** @namespace */\nvar ListItem = Opal.Asciidoctor.ListItem;\n\n/**\n * Get the converted String text of this ListItem node.\n *\n * @memberof ListItem\n * @returns {string} - returns the converted String text for this ListItem node.\n */\nListItem.$$proto.getText = function () {\n return this.$text();\n};\n\n// Reader API\n\n/** @namespace */\nvar Reader = Opal.Asciidoctor.Reader;\n\n/**\n * @memberof Reader\n */\nReader.$$proto.pushInclude = function (data, file, path, lineno, attributes) {\n return this.$push_include(data, file, path, lineno, attributes);\n};\n\n/**\n * Get the current location of the reader's cursor, which encapsulates the\n * file, dir, path, and lineno of the file being read.\n *\n * @memberof Reader\n */\nReader.$$proto.getCursor = function () {\n return this.$cursor();\n};\n\n/**\n * Get a copy of the remaining {Array} of String lines managed by this Reader.\n *\n * @memberof Reader\n * @returns {Array} - returns A copy of the String {Array} of lines remaining in this Reader.\n */\nReader.$$proto.getLines = function () {\n return this.$lines();\n};\n\n/**\n * Get the remaining lines managed by this Reader as a String.\n *\n * @memberof Reader\n * @returns {string} - returns The remaining lines managed by this Reader as a String (joined by linefeed characters).\n */\nReader.$$proto.getString = function () {\n return this.$string();\n};\n\n// Cursor API\n\n/** @namespace */\nvar Cursor = Opal.Asciidoctor.Reader.Cursor;\n\n/**\n * Get the file associated to the cursor.\n * @memberof Cursor\n */\nCursor.$$proto.getFile = function () {\n var file = this.file;\n return file === Opal.nil ? undefined : file;\n};\n\n/**\n * Get the directory associated to the cursor.\n * @memberof Cursor\n * @returns {string} - returns the directory associated to the cursor\n */\nCursor.$$proto.getDirectory = function () {\n var dir = this.dir;\n return dir === Opal.nil ? undefined : dir;\n};\n\n/**\n * Get the path associated to the cursor.\n * @memberof Cursor\n * @returns {string} - returns the path associated to the cursor (or '<stdin>')\n */\nCursor.$$proto.getPath = function () {\n var path = this.path;\n return path === Opal.nil ? undefined : path;\n};\n\n/**\n * Get the line number of the cursor.\n * @memberof Cursor\n * @returns {number} - returns the line number of the cursor\n */\nCursor.$$proto.getLineNumber = function () {\n return this.lineno;\n};\n\n// Logger API (available in Asciidoctor 1.5.7+)\n// REMIND: we are using \"skip_missing\" because this API is only available starting with Asciidoctor 1.5.7\n\n/**\n * @namespace\n */\nvar LoggerManager = Opal.const_get_qualified(Opal.Asciidoctor, 'LoggerManager', true);\n\n// Alias\nOpal.Asciidoctor.LoggerManager = LoggerManager;\n\nif (LoggerManager) {\n LoggerManager.getLogger = function () {\n return this.$logger();\n };\n\n LoggerManager.setLogger = function (logger) {\n this.logger = logger;\n };\n}\n\n/**\n * @namespace\n */\nvar MemoryLogger = Opal.const_get_qualified(Opal.Asciidoctor, 'MemoryLogger', true);\n\n// Alias\nOpal.Asciidoctor.MemoryLogger = MemoryLogger;\n\nif (MemoryLogger) {\n MemoryLogger.$$proto.getMessages = function () {\n var messages = this.messages;\n var result = [];\n for (var i = 0; i < messages.length; i++) {\n var message = messages[i];\n var messageObject = fromHash(message);\n // also convert the message attribute\n messageObject.message = fromHash(messageObject.message);\n result.push(messageObject);\n }\n return result;\n };\n}\n\n// Extensions API\n\n/**\n * @private\n */\nvar toBlock = function (block) {\n // arity is a mandatory field\n block.$$arity = block.length;\n return block;\n};\n\nvar registerExtension = function (registry, type, processor, name) {\n if (typeof processor === 'function') {\n return Opal.send(registry, type, name && [name], toBlock(processor));\n } else {\n return registry['$' + type](processor, name);\n }\n};\n\n/**\n * @namespace\n * @description\n * Extensions provide a way to participate in the parsing and converting\n * phases of the AsciiDoc processor or extend the AsciiDoc syntax.\n *\n * The various extensions participate in AsciiDoc processing as follows:\n *\n * 1. After the source lines are normalized, {{@link Extensions/Preprocessor}}s modify or replace\n * the source lines before parsing begins. {{@link Extensions/IncludeProcessor}}s are used to\n * process include directives for targets which they claim to handle.\n * 2. The Parser parses the block-level content into an abstract syntax tree.\n * Custom blocks and block macros are processed by associated {{@link Extensions/BlockProcessor}}s\n * and {{@link Extensions/BlockMacroProcessor}}s, respectively.\n * 3. {{@link Extensions/TreeProcessor}}s are run on the abstract syntax tree.\n * 4. Conversion of the document begins, at which point inline markup is processed\n * and converted. Custom inline macros are processed by associated {InlineMacroProcessor}s.\n * 5. {{@link Extensions/Postprocessor}}s modify or replace the converted document.\n * 6. The output is written to the output stream.\n *\n * Extensions may be registered globally using the {Extensions.register} method\n * or added to a custom {Registry} instance and passed as an option to a single\n * Asciidoctor processor.\n *\n * @example\n * Opal.Asciidoctor.Extensions.register(function () {\n * this.block(function () {\n * var self = this;\n * self.named('shout');\n * self.onContext('paragraph');\n * self.process(function (parent, reader) {\n * var lines = reader.getLines().map(function (l) { return l.toUpperCase(); });\n * return self.createBlock(parent, 'paragraph', lines);\n * });\n * });\n * });\n */\nvar Extensions = Opal.const_get_qualified(Opal.Asciidoctor, 'Extensions');\n\n// Alias\nOpal.Asciidoctor.Extensions = Extensions;\n\n/**\n * Create a new {@link Extensions/Registry}.\n * @param {string} name\n * @param {function} block\n * @memberof Extensions\n * @returns {Extensions/Registry} - returns a {@link Extensions/Registry}\n */\nExtensions.create = function (name, block) {\n if (typeof name === 'function' && typeof block === 'undefined') {\n return Opal.send(this, 'build_registry', null, toBlock(name));\n } else if (typeof block === 'function') {\n return Opal.send(this, 'build_registry', [name], toBlock(block));\n } else {\n return this.$build_registry();\n }\n};\n\n/**\n * @memberof Extensions\n */\nExtensions.register = function (name, block) {\n if (typeof name === 'function' && typeof block === 'undefined') {\n return Opal.send(this, 'register', null, toBlock(name));\n } else {\n return Opal.send(this, 'register', [name], toBlock(block));\n }\n};\n\n/**\n * Get statically-registerd extension groups.\n * @memberof Extensions\n */\nExtensions.getGroups = function () {\n return fromHash(this.$groups());\n};\n\n/**\n * Unregister all statically-registered extension groups.\n * @memberof Extensions\n */\nExtensions.unregisterAll = function () {\n this.$unregister_all();\n};\n\n/**\n * Unregister the specified statically-registered extension groups.\n *\n * NOTE Opal cannot delete an entry from a Hash that is indexed by symbol, so\n * we have to resort to using low-level operations in this method.\n *\n * @memberof Extensions\n */\nExtensions.unregister = function () {\n var names = Array.prototype.concat.apply([], arguments);\n var groups = this.$groups();\n var groupNameIdx = {};\n for (var i = 0, groupSymbolNames = groups.$$keys; i < groupSymbolNames.length; i++) {\n var groupSymbolName = groupSymbolNames[i];\n groupNameIdx[groupSymbolName.toString()] = groupSymbolName;\n }\n for (var j = 0; j < names.length; j++) {\n var groupStringName = names[j];\n if (groupStringName in groupNameIdx) Opal.hash_delete(groups, groupNameIdx[groupStringName]);\n }\n};\n\n/**\n * @namespace\n * @module Extensions/Registry\n */\nvar Registry = Extensions.Registry;\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.getGroups = Extensions.getGroups;\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.unregisterAll = function () {\n this.groups = Opal.hash();\n};\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.unregister = Extensions.unregister;\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.block = function (name, processor) {\n if (arguments.length === 1) {\n processor = name;\n name = null;\n }\n return registerExtension(this, 'block', processor, name);\n};\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.inlineMacro = function (name, processor) {\n if (arguments.length === 1) {\n processor = name;\n name = null;\n }\n return registerExtension(this, 'inline_macro', processor, name);\n};\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.includeProcessor = function (processor) {\n return registerExtension(this, 'include_processor', processor);\n};\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.blockMacro = function (name, processor) {\n if (arguments.length === 1) {\n processor = name;\n name = null;\n }\n return registerExtension(this, 'block_macro', processor, name);\n};\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.treeProcessor = function (name, processor) {\n if (arguments.length === 1) {\n processor = name;\n name = null;\n }\n return registerExtension(this, 'tree_processor', processor, name);\n};\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.postprocessor = function (name, processor) {\n if (arguments.length === 1) {\n processor = name;\n name = null;\n }\n return registerExtension(this, 'postprocessor', processor, name);\n};\n\n/**\n * @memberof Extensions/Registry\n */\nRegistry.$$proto.preprocessor = function (name, processor) {\n if (arguments.length === 1) {\n processor = name;\n name = null;\n }\n return registerExtension(this, 'preprocessor', processor, name);\n};\n\n/**\n * @memberof Extensions/Registry\n */\n\nRegistry.$$proto.docinfoProcessor = function (name, processor) {\n if (arguments.length === 1) {\n processor = name;\n name = null;\n }\n return registerExtension(this, 'docinfo_processor', processor, name);\n};\n\n/**\n * @namespace\n * @module Extensions/Processor\n */\nvar Processor = Extensions.Processor;\n\n/**\n * @memberof Extensions/Processor\n */\nProcessor.$$proto.process = function (block) {\n return Opal.send(this, 'process', null, toBlock(block));\n};\n\n/**\n * @memberof Extensions/Processor\n */\nProcessor.$$proto.named = function (name) {\n return this.$named(name);\n};\n\n/**\n * @memberof Extensions/Processor\n */\nProcessor.$$proto.createBlock = function (parent, context, source, attrs, opts) {\n return this.$create_block(parent, context, source, toHash(attrs), toHash(opts));\n};\n\n/**\n * @memberof Extensions/Processor\n */\nProcessor.$$proto.createImageBlock = function (parent, attrs, opts) {\n return this.$create_image_block(parent, toHash(attrs), toHash(opts));\n};\n\n/**\n * @memberof Extensions/Processor\n */\nProcessor.$$proto.createInline = function (parent, context, text, opts) {\n return this.$create_inline(parent, context, text, toHash(opts));\n};\n\n/**\n * @memberof Extensions/Processor\n */\nProcessor.$$proto.parseContent = function (parent, content, attrs) {\n return this.$parse_content(parent, content, attrs);\n};\n\n/**\n * @memberof Extensions/Processor\n */\nProcessor.$$proto.positionalAttributes = function (value) {\n return this.$positional_attrs(value);\n};\n\n/**\n * @namespace\n * @module Extensions/BlockProcessor\n */\nvar BlockProcessor = Extensions.BlockProcessor;\n\n/**\n * @memberof Extensions/BlockProcessor\n */\nBlockProcessor.$$proto.onContext = function (context) {\n return this.$on_context(context);\n};\n\n/**\n * @memberof Extensions/BlockProcessor\n */\nBlockProcessor.$$proto.onContexts = function () {\n return this.$on_contexts(Array.prototype.slice.call(arguments));\n};\n\n/**\n * @namespace\n * @module Extensions/BlockMacroProcessor\n */\n// eslint-disable-next-line no-unused-vars\nvar BlockMacroProcessor = Extensions.BlockMacroProcessor;\n\n/**\n * @namespace\n * @module Extensions/IncludeProcessor\n */\nvar IncludeProcessor = Extensions.IncludeProcessor;\n\n/**\n * @memberof Extensions/IncludeProcessor\n */\nIncludeProcessor.$$proto.handles = function (block) {\n return Opal.send(this, 'handles?', null, toBlock(block));\n};\n\n/**\n * @namespace\n * @module Extensions/TreeProcessor\n */\n// eslint-disable-next-line no-unused-vars\nvar TreeProcessor = Extensions.TreeProcessor;\n\n/**\n * @namespace\n * @module Extensions/Postprocessor\n */\n// eslint-disable-next-line no-unused-vars\nvar Postprocessor = Extensions.Postprocessor;\n\n/**\n * @namespace\n * @module Extensions/Preprocessor\n */\n// eslint-disable-next-line no-unused-vars\nvar Preprocessor = Extensions.Preprocessor;\n\n/**\n * @namespace\n * @module Extensions/DocinfoProcessor\n */\nvar DocinfoProcessor = Extensions.DocinfoProcessor;\n\n/**\n * @memberof Extensions/DocinfoProcessor\n */\nDocinfoProcessor.$$proto.atLocation = function (value) {\n this.$at_location(value);\n};\n\n// Converter API\n\n/**\n * @namespace\n * @module Converter\n */\nvar Converter = Opal.const_get_qualified(Opal.Asciidoctor, 'Converter');\n\n// Alias\nOpal.Asciidoctor.Converter = Converter;\n\n/**\n * Convert the specified node.\n *\n * @param {AbstractNode} node - the AbstractNode to convert\n * @param {string} transform - an optional String transform that hints at\n * which transformation should be applied to this node.\n * @param {Object} opts - a JSON of options that provide additional hints about\n * how to convert the node (default: {})\n * @returns the {Object} result of the conversion, typically a {string}.\n * @memberof Converter\n */\nConverter.$$proto.convert = function (node, transform, opts) {\n return this.$convert(node, transform, toHash(opts));\n};\n\n// The built-in converter doesn't include Converter, so we have to force it\nConverter.BuiltIn.$$proto.convert = Converter.$$proto.convert;\n\n// Converter Factory API\n\n/**\n * @namespace\n * @module Converter/Factory\n */\nvar ConverterFactory = Opal.Asciidoctor.Converter.Factory;\n\n/**\n * Retrieves the singleton instance of the converter factory.\n *\n * @param {boolean} initialize - instantiate the singleton if it has not yet\n * been instantiated. If this value is false and the singleton has not yet been\n * instantiated, this method returns a fresh instance.\n * @returns {Converter/Factory} an instance of the converter factory.\n * @memberof Converter/Factory\n */\nConverterFactory.getDefault = function (initialize) {\n return this.$default(initialize);\n};\n\n/**\n * Create an instance of the converter bound to the specified backend.\n *\n * @param {string} backend - look for a converter bound to this keyword.\n * @param {Object} opts - a JSON of options to pass to the converter (default: {})\n * @returns {Converter} - a converter instance for converting nodes in an Asciidoctor AST.\n * @memberof Converter/Factory\n */\nConverterFactory.$$proto.create = function (backend, opts) {\n return this.$create(backend, toHash(opts));\n};\n\n\nvar ASCIIDOCTOR_JS_VERSION = '1.5.6';\n\n /**\n * Get Asciidoctor.js version number.\n *\n * @memberof Asciidoctor\n * @returns {string} - returns the version number of Asciidoctor.js.\n */\n Asciidoctor.$$proto.getVersion = function () {\n return ASCIIDOCTOR_JS_VERSION;\n };\n return Opal.Asciidoctor;\n}));\n",
"type": "application/javascript",
"title": "$:/plugins/bimlas/asciidoctor/asciidoctor.js",
"module-type": "library"
},
"$:/plugins/bimlas/asciidoctor/jsonml-dom.js": {
"text": "/*\njsonml-dom.js\nHTML to JsonML utility\n\nCreated: 2007-02-15-2235\nModified: 2012-11-03-2051\n\nCopyright (c)2006-2012 Stephen M. McKamey\nDistributed under The MIT License: http://jsonml.org/license\n\nhttps://github.com/mckamey/jsonml/blob/master/jsonml-dom.js\n*/\n\n(function(){\n var JsonML = JsonML || {};\n\n 'use strict';\n\n var addChildren = function(/*DOM*/ elem, /*function*/ filter, /*JsonML*/ jml) {\n if (elem.hasChildNodes()) {\n for (var i=0; i<elem.childNodes.length; i++) {\n var child = elem.childNodes[i];\n child = fromHTML(child, filter);\n if (child) {\n jml.push(child);\n }\n }\n return true;\n }\n return false;\n };\n\n /**\n * @param {Node} elem\n * @param {function} filter\n * @return {array} JsonML\n */\n var fromHTML = JsonML.fromHTML = function(elem, filter) {\n if (!elem || !elem.nodeType) {\n // free references\n return (elem = null);\n }\n\n var i, jml;\n switch (elem.nodeType) {\n case 1: // element\n case 9: // document\n case 11: // documentFragment\n jml = [elem.tagName.toLowerCase()||''];\n\n var attr = elem.attributes,\n props = {},\n hasAttrib = false;\n\n for (i=0; attr && i<attr.length; i++) {\n if (attr[i].specified) {\n if (attr[i].name === 'style') {\n props.style = elem.style.cssText || attr[i].value;\n } else if ('string' === typeof attr[i].value) {\n props[attr[i].name] = attr[i].value;\n }\n hasAttrib = true;\n }\n }\n if (hasAttrib) {\n jml.push(props);\n }\n\n var child;\n switch (jml[0].toLowerCase()) {\n case 'frame':\n case 'iframe':\n try {\n if ('undefined' !== typeof elem.contentDocument) {\n // W3C\n child = elem.contentDocument;\n } else if ('undefined' !== typeof elem.contentWindow) {\n // Microsoft\n child = elem.contentWindow.document;\n } else if ('undefined' !== typeof elem.document) {\n // deprecated\n child = elem.document;\n }\n\n child = fromHTML(child, filter);\n if (child) {\n jml.push(child);\n }\n } catch (ex) {}\n break;\n case 'style':\n child = elem.styleSheet && elem.styleSheet.cssText;\n if (child && 'string' === typeof child) {\n // unwrap comment blocks\n child = child.replace('<!--', '').replace('-->', '');\n jml.push(child);\n } else if (elem.hasChildNodes()) {\n for (i=0; i<elem.childNodes.length; i++) {\n child = elem.childNodes[i];\n child = fromHTML(child, filter);\n if (child && 'string' === typeof child) {\n // unwrap comment blocks\n child = child.replace('<!--', '').replace('-->', '');\n jml.push(child);\n }\n }\n }\n break;\n case 'input':\n addChildren(elem, filter, jml);\n child = (elem.type !== 'password') && elem.value;\n if (child) {\n if (!hasAttrib) {\n // need to add an attribute object\n jml.shift();\n props = {};\n jml.unshift(props);\n jml.unshift(elem.tagName||'');\n }\n props.value = child;\n }\n break;\n case 'textarea':\n if (!addChildren(elem, filter, jml)) {\n child = elem.value || elem.innerHTML;\n if (child && 'string' === typeof child) {\n jml.push(child);\n }\n }\n break;\n default:\n addChildren(elem, filter, jml);\n break;\n }\n\n // filter result\n if ('function' === typeof filter) {\n jml = filter(jml, elem);\n }\n\n // free references\n elem = null;\n return jml;\n case 3: // text node, or a simple newline in the case of Asciidoctor\n // See the .childNodes of a <div> element\n // https://stackoverflow.com/a/18850683\n case 4: // CDATA node\n var str = String(elem.nodeValue.replace(/^\\n$/, ''));\n // free references\n elem = null;\n return str;\n case 10: // doctype\n jml = ['!'];\n\n var type = ['DOCTYPE', (elem.name || 'html').toLowerCase()];\n\n if (elem.publicId) {\n type.push('PUBLIC', '\"' + elem.publicId + '\"');\n }\n\n if (elem.systemId) {\n type.push('\"' + elem.systemId + '\"');\n }\n\n jml.push(type.join(' '));\n\n // filter result\n if ('function' === typeof filter) {\n jml = filter(jml, elem);\n }\n\n // free references\n elem = null;\n return jml;\n case 8: // comment node\n if ((elem.nodeValue||'').indexOf('DOCTYPE') !== 0) {\n // free references\n elem = null;\n return null;\n }\n\n jml = ['!',\n elem.nodeValue];\n\n // filter result\n if ('function' === typeof filter) {\n jml = filter(jml, elem);\n }\n\n // free references\n elem = null;\n return jml;\n default: // etc.\n // free references\n return (elem = null);\n }\n };\n\n /**\n * @param {string} html HTML text\n * @param {function} filter\n * @return {array} JsonML\n */\n var fromHTMLText = JsonML.fromHTMLText = function(html, filter) {\n var elem = document.createElement('div');\n elem.innerHTML = html;\n\n var jml = fromHTML(elem, filter);\n\n // free references\n elem = null;\n\n // make wrapper a document fragment\n jml.shift();\n return jml;\n };\n\n module.exports = JsonML;\n})();\n",
"type": "application/javascript",
"title": "$:/plugins/bimlas/asciidoctor/jsonml-dom.js",
"module-type": "library"
},
"$:/plugins/bimlas/asciidoctor/images/new-asciidoctor-button": {
"title": "$:/plugins/bimlas/asciidoctor/images/new-asciidoctor-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-new-asciidoctor-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\" M 72.449 0.001 C 70.69 0.034 69.118 1.062 68.441 2.621 L 41.941 63.824 C 41.291 65.237 41.488 66.876 42.456 68.109 C 43.423 69.342 45.01 69.975 46.603 69.764 C 48.196 69.553 49.545 68.531 50.129 67.093 L 72.503 15.414 L 119.43 125.282 C 120.011 126.718 121.354 127.742 122.943 127.958 C 124.532 128.174 126.119 127.549 127.092 126.323 C 128.065 125.098 128.273 123.464 127.635 122.049 L 76.635 2.642 C 75.941 1.017 74.278 -0.032 72.449 0.001 L 72.449 0.001 Z \" />\n <path d=\" M 34.884 86.813 C 33.104 86.849 31.519 87.904 30.858 89.491 L 16.773 122.03 C 16.145 123.438 16.353 125.062 17.318 126.282 C 18.283 127.502 19.857 128.13 21.438 127.927 C 23.02 127.723 24.365 126.72 24.962 125.299 L 39.048 92.76 C 39.647 91.43 39.5 89.898 38.658 88.694 C 37.815 87.491 36.393 86.782 34.884 86.813 L 34.884 86.813 Z \" />\n <path d=\" M 4.523 84.132 C 2.918 84.102 1.421 84.906 0.609 86.236 C -0.203 87.566 -0.203 89.214 0.609 90.543 C 1.421 91.873 2.918 92.678 4.523 92.647 L 55.733 92.647 C 57.339 92.678 58.836 91.873 59.648 90.543 C 60.46 89.214 60.46 87.566 59.648 86.236 C 58.836 84.906 57.339 84.102 55.733 84.132 L 4.523 84.132 Z \" />\n <path d=\" M 13.898 63.918 C 12.292 63.887 10.795 64.691 9.983 66.021 C 9.17 67.351 9.17 68.999 9.983 70.329 C 10.795 71.659 12.292 72.464 13.898 72.432 L 65.103 72.432 C 66.708 72.464 68.206 71.659 69.018 70.329 C 69.83 68.999 69.83 67.351 69.018 66.021 C 68.206 64.691 66.708 63.887 65.103 63.918 L 13.898 63.918 Z \" />\n </g>\n</svg>\n"
},
"$:/plugins/bimlas/asciidoctor/new-asciidoctor-button": {
"title": "$:/plugins/bimlas/asciidoctor/new-asciidoctor-button",
"tags": "$:/tags/PageControls",
"caption": "{{$:/plugins/bimlas/asciidoctor/images/new-asciidoctor-button}} {{$:/language/Buttons/NewAsciidoctor/Caption}}",
"description": "{{$:/language/Buttons/NewAsciidoctor/Hint}}",
"list-after": "$:/core/ui/Buttons/new-tiddler",
"text": "<$button tooltip={{$:/language/Buttons/NewAsciidoctor/Hint}} aria-label={{$:/language/Buttons/NewAsciidoctor/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"text/asciidoc\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/bimlas/asciidoctor/images/new-asciidoctor-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewAsciidoctor/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/plugins/bimlas/asciidoctor/readme": {
"title": "$:/plugins/bimlas/asciidoctor/readme",
"text": "This is a TiddlyWiki plugin for parsing Asciidoctor text, based on the [[Asciidoctor.js|https://github.com/asciidoctor/asciidoctor.js]] project from Asciidoctor Project.\n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n[[Source code|https://gitlab.com/bimlas/tw5-asciidoctor]]\n\n! Installation\n\nTo add the plugin to your own TiddlyWiki5, just drag this link to the browser window:\n\n[[$:/plugins/bimlas/asciidoctor]]\n"
},
"$:/plugins/bimlas/asciidoctor/usage": {
"title": "$:/plugins/bimlas/asciidoctor/usage",
"text": "! Asciidoctor reference\n\n* Asciidoctor quick reference: https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/\n* Asciidoctor manual: https://asciidoctor.org/docs/user-manual/\n\n! Creating WikiLinks\n\nCreate wiki links with the usual Asciidoctor link syntax targeting `#` and the target tiddler title:\n\n```\nlink:#TiddlerTitle[link text]\n```\n\n! Include (transclusion)\n\nI cannot found a solution to transclude tiddlers in to Asciidoctor documents\n\n```\ninclude::TiddlerTitle[]\n```\n\nbut embedding Asciidoctor tiddlers in general ones works normally.\n\n```\n{{AsciidoctorTiddler}}\n```\n\n! Internal links\n\nThe dynamically generated intra-tiddler links does not work, try out the footnote\nin the example: TiddlyWiki interprets it as a link to another tiddler.\n\n! Drag-n-drop files\n\nAsciidoc mime type is [[not registered yet|https://github.com/asciidoctor/asciidoctor/issues/2502]], thus drag-n-drop the files does not set filetype automatically, you have to do it manually.\n"
},
"$:/plugins/bimlas/asciidoctor/wrapper.js": {
"title": "$:/plugins/bimlas/asciidoctor/wrapper.js",
"text": "/*\\\ntitle: $:/plugins/bimlas/asciidoctor/wrapper.js\ntype: application/javascript\nmodule-type: parser\n\nWraps up the Asciidoctor.js parser for use in TiddlyWiki5\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar asciidoctor_parser = require(\"$:/plugins/bimlas/asciidoctor/asciidoctor\")({\n runtime: {\n ioModule: 'xmlhttprequest'\n }\n});\nvar jsonml = require(\"$:/plugins/bimlas/asciidoctor/jsonml-dom\");\n\nfunction transformNodes(nodes) {\n\tvar results = [];\n\tfor(var index=0; index<nodes.length; index++) {\n\t\tresults.push(transformNode(nodes[index]));\n\t}\n\treturn results;\n}\n\nfunction transformNode(node) {\n\tif($tw.utils.isArray(node)) {\n\t\tvar p = 0,\n\t\t\twidget = {type: \"element\", tag: node[p++]};\n\t\tif(!$tw.utils.isArray(node[p]) && typeof(node[p]) === \"object\") {\n\t\t\twidget.attributes = {};\n\t\t\t$tw.utils.each(node[p++],function(value,name) {\n\t\t\t\twidget.attributes[name] = {type: \"string\", value: value};\n\t\t\t});\n\t\t}\n\t\twidget.children = transformNodes(node.slice(p++));\n\t\t// Massage images into the image widget\n\t\tif(widget.tag === \"img\") {\n\t\t\twidget.type = \"image\";\n\t\t\tif(widget.attributes.alt) {\n\t\t\t\twidget.attributes.tooltip = widget.attributes.alt;\n\t\t\t\tdelete widget.attributes.alt;\n\t\t\t}\n\t\t\tif(widget.attributes.src) {\n\t\t\t\twidget.attributes.source = widget.attributes.src;\n\t\t\t\tdelete widget.attributes.src;\n\t\t\t}\n\t\t}\n\t\t// Convert internal links to proper wikilinks\n\t\tif (widget.tag === \"a\" && widget.attributes.href.value[0] === \"#\") {\n\t\t\twidget.type = \"link\";\n\t\t\twidget.attributes.to = widget.attributes.href;\n\t\t\tif (widget.attributes.to.type === \"string\") {\n\t\t\t\t//Remove '#' before conversion to wikilink\n\t\t\t\twidget.attributes.to.value = widget.attributes.to.value.substr(1);\n\t\t\t}\n\t\t\t//Children is fine\n\t\t\tdelete widget.tag;\n\t\t\tdelete widget.attributes.href;\n\t\t}\n\t\treturn widget;\n\t} else {\n\t\treturn {type: \"text\", text: node};\n\t}\n}\n\nvar AsciidoctorParser = function(type,text,options) {\n\tvar html_text = asciidoctor_parser.convert(text),\n\t\tnode_tree = jsonml.fromHTMLText(html_text, null),\n\t\ttiddler_tree = transformNodes(node_tree);\n\tthis.tree = tiddler_tree;\n};\n\nexports[\"text/asciidoc\"] = AsciidoctorParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
}
}
}
{
"tiddlers": {
"$:/plugins/bimlas/locator/README/CHANGELOG": {
"title": "$:/plugins/bimlas/locator/README/CHANGELOG",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "Unreleased\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-locator/compare/master...dev]]\n\n!! 2.0.0\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-locator/compare/v1.5.0...v2.0.0]]\n\n''ALMOST COMPLETE REWRITING, BACKWARDS INCOMPATIBLE CHANGES ARE INTRODUCED''\n\n* ''It does not require the `kin` filter operator at all''\n* ''You can filter to any field besides the tags''\n* You can use the standard search from any `locator-view`\n* You can use any field to link tiddlers (as \"tags\")\n* You can also navigate through tiddler links\n* You can use arbitrary templates to display context items and field values\n* ''INCOMPATIBLE CHANGES''<br />//Before upgrading to the new version, make a backup (as before upgrading any plugin) and make the following changes.//\n** Renamed `locator-tags` to `locator-fields`<br />//Change the macro call in your tiddlers//\n** `locator-view` does not supporting `finalFilter` and `tagFilter`<br />//Remove them from your macrocalls//\n** Removed `filter-grandchildren` filter<br />//Because it can no longer be passed through parameters.//\n** The \"Open in Locator sidebar\" toolbar button is moved from `$:/plugins/bimlas/locator/viewtemplate/open-in-sidebar` to `$:/plugins/bimlas/locator/viewtemplate/open-in-sidebar` and its code is changed as well<br />//Compare the old tiddler with the shadow and note the changes if any. Transfer them to the new tiddler and delete the old tiddler.//\n\n!! 1.5.0\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-locator/compare/v1.4.0...v1.5.0]]\n\n* Move tiddler from current context to higher- or subtopic by drag-n-dropping in the Locator sidebar\n* Assign any tiddler to any of the titles in the Locator sidebar by drag-n-dropping\n* Show the (top-level) base tag to be able to move the tiddler titles there\n* Add button to open search results in advanced search\n* Show buttons using the Kin filter only when the filter operator is available\n* Fix related tag issue (not all of them were listed)\n* Fix whitespace issue\n* Refactor the code\n* Add tutorial to the demo\n\n!! 1.4.0\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-locator/compare/v1.3.1...v1.4.0]]\n\n* When there was a space in the search string and \"new tiddler\" button is used from search, the tiddler title was encapsulated (`[[title with spaces]]`)\n* When there was a space in any of the breadcrumbs in sidebar and \"new tiddler\" button is used from it, the tiddler got all of the breadcrumb tags, the title with spaces was encapsulated (literally `[[title with spaces]]` tag)\n* Add more tips to [[$:/plugins/bimlas/locator/README/TIPS]]\n* Add descriptive tooltip to buttons\n\n!! 1.3.1\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-locator/compare/v1.3.0...v1.3.1]]\n\n* Add base tag if there is no breadcrumbs when creating new tiddler in current context\n* Reword documentation\n\n!! 1.3.0\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-locator/compare/v1.2.0...v1.3.0]]\n\n* Create new tiddler from search text\n\n!! 1.2.0\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-locator/compare/v1.1.0...v1.2.0]]\n\n* Add button to create new tiddler in current context\n* Ability to use additional filter on tags\n\n!! 1.1.0\n\n[[See GitLab for detailed change history of this release|https://gitlab.com/bimlas/tw5-locator/compare/v1.0.0...v1.1.0]]\n\n* ''I realized that most functions work without the `kin` filter''\n* Use the same \"style\" for breadcrumb- and list items\n* Show real tags instead of tag pills\n* Turn off filter of direct tag in the breadcrumbs by its tag icon\n* Ancestor tags in breadcrumbs of search are operating like direct labels, they can be removed one by one\n\n!! 1.0.0\n\n* First public release\n"
},
"$:/plugins/bimlas/locator/README/README": {
"title": "$:/plugins/bimlas/locator/README/README",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "! Locator\n\nLocator provides ''a universal interface for navigating between your tiddlers and searching, filtering them'' without the need to write [[filter expressions|https://tiddlywiki.com/#Filters]]. The plugin contains ''a table of contents widget and an enhanced search engine'' that contains a ''visual filter builder to filter results by tags and field values''. You can ''organize the tiddlers to any number of trees, even by custom fields or links in text''. Unlike [[classic Table of Contents|https://tiddlywiki.com/#Table-of-Contents%20Macros%20(Examples)]], [[standard search|$:/core/ui/AdvancedSearch/Standard]], [[filter search|$:/core/ui/AdvancedSearch/Filter]] and [[list of tags|$:/core/ui/MoreSideBar/Tags]], this plugin handles these functions organically.\n\n* https://bimlas.gitlab.io/tw5-locator (demo + install)\n* https://gitlab.com/bimlas/tw5-locator (main repository)\n* https://github.com/bimlas/tw5-locator (mirror, ''please star if you like the plugin'')\n\n! Benefits compared to built-in solutions\n\n* ''Shows field values''<br/>You can mark a tiddler with multiple tags and field values, but in the classic ToC you don't see them while browsing, in Locator you can apply them as filters.\n* ''Easy way to search for field values''<br/>Find tags, field values in the standard search based on part of their name or view the all fields of the search results at a glance.\n* ''Limit the scope of search''<br/>You don't have to store your recipes and family tree in a separate wiki just to make them easier to find: you can define the scope of your search with some clicks (without the need to write filters in [[$:/AdvancedSearch]]).\n* ''Reorder the hierarchy with drag-n-drop''<br />You can easily move tiddlers between topics by drag-n-dropping them.\n* ''Create mindmaps''<br />You can associate tiddlers with any field other than the tag, so you can create complex graphs that you can browse through text only user interface.\n* ''There is no need to include a table of contents in the main tiddler of each topic''<br/>Just press the \"Locator sidebar\" button on the tiddler's toolbar and you can browse it's children, links right away in the sidebar.\n* ''Create new tiddler in current scope''<br />The \"new tiddler\" button in Locator creates a new tiddler pre-filled with the currently selected field values and named by the search query (like a special \"new here\" button).\n* ''Phone friendlier''<br/>The width of the classic ToC is increasing and the size of the text is decrasing as we move down in the context, while Locator remains readable.\n\n! Usage\n\nSee the [[demo|https://bimlas.gitlab.io/tw5-locator]] for a complete tutorial\n\n! Installation instructions\n\n''The plugin consists of separate parts'', each of them can be used on its own, so ''it is possible to use only the parts you like'', but they can be used most effectively together because ''they interact with each other''.\n\nTo add the plugin to your own ~TiddlyWiki5, just drag this link to the browser window and ''create or drag the required tiddlers from the demo'':\n\n$:/plugins/bimlas/locator\n\nFor other installation options see the links above.\n\n//Select the next tab to continue.//\n"
},
"$:/plugins/bimlas/locator/README/TIPS": {
"title": "$:/plugins/bimlas/locator/README/TIPS",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "! Tips\n\n!! Organic navigation\n\n* In `locator-fields`, look for a tag and apply it recursively; the `locator-search` only affects tiddlers associated with it at any depth\n* Click on the tag in `locator-fields` and open its tiddler, then click on the \"locator sidebar\" button; the `locator-view` sidebar will show it's hierarchy\n* Navigate in the hierarchy in `locator-view` sidebar then search for a term in `locator-search`; pressing the \"search in context\" button restricting the search to the context of `locator-view` sidebar\n* If you cannot find what you are searching for, then you may want to create a new tiddler, use the \"new tiddler\" button in one of the Locator macros\n\n!! Taking good habits\n\n''To get the least chance of writing the same note you wrote earlier, look for a new tiddler before creating a note. To force yourself'', hide the \"new tiddler\" button inside the Page Toolbar and ''use the \"new tiddler\" button inside the Locator search'', so if you want to create a new tiddler you must first look for it. If you are absolutely sure that there is no tiddler yet and you need to create a new tiddler, this solution is also useful because search text defines the default name of the new tiddler.\n\n!! Let the \"Locator sidebar\" button automatically focus to the Locator sidebar\n\nFor example, the More -> Tags sidebar is currently open when we use the \"Locator sidebar\" toolbar button on one of the tiddlers, but we do not see the effect because the Locator sidebar is not visible, thus we need to modify to let button automatically open the corresponding sidebar.\n\n* If we don't know exactly, look for the sidebar tiddler's title (used as `text` parameter in the code below)\n** Open the Advanced Search -> Filter and look for the sidebar name in the `caption` field, for example `[caption[Locator]]` will result [[Locator view]]\n* Find the state tiddler that contains the sidebar tiddler's title (used as `$tiddler` parameter in the code below)\n** Open the Advanced Search -> Filter and look for `[text[Locator view]]` for example\n** Switch between Locator sidebar and another sidebar to see which state tiddler is changing, this is what we are looking for ([[$:/state/tab/sidebar--595412856]] for example)\n* Use the name of the state tiddler and the title of the sidebar in the code below and add this line to [[$:/plugins/bimlas/locator/viewtemplate/open-in-sidebar]] tiddler\n\n```\n<!-- Original code of the button... -->\n...\n<$button tooltip=\"Browse hierarchy of tag in Locator sidebar\" aria-label=\"locator sidebar\" class=<<tv-config-toolbar-class>>>\n<!-- ADD THIS LINE -->\n<$action-setfield $tiddler=\"$:/state/tab/sidebar--595412856\" text=\"Locator view\"/>\n```\n\nIf you rename the sidebar, you must also update this change! See [[this thread on Google Groups|https://groups.google.com/d/msg/tiddlywiki/xAe_fvhzoCY/UoKZc7ZZDQAJ]] for details.\n\n!! Speed up (on phones)\n\n!!! Conditional view\n\nBecause we don't look at the table of contents and search results at the same time, we can ''hide the Locator while we are using the standard search''.\n\nTo achieve this, place the Locator view in the following condition:\n\n```\n<$reveal type=\"match\" default=\"\" text={{{ [prefix[$:/state/popup/search-dropdown]] }}}>\n <<locator-view baseTitle:\"TableOfContents\">>\n</$reveal>\n```\n\n''When you open TiddlyWiki'', the search entry is in focus by default, so ''the Locator sidebar is not visible''. To fix this, change the text of [[$:/config/Search/AutoFocus]] [[hidden setting|https://tiddlywiki.com/#Hidden%20Setting%3A%20Search%20AutoFocus]] to `false`.\n\n//Select the next tab to continue.//\n"
},
"$:/plugins/bimlas/locator/README/macros": {
"title": "$:/plugins/bimlas/locator/README/macros",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "! Usage of the macros\n\n!! `locator-view`\n\nThis is ''a [[Table of Contents macro|https://tiddlywiki.com/#Table-of-Contents%20Macros%20(Examples)]] that lets you navigate the wiki'' just as you would with a file manager on the file system. The macro can be placed anywhere you want, for example put it in the sidebar.\n\n* Create a new tiddler\n* Add the [[$:/tags/SideBar]] tag\n* Add the `caption` field to change the title of the tab (\"Contents\" for example)\n* Call the macro by placing this text in the tiddler:\n\n```\n<<locator-view baseTitle:\"TableOfContents\">>\n```\n\nOptional parameters:\n\n; `fieldOfRelationship` (`tags` by default)\n: The default field which the tree is based on.\n\n; `templateOfContextItems` (`$:/plugins/bimlas/locator/field-templates/link` by default)\n: The default template to display the context items with.\n\n!! `locator-search` and `locator-fields`\n\nThe `locator-search` macro can be used in the same way as standard search, but ''you can narrow the scope of the search to the context by the fields filter'', in `locator-fields` you can `search for field values`.\n\n* Create a new tiddler\n* Add the [[$:/tags/SearchResults]] tag\n* Add the `caption` field to change the title of the tab (\"Locator\" for example)\n* Call the macro by placing this text in the tiddler:\n\n```\n<<locator-search>>\n```\n\nDo the same with `<<locator-fields>>` macro.\n\nIf you want to use `locator-fields` in the sidebar (like the sidebar -> More -> Tags tab) insted of standard search, you should also define the `searchTiddler` variable before the macro call:\n\n* Create a new tiddler\n* Add the [[$:/tags/SideBar]] tag\n* Add the `caption` field to change the title of the tab (\"Fields\" for example)\n* Call the macro by placing this text in the tiddler:\n\n```\n<$vars searchTiddler=\" \">\n <<locator-fields>>\n</$vars>\n```\n\n//Select the next tab to continue.//\n"
},
"$:/plugins/bimlas/locator/actions/add-field-value": {
"title": "$:/plugins/bimlas/locator/actions/add-field-value",
"tags": "$:/tags/Actions",
"type": "text/vnd.tiddlywiki",
"text": "\\define assign-value()\n <$action-setfield $tiddler=<<actionTiddler>> $field=<<currentField>> $value=<<currentTiddler>>/>\n\\end\n\n\\define assign-list-item()\n <$action-listops $tiddler=<<actionTiddler>> $field=<<currentField>> $subfilter=\"[all[current]]\"/>\n\\end\n\n<$list filter=\"[title<currentField>subfilter<filter-field-is-list>]\" emptyMessage=<<assign-value>> variable=\"null\">\n <<assign-list-item>>\n</$list>\n"
},
"$:/plugins/bimlas/locator/actions/add-to-history": {
"title": "$:/plugins/bimlas/locator/actions/add-to-history",
"tags": "$:/tags/Actions",
"type": "text/vnd.tiddlywiki",
"text": "<$action-listops $tiddler=<<contextState>> $field=\"history\" $subfilter=\"[all[current]]\"/>\n{{$:/plugins/bimlas/locator/actions/remove-filters}}\n"
},
"$:/plugins/bimlas/locator/actions/move-to-another-context": {
"title": "$:/plugins/bimlas/locator/actions/move-to-another-context",
"tags": "$:/tags/Actions",
"type": "text/vnd.tiddlywiki",
"text": "\\define add-action-tiddler-to-current-tiddler()\n <$tiddler tiddler={{{ [subfilter<filter-history>last[]] }}}>\n {{||$:/plugins/bimlas/locator/actions/remove-field-value}}\n </$tiddler>\n {{||$:/plugins/bimlas/locator/actions/add-field-value}}\n\\end\n\n\\define add-current-tiddler-to-action-tiddler()\n <$vars originalCurrentTiddler=<<currentTiddler>>>\n <$tiddler tiddler=<<actionTiddler>>>\n <$vars actionTiddler={{{ [subfilter<filter-history>last[]] }}}>\n {{||$:/plugins/bimlas/locator/actions/remove-field-value}}\n </$vars>\n <$vars actionTiddler=<<originalCurrentTiddler>>>\n {{||$:/plugins/bimlas/locator/actions/add-field-value}}\n </$vars>\n </$tiddler>\n </$vars>\n\\end\n\n<$list filter=\"[title<contextState>locator-direction-of-traverse<currentField>regexp[to]]\" emptyMessage=<<add-current-tiddler-to-action-tiddler>> variable=\"null\">\n <<add-action-tiddler-to-current-tiddler>>\n</$list>\n"
},
"$:/plugins/bimlas/locator/actions/remove-field-value": {
"title": "$:/plugins/bimlas/locator/actions/remove-field-value",
"tags": "$:/tags/Actions",
"type": "text/vnd.tiddlywiki",
"text": "\\define remove-value()\n <$action-setfield $tiddler=<<actionTiddler>> $field=<<currentField>> $value=\"\"/>\n\\end\n\n\\define remove-list-item()\n <$action-listops $tiddler=<<actionTiddler>> $field=<<currentField>> $subfilter=\"-[all[current]]\"/>\n\\end\n\n<$list filter=\"[title<currentField>subfilter<filter-field-is-list>]\" emptyMessage=<<remove-value>> variable=\"null\">\n <<remove-list-item>>\n</$list>\n"
},
"$:/plugins/bimlas/locator/actions/remove-filters": {
"title": "$:/plugins/bimlas/locator/actions/remove-filters",
"tags": "$:/tags/Actions",
"type": "text/vnd.tiddlywiki",
"text": "<$action-deletetiddler $tiddler=<<intersectionState>>/>\n<$action-deletetiddler $tiddler=<<differenceState>>/>\n<$action-setfield $tiddler=<<contextState>> opened-fields-filters=\"\"/>"
},
"$:/plugins/bimlas/locator/buttons/clear-search-input": {
"title": "$:/plugins/bimlas/locator/buttons/clear-search-input",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$button tooltip=\"Clear search text, show all results\" class=<<link-button-class>>>\n <$action-setfield $tiddler=\"$:/temp/search\" text=\" \"/>\n {{$:/core/images/preview-open}}\n</$button>\n"
},
"$:/plugins/bimlas/locator/buttons/collapse-history": {
"title": "$:/plugins/bimlas/locator/buttons/collapse-history",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$button tooltip=\"Collapse history\" class=<<link-button-class>>>\n <$action-listops $tiddler=<<contextState>> $field=\"history\" $filter=\"[title<contextState>each:list-item[history]last[]]\"/>\n {{$:/core/images/fold-button}}\n</$button>\n"
},
"$:/plugins/bimlas/locator/buttons/context-arrow": {
"title": "$:/plugins/bimlas/locator/buttons/context-arrow",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[title<contextState>field:invert-direction[yes]]\" emptyMessage={{$:/core/images/right-arrow}}>\n {{$:/core/images/left-arrow}}\n</$list>\n"
},
"$:/plugins/bimlas/locator/buttons/copy-filter-to-advanced-search": {
"title": "$:/plugins/bimlas/locator/buttons/copy-filter-to-advanced-search",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<!--\nSince the search term may contain characters that affect the filter, I\ndo not copy the search term, I just refer to the tiddler.\n-->\n<$wikify name=\"filter\" text=\"<<filter-search-context>> +[search{<<searchTiddler>>}]\">\n <$button tooltip=\"Continue filtering in advanced search\" class=<<link-button-class>>>\n <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<filter>>/>\n <$action-setfield $tiddler=\"$:/state/tab--1498284803\" text=\"$:/core/ui/AdvancedSearch/Filter\"/>\n <$action-navigate $to=\"$:/AdvancedSearch\"/>\n {{$:/core/images/advanced-search-button}}\n </$button>\n</$wikify>\n"
},
"$:/plugins/bimlas/locator/buttons/create-new-tiddler": {
"title": "$:/plugins/bimlas/locator/buttons/create-new-tiddler",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define add-as-list()\n <$action-listops $tiddler=\"$:/temp/bimlas/locator/new-tiddler\" $field=<<field>> $subfilter=<<__valueAsFilter__>>/>\n\\end\n\n\\define add-as-value()\n <$action-setfield $tiddler=\"$:/temp/bimlas/locator/new-tiddler\" $field=<<field>> $value={{{ [subfilter<__valueAsFilter__>] }}}/>\n\\end\n\n\\define add-field-value(valueAsFilter)\n <$list filter=\"[title<field>subfilter<filter-field-is-list>]\" emptyMessage=<<add-as-value>>>\n <<add-as-list>>\n </$list>\n\\end\n\n\\define add-filters-as-field-values()\n <$list filter=\"[title<intersectionState>indexes[]]\" variable=\"field\">\n <$list filter=\"[title<intersectionState>locator-selected-field-values<field>first[]]\">\n <<add-field-value \"[title<intersectionState>locator-selected-field-values<field>]\">>\n </$list>\n </$list>\n\\end\n\n\\define add-to-current-context()\n <$set name=\"field\" filter=<<filter-field-of-relationship>>>\n <<add-field-value \"[subfilter<filter-history>last[]]\">>\n </$set>\n\\end\n\n<$button tooltip=\"Create new tiddler in the current context\" class=<<link-button-class>>>\n <<add-filters-as-field-values>>\n <<add-to-current-context>>\n <$action-sendmessage $message=\"tm-new-tiddler\" $param=\"$:/temp/bimlas/locator/new-tiddler\" title={{{ [title<titleOfNewTiddler>] [title{$:/language/DefaultNewTiddlerTitle}] -[[]] +[first[]] }}}/>\n <$action-deletetiddler $tiddler=\"$:/temp/bimlas/locator/new-tiddler\"/>\n {{$:/core/images/new-button}}\n</$button>\n"
},
"$:/plugins/bimlas/locator/buttons/go-down-to-context": {
"title": "$:/plugins/bimlas/locator/buttons/go-down-to-context",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define node()\n <$button tooltip=\"Go to context, show chidlren of this tiddler\" class=<<link-button-class>> actions={{$:/plugins/bimlas/locator/actions/add-to-history}}>\n {{$:/plugins/bimlas/locator/buttons/context-arrow}}\n </$button>\n\\end\n\n\\define leaf()\n <$button class=<<link-button-class>>>\n {{$:/core/images/blank}}\n </$button>\n\\end\n\n\\define go-down-to-context()\n <!-- I have to use macro to use $(...)$ in filter expression -->\n <$list filter=\"[all[current]locator-enlist-children:$(currentField)$<contextState>] [title<contextState>field:allow-to-open-leaves[yes]] +[first[]]\" emptyMessage=<<leaf>> variable=\"null\"><<node>></$list>\n\\end\n\n<<go-down-to-context>>\n"
},
"$:/plugins/bimlas/locator/buttons/go-up-to-context": {
"title": "$:/plugins/bimlas/locator/buttons/go-up-to-context",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define actions()\n <$action-listops $tiddler=<<contextState>> $field=\"history\" $filter=\"[subfilter<filter-history>allbefore<currentTiddler>] [all[current]]\"/>\n {{$:/plugins/bimlas/locator/actions/remove-filters}}\n\\end\n\n<$button tooltip=\"Go to context, show chidlren of this tiddler\" class=<<link-button-class>> actions=<<actions>>>\n {{$:/plugins/bimlas/locator/buttons/context-arrow}}\n</$button>\n"
},
"$:/plugins/bimlas/locator/buttons/open-field-settings": {
"title": "$:/plugins/bimlas/locator/buttons/open-field-settings",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$button\n to=\"$:/plugins/bimlas/locator/settings/settings\"\n tooltip=\"Open field settings\"\n class=<<link-button-class>>\n>\n {{$:/core/images/options-button}}<$list filter=\"[title<contextState>!regexp[^\\$:/state/bimlas/locator/search/]]\" variable=\"null\"> Open field settings</$list>\n</$button>"
},
"$:/plugins/bimlas/locator/buttons/remove-filters-of-current-field": {
"title": "$:/plugins/bimlas/locator/buttons/remove-filters-of-current-field",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define actions()\n <$action-setfield $tiddler=<<intersectionState>> $index=<<currentField>> $value=\"\"/>\n <$action-setfield $tiddler=<<differenceState>> $index=<<currentField>> $value=\"\"/>\n <$action-listops $tiddler=<<contextState>> $field=\"opened-fields-filters\" $subfilter=\"-[<currentField>]\"/>\n <$list filter=\"[<recursiveFilteringOfCurrentFieldAvailable>regexp[yes]]\" variable=\"null\">\n <$action-setfield $tiddler=\"$:/state/bimlas/locator/search/recursive-filters/\" $index=<<currentField>> $value=\"\"/>\n </$list>\n\\end\n\n<$list filter=\"[title<intersectionState>] [title<differenceState>] +[locator-selected-field-values<currentField>first[]]\" variable=\"null\">\n <$button tooltip=\"Remove field filters\" class=<<link-button-class>> actions=<<actions>>>\n {{$:/core/images/cancel-button}}\n </$button>\n</$list>"
},
"$:/plugins/bimlas/locator/buttons/remove-filters": {
"title": "$:/plugins/bimlas/locator/buttons/remove-filters",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[title<intersectionState>] [title<differenceState>] +[locator-selected-field-values[]first[]]\" variable=\"null\">\n <$button tooltip=\"Remove field filters\" class=<<link-button-class>> actions={{$:/plugins/bimlas/locator/actions/remove-filters}}>\n {{$:/core/images/cancel-button}}\n </$button>\n</$list>"
},
"$:/plugins/bimlas/locator/buttons/search-in-context": {
"title": "$:/plugins/bimlas/locator/buttons/search-in-context",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define copy-field(sourceTiddler destinationTiddler field)\n <$set name=\"value\" tiddler=<<__sourceTiddler__>> field=<<__field__>>>\n <$action-setfield $tiddler=<<__destinationTiddler__>> $field=<<__field__>> $value=<<value>>/>\n </$set>\n\\end\n\n\\define clear-data-tiddler(tiddler)\n <$action-deletetiddler $tiddler=<<__tiddler__>>/>\n <$action-setfield $tiddler=<<__tiddler__>> type=\"application/json\"/>\n\\end\n\n\\define search-in-current-context()\n <$action-listops $tiddler=\"$:/state/bimlas/locator/search/intersection/\" $index={{{ [subfilter<filter-field-of-relationship>] }}} $subfilter=\"[subfilter<filter-history>last[]]\"/>\n <$action-listops $tiddler=\"$:/state/bimlas/locator/search/recursive-filters/\" $index={{{ [subfilter<filter-field-of-relationship>] }}} $filter=\"[subfilter<filter-history>last[]]\"/>\n\\end\n\n\\define copy-filters()\n <$macrocall $name=\"copy-field\" sourceTiddler=<<intersectionState>> destinationTiddler=\"$:/state/bimlas/locator/search/intersection/\" field=\"text\"/>\n <$macrocall $name=\"copy-field\" sourceTiddler=<<differenceState>> destinationTiddler=\"$:/state/bimlas/locator/search/difference/\" field=\"text\"/>\n\\end\n\n\\define reset-search-context()\n <$action-deletetiddler $tiddler=\"$:/state/bimlas/locator/search/context/\"/>\n <$list filter=\"[<recursiveFilteringAvailable>regexp[yes]]\" variable=\"null\">\n <$macrocall $name=\"clear-data-tiddler\" tiddler=\"$:/state/bimlas/locator/search/recursive-filters/\"/>\n </$list>\n <$macrocall $name=\"clear-data-tiddler\" tiddler=\"$:/state/bimlas/locator/search/intersection/\"/>\n <$macrocall $name=\"clear-data-tiddler\" tiddler=\"$:/state/bimlas/locator/search/difference/\"/>\n\\end\n\n<$button tooltip=\"Restrict search to this context (in full depth)\" class=<<link-button-class>>>\n <<reset-search-context>>\n <<copy-filters>>\n <<search-in-current-context>>\n {{$:/core/images/advanced-search-button}}\n</$button>\n"
},
"$:/plugins/bimlas/locator/buttons/toggle-context-settings": {
"title": "$:/plugins/bimlas/locator/buttons/toggle-context-settings",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define opened()\n <$button tooltip=\"Toggle context settings\" class=<<link-button-class additionalClasses:\"active\">>>\n <$action-setfield $tiddler=<<contextState>> $field=\"context-settings-opened\" $value=\"\"/>\n {{$:/core/images/options-button}}\n </$button>\n\\end\n\n\\define closed()\n <$button tooltip=\"Toggle context settings\" class=<<link-button-class>>>\n <$action-setfield $tiddler=<<contextState>> $field=\"context-settings-opened\" $value=\"yes\"/>\n {{$:/core/images/options-button}}\n </$button>\n\\end\n\n<$list filter=\"[title<contextState>field:context-settings-opened[yes]]\" emptyMessage=<<closed>>><<opened>></$list>"
},
"$:/plugins/bimlas/locator/edit-template/locator-references": {
"title": "$:/plugins/bimlas/locator/edit-template/locator-references",
"list-after": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"type": "text/vnd.tiddlywiki",
"text": "\\define prompt()\n The following references to this tiddler in //<<__field__>>// [[Locator field|$:/plugins/bimlas/locator/settings/settings]] will not be automatically updated:\n\\end\n\n\\define children-by-field(field)\n <$list filter=\"[title{!!draft.of}locator-enlist-children:$field$[]first[]]\" variable=\"null\">\n <$vars stateTiddler=<<qualify \"$:/state/bimlas/locator/edit/references/$field$\">> >\n\n <$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n <$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n <<prompt>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n <$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n <<prompt>>\n </$button>\n </$reveal>\n\n <$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n <$list filter=\"[title{!!draft.of}locator-enlist-children:$field$[]]\" template=\"$:/core/ui/ListItemTemplate\">\n <$link/>\n </$list>\n </$reveal>\n\n </$vars>\n </$list>\n\\end\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n <$list filter=\"[locator-enlist-relationship-fields[]] -[[tags]] -[[list]] -[[LINKS-IN-TEXT]]\" variable=\"currentField\">\n <$macrocall $name=\"children-by-field\" field=<<currentField>>/>\n </$list>\n</$reveal>"
},
"$:/plugins/bimlas/locator/field-templates/color": {
"title": "$:/plugins/bimlas/locator/field-templates/color",
"caption": "Color",
"tags": "$:/tags/bimlas/locator/field-templates",
"type": "text/vnd.tiddlywiki",
"text": "<input type=\"color\" name=\"favcolor\" value=<<currentTiddler>> disabled> <$view field=\"title\"/>"
},
"$:/plugins/bimlas/locator/field-templates/edit-fields-plus-transclusion": {
"title": "$:/plugins/bimlas/locator/field-templates/edit-fields-plus-transclusion",
"caption": "Edit fields + Transclusion",
"tags": "$:/tags/bimlas/locator/context-item-templates",
"type": "text/vnd.tiddlywiki",
"text": "\\define frame-classes() tc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$\n\n{{||$:/plugins/bimlas/locator/field-templates/link}}\n<div class=<<frame-classes>> data-tiddler-title=<<currentTiddler>>>\n <$fieldmangler>\n {{||$:/core/ui/EditTemplate/tags}}\n {{||$:/core/ui/EditTemplate/fields}}\n </$fieldmangler>\n</div>\n<$transclude mode=\"block\"/>\n<hr style=\"border-top: double\"/>"
},
"$:/plugins/bimlas/locator/field-templates/edit-fields": {
"title": "$:/plugins/bimlas/locator/field-templates/edit-fields",
"caption": "Edit fields",
"tags": "$:/tags/bimlas/locator/context-item-templates",
"type": "text/vnd.tiddlywiki",
"text": "\\define frame-classes() tc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$\n\n{{||$:/plugins/bimlas/locator/field-templates/link}}\n<div class=<<frame-classes>> data-tiddler-title=<<currentTiddler>>>\n <$fieldmangler>\n {{||$:/core/ui/EditTemplate/tags}}\n {{||$:/core/ui/EditTemplate/fields}}\n </$fieldmangler>\n</div>\n<hr style=\"border-top: double\"/>"
},
"$:/plugins/bimlas/locator/field-templates/fields-plus-transclusion": {
"title": "$:/plugins/bimlas/locator/field-templates/fields-plus-transclusion",
"caption": "Fields + Transclusion",
"tags": "$:/tags/bimlas/locator/context-item-templates",
"type": "text/vnd.tiddlywiki",
"text": "{{||$:/plugins/bimlas/locator/field-templates/link}}\n{{||$:/plugins/bimlas/locator/viewtemplate/field-list}}\n<$transclude mode=\"block\"/>\n<hr style=\"border-top: double\"/>"
},
"$:/plugins/bimlas/locator/field-templates/fields": {
"title": "$:/plugins/bimlas/locator/field-templates/fields",
"caption": "Fields",
"tags": "$:/tags/bimlas/locator/context-item-templates",
"type": "text/vnd.tiddlywiki",
"text": "{{||$:/plugins/bimlas/locator/field-templates/link}}\n{{||$:/plugins/bimlas/locator/viewtemplate/field-list}}\n<hr style=\"border-top: double\"/>"
},
"$:/plugins/bimlas/locator/field-templates/icon": {
"title": "$:/plugins/bimlas/locator/field-templates/icon",
"caption": "Icon",
"tags": "$:/tags/bimlas/locator/field-templates",
"type": "text/vnd.tiddlywiki",
"text": "<button class=\"tc-btn-invisible\" disabled><$transclude><<currentTiddler>></$transclude></button> {{||$:/plugins/bimlas/locator/field-templates/link}}"
},
"$:/plugins/bimlas/locator/field-templates/link": {
"title": "$:/plugins/bimlas/locator/field-templates/link",
"caption": "Link",
"tags": "$:/tags/bimlas/locator/field-templates $:/tags/bimlas/locator/context-item-templates",
"type": "text/vnd.tiddlywiki",
"text": "<$link to=<<currentTiddler>>>\n <$transclude field=\"caption\"><$view field=\"title\"/></$transclude>\n</$link>"
},
"$:/plugins/bimlas/locator/field-templates/tag": {
"title": "$:/plugins/bimlas/locator/field-templates/tag",
"caption": "Tag",
"tags": "$:/tags/bimlas/locator/field-templates",
"type": "text/vnd.tiddlywiki",
"text": "<<tag>>"
},
"$:/plugins/bimlas/locator/field-templates/text": {
"title": "$:/plugins/bimlas/locator/field-templates/text",
"caption": "Text",
"tags": "$:/tags/bimlas/locator/field-templates",
"type": "text/vnd.tiddlywiki",
"text": "<$view field=\"title\"/>"
},
"$:/plugins/bimlas/locator/field-templates/transclusion": {
"title": "$:/plugins/bimlas/locator/field-templates/transclusion",
"caption": "Transclusion",
"tags": "$:/tags/bimlas/locator/context-item-templates",
"type": "text/vnd.tiddlywiki",
"text": "{{||$:/plugins/bimlas/locator/field-templates/link}}\n<br/>\n<$transclude mode=\"block\"/>\n<hr style=\"border-top: double\"/>"
},
"$:/plugins/bimlas/locator/macros/locator-fields": {
"title": "$:/plugins/bimlas/locator/macros/locator-fields",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define locator-fields()\n <!-- Hide internal macros, do not make them globally available -->\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/plugins/bimlas/locator/macros/]]\">\n <$vars\n contextState=\"$:/state/bimlas/locator/search/context/\"\n intersectionState=\"$:/state/bimlas/locator/search/intersection/\"\n differenceState=\"$:/state/bimlas/locator/search/difference/\"\n recursiveFilteringAvailable=\"yes\"\n >\n\n {{$:/plugins/bimlas/locator/templates/search-toolbar}} {{$:/plugins/bimlas/locator/buttons/remove-filters}}\n\n <p><$checkbox tiddler=<<contextState>> field=\"limit-to-fields-of-filtered-tiddlers\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> Limit to fields of filtered tiddlers</$checkbox></p>\n\n <$list filter=\"[subfilter<filter-selected-field-values>first[]]\" emptyMessage=\"\"\"<$list filter=\"0\" variable=\"resultCount\" template=\"$:/language/Search/Matches\"/>\"\"\">\n <$list filter=\"[subfilter<filter-search-context>count[]]\" variable=\"resultCount\" template=\"$:/language/Search/Matches\"/>\n </$list>\n\n <!-- searchTiddler variable does not available in transcluded tiddlers by default -->\n <$set name=\"filterContextItems\" filter=\"[<contextState>field:limit-to-fields-of-filtered-tiddlers[no]]\" value=\"[!is[system]]\" emptyValue=<<filter-search-context>>>\n <$vars searchedFieldValue={{$(searchTiddler)$}}>\n {{$:/plugins/bimlas/locator/templates/field-names}}\n </$vars>\n </$set>\n\n <$list filter=\"[subfilter<filter-selected-field-values>first[]]\">\n <$list filter=\"[subfilter<filter-search-context>limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n </$list>\n\n </$vars>\n </$importvariables>\n\\end\n"
},
"$:/plugins/bimlas/locator/macros/locator-search": {
"title": "$:/plugins/bimlas/locator/macros/locator-search",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define locator-search()\n <!-- Hide internal macros, do not make them globally available -->\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/plugins/bimlas/locator/macros/]]\">\n <$vars\n contextState=\"$:/state/bimlas/locator/search/context/\"\n intersectionState=\"$:/state/bimlas/locator/search/intersection/\"\n differenceState=\"$:/state/bimlas/locator/search/difference/\"\n filterContextItems=\"[subfilter<filter-search-context>search{$(searchTiddler)$}]\"\n recursiveFilteringAvailable=\"yes\"\n >\n\n {{$:/plugins/bimlas/locator/templates/search-toolbar}}\n\n <$list filter=\"[subfilter<filterContextItems>count[]]\" variable=\"resultCount\" template=\"$:/language/Search/Matches\"/>\n\n {{$:/plugins/bimlas/locator/templates/fields-filter}}\n\n //<small>{{$:/language/Search/Matches/Title}}</small>//\n\n <$list filter=\"[subfilter<filterContextItems>search:title{$(searchTiddler)$}limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n //<small>{{$:/language/Search/Matches/All}}</small>//\n\n <$list filter=\"[subfilter<filterContextItems>limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n </$vars>\n </$importvariables>\n\\end\n"
},
"$:/plugins/bimlas/locator/macros/locator-view": {
"title": "$:/plugins/bimlas/locator/macros/locator-view",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define locator-view(baseTitle fieldOfRelationship:\"tags\" templateOfContextItems:\"$:/plugins/bimlas/locator/field-templates/link\")\n <!-- Hide internal macros, do not make them globally available -->\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/plugins/bimlas/locator/macros/]]\">\n <$vars\n contextState=\"$:/state/bimlas/locator/view/context/$(currentTiddler)$\"\n intersectionState=\"$:/state/bimlas/locator/view/intersection/$(currentTiddler)$\"\n differenceState=\"$:/state/bimlas/locator/view/difference/$(currentTiddler)$\"\n defaultFieldOfRelationship=<<__fieldOfRelationship__>>\n >\n <!-- I have to create them nested because internal variables use external ones -->\n <$vars currentField={{{ [subfilter<filter-field-of-relationship>] }}}>\n <$vars filterContextItems=<<filter-view-context>>>\n <div class=\"tc-table-of-contents\">\n\n {{$:/plugins/bimlas/locator/templates/history}}\n\n ---\n\n {{$:/plugins/bimlas/locator/templates/context-settings}}\n <div class=\"bimlas-locator right\">\n {{||$:/plugins/bimlas/locator/templates/view-toolbar}}\n </div>\n {{$:/plugins/bimlas/locator/templates/fields-filter}}\n <ol class=\"bimlas-locator\">\n <$list filter=\"[subfilter<filter-field-of-relationship>regexp[^LINKS-IN-TEXT$]]\" emptyMessage={{$:/plugins/bimlas/locator/templates/list-of-context-items}}>\n {{||$:/plugins/bimlas/locator/templates/list-of-links-in-text}}\n </$list>\n </ol>\n\n </div>\n </$vars>\n </$vars>\n </$vars>\n </$importvariables>\n\\end\n"
},
"$:/plugins/bimlas/locator/macros/css-classes": {
"title": "$:/plugins/bimlas/locator/macros/css-classes",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define link-button-class(additionalClasses) tc-btn-invisible tc-tiddlylink bimlas-locator $additionalClasses$\n\\define menu-list-item-class() tc-menu-list-item bimlas-locator"
},
"$:/plugins/bimlas/locator/macros/filters": {
"title": "$:/plugins/bimlas/locator/macros/filters",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define filter-history() [<__baseTitle__>] [title<contextState>each:list-item[history]] -[[]]\n\\define filter-selected-field-values() [title<intersectionState>] [title<differenceState>] +[locator-selected-field-values<currentField>]\n\\define filter-field-is-list() [addprefix[$:/config/bimlas/locator/fields/]field:field-type[list]]\n\\define filter-unfiltered-view-context-items() [subfilter<filter-history>last[]locator-enlist-children:$(currentField)$<contextState>!has[draft.of]]\n\\define filter-view-context() [subfilter<filter-history>last[]locator-enlist-children:$(currentField)$<contextState>!has[draft.of]locator-fields-filter<intersectionState>!locator-fields-filter<differenceState>]\n\\define filter-search-context() [!is[system]locator-fields-filter:recursive[$(intersectionState)$]!locator-fields-filter:recursive[$(differenceState)$]]\n\\define filter-field-of-relationship() [title<contextState>get[field-of-relationship]] [<defaultFieldOfRelationship>] +[first[]]\n\n<!--\n I know that `filter-view-context` uses a code duplication of\n `filter-unfiltered-view-context-items`, but I have to do this way, becuse\n $(variable)$ works only with variables defined in direct parent macro, thus\n I cannot add another level to call chain\n-->"
},
"$:/plugins/bimlas/locator/macros/javascript-filters.js": {
"title": "$:/plugins/bimlas/locator/macros/javascript-filters.js",
"text": "/*\\\ntitle: $:/plugins/bimlas/locator/macros/javascript-filters.js\ntype: application/javascript\nmodule-type: filteroperator\n\nSpecial filters used by Locator\n\n\\*/\n(function() {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: true */\n\t\"use strict\";\n\n\tfunction getFieldDefinition(options,field) {\n\t\tvar fieldOptionsTiddler = \"$:/config/bimlas/locator/fields/\" + field;\n\n\t\treturn options.wiki.getCacheForTiddler(fieldOptionsTiddler,\"fieldListingOperator\",function() {\n\t\t\tvar fieldOptions = options.wiki.getTiddler(fieldOptionsTiddler) || {fields: {}};\n\t\t\tvar filterOperators = options.wiki.getFilterOperators();\n\t\t\tvar fieldDefinitions = {\n\t\t\t\t\"value\": {\n\t\t\t\t\tfieldType: \"value\",\n\t\t\t\t\tdirection: fieldOptions.fields[\"field-direction\"],\n\t\t\t\t\tenlistChildren: {\n\t\t\t\t\t\t\"to\": function(title,input,prefix) {\n\t\t\t\t\t\t\treturn filterOperators[\"field\"](input,{operand: title,prefix: prefix,suffix: field},options);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"from\": function(title,unusedInput,unusedPrefix) {\n\t\t\t\t\t\t\treturn (options.wiki.getTiddler(title) || {fields: {}}).fields[field] || []\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"list\": {\n\t\t\t\t\tfieldType: \"list\",\n\t\t\t\t\tdirection: fieldOptions.fields[\"field-direction\"],\n\t\t\t\t\tenlistChildren: {\n\t\t\t\t\t\t\"to\": function(title,input,prefix) {\n\t\t\t\t\t\t\treturn filterOperators[\"contains\"](input,{operand: title,prefix: prefix,suffix: field},options);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"from\": function(title,unusedInput,unusedPrefix) {\n\t\t\t\t\t\t\treturn options.wiki.getTiddlerList(title,field) || [];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar linksInTextDefinition = {\n\t\t\t\tfieldType: \"value\",\n\t\t\t\tdirection: fieldOptions.fields[\"field-direction\"],\n\t\t\t\tenlistChildren: {\n\t\t\t\t\t\"to\": function(title,unusedInput,unusedPrefix) {\n\t\t\t\t\t\treturn options.wiki.getTiddlerBacklinks(title);\n\t\t\t\t\t},\n\t\t\t\t\t\"from\": function(title,unusedInput,unusedPrefix) {\n\t\t\t\t\t\treturn options.wiki.getTiddlerLinks(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn field === \"LINKS-IN-TEXT\"\n\t\t\t\t? linksInTextDefinition\n\t\t\t\t: fieldDefinitions[fieldOptions.fields[\"field-type\"] || \"value\"];\n\t\t});\n\t}\n\n\tfunction getActiveFilters(options,filterState) {\n\t\treturn options.wiki.getCacheForTiddler(filterState,\"activeFilters\",function() {\n\t\t\tvar filteredFields = options.wiki.getTiddlerDataCached(filterState,{});\n\t\t\tvar results = {};\n\n\t\t\t$tw.utils.each(filteredFields,function(valuesAsString,field) {\n\t\t\t\tvar values = $tw.utils.parseStringArray(valuesAsString) || [];\n\t\t\t\tif(values.length) {\n\t\t\t\t\tresults[field] = values;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn results;\n\t\t});\n\t}\n\n\tfunction applyFieldsFilters(source,options,filterState,filterFunc,prefix) {\n\t\tvar activeFilters = getActiveFilters(options,filterState);\n\t\tvar results = source;\n\n\t\tif(!Object.keys(activeFilters).length) return results;\n\n\t\t$tw.utils.each(activeFilters,function(values,field) {\n\t\t\t$tw.utils.each(values,function(value) {\n\t\t\t\tif(value === \"ANY-VALUE\") {\n\t\t\t\t\tvar filterOperators = options.wiki.getFilterOperators();\n\t\t\t\t\tresults = filterOperators[\"has\"](results,{operand: field,prefix: prefix},options);\n\t\t\t\t} else {\n\t\t\t\t\tresults = filterFunc(results,field,value,prefix);\n\t\t\t\t}\n\t\t\t\tresults = options.wiki.makeTiddlerIterator(results);\n\t\t\t});\n\t\t});\n\n\t\treturn results;\n\t}\n\n\tfunction getDirectionOfTraverse(options,contextState,fieldOfRelationship) {\n\t\tvar direction = getFieldDefinition(options,fieldOfRelationship).direction;\n\n\t\tif(isDirectionInverted(options,contextState)) {\n\t\t\tdirection = invertDirection(direction);\n\t\t}\n\n\t\treturn direction;\n\t}\n\n\tfunction isDirectionInverted(options,contextState) {\n\t\tvar contextStateTiddler = options.wiki.getTiddler(contextState) || {fields: []};\n\t\treturn contextStateTiddler.fields[\"invert-direction\"] === \"yes\"\n\t}\n\n\tfunction invertDirection(direction) {\n\t\treturn [\"from\",\"to\"][(direction === \"from\") + 0];\n\t}\n\n\tfunction enlistChildren(options,parentTitle,fieldOfRelationship,directionOfTraverse) {\n\t\treturn options.wiki.getGlobalCache(\"bimlas-locator-enlist-children-\" + parentTitle + \"-\" + fieldOfRelationship + \"-\" + directionOfTraverse, function() {\n\t\t\tvar fieldDefinition = getFieldDefinition(options, fieldOfRelationship);\n\t\t\tvar allTiddlers = options.wiki.makeTiddlerIterator(options.wiki.getTiddlers());\n\t\t\treturn fieldDefinition.enlistChildren[directionOfTraverse](parentTitle,allTiddlers);\n\t\t});\n\t}\n\n\t/*\n\tFilter titles matching to Locator fields filter\n\n\tInput: list of tiddlers\n\tParam: filterState\n\tPrefix: \"!\" to exclude matching tiddlers\n\tSuffix: \"recusive\" enables recursive filtering\n\t*/\n\texports[\"locator-fields-filter\"] = function(source,operator,options) {\n\t\tvar results = source;\n\t\tvar activeRecursiveFilters = getActiveFilters(options,\"$:/state/bimlas/locator/search/recursive-filters/\");\n\n\t\tif(operator.suffix === \"recursive\") {\n\t\t\tresults = applyFieldsFilters(results,options,operator.operand,recursiveFilterFunc,operator.prefix);\n\t\t} else {\n\t\t\tresults = applyFieldsFilters(results,options,operator.operand,directFilterFunc,operator.prefix);\n\t\t}\n\n\t\treturn results;\n\n\t\tfunction directFilterFunc(input,field,value,prefix) {\n\t\t\tvar fieldDefinition = getFieldDefinition(options,field);\n\t\t\treturn fieldDefinition.enlistChildren[\"to\"](value,input,prefix);\n\t\t}\n\n\t\tfunction recursiveFilterFunc(input,field,fieldValue,prefix) {\n\t\t\tvar isRecursiveFilteringActive = $tw.utils.hop(activeRecursiveFilters,field) && (activeRecursiveFilters[field].indexOf(fieldValue) >= 0);\n\t\t\tif(!isRecursiveFilteringActive) {\n\t\t\t\treturn directFilterFunc(input,field,fieldValue,prefix);\n\t\t\t}\n\n\t\t\tvar fieldDirection = getFieldDefinition(options,field).direction;\n\t\t\tvar children = [];\n\t\t\tcollectChildrenRecursively(fieldValue);\n\t\t\tvar compareFunc = (prefix !== \"!\")\n\t\t\t\t? function(index) { return index >= 0 }\n\t\t\t\t: function(index) { return index < 0 };\n\t\t\tvar results = [];\n\n\t\t\tinput(function(tiddler,title) {\n\t\t\t\tif(compareFunc(children.indexOf(title))) {\n\t\t\t\t\tresults = $tw.utils.pushTop(results, title);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn results;\n\n\t\t\tfunction collectChildrenRecursively(parent) {\n\t\t\t\t$tw.utils.each(enlistChildren(options,parent,field,fieldDirection),function(child) {\n\t\t\t\t\tif(children.indexOf(child) < 0) {\n\t\t\t\t\t\t$tw.utils.pushTop(children, child);\n\t\t\t\t\t\t$tw.utils.pushTop(children, collectChildrenRecursively(child));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\t/*\n\tFilter fields that are not disabled in Locator field options\n\n\tInput: list of fields\n\tParam (optional): if called from toggleable fields filter (`locator-view` and `locator-search`), set to \"nested\"\n\t*/\n\texports[\"locator-enabled-fields\"] = function(source,operator,options) {\n\t\tvar typeOfFieldsFilter = operator.operand || \"regular\";\n\t\tvar excludedFields = options.wiki.filterTiddlers(\"[all[tiddlers+shadows]field:hide-in-\" + typeOfFieldsFilter + \"-fields-filter[yes]removeprefix[$:/config/bimlas/locator/fields/]]\") || [];\n\t\tvar results = [];\n\n\t\tsource(function(tiddler,title) {\n\t\t\tif(excludedFields.indexOf(title) < 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\n\t\treturn results;\n\t};\n\n\t/*\n\tList fields which can be used to build tree (\"tags\" for example)\n\n\tInput: none\n\tParam (optional): field to check if it's a relationship field\n\t*/\n\texports[\"locator-enlist-relationship-fields\"] = function(source,operator,options) {\n\t\tvar relationshipFields = options.wiki.getGlobalCache(\"bimlas-locator-enlist-relationship-fields\",function() {\n\t\t\treturn options.wiki.filterTiddlers(\"[all[tiddlers+shadows]prefix[$:/config/bimlas/locator/fields/]has[field-direction]removeprefix[$:/config/bimlas/locator/fields/]]\");\n\t\t});\n\n\t\tif(operator.operand) {\n\t\t\treturn relationshipFields.indexOf(operator.operand) >= 0\n\t\t\t\t? [operator.operand]\n\t\t\t\t: [];\n\t\t}\n\n\t\treturn relationshipFields;\n\t};\n\n\t/*\n\tList field values according to Locator field settings\n\n\tInput: list of tiddlers\n\tParam: field\n\t*/\n\texports[\"locator-enlist-field-values\"] = function(source,operator,options) {\n\t\tvar fieldDefinition = getFieldDefinition(options,operator.operand);\n\t\tvar results = [];\n\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler) return;\n\n\t\t\tvar value = fieldDefinition.enlistChildren[\"from\"](title);\n\n\t\t\tif(!value) return;\n\n\t\t\tresults = $tw.utils.pushTop(results,value);\n\t\t});\n\n\t\treturn results;\n\t};\n\n\t/*\n\tList of active field filters\n\n\tInput: filterState\n\tParam (optional): field\n\t*/\n\texports[\"locator-selected-field-values\"] = function(source,operator,options) {\n\t\tvar activeFilters = {};\n\n\t\tsource(function(tiddler,title) {\n\t\t\t$tw.utils.each(getActiveFilters(options,title),function(value,key) {\n\t\t\t\tactiveFilters[key] = $tw.utils.pushTop(activeFilters[key] || [],value);\n\t\t\t});\n\t\t});\n\n\t\tif(!Object.keys(activeFilters).length) return [];\n\n\t\treturn operator.operand\n\t\t\t? activeFilters[operator.operand] || []\n\t\t\t: [\"TODO: Join active filter values (array of arrays)\"];\n\t};\n\n\t/*\n\tList of active field names\n\n\tInput: filterState\n\tParam (optional): none\n\t*/\n\texports[\"locator-selected-field-names\"] = function(source,operator,options) {\n\t\tvar fieldNames = [];\n\n\t\tsource(function(tiddler,title) {\n\t\t\tfieldNames = $tw.utils.pushTop(fieldNames,Object.keys(getActiveFilters(options,title)));\n\t\t});\n\n\t\treturn fieldNames;\n\t};\n\n\t/*\n\tList children of input elements based on selected relationship field\n\n\tInput: parent tiddlers\n\tParam (optional): contextState\n\tSuffix: field of relationship\n\t*/\n\texports[\"locator-enlist-children\"] = function(source,operator,options) {\n\t\tvar fieldOfRelationship = operator.suffix;\n\t\tvar directionOfTraverse = getDirectionOfTraverse(options,operator.operand,fieldOfRelationship);\n\t\tvar results = [];\n\n\t\tsource(function(tiddler,title) {\n\t\t\tresults = $tw.utils.pushTop(results, enlistChildren(options,title,fieldOfRelationship,directionOfTraverse));\n\t\t\tresults = options.wiki.sortByList(results,title);\n\t\t});\n\n\t\treturn results;\n\t};\n\n\t/*\n\tGet direction of traverse: field direction + optional invert direction\n\n\tInput: contextState\n\tParam: field of relationship\n\t*/\n\texports[\"locator-direction-of-traverse\"] = function(source,operator,options) {\n\t\tvar results = [];\n\n\t\tsource(function(tiddler,title) {\n\t\t\tresults = [getDirectionOfTraverse(options,title,operator.operand)];\n\t\t});\n\n\t\treturn results;\n\t};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/plugins/bimlas/locator/macros/template-macros": {
"title": "$:/plugins/bimlas/locator/macros/template-macros",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define droppable-menu-list-item(content actions)\n <$droppable actions=<<__actions__>>>\n <div class=\"tc-droppable-placeholder\" style=\"display: block\">\n <<__content__>>\n </div>\n </$droppable>\n\\end"
},
"$:/config/bimlas/locator/fields/LINKS-IN-TEXT": {
"title": "$:/config/bimlas/locator/fields/LINKS-IN-TEXT",
"tags": "",
"type": "text/vnd.tiddlywiki",
"field-direction": "from",
"text": "$:/plugins/bimlas/locator/field-templates/link"
},
"$:/config/bimlas/locator/fields/bag": {
"title": "$:/config/bimlas/locator/fields/bag",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes"
},
"$:/config/bimlas/locator/fields/caption": {
"title": "$:/config/bimlas/locator/fields/caption",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes"
},
"$:/config/bimlas/locator/fields/color": {
"title": "$:/config/bimlas/locator/fields/color",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "$:/plugins/bimlas/locator/field-templates/color"
},
"$:/config/bimlas/locator/fields/created": {
"title": "$:/config/bimlas/locator/fields/created",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes"
},
"$:/config/bimlas/locator/fields/draft.of": {
"title": "$:/config/bimlas/locator/fields/draft.of",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes"
},
"$:/config/bimlas/locator/fields/draft.title": {
"title": "$:/config/bimlas/locator/fields/draft.title",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes"
},
"$:/config/bimlas/locator/fields/icon": {
"title": "$:/config/bimlas/locator/fields/icon",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "$:/plugins/bimlas/locator/field-templates/icon"
},
"$:/config/bimlas/locator/fields/list-after": {
"title": "$:/config/bimlas/locator/fields/list-after",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes",
"text": "$:/plugins/bimlas/locator/field-templates/link"
},
"$:/config/bimlas/locator/fields/list-before": {
"title": "$:/config/bimlas/locator/fields/list-before",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes",
"text": "$:/plugins/bimlas/locator/field-templates/link"
},
"$:/config/bimlas/locator/fields/list": {
"title": "$:/config/bimlas/locator/fields/list",
"tags": "",
"type": "text/vnd.tiddlywiki",
"field-type": "list",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes",
"text": "$:/plugins/bimlas/locator/field-templates/link"
},
"$:/config/bimlas/locator/fields/modified": {
"title": "$:/config/bimlas/locator/fields/modified",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes"
},
"$:/config/bimlas/locator/fields/revision": {
"title": "$:/config/bimlas/locator/fields/revision",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes"
},
"$:/config/bimlas/locator/fields/tags": {
"title": "$:/config/bimlas/locator/fields/tags",
"tags": "",
"type": "text/vnd.tiddlywiki",
"field-type": "list",
"field-direction": "to",
"text": "$:/plugins/bimlas/locator/field-templates/tag"
},
"$:/config/bimlas/locator/fields/text": {
"title": "$:/config/bimlas/locator/fields/text",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes"
},
"$:/config/bimlas/locator/fields/title": {
"title": "$:/config/bimlas/locator/fields/title",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes",
"hide-in-regular-fields-filter": "yes",
"text": "$:/plugins/bimlas/locator/field-templates/link"
},
"$:/config/bimlas/locator/fields/type": {
"title": "$:/config/bimlas/locator/fields/type",
"tags": "",
"type": "text/vnd.tiddlywiki",
"hide-in-nested-fields-filter": "yes"
},
"$:/plugins/bimlas/locator/settings/settings": {
"title": "$:/plugins/bimlas/locator/settings/settings",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define show-in-fields()\n <$select field=\"hide-in-nested-fields-filter\" default=\"\">\n <option value=\"\">Show</option>\n <option value=\"yes\">Hide</option>\n </$select> in nested filter (`locator-view`, `locator-search`)<br/>\n <$select field=\"hide-in-regular-fields-filter\" default=\"\">\n <option value=\"\">Show</option>\n <option value=\"yes\">Hide</option>\n </$select> in regular filter (`locator-fields` and tiddler info)\n\\end\n\n\\define field-type()\n <$select field=\"field-type\" default=\"\">\n <option value=\"\">Value</option>\n <option value=\"list\">List</option>\n </$select>\n\\end\n\n\\define field-direction()\n <$select field=\"field-direction\" default=\"\">\n <option value=\"\">No</option>\n <option value=\"to\">Yes</option>\n <!--\n I blocked it because a tree with children on top is difficult to handle:\n\n For example, there is a tiddler named \"Father\" which has \"Kid\" in the \"children\" field\n\n If you want to filter tiddlers by field values (for example, in the fields filter),\n \"Father\" will be listed among those tiddlers that have \"Kid\" in the \"children\" field.\n In fact, we wanted to children of \"Kid\".\n\n Filtering \"Kid\" in the \"Fields\" search tab will list the tiddlers that have \"Kid\" in\n their \"children\" field (for example, \"Father\"). If you turn on recursive filtering,\n it will list all tiddlers starting with \"Kid\" (so \"Father\" will not be listed).\n\n The \"Create tiddler in context\" button also has to be aware of the direction of the\n field, which also complicates the code.\n\n If you do make this option available, remember to tell the user that when renaming a\n tiddler, he must rewrite the field values that refer to the current tiddler. If you\n want to rewrite it automatically, make sure it works properly with the Relink plugin\n (does not adding the new name more than once to the field).\n -->\n <!-- <option value=\"from\">From</option> -->\n </$select>\n\\end\n\n\\define template()\n <$select field=\"text\" default=\"$:/plugins/bimlas/locator/field-templates/text\">\n <$list filter=\"[all[tiddlers+shadows]tag[$:/tags/bimlas/locator/field-templates]]\">\n <option value=<<currentTiddler>>><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></option>\n </$list>\n </$select>\n <$transclude/>\n\\end\n\n\\define settings(field)\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/plugins/bimlas/locator/macros/]]\">\n\n <h3><$link to=\"$:/config/bimlas/locator/fields/$field$\"><$text text=<<__field__>>/></$link></h3>\n\n <div class=\"tc-control-panel\">\n <table>\n <tbody>\n <tr>\n <td>Description</td>\n <td>//{{$:/language/Docs/Fields/$field$}}//</td>\n </tr>\n <tr>\n <td>Show in fields filter</td>\n <td>\n <<show-in-fields>>\n </td>\n </tr>\n <tr>\n <td>Field type</td>\n <td>\n <<field-type>>\n <p>//Does the field contain a single value (for example `Franz Kafka`) or a list of values (`[[Franz Kafka]] [[Dostojevskij]]`)?//</p>\n </td>\n </tr>\n <tr>\n <td>Does the field represent a tree?</td>\n <td>\n <<field-direction>>\n <p>//If the field contains the title(s) of other tiddler(s) (like \"tags\"), set it to \"Yes\".//</p>\n </td>\n </tr>\n <tr>\n <td>Template</td>\n <td>\n <<template>>\n <p>//The template to display in the field filter.//</p>\n <p>//You can create your own field template tiddlers by adding the// <<tag \"$:/tags/bimlas/locator/field-templates\">> //tag to them (click on this tag pill for examples).//</p>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </$importvariables>\n\\end\n\n\\define option()\n <option value=<<currentTiddler>>>\n <$view field=\"title\"/>\n <$list filter=\"[subfilter<settingsTiddler>is[tiddler]] [subfilter<settingsTiddler>is[shadow]] +[first[]]\">~</$list>\n <$list filter=\"[subfilter<settingsTiddler>is[tiddler]]\">*</$list>\n </option>\n\\end\n\n\\define settingsTiddler() [title<currentTiddler>addprefix[$:/config/bimlas/locator/fields/]]\n\nSelect field to edit its settings:\n<$select tiddler=\"$:/temp/bimlas/locator/settings-of-field\">\n <optgroup label=\"Fields of regular tiddlers\">\n <$list filter=\"[!is[system]fields[]sort[]]\">\n <<option>>\n </$list>\n </optgroup>\n <optgroup label=\"Fields of system tiddlers\">\n <$list filter=\"[all[tiddlers+shadows]is[system]fields[]] -[!is[system]fields[]] +[sort[]]\">\n <<option>>\n </$list>\n </optgroup>\n</$select>\n\n* //`~`: Has custom settings//\n* //`*`: Settings modified by user//\n\nTo set up a new field, first add it to at least one tiddler.\n\n<p>//You can create your own context item template tiddlers by adding the// <<tag \"$:/tags/bimlas/locator/context-item-templates\">> //tag to them (click on this tag pill for examples).//</p>\n\n<$list filter=\"[title{$:/temp/bimlas/locator/settings-of-field}] -[[]]\">\n <$list filter=<<settingsTiddler>>>\n <$macrocall $name=\"settings\" field={{$:/temp/bimlas/locator/settings-of-field}}/>\n </$list>\n</$list>"
},
"$:/plugins/bimlas/locator/stylesheet": {
"title": "$:/plugins/bimlas/locator/stylesheet",
"tags": "$:/tags/Stylesheet",
"type": "text/vnd.tiddlywiki",
"text": ".tc-tiddler-frame.bimlas-locator-explanation {\n max-width: 400px;\n}\n.bimlas-locator-explanation svg {\n width: 1rem;\n height: 1rem;\n}\n.tc-drop-down button.bimlas-locator {\n width: auto;\n padding: 0;\n display: inline-block;\n background-color: inherit;\n}\nol.bimlas-locator {\n list-style-type: none;\n margin: 0;\n padding-left: 0;\n}\nol.bimlas-locator ol {\n margin-left: 0.75em;\n padding-left: 0.3em;\n border-left: 1px dashed;\n}\nli.toc-item.bimlas-locator, .tc-menu-list-item.bimlas-locator {\n margin-top: 3px;\n margin-bottom: 0;\n}\n.tc-menu-list-item.bimlas-locator > .tc-droppable {\n display: inline-block;\n}\n.tc-block-dropdown.tc-search-drop-down .bimlas-locator a {\n padding: 0;\n}\n.tc-block-dropdown.tc-search-drop-down .bimlas-locator a:hover {\n background-color: initial;\n}\nbutton.bimlas-locator svg {\n margin: 0 0.25em;\n}\nbutton.bimlas-locator.active svg {\n fill: <<colour dirty-indicator>>;\n}\n.bimlas-locator.right {\n float: right;\n margin-right: 1em;\n}\n.bimlas-locator.context-settings {\n border-width: 1px;\n border-style: dashed;\n padding: 0.5em;\n}"
},
"$:/plugins/bimlas/locator/templates/context-item": {
"title": "$:/plugins/bimlas/locator/templates/context-item",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<li class=\"toc-item\">\n {{||$:/plugins/bimlas/locator/buttons/go-down-to-context}}\n <$list filter=\"[title<contextState>get[template-of-context-items]] [title<__templateOfContextItems__>] -[[]] +[first[]]\" variable=\"template\">\n <$transclude tiddler=<<template>>/>\n </$list>\n</li>"
},
"$:/plugins/bimlas/locator/templates/context-settings": {
"title": "$:/plugins/bimlas/locator/templates/context-settings",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define field-of-relationship()\n Tree is based on field:<br/>\n <$select tiddler=<<contextState>> field=\"field-of-relationship\" default=<<defaultFieldOfRelationship>>>\n <$list filter=\"[locator-enlist-relationship-fields[]]\" variable=\"currentField\">\n <option value=<<currentField>>>\n <$list filter=\"[subfilter<filter-unfiltered-view-context-items>count[]]\" variable=\"count\">\n (<<count>>) <<currentField>>\n </$list>\n </option>\n </$list>\n </$select>\n\\end\n\n\\define template-of-context-items()\n Template of context items:<br/>\n <$select tiddler=<<contextState>> field=\"template-of-context-items\" default=<<__templateOfContextItems__>>>\n <$list filter=\"[all[tiddlers+shadows]tag[$:/tags/bimlas/locator/context-item-templates]]\">\n <option value=<<currentTiddler>>>\n <$transclude field=\"caption\"><$view field=\"title\"/></$transclude>\n </option>\n </$list>\n </$select>\n\\end\n\n<$list filter=\"[title<contextState>field:context-settings-opened[yes]]\">\n <div class=\"bimlas-locator context-settings\">\n <<field-of-relationship>><br/>\n <<template-of-context-items>><br/>\n <$checkbox\n tiddler=<<contextState>>\n field=\"invert-direction\"\n checked=\"yes\"\n unchecked=\"no\"\n default=\"no\"\n >\n Invert direction\n </$checkbox><br/>\n <$checkbox\n tiddler=<<contextState>>\n field=\"allow-to-open-leaves\"\n checked=\"yes\"\n unchecked=\"no\"\n default=\"no\"\n >\n Allow to open leaves\n </$checkbox><br/>\n {{$:/plugins/bimlas/locator/buttons/open-field-settings}}\n </div>\n</$list>\n"
},
"$:/plugins/bimlas/locator/templates/field-names": {
"title": "$:/plugins/bimlas/locator/templates/field-names",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define close-actions()\n <$action-listops $tiddler=<<contextState>> $field=\"opened-fields-filters\" $subfilter=\"-[<currentField>]\"/>\n\\end\n\n\\define open-actions()\n <$action-listops $tiddler=<<contextState>> $field=\"opened-fields-filters\" $subfilter=\"[<currentField>]\"/>\n\\end\n\n\\define closed()\n <$button class=<<fieldButtonClass>> actions=<<open-actions>>>\n {{$:/core/images/down-arrow}} <<currentField>>\n </$button>\n {{$:/plugins/bimlas/locator/buttons/remove-filters-of-current-field}}\n\\end\n\n\\define opened()\n <$button class=<<fieldButtonClass>> actions=<<close-actions>>>\n {{$:/core/images/up-arrow}} <<currentField>>\n </$button>\n {{$:/plugins/bimlas/locator/buttons/remove-filters-of-current-field}}\n {{$:/plugins/bimlas/locator/templates/field-values}}\n\\end\n\n\\define field-names() [title<intersectionState>] [title<differenceState>] +[locator-selected-field-names[]] [subfilter<filterContextItems>fields[]locator-enabled-fields<typeOfFieldsFilter>] +[sort[]]\n\\define has-field-value-to-list() [subfilter<filterContextItems>has<currentField>search:$(currentField)$<searchedFieldValue>] [subfilter<filter-selected-field-values>] +[first[]]\n\n<ol class=\"bimlas-locator\">\n <$list filter=<<field-names>> variable=\"currentField\">\n <$list filter=<<has-field-value-to-list>> variable=\"null\">\n <$set name=\"recursiveFilteringOfCurrentFieldAvailable\" filter=\"[<recursiveFilteringAvailable>regexp[yes]] [locator-enlist-relationship-fields<currentField>] +[count[]regexp[2]]\" value=\"yes\" emptyValue=\"no\">\n <$set name=\"fieldButtonClass\" filter=\"[subfilter<filter-selected-field-values>first[]]\" value=<<link-button-class additionalClasses:\"active\">> emptyValue=<<link-button-class>>>\n <li class=<<menu-list-item-class>>>\n <$list filter=\"[title<contextState>contains:opened-fields-filters<currentField>]\" emptyMessage=<<closed>>><<opened>></$list>\n </li>\n </$set>\n </$set>\n </$list>\n </$list>\n</ol>"
},
"$:/plugins/bimlas/locator/templates/field-value-template": {
"title": "$:/plugins/bimlas/locator/templates/field-value-template",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[[$:/config/bimlas/locator/fields/]addsuffix<currentField>get[text]]\" emptyMessage={{$:/plugins/bimlas/locator/field-templates/text}} variable=\"template\">\n <$transclude tiddler=<<template>>/>\n</$list>"
},
"$:/plugins/bimlas/locator/templates/field-values": {
"title": "$:/plugins/bimlas/locator/templates/field-values",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define remove-filtering-of-current-field()\n <$action-setfield $tiddler=<<intersectionState>> $index=<<currentField>> $value=\"\"/>\n <$action-setfield $tiddler=<<differenceState>> $index=<<currentField>> $value=\"\"/>\n <$list filter=\"[<recursiveFilteringOfCurrentFieldAvailable>regexp[yes]]\" variable=\"null\">\n <$action-setfield $tiddler=\"$:/state/bimlas/locator/search/recursive-filters/\" $index=<<currentField>> $value=\"\"/>\n </$list>\n\\end\n\n\\define remove-from-intersection-state()\n <$action-listops $tiddler=<<intersectionState>> $index=<<currentField>> $subfilter=\"-[all[current]]\"/>\n\\end\n\n\\define remove-from-difference-state()\n <$action-listops $tiddler=<<differenceState>> $index=<<currentField>> $subfilter=\"-[all[current]]\"/>\n\\end\n\n\\define activate-actions()\n <<__beforeActivateActions__>>\n <$action-listops $tiddler=<<__filterState__>> $index=<<currentField>> $subfilter=\"[all[current]]\"/>\n\\end\n\n\\define inactivate-actions()\n <$action-listops $tiddler=<<__filterState__>> $index=<<currentField>> $subfilter=\"-[all[current]]\"/>\n <$list filter=\"[<recursiveFilteringOfCurrentFieldAvailable>regexp[yes]]\" variable=\"null\">\n <$action-listops $tiddler=\"$:/state/bimlas/locator/search/recursive-filters/\" $index=<<currentField>> $subfilter=\"-[all[current]]\"/>\n </$list>\n\\end\n\n\\define button-inactive()\n <$button tooltip=<<__tooltip__>> class=<<link-button-class>> actions=<<activate-actions>>>\n <<__icon__>>\n </$button>\n\\end\n\n\\define button-active()\n <$button tooltip=<<__tooltip__>> class=<<link-button-class additionalClasses:\"active\">> actions=<<inactivate-actions>>>\n <<__icon__>>\n </$button>\n\\end\n\n\\define toggle-button(filterState icon beforeActivateActions tooltip)\n <$list filter=\"[title<__filterState__>locator-selected-field-values<currentField>is[current]]\" emptyMessage=<<button-inactive>>>\n <<button-active>>\n </$list>\n\\end\n\n\\define field-values-of-context-items() [subfilter<filterContextItems>locator-enlist-field-values<currentField>search:title<searchedFieldValue>] [subfilter<filter-selected-field-values>] +[sort[]]\n\n<ol class=\"bimlas-locator\">\n <li class=<<menu-list-item-class>>>\n <$tiddler tiddler=\"ANY-VALUE\">\n <$macrocall\n $name=\"toggle-button\"\n filterState=<<intersectionState>>\n icon={{$:/core/images/new-button}}\n beforeActivateActions=<<remove-filtering-of-current-field>>\n tooltip=\"Toggle filtering to any value\"\n />\n <$macrocall\n $name=\"toggle-button\"\n filterState=<<differenceState>>\n icon={{$:/core/images/close-button}}\n beforeActivateActions=<<remove-filtering-of-current-field>>\n tooltip=\"Toggle filtering to any value\"\n />\n __Any value__\n </$tiddler>\n </li>\n <$list filter=\"[subfilter<field-values-of-context-items>regexp[^ANY-VALUE$]count[]] -[[1]]\" variable=\"null\">\n <$list filter=<<field-values-of-context-items>>>\n <li class=<<menu-list-item-class>>>\n <$macrocall\n $name=\"toggle-button\"\n filterState=<<intersectionState>>\n icon={{$:/core/images/new-button}}\n beforeActivateActions=<<remove-from-difference-state>>\n tooltip=\"Toggle filtering to this value\"\n />\n <$macrocall\n $name=\"toggle-button\"\n filterState=<<differenceState>>\n icon={{$:/core/images/close-button}}\n beforeActivateActions=<<remove-from-intersection-state>>\n tooltip=\"Toggle filtering to this value\"\n />\n <$list filter=\"[<recursiveFilteringOfCurrentFieldAvailable>regexp[yes]]\" variable=\"null\">\n <$macrocall\n $name=\"toggle-button\"\n filterState=\"$:/state/bimlas/locator/search/recursive-filters/\"\n icon={{$:/core/images/link}}\n tooltip=\"Toggle recursive filtering to this value\"\n />\n </$list>\n <$macrocall\n $name=\"droppable-menu-list-item\"\n content={{$:/plugins/bimlas/locator/templates/field-value-template}}\n actions={{$:/plugins/bimlas/locator/actions/add-field-value}}\n />\n </li>\n </$list>\n </$list>\n</ol>\n"
},
"$:/plugins/bimlas/locator/templates/fields-filter": {
"title": "$:/plugins/bimlas/locator/templates/fields-filter",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "\\define open-actions()\n <$action-listops $tiddler=<<contextState>> $field=\"opened-fields-filters\" $subfilter=\"[[FIELDS-FILTER]]\"/>\n\\end\n\n\\define close-actions()\n <$action-listops $tiddler=<<contextState>> $field=\"opened-fields-filters\" $subfilter=\"-[[FIELDS-FILTER]]\"/>\n\\end\n\n\\define opened()\n <$button class=<<fieldsFilterButtonClass>> actions=<<close-actions>>>\n {{$:/core/images/up-arrow}} __Filter by fields__\n </$button>\n {{$:/plugins/bimlas/locator/buttons/remove-filters}}\n <ol class=\"bimlas-locator\">\n {{$:/plugins/bimlas/locator/templates/field-names}}\n </ol>\n\\end\n\n\\define closed()\n <$button class=<<fieldsFilterButtonClass>> actions=<<open-actions>>>\n {{$:/core/images/down-arrow}} __Filter by fields__\n </$button>\n {{$:/plugins/bimlas/locator/buttons/remove-filters}}\n\\end\n\n<$set name=\"fieldsFilterButtonClass\" filter=\"[subfilter<filter-selected-field-values>first[]]\" value=<<link-button-class additionalClasses:\"active\">> emptyValue=<<link-button-class>>>\n <$vars typeOfFieldsFilter=\"nested\">\n <$list filter=\"[title<contextState>contains:opened-fields-filters[FIELDS-FILTER]]\" emptyMessage=<<closed>>><<opened>></$list>\n </$vars>\n</$set>"
},
"$:/plugins/bimlas/locator/templates/history-item": {
"title": "$:/plugins/bimlas/locator/templates/history-item",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "{{||$:/plugins/bimlas/locator/buttons/go-up-to-context}}\n{{||$:/plugins/bimlas/locator/field-templates/link}}"
},
"$:/plugins/bimlas/locator/templates/history": {
"title": "$:/plugins/bimlas/locator/templates/history",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=<<filter-history>>>\n <$macrocall $name=\"droppable-menu-list-item\" content={{$:/plugins/bimlas/locator/templates/history-item}} actions={{$:/plugins/bimlas/locator/actions/move-to-another-context}}/>\n</$list>\n"
},
"$:/plugins/bimlas/locator/templates/list-of-context-items": {
"title": "$:/plugins/bimlas/locator/templates/list-of-context-items",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=<<filterContextItems>>>\n <$macrocall\n $name=\"droppable-menu-list-item\"\n content={{$:/plugins/bimlas/locator/templates/context-item}}\n actions={{$:/plugins/bimlas/locator/actions/move-to-another-context}}\n />\n</$list>"
},
"$:/plugins/bimlas/locator/templates/list-of-links-in-text": {
"title": "$:/plugins/bimlas/locator/templates/list-of-links-in-text",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[subfilter<filterContextItems>sort[]]\">\n {{||$:/plugins/bimlas/locator/templates/context-item}}\n</$list>"
},
"$:/plugins/bimlas/locator/templates/search-toolbar": {
"title": "$:/plugins/bimlas/locator/templates/search-toolbar",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$vars\n titleOfNewTiddler={{$:/temp/search}}\n>\n {{$:/plugins/bimlas/locator/buttons/clear-search-input}}\n {{$:/plugins/bimlas/locator/buttons/copy-filter-to-advanced-search}}\n {{$:/plugins/bimlas/locator/buttons/create-new-tiddler}}\n {{$:/plugins/bimlas/locator/buttons/open-field-settings}}\n</$vars>\n"
},
"$:/plugins/bimlas/locator/templates/view-toolbar": {
"title": "$:/plugins/bimlas/locator/templates/view-toolbar",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[title<contextState>!field:invert-direction[yes]]\" variable=\"null\">\n <$list filter=\"[subfilter<filter-field-of-relationship>!regexp[^LINKS-IN-TEXT$]]\">\n {{||$:/plugins/bimlas/locator/buttons/create-new-tiddler}}\n </$list>\n {{$:/plugins/bimlas/locator/buttons/search-in-context}}\n</$list>\n{{$:/plugins/bimlas/locator/buttons/collapse-history}}\n{{$:/plugins/bimlas/locator/buttons/toggle-context-settings}}"
},
"$:/plugins/bimlas/locator/viewtemplate/field-list": {
"title": "$:/plugins/bimlas/locator/viewtemplate/field-list",
"tags": "",
"type": "text/vnd.tiddlywiki",
"text": "<table class=\"tc-view-field-table\">\n <tbody>\n <$list filter=\"[all[current]fields[]locator-enabled-fields[]sort[title]] -text\" variable=\"currentField\">\n <tr class=\"tc-view-field\">\n <td class=\"tc-view-field-name\">\n <$text text=<<currentField>>/>\n </td>\n <td class=\"tc-view-field-value\">\n <$list filter=\"[all[current]locator-enlist-field-values<currentField>]\">\n {{||$:/plugins/bimlas/locator/templates/field-value-template}}\n </$list>\n </td>\n </tr>\n </$list>\n </tbody>\n</table>"
},
"$:/plugins/bimlas/locator/viewtemplate/fields-info": {
"title": "$:/plugins/bimlas/locator/viewtemplate/fields-info",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}} (Locator)",
"list-after": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"type": "text/vnd.tiddlywiki",
"text": "{{||$:/plugins/bimlas/locator/viewtemplate/field-list}}\n\n{{$:/plugins/bimlas/locator/buttons/open-field-settings}}"
},
"$:/plugins/bimlas/locator/viewtemplate/open-in-sidebar": {
"title": "$:/plugins/bimlas/locator/viewtemplate/open-in-sidebar",
"tags": "$:/tags/ViewToolbar",
"type": "text/vnd.tiddlywiki",
"caption": "{{$:/core/images/chevron-right}} locator sidebar",
"description": "Browse hierarchy of tag in Locator sidebar",
"list-before": "$:/core/ui/Buttons/open-window",
"text": "\\whitespace trim\n<$button tooltip=\"Browse hierarchy of tag in Locator sidebar\" aria-label=\"locator sidebar\" class=<<tv-config-toolbar-class>>>\n<$vars\n contextState=\"$:/state/bimlas/locator/view/context/\"\n intersectionState=\"$:/state/bimlas/locator/view/intersection/\"\n differenceState=\"$:/state/bimlas/locator/view/difference/\"\n>\n {{||$:/plugins/bimlas/locator/actions/add-to-history}}\n</$vars>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/chevron-right}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text=\"locator sidebar\"/>\n</span>\n</$list>\n</$button>\n"
}
}
}
{
"tiddlers": {
"$:/plugins/chanilino/viz/vizWidget.js": {
"created": "20180705094957971",
"creator": "chan",
"text": "(function(){\n\n var Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n var Viz = require(\"$:/plugins/chanilino/viz/viz.js\");\n var {Module, render } = require(\"$:/plugins/chanilino/viz/lite.render.js\");\n var viz = new Viz({ Module, render });\n \n\n var VizWidget = function(parseTreeNode,options) {\n this.initialise(parseTreeNode,options);\n };\n\n VizWidget.prototype = new Widget();\n\n VizWidget.prototype.render = function(parent,nextSibling) {\n this.parentDomNode = parent;\n this.computeAttributes();\n this.execute();\n var domNode = this.create(parent, nextSibling);\n this.domNodes.push(domNode);\n parent.insertBefore(domNode,nextSibling);\n this.renderChildren(domNode,null);\n };\n\n VizWidget.prototype.execute = function() {\n // get attributes\n this.my_text = this.getAttribute(\"text\");\n this.selectClass = this.getAttribute(\"class\");\n this.tiddler = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n this.setName = this.getAttribute(\"name\",\"currentTiddler\");\n // make child widgets \n //this.makeChildWidgets();\n };\n\n //refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n VizWidget.prototype.refresh = function(changedTiddlers) {\n var changedAttributes = this.computeAttributes();\n if(changedAttributes.my_text || changedAttributes.tiddler) {\n this.refreshSelf();\n return true;\n } else {\n return this.refreshChildren(changedTiddlers);\t\t\n }\n };\n\n VizWidget.prototype.removeChildDomNodes = function() {\n $tw.utils.each(this.domNodes,function(domNode) {\n domNode.parentNode.removeChild(domNode);\n });\n this.domNodes = [];\n };\n\n VizWidget.prototype.create = function() {\n // create a <div> container for the image\n var domNode = $tw.utils.domMaker(\"div\",{class:this.selectClass});\n\n viz.renderSVGElement(this.my_text).then(\n element => { \n domNode.appendChild(element);\n }).catch(\n error => {\n viz = new Viz({ Module, render });\n });\n return domNode;\n };\n\n\n VizWidget.prototype.handleChangeEvent = function(event) {\n // set the widget variable to inform the children\n this.setVariable(this.setName,event.target.value,this.parseTreeNode.params);\n // refresh this widget, and thereby the child widgets AND the enclosed content of this widget \n this.refreshSelf();\n return true;\n };\n\n exports.viz = VizWidget;\n\n})();\n",
"type": "application/javascript",
"title": "$:/plugins/chanilino/viz/vizWidget.js",
"tags": "",
"module-type": "widget",
"modifier": "chan",
"modified": "20180705134841442"
},
"$:/plugins/chanilino/viz/Usage": {
"created": "20180705094932491",
"creator": "chan",
"text": "```\n<$viz text=' digraph G {\n Consola->nginx [label=\"Pide encriptar url para cliente\", color=green]\n nginx [shape=box];\n nginx->Consola [color=red]\n client-> HAPROXY [color=red]\n STUPID [shape=box];\n HAPROXY -> STUPID [color=red]\n STUPID -> Prelanderred\n STUPID -> STUPID [color=green, label=\"Pasa del nginx al hhvm desdencriptado\"]\n vsh [shape=box];\n STUPID->vsh [color=red]\n }' class=\"myexample\"/>\n```\n\n<$viz text=' digraph G {\n Consola->nginx [label=\"Pide encriptar url para cliente\", color=green]\n nginx [shape=box];\n nginx->Consola [color=red]\n client-> HAPROXY [color=red]\n STUPID [shape=box];\n HAPROXY -> STUPID [color=red]\n STUPID -> Prelanderred\n STUPID -> STUPID [color=green, label=\"Pasa del nginx al hhvm desdencriptado\"]\n vsh [shape=box];\n STUPID->vsh [color=red]\n }' class=\"myexample\"/>",
"title": "$:/plugins/chanilino/viz/Usage",
"tags": "",
"modifier": "chan",
"modified": "20180705132719608"
},
"$:/plugins/chanilino/viz/Readme": {
"created": "20180705094912917",
"creator": "chan",
"text": "Plugin based on grapviz library:\n\nhttps://github.com/mdaines/viz.js/\n\nFor syntax of graphviz:\n\n* https://graphs.grevian.org/example\n* https://graphviz.gitlab.io/documentation/\n* https://www.graphviz.org/ \n",
"title": "$:/plugins/chanilino/viz/Readme",
"tags": "",
"modifier": "chan",
"modified": "20180705133230316"
},
"$:/plugins/chanilino/viz/viz.js": {
"text": "/*\nViz.js 2.0.0 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36)\nCopyright (c) 2014-2018 Michael Daines\nLicensed under MIT license\n\nThis distribution contains other software in object code form:\n\nGraphviz\nLicensed under Eclipse Public License - v 1.0\nhttp://www.graphviz.org\n\nExpat\nCopyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper\nCopyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.\nLicensed under MIT license\nhttp://www.libexpat.org\n\nzlib\nCopyright (C) 1995-2013 Jean-loup Gailly and Mark Adler\nhttp://www.zlib.net/zlib_license.html\n*/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Viz = factory());\n}(this, (function () { 'use strict';\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var WorkerWrapper = function () {\n function WorkerWrapper(worker) {\n var _this = this;\n\n classCallCheck(this, WorkerWrapper);\n\n this.worker = worker;\n this.listeners = [];\n this.nextId = 0;\n\n this.worker.addEventListener('message', function (event) {\n var id = event.data.id;\n var error = event.data.error;\n var result = event.data.result;\n\n _this.listeners[id](error, result);\n delete _this.listeners[id];\n });\n }\n\n createClass(WorkerWrapper, [{\n key: 'render',\n value: function render(src, options) {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n var id = _this2.nextId++;\n\n _this2.listeners[id] = function (error, result) {\n if (error) {\n reject(new Error(error.message, error.fileName, error.lineNumber));\n return;\n }\n resolve(result);\n };\n\n _this2.worker.postMessage({ id: id, src: src, options: options });\n });\n }\n }]);\n return WorkerWrapper;\n }();\n\n var ModuleWrapper = function ModuleWrapper(module, render) {\n classCallCheck(this, ModuleWrapper);\n\n var instance = module();\n this.render = function (src, options) {\n return new Promise(function (resolve, reject) {\n try {\n resolve(render(instance, src, options));\n } catch (error) {\n reject(error);\n }\n });\n };\n };\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\n\n\n function b64EncodeUnicode(str) {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n return String.fromCharCode('0x' + p1);\n }));\n }\n\n function defaultScale() {\n if ('devicePixelRatio' in window && window.devicePixelRatio > 1) {\n return window.devicePixelRatio;\n } else {\n return 1;\n }\n }\n\n function svgXmlToImageElement(svgXml) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$scale = _ref.scale,\n scale = _ref$scale === undefined ? defaultScale() : _ref$scale,\n _ref$mimeType = _ref.mimeType,\n mimeType = _ref$mimeType === undefined ? \"image/png\" : _ref$mimeType,\n _ref$quality = _ref.quality,\n quality = _ref$quality === undefined ? 1 : _ref$quality;\n\n return new Promise(function (resolve, reject) {\n var svgImage = new Image();\n\n svgImage.onload = function () {\n var canvas = document.createElement('canvas');\n canvas.width = svgImage.width * scale;\n canvas.height = svgImage.height * scale;\n\n var context = canvas.getContext(\"2d\");\n context.drawImage(svgImage, 0, 0, canvas.width, canvas.height);\n\n canvas.toBlob(function (blob) {\n var image = new Image();\n image.src = URL.createObjectURL(blob);\n image.width = svgImage.width;\n image.height = svgImage.height;\n\n resolve(image);\n }, mimeType, quality);\n };\n\n svgImage.onerror = function (e) {\n var error;\n\n if ('error' in e) {\n error = e.error;\n } else {\n error = new Error('Error loading SVG');\n }\n\n reject(error);\n };\n\n svgImage.src = 'data:image/svg+xml;base64,' + b64EncodeUnicode(svgXml);\n });\n }\n\n function svgXmlToImageElementFabric(svgXml) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$scale = _ref2.scale,\n scale = _ref2$scale === undefined ? defaultScale() : _ref2$scale,\n _ref2$mimeType = _ref2.mimeType,\n mimeType = _ref2$mimeType === undefined ? 'image/png' : _ref2$mimeType,\n _ref2$quality = _ref2.quality,\n quality = _ref2$quality === undefined ? 1 : _ref2$quality;\n\n var multiplier = scale;\n\n var format = void 0;\n if (mimeType == 'image/jpeg') {\n format = 'jpeg';\n } else if (mimeType == 'image/png') {\n format = 'png';\n }\n\n return new Promise(function (resolve, reject) {\n fabric.loadSVGFromString(svgXml, function (objects, options) {\n // If there's something wrong with the SVG, Fabric may return an empty array of objects. Graphviz appears to give us at least one <g> element back even given an empty graph, so we will assume an error in this case.\n if (objects.length == 0) {\n reject(new Error('Error loading SVG with Fabric'));\n }\n\n var element = document.createElement(\"canvas\");\n element.width = options.width;\n element.height = options.height;\n\n var canvas = new fabric.Canvas(element, { enableRetinaScaling: false });\n var obj = fabric.util.groupSVGElements(objects, options);\n canvas.add(obj).renderAll();\n\n var image = new Image();\n image.src = canvas.toDataURL({ format: format, multiplier: multiplier, quality: quality });\n image.width = options.width;\n image.height = options.height;\n\n resolve(image);\n });\n });\n }\n\n var Viz = function () {\n function Viz() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n workerURL = _ref3.workerURL,\n worker = _ref3.worker,\n Module = _ref3.Module,\n render = _ref3.render;\n\n classCallCheck(this, Viz);\n\n if (typeof workerURL !== 'undefined') {\n this.wrapper = new WorkerWrapper(new Worker(workerURL));\n } else if (typeof worker !== 'undefined') {\n this.wrapper = new WorkerWrapper(worker);\n } else if (typeof Module !== 'undefined' && typeof render !== 'undefined') {\n this.wrapper = new ModuleWrapper(Module, render);\n } else if (typeof Viz.Module !== 'undefined' && typeof Viz.render !== 'undefined') {\n this.wrapper = new ModuleWrapper(Viz.Module, Viz.render);\n } else {\n throw new Error('Must specify workerURL or worker option, Module and render options, or include one of full.render.js or lite.render.js after viz.js.');\n }\n }\n\n createClass(Viz, [{\n key: 'renderString',\n value: function renderString(src) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref4$format = _ref4.format,\n format = _ref4$format === undefined ? 'svg' : _ref4$format,\n _ref4$engine = _ref4.engine,\n engine = _ref4$engine === undefined ? 'dot' : _ref4$engine,\n _ref4$files = _ref4.files,\n files = _ref4$files === undefined ? [] : _ref4$files,\n _ref4$images = _ref4.images,\n images = _ref4$images === undefined ? [] : _ref4$images,\n _ref4$yInvert = _ref4.yInvert,\n yInvert = _ref4$yInvert === undefined ? false : _ref4$yInvert;\n\n for (var i = 0; i < images.length; i++) {\n files.push({\n path: images[i].path,\n data: '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\\n<svg width=\"' + images[i].width + '\" height=\"' + images[i].height + '\"></svg>'\n });\n }\n\n return this.wrapper.render(src, { format: format, engine: engine, files: files, images: images, yInvert: yInvert });\n }\n }, {\n key: 'renderSVGElement',\n value: function renderSVGElement(src) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) {\n var parser = new DOMParser();\n return parser.parseFromString(str, 'image/svg+xml').documentElement;\n });\n }\n }, {\n key: 'renderImageElement',\n value: function renderImageElement(src) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var scale = options.scale,\n mimeType = options.mimeType,\n quality = options.quality;\n\n\n return this.renderString(src, _extends({}, options, { format: 'svg' })).then(function (str) {\n if ((typeof fabric === 'undefined' ? 'undefined' : _typeof(fabric)) === \"object\" && fabric.loadSVGFromString) {\n return svgXmlToImageElementFabric(str, { scale: scale, mimeType: mimeType, quality: quality });\n } else {\n return svgXmlToImageElement(str, { scale: scale, mimeType: mimeType, quality: quality });\n }\n });\n }\n }, {\n key: 'renderJSONObject',\n value: function renderJSONObject(src) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var format = options.format;\n\n\n if (format !== 'json' || format !== 'json0') {\n format = 'json';\n }\n\n return this.renderString(src, _extends({}, options, { format: format })).then(function (str) {\n return JSON.parse(str);\n });\n }\n }]);\n return Viz;\n }();\n\n return Viz;\n\n})));\n",
"type": "application/javascript",
"title": "$:/plugins/chanilino/viz/viz.js",
"module-type": "library",
"modifier": "chan",
"modified": "20180705095216872",
"creator": "chan",
"created": "20180705095149455"
},
"$:/plugins/chanilino/viz/lite.render.js": {
"text": "/*\nViz.js 2.0.0 (Graphviz 2.40.1, Emscripten 1.37.36)\n*/\n(function(global) {\nvar Module = function(Module) {\n Module = Module || {};\nvar Module=typeof Module!==\"undefined\"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module[\"arguments\"]=[];Module[\"thisProgram\"]=\"./this.program\";Module[\"quit\"]=(function(status,toThrow){throw toThrow});Module[\"preRun\"]=[];Module[\"postRun\"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module[\"ENVIRONMENT\"]){if(Module[\"ENVIRONMENT\"]===\"WEB\"){ENVIRONMENT_IS_WEB=true}else if(Module[\"ENVIRONMENT\"]===\"WORKER\"){ENVIRONMENT_IS_WORKER=true}else if(Module[\"ENVIRONMENT\"]===\"NODE\"){ENVIRONMENT_IS_NODE=true}else if(Module[\"ENVIRONMENT\"]===\"SHELL\"){ENVIRONMENT_IS_SHELL=true}else{throw new Error(\"Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.\")}}else{ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof require===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module[\"read\"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);ret=nodeFS[\"readFileSync\"](filename)}return binary?ret:ret.toString()};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}Module[\"arguments\"]=process[\"argv\"].slice(2);if(typeof module!==\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process[\"on\"](\"unhandledRejection\",(function(reason,p){process[\"exit\"](1)}));Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){Module[\"read\"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module[\"readBinary\"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module[\"readBinary\"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module[\"readAsync\"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}Module[\"setWindowTitle\"]=(function(title){document.title=title})}Module[\"print\"]=typeof console!==\"undefined\"?console.log.bind(console):typeof print!==\"undefined\"?print:null;Module[\"printErr\"]=typeof printErr!==\"undefined\"?printErr:typeof console!==\"undefined\"&&console.warn.bind(console)||Module[\"print\"];Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return 4}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}var JSfuncs={\"stackSave\":(function(){stackSave()}),\"stackRestore\":(function(){stackRestore()}),\"arrayToC\":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType===\"string\")ret=Pointer_stringify(ret);if(stack!==0){stackRestore(stack)}return ret}function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc===\"function\"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];type=singleType||types[i];if(type===0){i++;continue}if(type==\"i64\")type=\"i32\";setValue(ret+i,curr,type);if(previousType!==type){typeSize=getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}function Pointer_stringify(ptr,length){if(length===0||!ptr)return\"\";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){return func}function demangleAll(text){var regex=/__Z[\\w\\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}var PAGE_SIZE=16384;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");if(Module[\"buffer\"]){buffer=Module[\"buffer\"]}else{{buffer=new ArrayBuffer(TOTAL_MEMORY)}Module[\"buffer\"]=buffer}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math[\"imul\"]||Math[\"imul\"](4294967295,5)!==-5)Math[\"imul\"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math[\"imul\"];if(!Math[\"clz32\"])Math[\"clz32\"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math[\"clz32\"];if(!Math[\"trunc\"])Math[\"trunc\"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math[\"trunc\"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var memoryInitializer=null;var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var ASM_CONSTS=[(function($0,$1){var path=Pointer_stringify($0);var data=Pointer_stringify($1);FS.createPath(\"/\",PATH.dirname(path));FS.writeFile(PATH.join(\"/\",path),data)})];function _emscripten_asm_const_iii(code,a0,a1){return ASM_CONSTS[code](a0,a1)}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+176352;__ATINIT__.push();memoryInitializer=\"data:application/octet-stream;base64,AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAIMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkACEAAAAAAAAAAAAAAAABBAWC8AAAgAAAABAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICWQAAAAAAAgJZABJDDAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkAAAAAAAABSQAAgAwIAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABCQAAAAAAAAEJAAAAAAAAgg0AAAAAAAMCIQAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAAEJAAAAAAAAAQkAAAAAAACCDQAAAAAAAwIhAAAAAAAAAUkAAAAAAAABSQACwwQAAAAAAAAAAAAAAEED4NQAAkwAAAAEAAAAAAAAAQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAEAACAAAAAAAAAAAAABBAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYQAAAAAAAAFhAALDBAAAAAAAAAAAAAAAAANQ5AAAQAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWEAAAAAAAABYQEAgPgMAAAAAAAAAAAAAEEDcOgAAegAAAAEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAAAAAAAAAUkAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSQAAAAAAAAFJAAQAAAAAAAAABAAAAAAAAAAAAAAAAAPA/AQAAAAAAAAACAAAAAAAAAAAAAAAAAPA/AgAAAAAAAAADAAAAAAAAAAAAAAAAAOA/AwAAAAAAAAAEAAAAAAAAAAAAAAAAAPA/BAAAAAAAAAAFAAAAAAAAADMzMzMzM/M/BQAAAAAAAAAGAAAAAAAAAJqZmZmZmek/BgAAAAAAAAAHAAAAAAAAAAAAAAAAAPA/BwAAAAAAAAAIAAAAAAAAAAAAAAAAAOA/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAzMzMzMzPTvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAACARkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAACamZmZmZnZvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMzMzM+M/AAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAAAAAAAAAAB7FK5H4XrkvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiRSAAABAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAACAZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAACAZkCamZmZmZnZvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAAAAAACAZkB7FK5H4XrkvwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAACARkAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAABAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAQAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAAABAAAAAAAAAAAAAAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/WKg1zTtO1T8ldQKaCBvaPwAAAAAAAOA/AAAAAAAA4D8s1JrmHafqP2recYqO5Og/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/AAAAAAAA4D9d3EYDeAviPwAAAAAAANA/WKg1zTtO1T8AAAAAAADQP9O84xQdydE/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D/TvOMUHcnRP9O84xQdydE/XdxGA3gL4j9d3EYDeAviP13cRgN4C+I/DXGsi9to3D9kXdxGA3jtP9JvXwfOGec/EHo2qz5X5T8QejarPlflP9JvXwfOGec/eAskKH6M4z+1FfvL7snhP9JvXwfOGec/0m9fB84Z5z9YqDXNO07VP4iFWtO849g/0m9fB84Z5z94CyQofozjP8RCrWnecew/0m9fB84Z5z/Sb18HzhnnP7UV+8vuyeE/0m9fB84Z5z8QejarPlflP7UV+8vuyeE/eAskKH6M4z/Sb18HzhnnP9JvXwfOGec/hjjWxW007j/Sb18HzhnnP9JvXwfOGec/eAskKH6M4z9YqDXNO07VP9O84xQdydE/WKg1zTtO1T+mCkYldQLePwAAAAAAAOA/WKg1zTtO1T8NcayL22jcPwAAAAAAAOA/DXGsi9to3D8AAAAAAADgPw1xrIvbaNw/WKg1zTtO1T8AAAAAAADgPwAAAAAAAOA/07zjFB3J0T/TvOMUHcnRPwAAAAAAAOA/07zjFB3J0T9q3nGKjuToPwAAAAAAAOA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/WKg1zTtO1T+IhVrTvOPYP9O84xQdydE/AAAAAAAA4D8AAAAAAADgP9JvXwfOGec/AAAAAAAA4D8AAAAAAADgPw1xrIvbaNw/9GxWfa623j8RNjy9UpbJP/RsVn2utt4/OwFNhA1P4T8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP1ioNc07TtU/AAAAAAAA4D8AAAAAAADgPz7o2az6XMU/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA4D+Cc0aU9gbHPw1xrIvbaNw/AAAAAAAA4D9YqDXNO07VP1ioNc07TtU/tRX7y+7J4T+1FfvL7snhPwAAAAAAANA/AAAAAAAA4D8AAAAAAADgPwAAAAAAAOA/AAAAAAAA0D8AAAAAAADQPwfwFkhQ/Nw/orQ3+MJk1j9YqDXNO07VPw1xrIvbaNw/DXGsi9to3D8AAAAAAADgPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADQPw1xrIvbaNw/AAAAAAAA0D9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T9YqDXNO07VP1ioNc07TtU/AAAAAAAA0D9YqDXNO07VP1ioNc07TtU/AAAAAAAA0D9YqDXNO07VP1ioNc07TtU/WKg1zTtO1T8AAAAAAADwPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/xEKtad5x7D8AAAAAAADQP3/ZPXlYqNE/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D94CyQofozjP9JvXwfOGec/xEKtad5x7D8T8kHPZtXTPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D8QejarPlflPwAAAAAAANA/AAAAAAAA0D8AAAAAAADQP9O84xQdydE/AAAAAAAA0D8AAAAAAADQP9O84xQdydE/AAAAAAAA4D/Sb18HzhnnPwAAAAAAAOA/AAAAAAAA0D8AAAAAAADQPwAAAAAAANA/AAAAAAAA0D9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8YTLjP1HaG3xhMuM/UdobfGEy4z9R2ht8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AQAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAQAAAAFAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABgAAAAEAAAABAAAABwAAAAgAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAEAAAABAAAACwAAAAEAAAAMAAAAAQAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAATAAAAEwAAABMAAAATAAAAFwAAABgAAAAZAAAAEwAAABoAAAAbAAAAHAAAAB0AAAATAAAAEwAAABMAAAATAAAAEwAAAAEAAAAeAAAAAQAAAAEAAAATAAAAAQAAAB8AAAAgAAAAIQAAACIAAAAjAAAAEwAAACQAAAAlAAAAJgAAABMAAAATAAAAEwAAABMAAAAnAAAAKAAAACkAAAATAAAAKgAAACsAAAAsAAAALQAAABMAAAATAAAAEwAAABMAAAATAAAAAQAAAAEAAAABAAAAAQAAAAEAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAAC4AAAATAAAAEwAAABMAAAAvAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAAEwAAABMAAAATAAAA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Na8BACLQ///ZL/8APq8BABla5eXElP8AR68BAHJ4wmbCpf8AUK8BAAub/PyNYv8AWa8BAJxNy42gy/8AYq8BAORm5+eKw/8Aa68BADqb2KbYVP8AdK8BACLQ///ZL/8Afa8BABla5eXElP8Ahq8BAAAAs7Ozs/8Aj68BAHhU043Tx/8Ama8BANNSvbyAvf8ApK8BACpM////s/8Arq8BAK8l2r662v8AuK8BAASL+/uAcv8Awq8BAJBk04Cx0/8AzK8BABac/f20Yv8A1q8BADqG3rPeaf8A4K8BAOkv/PzN5f8A6q8BAAAA2dnZ2f8A9K8BAHhU043Tx/8A/q8BANNSvbyAvf8ACbABAE0p68zrxf8AFLABACpM////s/8AHrABAK8l2r662v8AKLABAASL+/uAcv8AMrABAJBk04Cx0/8APLABABac/f20Yv8ARrABADqG3rPeaf8AULABAOkv/PzN5f8AWrABAAAA2dnZ2f8AZLABAHhU043Tx/8AbrABANNSvbyAvf8AebABAE0p68zrxf8AhLABACWQ///tb/8Aj7ABACpM////s/8AmbABAK8l2r662v8Ao7ABAASL+/uAcv8ArbABAJBk04Cx0/8At7ABABac/f20Yv8AwbABADqG3rPeaf8Ay7ABAOkv/PzN5f8A1bABAAAA2dnZ2f8A37ABAHhU043Tx/8A6LABACpM////s/8A8bABAK8l2r662v8A+rABAHhU043Tx/8AA7EBACpM////s/8ADLEBAK8l2r662v8AFbEBAASL+/uAcv8AHrEBAHhU043Tx/8AJ7EBACpM////s/8AMLEBAK8l2r662v8AObEBAASL+/uAcv8AQrEBAJBk04Cx0/8AS7EBAHhU043Tx/8AVLEBACpM////s/8AXbEBAK8l2r662v8AZrEBAASL+/uAcv8Ab7EBAJBk04Cx0/8AeLEBABac/f20Yv8AgbEBAHhU043Tx/8AirEBACpM////s/8Ak7EBAK8l2r662v8AnLEBAASL+/uAcv8ApbEBAJBk04Cx0/8ArrEBABac/f20Yv8At7EBADqG3rPeaf8AwLEBAHhU043Tx/8AybEBACpM////s/8A0rEBAK8l2r662v8A27EBAASL+/uAcv8A5LEBAJBk04Cx0/8A7bEBABac/f20Yv8A9rEBADqG3rPeaf8A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JboBAI91+ofO+v8AN7oBAJQ4mXeImf8AS7oBAJQ4mXeImf8AX7oBAJc03rDE3v8Ac7oBACof////4P8AhLoBAFX//wD/AP8AjroBAFXAzTLNMv8AnboBABUU+vrw5v8AqLoBANT///8A//8AtboBAAD/gIAAAP8AwboBAHGAzWbNqv8A17oBAKr/zQAAzf8A57oBAMyY07pV0/8A+boBALd825Nw2/8AC7sBAGepszyzcf8AH7sBALCP7nto7v8ANLsBAG//+gD6mv8AS7sBAH2n0UjRzP8AYLsBAOTkx8cVhf8AdbsBAKrGcBkZcP8Ah7sBAGoJ//X/+v8AlrsBAAQe///k4f8ApbsBABpJ///ktf8As7sBABlR///erf8AxLsBAKr/gAAAgP8AzrsBABsX/f315v8A27sBACr/gICAAP8A5rsBADjAjmuOI/8A9bsBABv///+lAP8AAbwBAAv///9FAP8AELwBANZ72tpw1v8AHLwBACZI7u7oqv8AL7wBAFVk+5j7mP8APrwBAH9D7q/u7v8AUbwBAPF829twk/8AZLwBABop///v1f8AdLwBABRG///auf8Ag7wBABSwzc2FP/8AjbwBAPc////Ay/8Al7wBANRG3d2g3f8AobwBAIQ75rDg5v8AsbwBANT/gIAAgP8AvbwBAAD///8AAP8AxrwBAAA9vLyPj/8A1bwBAJ+14UFp4f8A5LwBABHci4tFE/8A9bwBAASK+vqAcv8AAb0BABOa9PSkYP8AEb0BAGeqiy6LV/8AH70BABEQ///17v8ALb0BAA23oKBSLf8AOb0BAAAAwMDAwP8ARb0BAIts64fO6/8AUr0BAK+PzWpazf8AYb0BAJQ4kHCAkP8AcL0BAJQ4kHCAkP8Af70BAAAF///6+v8Aib0BAGr//wD/f/8Amr0BAJKbtEaCtP8Aqb0BABhU0tK0jP8Asr0BAH//gACAgP8AvL0BANQd2Ni/2P8Ayb0BAAa4//9jR/8A1b0BAHu24EDg0P8A5L0BANRz7u6C7v8A8L0BABtE9fXes/8A+70BAAAA//////8ABr4BAAAA9fX19f8AFr4BACr/////AP8AIr4BADjAzZrNMv8AM74BAC1D/Pf8uf8APL4BAERb3a3djv8ARb4BAGKyozGjVP8ATr4BACoy////zP8AV74BAD5V5sLmmf8A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CQAhACEAIQAVABwAAQAUABQAFAAUABQAFAAUAAgABAAFABsAAgAXABsAIAAfAB4AHQAJABMAAAAVABIAFQADAAcAFQAVABQAFAAUABQAFAAUABQAFAAIAAQABQAFAAYAGwAaABgAGQAgAAcAFQAUABQAFAAUABQAFAALABQADQAUAAwAFAAUABQADgAUABQAFAAQABQADwAUABEAAAAAAAAArgAuAC8AMwA1ADAANwCqANsA2wDbANsAAAA9AIcANwA3ANsA2wAAACgANQAuADIALwBiAAAAAABHAAAAAADbAFEAAADbANsA2wAAANsAhABVANsAggDbAAAAgQDbAAAAPgBCAEEASABEAFIAWwAAAAAAXgBfANsAAADbANsA2wAAAAAAewBJAFcAUgBaAFoAXQAAAF8AAABfAAAAZQBdAF8AAABdAG4AagAAAGkAAABuAAAA2wCTAJoAoQCoAKsAcACxALgAvwDGAM0A0wAAAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAMABAAHAAMABAAFAAUABgAGAAgABwAHABEAFgASABEAEgAIAAgADwAPABcADwAYAA8AGQAaABoAHgAWADQAHgAFADIABgAiACIAMwAXABgANQAZABoAGgAqADYAKgA0ADcAMgBFADsAPAAzADsAPABGADUARwBIAEwANgAiAEkASgA3AEUATgBQAGIAUQBSAFQARgBHAFUASABMAFYASQBKAFgAWgBOAEQAUABRAFIAVAA4AC8ALABVACkAVgAbABAAWABaAF0AXQBdAF0AXQBdAF0AXgBeAF4AXgBeAF4AXgBfAF8AXwBfAF8AXwBfAGAACQBgAGAAYABgAGAAYQBhAGMAAgBjAGMAYwBjAGMAZAAAAGQAAABkAGQAZABlAAAAZQBlAGUAZQBlAGYAZgAAAGYAZgBmAGYAZwAAAGcAZwBnAGcAaAAAAGgAaABoAGgAaABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAAAXAABAF0AXQBeAF4AXwBfAFwAXABcAFwAXABgAFwAXABcAGEAXABcAGIAYgBiAGIAYgBiAGIAYwBkAGUAZgBmAFwAXABnAFwAXABcAGAAXABcAGEAXABhAFwAaABhAFwAYgBiAGIAYgBiAGIAYgBiAGMAZABlAGUAXABmAFwAXABcAGcAaABhAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgBiAGIAYgAAAFwAXABcAFwAXABcAFwAXABcAFwAXABcAAAACgALAAwADQAOAAoADwAQABEAEgATAAoAFAAVABUAFQAWABcAFQAYABUAFQAZABUAFQAVABoAFQAVAAoAFQAVABUAFgAXABgAFQAVABkAFQAVABUAGgAVABUAFQAVABsADAAMACQAHgAeACAAIQAgACEAJAAlACYALQAyAC8ALgAqACUAJgAoACkAMwAqADQAKwA1ADYANwA8ADIARwA9ACIARQAiAD8AQABGADMANABIADUANgA3AC8ASQAqAEcASgBFAEwAXAA8AEYAXAA9AE0ASABOAE8AUgBJAEEAUABRAEoATABTAFQAMQBVAFYAVwBNAE4AWABPAFIAWQBQAFEAWgBbAFMARABUAFUAVgBXAEsARAAsAFgALABZADgALABaAFsAHQAdAB0AHQAdAB0AHQAfAB8AHwAfAB8AHwAfACMAIwAjACMAIwAjACMAJwBcACcAJwAnACcAJwAwADAAOQAcADkAOQA5ADkAOQA6AFwAOgBcADoAOgA6ADsAXAA7ADsAOwA7ADsAPgA+AFwAPgA+AD4APgBCAFwAQgBCAEIAQgBDAFwAQwBDAEMAQwBDAAkAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwACACu/9EACgCu/67/CwCu/67/rv+u/67/rv+u/67/BQDRAK7/0QDRANEA0QDRANEA0QDRAK7/+/+u/w4A7P+u/67/rv+u/9EA0QDRANEA0QANACUADABCABAAUAATAG0AewAUAJgADwCmAMMArv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/rv+u/67/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aXQAJSUlJVBhZ2VPcmllbnRhdGlvbjogJXMKADw8IC9QYWdlU2l6ZSBbJWQgJWRdID4+IHNldHBhZ2VkZXZpY2UKACVkICVkICVkIGJlZ2lucGFnZQoAZ3NhdmUKJWQgJWQgJWQgJWQgYm94cHJpbSBjbGlwIG5ld3BhdGgKACVnICVnIHNldF9zY2FsZSAlZCByb3RhdGUgJWcgJWcgdHJhbnNsYXRlCgBjYW52YXMgc2l6ZSAoJWQsJWQpIGV4Y2VlZHMgUERGIGxpbWl0ICglZCkKCShzdWdnZXN0IHNldHRpbmcgYSBib3VuZGluZyBib3ggc2l6ZSwgc2VlIGRvdCgxKSkKAFsgL0Nyb3BCb3ggWyVkICVkICVkICVkXSAvUEFHRVMgcGRmbWFyawoAJWQgJWQgc2V0bGF5ZXIKACUlJSVUaXRsZTogJXMKACUlUGFnZXM6IChhdGVuZCkKACUlUGFnZXM6IDEKACUlQm91bmRpbmdCb3g6IChhdGVuZCkKACUlJSVCb3VuZGluZ0JveDogJWQgJWQgJWQgJWQKACUlRW5kQ29tbWVudHMKc2F2ZQoAc2V0dXBMYXRpbjEKAFsge0NhdGFsb2d9IDw8IC9VUkkgPDwgL0Jhc2UgJXMgPj4gPj4KL1BVVCBwZGZtYXJrCgAlJUJlZ2luUHJvbG9nAC9Eb3REaWN0IDIwMCBkaWN0IGRlZgBEb3REaWN0IGJlZ2luAC9zZXR1cExhdGluMSB7AG1hcmsAL0VuY29kaW5nVmVjdG9yIDI1NiBhcnJheSBkZWYAIEVuY29kaW5nVmVjdG9yIDAASVNPTGF0aW4xRW5jb2RpbmcgMCAyNTUgZ2V0aW50ZXJ2YWwgcHV0aW50ZXJ2YWwARW5jb2RpbmdWZWN0b3IgNDUgL2h5cGhlbiBwdXQAJSBTZXQgdXAgSVNPIExhdGluIDEgY2hhcmFjdGVyIGVuY29kaW5nAC9zdGFybmV0SVNPIHsAICAgICAgICBkdXAgZHVwIGZpbmRmb250IGR1cCBsZW5ndGggZGljdCBiZWdpbgAgICAgICAgIHsgMSBpbmRleCAvRklEIG5lIHsgZGVmIH17IHBvcCBwb3AgfSBpZmVsc2UAICAgICAgICB9IGZvcmFsbAAgICAgICAgIC9FbmNvZGluZyBFbmNvZGluZ1ZlY3RvciBkZWYAICAgICAgICBjdXJyZW50ZGljdCBlbmQgZGVmaW5lZm9udAB9IGRlZgAvVGltZXMtUm9tYW4gc3Rhcm5ldElTTyBkZWYAL1RpbWVzLUl0YWxpYyBzdGFybmV0SVNPIGRlZgAvVGltZXMtQm9sZCBzdGFybmV0SVNPIGRlZgAvVGltZXMtQm9sZEl0YWxpYyBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhIHN0YXJuZXRJU08gZGVmAC9IZWx2ZXRpY2EtT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvSGVsdmV0aWNhLUJvbGQgc3Rhcm5ldElTTyBkZWYAL0hlbHZldGljYS1Cb2xkT2JsaXF1ZSBzdGFybmV0SVNPIGRlZgAvQ291cmllciBzdGFybmV0SVNPIGRlZgAvQ291cmllci1PYmxpcXVlIHN0YXJuZXRJU08gZGVmAC9Db3VyaWVyLUJvbGQgc3Rhcm5ldElTTyBkZWYAL0NvdXJpZXItQm9sZE9ibGlxdWUgc3Rhcm5ldElTTyBkZWYAY2xlYXJ0b21hcmsAfSBiaW5kIGRlZgAlJUJlZ2luUmVzb3VyY2U6IHByb2NzZXQgZ3JhcGh2aXogMCAwAC9jb29yZC1mb250LWZhbWlseSAvVGltZXMtUm9tYW4gZGVmAC9kZWZhdWx0LWZvbnQtZmFtaWx5IC9UaW1lcy1Sb21hbiBkZWYAL2Nvb3JkZm9udCBjb29yZC1mb250LWZhbWlseSBmaW5kZm9udCA4IHNjYWxlZm9udCBkZWYAL0ludlNjYWxlRmFjdG9yIDEuMCBkZWYAL3NldF9zY2FsZSB7ACAgICAgICBkdXAgMSBleGNoIGRpdiAvSW52U2NhbGVGYWN0b3IgZXhjaCBkZWYAICAgICAgIHNjYWxlACUgc3R5bGVzAC9zb2xpZCB7IFtdIDAgc2V0ZGFzaCB9IGJpbmQgZGVmAC9kYXNoZWQgeyBbOSBJbnZTY2FsZUZhY3RvciBtdWwgZHVwIF0gMCBzZXRkYXNoIH0gYmluZCBkZWYAL2RvdHRlZCB7IFsxIEludlNjYWxlRmFjdG9yIG11bCA2IEludlNjYWxlRmFjdG9yIG11bF0gMCBzZXRkYXNoIH0gYmluZCBkZWYAL2ludmlzIHsvZmlsbCB7bmV3cGF0aH0gZGVmIC9zdHJva2Uge25ld3BhdGh9IGRlZiAvc2hvdyB7cG9wIG5ld3BhdGh9IGRlZn0gYmluZCBkZWYAL2JvbGQgeyAyIHNldGxpbmV3aWR0aCB9IGJpbmQgZGVmAC9maWxsZWQgeyB9IGJpbmQgZGVmAC91bmZpbGxlZCB7IH0gYmluZCBkZWYAL3JvdW5kZWQgeyB9IGJpbmQgZGVmAC9kaWFnb25hbHMgeyB9IGJpbmQgZGVmAC90YXBlcmVkIHsgfSBiaW5kIGRlZgAlIGhvb2tzIGZvciBzZXR0aW5nIGNvbG9yIAAvbm9kZWNvbG9yIHsgc2V0aHNiY29sb3IgfSBiaW5kIGRlZgAvZWRnZWNvbG9yIHsgc2V0aHNiY29sb3IgfSBiaW5kIGRlZgAvZ3JhcGhjb2xvciB7IHNldGhzYmNvbG9yIH0gYmluZCBkZWYAL25vcGNvbG9yIHtwb3AgcG9wIHBvcH0gYmluZCBkZWYAL2JlZ2lucGFnZSB7CSUgaSBqIG5wYWdlcwAJL25wYWdlcyBleGNoIGRlZgAJL2ogZXhjaCBkZWYACS9pIGV4Y2ggZGVmAAkvc3RyIDEwIHN0cmluZyBkZWYACW5wYWdlcyAxIGd0IHsACQlnc2F2ZQAJCQljb29yZGZvbnQgc2V0Zm9udAAJCQkwIDAgbW92ZXRvAAkJCShcKCkgc2hvdyBpIHN0ciBjdnMgc2hvdyAoLCkgc2hvdyBqIHN0ciBjdnMgc2hvdyAoXCkpIHNob3cACQlncmVzdG9yZQAJfSBpZgAvc2V0X2ZvbnQgewAJZmluZGZvbnQgZXhjaAAJc2NhbGVmb250IHNldGZvbnQAJSBkcmF3IHRleHQgZml0dGVkIHRvIGl0cyBleHBlY3RlZCB3aWR0aAAvYWxpZ25lZHRleHQgewkJCSUgd2lkdGggdGV4dAAJL3RleHQgZXhjaCBkZWYACS93aWR0aCBleGNoIGRlZgAJZ3NhdmUACQl3aWR0aCAwIGd0IHsACQkJW10gMCBzZXRkYXNoAAkJCXRleHQgc3RyaW5nd2lkdGggcG9wIHdpZHRoIGV4Y2ggc3ViIHRleHQgbGVuZ3RoIGRpdiAwIHRleHQgYXNob3cACQl9IGlmAAlncmVzdG9yZQAvYm94cHJpbSB7CQkJCSUgeGNvcm5lciB5Y29ybmVyIHhzaXplIHlzaXplAAkJNCAyIHJvbGwACQltb3ZldG8ACQkyIGNvcHkACQlleGNoIDAgcmxpbmV0bwAJCTAgZXhjaCBybGluZXRvAAkJcG9wIG5lZyAwIHJsaW5ldG8ACQljbG9zZXBhdGgAL2VsbGlwc2VfcGF0aCB7AAkvcnkgZXhjaCBkZWYACS9yeCBleGNoIGRlZgAJL3kgZXhjaCBkZWYACS94IGV4Y2ggZGVmAAltYXRyaXggY3VycmVudG1hdHJpeAAJbmV3cGF0aAAJeCB5IHRyYW5zbGF0ZQAJcnggcnkgc2NhbGUACTAgMCAxIDAgMzYwIGFyYwAJc2V0bWF0cml4AC9lbmRwYWdlIHsgc2hvd3BhZ2UgfSBiaW5kIGRlZgAvc2hvd3BhZ2UgeyB9IGRlZgAvbGF5ZXJjb2xvcnNlcQAJWwklIGxheWVyIGNvbG9yIHNlcXVlbmNlIC0gZGFya2VzdCB0byBsaWdodGVzdAAJCVswIDAgMF0ACQlbLjIgLjggLjhdAAkJWy40IC44IC44XQAJCVsuNiAuOCAuOF0ACQlbLjggLjggLjhdAAldAGRlZgAvbGF5ZXJsZW4gbGF5ZXJjb2xvcnNlcSBsZW5ndGggZGVmAC9zZXRsYXllciB7L21heGxheWVyIGV4Y2ggZGVmIC9jdXJsYXllciBleGNoIGRlZgAJbGF5ZXJjb2xvcnNlcSBjdXJsYXllciAxIHN1YiBsYXllcmxlbiBtb2QgZ2V0AAlhbG9hZCBwb3Agc2V0aHNiY29sb3IACS9ub2RlY29sb3Ige25vcGNvbG9yfSBkZWYACS9lZGdlY29sb3Ige25vcGNvbG9yfSBkZWYACS9ncmFwaGNvbG9yIHtub3Bjb2xvcn0gZGVmAC9vbmxheWVyIHsgY3VybGF5ZXIgbmUge2ludmlzfSBpZiB9IGRlZgAvb25sYXllcnMgewAJL215dXBwZXIgZXhjaCBkZWYACS9teWxvd2VyIGV4Y2ggZGVmAAljdXJsYXllciBteWxvd2VyIGx0AAljdXJsYXllciBteXVwcGVyIGd0AAlvcgAJe2ludmlzfSBpZgAvY3VybGF5ZXIgMCBkZWYAJSVFbmRSZXNvdXJjZQAlJUVuZFByb2xvZwAlJUJlZ2luU2V0dXAAMTQgZGVmYXVsdC1mb250LWZhbWlseSBzZXRfZm9udAAlIC9hcnJvd2xlbmd0aCAxMCBkZWYAJSAvYXJyb3d3aWR0aCA1IGRlZgAlIG1ha2Ugc3VyZSBwZGZtYXJrIGlzIGhhcm1sZXNzIGZvciBQUy1pbnRlcnByZXRlcnMgb3RoZXIgdGhhbiBEaXN0aWxsZXIAL3BkZm1hcmsgd2hlcmUge3BvcH0ge3VzZXJkaWN0IC9wZGZtYXJrIC9jbGVhcnRvbWFyayBsb2FkIHB1dH0gaWZlbHNlACUgbWFrZSAnPDwnIGFuZCAnPj4nIHNhZmUgb24gUFMgTGV2ZWwgMSBkZXZpY2VzAC9sYW5ndWFnZWxldmVsIHdoZXJlIHtwb3AgbGFuZ3VhZ2VsZXZlbH17MX0gaWZlbHNlADIgbHQgewAgICAgdXNlcmRpY3QgKDw8KSBjdm4gKFspIGN2biBsb2FkIHB1dAAgICAgdXNlcmRpY3QgKD4+KSBjdm4gKFspIGN2biBsb2FkIHB1dAB9IGlmACUlRW5kU2V0dXAAJSVUcmFpbGVyCgAlJSUlUGFnZXM6ICVkCgBlbmQKcmVzdG9yZQoAJSVFT0YKACUhUFMtQWRvYmUtMy4wACBFUFNGLTMuMAoAJSUlJUNyZWF0b3I6ICVzIHZlcnNpb24gJXMgKCVzKQoAcHMyOnBzADwhLS0gADxwb2x5bGluZQAgcG9pbnRzPSIAIi8+CgAgZmlsbD0iAHVybCgjbF8lZCkAdXJsKCNyXyVkKQAiIGZpbGwtb3BhY2l0eT0iJWYAIiBzdHJva2U9IgAiIHN0cm9rZS13aWR0aD0iACIgc3Ryb2tlLWRhc2hhcnJheT0iJXMANSwyADEsNQAiIHN0cm9rZS1vcGFjaXR5PSIlZgBndnJlbmRlcl9jb3JlX3N2Zy5jAHN2Z19wcmludF9jb2xvcgA8cGF0aAAgaWQ9IgBfcCIgACBkPSIAJWMAPGRlZnM+CjxyYWRpYWxHcmFkaWVudCBpZD0icl8lZCIgY3g9IjUwJSUiIGN5PSI1MCUlIiByPSI3NSUlIiBmeD0iJWQlJSIgZnk9IiVkJSUiPgoAPHN0b3Agb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjoAO3N0b3Atb3BhY2l0eToAMS4AOyIvPgoAPHN0b3Agb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjoAOyIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8L2RlZnM+CgA8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJsXyVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgAHgxPSIAIiB5MT0iACIgeDI9IgAiIHkyPSIAIiA+CgA8c3RvcCBvZmZzZXQ9IiUuMDNmIiBzdHlsZT0ic3RvcC1jb2xvcjoAOyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+CgA8cG9seWdvbgA8ZWxsaXBzZQAgY3g9IgAiIGN5PSIAIiByeD0iACIgcnk9IgA8dGV4dAAgdGV4dC1hbmNob3I9InN0YXJ0IgAgdGV4dC1hbmNob3I9ImVuZCIAIHRleHQtYW5jaG9yPSJtaWRkbGUiACB4PSIAIiB5PSIAIGZvbnQtZmFtaWx5PSIlcwAsJXMAIGZvbnQtd2VpZ2h0PSIlcyIAIGZvbnQtc3RyZXRjaD0iJXMiACBmb250LXN0eWxlPSIlcyIAIGZvbnQtZmFtaWx5PSIlcyIAIGZvbnQtd2VpZ2h0PSJib2xkIgAgZm9udC1zdHlsZT0iaXRhbGljIgAgdGV4dC1kZWNvcmF0aW9uPSIAJXNvdmVybGluZQAlc2xpbmUtdGhyb3VnaAAgYmFzZWxpbmUtc2hpZnQ9InN1cGVyIgAgYmFzZWxpbmUtc2hpZnQ9InN1YiIAIGZvbnQtc2l6ZT0iJS4yZiIAIGZpbGw9IiVzIgAgZmlsbD0iIyUwMnglMDJ4JTAyeCIAc3ZnX3RleHRzcGFuAD4APHRleHRQYXRoIHhsaW5rOmhyZWY9IiMlc19wIiBzdGFydE9mZnNldD0iNTAlJSI+ADx0c3BhbiB4PSIwIiBkeT0iACI+ADwvdHNwYW4+PC90ZXh0UGF0aD4APC90ZXh0PgoAPC9nPgoAPGcAIGlkPSJhXwAgeGxpbms6aHJlZj0iACB4bGluazp0aXRsZT0iACB0YXJnZXQ9IgA8dGl0bGU+ADwvdGl0bGU+CgA8ZyBpZD0iAF8lcwAiIGNsYXNzPSIlcwBjbGFzcwAgdHJhbnNmb3JtPSJzY2FsZSgAKSByb3RhdGUoJWQpIHRyYW5zbGF0ZSgAKSI+CgA8L3N2Zz4KADwhLS0AIFBhZ2VzOiAlZCAtLT4KADxzdmcgd2lkdGg9IiVkcHQiIGhlaWdodD0iJWRwdCIKACB2aWV3Qm94PSIlLjJmICUuMmYgJS4yZiAlLjJmIgAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PgoAc3R5bGVzaGVldAA8P3htbC1zdHlsZXNoZWV0IGhyZWY9IgAiIHR5cGU9InRleHQvY3NzIj8+CgA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iCgAgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CgA8IS0tIEdlbmVyYXRlZCBieSAAZGFya2JsdWUAZGFya2N5YW4AZGFya2dyYXkAZGFya2dyZXkAZGFya21hZ2VudGEAZGFya3JlZABsaWdodGdyZWVuACMgACBjcmVhdGUgbGluZSAAIC1maWxsIAAgLWRhc2ggNQAgLWRhc2ggMgBndnJlbmRlcl9jb3JlX3RrLmMAdGtnZW5fcHJpbnRfdGFncwBncmFwaCBsYWJlbAAgLXRhZ3MgeyVkJXMlcH0AdGtnZW5fcHJpbnRfY29sb3IAJGMAIC13aWR0aCAAIC1zbW9vdGggYmV6aWVyIAAgY3JlYXRlIHBvbHlnb24gACAtb3V0bGluZSAAIGNyZWF0ZSBvdmFsIAAgY3JlYXRlIHRleHQgACAtdGV4dCB7AH0AIC1mb250IHsAICVkfQAgLWFuY2hvciB3ACAtYW5jaG9yIGUAIwAgVGl0bGU6IAAgUGFnZXM6ICVkCgAjIEdlbmVyYXRlZCBieSAAKQoAdGsAdGs6dGsAICAgICAgPCEtLSAAIC0tPgoARXJyb3IgZHVyaW5nIGNvbnZlcnNpb24gdG8gIlVURi04Ii4gIFF1aXRpbmcuCgAgPHY6c2hhcGUgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyAAIHdpZHRoOiAlZDsgaGVpZ2h0OiAlZCIgZmlsbGVkPSJmYWxzZSI+ADx2OnBhdGggdj0iACBtIAAlLjBmLCUuMGYgACBsIAAgZSAAIi8+ADwvdjpzaGFwZT4KADx2OnN0cm9rZSBjb2xvcj0iACIgd2VpZ2h0PSIlLjBmcHQAIiBkYXNoc3R5bGU9ImRhc2gAIiBkYXNoc3R5bGU9ImRvdAAiIC8+ACMlMDJ4JTAyeCUwMngAZ3ZyZW5kZXJfY29yZV92bWwuYwB2bWxfcHJpbnRfY29sb3IAIHdpZHRoOiAlZDsgaGVpZ2h0OiAlZCIAID4APHY6cGF0aCAgdj0iAC8+PC92OnNoYXBlPgoAbSAAJXMlLjBmLCUuMGYgAGMgACBmaWxsZWQ9InRydWUiIGZpbGxjb2xvcj0iACIgACBmaWxsZWQ9ImZhbHNlIiAAJS4wZiAlLjBmIABsIAB4IGUgIi8+ACAgPHY6b3ZhbCBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7ACBsZWZ0OiAlLjJmOyB0b3A6ICUuMmY7ACB3aWR0aDogJS4yZjsgaGVpZ2h0OiAlLjJmIgA8L3Y6b3ZhbD4KADx2OnJlY3Qgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyAAIHN0cm9rZWQ9ImZhbHNlIiBmaWxsZWQ9ImZhbHNlIj4KADx2OnRleHRib3ggaW5zZXQ9IjAsMCwwLDAiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdi10ZXh0LXdyYXBwaW5nOidmYWxzZSc7cGFkZGluZzonMCc7AGZvbnQtZmFtaWx5OiAnJXMnOwBmb250LXdlaWdodDogJXM7AGZvbnQtc3RyZXRjaDogJXM7AGZvbnQtc3R5bGU6ICVzOwAgZm9udC1zaXplOiAlLjJmcHQ7AGNvbG9yOiVzOwBjb2xvcjojJTAyeCUwMnglMDJ4OwB2bWxfdGV4dHNwYW4AIj48Y2VudGVyPgA8L2NlbnRlcj48L3Y6dGV4dGJveD4KADwvdjpyZWN0PgoAPC9hPgoAPGEAIGhyZWY9IiVzIgAgdGl0bGU9IiVzIgAgdGFyZ2V0PSIlcyIAPgoAPC92Omdyb3VwPgoAPC9ESVY+CgA8RElWIGlkPSdfVk1MMl8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTt2aXNpYmlsaXR5OmhpZGRlbiI+CgA8IS0tIGluc2VydCBhbnkgb3RoZXIgaHRtbCBjb250ZW50IGhlcmUgLS0+CgA8RElWIGlkPSdfbm90Vk1MMV8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgoAPCEtLSB0aGlzIHNob3VsZCBvbmx5IGRpc3BsYXkgb24gTk9OLUlFIGJyb3dzZXJzIC0tPgoAPEgyPlNvcnJ5LCB0aGlzIGRpYWdyYW0gd2lsbCBvbmx5IGRpc3BsYXkgY29ycmVjdGx5IG9uIEludGVybmV0IEV4cGxvcmVyIDUgKGFuZCB1cCkgYnJvd3NlcnMuPC9IMj4KADxESVYgaWQ9J19ub3RWTUwyXycgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyI+CgA8IS0tIGluc2VydCBhbnkgb3RoZXIgTk9OLUlFIGh0bWwgY29udGVudCBoZXJlIC0tPgoAPC9CT0RZPgo8L0hUTUw+CgA8SEVBRD4APE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgoAPFRJVExFPgA8L1RJVExFPgA8IS0tIFBhZ2VzOiAlZCAtLT4KACAgIDxTQ1JJUFQgTEFOR1VBR0U9J0phdmFzY3JpcHQnPgoAICAgZnVuY3Rpb24gYnJvd3NlcmNoZWNrKCkKACAgIHsKACAgICAgIHZhciB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50CgAgICAgICB2YXIgbXNpZSA9IHVhLmluZGV4T2YgKCAnTVNJRSAnICkKACAgICAgIHZhciBpZXZlcnM7CgAgICAgICB2YXIgaXRlbTsKACAgICAgIHZhciBWTUx5ZXM9bmV3IEFycmF5KCdfVk1MMV8nLCdfVk1MMl8nKTsKACAgICAgIHZhciBWTUxubz1uZXcgQXJyYXkoJ19ub3RWTUwxXycsJ19ub3RWTUwyXycpOwoAICAgICAgaWYgKCBtc2llID4gMCApeyAgICAgIC8vIElmIEludGVybmV0IEV4cGxvcmVyLCByZXR1cm4gdmVyc2lvbiBudW1iZXIKACAgICAgICAgIGlldmVycz0gcGFyc2VJbnQgKHVhLnN1YnN0cmluZyAobXNpZSs1LCB1YS5pbmRleE9mICgnLicsIG1zaWUgKSkpCgAgICAgICB9CgAgICAgICBpZiAoaWV2ZXJzPj01KXsKACAgICAgICBmb3IgKHggaW4gVk1MeWVzKXsKACAgICAgICAgIGl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChWTUx5ZXNbeF0pOwoAICAgICAgICAgaWYgKGl0ZW0pIHsKACAgICAgICAgICAgaXRlbS5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJzsKACAgICAgICAgIH0KACAgICAgICB9CgAgICAgICAgZm9yICh4IGluIFZNTG5vKXsKACAgICAgICAgIGl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChWTUxub1t4XSk7CgAgICAgICAgICAgIGl0ZW0uc3R5bGUudmlzaWJpbGl0eT0naGlkZGVuJzsKACAgICAgfWVsc2V7CgAgICAgIH0KACAgIH0KACAgIDwvU0NSSVBUPgoAPC9IRUFEPgA8Qk9EWSBvbmxvYWQ9J2Jyb3dzZXJjaGVjaygpOyc+CgA8RElWIGlkPSdfVk1MMV8nIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTppbmxpbmU7IHZpc2liaWxpdHk6aGlkZGVuACB3aWR0aDogJWRwdDsgaGVpZ2h0OiAlZHB0Ij4KADxTVFlMRT4KAHZcOiogeyBiZWhhdmlvcjogdXJsKCNkZWZhdWx0I1ZNTCk7ZGlzcGxheTppbmxpbmUtYmxvY2t9CgA8L1NUWUxFPgoAPHhtbDpuYW1lc3BhY2UgbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIiBwcmVmaXg9InYiIC8+CgAgPHY6Z3JvdXAgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyAAIHdpZHRoOiAlZHB0OyBoZWlnaHQ6ICVkcHQiACBjb29yZG9yaWdpbj0iMCwwIiBjb29yZHNpemU9IiVkLCVkIiA+ADxIVE1MPgoACjwhLS0gR2VuZXJhdGVkIGJ5IAAgdmVyc2lvbiAAICgAKQotLT4KAGFxdWEAZnVjaHNpYQBsaW1lAG9saXZlAHRlYWwAdm1sAHZtbDp2bWwALy8qKiogY29tbWVudDogJXMKAC8vKioqIHBvbHlsaW5lCgBzY2FsZSAgICA8JTkuM2YsICU5LjNmLCAlOS4zZj4KAHJvdGF0ZSAgIDwlOS4zZiwgJTkuM2YsICU5LjNmPgoAdHJhbnNsYXRlPCU5LjNmLCAlOS4zZiwgJTkuM2Y+CgBzcGhlcmVfc3dlZXAgewogICAgJXMKICAgICVkLAoAbGluZWFyX3NwbGluZQA8JTkuM2YsICU5LjNmLCAlOS4zZj4sICUuM2YKACVzICAgICVzACAgICB0b2xlcmFuY2UgMC4wMQogICAgJXMgICAgJXMgICAgJXMgICAgJXN9CgAlcyVzACVzIHRyYW5zbWl0ICUuM2YAUmVkAEdyZWVuAEJsdWUAcmdiPCU5LjNmLCAlOS4zZiwgJTkuM2Y+IHRyYW5zbWl0ICUuM2YAb29wcywgaW50ZXJuYWwgZXJyb3I6IHVuaGFuZGxlZCBjb2xvciB0eXBlPSVkICVzCgBndnJlbmRlcl9jb3JlX3Bvdi5jAHBvdl9jb2xvcl9hc19zdHIAcGlnbWVudCB7IGNvbG9yICVzIH0KAHBvdiByZW5kZXJlcjplbCAtICVzCgAvLyoqKiBiZXppZXIKAGJfc3BsaW5lACAgICAgICAgdG9sZXJhbmNlIDAuMDEKICAgICVzICAgICVzICAgICVzICAgICVzfQoALy8qKiogcG9seWdvbgoAICAgIHRvbGVyYW5jZSAwLjEKICAgICVzICAgICVzICAgICVzICAgICVzfQoAcG9seWdvbiB7ICVkLAoAPCU5LjNmLCAlOS4zZiwgJTkuM2Y+ACVzCiAgICAlcwAKICAgICVzICAgICVzICAgICVzICAgICVzfQoALy8qKiogZWxsaXBzZQoAdG9ydXMgeyAlLjNmLCAlLjNmCiAgICAlcyAgICAlcyAgICAlcyAgICAlc30KAHNwaGVyZSB7PCU5LjNmLCAlOS4zZiwgJTkuM2Y+LCAxLjAKICAgICVzICAgICVzICAgICVzICAgICVzfQoALy8qKiogdGV4dHNwYW46ICVzLCBmb250c2l6ZSA9ICUuM2YsIGZvbnRuYW1lID0gJXMKAHNjYWxlICUuM2YKAHRleHQgewogICAgdHRmICIlcyIsCiAgICAiJXMiLCAlLjNmLCAlLjNmCiAgICAlcyAgICAlcyAgICAlcyAgICAlcyAgICAlc30KACAgICBub19zaGFkb3cKAC8vKioqIGVuZF9lZGdlCgAvLyoqKiBiZWdpbl9lZGdlCgAvLyoqKiBlbmRfbm9kZQoALy8qKiogYmVnaW5fbm9kZTogJXMKAC8vKioqIGVuZF9jbHVzdGVyCgAvLyoqKiBiZWdpbl9jbHVzdGVyCgAvLyoqKiBlbmRfcGFnZQoALy8qKiogYmVnaW5fcGFnZQoALy8qKiogZW5kX2xheWVyCgAvLyoqKiBiZWdpbl9sYXllcjogJXMsICVkLyVkCgAvLyoqKiBlbmRfZ3JhcGgKAC8vKioqIGJlZ2luX2dyYXBoICVzCgBjYW1lcmEgeyBsb2NhdGlvbiA8JS4zZiAsICUuM2YgLCAlLjNmPgogICAgICAgICBsb29rX2F0ICA8JS4zZiAsICUuM2YgLCAlLjNmPgogICAgICAgICByaWdodCB4ICogaW1hZ2Vfd2lkdGggLyBpbWFnZV9oZWlnaHQKICAgICAgICAgYW5nbGUgJS4zZgp9CgAvL3NreQpwbGFuZSB7IDwwLCAxLCAwPiwgMSBob2xsb3cKICAgIHRleHR1cmUgewogICAgICAgIHBpZ21lbnQgeyBib3pvIHR1cmJ1bGVuY2UgMC45NQogICAgICAgICAgICBjb2xvcl9tYXAgewogICAgICAgICAgICAgICAgWzAuMDAgcmdiIDwwLjA1LCAwLjIwLCAwLjUwPl0KICAgICAgICAgICAgICAgIFswLjUwIHJnYiA8MC4wNSwgMC4yMCwgMC41MD5dCiAgICAgICAgICAgICAgICBbMC43NSByZ2IgPDEuMDAsIDEuMDAsIDEuMDA+XQogICAgICAgICAgICAgICAgWzAuNzUgcmdiIDwwLjI1LCAwLjI1LCAwLjI1Pl0KICAgICAgICAgICAgICAgIFsxLjAwIHJnYiA8MC41MCwgMC41MCwgMC41MD5dCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2NhbGUgPDEuMDAsIDEuMDAsIDEuNTA+ICogMi41MAogICAgICAgICAgICB0cmFuc2xhdGUgPDAuMDAsIDAuMDAsIDAuMDA+CiAgICAgICAgfQogICAgICAgIGZpbmlzaCB7IGFtYmllbnQgMSBkaWZmdXNlIDAgfQogICAgfQogICAgc2NhbGUgMTAwMDAKfQovL21pc3QKZm9nIHsgZm9nX3R5cGUgMgogICAgZGlzdGFuY2UgNTAKICAgIGNvbG9yIHJnYiA8MS4wMCwgMS4wMCwgMS4wMD4gKiAwLjc1CiAgICBmb2dfb2Zmc2V0IDAuMTAKICAgIGZvZ19hbHQgMS41MAogICAgdHVyYnVsZW5jZSAxLjc1Cn0KLy9nbmQKcGxhbmUgeyA8MC4wMCwgMS4wMCwgMC4wMD4sIDAKICAgIHRleHR1cmUgewogICAgICAgIHBpZ21lbnR7IGNvbG9yIHJnYiA8MC4yNSwgMC40NSwgMC4wMD4gfQogICAgICAgIG5vcm1hbCB7IGJ1bXBzIDAuNzUgc2NhbGUgMC4wMSB9CiAgICAgICAgZmluaXNoIHsgcGhvbmcgMC4xMCB9CiAgICB9Cn0KAGxpZ2h0X3NvdXJjZSB7IDwxNTAwLDMwMDAsLTI1MDA+IGNvbG9yIFdoaXRlIH0KACN2ZXJzaW9uIDMuNjsKAGdsb2JhbF9zZXR0aW5ncyB7IGFzc3VtZWRfZ2FtbWEgMS4wIH0KACNkZWZhdWx0IHsgZmluaXNoIHsgYW1iaWVudCAwLjEgZGlmZnVzZSAwLjkgfSB9CgAjaW5jbHVkZSAiY29sb3JzLmluYyIKI2luY2x1ZGUgInRleHR1cmVzLmluYyIKI2luY2x1ZGUgInNoYXBlcy5pbmMiCgAjZGVjbGFyZSAlcyA9ICVzOwoAQmxhY2sAV2hpdGUAYmFrZXJzY2hvYwBicmFzcwBicmlnaHRnb2xkAGJyb256ZQBicm9uemUyAGNsZWFyAGNvb2xjb3BwZXIAY29wcGVyAGRhcmticm93bgBkYXJrcHVycGxlAGRhcmt0YW4AZGFya3dvb2QAZGtncmVlbmNvcHBlcgBkdXN0eXJvc2UAZmVsZHNwYXIAZmxlc2gAZ3JheTA1AGdyZWVuY29wcGVyAGh1bnRlcnNncmVlbgBsaWdodF9wdXJwbGUAbGlnaHR3b29kAG1hbmRhcmlub3JhbmdlAG1lZGl1bWZvcmVzdGdyZWVuAG1lZGl1bWdvbGRlbnJvZABtZWRpdW13b29kAG1lZF9wdXJwbGUAbWljYQBuZW9uYmx1ZQBuZW9ucGluawBuZXdtaWRuaWdodGJsdWUAbmV3dGFuAG9sZGdvbGQAcXVhcnR6AHJpY2hibHVlAHNjYXJsZXQAc2VtaVN3ZWV0Q2hvYwBzaWx2ZXIAc3BpY3lwaW5rAHN1bW1lcnNreQB2ZXJ5ZGFya2Jyb3duAHZlcnlfbGlnaHRfcHVycGxlAHBvdgBwb3Y6cG92ACVzICVzCgAuXCIgACAlZCAlZAAgJXMKACAlZABmaWxsIABlbGxpcHNlIGF0dHJzJWQgJXN3aWQgJS41ZiBodCAlLjVmIGF0ICglLjVmLCUuNWYpOwoALmZ0ICVzCgAucHMgJWQqXG4oU0Z1LyUuMGZ1CgAiJXMiIGF0ICglLjVmLCUuNWYpOwoAJTAzbwAlcyVzIGlzIG5vdCBhIHRyb2ZmIGZvbnQKAGRvdCBwaWMgcGx1Z2luOiAAUgBdCi5QRQoALlBTICUuNWYgJS41ZgoAJXMgdG8gY2hhbmdlIGRyYXdpbmcgc2l6ZSwgbXVsdGlwbHkgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb24gdGhlIC5QUyBsaW5lIGFib3ZlIGFuZCB0aGUgbnVtYmVyIG9uIHRoZSB0d28gbGluZXMgYmVsb3cgKHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlcikgYnkgYSBzY2FsZSBmYWN0b3IKAC5uciBTRiAlLjBmCnNjYWxldGhpY2tuZXNzID0gJS4wZgoAJXMgZG9uJ3QgY2hhbmdlIGFueXRoaW5nIGJlbG93IHRoaXMgbGluZSBpbiB0aGlzIGRyYXdpbmcKACVzIG5vbi1mYXRhbCBydW4tdGltZSBwaWMgdmVyc2lvbiBkZXRlcm1pbmF0aW9uLCB2ZXJzaW9uIDIKAGJveHJhZD0yLjAgJXMgd2lsbCBiZSByZXNldCB0byAwLjAgYnkgZ3BpYyBvbmx5CgBzY2FsZT0xLjAgJXMgcmVxdWlyZWQgZm9yIGNvbXBhcmlzb25zCgAlcyBib3hyYWQgaXMgbm93IDAuMCBpbiBncGljLCBlbHNlIGl0IHJlbWFpbnMgMi4wCgAlcyBkYXNod2lkIGlzIDAuMSBpbiAxMHRoIEVkaXRpb24sIDAuMDUgaW4gRFdCIDIgYW5kIGluIGdwaWMKACVzIGZpbGx2YWwgaXMgMC4zIGluIDEwdGggRWRpdGlvbiAoZmlsbCAwIG1lYW5zIGJsYWNrKSwgMC41IGluIGdwaWMgKGZpbGwgMCBtZWFucyB3aGl0ZSksIHVuZGVmaW5lZCBpbiBEV0IgMgoAJXMgZmlsbCBoYXMgbm8gbWVhbmluZyBpbiBEV0IgMiwgZ3BpYyBjYW4gdXNlIGZpbGwgb3IgZmlsbGVkLCAxMHRoIEVkaXRpb24gdXNlcyBmaWxsIG9ubHkKACVzIERXQiAyIGRvZXNuJ3QgdXNlIGZpbGwgYW5kIGRvZXNuJ3QgZGVmaW5lIGZpbGx2YWwKACVzIHJlc2V0IHdvcmtzIGluIGdwaWMgYW5kIDEwdGggZWRpdGlvbiwgYnV0IGlzbid0IGRlZmluZWQgaW4gRFdCIDIKACVzIERXQiAyIGNvbXBhdGliaWxpdHkgZGVmaW5pdGlvbnMKAGlmIGJveHJhZCA+IDEuMCAmJiBkYXNod2lkIDwgMC4wNzUgdGhlbiBYCglmaWxsdmFsID0gMTsKCWRlZmluZSBmaWxsIFkgWTsKCWRlZmluZSBzb2xpZCBZIFk7CglkZWZpbmUgcmVzZXQgWSBzY2FsZT0xLjAgWTsKWAoAcmVzZXQgJXMgc2V0IHRvIGtub3duIHN0YXRlCgAlcyBHTlUgcGljIHZzLiAxMHRoIEVkaXRpb24gZFwoZSd0ZW50ZQoAaWYgZmlsbHZhbCA+IDAuNCB0aGVuIFgKCWRlZmluZSBzZXRmaWxsdmFsIFkgZmlsbHZhbCA9IDEgLSBZOwoJZGVmaW5lIGJvbGQgWSB0aGlja25lc3MgMiBZOwoACSVzIGlmIHlvdSB1c2UgZ3BpYyBhbmQgaXQgYmFyZnMgb24gZW5jb3VudGVyaW5nICJzb2xpZCIsCgAJJXMJaW5zdGFsbCBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgZ3BpYyBvciBzd2l0Y2ggdG8gRFdCIG9yIDEwdGggRWRpdGlvbiBwaWM7CgAJJXMJc29ycnksIHRoZSBncm9mZiBmb2xrcyBjaGFuZ2VkIGdwaWM7IHNlbmQgYW55IGNvbXBsYWludCB0byB0aGVtOwoAWCBlbHNlIFoKCWRlZmluZSBzZXRmaWxsdmFsIFkgZmlsbHZhbCA9IFk7CglkZWZpbmUgYm9sZCBZIFk7CglkZWZpbmUgZmlsbGVkIFkgZmlsbCBZOwpaCgAlcyBhcnJvd2hlYWQgaGFzIG5vIG1lYW5pbmcgaW4gRFdCIDIsIGFycm93aGVhZCA9IDcgbWFrZXMgZmlsbGVkIGFycm93aGVhZHMgaW4gZ3BpYyBhbmQgaW4gMTB0aCBFZGl0aW9uCgAlcyBhcnJvd2hlYWQgaXMgdW5kZWZpbmVkIGluIERXQiAyLCBpbml0aWFsbHkgMSBpbiBncGljLCAyIGluIDEwdGggRWRpdGlvbgoAYXJyb3doZWFkID0gNyAlcyBub3QgdXNlZCBieSBncmFwaHZpegoAJXMgR05VIHBpYyBzdXBwb3J0cyBhIGJveHJhZCB2YXJpYWJsZSB0byBkcmF3IGJveGVzIHdpdGggcm91bmRlZCBjb3JuZXJzOyBEV0IgYW5kIDEwdGggRWQuIGRvIG5vdAoAYm94cmFkID0gMCAlcyBubyByb3VuZGVkIGNvcm5lcnMgaW4gZ3JhcGh2aXoKACVzIEdOVSBwaWMgc3VwcG9ydHMgYSBsaW5ldGhpY2sgdmFyaWFibGUgdG8gc2V0IGxpbmUgdGhpY2tuZXNzOyBEV0IgYW5kIDEwdGggRWQuIGRvIG5vdAoAbGluZXRoaWNrID0gMDsgb2xkbGluZXRoaWNrID0gbGluZXRoaWNrCgAlcyAuUFMgdy9vIGFyZ3MgY2F1c2VzIEdOVSBwaWMgdG8gc2NhbGUgZHJhd2luZyB0byBmaXQgOC41eDExIHBhcGVyOyBEV0IgZG9lcyBub3QKACVzIG1heHBzaHQgYW5kIG1heHBzd2lkIGhhdmUgbm8gbWVhbmluZyBpbiBEV0IgMi4wLCBzZXQgcGFnZSBib3VuZGFyaWVzIGluIGdwaWMgYW5kIGluIDEwdGggRWRpdGlvbgoAJXMgbWF4cHNodCBhbmQgbWF4cHN3aWQgYXJlIHByZWRlZmluZWQgdG8gMTEuMCBhbmQgOC41IGluIGdwaWMKAG1heHBzaHQgPSAlZgptYXhwc3dpZCA9ICVmCgBEb3Q6IFsKAGRlZmluZSBhdHRyczAgJSUgJSU7IGRlZmluZSB1bmZpbGxlZCAlJSAlJTsgZGVmaW5lIHJvdW5kZWQgJSUgJSU7IGRlZmluZSBkaWFnb25hbHMgJSUgJSUKACVzJXMgdW5zdXBwb3J0ZWQKAHJvdGF0aW9uACVzIHJlc3RvcmUgcG9pbnQgc2l6ZSBhbmQgZm9udAoucHMgXG4oLlMKLmZ0IFxuKERGCgAlcyBDcmVhdG9yOiAlcyB2ZXJzaW9uICVzICglcykKACVzIFRpdGxlOiAlcwoAJXMgc2F2ZSBwb2ludCBzaXplIGFuZCBmb250Ci5uciAuUyBcbigucwoubnIgREYgXG4oLmYKAHBpYwBwaWM6cGljAHBuZzpzdmcAZ2lmOnN2ZwBqcGVnOnN2ZwBqcGU6c3ZnAGpwZzpzdmcAcG5nOmZpZwBnaWY6ZmlnAGpwZWc6ZmlnAGpwZTpmaWcAanBnOmZpZwBwbmc6dnJtbABnaWY6dnJtbABqcGVnOnZybWwAanBlOnZybWwAanBnOnZybWwAZXBzOnBzAHBzOnBzAChsaWIpOnBzAHBuZzptYXAAZ2lmOm1hcABqcGVnOm1hcABqcGU6bWFwAGpwZzptYXAAcHM6bWFwAGVwczptYXAAc3ZnOm1hcABwbmc6ZG90AGdpZjpkb3QAanBlZzpkb3QAanBlOmRvdABqcGc6ZG90AHBzOmRvdABlcHM6ZG90AHN2Zzpkb3QAcG5nOnhkb3QAZ2lmOnhkb3QAanBlZzp4ZG90AGpwZTp4ZG90AGpwZzp4ZG90AHBzOnhkb3QAZXBzOnhkb3QAc3ZnOnhkb3QAc3ZnOnN2ZwBwbmc6dm1sAGdpZjp2bWwAanBlZzp2bWwAanBlOnZtbABqcGc6dm1sAGdpZjp0awBpbWFnZSBjcmVhdGUgcGhvdG8gInBob3RvXyVzIiAtZmlsZSAiJXMiCgAkYyBjcmVhdGUgaW1hZ2UgJS4yZiAlLjJmIC1pbWFnZSAicGhvdG9fJXMiCgA8djppbWFnZSBzcmM9IiVzIiBzdHlsZT0iIHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDolLjJmOyBoZWlnaHQ6JS4yZjsgbGVmdDolLjJmIDsgdG9wOiUuMmYiACAvPgoAZ3Zsb2FkaW1hZ2VfY29yZS5jAGNvcmVfbG9hZGltYWdlX3BzbGliAFsgACVnICVnIABdICAlZCB0cnVlICVzCgBdICAlZCBmYWxzZSAlcwoAY29yZV9sb2FkaW1hZ2VfcHMAZ3NhdmUgJWcgJWcgdHJhbnNsYXRlIG5ld3BhdGgKAHVzZXJfc2hhcGVfJWQKAGdyZXN0b3JlCgBjb3JlX2xvYWRpbWFnZV92cm1sAFNoYXBlIHsKACAgYXBwZWFyYW5jZSBBcHBlYXJhbmNlIHsKACAgICBtYXRlcmlhbCBNYXRlcmlhbCB7CgAgICAgICBhbWJpZW50SW50ZW5zaXR5IDAuMzMKACAgICAgICAgZGlmZnVzZUNvbG9yIDEgMSAxCgAgICAgfQoAICAgIHRleHR1cmUgSW1hZ2VUZXh0dXJlIHsgdXJsICIlcyIgfQoAICB9CgBjb3JlX2xvYWRpbWFnZV9maWcAJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJWQgJS4xZiAlZCAlZCAlZCAlZCAlZCAlZAogJWQgJXMKACAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZCAlZAoAY29yZV9sb2FkaW1hZ2Vfc3ZnADxpbWFnZSB4bGluazpocmVmPSIAIiB3aWR0aD0iJWdweCIgaGVpZ2h0PSIlZ3B4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IiB4PSIlZyIgeT0iJWciACB0cmFuc2Zvcm09InJvdGF0ZSglZCAlZyAlZykiACIgd2lkdGg9IiVncHgiIGhlaWdodD0iJWdweCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4gbWVldCIgeD0iJWciIHk9IiVnIgAvPgoAZG90X2xheW91dABwaGFzZQBkb3QgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYXNwZWN0IGF0dHJpYnV0ZSBmb3IgZGlzY29ubmVjdGVkIGdyYXBocyBvciBncmFwaHMgd2l0aCBjbHVzdGVycwoAY29tcG91bmQAdiA9PSBuAGRvdGluaXQuYwByZW1vdmVfZnJvbV9yYW5rAG9yZGVyAGVkZ2UgbGFiZWxzIHdpdGggc3BsaW5lcz1jdXJ2ZWQgbm90IHN1cHBvcnRlZCBpbiBkb3QgLSB1c2UgeGxhYmVscwoARURfbGFiZWwoZmUpAGRvdHNwbGluZXMuYwBfZG90X3NwbGluZXMAZmxhdCBlZGdlIGJldHdlZW4gYWRqYWNlbnQgbm9kZXMgb25lIG9mIHdoaWNoIGhhcyBhIHJlY29yZCBzaGFwZSAtIHJlcGxhY2UgcmVjb3JkcyB3aXRoIEhUTUwtbGlrZSBsYWJlbHMKACAgRWRnZSAlcyAlcyAlcwoAeHh4ADEwMDAwAHslc30AYXV4ZwBsYWJlbF9mbG9hdABmaXhlZAAobCA9IEVEX2xhYmVsKGZlKSkAc2V0RWRnZUxhYmVsUG9zAGUgIT0gTlVMTABmYXN0Z3IuYwBkZWxldGVfZmFzdF9lZGdlAG4gIT0gTkRfbmV4dChuKQBmYXN0X25vZGUAdSAhPSB2AGZhc3Rfbm9kZWFwcABORF9uZXh0KHYpID09IE5VTEwAZmluZF9mYXN0X25vZGUoZywgbikAZGVsZXRlX2Zhc3Rfbm9kZQBkZWxldGVfZmxhdF9lZGdlAG1lcmdlX29uZXdheSBnbGl0Y2gKAG1lcmdlX29uZXdheQBzYWZlX2RlbGV0ZV9mYXN0X2VkZ2UAbGcAaW5mbwBjb21wAGNudCA9PSBzegBtaW5jcm9zcy5jAGZpeExhYmVsT3JkZXIAcmVtaW5jcm9zcwBtaW5jcm9zcyAlczogJWQgY3Jvc3NpbmdzLCAlLjJmIHNlY3MuCgB2AG5laWdoYm9yAChydiA9PSAwKSB8fCAoTkRfb3JkZXIocnYpLU5EX29yZGVyKHYpKSpkaXIgPiAwAGNvbnN0cmFpbmluZ19mbGF0X2VkZ2UoZyx2LGUpID09IEZBTFNFAGZsYXRfcmVvcmRlcgBORF9yYW5rKHYpID09IHIAcG9zdG9yZGVyAGZsYXRpbmRleChhZ2hlYWQoZSkpIDwgTS0+bnJvd3MAZmxhdF9zZWFyY2gAZmxhdGluZGV4KGFndGFpbChlKSkgPCBNLT5uY29scwBvdXQAb3JkZXJpbmcgJyVzJyBub3QgcmVjb2duaXplZC4KAG9yZGVyaW5nICclcycgbm90IHJlY29nbml6ZWQgZm9yIG5vZGUgJyVzJy4KAG1lcmdlMjogZ3JhcGggJXMsIHJhbmsgJWQgaGFzIG9ubHkgJWQgPCAlZCBub2RlcwoAbWluY3Jvc3M6IHBhc3MgJWQgaXRlciAlZCB0cnlpbmcgJWQgY3VyX2Nyb3NzICVkIGJlc3RfY3Jvc3MgJWQKAE5EX29yZGVyKHYpIDwgTkRfb3JkZXIodykAYmFsYW5jZQB0cmFuc3Bvc2Vfc3RlcABzdXJwcmlzZQoAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiAlcyAlcyByYW5rICVkIGkgPSAlZCBhbiA9IDAKAEdEX3JhbmsoZylbcl0ubiA8PSBHRF9yYW5rKGcpW3JdLmFuAGluc3RhbGxfaW5fcmFuawBpbnN0YWxsX2luX3JhbmssIGxpbmUgJWQ6IE5EX29yZGVyKCVzKSBbJWRdID4gR0RfcmFuayhSb290KVslZF0uYW4gWyVkXQoAaW5zdGFsbF9pbl9yYW5rLCBsaW5lICVkOiByYW5rICVkIG5vdCBpbiByYW5rIHJhbmdlIFslZCwlZF0KAGluc3RhbGxfaW5fcmFuaywgbGluZSAlZDogR0RfcmFuayhnKVslZF0udiArIE5EX29yZGVyKCVzKSBbJWRdID4gR0RfcmFuayhnKVslZF0uYXYgKyBHRF9yYW5rKFJvb3QpWyVkXS5hbiBbJWRdCgBfbmV3X3JhbmsAbWNsaW1pdAByYW5rKGcsIDIsIG5zaXRlcjIoZykpID09IDAAcG9zaXRpb24uYwBkb3RfcG9zaXRpb24AQVI9JTAuNGxmCSBBcmVhPSAlMC40bGYJAER1bW15PSVkCgBHb2luZyB0byBhcHBseSBhbm90aGVyIGV4cGFuc2lvbi4KAG5leHQjaXRlcj0lZAoAaHAAY29ubmVjdEdyYXBoAEVkZ2UgbGVuZ3RoICVmIGxhcmdlciB0aGFuIG1heGltdW0gJXUgYWxsb3dlZC4KQ2hlY2sgZm9yIG92ZXJ3aWRlIG5vZGUocykuCgBuc2xpbWl0AGNvbnRhaW5fbm9kZXMgY2x1c3QgJXMgcmFuayAlZCBtaXNzaW5nIG5vZGUKAG5zbGltaXQxAG5ld3JhbmsATWF4cmFuayA9ICVkLCBtaW5yYW5rID0gJWQKAGxlYWRlciAhPSBOVUxMAHJhbmsuYwBjbHVzdGVyX2xlYWRlcgAoTkRfVUZfc2l6ZShuKSA8PSAxKSB8fCAobiA9PSBsZWFkZXIpAGFnaGVhZChlKSA9PSBVRl9maW5kKGFnaGVhZChlKSkAbWlubWF4X2VkZ2VzAGFndGFpbChlKSA9PSBVRl9maW5kKGFndGFpbChlKSkAcmFuawBzYW1lAG1pbgBzb3VyY2UAbWF4AHNpbmsAbGV2ZWwgYXNzaWdubWVudCBjb25zdHJhaW50cwBsZXZlbCBncmFwaCByZWMAf3Jvb3QAf3RvcAB/Ym90AGNvbXBhY3QAX3dlYWtfJWQAcmFua2luZzogZmFpbHVyZSB0byBjcmVhdGUgc3Ryb25nIGNvbnN0cmFpbnQgZWRnZSBiZXR3ZWVuIG5vZGVzICVzIGFuZCAlcwoAJXMgaGFzIHVucmVjb2duaXplZCByYW5rPSVzAGxldmVsIGVkZ2UgcmVjAGxldmVsIG5vZGUgcmVjAHNhbWVoZWFkAHNhbWV0YWlsAHRvbyBtYW55ICg+ICVkKSBzYW1le2hlYWQsdGFpbH0gZ3JvdXBzIGZvciBub2RlICVzCgBjb21iaUFSID0gJWxmCgAlbGYsJWQAdGhlIGFzcGVjdCBhdHRyaWJ1dGUgaGFzIGJlZW4gZGlzYWJsZWQgZHVlIHRvIGltcGxlbWVudGF0aW9uIGZsYXdzIC0gYXR0cmlidXRlIGlnbm9yZWQuCgBFRF90b192aXJ0KGUpID09IE5VTEwAY2xhc3MyLmMAbWVyZ2VfY2hhaW4ARURfdG9fdmlydChvcmlnKSA9PSBOVUxMAG1ha2VfY2hhaW4ARURfdG9fdmlydChvcmlnKSAhPSBOVUxMAE5EX3JhbmsoZnJvbSkgPCBORF9yYW5rKHRvKQBjbHVzdGVyLmMAbWFwX3BhdGgAJXMgd2FzIGFscmVhZHkgaW4gYSByYW5rc2V0LCBkZWxldGVkIGZyb20gY2x1c3RlciAlcwoAbGhlYWQAbHRhaWwAJXMgLT4gJXM6IHNwbGluZSBzaXplID4gMSBub3Qgc3VwcG9ydGVkCgAlcyAtPiAlczogaGVhZCBub3QgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAJXMgLT4gJXM6IHRhaWwgaXMgaW5zaWRlIGhlYWQgY2x1c3RlciAlcwoAYmV6LT5zZmxhZwBjb21wb3VuZC5jAG1ha2VDb21wb3VuZEVkZ2UAYmV6LT5lZmxhZwAlcyAtPiAlczogdGFpbCBub3QgaW5zaWRlIHRhaWwgY2x1c3RlciAlcwoAJXMgLT4gJXM6IGhlYWQgaXMgaW5zaWRlIHRhaWwgY2x1c3RlciAlcwoAc2VnbWVudCBbJXMsJXNdIGRvZXMgbm90IGludGVyc2VjdCBib3ggbGw9JXMsdXI9JXMKAGJveEludGVyc2VjdGYAKCUuNWcsJS41ZykAY2x1c3RlciBuYW1lZCAlcyBub3QgZm91bmQKAGNvbmNlbnRyYXRlPXRydWUgbWF5IG5vdCB3b3JrIGNvcnJlY3RseS4KAHJlYnVpbHRkX3ZsaXN0czogcmFuayBsZWFkICVzIG5vdCBpbiBvcmRlciAlZCBvZiByYW5rICVkCgBkZWdlbmVyYXRlIGNvbmNlbnRyYXRlZCByYW5rICVzLCVkCgBORF9pbihyaWdodCkuc2l6ZSArIE5EX291dChyaWdodCkuc2l6ZSA9PSAwAGNvbmMuYwBtZXJnZXZpcnR1YWwAZG90OiBPdXQgb2YgbWVtb3J5CgBORF9vdXQodikuc2l6ZSA9PSAyAGZsYXQuYwBzZXRib3VuZHMAR0RfbWlucmFuayhnKSA9PSAwAGFib21pbmF0aW9uAEVycm9yAFdhcm5pbmcAJXM6IAB1c2Vyb3V0OiBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5CgBfQUdfc3RyZGF0YQBfQUdfZGF0YWRpY3QAYWdkaWN0b2Y6IHVua25vd24ga2luZCAlZAoAJWMlbGQAbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZQBhZ2RlbGV0ZSBvbiB3cm9uZyBncmFwaABfQUdfcGVuZGluZwBhZ3JlY29yZF9jYWxsYmFjayBvZiBhIGJhZCBvYmplY3QAcGVuZCBkaWN0b2YgYSBiYWQgb2JqZWN0AG1vdmUgdG8gZnJvbnQgbG9jayBpbmNvbnNpc3RlbmN5AFxcAGZhdGFsIGZsZXggc2Nhbm5lciBpbnRlcm5hbCBlcnJvci0tbm8gYWN0aW9uIGZvdW5kACVzCgBmYXRhbCBmbGV4IHNjYW5uZXIgaW50ZXJuYWwgZXJyb3ItLWVuZCBvZiBidWZmZXIgbWlzc2VkAGZhdGFsIGVycm9yIC0gc2Nhbm5lciBpbnB1dCBidWZmZXIgb3ZlcmZsb3cAb3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIGFhZ19nZXRfbmV4dF9idWZmZXIoKQBpbnB1dABzeW50YXggYW1iaWd1aXR5IC0gYmFkbHkgZGVsaW1pdGVkIG51bWJlciAnACcgaW4gbGluZSAlZCBvZiAAIHNwbGl0cyBpbnRvIHR3byB0b2tlbnMKACVzAGxpbmUAJWQgJTFbIl0lbgBvdXQgb2YgZHluYW1p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a01vZGVJbmZvAGFycmF5AGFzcGVjdAAlZgBwYWNrIGluZm86CgAgIG1vZGUgICAlcwoAICBhc3BlY3QgJWYKACAgc2l6ZSAgICVkCgAgIGZsYWdzICAlZAoAdW5kZWZpbmVkAHBhY2sAQXJyb3cgdHlwZSAiJXMiIHVua25vd24gLSBpZ25vcmluZwoAbm9ybWFsAGNyb3cAdGVlAGRvdABpbnYAdmVlAHBlbgBtcHR5AGN1cnZlAGljdXJ2ZQBsAGhhbGYAaW52ZW1wdHkAX2JhY2tncm91bmQAX2RyYXdfAENvdWxkIG5vdCBwYXJzZSAiX2JhY2tncm91bmQiIGF0dHJpYnV0ZSBpbiBncmFwaCAlcwoAICAiJXMiCgBubyBtZW1vcnkgZnJvbSB6bWFsbG9jKCkKAG9iagBlbWl0LmMAcG9wX29ial9zdGF0ZQBjbHVzdAAlbGQAcGFnZSVkLCVkXwBUb3RhbCBzaXplID4gMSBpbiAiJXMiIGNvbG9yIHNwZWMgAElsbGVnYWwgbGVuZ3RoIHZhbHVlIGluICIlcyIgY29sb3IgYXR0cmlidXRlIABjb2xvcnNjaGVtZQBlbWl0X2VkZ2VfbGFiZWwAJXMtJXMAZm9yd2FyZABiYWNrACAtPiAAIC0tIABpbiBlZGdlICVzJXMlcwoAbGFiZWxhbGlnbmVkAGVkZ2VocmVmAGVkZ2VVUkwAbGFiZWxocmVmAGxhYmVsVVJMAHRhaWxocmVmAHRhaWxVUkwAaGVhZGhyZWYAaGVhZFVSTAB0YXJnZXQAZWRnZXRhcmdldABsYWJlbHRhcmdldAB0YWlsdGFyZ2V0AGhlYWR0YXJnZXQAZWRnZXRvb2x0aXAAbGFiZWx0b29sdGlwAHRhaWx0b29sdGlwAGhlYWR0b29sdGlwAAFuZXN0aW5nIG5vdCBhbGxvd2VkIGluIHN0eWxlOiAlcwoAdW5tYXRjaGVkICcpJyBpbiBzdHlsZTogJXMKAHRydW5jYXRpbmcgc3R5bGUgJyVzJwoAdW5tYXRjaGVkICcoJyBpbiBzdHlsZTogJXMKAGFsbABiZ2NvbG9yAGluIGNsdXN0ZXIgJXMKAE1vcmUgdGhhbiAyIGNvbG9ycyBzcGVjaWZpZWQgZm9yIGEgZ3JhZGllbnQgLSBpZ25vcmluZyByZW1haW5pbmcKAGdyYWRpZW50IHBlbiBjb2xvcnMgbm90IHlldCBzdXBwb3J0ZWQuCgBJbWFnZXMgdW5zdXBwb3J0ZWQgaW4gImJhY2tncm91bmQiIGF0dHJpYnV0ZQoAbGF5ZXJzIG5vdCBzdXBwb3J0ZWQgaW4gJXMgb3V0cHV0CgBMYXlvdXQgd2FzIG5vdCBkb25lLiAgTWlzc2luZyBsYXlvdXQgcGx1Z2lucz8gCgBndlJlbmRlckpvYnMgJXM6ICUuMmYgc2Vjcy4KAGxheW91dCB3YXMgbm90IGRvbmUKAHJlbmRlcmVyIGZvciAlcyBpcyB1bmF2YWlsYWJsZQoAcGFnZWRpcj0lcyBpZ25vcmVkCgB2aWV3cG9ydAAlbGYsJWxmLCVsZiwnJVteJ10nACVsZiwlbGYsJWxmLCVbXixdJXMAJWxmLCVsZiwlbGYsJWxmLCVsZgBvdXRwdXRvcmRlcgBvZGVzZmlyc3QAZGdlc2ZpcnN0AGxheWVycwBsYXllcnNlbGVjdABUaGUgbGF5ZXJzZWxlY3QgYXR0cmlidXRlICIlcyIgZG9lcyBub3QgbWF0Y2ggYW55IGxheWVyIHNwZWNpZmVkIGJ5IHRoZSBsYXllcnMgYXR0cmlidXRlIC0gaWdub3JlZC4KAGxheWVyc2VwADoJIABsYXllcmxpc3RzZXAALABUaGUgY2hhcmFjdGVyICclYycgYXBwZWFycyBpbiBib3RoIHRoZSBsYXllcnNlcCBhbmQgbGF5ZXJsaXN0c2VwIGF0dHJpYnV0ZXMgLSBsYXllcmxpc3RzZXAgaWdub3JlZC4KAHBhZABCTABwYWdlZGlyAHNvbGlkAABzZXRsaW5ld2lkdGgAMQAAc3BsLT5zaXplID4gMABpbml0X3NwbGluZXNfYmIAYnouc2l6ZSA+IDAAYmV6aWVyX2JiAGJ6LnNpemUgJSAzID09IDEAbGFiZWwAJWxmAGZvbnRwYXRoAERPVEZPTlRQQVRIAEdERk9OVFBBVEgAaW1hZ2VwYXRoAHF1YW50dW0AcmFua2RpcgBMUgBCVABSTABub2Rlc2VwAHJhbmtzZXAAZXF1YWxseQBzaG93Ym94ZXMAZm9udG5hbWVzAHNpemUAcGFnZQBjZW50ZXIAcm90YXRlAG9yaWVudGF0aW9uAGxhbmRzY2FwZQBjbHVzdGVycmFuawBjb25jZW50cmF0ZQBkcGkAcmVzb2x1dGlvbgBvcmRlcmluZwBncmFkaWVudGFuZ2xlAGZpbGxjb2xvcgBzdHlsZQBmb250c2l6ZQBmb250bmFtZQBmb250Y29sb3IAeGxhYmVsAHBlbndpZHRoAHNpZGVzAHBlcmlwaGVyaWVzAHNrZXcAZGlzdG9ydGlvbgBmaXhlZHNpemUAbm9qdXN0aWZ5AGxheWVyAGdyb3VwAGNvbW1lbnQAdmVydGljZXMAegB3ZWlnaHQAbGFiZWxmbG9hdABkaXIAYXJyb3doZWFkAGFycm93dGFpbABoZWFkbGFiZWwAdGFpbGxhYmVsAGxhYmVsZm9udHNpemUAbGFiZWxmb250bmFtZQBsYWJlbGZvbnRjb2xvcgBsYWJlbGRpc3RhbmNlAGxhYmVsYW5nbGUAbWlubGVuAGRlY29yYXRlAGFycm93c2l6ZQBjb25zdHJhaW50AHRhaWxjbGlwAGhlYWRjbGlwAGlkAGxhYmVsanVzdABsb2NhbABnbG9iYWwAJWxmLCVsZiVjACVsZiVjAHJhdGlvAGF1dG8AY29tcHJlc3MAZXhwYW5kAGZpbGwAZ2QAcHMAc3ZnAGNoYXJzZXQAdXRmLTgAbGF0aW4tMQBsYXRpbjEAbDEASVNPLTg4NTktMQBJU09fODg1OS0xAElTTzg4NTktMQBJU08tSVItMTAwAGJpZy01AGJpZzUAdXRmOABVbnN1cHBvcnRlZCBjaGFyc2V0ICIlcyIgLSBhc3N1bWluZyB1dGYtOAoAaW4gbGFiZWwgb2YgZ3JhcGggJXMKAGluIGxhYmVsIG9mIG5vZGUgJXMKAGluIGxhYmVsIG9mIGVkZ2UgJXMgJXMgJXMKAGtpbmQgPT0gTFRfTk9ORQBsYWJlbHMuYwBtYWtlX2xhYmVsAFxMAFxHAFxFAFxIAFxUACYjMTM7ACYjMTA7ACZxdW90OwAmIzE2MDsAJmFtcDsAJmd0OwAmIzM5OwAmIzQ1OwAmbHQ7ACVzICVkIG5vZGVzICVkIGVkZ2VzIG1heGl0ZXI9JWQgYmFsYW5jZT0lZAoAbmV0d29yayBzaW1wbGV4OiAAJWQgACVzJWQgbm9kZXMgJWQgZWRnZXMgJWQgaXRlciAlLjJmIHNlYwoAdXBkYXRlOiBtaXNtYXRjaGVkIGxjYSBpbiB0cmVldXBkYXRlcwoAVHJlZV9lZGdlLnNpemUgPT0gTl9ub2RlcyAtIDEAbnMuYwBmZWFzaWJsZV90cmVlACFUUkVFX0VER0UoZSkAbWVyZ2VfdHJlZXMAKHIwLT5oZWFwX2luZGV4ID4gLTEpIHx8IChyMS0+aGVhcF9pbmRleCA+IC0xKQBTVHNldFVuaW9uAHItPmhlYXBfaW5kZXggPj0gMABhZGRfdHJlZV9lZGdlOiBtaXNzaW5nIHRyZWUgZWRnZQoAYWRkX3RyZWVfZWRnZTogZW1wdHkgb3V0ZWRnZSBsaXN0CgBhZGRfdHJlZV9lZGdlOiBlbXB0eSBpbmVkZ2UgbGlzdAoAdHJvdWJsZSBpbiBpbml0X3JhbmsKAAklcyAlZAoAc2VhcmNoc2l6ZQBncmFwaCAAIABub2RlIABzdG9wCgAlLjVnAHBvcwByZWN0cwB4bHAAbHAAaGVhZF9scAB0YWlsX2xwAGx3aWR0aABsaGVpZ2h0AGJiACUuNWcsJS41ZywlLjVnACwlLjVnACUuNWcsJS41ZwBzYW1wbGVwb2ludHMAJS41ZyAlLjVnAHMsJS41ZywlLjVnIABlLCUuNWcsJS41ZyAAJS41ZywlLjVnLCUuNWcsJS41ZwAlLjJmACUuNWcsJS41ZywlLjVnLCUuNWcgAC9wYXRoYm94IHsKICAgIC9YIGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC94IGV4Y2ggbmVnICUuNWcgc3ViIGRlZgogICAgL3kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAL3BhdGhib3ggewogICAgL1kgZXhjaCAlLjVnIHN1YiBkZWYKICAgIC9YIGV4Y2ggJS41ZyBzdWIgZGVmCiAgICAveSBleGNoICUuNWcgc3ViIGRlZgogICAgL3ggZXhjaCAlLjVnIHN1YiBkZWYKICAgIG5ld3BhdGggeCB5IG1vdmV0bwogICAgWCB5IGxpbmV0bwogICAgWCBZIGxpbmV0bwogICAgeCBZIGxpbmV0bwogICAgY2xvc2VwYXRoIHN0cm9rZQogfSBkZWYKL2RiZ3N0YXJ0IHsgZ3NhdmUgJS41ZyAlLjVnIHRyYW5zbGF0ZSB9IGRlZgovYXJyb3dsZW5ndGggMTAgZGVmCi9hcnJvd3dpZHRoIGFycm93bGVuZ3RoIDIgZGl2IGRlZgovYXJyb3doZWFkIHsKICAgIGdzYXZlCiAgICByb3RhdGUKICAgIGN1cnJlbnRwb2ludAogICAgbmV3cGF0aAogICAgbW92ZXRvCiAgICBhcnJvd2xlbmd0aCBhcnJvd3dpZHRoIDIgZGl2IHJsaW5ldG8KICAgIDAgYXJyb3d3aWR0aCBuZWcgcmxpbmV0bwogICAgY2xvc2VwYXRoIGZpbGwKICAgIGdyZXN0b3JlCn0gYmluZCBkZWYKL21ha2VhcnJvdyB7CiAgICBjdXJyZW50cG9pbnQgZXhjaCBwb3Agc3ViIGV4Y2ggY3VycmVudHBvaW50IHBvcCBzdWIgYXRhbgogICAgYXJyb3doZWFkCn0gYmluZCBkZWYKL3BvaW50IHsgICAgbmV3cGF0aCAgICAyIDAgMzYwIGFyYyBmaWxsfSBkZWYvbWFrZXZlYyB7CiAgICAvWSBleGNoIGRlZgogICAgL1ggZXhjaCBkZWYKICAgIC95IGV4Y2ggZGVmCiAgICAveCBleGNoIGRlZgogICAgbmV3cGF0aCB4IHkgbW92ZXRvCiAgICBYIFkgbGluZXRvIHN0cm9rZQogICAgWCBZIG1vdmV0bwogICAgeCB5IG1ha2VhcnJvdwp9IGRlZgoAbG9zdCAlcyAlcyBlZGdlCgBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGxhYmVsICVzAG5vIHBvc2l0aW9uIGZvciBlZGdlIHdpdGggdGFpbCBsYWJlbCAlcwBubyBwb3NpdGlvbiBmb3IgZWRnZSB3aXRoIGhlYWQgbGFiZWwgJXMAbm8gcG9zaXRpb24gZm9yIGVkZ2Ugd2l0aCB4bGFiZWwgJXMAZm9yY2VsYWJlbHMAJWQgb3V0IG9mICVkIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb3V0IG9mICVkIGV4dGVyaW9yIGxhYmVscyBwb3NpdGlvbmVkLgoAJWQgb2JqcyAlZCB4bGFiZWxzIGZvcmNlPSVkIGJiPSglLjAyZiwlLjAyZikgKCUuMDJmLCUuMDJmKQoAb2JqZWN0cwoAIFslZF0gKCUuMDJmLCUuMDJmKSAoJS4wMmYsJS4wMmYpICVwICIlcyIKAHhsYWJlbHMKACBbJWRdICVwIHNldCAlZCAoJS4wMmYsJS4wMmYpICglLjAyZiwlLjAyZikgJXMKAHNoYXBlZmlsZSBub3Qgc2V0IG9yIG5vdCBmb3VuZCBmb3IgZXBzZiBub2RlICVzCgBjb3VsZG4ndCBvcGVuIGVwc2YgZmlsZSAlcwoAJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAByZWFkAEJvdW5kaW5nQm94IG5vdCBmb3VuZCBpbiBlcHNmIGZpbGUgJXMKAGNhbid0IGZpbmQgbGlicmFyeSBmaWxlICVzCgBjYW4ndCBvcGVuIGxpYnJhcnkgZmlsZSAlcwoARU9GAEJFR0lOAEVORABUUkFJTEVSAC91c2VyX3NoYXBlXyVkIHsKACUlQmVnaW5Eb2N1bWVudDoKACUlRW5kRG9jdW1lbnQKAH0gYmluZCBkZWYKAFVURi04IGlucHV0IHVzZXMgbm9uLUxhdGluMSBjaGFyYWN0ZXJzIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgUG9zdFNjcmlwdCBkcml2ZXIKAGNhbm5vdCByZS1hbGxvY2F0ZSBwcwoAcm91dGVzcGxpbmVzaW5pdDogY2Fubm90IGFsbG9jYXRlIHBzCgByb3V0ZXNwbGluZXM6ICVkIGVkZ2VzLCAlZCBib3hlcyAlLjJmIHNlYwoAaW4gcm91dGVzcGxpbmVzLCBjYW5ub3QgZmluZCBOT1JNQUwgZWRnZQoAaW4gcm91dGVzcGxpbmVzLCBpbGxlZ2FsIHZhbHVlcyBvZiBwcmV2ICVkIGFuZCBuZXh0ICVkLCBsaW5lICVkCgBpbiByb3V0ZXNwbGluZXMsIGVkZ2UgaXMgYSBsb29wIGF0ICVzCgBpbiByb3V0ZXNwbGluZXMsIFBzaG9ydGVzdHBhdGggZmFpbGVkCgBpbiByb3V0ZXNwbGluZXMsIFByb3V0ZXNwbGluZSBmYWlsZWQKAFVuYWJsZSB0byByZWNsYWltIGJveCBzcGFjZSBpbiBzcGxpbmUgcm91dGluZyBmb3IgZWRnZSAiJXMiIC0+ICIlcyIuIFNvbWV0aGluZyBpcyBwcm9iYWJseSBzZXJpb3VzbHkgd3JvbmcuCgBpbiBjaGVja3BhdGgsIGJveCAwIGhhcyBMTCBjb29yZCA+IFVSIGNvb3JkCgBpbiBjaGVja3BhdGgsIGJveCAlZCBoYXMgTEwgY29vcmQgPiBVUiBjb29yZAoAaW4gY2hlY2twYXRoLCBib3hlcyAlZCBhbmQgJWQgZG9uJ3QgdG91Y2gKAGluIGNoZWNrcGF0aCwgc3RhcnQgcG9ydCBub3QgaW4gZmlyc3QgYm94CgBpbiBjaGVja3BhdGgsIGVuZCBwb3J0IG5vdCBpbiBsYXN0IGJveAoAJWQgYm94ZXM6CgAlZCAoJS41ZywgJS41ZyksICglLjVnLCAlLjVnKQoAY29uc3RyYWluZWQAbm90IGNvbnN0cmFpbmVkAHN0YXJ0IHBvcnQ6ICglLjVnLCAlLjVnKSwgdGFuZ2VudCBhbmdsZTogJS41ZywgJXMKAGVuZCBwb3J0OiAoJS41ZywgJS41ZyksIHRhbmdlbnQgYW5nbGU6ICUuNWcsICVzCgBzaWRlcyA9PSA0AHNoYXBlcy5jAHJvdW5kX2Nvcm5lcnMAYmFkIGxhYmVsIGZvcm1hdCAlcwoAXE4AbWFyZ2luACVsZiwlbGYAcmVndWxhcgBjdXN0b20Ac2hhcGVmaWxlADxuaWw+AE5vIG9yIGltcHJvcGVyIHNoYXBlZmlsZT0iJXMiIGZvciBub2RlICIlcyIKAE5vIG9yIGltcHJvcGVyIGltYWdlPSIlcyIgZm9yIG5vZGUgIiVzIgoAbGFiZWxsb2MAc2hhcGUAbm9kZSAnJXMnLCBncmFwaCAnJXMnIHNpemUgdG9vIHNtYWxsIGZvciBsYWJlbAoAZXBzZgB1c2luZyAlcyBmb3IgdW5rbm93biBzaGFwZSAlcwoAYm94AHBvbHlnb24Ab3ZhbABjaXJjbGUAcG9pbnQAZWdnAHRyaWFuZ2xlAHBsYWludGV4dABwbGFpbgBkaWFtb25kAHRyYXBleml1bQBwYXJhbGxlbG9ncmFtAGhvdXNlAHBlbnRhZ29uAGhleGFnb24Ac2VwdGFnb24Ab2N0YWdvbgBub3RlAHRhYgBmb2xkZXIAYm94M2QAY29tcG9uZW50AGN5bGluZGVyAHJlY3QAcmVjdGFuZ2xlAHNxdWFyZQBkb3VibGVjaXJjbGUAZG91Ymxlb2N0YWdvbgB0cmlwbGVvY3RhZ29uAGludnRyaWFuZ2xlAGludnRyYXBleml1bQBpbnZob3VzZQB1bmRlcmxpbmUATWRpYW1vbmQATXNxdWFyZQBNY2lyY2xlAHByb21vdGVyAGNkcwB0ZXJtaW5hdG9yAHV0cgBpbnN1bGF0b3IAcmlib3NpdGUAcm5hc3RhYgBwcm90ZWFzZXNpdGUAcHJvdGVpbnN0YWIAcHJpbWVyc2l0ZQByZXN0cmljdGlvbnNpdGUAZml2ZXBvdmVyaGFuZwB0aHJlZXBvdmVyaGFuZwBub3ZlcmhhbmcAYXNzZW1ibHkAc2lnbmF0dXJlAHJwcm9tb3RlcgBsYXJyb3cAcmFycm93AGxwcm9tb3RlcgByZWNvcmQATXJlY29yZABzdGFyACM4MDgwODAAI2ZjZmNmYwAjMzAzMDMwACNlOGU4ZTgAI2UwZTBlMAAjZjBmMGYwACMxMDEwMTAAI2Y4ZjhmOABpbiBub2RlICVzCgByb3VuZGVkAGRpYWdvbmFscwByYWRpYWwAc3RyaXBlZAB3ZWRnZWQAXwBub2RlICVzLCBwb3J0ICVzLCB1bnJlY29nbml6ZWQgY29tcGFzcyBwb2ludCAnJXMnIC0gaWdub3JlZAoAbm9kZSAlcywgcG9ydCAlcyB1bnJlY29nbml6ZWQKACUuNWcgJS41ZyB0cmFuc2xhdGUgbmV3cGF0aCB1c2VyX3NoYXBlXyVkCgBpbnZpcwAAZmlsbGVkAABzAGUAdwBzcGxpbmVzLmMAYmVnaW5wYXRoAFAtPmVuZC50aGV0YSA8IDIgKiBNX1BJAGVuZHBhdGgAbWFrZVNlbGZFZGdlAGdldHNwbGluZXBvaW50czogbm8gc3BsaW5lIHBvaW50cyBhdmFpbGFibGUgZm9yIGVkZ2UgKCVzLCVzKQoAcG9seWxpbmVNaWRwb2ludABzcGFuLT5mb250AHRleHRzcGFuLmMAdGV4dHNwYW5fc2l6ZQBmb250LT5uYW1lAGZvbnRuYW1lOiAiJXMiIHJlc29sdmVkIHRvOiAlcwoAZm9udG5hbWU6IHVuYWJsZSB0byByZXNvbHZlICIlcyIKAGNvdXIAYXJpYWwAaGVsdmV0aWNhAFtpbnRlcm5hbCB0aW1lc10AW2ludGVybmFsIGNvdXJpZXJdAFtpbnRlcm5hbCBhcmlhbF0AQXZhbnRHYXJkZS1Cb29rAFVSVyBHb3RoaWMgTABib29rAHNhbnMtU2VyaWYAQXZhbnRHYXJkZS1Cb29rT2JsaXF1ZQBvYmxpcXVlAGl0YWxpYwBBdmFudEdhcmRlLURlbWkAZGVtaQBBdmFudEdhcmRlLURlbWlPYmxpcXVlAEJvb2ttYW4tRGVtaQBVUlcgQm9va21hbiBMAHNlcmlmAEJvb2ttYW4tRGVtaUl0YWxpYwBCb29rbWFuLUxpZ2h0AGxpZ2h0AEJvb2ttYW4tTGlnaHRJdGFsaWMAQ291cmllcgBtb25vc3BhY2UAQ291cmllci1Cb2xkAENvdXJpZXItQm9sZE9ibGlxdWUAQ291cmllci1PYmxpcXVlAEhlbHZldGljYQBIZWx2ZXRpY2EtQm9sZABIZWx2ZXRpY2EtQm9sZE9ibGlxdWUASGVsdmV0aWNhLU5hcnJvdwBjb25kZW5zZWQASGVsdmV0aWNhLU5hcnJvdy1Cb2xkAEhlbHZldGljYS1OYXJyb3ctQm9sZE9ibGlxdWUASGVsdmV0aWNhLU5hcnJvdy1PYmxpcXVlAEhlbHZldGljYS1PYmxpcXVlAE5ld0NlbnR1cnlTY2hsYmstQm9sZABDZW50dXJ5IFNjaG9vbGJvb2sgTABOZXdDZW50dXJ5U2NobGJrLUJvbGRJdGFsaWMATmV3Q2VudHVyeVNjaGxiay1JdGFsaWMATmV3Q2VudHVyeVNjaGxiay1Sb21hbgByb21hbgBQYWxhdGluby1Cb2xkAFBhbGF0aW5vIExpbm90eXBlAFBhbGF0aW5vLUJvbGRJdGFsaWMAUGFsYXRpbm8tSXRhbGljAFBhbGF0aW5vLVJvbWFuAFN5bWJvbABmYW50YXN5AFRpbWVzLUJvbGQAVGltZXMAVGltZXMtQm9sZEl0YWxpYwBUaW1lcy1JdGFsaWMAWmFwZkNoYW5jZXJ5LU1lZGl1bUl0YWxpYwBVUlcgQ2hhbmNlcnkgTABtZWRpdW0AWmFwZkRpbmdiYXRzAERpbmdiYXRzAG5vAHRydWUAeWVzAHV0aWxzLmMAdSA9PSBVRl9maW5kKHUpAFVGX3NldG5hbWUAAWZpbGUgbG9hZGluZyBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCBjb250YWlucyBTRVJWRVJfTkFNRT0iJXMiCmFuZCB0aGUgR1ZfRklMRV9QQVRIIHZhcmlhYmxlIGlzIHVuc2V0IG9yIGVtcHR5LgoAUGF0aCBwcm92aWRlZCB0byBmaWxlOiAiJXMiIGhhcyBiZWVuIGlnbm9yZWQgYmVjYXVzZSBmaWxlcyBhcmUgb25seSBwZXJtaXR0ZWQgdG8gYmUgbG9hZGVkIGZyb20gdGhlIGRpcmVjdG9yaWVzIGluICIlcyIgd2hlbiBydW5uaW5nIGluIGFuIGh0dHAgc2VydmVyLgoAJXMlcyVzAC8AOgBlbGxpcHNlAFRpbWVzLVJvbWFuAGNsdXN0ZXIAX19jbHVzdGVybm9kZXMAVHdvIGNsdXN0ZXJzIG5hbWVkICVzIC0gdGhlIHNlY29uZCB3aWxsIGJlIGlnbm9yZWQKAG1hcE4AQUVsaWcAQWFjdXRlAEFjaXJjAEFncmF2ZQBBbHBoYQBBcmluZwBBdGlsZGUAQXVtbABCZXRhAENjZWRpbABDaGkARGFnZ2VyAERlbHRhAEVUSABFYWN1dGUARWNpcmMARWdyYXZlAEVwc2lsb24ARXRhAEV1bWwAR2FtbWEASWFjdXRlAEljaXJjAElncmF2ZQBJb3RhAEl1bWwAS2FwcGEATGFtYmRhAE11AE50aWxkZQBOdQBPRWxpZwBPYWN1dGUAT2NpcmMAT2dyYXZlAE9tZWdhAE9taWNyb24AT3NsYXNoAE90aWxkZQBPdW1sAFBoaQBQaQBQcmltZQBQc2kAUmhvAFNjYXJvbgBTaWdtYQBUSE9STgBUYXUAVGhldGEAVWFjdXRlAFVjaXJjAFVncmF2ZQBVcHNpbG9uAFV1bWwAWGkAWWFjdXRlAFl1bWwAWmV0YQBhYWN1dGUAYWNpcmMAYWN1dGUAYWVsaWcAYWdyYXZlAGFsZWZzeW0AYWxwaGEAYW1wAGFuZABhbmcAYXJpbmcAYXN5bXAAYXRpbGRlAGF1bWwAYmRxdW8AYmV0YQBicnZiYXIAYnVsbABjYXAAY2NlZGlsAGNlZGlsAGNlbnQAY2hpAGNpcmMAY2x1YnMAY29uZwBjb3B5AGNyYXJyAGN1cABjdXJyZW4AZEFycgBkYWdnZXIAZGFycgBkZWcAZGVsdGEAZGlhbXMAZGl2aWRlAGVhY3V0ZQBlY2lyYwBlZ3JhdmUAZW1wdHkAZW1zcABlbnNwAGVwc2lsb24AZXF1aXYAZXRhAGV0aABldW1sAGV1cm8AZXhpc3QAZm5vZgBmb3JhbGwAZnJhYzEyAGZyYWMxNABmcmFjMzQAZnJhc2wAZ2FtbWEAZ2UAZ3QAaEFycgBoYXJyAGhlYXJ0cwBoZWxsaXAAaWFjdXRlAGljaXJjAGlleGNsAGlncmF2ZQBpbWFnZQBpbmZpbgBpbnQAaW90YQBpcXVlc3QAaXNpbgBpdW1sAGthcHBhAGxBcnIAbGFtYmRhAGxhbmcAbGFxdW8AbGFycgBsY2VpbABsZHF1bwBsZQBsZmxvb3IAbG93YXN0AGxvegBscm0AbHNhcXVvAGxzcXVvAGx0AG1hY3IAbWRhc2gAbWljcm8AbWlkZG90AG11AG5hYmxhAG5ic3AAbmRhc2gAbmUAbmkAbm90AG5vdGluAG5zdWIAbnRpbGRlAG51AG9hY3V0ZQBvY2lyYwBvZWxpZwBvZ3JhdmUAb2xpbmUAb21lZ2EAb21pY3JvbgBvcGx1cwBvcgBvcmRmAG9yZG0Ab3NsYXNoAG90aWxkZQBvdGltZXMAb3VtbABwYXJhAHBhcnQAcGVybWlsAHBlcnAAcGhpAHBpAHBpdgBwbHVzbW4AcG91bmQAcHJpbWUAcHJvZABwcm9wAHBzaQBxdW90AHJBcnIAcmFkaWMAcmFuZwByYXF1bwByYXJyAHJjZWlsAHJkcXVvAHJlYWwAcmVnAHJmbG9vcgByaG8AcmxtAHJzYXF1bwByc3F1bwBzYnF1bwBzY2Fyb24Ac2RvdABzZWN0AHNoeQBzaWdtYQBzaWdtYWYAc2ltAHNwYWRlcwBzdWIAc3ViZQBzdW0Ac3VwAHN1cDEAc3VwMgBzdXAzAHN1cGUAc3psaWcAdGF1AHRoZXJlNAB0aGV0YQB0aGV0YXN5bQB0aGluc3AAdGhvcm4AdGlsZGUAdGltZXMAdHJhZGUAdUFycgB1YWN1dGUAdWFycgB1Y2lyYwB1Z3JhdmUAdW1sAHVwc2loAHVwc2lsb24AdXVtbAB3ZWllcnAAeGkAeWFjdXRlAHllbgB5dW1sAHpldGEAendqAHp3bmoAVVRGOCBjb2RlcyA+IDQgYnl0ZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIChncmFwaCAlcykgLSB0cmVhdGVkIGFzIExhdGluLTEuIFBlcmhhcHMgIi1HY2hhcnNldD1sYXRpbjEiIGlzIG5lZWRlZD8KAEludmFsaWQgJWQtYnl0ZSBVVEY4IGZvdW5kIGluIGlucHV0IG9mIGdyYXBoICVzIC0gdHJlYXRlZCBhcyBMYXRpbi0xLiBQZXJoYXBzICItR2NoYXJzZXQ9bGF0aW4xIiBpcyBuZWVkZWQ/CgBiei5zaXplAG92ZXJsYXBfYmV6aWVyAHVydmVkAG9tcG91bmQAYWxzZQBpbmUAb25lAG8AcnRobwBvbHlsaW5lAHBsaW5lAHJ1ZQBlcwBVbmtub3duICJzcGxpbmVzIiB2YWx1ZTogIiVzIiAtIGlnbm9yZWQKAHNwbGluZXMAb2RiAE9ydGhvZ29uYWwgZWRnZXMgZG8gbm90IGN1cnJlbnRseSBoYW5kbGUgZWRnZSBsYWJlbHMuIFRyeSB1c2luZyB4bGFiZWxzLgoAb3J0aG8gJXMgJXMKAGNoYW5pAG9ydGhvLmMAY2hhblNlYXJjaABjcAAlJSFQUy1BZG9iZS0yLjAKJSUlJUJvdW5kaW5nQm94OiAoYXRlbmQpCi9wb2ludCB7CiAgL1kgZXhjaCBkZWYKICAvWCBleGNoIGRlZgogIG5ld3BhdGgKICBYIFkgMyAwIDM2MCBhcmMgZmlsbAp9IGRlZgovY2VsbCB7CiAgL1kgZXhjaCBkZWYKICAvWCBleGNoIGRlZgogIC95IGV4Y2ggZGVmCiAgL3ggZXhjaCBkZWYKICBuZXdwYXRoCiAgeCB5IG1vdmV0bwogIHggWSBsaW5ldG8KICBYIFkgbGluZXRvCiAgWCB5IGxpbmV0bwogIGNsb3NlcGF0aCBzdHJva2UKfSBkZWYKL25vZGUgewogL3UgZXhjaCBkZWYKIC9yIGV4Y2ggZGVmCiAvZCBleGNoIGRlZgogL2wgZXhjaCBkZWYKIG5ld3BhdGggbCBkIG1vdmV0bwogciBkIGxpbmV0byByIHUgbGluZXRvIGwgdSBsaW5ldG8KIGNsb3NlcGF0aCBmaWxsCn0gZGVmCgoAJWQgJWQgdHJhbnNsYXRlCgAwLjggMC44IDAuOCBzZXRyZ2Jjb2xvcgoAc2hvd3BhZ2UKJSUlJVRyYWlsZXIKJSUlJUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoAbmV3cGF0aCAlZCAlZCBtb3ZldG8KACVkICVkIGxpbmV0bwoAJWQgJWQgbGluZXRvIHN0cm9rZQoAY2hhbm5lbCAlZCAoJWYsJWYpCgAgLT4KACAgICAgACgoJWYsJWYpLCglZiwlZikpICVzICVzAEJfUklHSFQAQl9ET1dOAEJfTEVGVABCX1VQAEJfTk9ERQBzZWcAbmV4dF9zZWcAZGVjaWRlX3BvaW50AGluY29tcGFyYWJsZSBzZWdtZW50cyAhISAtLSBBYm9ydGluZwoAczEtPmNvbW1fY29vcmQ9PXMyLT5jb21tX2Nvb3JkAGlzX3BhcmFsbGVsAGdyYXBoIEcgewoAIG5vZGVbc2hhcGU9cG9pbnRdCgAgICVkIFtwb3M9IiVkLCVkIl0KACAgJWQgLS0gJWRbbGVuPSIlZiJdCgB9CgBjb2xvciAlcwAlcyBpcyBub3QgYSBrbm93biBjb2xvci4KAGVycm9yIGluIGNvbHhsYXRlKCkKAHNvbGlkAGludmlzaWJsZQBib2xkAHNldGxpbmV3aWR0aABmaWxsZWQAdW5maWxsZWQAdGFwZXJlZABndnJlbmRlcl9zZXRfc3R5bGU6IHVuc3VwcG9ydGVkIHN0eWxlICVzIC0gaWdub3JpbmcKAGd2cmVuZGVyLmMAZ3ZyZW5kZXJfdXNlcnNoYXBlAG5hbWUAbmFtZVswXQB3aWR0aABoZWlnaHQAYm90aABqb2IAZ3Zsb2FkaW1hZ2UuYwBndmxvYWRpbWFnZQB1cwB1cy0+bmFtZQB1cy0+bmFtZVswXQBObyBsb2FkaW1hZ2UgcGx1Z2luIGZvciAiJXMiCgBRAExlZnQAS1BfTGVmdABSaWdodABLUF9SaWdodABVcABLUF9VcABEb3duAEtQX0Rvd24AcGx1cwBLUF9BZGQAbWludXMAS1BfU3VidHJhY3QARgB0b29sdGlwAGVkZ2UAdGFpbHBvcnQAaGVhZHBvcnQAa2V5AGhyZWYAVVJMAG5vZGUAZGlncmFwaABncmFwaABzdWJncmFwaABfTFRYX2xpYnJhcnkAdGV4dGxheW91dABvYmpwLT5sYmwAeGxhYmVscy5jAHhsYWRqdXN0AHhsaW50ZXJzZWN0aW9ucwBscCAhPSBjbHAAZ2V0aW50cnN4aQBvYmpwMS0+c3oueCA9PSAwICYmIG9ianAxLT5zei55ID09IDAAbGJsZW5jbG9zaW5nAHZwAHhsaGR4dW5sb2FkAHNpemU9PWZyZWVkAHJlY3QuYm91bmRhcnlbMl0gPCBJTlRfTUFYAG9ianBscG1rcwByZWN0LmJvdW5kYXJ5WzNdIDwgSU5UX01BWABvdXQgb2YgbWVtb3J5CgAjJTJ4JTJ4JTJ4JTJ4ACVsZiVsZiVsZgAvYWNjZW50My8xAC9hY2NlbnQzLzIAL2FjY2VudDMvMwAvYWNjZW50NC8xAC9hY2NlbnQ0LzIAL2FjY2VudDQvMwAvYWNjZW50NC80AC9hY2NlbnQ1LzEAL2FjY2VudDUvMgAvYWNjZW50NS8zAC9hY2NlbnQ1LzQAL2FjY2VudDUvNQAvYWNjZW50Ni8xAC9hY2NlbnQ2LzIAL2FjY2VudDYvMwAvYWNjZW50Ni80AC9hY2NlbnQ2LzUAL2FjY2VudDYvNgAvYWNjZW50Ny8xAC9hY2NlbnQ3LzIAL2FjY2VudDcvMwAvYWNjZW50Ny80AC9hY2NlbnQ3LzUAL2FjY2VudDcvNgAvYWNjZW50Ny83AC9hY2NlbnQ4LzEAL2FjY2VudDgvMgAvYWNjZW50OC8zAC9hY2NlbnQ4LzQAL2FjY2VudDgvNQAvYWNjZW50OC82AC9hY2NlbnQ4LzcAL2FjY2VudDgvOAAvYmx1ZXMzLzEAL2JsdWVzMy8yAC9ibHVlczMvMwAvYmx1ZXM0LzEAL2JsdWVzNC8yAC9ibHVlczQvMwAvYmx1ZXM0LzQAL2JsdWVzNS8xAC9ibHVlczUvMgAvYmx1ZXM1LzMAL2JsdWVzNS80AC9ibHVlczUvNQAvYmx1ZXM2LzEAL2JsdWVzNi8yAC9ibHVlczYvMwAvYmx1ZXM2LzQAL2JsdWVzNi81AC9ibHVlczYvNgAvYmx1ZXM3LzEAL2JsdWVzNy8yAC9ibHVlczcvMwAvYmx1ZXM3LzQAL2JsdWVzNy81AC9ibHVlczcvNgAvYmx1ZXM3LzcAL2JsdWVzOC8xAC9ibHVlczgvMgAvYmx1ZXM4LzMAL2JsdWVzOC80AC9ibHVlczgvNQAvYmx1ZXM4LzYAL2JsdWVzOC83AC9ibHVlczgvOAAvYmx1ZXM5LzEAL2JsdWVzOS8yAC9ibHVlczkvMwAvYmx1ZXM5LzQAL2JsdWVzOS81AC9ibHVlczkvNgAvYmx1ZXM5LzcAL2JsdWVzOS84AC9ibHVlczkvOQAvYnJiZzEwLzEAL2JyYmcxMC8xMAAvYnJiZzEwLzIAL2JyYmcxMC8zAC9icmJnMTAvNAAvYnJiZzEwLzUAL2JyYmcxMC82AC9icmJnMTAvNwAvYnJiZzEwLzgAL2JyYmcxMC85AC9icmJnMTEvMQAvYnJiZzExLzEwAC9icmJnMTEvMTEAL2JyYmcxMS8yAC9icmJnMTEvMwAvYnJiZzExLzQAL2JyYmcxMS81AC9icmJnMTEvNgAvYnJiZzExLzcAL2JyYmcxMS84AC9icmJnMTEvOQAvYnJiZzMvMQAvYnJiZzMvMgAvYnJiZzMvMwAvYnJiZzQvMQAvYnJiZzQvMgAvYnJiZzQvMwAvYnJiZzQvNAAvYnJiZzUvMQAvYnJiZzUvMgAvYnJiZzUvMwAvYnJiZzUvNAAvYnJiZzUvNQAvYnJiZzYvMQAvYnJiZzYvMgAvYnJiZzYvMwAvYnJiZzYvNAAvYnJiZzYvNQAvYnJiZzYvNgAvYnJiZzcvMQAvYnJiZzcvMgAvYnJiZzcvMwAvYnJiZzcvNAAvYnJiZzcvNQAvYnJiZzcvNgAvYnJiZzcvNwAvYnJiZzgvMQAvYnJiZzgvMgAvYnJiZzgvMwAvYnJiZzgvNAAvYnJiZzgvNQAvYnJiZzgvNgAvYnJiZzgvNwAvYnJiZzgvOAAvYnJiZzkvMQAvYnJiZzkvMgAvYnJiZzkvMwAvYnJiZzkvNAAvYnJiZzkvNQAvYnJiZzkvNgAvYnJiZzkvNwAvYnJiZzkvOAAvYnJiZzkvOQAvYnVnbjMvMQAvYnVnbjMvMgAvYnVnbjMvMwAvYnVnbjQvMQAvYnVnbjQvMgAvYnVnbjQvMwAvYnVnbjQvNAAvYnVnbjUvMQAvYnVnbjUvMgAvYnVnbjUvMwAvYnVnbjUvNAAvYnVnbjUvNQAvYnVnbjYvMQAvYnVnbjYvMgAvYnVnbjYvMwAvYnVnbjYvNAAvYnVnbjYvNQAvYnVnbjYvNgAvYnVnbjcvMQAvYnVnbjcvMgAvYnVnbjcvMwAvYnVnbjcvNAAvYnVnbjcvNQAvYnVnbjcvNgAvYnVnbjcvNwAvYnVnbjgvMQAvYnVnbjgvMgAvYnVnbjgvMwAvYnVnbjgvNAAvYnVnbjgvNQAvYnVnbjgvNgAvYnVnbjgvNwAvYnVnbjgvOAAvYnVnbjkvMQAvYnVnbjkvMgAvYnVnbjkvMwAvYnVnbjkvNAAvYnVnbjkvNQAvYnVnbjkvNgAvYnVnbjkvNwAvYnVnbjkvOAAvYnVnbjkvOQAvYnVwdTMvMQAvYnVwdTMvMgAvYnVwdTMvMwAvYnVwdTQvMQAvYnVwdTQvMgAvYnVwdTQvMwAvYnVwdTQvNAAvYnVwdTUvMQAvYnVwdTUvMgAvYnVwdTUvMwAvYnVwdTUvNAAvYnVwdTUvNQAvYnVwdTYvMQAvYnVwdTYvMgAvYnVwdTYvMwAvYnVwdTYvNAAvYnVwdTYvNQAvYnVwdTYvNgAvYnVwdTcvMQAvYnVwdTcvMgAvYnVwdTcvMwAvYnVwdTcvNAAvYnVwdTcvNQAvYnVwdTcvNgAvYnVwdTcvNwAvYnVwdTgvMQAvYnVwdTgvMgAvYnVwdTgvMwAvYnVwdTgvNAAvYnVwdTgvNQAvYnVwdTgvNgAvYnVwdTgvNwAvYnVwdTgvOAAvYnVwdTkvMQAvYnVwdTkvMgAvYnVwdTkvMwAvYnVwdTkvNAAvYnVwdTkvNQAvYnVwdTkvNgAvYnVwdTkvNwAvYnVwdTkvOAAvYnVwdTkvOQAvZGFyazIzLzEAL2RhcmsyMy8yAC9kYXJrMjMvMwAvZGFyazI0LzEAL2RhcmsyNC8yAC9kYXJrMjQvMwAvZGFyazI0LzQAL2RhcmsyNS8xAC9kYXJrMjUvMgAvZGFyazI1LzMAL2RhcmsyNS80AC9kYXJrMjUvNQAvZGFyazI2LzEAL2RhcmsyNi8yAC9kYXJrMjYvMwAvZGFyazI2LzQAL2RhcmsyNi81AC9kYXJrMjYvNgAvZGFyazI3LzEAL2RhcmsyNy8yAC9kYXJrMjcvMwAvZGFyazI3LzQAL2RhcmsyNy81AC9kYXJrMjcvNgAvZGFyazI3LzcAL2RhcmsyOC8xAC9kYXJrMjgvMgAvZGFyazI4LzMAL2RhcmsyOC80AC9kYXJrMjgvNQAvZGFyazI4LzYAL2RhcmsyOC83AC9kYXJrMjgvOAAvZ25idTMvMQAvZ25idTMvMgAvZ25idTMvMwAvZ25idTQvMQAvZ25idTQvMgAvZ25idTQvMwAvZ25idTQvNAAvZ25idTUvMQAvZ25idTUvMgAvZ25idTUvMwAvZ25idTUvNAAvZ25idTUvNQAvZ25idTYvMQAvZ25idTYvMgAvZ25idTYvMwAvZ25idTYvNAAvZ25idTYvNQAvZ25idTYvNgAvZ25idTcvMQAvZ25idTcvMgAvZ25idTcvMwAvZ25idTcvNAAvZ25idTcvNQAvZ25idTcvNgAvZ25idTcvNwAvZ25idTgvMQAvZ25idTgvMgAvZ25idTgvMwAvZ25idTgvNAAvZ25idTgvNQAvZ25idTgvNgAvZ25idTgvNwAvZ25idTgvOAAvZ25idTkvMQAvZ25idTkvMgAvZ25idTkvMwAvZ25idTkvNAAvZ25idTkvNQAvZ25idTkvNgAvZ25idTkvNwAvZ25idTkvOAAvZ25idTkvOQAvZ3JlZW5zMy8xAC9ncmVlbnMzLzIAL2dyZWVuczMvMwAvZ3JlZW5zNC8xAC9ncmVlbnM0LzIAL2dyZWVuczQvMwAvZ3JlZW5zNC80AC9ncmVlbnM1LzEAL2dyZWVuczUvMgAvZ3JlZW5zNS8zAC9ncmVlbnM1LzQAL2dyZWVuczUvNQAvZ3JlZW5zNi8xAC9ncmVlbnM2LzIAL2dyZWVuczYvMwAvZ3JlZW5zNi80AC9ncmVlbnM2LzUAL2dyZWVuczYvNgAvZ3JlZW5zNy8xAC9ncmVlbnM3LzIAL2dyZWVuczcvMwAvZ3JlZW5zNy80AC9ncmVlbnM3LzUAL2dyZWVuczcvNgAvZ3JlZW5zNy83AC9ncmVlbnM4LzEAL2dyZWVuczgvMgAvZ3JlZW5zOC8zAC9ncmVlbnM4LzQAL2dyZWVuczgvNQAvZ3JlZW5zOC82AC9ncmVlbnM4LzcAL2dyZWVuczgvOAAvZ3JlZW5zOS8xAC9ncmVlbnM5LzIAL2dyZWVuczkvMwAvZ3JlZW5zOS80AC9ncmVlbnM5LzUAL2dyZWVuczkvNgAvZ3JlZW5zOS83AC9ncmVlbnM5LzgAL2dyZWVuczkvOQAvZ3JleXMzLzEAL2dyZXlzMy8yAC9ncmV5czMvMwAvZ3JleXM0LzEAL2dyZXlzNC8yAC9ncmV5czQvMwAvZ3JleXM0LzQAL2dyZXlzNS8xAC9ncmV5czUvMgAvZ3JleXM1LzMAL2dyZXlzNS80AC9ncmV5czUvNQAvZ3JleXM2LzEAL2dyZXlzNi8yAC9ncmV5czYvMwAvZ3JleXM2LzQAL2dyZXlzNi81AC9ncmV5czYvNgAvZ3JleXM3LzEAL2dyZXlzNy8yAC9ncmV5czcvMwAvZ3JleXM3LzQAL2dyZXlzNy81AC9ncmV5czcvNgAvZ3JleXM3LzcAL2dyZXlzOC8xAC9ncmV5czgvMgAvZ3JleXM4LzMAL2dyZXlzOC80AC9ncmV5czgvNQAvZ3JleXM4LzYAL2dyZXlzOC83AC9ncmV5czgvOAAvZ3JleXM5LzEAL2dyZXlzOS8yAC9ncmV5czkvMwAvZ3JleXM5LzQAL2dyZXlzOS81AC9ncmV5czkvNgAvZ3JleXM5LzcAL2dyZXlzOS84AC9ncmV5czkvOQAvb3JhbmdlczMvMQAvb3JhbmdlczMvMgAvb3JhbmdlczMvMwAvb3JhbmdlczQvMQAvb3JhbmdlczQvMgAvb3JhbmdlczQvMwAvb3JhbmdlczQvNAAvb3JhbmdlczUvMQAvb3JhbmdlczUvMgAvb3JhbmdlczUvMwAvb3JhbmdlczUvNAAvb3JhbmdlczUvNQAvb3JhbmdlczYvMQAvb3JhbmdlczYvMgAvb3JhbmdlczYvMwAvb3JhbmdlczYvNAAvb3JhbmdlczYvNQAvb3JhbmdlczYvNgAvb3JhbmdlczcvMQAvb3JhbmdlczcvMgAvb3JhbmdlczcvMwAvb3JhbmdlczcvNAAvb3JhbmdlczcvNQAvb3JhbmdlczcvNgAvb3JhbmdlczcvNwAvb3JhbmdlczgvMQAvb3JhbmdlczgvMgAvb3JhbmdlczgvMwAvb3JhbmdlczgvNAAvb3JhbmdlczgvNQAvb3JhbmdlczgvNgAvb3JhbmdlczgvNwAvb3JhbmdlczgvOAAvb3JhbmdlczkvMQAvb3JhbmdlczkvMgAvb3JhbmdlczkvMwAvb3JhbmdlczkvNAAvb3JhbmdlczkvNQAvb3JhbmdlczkvNgAvb3JhbmdlczkvNwAvb3JhbmdlczkvOAAvb3JhbmdlczkvOQAvb3JyZDMvMQAvb3JyZDMvMgAvb3JyZDMvMwAvb3JyZDQvMQAvb3JyZDQvMgAvb3JyZDQvMwAvb3JyZDQvNAAvb3JyZDUvMQAvb3JyZDUvMgAvb3JyZDUvMwAvb3JyZDUvNAAvb3JyZDUvNQAvb3JyZDYvMQAvb3JyZDYvMgAvb3JyZDYvMwAvb3JyZDYvNAAvb3JyZDYvNQAvb3JyZDYvNgAvb3JyZDcvMQAvb3JyZDcvMgAvb3JyZDcvMwAvb3JyZDcvNAAvb3JyZDcvNQAvb3JyZDcvNgAvb3JyZDcvNwAvb3JyZDgvMQAvb3JyZDgvMgAvb3JyZDgvMwAvb3JyZDgvNAAvb3JyZDgvNQAvb3JyZDgvNgAvb3JyZDgvNwAvb3JyZDgvOAAvb3JyZDkvMQAvb3JyZDkvMgAvb3JyZDkvMwAvb3JyZDkvNAAvb3JyZDkvNQAvb3JyZDkvNgAvb3JyZDkvNwAvb3JyZDkvOAAvb3JyZDkvOQAvcGFpcmVkMTAvMQAvcGFpcmVkMTAvMTAAL3BhaXJlZDEwLzIAL3BhaXJlZDEwLzMAL3BhaXJlZDEwLzQAL3BhaXJlZDEwLzUAL3BhaXJlZDEwLzYAL3BhaXJlZDEwLzcAL3BhaXJlZDEwLzgAL3BhaXJlZDEwLzkAL3BhaXJlZDExLzEAL3BhaXJlZDExLzEwAC9wYWlyZWQxMS8xMQAvcGFpcmVkMTEvMgAvcGFpcmVkMTEvMwAvcGFpcmVkMTEvNAAvcGFpcmVkMTEvNQAvcGFpcmVkMTEvNgAvcGFpcmVkMTEvNwAvcGFpcmVkMTEvOAAvcGFpcmVkMTEvOQAvcGFpcmVkMTIvMQAvcGFpcmVkMTIvMTAAL3BhaXJlZDEyLzExAC9wYWlyZWQxMi8xMgAvcGFpcmVkMTIvMgAvcGFpcmVkMTIvMwAvcGFpcmVkMTIvNAAvcGFpcmVkMTIvNQAvcGFpcmVkMTIvNgAvcGFpcmVkMTIvNwAvcGFpcmVkMTIvOAAvcGFpcmVkMTIvOQAvcGFpcmVkMy8xAC9wYWlyZWQzLzIAL3BhaXJlZDMvMwAvcGFpcmVkNC8xAC9wYWlyZWQ0LzIAL3BhaXJlZDQvMwAvcGFpcmVkNC80AC9wYWlyZWQ1LzEAL3BhaXJlZDUvMgAvcGFpcmVkNS8zAC9wYWlyZWQ1LzQAL3BhaXJlZDUvNQAvcGFpcmVkNi8xAC9wYWlyZWQ2LzIAL3BhaXJlZDYvMwAvcGFpcmVkNi80AC9wYWlyZWQ2LzUAL3BhaXJlZDYvNgAvcGFpcmVkNy8xAC9wYWlyZWQ3LzIAL3BhaXJlZDcvMwAvcGFpcmVkNy80AC9wYWlyZWQ3LzUAL3BhaXJlZDcvNgAvcGFpcmVkNy83AC9wYWlyZWQ4LzEAL3BhaXJlZDgvMgAvcGFpcmVkOC8zAC9wYWlyZWQ4LzQAL3BhaXJlZDgvNQAvcGFpcmVkOC82AC9wYWlyZWQ4LzcAL3BhaXJlZDgvOAAvcGFpcmVkOS8xAC9wYWlyZWQ5LzIAL3BhaXJlZDkvMwAvcGFpcmVkOS80AC9wYWlyZWQ5LzUAL3BhaXJlZDkvNgAvcGFpcmVkOS83AC9wYWlyZWQ5LzgAL3BhaXJlZDkvOQAvcGFzdGVsMTMvMQAvcGFzdGVsMTMvMgAvcGFzdGVsMTMvMwAvcGFzdGVsMTQvMQAvcGFzdGVsMTQvMgAvcGFzdGVsMTQvMwAvcGFzdGVsMTQvNAAvcGFzdGVsMTUvMQAvcGFzdGVsMTUvMgAvcGFzdGVsMTUvMwAvcGFzdGVsMTUvNAAvcGFzdGVsMTUvNQAvcGFzdGVsMTYvMQAvcGFzdGVsMTYvMgAvcGFzdGVsMTYvMwAvcGFzdGVsMTYvNAAvcGFzdGVsMTYvNQAvcGFzdGVsMTYvNgAvcGFzdGVsMTcvMQAvcGFzdGVsMTcvMgAvcGFzdGVsMTcvMwAvcGFzdGVsMTcvNAAvcGFzdGVsMTcvNQAvcGFzdGVsMTcvNgAvcGFzdGVsMTcvNwAvcGFzdGVsMTgvMQAvcGFzdGVsMTgvMgAvcGFzdGVsMTgvMwAvcGFzdGVsMTgvNAAvcGFzdGVsMTgvNQAvcGFzdGVsMTgvNgAvcGFzdGVsMTgvNwAvcGFzdGVsMTgvOAAvcGFzdGVsMTkvMQAvcGFzdGVsMTkvMgAvcGFzdGVsMTkvMwAvcGFzdGVsMTkvNAAvcGFzdGVsMTkvNQAvcGFzdGVsMTkvNgAvcGFzdGVsMTkvNwAvcGFzdGVsMTkvOAAvcGFzdGVsMTkvOQAvcGFzdGVsMjMvMQAvcGFzdGVsMjMvMgAvcGFzdGVsMjMvMwAvcGFzdGVsMjQvMQAvcGFzdGVsMjQvMgAvcGFzdGVsMjQvMwAvcGFzdGVsMjQvNAAvcGFzdGVsMjUvMQAvcGFzdGVsMjUvMgAvcGFzdGVsMjUvMwAvcGFzdGVsMjUvNAAvcGFzdGVsMjUvNQAvcGFzdGVsMjYvMQAvcGFzdGVsMjYvMgAvcGFzdGVsMjYvMwAvcGFzdGVsMjYvNAAvcGFzdGVsMjYvNQAvcGFzdGVsMjYvNgAvcGFzdGVsMjcvMQAvcGFzdGVsMjcvMgAvcGFzdGVsMjcvMwAvcGFzdGVsMjcvNAAvcGFzdGVsMjcvNQAvcGFzdGVsMjcvNgAvcGFzdGVsMjcvNwAvcGFzdGVsMjgvMQAvcGFzdGVsMjgvMgAvcGFzdGVsMjgvMwAvcGFzdGVsMjgvNAAvcGFzdGVsMjgvNQAvcGFzdGVsMjgvNgAvcGFzdGVsMjgvNwAvcGFzdGVsMjgvOAAvcGl5ZzEwLzEAL3BpeWcxMC8xMAAvcGl5ZzEwLzIAL3BpeWcxMC8zAC9waXlnMTAvNAAvcGl5ZzEwLzUAL3BpeWcxMC82AC9waXlnMTAvNwAvcGl5ZzEwLzgAL3BpeWcxMC85AC9waXlnMTEvMQAvcGl5ZzExLzEwAC9waXlnMTEvMTEAL3BpeWcxMS8yAC9waXlnMTEvMwAvcGl5ZzExLzQAL3BpeWcxMS81AC9waXlnMTEvNgAvcGl5ZzExLzcAL3BpeWcxMS84AC9waXlnMTEvOQAvcGl5ZzMvMQAvcGl5ZzMvMgAvcGl5ZzMvMwAvcGl5ZzQvMQAvcGl5ZzQvMgAvcGl5ZzQvMwAvcGl5ZzQvNAAvcGl5ZzUvMQAvcGl5ZzUvMgAvcGl5ZzUvMwAvcGl5ZzUvNAAvcGl5ZzUvNQAvcGl5ZzYvMQAvcGl5ZzYvMgAvcGl5ZzYvMwAvcGl5ZzYvNAAvcGl5ZzYvNQAvcGl5ZzYvNgAvcGl5ZzcvMQAvcGl5ZzcvMgAvcGl5ZzcvMwAvcGl5ZzcvNAAvcGl5ZzcvNQAvcGl5ZzcvNgAvcGl5ZzcvNwAvcGl5ZzgvMQAvcGl5ZzgvMgAvcGl5ZzgvMwAvcGl5ZzgvNAAvcGl5ZzgvNQAvcGl5ZzgvNgAvcGl5ZzgvNwAvcGl5ZzgvOAAvcGl5ZzkvMQAvcGl5ZzkvMgAvcGl5ZzkvMwAvcGl5ZzkvNAAvcGl5ZzkvNQAvcGl5ZzkvNgAvcGl5ZzkvNwAvcGl5ZzkvOAAvcGl5ZzkvOQAvcHJnbjEwLzEAL3ByZ24xMC8xMAAvcHJnbjEwLzIAL3ByZ24xMC8zAC9wcmduMTAvNAAvcHJnbjEwLzUAL3ByZ24xMC82AC9wcmduMTAvNwAvcHJnbjEwLzgAL3ByZ24xMC85AC9wcmduMTEvMQAvcHJnbjExLzEwAC9wcmduMTEvMTEAL3ByZ24xMS8yAC9wcmduMTEvMwAvcHJnbjExLzQAL3ByZ24xMS81AC9wcmduMTEvNgAvcHJnbjExLzcAL3ByZ24xMS84AC9wcmduMTEvOQAvcHJnbjMvMQAvcHJnbjMvMgAvcHJnbjMvMwAvcHJnbjQvMQAvcHJnbjQvMgAvcHJnbjQvMwAvcHJnbjQvNAAvcHJnbjUvMQAvcHJnbjUvMgAvcHJnbjUvMwAvcHJnbjUvNAAvcHJnbjUvNQAvcHJnbjYvMQAvcHJnbjYvMgAvcHJnbjYvMwAvcHJnbjYvNAAvcHJnbjYvNQAvcHJnbjYvNgAvcHJnbjcvMQAvcHJnbjcvMgAvcHJnbjcvMwAvcHJnbjcvNAAvcHJnbjcvNQAvcHJnbjcvNgAvcHJnbjcvNwAvcHJnbjgvMQAvcHJnbjgvMgAvcHJnbjgvMwAvcHJnbjgvNAAvcHJnbjgvNQAvcHJnbjgvNgAvcHJnbjgvNwAvcHJnbjgvOAAvcHJnbjkvMQAvcHJnbjkvMgAvcHJnbjkvMwAvcHJnbjkvNAAvcHJnbjkvNQAvcHJnbjkvNgAvcHJnbjkvNwAvcHJnbjkvOAAvcHJnbjkvOQAvcHVidTMvMQAvcHVidTMvMgAvcHVidTMvMwAvcHVidTQvMQAvcHVidTQvMgAvcHVidTQvMwAvcHVidTQvNAAvcHVidTUvMQAvcHVidTUvMgAvcHVidTUvMwAvcHVidTUvNAAvcHVidTUvNQAvcHVidTYvMQAvcHVidTYvMgAvcHVidTYvMwAvcHVidTYvNAAvcHVidTYvNQAvcHVidTYvNgAvcHVidTcvMQAvcHVidTcvMgAvcHVidTcvMwAvcHVidTcvNAAvcHVidTcvNQAvcHVidTcvNgAvcHVidTcvNwAvcHVidTgvMQAvcHVidTgvMgAvcHVidTgvMwAvcHVidTgvNAAvcHVidTgvNQAvcHVidTgvNgAvcHVidTgvNwAvcHVidTgvOAAvcHVidTkvMQAvcHVidTkvMgAvcHVidTkvMwAvcHVidTkvNAAvcHVidTkvNQAvcHVidTkvNgAvcHVidTkvNwAvcHVidTkvOAAvcHVidTkvOQAvcHVidWduMy8xAC9wdWJ1Z24zLzIAL3B1YnVnbjMvMwAvcHVidWduNC8xAC9wdWJ1Z240LzIAL3B1YnVnbjQvMwAvcHVidWduNC80AC9wdWJ1Z241LzEAL3B1YnVnbjUvMgAvcHVidWduNS8zAC9wdWJ1Z241LzQAL3B1YnVnbjUvNQAvcHVidWduNi8xAC9wdWJ1Z242LzIAL3B1YnVnbjYvMwAvcHVidWduNi80AC9wdWJ1Z242LzUAL3B1YnVnbjYvNgAvcHVidWduNy8xAC9wdWJ1Z243LzIAL3B1YnVnbjcvMwAvcHVidWduNy80AC9wdWJ1Z243LzUAL3B1YnVnbjcvNgAvcHVidWduNy83AC9wdWJ1Z244LzEAL3B1YnVnbjgvMgAvcHVidWduOC8zAC9wdWJ1Z244LzQAL3B1YnVnbjgvNQAvcHVidWduOC82AC9wdWJ1Z244LzcAL3B1YnVnbjgvOAAvcHVidWduOS8xAC9wdWJ1Z245LzIAL3B1YnVnbjkvMwAvcHVidWduOS80AC9wdWJ1Z245LzUAL3B1YnVnbjkvNgAvcHVidWduOS83AC9wdWJ1Z245LzgAL3B1YnVnbjkvOQAvcHVvcjEwLzEAL3B1b3IxMC8xMAAvcHVvcjEwLzIAL3B1b3IxMC8zAC9wdW9yMTAvNAAvcHVvcjEwLzUAL3B1b3IxMC82AC9wdW9yMTAvNwAvcHVvcjEwLzgAL3B1b3IxMC85AC9wdW9yMTEvMQAvcHVvcjExLzEwAC9wdW9yMTEvMTEAL3B1b3IxMS8yAC9wdW9yMTEvMwAvcHVvcjExLzQAL3B1b3IxMS81AC9wdW9yMTEvNgAvcHVvcjExLzcAL3B1b3IxMS84AC9wdW9yMTEvOQAvcHVvcjMvMQAvcHVvcjMvMgAvcHVvcjMvMwAvcHVvcjQvMQAvcHVvcjQvMgAvcHVvcjQvMwAvcHVvcjQvNAAvcHVvcjUvMQAvcHVvcjUvMgAvcHVvcjUvMwAvcHVvcjUvNAAvcHVvcjUvNQAvcHVvcjYvMQAvcHVvcjYvMgAvcHVvcjYvMwAvcHVvcjYvNAAvcHVvcjYvNQAvcHVvcjYvNgAvcHVvcjcvMQAvcHVvcjcvMgAvcHVvcjcvMwAvcHVvcjcvNAAvcHVvcjcvNQAvcHVvcjcvNgAvcHVvcjcvNwAvcHVvcjgvMQAvcHVvcjgvMgAvcHVvcjgvMwAvcHVvcjgvNAAvcHVvcjgvNQAvcHVvcjgvNgAvcHVvcjgvNwAvcHVvcjgvOAAvcHVvcjkvMQAvcHVvcjkvMgAvcHVvcjkvMwAvcHVvcjkvNAAvcHVvcjkvNQAvcHVvcjkvNgAvcHVvcjkvNwAvcHVvcjkvOAAvcHVvcjkvOQAvcHVyZDMvMQAvcHVyZDMvMgAvcHVyZDMvMwAvcHVyZDQvMQAvcHVyZDQvMgAvcHVyZDQvMwAvcHVyZDQvNAAvcHVyZDUvMQAvcHVyZDUvMgAvcHVyZDUvMwAvcHVyZDUvNAAvcHVyZDUvNQAvcHVyZDYvMQAvcHVyZDYvMgAvcHVyZDYvMwAvcHVyZDYvNAAvcHVyZDYvNQAvcHVyZDYvNgAvcHVyZDcvMQAvcHVyZDcvMgAvcHVyZDcvMwAvcHVyZDcvNAAvcHVyZDcvNQAvcHVyZDcvNgAvcHVyZDcvNwAvcHVyZDgvMQAvcHVyZDgvMgAvcHVyZDgvMwAvcHVyZDgvNAAvcHVyZDgvNQAvcHVyZDgvNgAvcHVyZDgvNwAvcHVyZDgvOAAvcHVyZDkvMQAvcHVyZDkvMgAvcHVyZDkvMwAvcHVyZDkvNAAvcHVyZDkvNQAvcHVyZDkvNgAvcHVyZDkvNwAvcHVyZDkvOAAvcHVyZDkvOQAvcHVycGxlczMvMQAvcHVycGxlczMvMgAvcHVycGxlczMvMwAvcHVycGxlczQvMQAvcHVycGxlczQvMgAvcHVycGxlczQvMwAvcHVycGxlczQvNAAvcHVycGxlczUvMQAvcHVycGxlczUvMgAvcHVycGxlczUvMwAvcHVycGxlczUvNAAvcHVycGxlczUvNQAvcHVycGxlczYvMQAvcHVycGxlczYvMgAvcHVycGxlczYvMwAvcHVycGxlczYvNAAvcHVycGxlczYvNQAvcHVycGxlczYvNgAvcHVycGxlczcvMQAvcHVycGxlczcvMgAvcHVycGxlczcvMwAvcHVycGxlczcvNAAvcHVycGxlczcvNQAvcHVycGxlczcvNgAvcHVycGxlczcvNwAvcHVycGxlczgvMQAvcHVycGxlczgvMgAvcHVycGxlczgvMwAvcHVycGxlczgvNAAvcHVycGxlczgvNQAvcHVycGxlczgvNgAvcHVycGxlczgvNwAvcHVycGxlczgvOAAvcHVycGxlczkvMQAvcHVycGxlczkvMgAvcHVycGxlczkvMwAvcHVycGxlczkvNAAvcHVycGxlczkvNQAvcHVycGxlczkvNgAvcHVycGxlczkvNwAvcHVycGxlczkvOAAvcHVycGxlczkvOQAvcmRidTEwLzEAL3JkYnUxMC8xMAAvcmRidTEwLzIAL3JkYnUxMC8zAC9yZGJ1MTAvNAAvcmRidTEwLzUAL3JkYnUxMC82AC9yZGJ1MTAvNwAvcmRidTEwLzgAL3JkYnUxMC85AC9yZGJ1MTEvMQAvcmRidTExLzEwAC9yZGJ1MTEvMTEAL3JkYnUxMS8yAC9yZGJ1MTEvMwAvcmRidTExLzQAL3JkYnUxMS81AC9yZGJ1MTEvNgAvcmRidTExLzcAL3JkYnUxMS84AC9yZGJ1MTEvOQAvcmRidTMvMQAvcmRidTMvMgAvcmRidTMvMwAvcmRidTQvMQAvcmRidTQvMgAvcmRidTQvMwAvcmRidTQvNAAvcmRidTUvMQAvcmRidTUvMgAvcmRidTUvMwAvcmRidTUvNAAvcmRidTUvNQAvcmRidTYvMQAvcmRidTYvMgAvcmRidTYvMwAvcmRidTYvNAAvcmRidTYvNQAvcmRidTYvNgAvcmRidTcvMQAvcmRidTcvMgAvcmRidTcvMwAvcmRidTcvNAAvcmRidTcvNQAvcmRidTcvNgAvcmRidTcvNwAvcmRidTgvMQAvcmRidTgvMgAvcmRidTgvMwAvcmRidTgvNAAvcmRidTgvNQAvcmRidTgvNgAvcmRidTgvNwAvcmRidTgvOAAvcmRidTkvMQAvcmRidTkvMgAvcmRidTkvMwAvcmRidTkvNAAvcmRidTkvNQAvcmRidTkvNgAvcmRidTkvNwAvcmRidTkvOAAvcmRidTkvOQAvcmRneTEwLzEAL3JkZ3kxMC8xMAAvcmRneTEwLzIAL3JkZ3kxMC8zAC9yZGd5MTAvNAAvcmRneTEwLzUAL3JkZ3kxMC82AC9yZGd5MTAvNwAvcmRneTEwLzgAL3JkZ3kxMC85AC9yZGd5MTEvMQAvcmRneTExLzEwAC9yZGd5MTEvMTEAL3JkZ3kxMS8yAC9yZGd5MTEvMwAvcmRneTExLzQAL3JkZ3kxMS81AC9yZGd5MTEvNgAvcmRneTExLzcAL3JkZ3kxMS84AC9yZGd5MTEvOQAvcmRneTMvMQAvcmRneTMvMgAvcmRneTMvMwAvcmRneTQvMQAvcmRneTQvMgAvcmRneTQvMwAvcmRneTQvNAAvcmRneTUvMQAvcmRneTUvMgAvcmRneTUvMwAvcmRneTUvNAAvcmRneTUvNQAvcmRneTYvMQAvcmRneTYvMgAvcmRneTYvMwAvcmRneTYvNAAvcmRneTYvNQAvcmRneTYvNgAvcmRneTcvMQAvcmRneTcvMgAvcmRneTcvMwAvcmRneTcvNAAvcmRneTcvNQAvcmRneTcvNgAvcmRneTcvNwAvcmRneTgvMQAvcmRneTgvMgAvcmRneTgvMwAvcmRneTgvNAAvcmRneTgvNQAvcmRneTgvNgAvcmRneTgvNwAvcmRneTgvOAAvcmRneTkvMQAvcmRneTkvMgAvcmRneTkvMwAvcmRneTkvNAAvcmRneTkvNQAvcmRneTkvNgAvcmRneTkvNwAvcmRneTkvOAAvcmRneTkvOQAvcmRwdTMvMQAvcmRwdTMvMgAvcmRwdTMvMwAvcmRwdTQvMQAvcmRwdTQvMgAvcmRwdTQvMwAvcmRwdTQvNAAvcmRwdTUvMQAvcmRwdTUvMgAvcmRwdTUvMwAvcmRwdTUvNAAvcmRwdTUvNQAvcmRwdTYvMQAvcmRwdTYvMgAvcmRwdTYvMwAvcmRwdTYvNAAvcmRwdTYvNQAvcmRwdTYvNgAvcmRwdTcvMQAvcmRwdTcvMgAvcmRwdTcvMwAvcmRwdTcvNAAvcmRwdTcvNQAvcmRwdTcvNgAvcmRwdTcvNwAvcmRwdTgvMQAvcmRwdTgvMgAvcmRwdTgvMwAvcmRwdTgvNAAvcmRwdTgvNQAvcmRwdTgvNgAvcmRwdTgvNwAvcmRwdTgvOAAvcmRwdTkvMQAvcmRwdTkvMgAvcmRwdTkvMwAvcmRwdTkvNAAvcmRwdTkvNQAvcmRwdTkvNgAvcmRwdTkvNwAvcmRwdTkvOAAvcmRwdTkvOQAvcmR5bGJ1MTAvMQAvcmR5bGJ1MTAvMTAAL3JkeWxidTEwLzIAL3JkeWxidTEwLzMAL3JkeWxidTEwLzQAL3JkeWxidTEwLzUAL3JkeWxidTEwLzYAL3JkeWxidTEwLzcAL3JkeWxidTEwLzgAL3JkeWxidTEwLzkAL3JkeWxidTExLzEAL3JkeWxidTExLzEwAC9yZHlsYnUxMS8xMQAvcmR5bGJ1MTEvMgAvcmR5bGJ1MTEvMwAvcmR5bGJ1MTEvNAAvcmR5bGJ1MTEvNQAvcmR5bGJ1MTEvNgAvcmR5bGJ1MTEvNwAvcmR5bGJ1MTEvOAAvcmR5bGJ1MTEvOQAvcmR5bGJ1My8xAC9yZHlsYnUzLzIAL3JkeWxidTMvMwAvcmR5bGJ1NC8xAC9yZHlsYnU0LzIAL3JkeWxidTQvMwAvcmR5bGJ1NC80AC9yZHlsYnU1LzEAL3JkeWxidTUvMgAvcmR5bGJ1NS8zAC9yZHlsYnU1LzQAL3JkeWxidTUvNQAvcmR5bGJ1Ni8xAC9yZHlsYnU2LzIAL3JkeWxidTYvMwAvcmR5bGJ1Ni80AC9yZHlsYnU2LzUAL3JkeWxidTYvNgAvcmR5bGJ1Ny8xAC9yZHlsYnU3LzIAL3JkeWxidTcvMwAvcmR5bGJ1Ny80AC9yZHlsYnU3LzUAL3JkeWxidTcvNgAvcmR5bGJ1Ny83AC9yZHlsYnU4LzEAL3JkeWxidTgvMgAvcmR5bGJ1OC8zAC9yZHlsYnU4LzQAL3JkeWxidTgvNQAvcmR5bGJ1OC82AC9yZHlsYnU4LzcAL3JkeWxidTgvOAAvcmR5bGJ1OS8xAC9yZHlsYnU5LzIAL3JkeWxidTkvMwAvcmR5bGJ1OS80AC9yZHlsYnU5LzUAL3JkeWxidTkvNgAvcmR5bGJ1OS83AC9yZHlsYnU5LzgAL3JkeWxidTkvOQAvcmR5bGduMTAvMQAvcmR5bGduMTAvMTAAL3JkeWxnbjEwLzIAL3JkeWxnbjEwLzMAL3JkeWxnbjEwLzQAL3JkeWxnbjEwLzUAL3JkeWxnbjEwLzYAL3JkeWxnbjEwLzcAL3JkeWxnbjEwLzgAL3JkeWxnbjEwLzkAL3JkeWxnbjExLzEAL3JkeWxnbjExLzEwAC9yZHlsZ24xMS8xMQAvcmR5bGduMTEvMgAvcmR5bGduMTEvMwAvcmR5bGduMTEvNAAvcmR5bGduMTEvNQAvcmR5bGduMTEvNgAvcmR5bGduMTEvNwAvcmR5bGduMTEvOAAvcmR5bGduMTEvOQAvcmR5bGduMy8xAC9yZHlsZ24zLzIAL3JkeWxnbjMvMwAvcmR5bGduNC8xAC9yZHlsZ240LzIAL3JkeWxnbjQvMwAvcmR5bGduNC80AC9yZHlsZ241LzEAL3JkeWxnbjUvMgAvcmR5bGduNS8zAC9yZHlsZ241LzQAL3JkeWxnbjUvNQAvcmR5bGduNi8xAC9yZHlsZ242LzIAL3JkeWxnbjYvMwAvcmR5bGduNi80AC9yZHlsZ242LzUAL3JkeWxnbjYvNgAvcmR5bGduNy8xAC9yZHlsZ243LzIAL3JkeWxnbjcvMwAvcmR5bGduNy80AC9yZHlsZ243LzUAL3JkeWxnbjcvNgAvcmR5bGduNy83AC9yZHlsZ244LzEAL3JkeWxnbjgvMgAvcmR5bGduOC8zAC9yZHlsZ244LzQAL3JkeWxnbjgvNQAvcmR5bGduOC82AC9yZHlsZ244LzcAL3JkeWxnbjgvOAAvcmR5bGduOS8xAC9yZHlsZ245LzIAL3JkeWxnbjkvMwAvcmR5bGduOS80AC9yZHlsZ245LzUAL3JkeWxnbjkvNgAvcmR5bGduOS83AC9yZHlsZ245LzgAL3JkeWxnbjkvOQAvcmVkczMvMQAvcmVkczMvMgAvcmVkczMvMwAvcmVkczQvMQAvcmVkczQvMgAvcmVkczQvMwAvcmVkczQvNAAvcmVkczUvMQAvcmVkczUvMgAvcmVkczUvMwAvcmVkczUvNAAvcmVkczUvNQAvcmVkczYvMQAvcmVkczYvMgAvcmVkczYvMwAvcmVkczYvNAAvcmVkczYvNQAvcmVkczYvNgAvcmVkczcvMQAvcmVkczcvMgAvcmVkczcvMwAvcmVkczcvNAAvcmVkczcvNQAvcmVkczcvNgAvcmVkczcvNwAvcmVkczgvMQAvcmVkczgvMgAvcmVkczgvMwAvcmVkczgvNAAvcmVkczgvNQAvcmVkczgvNgAvcmVkczgvNwAvcmVkczgvOAAvcmVkczkvMQAvcmVkczkvMgAvcmVkczkvMwAvcmVkczkvNAAvcmVkczkvNQAvcmVkczkvNgAvcmVkczkvNwAvcmVkczkvOAAvcmVkczkvOQAvc2V0MTMvMQAvc2V0MTMvMgAvc2V0MTMvMwAvc2V0MTQvMQAvc2V0MTQvMgAvc2V0MTQvMwAvc2V0MTQvNAAvc2V0MTUvMQAvc2V0MTUvMgAvc2V0MTUvMwAvc2V0MTUvNAAvc2V0MTUvNQAvc2V0MTYvMQAvc2V0MTYvMgAvc2V0MTYvMwAvc2V0MTYvNAAvc2V0MTYvNQAvc2V0MTYvNgAvc2V0MTcvMQAvc2V0MTcvMgAvc2V0MTcvMwAvc2V0MTcvNAAvc2V0MTcvNQAvc2V0MTcvNgAvc2V0MTcvNwAvc2V0MTgvMQAvc2V0MTgvMgAvc2V0MTgvMwAvc2V0MTgvNAAvc2V0MTgvNQAvc2V0MTgvNgAvc2V0MTgvNwAvc2V0MTgvOAAvc2V0MTkvMQAvc2V0MTkvMgAvc2V0MTkvMwAvc2V0MTkvNAAvc2V0MTkvNQAvc2V0MTkvNgAvc2V0MTkvNwAvc2V0MTkvOAAvc2V0MTkvOQAvc2V0MjMvMQAvc2V0MjMvMgAvc2V0MjMvMwAvc2V0MjQvMQAvc2V0MjQvMgAvc2V0MjQvMwAvc2V0MjQvNAAvc2V0MjUvMQAvc2V0MjUvMgAvc2V0MjUvMwAvc2V0MjUvNAAvc2V0MjUvNQAvc2V0MjYvMQAvc2V0MjYvMgAvc2V0MjYvMwAvc2V0MjYvNAAvc2V0MjYvNQAvc2V0MjYvNgAvc2V0MjcvMQAvc2V0MjcvMgAvc2V0MjcvMwAvc2V0MjcvNAAvc2V0MjcvNQAvc2V0MjcvNgAvc2V0MjcvNwAvc2V0MjgvMQAvc2V0MjgvMgAvc2V0MjgvMwAvc2V0MjgvNAAvc2V0MjgvNQAvc2V0MjgvNgAvc2V0MjgvNwAvc2V0MjgvOAAvc2V0MzEwLzEAL3NldDMxMC8xMAAvc2V0MzEwLzIAL3NldDMxMC8zAC9zZXQzMTAvNAAvc2V0MzEwLzUAL3NldDMxMC82AC9zZXQzMTAvNwAvc2V0MzEwLzgAL3NldDMxMC85AC9zZXQzMTEvMQAvc2V0MzExLzEwAC9zZXQzMTEvMTEAL3NldDMxMS8yAC9zZXQzMTEvMwAvc2V0MzExLzQAL3NldDMxMS81AC9zZXQzMTEvNgAvc2V0MzExLzcAL3NldDMxMS84AC9zZXQzMTEvOQAvc2V0MzEyLzEAL3NldDMxMi8xMAAvc2V0MzEyLzExAC9zZXQzMTIvMTIAL3NldDMxMi8yAC9zZXQzMTIvMwAvc2V0MzEyLzQAL3NldDMxMi81AC9zZXQzMTIvNgAvc2V0MzEyLzcAL3NldDMxMi84AC9zZXQzMTIvOQAvc2V0MzMvMQAvc2V0MzMvMgAvc2V0MzMvMwAvc2V0MzQvMQAvc2V0MzQvMgAvc2V0MzQvMwAvc2V0MzQvNAAvc2V0MzUvMQAvc2V0MzUvMgAvc2V0MzUvMwAvc2V0MzUvNAAvc2V0MzUvNQAvc2V0MzYvMQAvc2V0MzYvMgAvc2V0MzYvMwAvc2V0MzYvNAAvc2V0MzYvNQAvc2V0MzYvNgAvc2V0MzcvMQAvc2V0MzcvMgAvc2V0MzcvMwAvc2V0MzcvNAAvc2V0MzcvNQAvc2V0MzcvNgAvc2V0MzcvNwAvc2V0MzgvMQAvc2V0MzgvMgAvc2V0MzgvMwAvc2V0MzgvNAAvc2V0MzgvNQAvc2V0MzgvNgAvc2V0MzgvNwAvc2V0MzgvOAAvc2V0MzkvMQAvc2V0MzkvMgAvc2V0MzkvMwAvc2V0MzkvNAAvc2V0MzkvNQAvc2V0MzkvNgAvc2V0MzkvNwAvc2V0MzkvOAAvc2V0MzkvOQAvc3BlY3RyYWwxMC8xAC9zcGVjdHJhbDEwLzEwAC9zcGVjdHJhbDEwLzIAL3NwZWN0cmFsMTAvMwAvc3BlY3RyYWwxMC80AC9zcGVjdHJhbDEwLzUAL3NwZWN0cmFsMTAvNgAvc3BlY3RyYWwxMC83AC9zcGVjdHJhbDEwLzgAL3NwZWN0cmFsMTAvOQAvc3BlY3RyYWwxMS8xAC9zcGVjdHJhbDExLzEwAC9zcGVjdHJhbDExLzExAC9zcGVjdHJhbDExLzIAL3NwZWN0cmFsMTEvMwAvc3BlY3RyYWwxMS80AC9zcGVjdHJhbDExLzUAL3NwZWN0cmFsMTEvNgAvc3BlY3RyYWwxMS83AC9zcGVjdHJhbDExLzgAL3NwZWN0cmFsMTEvOQAvc3BlY3RyYWwzLzEAL3NwZWN0cmFsMy8yAC9zcGVjdHJhbDMvMwAvc3BlY3RyYWw0LzEAL3NwZWN0cmFsNC8yAC9zcGVjdHJhbDQvMwAvc3BlY3RyYWw0LzQAL3NwZWN0cmFsNS8xAC9zcGVjdHJhbDUvMgAvc3BlY3RyYWw1LzMAL3NwZWN0cmFsNS80AC9zcGVjdHJhbDUvNQAvc3BlY3RyYWw2LzEAL3NwZWN0cmFsNi8yAC9zcGVjdHJhbDYvMwAvc3BlY3RyYWw2LzQAL3NwZWN0cmFsNi81AC9zcGVjdHJhbDYvNgAvc3BlY3RyYWw3LzEAL3NwZWN0cmFsNy8yAC9zcGVjdHJhbDcvMwAvc3BlY3RyYWw3LzQAL3NwZWN0cmFsNy81AC9zcGVjdHJhbDcvNgAvc3BlY3RyYWw3LzcAL3NwZWN0cmFsOC8xAC9zcGVjdHJhbDgvMgAvc3BlY3RyYWw4LzMAL3NwZWN0cmFsOC80AC9zcGVjdHJhbDgvNQAvc3BlY3RyYWw4LzYAL3NwZWN0cmFsOC83AC9zcGVjdHJhbDgvOAAvc3BlY3RyYWw5LzEAL3NwZWN0cmFsOS8yAC9zcGVjdHJhbDkvMwAvc3BlY3RyYWw5LzQAL3NwZWN0cmFsOS81AC9zcGVjdHJhbDkvNgAvc3BlY3RyYWw5LzcAL3NwZWN0cmFsOS84AC9zcGVjdHJhbDkvOQAvc3ZnL2FsaWNlYmx1ZQAvc3ZnL2FudGlxdWV3aGl0ZQAvc3ZnL2FxdWEAL3N2Zy9hcXVhbWFyaW5lAC9zdmcvYXp1cmUAL3N2Zy9iZWlnZQAvc3ZnL2Jpc3F1ZQAvc3ZnL2JsYWNrAC9zdmcvYmxhbmNoZWRhbG1vbmQAL3N2Zy9ibHVlAC9zdmcvYmx1ZXZpb2xldAAvc3ZnL2Jyb3duAC9zdmcvYnVybHl3b29kAC9zdmcvY2FkZXRibHVlAC9zdmcvY2hhcnRyZXVzZQAvc3ZnL2Nob2NvbGF0ZQAvc3ZnL2NvcmFsAC9zdmcvY29ybmZsb3dlcmJsdWUAL3N2Zy9jb3Juc2lsawAvc3ZnL2NyaW1zb24AL3N2Zy9jeWFuAC9zdmcvZGFya2JsdWUAL3N2Zy9kYXJrY3lhbgAvc3ZnL2Rhcmtnb2xkZW5yb2QAL3N2Zy9kYXJrZ3JheQAvc3ZnL2RhcmtncmVlbgAvc3ZnL2RhcmtncmV5AC9zdmcvZGFya2toYWtpAC9zdmcvZGFya21hZ2VudGEAL3N2Zy9kYXJrb2xpdmVncmVlbgAvc3ZnL2RhcmtvcmFuZ2UAL3N2Zy9kYXJrb3JjaGlkAC9zdmcvZGFya3JlZAAvc3ZnL2RhcmtzYWxtb24AL3N2Zy9kYXJrc2VhZ3JlZW4AL3N2Zy9kYXJrc2xhdGVibHVlAC9zdmcvZGFya3NsYXRlZ3JheQAvc3ZnL2RhcmtzbGF0ZWdyZXkAL3N2Zy9kYXJrdHVycXVvaXNlAC9zdmcvZGFya3Zpb2xldAAvc3ZnL2RlZXBwaW5rAC9zdmcvZGVlcHNreWJsdWUAL3N2Zy9kaW1ncmF5AC9zdmcvZGltZ3JleQAvc3ZnL2RvZGdlcmJsdWUAL3N2Zy9maXJlYnJpY2sAL3N2Zy9mbG9yYWx3aGl0ZQAvc3ZnL2ZvcmVzdGdyZWVuAC9zdmcvZnVjaHNpYQAvc3ZnL2dhaW5zYm9ybwAvc3ZnL2dob3N0d2hpdGUAL3N2Zy9nb2xkAC9zdmcvZ29sZGVucm9kAC9zdmcvZ3JheQAvc3ZnL2dyZWVuAC9zdmcvZ3JlZW55ZWxsb3cAL3N2Zy9ncmV5AC9zdmcvaG9uZXlkZXcAL3N2Zy9ob3RwaW5rAC9zdmcvaW5kaWFucmVkAC9zdmcvaW5kaWdvAC9zdmcvaXZvcnkAL3N2Zy9raGFraQAvc3ZnL2xhdmVuZGVyAC9zdmcvbGF2ZW5kZXJibHVzaAAvc3ZnL2xhd25ncmVlbgAvc3ZnL2xlbW9uY2hpZmZvbgAvc3ZnL2xpZ2h0Ymx1ZQAvc3ZnL2xpZ2h0Y29yYWwAL3N2Zy9saWdodGN5YW4AL3N2Zy9saWdodGdvbGRlbnJvZHllbGxvdwAvc3ZnL2xpZ2h0Z3JheQAvc3ZnL2xpZ2h0Z3JlZW4AL3N2Zy9saWdodGdyZXkAL3N2Zy9saWdodHBpbmsAL3N2Zy9saWdodHNhbG1vbgAvc3ZnL2xpZ2h0c2VhZ3JlZW4AL3N2Zy9saWdodHNreWJsdWUAL3N2Zy9saWdodHNsYXRlZ3JheQAvc3ZnL2xpZ2h0c2xhdGVncmV5AC9zdmcvbGlnaHRzdGVlbGJsdWUAL3N2Zy9saWdodHllbGxvdwAvc3ZnL2xpbWUAL3N2Zy9saW1lZ3JlZW4AL3N2Zy9saW5lbgAvc3ZnL21hZ2VudGEAL3N2Zy9tYXJvb24AL3N2Zy9tZWRpdW1hcXVhbWFyaW5lAC9zdmcvbWVkaXVtYmx1ZQAvc3ZnL21lZGl1bW9yY2hpZAAvc3ZnL21lZGl1bXB1cnBsZQAvc3ZnL21lZGl1bXNlYWdyZWVuAC9zdmcvbWVkaXVtc2xhdGVibHVlAC9zdmcvbWVkaXVtc3ByaW5nZ3JlZW4AL3N2Zy9tZWRpdW10dXJxdW9pc2UAL3N2Zy9tZWRpdW12aW9sZXRyZWQAL3N2Zy9taWRuaWdodGJsdWUAL3N2Zy9taW50Y3JlYW0AL3N2Zy9taXN0eXJvc2UAL3N2Zy9tb2NjYXNpbgAvc3ZnL25hdmFqb3doaXRlAC9zdmcvbmF2eQAvc3ZnL29sZGxhY2UAL3N2Zy9vbGl2ZQAvc3ZnL29saXZlZHJhYgAvc3ZnL29yYW5nZQAvc3ZnL29yYW5nZXJlZAAvc3ZnL29yY2hpZAAvc3ZnL3BhbGVnb2xkZW5yb2QAL3N2Zy9wYWxlZ3JlZW4AL3N2Zy9wYWxldHVycXVvaXNlAC9zdmcvcGFsZXZpb2xldHJlZAAvc3ZnL3BhcGF5YXdoaXAAL3N2Zy9wZWFjaHB1ZmYAL3N2Zy9wZXJ1AC9zdmcvcGluawAvc3ZnL3BsdW0AL3N2Zy9wb3dkZXJibHVlAC9zdmcvcHVycGxlAC9zdmcvcmVkAC9zdmcvcm9zeWJyb3duAC9zdmcvcm95YWxibHVlAC9zdmcvc2FkZGxlYnJvd24AL3N2Zy9zYWxtb24AL3N2Zy9zYW5keWJyb3duAC9zdmcvc2VhZ3JlZW4AL3N2Zy9zZWFzaGVsbAAvc3ZnL3NpZW5uYQAvc3ZnL3NpbHZlcgAvc3ZnL3NreWJsdWUAL3N2Zy9zbGF0ZWJsdWUAL3N2Zy9zbGF0ZWdyYXkAL3N2Zy9zbGF0ZWdyZXkAL3N2Zy9zbm93AC9zdmcvc3ByaW5nZ3JlZW4AL3N2Zy9zdGVlbGJsdWUAL3N2Zy90YW4AL3N2Zy90ZWFsAC9zdmcvdGhpc3RsZQAvc3ZnL3RvbWF0bwAvc3ZnL3R1cnF1b2lzZQAvc3ZnL3Zpb2xldAAvc3ZnL3doZWF0AC9zdmcvd2hpdGUAL3N2Zy93aGl0ZXNtb2tlAC9zdmcveWVsbG93AC9zdmcveWVsbG93Z3JlZW4AL3lsZ24zLzEAL3lsZ24zLzIAL3lsZ24zLzMAL3lsZ240LzEAL3lsZ240LzIAL3lsZ240LzMAL3lsZ240LzQAL3lsZ241LzEAL3lsZ241LzIAL3lsZ241LzMAL3lsZ241LzQAL3lsZ241LzUAL3lsZ242LzEAL3lsZ242LzIAL3lsZ242LzMAL3lsZ242LzQAL3lsZ242LzUAL3lsZ242LzYAL3lsZ243LzEAL3lsZ243LzIAL3lsZ243LzMAL3lsZ243LzQAL3lsZ243LzUAL3lsZ243LzYAL3lsZ243LzcAL3lsZ244LzEAL3lsZ244LzIAL3lsZ244LzMAL3lsZ244LzQAL3lsZ244LzUAL3lsZ244LzYAL3lsZ244LzcAL3lsZ244LzgAL3lsZ245LzEAL3lsZ245LzIAL3lsZ245LzMAL3lsZ245LzQAL3lsZ245LzUAL3lsZ245LzYAL3lsZ245LzcAL3lsZ245LzgAL3lsZ245LzkAL3lsZ25idTMvMQAveWxnbmJ1My8yAC95bGduYnUzLzMAL3lsZ25idTQvMQAveWxnbmJ1NC8yAC95bGduYnU0LzMAL3lsZ25idTQvNAAveWxnbmJ1NS8xAC95bGduYnU1LzIAL3lsZ25idTUvMwAveWxnbmJ1NS80AC95bGduYnU1LzUAL3lsZ25idTYvMQAveWxnbmJ1Ni8yAC95bGduYnU2LzMAL3lsZ25idTYvNAAveWxnbmJ1Ni81AC95bGduYnU2LzYAL3lsZ25idTcvMQAveWxnbmJ1Ny8yAC95bGduYnU3LzMAL3lsZ25idTcvNAAveWxnbmJ1Ny81AC95bGduYnU3LzYAL3lsZ25idTcvNwAveWxnbmJ1OC8xAC95bGduYnU4LzIAL3lsZ25idTgvMwAveWxnbmJ1OC80AC95bGduYnU4LzUAL3lsZ25idTgvNgAveWxnbmJ1OC83AC95bGduYnU4LzgAL3lsZ25idTkvMQAveWxnbmJ1OS8yAC95bGduYnU5LzMAL3lsZ25idTkvNAAveWxnbmJ1OS81AC95bGduYnU5LzYAL3lsZ25idTkvNwAveWxnbmJ1OS84AC95bGduYnU5LzkAL3lsb3JicjMvMQAveWxvcmJyMy8yAC95bG9yYnIzLzMAL3lsb3JicjQvMQAveWxvcmJyNC8yAC95bG9yYnI0LzMAL3lsb3JicjQvNAAveWxvcmJyNS8xAC95bG9yYnI1LzIAL3lsb3JicjUvMwAveWxvcmJyNS80AC95bG9yYnI1LzUAL3lsb3JicjYvMQAveWxvcmJyNi8yAC95bG9yYnI2LzMAL3lsb3JicjYvNAAveWxvcmJyNi81AC95bG9yYnI2LzYAL3lsb3JicjcvMQAveWxvcmJyNy8yAC95bG9yYnI3LzMAL3lsb3JicjcvNAAveWxvcmJyNy81AC95bG9yYnI3LzYAL3lsb3JicjcvNwAveWxvcmJyOC8xAC95bG9yYnI4LzIAL3lsb3JicjgvMwAveWxvcmJyOC80AC95bG9yYnI4LzUAL3lsb3JicjgvNgAveWxvcmJyOC83AC95bG9yYnI4LzgAL3lsb3JicjkvMQAveWxvcmJyOS8yAC95bG9yYnI5LzMAL3lsb3JicjkvNAAveWxvcmJyOS81AC95bG9yYnI5LzYAL3lsb3JicjkvNwAveWxvcmJyOS84AC95bG9yYnI5LzkAL3lsb3JyZDMvMQAveWxvcnJkMy8yAC95bG9ycmQzLzMAL3lsb3JyZDQvMQAveWxvcnJkNC8yAC95bG9ycmQ0LzMAL3lsb3JyZDQvNAAveWxvcnJkNS8xAC95bG9ycmQ1LzIAL3lsb3JyZDUvMwAveWxvcnJkNS80AC95bG9ycmQ1LzUAL3lsb3JyZDYvMQAveWxvcnJkNi8yAC95bG9ycmQ2LzMAL3lsb3JyZDYvNAAveWxvcnJkNi81AC95bG9ycmQ2LzYAL3lsb3JyZDcvMQAveWxvcnJkNy8yAC95bG9ycmQ3LzMAL3lsb3JyZDcvNAAveWxvcnJkNy81AC95bG9ycmQ3LzYAL3lsb3JyZDcvNwAveWxvcnJkOC8xAC95bG9ycmQ4LzIAL3lsb3JyZDgvMwAveWxvcnJkOC80AC95bG9ycmQ4LzUAL3lsb3JyZDgvNgAveWxvcnJkOC83AC95bG9ycmQ4LzgAL3lsb3JyZDkvMQAveWxvcnJkOS8yAC95bG9ycmQ5LzMAL3lsb3JyZDkvNAAveWxvcnJkOS81AC95bG9ycmQ5LzYAL3lsb3JyZDkvNwAveWxvcnJkOS84AC95bG9ycmQ5LzkAYWxpY2VibHVlAGFudGlxdWV3aGl0ZQBhbnRpcXVld2hpdGUxAGFudGlxdWV3aGl0ZTIAYW50aXF1ZXdoaXRlMwBhbnRpcXVld2hpdGU0AGFxdWFtYXJpbmUAYXF1YW1hcmluZTEAYXF1YW1hcmluZTIAYXF1YW1hcmluZTMAYXF1YW1hcmluZTQAYXp1cmUAYXp1cmUxAGF6dXJlMgBhenVyZTMAYXp1cmU0AGJlaWdlAGJpc3F1ZQBiaXNxdWUxAGJpc3F1ZTIAYmlzcXVlMwBiaXNxdWU0AGJsYW5jaGVkYWxtb25kAGJsdWUAYmx1ZTEAYmx1ZTIAYmx1ZTMAYmx1ZTQAYmx1ZXZpb2xldABicm93bgBicm93bjEAYnJvd24yAGJyb3duMwBicm93bjQAYnVybHl3b29kAGJ1cmx5d29vZDEAYnVybHl3b29kMgBidXJseXdvb2QzAGJ1cmx5d29vZDQAY2FkZXRibHVlAGNhZGV0Ymx1ZTEAY2FkZXRibHVlMgBjYWRldGJsdWUzAGNhZGV0Ymx1ZTQAY2hhcnRyZXVzZQBjaGFydHJldXNlMQBjaGFydHJldXNlMgBjaGFydHJldXNlMwBjaGFydHJldXNlNABjaG9jb2xhdGUAY2hvY29sYXRlMQBjaG9jb2xhdGUyAGNob2NvbGF0ZTMAY2hvY29sYXRlNABjb3JhbABjb3JhbDEAY29yYWwyAGNvcmFsMwBjb3JhbDQAY29ybmZsb3dlcmJsdWUAY29ybnNpbGsAY29ybnNpbGsxAGNvcm5zaWxrMgBjb3Juc2lsazMAY29ybnNpbGs0AGNyaW1zb24AY3lhbgBjeWFuMQBjeWFuMgBjeWFuMwBjeWFuNABkYXJrZ29sZGVucm9kAGRhcmtnb2xkZW5yb2QxAGRhcmtnb2xkZW5yb2QyAGRhcmtnb2xkZW5yb2QzAGRhcmtnb2xkZW5yb2Q0AGRhcmtncmVlbgBkYXJra2hha2kAZGFya29saXZlZ3JlZW4AZGFya29saXZlZ3JlZW4xAGRhcmtvbGl2ZWdyZWVuMgBkYXJrb2xpdmVncmVlbjMAZGFya29saXZlZ3JlZW40AGRhcmtvcmFuZ2UAZGFya29yYW5nZTEAZGFya29yYW5nZTIAZGFya29yYW5nZTMAZGFya29yYW5nZTQAZGFya29yY2hpZABkYXJrb3JjaGlkMQBkYXJrb3JjaGlkMgBkYXJrb3JjaGlkMwBkYXJrb3JjaGlkNABkYXJrc2FsbW9uAGRhcmtzZWFncmVlbgBkYXJrc2VhZ3JlZW4xAGRhcmtzZWFncmVlbjIAZGFya3NlYWdyZWVuMwBkYXJrc2VhZ3JlZW40AGRhcmtzbGF0ZWJsdWUAZGFya3NsYXRlZ3JheQBkYXJrc2xhdGVncmF5MQBkYXJrc2xhdGVncmF5MgBkYXJrc2xhdGVncmF5MwBkYXJrc2xhdGVncmF5NABkYXJrc2xhdGVncmV5AGRhcmt0dXJxdW9pc2UAZGFya3Zpb2xldABkZWVwcGluawBkZWVwcGluazEAZGVlcHBpbmsyAGRlZXBwaW5rMwBkZWVwcGluazQAZGVlcHNreWJsdWUAZGVlcHNreWJsdWUxAGRlZXBza3libHVlMgBkZWVwc2t5Ymx1ZTMAZGVlcHNreWJsdWU0AGRpbWdyYXkAZGltZ3JleQBkb2RnZXJibHVlAGRvZGdlcmJsdWUxAGRvZGdlcmJsdWUyAGRvZGdlcmJsdWUzAGRvZGdlcmJsdWU0AGZpcmVicmljawBmaXJlYnJpY2sxAGZpcmVicmljazIAZmlyZWJyaWNrMwBmaXJlYnJpY2s0AGZsb3JhbHdoaXRlAGZvcmVzdGdyZWVuAGdhaW5zYm9ybwBnaG9zdHdoaXRlAGdvbGQAZ29sZDEAZ29sZDIAZ29sZDMAZ29sZDQAZ29sZGVucm9kAGdvbGRlbnJvZDEAZ29sZGVucm9kMgBnb2xkZW5yb2QzAGdvbGRlbnJvZDQAZ3JheQBncmF5MABncmF5MQBncmF5MTAAZ3JheTEwMABncmF5MTEAZ3JheTEyAGdyYXkxMwBncmF5MTQAZ3JheTE1AGdyYXkxNgBncmF5MTcAZ3JheTE4AGdyYXkxOQBncmF5MgBncmF5MjAAZ3JheTIxAGdyYXkyMgBncmF5MjMAZ3JheTI0AGdyYXkyNQBncmF5MjYAZ3JheTI3AGdyYXkyOABncmF5MjkAZ3JheTMAZ3JheTMwAGdyYXkzMQBncmF5MzIAZ3JheTMzAGdyYXkzNABncmF5MzUAZ3JheTM2AGdyYXkzNwBncmF5MzgAZ3JheTM5AGdyYXk0AGdyYXk0MABncmF5NDEAZ3JheTQyAGdyYXk0MwBncmF5NDQAZ3JheTQ1AGdyYXk0NgBncmF5NDcAZ3JheTQ4AGdyYXk0OQBncmF5NQBncmF5NTAAZ3JheTUxAGdyYXk1MgBncmF5NTMAZ3JheTU0AGdyYXk1NQBncmF5NTYAZ3JheTU3AGdyYXk1OABncmF5NTkAZ3JheTYAZ3JheTYwAGdyYXk2MQBncmF5NjIAZ3JheTYzAGdyYXk2NABncmF5NjUAZ3JheTY2AGdyYXk2NwBncmF5NjgAZ3JheTY5AGdyYXk3AGdyYXk3MABncmF5NzEAZ3JheTcyAGdyYXk3MwBncmF5NzQAZ3JheTc1AGdyYXk3NgBncmF5NzcAZ3JheTc4AGdyYXk3OQBncmF5OABncmF5ODAAZ3JheTgxAGdyYXk4MgBncmF5ODMAZ3JheTg0AGdyYXk4NQBncmF5ODYAZ3JheTg3AGdyYXk4OABncmF5ODkAZ3JheTkAZ3JheTkwAGdyYXk5MQBncmF5OTIAZ3JheTkzAGdyYXk5NABncmF5OTUAZ3JheTk2AGdyYXk5NwBncmF5OTgAZ3JheTk5AGdyZWVuAGdyZWVuMQBncmVlbjIAZ3JlZW4zAGdyZWVuNABncmVlbnllbGxvdwBncmV5AGdyZXkwAGdyZXkxAGdyZXkxMABncmV5MTAwAGdyZXkxMQBncmV5MTIAZ3JleTEzAGdyZXkxNABncmV5MTUAZ3JleTE2AGdyZXkxNwBncmV5MTgAZ3JleTE5AGdyZXkyAGdyZXkyMABncmV5MjEAZ3JleTIyAGdyZXkyMwBncmV5MjQAZ3JleTI1AGdyZXkyNgBncmV5MjcAZ3JleTI4AGdyZXkyOQBncmV5MwBncmV5MzAAZ3JleTMxAGdyZXkzMgBncmV5MzMAZ3JleTM0AGdyZXkzNQBncmV5MzYAZ3JleTM3AGdyZXkzOABncmV5MzkAZ3JleTQAZ3JleTQwAGdyZXk0MQBncmV5NDIAZ3JleTQzAGdyZXk0NABncmV5NDUAZ3JleTQ2AGdyZXk0NwBncmV5NDgAZ3JleTQ5AGdyZXk1AGdyZXk1MABncmV5NTEAZ3JleTUyAGdyZXk1MwBncmV5NTQAZ3JleTU1AGdyZXk1NgBncmV5NTcAZ3JleTU4AGdyZXk1OQBncmV5NgBncmV5NjAAZ3JleTYxAGdyZXk2MgBncmV5NjMAZ3JleTY0AGdyZXk2NQBncmV5NjYAZ3JleTY3AGdyZXk2OABncmV5NjkAZ3JleTcAZ3JleTcwAGdyZXk3MQBncmV5NzIAZ3JleTczAGdyZXk3NABncmV5NzUAZ3JleTc2AGdyZXk3NwBncmV5NzgAZ3JleTc5AGdyZXk4AGdyZXk4MABncmV5ODEAZ3JleTgyAGdyZXk4MwBncmV5ODQAZ3JleTg1AGdyZXk4NgBncmV5ODcAZ3JleTg4AGdyZXk4OQBncmV5OQBncmV5OTAAZ3JleTkxAGdyZXk5MgBncmV5OTMAZ3JleTk0AGdyZXk5NQBncmV5OTYAZ3JleTk3AGdyZXk5OABncmV5OTkAaG9uZXlkZXcAaG9uZXlkZXcxAGhvbmV5ZGV3MgBob25leWRldzMAaG9uZXlkZXc0AGhvdHBpbmsAaG90cGluazEAaG90cGluazIAaG90cGluazMAaG90cGluazQAaW5kaWFucmVkAGluZGlhbnJlZDEAaW5kaWFucmVkMgBpbmRpYW5yZWQzAGluZGlhbnJlZDQAaW5kaWdvAGludmlzAGl2b3J5AGl2b3J5MQBpdm9yeTIAaXZvcnkzAGl2b3J5NABraGFraQBraGFraTEAa2hha2kyAGtoYWtpMwBraGFraTQAbGF2ZW5kZXIAbGF2ZW5kZXJibHVzaABsYXZlbmRlcmJsdXNoMQBsYXZlbmRlcmJsdXNoMgBsYXZlbmRlcmJsdXNoMwBsYXZlbmRlcmJsdXNoNABsYXduZ3JlZW4AbGVtb25jaGlmZm9uAGxlbW9uY2hpZmZvbjEAbGVtb25jaGlmZm9uMgBsZW1vbmNoaWZmb24zAGxlbW9uY2hpZmZvbjQAbGlnaHRibHVlAGxpZ2h0Ymx1ZTEAbGlnaHRibHVlMgBsaWdodGJsdWUzAGxpZ2h0Ymx1ZTQAbGlnaHRjb3JhbABsaWdodGN5YW4AbGlnaHRjeWFuMQBsaWdodGN5YW4yAGxpZ2h0Y3lhbjMAbGlnaHRjeWFuNABsaWdodGdvbGRlbnJvZABsaWdodGdvbGRlbnJvZDEAbGlnaHRnb2xkZW5yb2QyAGxpZ2h0Z29sZGVucm9kMwBsaWdodGdvbGRlbnJvZDQAbGlnaHRnb2xkZW5yb2R5ZWxsb3cAbGlnaHRncmF5AGxpZ2h0Z3JleQBsaWdodHBpbmsAbGlnaHRwaW5rMQBsaWdodHBpbmsyAGxpZ2h0cGluazMAbGlnaHRwaW5rNABsaWdodHNhbG1vbgBsaWdodHNhbG1vbjEAbGlnaHRzYWxtb24yAGxpZ2h0c2FsbW9uMwBsaWdodHNhbG1vbjQAbGlnaHRzZWFncmVlbgBsaWdodHNreWJsdWUAbGlnaHRza3libHVlMQBsaWdodHNreWJsdWUyAGxpZ2h0c2t5Ymx1ZTMAbGlnaHRza3libHVlNABsaWdodHNsYXRlYmx1ZQBsaWdodHNsYXRlZ3JheQBsaWdodHNsYXRlZ3JleQBsaWdodHN0ZWVsYmx1ZQBsaWdodHN0ZWVsYmx1ZTEAbGlnaHRzdGVlbGJsdWUyAGxpZ2h0c3RlZWxibHVlMwBsaWdodHN0ZWVsYmx1ZTQAbGlnaHR5ZWxsb3cAbGlnaHR5ZWxsb3cxAGxpZ2h0eWVsbG93MgBsaWdodHllbGxvdzMAbGlnaHR5ZWxsb3c0AGxpbWVncmVlbgBsaW5lbgBtYWdlbnRhAG1hZ2VudGExAG1hZ2VudGEyAG1hZ2VudGEzAG1hZ2VudGE0AG1hcm9vbgBtYXJvb24xAG1hcm9vbjIAbWFyb29uMwBtYXJvb240AG1lZGl1bWFxdWFtYXJpbmUAbWVkaXVtYmx1ZQBtZWRpdW1vcmNoaWQAbWVkaXVtb3JjaGlkMQBtZWRpdW1vcmNoaWQyAG1lZGl1bW9yY2hpZDMAbWVkaXVtb3JjaGlkNABtZWRpdW1wdXJwbGUAbWVkaXVtcHVycGxlMQBtZWRpdW1wdXJwbGUyAG1lZGl1bXB1cnBsZTMAbWVkaXVtcHVycGxlNABtZWRpdW1zZWFncmVlbgBtZWRpdW1zbGF0ZWJsdWUAbWVkaXVtc3ByaW5nZ3JlZW4AbWVkaXVtdHVycXVvaXNlAG1lZGl1bXZpb2xldHJlZABtaWRuaWdodGJsdWUAbWludGNyZWFtAG1pc3R5cm9zZQBtaXN0eXJvc2UxAG1pc3R5cm9zZTIAbWlzdHlyb3NlMwBtaXN0eXJvc2U0AG1vY2Nhc2luAG5hdmFqb3doaXRlAG5hdmFqb3doaXRlMQBuYXZham93aGl0ZTIAbmF2YWpvd2hpdGUzAG5hdmFqb3doaXRlNABuYXZ5AG5hdnlibHVlAG5vbmUAb2xkbGFjZQBvbGl2ZWRyYWIAb2xpdmVkcmFiMQBvbGl2ZWRyYWIyAG9saXZlZHJhYjMAb2xpdmVkcmFiNABvcmFuZ2UAb3JhbmdlMQBvcmFuZ2UyAG9yYW5nZTMAb3JhbmdlNABvcmFuZ2VyZWQAb3JhbmdlcmVkMQBvcmFuZ2VyZWQyAG9yYW5nZXJlZDMAb3JhbmdlcmVkNABvcmNoaWQAb3JjaGlkMQBvcmNoaWQyAG9yY2hpZDMAb3JjaGlkNABwYWxlZ29sZGVucm9kAHBhbGVncmVlbgBwYWxlZ3JlZW4xAHBhbGVncmVlbjIAcGFsZWdyZWVuMwBwYWxlZ3JlZW40AHBhbGV0dXJxdW9pc2UAcGFsZXR1cnF1b2lzZTEAcGFsZXR1cnF1b2lzZTIAcGFsZXR1cnF1b2lzZTMAcGFsZXR1cnF1b2lzZTQAcGFsZXZpb2xldHJlZABwYWxldmlvbGV0cmVkMQBwYWxldmlvbGV0cmVkMgBwYWxldmlvbGV0cmVkMwBwYWxldmlvbGV0cmVkNABwYXBheWF3aGlwAHBlYWNocHVmZgBwZWFjaHB1ZmYxAHBlYWNocHVmZjIAcGVhY2hwdWZmMwBwZWFjaHB1ZmY0AHBlcnUAcGluawBwaW5rMQBwaW5rMgBwaW5rMwBwaW5rNABwbHVtAHBsdW0xAHBsdW0yAHBsdW0zAHBsdW00AHBvd2RlcmJsdWUAcHVycGxlAHB1cnBsZTEAcHVycGxlMgBwdXJwbGUzAHB1cnBsZTQAcmVkAHJlZDEAcmVkMgByZWQzAHJlZDQAcm9zeWJyb3duAHJvc3licm93bjEAcm9zeWJyb3duMgByb3N5YnJvd24zAHJvc3licm93bjQAcm95YWxibHVlAHJveWFsYmx1ZTEAcm95YWxibHVlMgByb3lhbGJsdWUzAHJveWFsYmx1ZTQAc2FkZGxlYnJvd24Ac2FsbW9uAHNhbG1vbjEAc2FsbW9uMgBzYWxtb24zAHNhbG1vbjQAc2FuZHlicm93bgBzZWFncmVlbgBzZWFncmVlbjEAc2VhZ3JlZW4yAHNlYWdyZWVuMwBzZWFncmVlbjQAc2Vhc2hlbGwAc2Vhc2hlbGwxAHNlYXNoZWxsMgBzZWFzaGVsbDMAc2Vhc2hlbGw0AHNpZW5uYQBzaWVubmExAHNpZW5uYTIAc2llbm5hMwBzaWVubmE0AHNreWJsdWUAc2t5Ymx1ZTEAc2t5Ymx1ZTIAc2t5Ymx1ZTMAc2t5Ymx1ZTQAc2xhdGVibHVlAHNsYXRlYmx1ZTEAc2xhdGVibHVlMgBzbGF0ZWJsdWUzAHNsYXRlYmx1ZTQAc2xhdGVncmF5AHNsYXRlZ3JheTEAc2xhdGVncmF5MgBzbGF0ZWdyYXkzAHNsYXRlZ3JheTQAc2xhdGVncmV5AHNub3cAc25vdzEAc25vdzIAc25vdzMAc25vdzQAc3ByaW5nZ3JlZW4Ac3ByaW5nZ3JlZW4xAHNwcmluZ2dyZWVuMgBzcHJpbmdncmVlbjMAc3ByaW5nZ3JlZW40AHN0ZWVsYmx1ZQBzdGVlbGJsdWUxAHN0ZWVsYmx1ZTIAc3RlZWxibHVlMwBzdGVlbGJsdWU0AHRhbgB0YW4xAHRhbjIAdGFuMwB0YW40AHRoaXN0bGUAdGhpc3RsZTEAdGhpc3RsZTIAdGhpc3RsZTMAdGhpc3RsZTQAdG9tYXRvAHRvbWF0bzEAdG9tYXRvMgB0b21hdG8zAHRvbWF0bzQAdHVycXVvaXNlAHR1cnF1b2lzZTEAdHVycXVvaXNlMgB0dXJxdW9pc2UzAHR1cnF1b2lzZTQAdmlvbGV0AHZpb2xldHJlZAB2aW9sZXRyZWQxAHZpb2xldHJlZDIAdmlvbGV0cmVkMwB2aW9sZXRyZWQ0AHdoZWF0AHdoZWF0MQB3aGVhdDIAd2hlYXQzAHdoZWF0NAB3aGl0ZQB3aGl0ZXNtb2tlAHllbGxvdwB5ZWxsb3cxAHllbGxvdzIAeWVsbG93MwB5ZWxsb3c0AHllbGxvd2dyZWVuAGxhY2sAaGl0ZQBpZ2h0Z3JleQBYMTEvAC8lcy8lcwBpbWFnZXNjYWxlAGZhbHNlAGJsYWNrAGRvdHRlZABkYXNoZWQAY3AtPnNyYwBodG1sdGFibGUuYwBlbWl0X2h0bWxfaW1nAGNwLT5zcmNbMF0AdHJhbnNwYXJlbnQAXyVkACVkADEAMgAzADQANQA2ADcAOAA5ADEwADExADEyADEzADE0ADE1ADE2ADE3ADE4ADE5ADIwAEFnbm9kZWluZm9fdABBZ2VkZ2VpbmZvX3QAcm93ZwBjb2xnAEFncmFwaGluZm9fdAA8VEFCTEU+AGRlbHggPj0gMABwb3NfaHRtbF90YmwAZGVseSA+PSAwAHRhYmxlIHNpemUgdG9vIHNtYWxsIGZvciBjb250ZW50CgBmaXhlZCB0YWJsZSBzaXplIHdpdGggdW5zcGVjaWZpZWQgd2lkdGggb3IgaGVpZ2h0CgBjZWxsIHNpemUgdG9vIHNtYWxsIGZvciBjb250ZW50CgBmaXhlZCBjZWxsIHNpemUgd2l0aCB1bnNwZWNpZmllZCB3aWR0aCBvciBoZWlnaHQKAE5vIG9yIGltcHJvcGVyIGltYWdlIGZpbGU9IiVzIgoAcGVuY29sb3IAY29sb3IALT4ALS0AZlBRLmMAUFFjaGVjawBIZWFwIG92ZXJmbG93CgAlIVBTLUFkb2JlLTIuMAovbm9kZSB7CiAgL1kgZXhjaCBkZWYKICAvWCBleGNoIGRlZgogIC95IGV4Y2ggZGVmCiAgL3ggZXhjaCBkZWYKICBuZXdwYXRoCiAgeCB5IG1vdmV0bwogIHggWSBsaW5ldG8KICBYIFkgbGluZXRvCiAgWCB5IGxpbmV0bwogIGNsb3NlcGF0aCBmaWxsCn0gZGVmCi9jZWxsIHsKICAvWSBleGNoIGRlZgogIC9YIGV4Y2ggZGVmCiAgL3kgZXhjaCBkZWYKICAveCBleGNoIGRlZgogIG5ld3BhdGgKICB4IHkgbW92ZXRvCiAgeCBZIGxpbmV0bwogIFggWSBsaW5ldG8KICBYIHkgbGluZXRvCiAgY2xvc2VwYXRoIHN0cm9rZQp9IGRlZgoAc2hvd3BhZ2UKAGZhaWxlZCBhdCBub2RlICVkWzBdCgBucC0+Y2VsbHNbMF0AbWF6ZS5jAGNoa1NncmFwaABmYWlsZWQgYXQgbm9kZSAlZFsxXQoAbnAtPmNlbGxzWzFdAGRpdGVtcwBmaW5kU1ZlcnQAJSUlJVBhZ2U6IDEgMQolJSUlUGFnZUJvdW5kaW5nQm94OiAlZCAlZCAlZCAlZAoAJWYgJWYgdHJhbnNsYXRlCgAwIDAgMSBzZXRyZ2Jjb2xvcgoAJWYgJWYgJWYgJWYgbm9kZQoAMCAwIDAgc2V0cmdiY29sb3IKACVmICVmICVmICVmIGNlbGwKADEgMCAwIHNldHJnYmNvbG9yCgB1bmV4cGVjdGVkIGNhc2UgaW4gbG9jYXRlX2VuZHBvaW50CgAwAHRyYXBlem9pZC5jAGxvY2F0ZV9lbmRwb2ludABhZGRfc2VnbWVudDogZXJyb3IKAG5ld25vZGU6IFF1ZXJ5LXRhYmxlIG92ZXJmbG93CgBuZXdub2RlAG5ld3RyYXA6IFRyYXBlem9pZC10YWJsZSBvdmVyZmxvdyAlZAoAbmV3dHJhcABpbmRleC5jAFJUcmVlU2VhcmNoAG4tPmxldmVsID49IDAAUlRyZWVJbnNlcnQAbGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSAoKm4pLT5sZXZlbAByLT5ib3VuZGFyeVtpXSA8PSByLT5ib3VuZGFyeVtOVU1ESU1TICsgaV0AciAmJiBuICYmIG5ldwBSVHJlZUluc2VydDIAbGV2ZWwgPj0gMCAmJiBsZXZlbCA8PSBuLT5sZXZlbABGQUxTRQBub2RlLmMATm9kZUNvdmVyAHIgJiYgbgBQaWNrQnJhbmNoAEFkZEJyYW5jaABpIDwgTk9ERUNBUkQAbmV3AG4gJiYgaSA+PSAwICYmIGkgPCBOT0RFQ0FSRABEaXNjb25CcmFuY2gAcgByZWN0YW5nbGUuYwBSZWN0QXJlYQByICYmIHJyAENvbWJpbmVSZWN0AHIgJiYgcwBPdmVybGFwAG4Ac3BsaXQucS5jAFNwbGl0Tm9kZQBiAG4tPmNvdW50ICsgKCpubiktPmNvdW50ID09IE5PREVDQVJEICsgMQBMb2FkTm9kZXMAcQBwAHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5wYXJ0aXRpb25baV0gPT0gMCB8fCBydHAtPnNwbGl0LlBhcnRpdGlvbnNbMF0ucGFydGl0aW9uW2ldID09IDEAcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzBdICsgcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzFdID09IE5PREVDQVJEICsgMQBNZXRob2RaZXJvAHJ0cC0+c3BsaXQuUGFydGl0aW9uc1swXS5jb3VudFswXSA+PSBydHAtPk1pbkZpbGwgJiYgcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLmNvdW50WzFdID49IHJ0cC0+TWluRmlsbAAhcnRwLT5zcGxpdC5QYXJ0aXRpb25zWzBdLnRha2VuW2ldAENsYXNzaWZ5AEdldEJyYW5jaGVzAG4tPmJyYW5jaFtpXS5jaGlsZAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKAICAgICAhAMWQEAH1AIAwcSExRXFhcIC2kMHwoFDA4pESsPLRAvMCAyBjQ1GxwdHgsMISIjJCUmJygMGBkXBAobHBogKgohIiMkJSYnKAwKDlMKLFgxWFhYWFhYDBscDy5YMyEiIyQlJicoGxz/U///ISIjJCUmJygM//8F////CRT//////wwbHP8QFRYhIiMkJSYnKBsc/////yEiIyQlJicoDP8SExQRFhf///////8MGxz///8SISIjJCUmJygbHP////8hIiMkJSYnKAz///////8T////////DBsc/////yEiIyQlJicoGxz/////ISIjJCUmJygSExQVFhcYGf///////////yMkJSYnGxITFBYXIjZoAR84ViEgAhsbG14bGzc5cDbSwk8EPCJHIj8iRCIiWCJlIiIFBl9gOQQHCAkKCwwNDgRmZ11qbQUGb1g7cQcICQoLDA0OBHI8W3M+YUYbEhMUFhcEBQY/QWJJBwgJCgsMDQ4FBgBcAAAHCAkKCwwNDgQAAE8AAABTQgAAAAAABAUGAERUVQcICQoLDA0OBQYAAAAABwgJCgsMDQ4EACosLkcxMwAAAAAAAAQFBgAAAEoHCAkKCwwNDgUGAAAAAAcICQoLDA0OBAAAAAAAAEwAAAAAAAAEBQYAAAAABwgJCgsMDQ4FBgAAAAAHCAkKCwwNDikrLS8wMjQ1AAAAAAAAAAAAKSstMDIABC8AJCMAEhQWGhweIBgABQcvLy8ALy8AAAkIKAAAASICBgAAAAAACAAAAAAAAAAAAAAAAAAlAyYTCikVCyoXDi0ZERsMKx0NLB8PIRAAMwAwAC9DADEALwA1LidCMkEAOjgAPDRFADYAQAAAPwBENzs5PQACAwMBAQIBAQEDAwMDAwMDAwEBAQEBAQEBAQEBAQEBAQECAQECAAYBAwMDAwMBAAECAwAEAQIDAAQABAAEAAMCAQIBAgFTeW50YXggZXJyb3I6IG5vbi1zcGFjZSBzdHJpbmcgdXNlZCBiZWZvcmUgPFRBQkxFPgBTeW50YXggZXJyb3I6IG5vbi1zcGFjZSBzdHJpbmcgdXNlZCBhZnRlciA8L1RBQkxFPgAAKSoqKissLC0tLS0tLS0tLS0uLzAxMjM0NTY3ODk6Ozw9Pj4/P0FAQkJCQkJCQ0NERERGRUdHR0lISkhLSExITU1OTk9P/wMPEBEjOiQ9JUAVQyZFJ0gYSxlNGigcTh0eUFFSWVpsa25jZFdpc3ludGF4IGVycm9yAG1lbW9yeSBleGhhdXN0ZWQAJXMgaW4gbGluZSAlZCAKAE5vdCBidWlsdCB3aXRoIGxpYmV4cGF0LiBUYWJsZSBmb3JtYXR0aW5nIGlzIG5vdCBhdmFpbGFibGUuCgByb3V0ZS5jAGxpYnBhdGgvJXM6JWQ6ICVzCgBzaG9ydGVzdC5jAHNvdXJjZSBwb2ludCBub3QgaW4gYW55IHRyaWFuZ2xlAGRlc3RpbmF0aW9uIHBvaW50IG5vdCBpbiBhbnkgdHJpYW5nbGUAY2Fubm90IGZpbmQgdHJpYW5nbGUgcGF0aABjYW5ub3QgbWFsbG9jIG9wcwBjYW5ub3QgcmVhbGxvYyBvcHMAdHJpYW5ndWxhdGlvbiBmYWlsZWQAY2Fubm90IG1hbGxvYyB0cmlzAGNhbm5vdCByZWFsbG9jIHRyaXMAY2Fubm90IG1hbGxvYyBkcS5wbmxzAGNhbm5vdCByZWFsbG9jIGRxLnBubHMAY2Fubm90IG1hbGxvYyBwbmxzAGNhbm5vdCBtYWxsb2MgcG5scHMAY2Fubm90IHJlYWxsb2MgcG5scwBjYW5ub3QgcmVhbGxvYyBwbmxwcwBUISIZDQECAxFLHAwQBAsdEh4naG5vcHFiIAUGDxMUFRoIFgcoJBcYCQoOGx8lI4OCfSYqKzw9Pj9DR0pNWFlaW1xdXl9gYWNkZWZnaWprbHJzdHl6e3wASWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AABIQExQVFhcYGRobHB0eHyAhEBAiIxAkJSYnKCkqKxAsLS4RLzARETEREREyMzQ1Njc4OREQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQOhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQOxA8PT4/QEEQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQQhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQQxAQRBBFRkcQSBBJEBAQEEpLTE0QEE4QT1AQEBAQURAQEBAQEBAQEBAQEBBSEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBTEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQVFVWVxAQWFkQEBAQEBAQEBAQEBAQEBAQEBAQEBAQWhBbXF1eX2BhYhAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////wAAAAD+/wD8AQAA+AEAAHgAAAAA//vf+wAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAD8/+Cv/////////////9///////yBAsAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAD8AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAAAACG/v///wBASQAAAAAAGADf/wDIAAAAAAAAAAEAPAAAAAAAAAAAAAAAABDgAR4AYP+/AAAAAAAA/wcAAAAAAAAAAAAAAAAAAAAAAAAA+M8DAAAAAwAg/38AAABOAAAAAAAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAEAAgHgAwAAEAAAAAAAAAABAAIAAAAAD8DwAAAAAAAAAQACAAAAAAAAAAAAAAAAAAEAAgAAAAAAMAAAAAAAAAABAAIAAAAAD9AAAAAAAAAAAAACAAAAAA/wcAAAAAAAAAAAAgAAAAAAD/AAAAAAAAABAAIAAAAAAAAAAAAAAAAAAAACAAAAAAPwIAAAAAAAAAAAAEAAAAABAAAAAAAACAAIDA3wAMAAAAAAAAAAAAAAAAAB8AAAAAAAD+////APz//wAAAAAAAAAA/AAAAAAAAMD/3/8HAAAAAAAAAAAAAIAGAPwAABg+AACAvwDMAAAAAAAAAAAAAAAIAAAAAAAAAAAAAABg////HwAA/wMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAABAAAYAAAAAAAAAAAAOAAAAAAQAAAAcAAAAAAAAAAAAAAAAAAAADAAAP5/LwAA/wP/fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOMQAAAAAAAAAAAAAAAAAAAAAAAMT/////AAAAwAAAAAAAAAAAAQDgnwAAAAB/PwAAAAAAAAAAAAAAAAAAAAAQABAAAPz///8fAAAAAAAMAAAAAAAAQAAM8AAAAAAAAMD4AAAAAAAAAMAAAAAAAAAAAP8A////IRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////38AAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAD4ADgAOAAYID4/////P//////fx/88X//fwAA////AwAA/////wEAewPQwa9CAAwfvP//AAAAAAAC//////////////////////////////////////////////////////////8PAP////9/AAAA/wcAAP////////////8/AAAAAAAA/P///v////////////////////////////////////////////////////8f/wMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADghwP+AAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAD//////3//DwAAAAAAAAAA////+/////////////8PAP//////////////////////////////////PwAAAP8PHv///wH8weAAAAAAAAAAAAAAAB4BAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD/////DwAAAP///3////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAD///////9/AAAAAAAAwADgAAAAAAAAAAAAAACAD3AAAAAAAAAAAAAAAAAAAP8A//9/AAMAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAABECAAAAA//AwAAAAAAAPAAAAAAAAAAAAAQwAAA//8DBwAAAAAA+AAAAAAIgAAAAAAAAAAAAAAIAP8/AMAAAAAAAAAAAAAAAAAAAADwAACACwAAAAAAAACAAgAAwAAAQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA/P8DAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw////A38A//////f/fw8AAAAAAAAAAAAAAAAAAAAAAID+/wD8AQAA+AEAAPg/AAAAAAAAAAAAAAAAAAAAf38AMIf//////4//AAAAAAAA4P//B/8PAAAAAAAA//////8/AAAAAA8AAAAAAAAAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAAAAAAAAAAAgP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwI8AAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIf/AP8BAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAP/z/PwAAAAMAAAAAAAD+AwAAAAAAAAAAAAAAAAAYAA8AAAAAAAAAAAAAAAAAAADhAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAHAAAAAAAAAAAAAAAAAP///////////////////////////////////////z8A/////3/+////////////////////////////PwAAAAD//////////z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////9/AP//AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAACAAAAAgAACAAAAAgAACAAAAAgAAAAAIAAAACAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA//////8P////////////////DwD/f/5//v/+/wAAAAD/B////3//////////D///////BwAAAAAAAAAAwP///wcA//////8H/wEDAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wEAv///////////H///DwD/////3wcAAP//AQD/////////f/3/////////////////////////////Hv////////8/DwD///8AAAAAAAAAAAAAAAAAAAAAAAD4///////////h/wAAAAAAAP//////////PwAAAAAAAAD//////////////////w8AAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAEhETFBUWFxgZGhscHR4fICERIiMkESUmJygpKissES0uLxAQMBAQEBAQEBAxMjMQNDUQEBERERERERERERERERERERERERERERERERE2ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERNxERERE4ETk6Ozw9PhERERERERERERERERERERERERERERERERERERERERERERERERERERERERE/EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEUBBEUJDREVGR0hJEBAQSktMTU4QEBBPUBAQEBBREBAQEBAQEBAQERERUlMQEBAQEBAQEBAQEBERERFUEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQERFVEBAQEFYQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQVxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQWFlaWxAQEBAQEBAQEBAQEBAQEBAQEBAQEBBcEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////AAAAAAAAAAD+//8H/v//BwAAAAAABCAE//9/////f//////////////////////////////////D/wMAH1AAAAAAAAAAAAAAIAAAAAAA3zxA1///+////////////7///////////////////////wP8/////////////////////////wD+////fwL+/////wAAAAAA/7+2AP///wcHAAAA/wf//////////v/D////////////////7x/+4f+fAAD///////8A4P///////////////wMA//////8HMAT////8/x8AAP///wEAAAAAAAAAAP0fAAAAAAAA8AP/f//////////v/9/h/8///v7un/n///3F459ZgLDP/wMA7of5///9bcOHGQJewP8/AO6/+////e3jvxsBAM//AADun/n///3t458ZwLDP/wIA7Mc91hjH/8PHHYEAwP8AAO7f/f///e/j3x1gA8//AADs3/3///3v498dYEDP/wYA7N/9/////+ffXYAAz/8A/Oz/f/z///svf4Bf/wAADAD+/////3//Bz8g/wMAAAAAliXw/q7s/ztfIP/zAAAAAAEAAAD/AwAA//7///8f/v8D///+////HwAAAAAAAAAA////////f/n/A///58H//39A/zP/////vyD///////f///////////89fz3//////z3/////PX89/3//////////Pf//////////hwAAAAD//wAA/////////////x8A/v//////////////////////////////////////////////////////////n////v//B////////////8cBAP/fDwD//w8A//8PAP/fDQD////////P//8BgBD/AwAAAAD/A///////////////AP//////B///////////PwD///8f/w//AcD/////Px8A//////8P////A/8DAAAAAP///w//////////f/7/HwD/A/8DgAAAAAAAAAAAAAAA////////7//vD/8DAAAAAP//////8////////7//AwD///////8/AP/j//////8/AAAAAAAAAAAAAAAAAN5vAP///////////////////////////////wAAAAAAAAAA//8/P/////8/P/+q////P////////99f3B/PD/8f3B8AAAAAAAAAAAAAAAAAAAKAAAD/HwAAAAAAAAAAAAAAAIT8Lz5Qvf/z4EMAAP//////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMD///////8DAAD//////3///////3//////////////////////H3gMAP////+/IP////////+AAAD//38Af39/f39/f3//////AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA/gM+H/7///////////9/4P7/////////////9+D/////P/7/////////////fwAA////BwAAAAAAAP///////////////////////////////z8AAAAAAAAAAAD/////////////////////////////////HwAAAAAAAP//////////////////////HwAAAAAAAAAA//////8//x////8PAAD//////3/wj////4D/////////////AAAAAID//P///////////////3kPAP8HAAAAAAAAAAAA/7v3////AAAA////////DwD//////////w8A/wMAAPwI//////8H/////wcA////H/////////f/AID/AwAAAAD///////9/AP8//wP//38E/////////38FAAA4//88AH5+fgB/fwAAAAAAAAAAAAAAAAAAAAAAAP//////B/8D//////////////////////////8PAP//f/j//////w//////////////////P/////////////////8DAAAAAH8A+OD//X9f2/////////////////8DAAAA+P///////////////z8AAP///////////P///////wAAAAAA/w8AAAAAAAAAAAAAAAAAAN//////////////////////HwAA/wP+//8H/v//B8D/////////////f/z8/BwAAAAA/+///3///7f/P/8/AAAAAP///////////////////wcAAAAAAAAAAP///////x8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8f////////AQAAAAAA////fwAA////BwAAAAAAAP///z//////D/8+AAAAAAD/////////////////////////P/8DAAAAAAAAAAAAAD/9/////7+R//8/AAAAAAAAAAAAAAAAAAAAAAAAAAAA//8/AP///wMAAAAAAAAAAP/////////AAAAAAAAAAABv8O/+//8PAAAAAAD///8fAAAAAAAAAAAAAAAAAAAAAP///////z8A//8/AP//BwAAAAAAAAAAAAAAAAAAAAAA////////////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////z8AAADA/wAA/P///////wEAAP///wH/A////////8f/AAAAAAAAAAD//////////x4A/wMAAAAAAAAAAAAAAAAAAAAAAAAAAP///////z8A/wMAAAAAAAD/////////////////fwAAAAAAAAAAAAAAAAAAAAAAAP///////////////wcAAAAAAAAAAAAAAAAAAAAAAAAA//////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////HwD//////38AAPj/AAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////3///////////32Te/+vv/////////7/n39////97X/z9//////////////////////////////////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3z////////+////+W/vcKhOqWqpb3917/+/8P7vv/DwAAAAAAAAAATENfQUxMAExDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTAExBTkcAQy5VVEYtOABQT1NJWABNVVNMX0xPQ1BBVEgAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAETCQsLAAAJBgsAAAsABhEAAAAREREAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAANAAAABA0AAAAACQ4AAAAAAA4AAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAASEhIAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAKAAAAAAoAAAAACQsAAAAAAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAtKyAgIDBYMHgAKG51bGwpAC0wWCswWCAwWC0weCsweCAweABpbmYASU5GAE5BTgAwMTIzNDU2Nzg5QUJDREVGLgBhbG51bQBhbHBoYQBibGFuawBjbnRybABkaWdpdABncmFwaABsb3dlcgBwcmludABwdW5jdABzcGFjZQB1cHBlcgB4ZGlnaXQAQy5VVEYtOAAAAAAAAAAAAEMAL3Byb2Mvc2VsZi9mZC8AcndhAGluZmluaXR5AG5hbgAJAAoADQAMAAcAGwBbWzphbG51bTpdX10AW15bOmFsbnVtOl1fXQBbWzpzcGFjZTpdXQBbXls6c3BhY2U6XV0AW1s6ZGlnaXQ6XV0AW15bOmRpZ2l0Ol1dAC90bXAvdG1wZmlsZV9YWFhYWFgAdys=\";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___assert_fail(condition,filename,line,func){abort(\"Assertion failed: \"+Pointer_stringify(condition)+\", at: \"+[filename?Pointer_stringify(filename):\"unknown filename\",line,func?Pointer_stringify(func):\"unknown function\"])}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!==\"undefined\"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self[\"performance\"]&&self[\"performance\"][\"now\"]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(){return _clock_gettime.apply(null,arguments)}function ___lock(){}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}var ERRNO_MESSAGES={0:\"Success\",1:\"Not super-user\",2:\"No such file or directory\",3:\"No such process\",4:\"Interrupted system call\",5:\"I/O error\",6:\"No such device or address\",7:\"Arg list too long\",8:\"Exec format error\",9:\"Bad file number\",10:\"No children\",11:\"No more processes\",12:\"Not enough core\",13:\"Permission denied\",14:\"Bad address\",15:\"Block device required\",16:\"Mount device busy\",17:\"File exists\",18:\"Cross-device link\",19:\"No such device\",20:\"Not a directory\",21:\"Is a directory\",22:\"Invalid argument\",23:\"Too many open files in system\",24:\"Too many open files\",25:\"Not a typewriter\",26:\"Text file busy\",27:\"File too large\",28:\"No space left on device\",29:\"Illegal seek\",30:\"Read only file system\",31:\"Too many links\",32:\"Broken pipe\",33:\"Math arg out of domain of func\",34:\"Math result not representable\",35:\"File locking deadlock error\",36:\"File or path name too long\",37:\"No record locks available\",38:\"Function not implemented\",39:\"Directory not empty\",40:\"Too many symbolic links\",42:\"No message of desired type\",43:\"Identifier removed\",44:\"Channel number out of range\",45:\"Level 2 not synchronized\",46:\"Level 3 halted\",47:\"Level 3 reset\",48:\"Link number out of range\",49:\"Protocol driver not attached\",50:\"No CSI structure available\",51:\"Level 2 halted\",52:\"Invalid exchange\",53:\"Invalid request descriptor\",54:\"Exchange full\",55:\"No anode\",56:\"Invalid request code\",57:\"Invalid slot\",59:\"Bad font file fmt\",60:\"Device not a stream\",61:\"No data (for no delay io)\",62:\"Timer expired\",63:\"Out of streams resources\",64:\"Machine is not on the network\",65:\"Package not installed\",66:\"The object is remote\",67:\"The link has been severed\",68:\"Advertise error\",69:\"Srmount error\",70:\"Communication error on send\",71:\"Protocol error\",72:\"Multihop attempted\",73:\"Cross mount point (not really error)\",74:\"Trying to read unreadable message\",75:\"Value too large for defined data type\",76:\"Given log. name not unique\",77:\"f.d. invalid for this operation\",78:\"Remote address changed\",79:\"Can access a needed shared lib\",80:\"Accessing a corrupted shared lib\",81:\".lib section in a.out corrupted\",82:\"Attempting to link in too many libs\",83:\"Attempting to exec a shared library\",84:\"Illegal byte sequence\",86:\"Streams pipe error\",87:\"Too many users\",88:\"Socket operation on non-socket\",89:\"Destination address required\",90:\"Message too long\",91:\"Protocol wrong type for socket\",92:\"Protocol not available\",93:\"Unknown protocol\",94:\"Socket type not supported\",95:\"Not supported\",96:\"Protocol family not supported\",97:\"Address family not supported by protocol family\",98:\"Address already in use\",99:\"Address not available\",100:\"Network interface is not configured\",101:\"Network is unreachable\",102:\"Connection reset by network\",103:\"Connection aborted\",104:\"Connection reset by peer\",105:\"No buffer space available\",106:\"Socket is already connected\",107:\"Socket is not connected\",108:\"Can't send after socket shutdown\",109:\"Too many references\",110:\"Connection timed out\",111:\"Connection refused\",112:\"Host is down\",113:\"Host is unreachable\",114:\"Socket already connected\",115:\"Connection already in progress\",116:\"Stale file handle\",122:\"Quota exceeded\",123:\"No medium (in tape drive)\",125:\"Operation canceled\",130:\"Previous owner died\",131:\"State not recoverable\"};var PATH={splitPath:(function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))}),join2:(function(l,r){return PATH.normalize(l+\"/\"+r)}),resolve:(function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!==\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=path.charAt(0)===\"/\"}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter((function(p){return!!p})),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")})};var TTY={ttys:[],init:(function(){}),shutdown:(function(){}),register:(function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)}),stream_ops:{open:(function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}stream.tty=tty;stream.seekable=false}),close:(function(stream){stream.tty.ops.flush(stream.tty)}),flush:(function(stream){stream.tty.ops.flush(stream.tty)}),read:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})},default_tty_ops:{get_char:(function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!=\"win32\";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync(\"/dev/stdin\",\"r\");usingDevice=true}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf(\"EOF\")!=-1)bytesRead=0;else throw e}if(usingDevice){fs.closeSync(fd)}if(bytesRead>0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents}),getFileDataAsTypedArray:(function(node){if(!node.contents)return new Uint8Array;if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)}),expandFileStorage:(function(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)}),resizeFileStorage:(function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize}),node_ops:{getattr:(function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}}),lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]}),mknod:(function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}),rename:(function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir}),unlink:(function(parent,name){delete parent.contents[name]}),rmdir:(function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete parent.contents[name]}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node}),readlink:(function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return node.link})},stream_ops:{read:(function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size}),write:(function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}),allocate:(function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)}buffer.set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!==\"undefined\")return indexedDB;var ret=null;if(typeof window===\"object\")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,\"IDBFS used, but indexedDB not supported\");return ret}),DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback(\"Unable to connect to IndexedDB\")}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains(\"timestamp\")){fileStore.createIndex(\"timestamp\",\"timestamp\",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!==\".\"&&p!==\"..\"}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:\"local\",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readonly\");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index(\"timestamp\");index.openKeyCursor().onsuccess=(function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:\"remote\",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()})}catch(e){return callback(e)}}))}),loadLocalEntry:(function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error(\"node type not supported\"))}}),storeLocalEntry:(function(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode)}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true})}else{return callback(new Error(\"node type not supported\"))}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)}),removeLocalEntry:(function(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)}),loadRemoteEntry:(function(store,path,callback){var req=store.get(path);req.onsuccess=(function(event){callback(null,event.target.result)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),storeRemoteEntry:(function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),removeRemoteEntry:(function(store,path,callback){var req=store.delete(path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),reconcile:(function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach((function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type===\"remote\"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readwrite\");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type===\"local\"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type===\"local\"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process[\"binding\"](\"constants\");if(flags[\"fs\"]){flags=flags[\"fs\"]}NODEFS.flagsForNodeMap={\"1024\":flags[\"O_APPEND\"],\"64\":flags[\"O_CREAT\"],\"128\":flags[\"O_EXCL\"],\"0\":flags[\"O_RDONLY\"],\"2\":flags[\"O_RDWR\"],\"4096\":flags[\"O_SYNC\"],\"512\":flags[\"O_TRUNC\"],\"1\":flags[\"O_WRONLY\"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,\"/\",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,\"\",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,\"/\",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split(\"/\");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join(\"/\");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0)}parent=createdParents[curr]}return parent}function base(path){var parts=path.split(\"/\");return parts[parts.length-1]}Array.prototype.forEach.call(mount.opts[\"files\"]||[],(function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate)}));(mount.opts[\"blobs\"]||[]).forEach((function(obj){WORKERFS.createNode(ensureParent(obj[\"name\"]),base(obj[\"name\"]),WORKERFS.FILE_MODE,0,obj[\"data\"])}));(mount.opts[\"packages\"]||[]).forEach((function(pack){pack[\"metadata\"].files.forEach((function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack[\"blob\"].slice(file.start,file.end))}))}));return root}),createNode:(function(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents}else{node.size=4096;node.contents={}}if(parent){parent.contents[name]=node}return node}),node_ops:{getattr:(function(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)}}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}}),lookup:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}),mknod:(function(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rename:(function(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),unlink:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rmdir:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readlink:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)})},stream_ops:{read:(function(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+\" : \"+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),false);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{\"r\":0,\"rs\":1052672,\"r+\":2,\"w\":577,\"wx\":705,\"xw\":705,\"w+\":578,\"wx+\":706,\"xw+\":706,\"a\":1089,\"ax\":1217,\"xa\":1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags===\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags}),flagsToPermissionString:(function(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf(\"r\")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"w\")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"x\")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,\"x\");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,\"wx\")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,\"wx\");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate===\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e}}}),mkdev:(function(path,mode,dev){if(typeof dev===\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,\"w\");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate[\"willMovePath\"]){FS.trackingDelegate[\"willMovePath\"](old_path,new_path)}}catch(e){console.log(\"FS.trackingDelegate['willMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate[\"onMovePath\"])FS.trackingDelegate[\"onMovePath\"](old_path,new_path)}catch(e){console.log(\"FS.trackingDelegate['onMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,\"w\");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===\"\"){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags===\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode===\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path===\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module[\"printErr\"](\"read file: \"+path)}}try{if(FS.trackingDelegate[\"onOpenFile\"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate[\"onOpenFile\"](path,trackingFlags)}}catch(e){console.log(\"FS.trackingDelegate['onOpenFile']('\"+path+\"', flags) threw an exception: \"+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=typeof position!==\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!==\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate[\"onWriteToFile\"])FS.trackingDelegate[\"onWriteToFile\"](stream.path)}catch(e){console.log(\"FS.trackingDelegate['onWriteToFile']('\"+path+\"') threw an exception: \"+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||\"r\";opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||\"w\";var stream=FS.open(path,opts.flags,opts.mode);if(typeof data===\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,\"x\");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")}),createDefaultDevices:(function(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device;if(typeof crypto!==\"undefined\"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require(\"crypto\")[\"randomBytes\"](1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")}),createSpecialDirectories:(function(){FS.mkdir(\"/proc\");FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:(function(){var node=FS.createNode(\"/proc/self\",\"fd\",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},\"/proc/self/fd\")}),createStandardStreams:(function(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",\"r\");assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");var stdout=FS.open(\"/dev/stdout\",\"w\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");var stderr=FS.open(\"/dev/stderr\",\"w\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true})};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS,\"IDBFS\":IDBFS,\"NODEFS\":NODEFS,\"WORKERFS\":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}}),getMode:(function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}),joinPath:(function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]==\"/\")path=path.substr(1);return path}),absolutePath:(function(relative,base){return PATH.resolve(base,relative)}),standardizePath:(function(path){return PATH.normalize(path)}),findObject:(function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{___setErrNo(ret.error);return null}}),analyzePath:(function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret}),createFolder:(function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)}),createPath:(function(parent,path,canRead,canWrite){parent=typeof parent===\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current}),createFile:(function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)}),createDataFile:(function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data===\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,\"w\");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node}),createDevice:(function(parent,name,input,output){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:(function(stream){stream.seekable=false}),close:(function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}}),read:(function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})});return FS.mkdev(path,mode,dev)}),createLink:(function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);return FS.symlink(target,path)}),forceLoadFile:(function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!==\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(Module[\"read\"]){try{obj.contents=intArrayFromString(Module[\"read\"](obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}if(!success)___setErrNo(ERRNO_CODES.EIO);return success}),createLazyFile:(function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);if(typeof Uint8Array!=\"undefined\")xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]===\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]===\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!==\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node}),createPreloadedFile:(function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module[\"preloadPlugins\"].forEach((function(plugin){if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,(function(){if(onerror)onerror();removeRunDependency(dep)}));handled=true}}));if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){Browser.asyncLoad(url,(function(byteArray){processData(byteArray)}),onerror)}else{processData(url)}}),indexedDB:(function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}),DB_NAME:(function(){return\"EM_FS_\"+window.location.pathname}),DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror}),loadFilesFromDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror})};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:(function(dirfd,path){if(path[0]!==\"/\"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path}path=PATH.join2(dir,path)}return path}),doStat:(function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret}),doWritev:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.unlink(path);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___unlock(){}function __exit(status){Module[\"exit\"](status)}function _exit(status){__exit(status)}var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV[\"USER\"]=ENV[\"LOGNAME\"]=\"web_user\";ENV[\"PATH\"]=\"/\";ENV[\"PWD\"]=\"/\";ENV[\"HOME\"]=\"/home/web_user\";ENV[\"LANG\"]=\"C.UTF-8\";ENV[\"_\"]=Module[\"thisProgram\"];poolPtr=staticAlloc(TOTAL_ENV_SIZE);envPtr=staticAlloc(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]===\"string\"){var line=key+\"=\"+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error(\"Environment size exceeded TOTAL_ENV_SIZE!\")}var ptrSize=4;for(var i=0;i<strings.length;i++){var line=strings[i];writeAsciiToMemory(line,poolPtr);HEAP32[envPtr+i*ptrSize>>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}var _llvm_ceil_f64=Math_ceil;var _llvm_fabs_f64=Math_abs;var _llvm_floor_f64=Math_floor;var _llvm_pow_f64=Math_pow;var _llvm_sqrt_f64=Math_sqrt;function _llvm_trap(){abort(\"trap!\")}function _longjmp(env,value){Module[\"setThrew\"](env,value||1);throw\"longjmp\"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var name=Pointer_stringify(envname);var val=Pointer_stringify(envval);if(name===\"\"||name.indexOf(\"=\")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)&&!overwrite)return 0;ENV[name]=val;___buildEnvironment(ENV);return 0}function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!==\"undefined\"){_emscripten_get_now=dateNow}else if(typeof self===\"object\"&&self[\"performance\"]&&typeof self[\"performance\"][\"now\"]===\"function\"){_emscripten_get_now=(function(){return self[\"performance\"][\"now\"]()})}else if(typeof performance===\"object\"&&typeof performance[\"now\"]===\"function\"){_emscripten_get_now=(function(){return performance[\"now\"]()})}else{_emscripten_get_now=Date.now}FS.staticInit();__ATINIT__.unshift((function(){if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\");var NODEJS_PATH=require(\"path\");NODEFS.staticInit()}___buildEnvironment(ENV);DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,\"Character code \"+chr+\" (\"+String.fromCharCode(chr)+\") at offset \"+i+\" not in 0x00-0xFF.\")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}var decodeBase64=typeof atob===\"function\"?atob:(function(input){var keyStr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";var output=\"\";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output});function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE===\"boolean\"&&ENVIRONMENT_IS_NODE){var buf;try{buf=Buffer.from(s,\"base64\")}catch(_){buf=new Buffer(s,\"base64\")}return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength)}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error(\"Converting base64 string to bytes failed.\")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}function invoke_d(index){try{return Module[\"dynCall_d\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_dddd(index,a1,a2,a3){try{return Module[\"dynCall_dddd\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_i(index){try{return Module[\"dynCall_i\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_ii(index,a1){try{return Module[\"dynCall_ii\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iii(index,a1,a2){try{return Module[\"dynCall_iii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module[\"dynCall_iiii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module[\"dynCall_iiiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module[\"dynCall_iiiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_v(index){try{Module[\"dynCall_v\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vi(index,a1){try{Module[\"dynCall_vi\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vii(index,a1,a2){try{Module[\"dynCall_vii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module[\"dynCall_viii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiddi(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiddi\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module[\"dynCall_viiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}Module.asmGlobalArg={\"Math\":Math,\"Int8Array\":Int8Array,\"Int16Array\":Int16Array,\"Int32Array\":Int32Array,\"Uint8Array\":Uint8Array,\"Uint16Array\":Uint16Array,\"Uint32Array\":Uint32Array,\"Float32Array\":Float32Array,\"Float64Array\":Float64Array,\"NaN\":NaN,\"Infinity\":Infinity};Module.asmLibraryArg={\"abort\":abort,\"assert\":assert,\"enlargeMemory\":enlargeMemory,\"getTotalMemory\":getTotalMemory,\"abortOnCannotGrowMemory\":abortOnCannotGrowMemory,\"invoke_d\":invoke_d,\"invoke_dddd\":invoke_dddd,\"invoke_i\":invoke_i,\"invoke_ii\":invoke_ii,\"invoke_iii\":invoke_iii,\"invoke_iiii\":invoke_iiii,\"invoke_iiiii\":invoke_iiiii,\"invoke_iiiiii\":invoke_iiiiii,\"invoke_iiiiiii\":invoke_iiiiiii,\"invoke_v\":invoke_v,\"invoke_vi\":invoke_vi,\"invoke_vii\":invoke_vii,\"invoke_viii\":invoke_viii,\"invoke_viiiddi\":invoke_viiiddi,\"invoke_viiii\":invoke_viiii,\"invoke_viiiii\":invoke_viiiii,\"invoke_viiiiii\":invoke_viiiiii,\"___assert_fail\":___assert_fail,\"___buildEnvironment\":___buildEnvironment,\"___clock_gettime\":___clock_gettime,\"___lock\":___lock,\"___map_file\":___map_file,\"___setErrNo\":___setErrNo,\"___syscall10\":___syscall10,\"___syscall140\":___syscall140,\"___syscall145\":___syscall145,\"___syscall146\":___syscall146,\"___syscall192\":___syscall192,\"___syscall195\":___syscall195,\"___syscall197\":___syscall197,\"___syscall221\":___syscall221,\"___syscall33\":___syscall33,\"___syscall5\":___syscall5,\"___syscall54\":___syscall54,\"___syscall6\":___syscall6,\"___syscall91\":___syscall91,\"___unlock\":___unlock,\"__exit\":__exit,\"_clock_gettime\":_clock_gettime,\"_emscripten_asm_const_iii\":_emscripten_asm_const_iii,\"_emscripten_get_now\":_emscripten_get_now,\"_emscripten_get_now_is_monotonic\":_emscripten_get_now_is_monotonic,\"_emscripten_memcpy_big\":_emscripten_memcpy_big,\"_exit\":_exit,\"_getenv\":_getenv,\"_llvm_ceil_f64\":_llvm_ceil_f64,\"_llvm_fabs_f64\":_llvm_fabs_f64,\"_llvm_floor_f64\":_llvm_floor_f64,\"_llvm_pow_f64\":_llvm_pow_f64,\"_llvm_sqrt_f64\":_llvm_sqrt_f64,\"_llvm_trap\":_llvm_trap,\"_longjmp\":_longjmp,\"_setenv\":_setenv,\"_times\":_times,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR,\"tempDoublePtr\":tempDoublePtr,\"ABORT\":ABORT,\"STACKTOP\":STACKTOP,\"STACK_MAX\":STACK_MAX,\"cttz_i8\":cttz_i8};// EMSCRIPTEN_START_ASM\nvar asm=(/** @suppress {uselessCode} */ function(global,env,buffer) {\n\"use asm\";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=env.cttz_i8|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0;var z=0;var A=global.Math.floor;var B=global.Math.abs;var C=global.Math.sqrt;var D=global.Math.pow;var E=global.Math.cos;var F=global.Math.sin;var G=global.Math.tan;var H=global.Math.acos;var I=global.Math.asin;var J=global.Math.atan;var K=global.Math.atan2;var L=global.Math.exp;var M=global.Math.log;var N=global.Math.ceil;var O=global.Math.imul;var P=global.Math.min;var Q=global.Math.max;var R=global.Math.clz32;var S=env.abort;var T=env.assert;var U=env.enlargeMemory;var V=env.getTotalMemory;var W=env.abortOnCannotGrowMemory;var X=env.invoke_d;var Y=env.invoke_dddd;var Z=env.invoke_i;var _=env.invoke_ii;var $=env.invoke_iii;var aa=env.invoke_iiii;var ba=env.invoke_iiiii;var ca=env.invoke_iiiiii;var da=env.invoke_iiiiiii;var ea=env.invoke_v;var fa=env.invoke_vi;var ga=env.invoke_vii;var ha=env.invoke_viii;var ia=env.invoke_viiiddi;var ja=env.invoke_viiii;var ka=env.invoke_viiiii;var la=env.invoke_viiiiii;var ma=env.___assert_fail;var na=env.___buildEnvironment;var oa=env.___clock_gettime;var pa=env.___lock;var qa=env.___map_file;var ra=env.___setErrNo;var sa=env.___syscall10;var ta=env.___syscall140;var ua=env.___syscall145;var va=env.___syscall146;var wa=env.___syscall192;var xa=env.___syscall195;var ya=env.___syscall197;var za=env.___syscall221;var Aa=env.___syscall33;var Ba=env.___syscall5;var Ca=env.___syscall54;var Da=env.___syscall6;var Ea=env.___syscall91;var Fa=env.___unlock;var Ga=env.__exit;var Ha=env._clock_gettime;var Ia=env._emscripten_asm_const_iii;var Ja=env._emscripten_get_now;var Ka=env._emscripten_get_now_is_monotonic;var La=env._emscripten_memcpy_big;var Ma=env._exit;var Na=env._getenv;var Oa=env._llvm_ceil_f64;var Pa=env._llvm_fabs_f64;var Qa=env._llvm_floor_f64;var Ra=env._llvm_pow_f64;var Sa=env._llvm_sqrt_f64;var Ta=env._llvm_trap;var Ua=env._longjmp;var Va=env._setenv;var Wa=env._times;var Xa=0.0;\n// EMSCRIPTEN_START_FUNCS\nfunction nb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function ob(){return l|0}function pb(a){a=a|0;l=a}function qb(a,b){a=a|0;b=b|0;l=a;m=b}function rb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function sb(a){a=a|0;z=a}function tb(){return z|0}function ub(a){a=a|0;c[41840]=a;return 0}function vb(){return c[41840]|0}function wb(a,b){a=a|0;b=b|0;Ia(0,a|0,b|0)|0;return}function xb(a){a=a|0;c[42183]=a;return}function yb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i+4|0;g=i;c[f>>2]=0;h=ks()|0;ps(h,10904);ps(h,17148);Zl(1)|0;Yl(16)|0;ep(1);while(1){a=Sn(a)|0;e=c[f>>2]|0;if(!a)break;if(!e){ls(h,a,d)|0;os(h,a,b,f,g)|0;hr(h,a)|0}ln(a)|0;a=174181}l=i;return e|0}function zb(a){a=a|0;var d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;f=c[(c[a+16>>2]|0)+8>>2]|0;a=a+64|0;switch(c[a>>2]|0){case 0:{vx(f);break}case 1:{if(b[(c[f+16>>2]|0)+136>>1]&1)nB(f);break}case 4:case 5:case 6:{sx(f,e,d);Cb(f,c[e>>2]|0,c[d>>2]|0,c[a>>2]|0);break}default:{}}l=g;return}function Ab(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[(c[a+16>>2]|0)+8>>2]|0;if(!(c[41841]|0)){c[41841]=c[4442];c[41842]=9;c[41843]=17}e=d+64|0;f=(c[e>>2]|0)+8|0;b=c[f>>2]|0;c[f>>2]=167364;switch(c[a+64>>2]|0){case 2:{ix(a,d,a,0);break}case 3:{ix(a,d,a,1);break}case 1:case 0:{if(!(c[a+152>>2]&134217728))_p(d,a)|0;break}case 6:case 5:case 4:{Bb(d);if(!(c[a+152>>2]&134217728))_p(d,a)|0;break}default:{}}c[(c[e>>2]|0)+8>>2]=b;return}function Bb(b){b=b|0;var d=0,e=0;d=c[41845]|0;if((d|0)!=(c[41844]|0)){e=c[c[41876]>>2]|0;if(!e){e=tB(b,0,84827,174181)|0;c[c[41876]>>2]=e;d=c[41845]|0}if(d>>>0>=(c[41846]|0)>>>0){dm(167376,1)|0;d=c[41845]|0}a[d>>0]=0;d=c[41844]|0;c[41845]=d;Cm(b,e,d)|0}if(c[(c[b+16>>2]|0)+12>>2]|0){e=c[(c[41876]|0)+4>>2]|0;d=c[41861]|0;if(d>>>0>=(c[41862]|0)>>>0){dm(167440,1)|0;d=c[41861]|0}a[d>>0]=0;d=c[41860]|0;c[41861]=d;Cm(b,e,d)|0}Lm(b,59577,c[(c[41876]|0)+8236>>2]|0,174181)|0;d=0;while(1){if((d|0)==8)break;gm(167376+(d<<4)|0);d=d+1|0}_I(c[41876]|0);h[1]=1.0;h[5]=1.0;c[41877]=0;c[41881]=0;return}function Cb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=ZI(8240)|0;c[41876]=i;a:do switch(g|0){case 6:{b[i+8232>>1]=14;g=59593;break}case 5:{b[i+8232>>1]=12;g=59597;break}default:{g=Im(d,59577)|0;if((g|0?a[g>>0]|0:0)?(h=Db(g)|0,(h&65535)>10):0){i=c[41876]|0;b[i+8232>>1]=h;break a}g=Db(59589)|0;i=c[41876]|0;b[i+8232>>1]=g;g=59589}}while(0);c[i+8236>>2]=g;j=d+16|0;g=c[j>>2]|0;if(!(c[g+180>>2]|0))h=0;else{h=tB(d,0,84827,174181)|0;i=c[41876]|0;g=c[j>>2]|0}c[i>>2]=h;if(!(a[g+113>>0]&8))g=0;else g=tB(d,0,59601,174181)|0;c[(c[41876]|0)+4>>2]=g;i=tB(d,1,84827,174181)|0;c[(c[41876]|0)+8>>2]=i;i=tB(d,1,59601,174181)|0;c[(c[41876]|0)+12>>2]=i;i=tB(d,2,84827,174181)|0;g=c[41876]|0;c[g+16>>2]=i;if(!f)h=0;else{h=tB(d,2,59609,174181)|0;g=c[41876]|0}c[g+20>>2]=h;if(!e)h=0;else{h=tB(d,2,59617,174181)|0;g=c[41876]|0}c[g+24>>2]=h;h=a[(c[j>>2]|0)+113>>0]|0;if(!(h&33))i=0;else{i=tB(d,2,59601,174181)|0;g=c[41876]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+28>>2]=i;if(!(h&2))i=0;else{i=tB(d,2,59625,174181)|0;g=c[41876]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+32>>2]=i;if(!(h&4))h=0;else{h=tB(d,2,59634,174181)|0;g=c[41876]|0}c[g+36>>2]=h;g=0;while(1){if((g|0)==8)break;cm(167376+(g<<4)|0,1024,(c[41876]|0)+40+(g<<10)|0);g=g+1|0}return}function Db(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;g=j+8|0;f=0;d=b;a:while(1){do{e=d;d=d+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a}while(((e<<24>>24)+-48|0)>>>0>=10);if((f|0)>=1023){i=7;break}a[g+f>>0]=e;f=f+1|0}if((i|0)==7){c[h>>2]=b;_l(0,59643,h)|0}a[g+f>>0]=0;i=(rM(g)|0)&65535;l=j;return i|0}function Eb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;d=c[c[41876]>>2]|0;b=c[41849]|0;if(b>>>0>=(c[41850]|0)>>>0){dm(167392,1)|0;b=c[41849]|0}a[b>>0]=0;b=c[41848]|0;c[41849]=b;Cm(e,d,b)|0;if(c[(c[e+16>>2]|0)+12>>2]|0){d=c[(c[41876]|0)+4>>2]|0;b=c[41865]|0;if(b>>>0>=(c[41866]|0)>>>0){dm(167456,1)|0;b=c[41865]|0}a[b>>0]=0;b=c[41864]|0;c[41865]=b;Cm(e,d,b)|0}h[2]=1.0;h[6]=1.0;c[41878]=0;c[41882]=0;return}function Fb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[41849]|0;if((c[41848]|0)!=(b|0)){d=c[(c[41876]|0)+8>>2]|0;if(b>>>0>=(c[41850]|0)>>>0){dm(167392,1)|0;b=c[41849]|0}a[b>>0]=0;b=c[41848]|0;c[41849]=b;Cm(e,d,b)|0}b=c[41865]|0;if((c[41864]|0)!=(b|0)){d=c[(c[41876]|0)+12>>2]|0;if(b>>>0>=(c[41866]|0)>>>0){dm(167456,1)|0;b=c[41865]|0}a[b>>0]=0;b=c[41864]|0;c[41865]=b;Cm(e,d,b)|0}h[9]=1.0;h[11]=1.0;c[41885]=0;c[41887]=0;return}function Gb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[41849]|0;if((c[41848]|0)!=(b|0)){d=c[(c[41876]|0)+16>>2]|0;if(b>>>0>=(c[41850]|0)>>>0){dm(167392,1)|0;b=c[41849]|0}a[b>>0]=0;b=c[41848]|0;c[41849]=b;Cm(e,d,b)|0}b=c[41853]|0;if((c[41852]|0)!=(b|0)){d=c[(c[41876]|0)+24>>2]|0;if(b>>>0>=(c[41854]|0)>>>0){dm(167408,1)|0;b=c[41853]|0}a[b>>0]=0;b=c[41852]|0;c[41853]=b;Cm(e,d,b)|0}b=c[41857]|0;if((c[41856]|0)!=(b|0)){d=c[(c[41876]|0)+20>>2]|0;if(b>>>0>=(c[41858]|0)>>>0){dm(167424,1)|0;b=c[41857]|0}a[b>>0]=0;b=c[41856]|0;c[41857]=b;Cm(e,d,b)|0}b=c[41865]|0;if((c[41864]|0)!=(b|0)){d=c[(c[41876]|0)+28>>2]|0;if(b>>>0>=(c[41866]|0)>>>0){dm(167456,1)|0;b=c[41865]|0}a[b>>0]=0;b=c[41864]|0;c[41865]=b;Cm(e,d,b)|0}b=c[41869]|0;if((c[41868]|0)!=(b|0)){d=c[(c[41876]|0)+36>>2]|0;if(b>>>0>=(c[41870]|0)>>>0){dm(167472,1)|0;b=c[41869]|0}a[b>>0]=0;b=c[41868]|0;c[41869]=b;Cm(e,d,b)|0}b=c[41873]|0;if((c[41872]|0)!=(b|0)){d=c[(c[41876]|0)+32>>2]|0;if(b>>>0>=(c[41874]|0)>>>0){dm(167488,1)|0;b=c[41873]|0}a[b>>0]=0;b=c[41872]|0;c[41873]=b;Cm(e,d,b)|0}h[10]=1.0;h[12]=1.0;h[3]=1.0;h[4]=1.0;h[7]=1.0;h[8]=1.0;c[41886]=0;c[41888]=0;c[41879]=0;c[41880]=0;c[41883]=0;c[41884]=0;return}function Hb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1056|0;j=t+16|0;s=t+8|0;r=t;k=t+32|0;o=c[(c[d+16>>2]|0)+12>>2]|0;p=c[11344+(o<<2)>>2]|0;fm(p,59746)|0;g=f+4|0;Qb(k,+h[(c[g>>2]|0)+16>>3]);fm(p,k)|0;Tb(d,174181,c[c[g>>2]>>2]|0);Nb(d);q=a[f+48>>0]|0;q=q<<24>>24==108?-1:q<<24>>24==114&1;g=c[g>>2]|0;if(!g)g=0;else g=c[g+24>>2]&127;i=b[(c[41876]|0)+8232>>1]|0;if((i&65535)>14?(m=c[11392+((i&65535)+-15<<2)>>2]&g,n=167508+(o<<2)|0,(c[n>>2]|0)!=(m|0)):0){c[r>>2]=m;pL(k,59749,r)|0;fm(p,k)|0;c[n>>2]=m}r=e+8|0;h[r>>3]=+h[r>>3]+ +h[f+24>>3];fm(p,59755)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];Pb(p,j);c[s>>2]=q;pL(k,87254,s)|0;fm(p,k)|0;Qb(k,+h[f+32>>3]);fm(p,k)|0;Tb(d,174181,c[f>>2]|0);l=t;return}function Ib(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+1040|0;f=i;g=i+16|0;e=c[(c[a+16>>2]|0)+12>>2]|0;Mb(a);Nb(a);if(!d){a=c[11344+(e<<2)>>2]|0;fm(a,59743)|0}else{if((d|1|0)==3)Vb(a,d,b,2);else Wb(a);a=c[11344+(e<<2)>>2]|0;fm(a,59740)|0};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];Pb(a,f);Qb(g,+h[b+16>>3]-+h[b>>3]);fm(a,g)|0;Qb(g,+h[b+24>>3]-+h[b+8>>3]);fm(a,g)|0;l=i;return}function Jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Mb(a);Nb(a);if(!d)Ob(a,112,b,c);else{if((d|1|0)==3)Vb(a,d,b,c);else Wb(a);Ob(a,80,b,c)}return}function Kb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Mb(a);Nb(a);if(!f)Ob(a,66,b,c);else{if((f|1|0)==3)Vb(a,f,b,c);else Wb(a);Ob(a,98,b,c)}return}function Lb(a,b,c){a=a|0;b=b|0;c=c|0;Mb(a);Nb(a);Ob(a,76,b,c);return}function Mb(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1184|0;i=n;f=n+24|0;m=n+8|0;cm(m,1024,n+152|0);j=b+16|0;d=c[j>>2]|0;g=+h[d+152>>3];e=8+(c[d+12>>2]<<3)|0;if(g!=+h[e>>3]){h[e>>3]=g;fm(m,59706)|0;h[i>>3]=+h[(c[j>>2]|0)+152>>3];pL(f,59720,i)|0;Rb(f,0);fm(m,f)|0;f=m+4|0;d=c[f>>2]|0;e=m+8|0;if(d>>>0>=(c[e>>2]|0)>>>0){dm(m,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=41;d=c[f>>2]|0;if(d>>>0>=(c[e>>2]|0)>>>0){dm(m,1)|0;d=c[f>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[f>>2]=d;Tb(b,59725,d);d=c[j>>2]|0}d=c[d+160>>2]|0;if(d|0){j=m+4|0;k=m+8|0;a:while(1){i=d+4|0;d=c[d>>2]|0;if(!d)break;switch(a[d>>0]|0){case 102:{if(!(xJ(d,95923)|0)){d=i;continue a}break}case 98:{if(!(xJ(d,95905)|0)){d=i;continue a}break}case 115:{if(!(xJ(d,95910)|0)){d=i;continue a}break}default:{}}fm(m,d)|0;do{f=d;d=d+1|0}while((a[f>>0]|0)!=0);if(a[d>>0]|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=40;f=0;while(1){if(!(a[d>>0]|0))break;if(f|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=44}fm(m,d)|0;do{e=d;d=d+1|0}while((a[e>>0]|0)!=0);f=f+1|0}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=41}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;d=c[j>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[j>>2]=d;Tb(b,59725,d);d=i}gm(m)}l=n;return}function Nb(a){a=a|0;Sb((c[a+16>>2]|0)+16|0);Tb(a,68667,173882);return}function Ob(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;j=k;i=k+16|0;h=c[11344+(c[(c[b+16>>2]|0)+12>>2]<<2)>>2]|0;g=h+4|0;b=c[g>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){dm(h,1)|0;b=c[g>>2]|0}c[g>>2]=b+1;a[b>>0]=d;c[j>>2]=f;pL(i,59670,j)|0;fm(h,i)|0;b=0;while(1){if((b|0)>=(f|0))break;i=e+(b<<4)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];Pb(h,j);b=b+1|0}l=k;return}function Pb(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+1024|0;d=c;Qb(d,+h[b>>3]);fm(a,d)|0;Qb(d,+hx(+h[b+8>>3]));fm(a,d)|0;l=c;return}function Qb(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+16|0;d=c;h[d>>3]=b>-1.0e-08&b<1.0e-08?0.0:b;pL(a,59675,d)|0;Rb(a,1);l=c;return}function Rb(b,c){b=b|0;c=c|0;var d=0,e=0;d=WJ(b,46)|0;if(!d){if(c|0){d=b+(rJ(b)|0)|0;e=10}}else{while(1){b=d+1|0;if(!(a[b>>0]|0))break;else d=b}a:while(1){switch(a[d>>0]|0){case 46:{e=5;break a}case 48:break;default:{e=6;break a}}a[d>>0]=0;d=d+-1|0}if((e|0)==5)a[d>>0]=0;else if((e|0)==6)d=d+1|0;if(c|0)e=10}if((e|0)==10){a[d>>0]=32;a[d+1>>0]=0}return}function Sb(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j;e=a[b+3>>0]|0;f=d[b>>0]|0;g=d[b+1>>0]|0;b=d[b+2>>0]|0;if(e<<24>>24==-1){c[h>>2]=f;c[h+4>>2]=g;c[h+8>>2]=b;pL(173882,68547,h)|0}else{c[i>>2]=f;c[i+4>>2]=g;c[i+8>>2]=b;c[i+12>>2]=e&255;pL(173882,59688,i)|0}l=j;return}function Tb(a,b,d){a=a|0;b=b|0;d=d|0;Ub(c[11344+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0,b,d);return}function Ub(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+1040|0;h=f;g=f+8|0;i=rJ(e)|0;c[h>>2]=d;c[h+4>>2]=i;pL(g,59681,h)|0;fm(b,g)|0;fm(b,e)|0;e=b+4|0;d=c[e>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){dm(b,1)|0;d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=32;l=f;return}function Vb(b,d,f,i){b=b|0;d=d|0;f=f|0;i=i|0;var j=0.0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+1120|0;t=x+64|0;w=x+80|0;k=x+32|0;r=x+16|0;s=x;u=c[b+16>>2]|0;j=+(c[u+136>>2]|0)*.017453292519943295;if((e[(c[41876]|0)+8232>>1]|0)<14)Wb(b);else{cm(w,1024,x+96|0);v=(d|0)==2;if(v){JB(f,k,i,j,2);f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){dm(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=91;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];Pb(w,t);s=k+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];Pb(w,t)}else{JB(f,k,i,0.0,3);q=+h[k+24>>3];o=+h[k>>3];if(j==0.0){n=+h[k+8>>3];p=q*.25;j=n;m=o}else{p=q*.25;y=p;m=+E(+j)*y+o;n=+h[k+8>>3];j=+F(+j)*y+n}h[r>>3]=m;h[r+8>>3]=j;h[s>>3]=o;h[s+8>>3]=n;f=w+4|0;d=c[f>>2]|0;if(d>>>0>=(c[w+8>>2]|0)>>>0){dm(w,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=40;c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];Pb(w,t);Xb(w,p);c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];Pb(w,t);Xb(w,q)}fm(w,59731)|0;d=u+140|0;j=+g[d>>2];f=u+56|0;if(j>0.0){Yb(w,j,f);Yb(w,+g[d>>2],u+96|0)}else{Yb(w,0.0,f);Yb(w,1.0,u+96|0)}hm(w)|0;k=w+4|0;d=c[k>>2]|0;i=w+8|0;f=d>>>0>=(c[i>>2]|0)>>>0;if(v){if(f){dm(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=93}else{if(f){dm(w,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=41}d=c[k>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){dm(w,1)|0;d=c[k>>2]|0}a[d>>0]=0;v=c[w>>2]|0;c[k>>2]=v;Tb(b,59728,v);gm(w)}l=x;return}function Wb(a){a=a|0;Sb((c[a+16>>2]|0)+56|0);Tb(a,59728,173882);return}function Xb(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+1024|0;d=c;Qb(d,b);fm(a,d)|0;l=c;return}function Yb(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;h[f>>3]=b;pL(e,59734,f)|0;Rb(e,1);Sb(c);Ub(a,e,173882);l=d;return}function Zb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0;e=l;l=l+1040|0;i=e;f=e+16|0;g=c[11344+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0;fm(g,59843)|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];Pb(g,i);Qb(f,+h[d+16>>3]-+h[d>>3]);fm(g,f)|0;Qb(f,+h[d+24>>3]-+h[d+8>>3]);fm(g,f)|0;Tb(a,174181,c[b+8>>2]|0);l=e;return}function _b(a){a=a|0;var b=0;switch(c[a+64>>2]|0){case 0:{b=yr(c[a>>2]|0)|0;ms(b,c[(c[a+16>>2]|0)+8>>2]|0,60630,0)|0;zr(b);break}case 1:{vx(c[(c[a>>2]|0)+168>>2]|0);break}default:{}}return}function $b(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;e=c[(c[b+16>>2]|0)+8>>2]|0;if(!(c[41889]|0)){c[41889]=c[4442];c[41890]=9;c[41891]=17}c[(c[e+64>>2]|0)+8>>2]=167556;ac(e,1);c[d>>2]=0;a[d+4>>0]=(a[(c[e+16>>2]|0)+115>>0]|0)==1&1;g=c[b+64>>2]|0;a[d+5>>0]=((g|0)==0|(g|0)==3)&1;a[d+6>>0]=0;bc(e,b,1,d);l=f;return}function ac(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=Jp(a)|0;while(1){if(!d)break;ac(d,0);d=Kp(d)|0}a:do if(b|0){b=co(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Pm(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Rm(a,d)|0}b=eo(a,b)|0}}while(0);return}function bc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q+8|0;o=q;n=(d|0)!=0;if(n){m=Ql(11764,c[4345]|0)|0;So(a,1,86799,12,0);So(a,2,86799,12,0);So(a,0,86799,-12,0);f=cc(a,0,m)|0;j=co(a)|0;i=0;g=0;while(1){if(!j)break;if(!(VJ(Dn(j)|0,93039,7)|0)){k=g;g=dc(m,Dn(j)|0)|0}else{k=g+1|0;g=g+f|0}c[(Lo(j,86799,0)|0)+8>>2]=g;h=Pm(a,j)|0;g=i;while(1){if(!h)break;c[(Lo(h,86799,0)|0)+8>>2]=g;h=Rm(a,h)|0;g=g+1|0}j=eo(a,j)|0;i=g;g=k}Kl(m)|0}else f=0;m=c[e>>2]|0;c[e>>2]=m+1;ec(b,m);mr(b,82337)|0;fc(a,b,d,e);gc(a,b,e);mr(b,82308)|0;ec(b,c[e>>2]|0);if(n){c[o>>2]=f;sr(b,59846,o)}else{c[p>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,59866,p)}ic(a,b,d,hc(a,b,d,e)|0,e);jc(a,b,d,e);mr(b,134901)|0;p=(c[e>>2]|0)+-1|0;c[e>>2]=p;ec(b,p);if(n)mr(b,95830)|0;else mr(b,68190)|0;l=q;return}function cc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((so(a)|0)!=(a|0)){e=b+1|0;c[(Lo(a,86799,0)|0)+8>>2]=b;if(!(VJ(Dn(a)|0,93039,7)|0)){b=Dn(a)|0;vc(d,b,c[(Lo(a,86799,0)|0)+8>>2]|0);b=e}else b=e}e=Jp(a)|0;while(1){if(!e)break;a=cc(e,b,d)|0;e=Kp(e)|0;b=a}return b|0}function dc(a,b){a=a|0;b=b|0;a=bb[c[a>>2]&31](a,b,512)|0;if(!a)a=-1;else a=c[a+12>>2]|0;return a|0}function ec(a,b){a=a|0;b=b|0;while(1){if((b|0)<=0)break;mr(a,60598)|0;b=b+-1|0}return}function fc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;i=h;j=Dn(a)|0;ec(b,c[e>>2]|0);c[i>>2]=mc(j,e)|0;sr(b,59954,i);if(d|0){mr(b,82308)|0;ec(b,c[e>>2]|0);j=(qn(a)|0)!=0;c[f>>2]=j?92685:122100;sr(b,60568,f);ec(b,c[e>>2]|0);j=(sn(a)|0)!=0;c[g>>2]=j?92685:122100;sr(b,60585,g)}l=h;return}function gc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;i=so(b)|0;j=c[b>>2]&3;f=Dm(i,j,0)|0;a:do if(f|0){k=e+5|0;while(1){if(!f)break a;g=Jm(b,f)|0;do if(g|0){h=f+8|0;if(!(a[g>>0]|0)){g=c[h>>2]|0;if((a[g>>0]|0)!=108)break;if(xJ(g,86240)|0)break}mr(d,82308)|0;ec(d,c[e>>2]|0);c[m>>2]=mc(c[h>>2]|0,e)|0;sr(d,60004,m);if(a[k>>0]|0?oc(c[h>>2]|0)|0:0){pc(Jm(b,f)|0,d,e);break}c[n>>2]=mc(Jm(b,f)|0,e)|0;sr(d,60011,n)}while(0);f=Dm(i,j,f)|0}}while(0);l=o;return}function hc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=Jp(a)|0;if(f){mr(b,82308)|0;g=c[e>>2]|0;c[e>>2]=g+1;ec(b,g);g=(d|0)!=0;if(g){mr(b,59928)|0;a=0;d=f}else{mr(b,59988)|0;ec(b,c[e>>2]|0);a=0;d=f}while(1){if(!d)break;if(!a)a=1;else mr(b,82308)|0;if(g)nc(d,b,e);else{c[h>>2]=c[(Lo(d,86799,0)|0)+8>>2];sr(b,122187,h)}d=Kp(d)|0}if(g)a=1;else{c[e>>2]=(c[e>>2]|0)+-1;mr(b,134901)|0;ec(b,c[e>>2]|0);mr(b,82303)|0;a=1}}else a=0;l=i;return a|0}function ic(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=co(a)|0;if(!g){if((d|0)!=0&(e|0)!=0){c[f>>2]=(c[f>>2]|0)+-1;mr(b,134901)|0;ec(b,c[f>>2]|0);mr(b,82303)|0}}else{mr(b,82308)|0;h=(d|0)!=0;if(h)if(!e){e=c[f>>2]|0;c[f>>2]=e+1;ec(b,e);mr(b,59928)|0;e=0}else e=0;else{e=c[f>>2]|0;c[f>>2]=e+1;ec(b,e);mr(b,59942)|0;ec(b,c[f>>2]|0);e=0}while(1){if(!g)break;if(VJ(Dn(g)|0,93039,7)|0){do if(e)if(h){mr(b,82308)|0;break}else{mr(b,86030)|0;break}else e=1;while(0);lc(g,b,d,f)}g=eo(a,g)|0}c[f>>2]=(c[f>>2]|0)+-1;mr(b,134901)|0;ec(b,c[f>>2]|0);mr(b,82303)|0}return}function jc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=co(a)|0;a:do if(f|0){while(1){if(!f)break a;if(Pm(a,f)|0)break;f=eo(a,f)|0}mr(b,82308)|0;i=c[e>>2]|0;c[e>>2]=i+1;ec(b,i);mr(b,59878)|0;i=(d|0)!=0;if(i)g=0;else{ec(b,c[e>>2]|0);g=0}while(1){if(!f)break;h=Pm(a,f)|0;while(1){if(!h)break;do if(g)if(i){mr(b,82308)|0;break}else{mr(b,86030)|0;break}else g=1;while(0);kc(h,b,d,e);h=Rm(a,h)|0}f=eo(a,f)|0}c[e>>2]=(c[e>>2]|0)+-1;mr(b,134901)|0;ec(b,c[e>>2]|0);mr(b,82303)|0}while(0);return}function kc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;h=j+16|0;g=j+8|0;f=j;if(!d){c[i>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,122187,i)}else{i=c[e>>2]|0;c[e>>2]=i+1;ec(b,i);mr(b,82337)|0;ec(b,c[e>>2]|0);c[f>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,59890,f);ec(b,c[e>>2]|0);c[g>>2]=c[(Lo(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0,86799,0)|0)+8>>2];sr(b,59904,g);ec(b,c[e>>2]|0);c[h>>2]=c[(Lo(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0,86799,0)|0)+8>>2];sr(b,59917,h);gc(a,b,e);mr(b,134901)|0;i=(c[e>>2]|0)+-1|0;c[e>>2]=i;ec(b,i);mr(b,68190)|0}l=j;return}function lc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i+16|0;g=i+8|0;f=i;if(!d){c[h>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,122187,h)}else{h=c[e>>2]|0;c[e>>2]=h+1;ec(b,h);mr(b,82337)|0;ec(b,c[e>>2]|0);c[f>>2]=c[(Lo(a,86799,0)|0)+8>>2];sr(b,59890,f);ec(b,c[e>>2]|0);c[g>>2]=mc(Dn(a)|0,e)|0;sr(b,59954,g);gc(a,b,e);mr(b,134901)|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;ec(b,h);mr(b,68190)|0}l=i;return}function mc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;if(a[g>>0]|0)b=yB(b)|0;if(!(c[41892]|0)){cm(167568,1024,0);e=b}else e=b;a:while(1){f=a[e>>0]|0;switch(f<<24>>24){case 0:break a;case 34:{fm(167568,59967)|0;break}case 92:{fm(167568,81579)|0;break}case 47:{fm(167568,59970)|0;break}case 8:{fm(167568,59973)|0;break}case 12:{fm(167568,59976)|0;break}case 10:{fm(167568,59979)|0;break}case 13:{fm(167568,59982)|0;break}case 9:{fm(167568,59985)|0;break}default:{d=c[41893]|0;if(d>>>0>=(c[41894]|0)>>>0){dm(167568,1)|0;d=c[41893]|0}c[41893]=d+1;a[d>>0]=f}}e=e+1|0}d=c[41893]|0;if(d>>>0>=(c[41894]|0)>>>0){dm(167568,1)|0;d=c[41893]|0}a[d>>0]=0;d=c[41892]|0;c[41893]=d;if(a[g>>0]|0)_I(b);return d|0}function nc(a,b,c){a=a|0;b=b|0;c=c|0;bc(a,b,0,c);a=Jp(a)|0;while(1){if(!a)break;mr(b,82308)|0;nc(a,b,c);a=Kp(a)|0}return}function oc(b){b=b|0;var c=0;c=b+1|0;a:do if((a[b>>0]|0)==95){b=(a[c>>0]|0)+-100<<24>>24;switch(((b&255)>>>2|b<<6&255)<<24>>24){case 0:{if(!(xJ(c,60525)|0)){b=1;break a}break}case 2:{if(!(xJ(c,60531)|0)){b=1;break a}break}case 1:{if(!(xJ(c,60538)|0)){b=1;break a}return (xJ(c,60552)|0)==0|0}case 4:{if(!(xJ(c,60545)|0)){b=1;break a}b=(xJ(c,60560)|0)==0&1;break a}default:{b=0;break a}}b=0}else b=0;while(0);return b|0}function pc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;do if(b|0?a[b>>0]|0:0){h=wt(b)|0;if(!h){c[f>>2]=b;_l(0,60016,f)|0;break}mr(d,134901)|0;g=c[e>>2]|0;c[e>>2]=g+1;ec(d,g);mr(d,60043)|0;g=h+8|0;b=0;f=0;while(1){if((f|0)>=(c[h>>2]|0))break;if(!b)b=1;else mr(d,82308)|0;qc((c[g>>2]|0)+(f*80|0)|0,d,e);f=f+1|0}c[e>>2]=(c[e>>2]|0)+-1;mr(d,134901)|0;ec(d,c[e>>2]|0);mr(d,82303)|0;xt(h)}while(0);l=i;return}function qc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;A=l;l=l+240|0;y=A+224|0;x=A+216|0;w=A+208|0;v=A+200|0;u=A+192|0;t=A+184|0;s=A+176|0;r=A+152|0;q=A+136|0;p=A+128|0;o=A+112|0;n=A+104|0;m=A+96|0;k=A+88|0;j=A+72|0;i=A+48|0;z=A+40|0;g=A+8|0;f=A;e=c[d>>2]|0;c[d>>2]=e+1;ec(b,e);mr(b,82337)|0;ec(b,c[d>>2]|0);e=c[a>>2]|0;a:do switch(e|0){case 1:case 0:{c[f>>2]=(e|0)==0?69:101;sr(b,60046,f);ec(b,c[d>>2]|0);D=+h[a+16>>3];C=+h[a+24>>3];B=+h[a+32>>3];h[g>>3]=+h[a+8>>3];h[g+8>>3]=D;h[g+16>>3]=C;h[g+24>>3]=B;sr(b,60059,g);break}case 3:case 2:{c[z>>2]=(e|0)==2?80:112;sr(b,60046,z);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 5:case 4:{c[i>>2]=(e|0)==4?66:98;sr(b,60046,i);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 6:{sr(b,60094,A+56|0);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 7:{sr(b,60106,A+64|0);ec(b,c[d>>2]|0);D=+h[a+16>>3];h[j>>3]=+h[a+8>>3];h[j+8>>3]=D;sr(b,60118,j);ec(b,c[d>>2]|0);z=c[a+24>>2]|0;c[k>>2]=(z|0)==0?108:(z|0)==1?99:114;sr(b,60140,k);ec(b,c[d>>2]|0);h[m>>3]=+h[a+32>>3];sr(b,60156,m);ec(b,c[d>>2]|0);c[n>>2]=mc(c[a+40>>2]|0,d)|0;sr(b,60173,n);break}case 9:case 8:{c[o>>2]=(e|0)==8?67:99;sr(b,60046,o);ec(b,c[d>>2]|0);sr(b,60187,A+120|0);ec(b,c[d>>2]|0);c[p>>2]=mc(c[a+8>>2]|0,d)|0;sr(b,60204,p);break}case 13:case 14:{c[q>>2]=(e|0)==13?67:99;sr(b,60046,q);ec(b,c[d>>2]|0);switch(c[a+8>>2]|0){case 0:{sr(b,60187,A+144|0);ec(b,c[d>>2]|0);c[r>>2]=mc(c[a+16>>2]|0,d)|0;sr(b,60204,r);break a}case 1:{sr(b,60219,A+160|0);ec(b,c[d>>2]|0);sc(b,a+16|0,d);break a}default:{sr(b,60238,A+168|0);ec(b,c[d>>2]|0);tc(b,a+16|0,d);break a}}}case 10:{sr(b,60257,s);ec(b,c[d>>2]|0);h[t>>3]=+h[a+8>>3];sr(b,60269,t);ec(b,c[d>>2]|0);c[u>>2]=mc(c[a+16>>2]|0,d)|0;sr(b,60285,u);break}case 11:{sr(b,60299,v);ec(b,c[d>>2]|0);c[w>>2]=mc(c[a+8>>2]|0,d)|0;sr(b,60311,w);break}case 15:{sr(b,60326,x);ec(b,c[d>>2]|0);c[y>>2]=c[a+8>>2];sr(b,60338,y);break}default:{}}while(0);z=(c[d>>2]|0)+-1|0;c[d>>2]=z;ec(b,z);mr(b,68190)|0;l=A;return}function rc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;j=l;l=l+48|0;i=j+32|0;g=j+16|0;f=j+8|0;e=c[b>>2]|0;d=c[b+4>>2]|0;sr(a,60499,j);b=0;while(1){if((b|0)>=(e|0))break;if((b|0)>0)sr(a,86030,f);k=+h[d+(b*24|0)+8>>3];h[g>>3]=+h[d+(b*24|0)>>3];h[g+8>>3]=k;sr(a,60511,g);b=b+1|0}sr(a,60452,i);l=j;return}function sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0;e=l;l=l+32|0;f=e+16|0;i=e;ec(a,c[d>>2]|0);g=+h[b+8>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=g;sr(a,60455,i);ec(a,c[d>>2]|0);g=+h[b+24>>3];h[f>>3]=+h[b+16>>3];h[f+8>>3]=g;sr(a,60477,f);ec(a,c[d>>2]|0);uc(a,c[b+32>>2]|0,c[b+36>>2]|0,d);l=e;return}function tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0;e=l;l=l+48|0;f=e+24|0;j=e;ec(a,c[d>>2]|0);g=+h[b+8>>3];i=+h[b+16>>3];h[j>>3]=+h[b>>3];h[j+8>>3]=g;h[j+16>>3]=i;sr(a,60354,j);ec(a,c[d>>2]|0);i=+h[b+32>>3];g=+h[b+40>>3];h[f>>3]=+h[b+24>>3];h[f+8>>3]=i;h[f+16>>3]=g;sr(a,60382,f);ec(a,c[d>>2]|0);uc(a,c[b+48>>2]|0,c[b+52>>2]|0,d);l=e;return}function uc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+48|0;k=m+32|0;j=m+16|0;i=m+8|0;sr(a,60410,m);f=0;while(1){if((f|0)>=(b|0))break;if((f|0)>0)sr(a,86030,i);o=+g[d+(f<<3)>>2];n=mc(c[d+(f<<3)+4>>2]|0,e)|0;h[j>>3]=o;c[j+8>>2]=n;sr(a,60421,j);f=f+1|0}sr(a,60452,k);l=m;return}function vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=bb[c[a>>2]&31](a,b,512)|0;if(e){if((c[e+12>>2]|0)!=(d|0)){c[f>>2]=b;_l(0,60601,f)|0}}else{f=$I(1,16)|0;c[f+8>>2]=GL(b)|0;c[f+12>>2]=d;bb[c[a>>2]&31](a,f,1)|0}l=g;return}function wc(a,b,d){a=a|0;b=b|0;d=d|0;_I(c[b+8>>2]|0);_I(b);return}function xc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;mr(a,61456)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;sr(a,61466,g);c[e>>2]=Dn(c[f+8>>2]|0)|0;sr(a,61501,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;sr(a,61514,d);mr(a,61527)|0;mr(a,61537)|0;mr(a,61545)|0;mr(a,61553)|0;mr(a,61561)|0;mr(a,61569)|0;mr(a,61577)|0;mr(a,61581)|0;mr(a,61586)|0;l=b;return}function yc(a){a=a|0;mr(a,61437)|0;return}function zc(a){a=a|0;c[41896]=2;return}function Ac(a){a=a|0;c[41896]=1;return}function Bc(a){a=a|0;c[41896]=2;return}function Cc(a){a=a|0;c[41896]=0;return}function Dc(a){a=a|0;c[41896]=2;return}function Ec(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;p=l;l=l+80|0;o=p;m=c[(c[b+16>>2]|0)+16>>2]|0;n=c[41896]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;j=c[e>>2]|0;k=g*.3333333333333333*+((rJ(j)|0)>>>0);f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;s=a[e+48>>0]|0;r=+h[d>>3];q=+h[d+8>>3];e=Oc(j)|0;c[o>>2]=4;c[o+4>>2]=s<<24>>24==108?0:s<<24>>24==114?2:1;c[o+8>>2]=m;c[o+12>>2]=n;c[o+16>>2]=0;c[o+20>>2]=f;h[o+24>>3]=g;h[o+32>>3]=i;c[o+40>>2]=6;h[o+48>>3]=g;h[o+56>>3]=k;c[o+64>>2]=~~(r+(r>=0.0?.5:-.5));c[o+68>>2]=~~(q+(q+-72.0>=0.0?-71.5:-72.5));c[o+72>>2]=e;sr(b,61382,o);l=p;return}function Fc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12652+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(xJ(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(Nc(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;sr(b,61325,j);k=10}break}default:ma(123205,60722,163,60753)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function Gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[41896]|0;Lc(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));sr(a,61260,f);l=e;return}function Hc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[41896]|0;Lc(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;sr(a,61164,g);Mc(a,b,d,1);l=f;return}function Ic(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;i=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;f=a+16|0;e=c[f>>2]|0;q=~~+h[e+152>>3];r=c[e+16>>2]|0;s=c[41896]|0;if((d|0)<=3)ma(60715,60722,360,60742);t=ZI((d*140|0)+140|0)|0;Lc(e,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[f>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[i>>2]=~~(E+(E>=0.0?.5:-.5));c[i+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(pL(t,73932,i)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;PA(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(pL(e,73932,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;sr(a,61215,A);c[z>>2]=t;sr(a,73939,z);_I(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;sr(a,73944,B);e=e+1|0}mr(a,134901)|0;l=C;return}function Jc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[41896]|0;Lc(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;sr(a,61164,f);Mc(a,b,d,0);l=e;return}function Kc(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;sr(a,61158,e);l=d;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function Mc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));sr(a,73932,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));sr(a,73932,i)}mr(a,134901)|0;l=j;return}function Nc(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[41897]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[170804+(g<<1)>>1]|0)-d|0;n=(b[171316+(g<<1)>>1]|0)-e|0;j=(b[171828+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[41897]=k+1;if((k|0)==256)g=i;else{b[170804+(g<<1)>>1]=d;b[171316+(g<<1)>>1]=e;b[171828+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function Oc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41898]|0;if(!d){c[41899]=64;d=ZI(64)|0;c[41898]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41899]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41899]=d;d=aJ(c[41898]|0,d)|0;c[41898]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;pL(d+1|0,74057,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41898]|0}function Pc(b){b=b|0;var d=0,e=0,f=0;e=c[b+16>>2]|0;switch(c[b+64>>2]|0){case 0:{mr(b,61053)|0;d=e+208|0;e=c[d>>2]|0;if(e|0?a[e>>0]|0:0){mr(b,61067)|0;mr(b,rw(c[d>>2]|0)|0)|0;mr(b,134901)|0}break}case 1:{d=e+208|0;f=c[d>>2]|0;if(f|0?a[f>>0]|0:0){mr(b,61067)|0;mr(b,rw(c[d>>2]|0)|0)|0;mr(b,87638)|0;mr(b,rw(Dn(c[e+8>>2]|0)|0)|0)|0;mr(b,134901)|0}break}case 3:{f=rw(Dn(c[e+8>>2]|0)|0)|0;mr(b,61076)|0;mr(b,f)|0;mr(b,61086)|0;mr(b,f)|0;mr(b,61041)|0;break}default:{}}return}function Qc(a){a=a|0;var b=0;b=c[a+16>>2]|0;switch(c[a+64>>2]|0){case 2:{Sc(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);break}case 3:{Sc(a,c[b+264>>2]|0,c[b+272>>2]|0,c[b+268>>2]|0,c[b+208>>2]|0,c[b+228>>2]|0,c[b+244>>2]|0,c[b+212>>2]|0);mr(a,61045)|0;break}default:{}}return}function Rc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+16>>2]|0;Sc(a,c[g+264>>2]|0,c[g+272>>2]|0,c[g+268>>2]|0,b,d,e,f);return}function Sc(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=l;l=l+128|0;x=y+120|0;u=y+112|0;t=y+96|0;s=y+80|0;r=y+56|0;w=y+48|0;q=y+40|0;v=y+24|0;p=y;a:do if((e|0)!=0&(f|0)!=0){m=f+10|0;if((c[41900]|0)<(f|0)){c[41900]=m;o=aJ(c[41901]|0,m<<3)|0;c[41901]=o}else o=c[41901]|0;m=0;while(1){if((m|0)>=(f|0))break;z=+h[e+(m<<4)>>3];c[o+(m<<3)>>2]=~~(z+(z>=0.0?.5:-.5));z=+h[e+(m<<4)+8>>3];c[o+(m<<3)+4>>2]=~~(z+(z>=0.0?.5:-.5));m=m+1|0}n=b+64|0;m=c[n>>2]|0;e=(g|0)!=0;if(e&(m|0)==0){if(!(a[g>>0]|0))break;switch(d|0){case 0:{v=c[o>>2]|0;w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[p>>2]=g;c[p+4>>2]=v;c[p+8>>2]=w;c[p+12>>2]=x;c[p+16>>2]=f;sr(b,60787,p);break a}case 1:{w=c[o>>2]|0;x=c[o+4>>2]|0;f=(c[o+8>>2]|0)-w|0;c[v>>2]=g;c[v+4>>2]=w;c[v+8>>2]=x;c[v+12>>2]=f;sr(b,60808,v);break a}case 2:{c[q>>2]=g;sr(b,60828,q);m=0;while(1){if((m|0)>=(f|0))break;v=c[41901]|0;x=c[v+(m<<3)+4>>2]|0;c[w>>2]=c[v+(m<<3)>>2];c[w+4>>2]=x;sr(b,60836,w);m=m+1|0}mr(b,134901)|0;break a}default:ma(123205,60843,63,60863)}}if(e&(m|0)==1){if(!(a[g>>0]|0))break;if(!d){w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=w;c[r+8>>2]=x;c[r+12>>2]=f;c[r+16>>2]=g;c[r+20>>2]=i;sr(b,60880,r);break}else ma(123205,60843,75,60863)}if((m&-2|0)==2){switch(d|0){case 1:{mr(b,60913)|0;break}case 0:{mr(b,60934)|0;break}case 2:{mr(b,60953)|0;break}default:ma(123205,60843,91,60863)}if(k|0?a[k>>0]|0:0){mr(b,66433)|0;mr(b,uw(k)|0)|0;mr(b,83714)|0}if(e?a[g>>0]|0:0){mr(b,60972)|0;mr(b,uw(g)|0)|0;mr(b,83714)|0}if(j|0?a[j>>0]|0:0){mr(b,67392)|0;mr(b,rw(j)|0)|0;mr(b,83714)|0}if(i|0?a[i>>0]|0:0){mr(b,60980)|0;mr(b,rw(i)|0)|0;mr(b,83714)|0}mr(b,60989)|0;mr(b,60997)|0;b:do switch(d|0){case 1:{f=c[41901]|0;w=c[f>>2]|0;x=c[f+4>>2]|0;f=(c[f+8>>2]|0)-w|0;c[s>>2]=w;c[s+4>>2]=x;c[s+8>>2]=f;sr(b,61007,s);break}case 0:{v=c[41901]|0;w=c[v+12>>2]|0;x=c[v+8>>2]|0;f=c[v+4>>2]|0;c[t>>2]=c[v>>2];c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=f;sr(b,61016,t);break}case 2:{w=c[41901]|0;m=c[w+4>>2]|0;c[u>>2]=c[w>>2];c[u+4>>2]=m;sr(b,61028,u);m=1;while(1){if((m|0)>=(f|0))break b;v=c[41901]|0;w=c[v+(m<<3)+4>>2]|0;c[x>>2]=c[v+(m<<3)>>2];c[x+4>>2]=w;sr(b,61034,x);m=m+1|0}}default:{}}while(0);if((c[n>>2]|0)==3){mr(b,66257)|0;break}else{mr(b,61041)|0;break}}}while(0);l=y;return}function Tc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;mr(a,61456)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;sr(a,61466,g);c[e>>2]=Dn(c[f+8>>2]|0)|0;sr(a,61501,e);c[d>>2]=O(c[a+168>>2]|0,c[a+164>>2]|0)|0;sr(a,61514,d);mr(a,61527)|0;mr(a,61537)|0;mr(a,61545)|0;mr(a,61553)|0;mr(a,61561)|0;mr(a,61569)|0;mr(a,61577)|0;mr(a,61581)|0;mr(a,61586)|0;l=b;return}function Uc(a){a=a|0;mr(a,61437)|0;return}function Vc(a){a=a|0;c[41902]=2;return}function Wc(a){a=a|0;c[41902]=1;return}function Xc(a){a=a|0;c[41902]=2;return}function Yc(a){a=a|0;c[41902]=0;return}function Zc(a){a=a|0;c[41902]=2;return}function _c(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0;n=l;l=l+80|0;m=n;j=c[(c[b+16>>2]|0)+16>>2]|0;k=c[41902]|0;f=c[e+4>>2]|0;g=+h[b+352>>3]*+h[f+16>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;q=a[e+48>>0]|0;p=+h[d>>3];o=+h[d+8>>3];e=id(c[e>>2]|0)|0;c[m>>2]=4;c[m+4>>2]=q<<24>>24==108?0:q<<24>>24==114?2:1;c[m+8>>2]=j;c[m+12>>2]=k;c[m+16>>2]=0;c[m+20>>2]=f;h[m+24>>3]=g;h[m+32>>3]=i;c[m+40>>2]=4;h[m+48>>3]=0.0;h[m+56>>3]=0.0;c[m+64>>2]=~~(p+(p>=0.0?.5:-.5));c[m+68>>2]=~~(o+(o>=0.0?.5:-.5));c[m+72>>2]=e;sr(b,61382,m);l=n;return}function $c(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12652+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(xJ(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(hd(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;sr(b,61325,j);k=10}break}case 0:{f=0;k=10;break}default:ma(123205,61346,168,61365)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[41902]|0;fd(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));sr(a,61260,f);l=e;return}function bd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[41902]|0;fd(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;sr(a,61164,g);gd(a,b,d,1);l=f;return}function cd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;f=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;e=a+16|0;p=c[e>>2]|0;q=~~+h[p+152>>3];r=c[p+16>>2]|0;s=c[41902]|0;t=ZI((d*140|0)+140|0)|0;fd(p,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[e>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[f>>2]=~~(E+(E>=0.0?.5:-.5));c[f+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(pL(t,73932,f)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;PA(x,w,3,+(f|0)*.16666666666666666,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(pL(e,73932,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;sr(a,61215,A);c[z>>2]=t;sr(a,73939,z);_I(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;sr(a,73944,B);e=e+1|0}mr(a,134901)|0;l=C;return}function dd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[41902]|0;fd(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;sr(a,61164,f);gd(a,b,d,0);l=e;return}function ed(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;sr(a,61158,e);l=d;return}function fd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function gd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));sr(a,73932,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));sr(a,73932,i)}mr(a,134901)|0;l=j;return}function hd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[a>>2]=0;k=c[41903]|0;h=195075;g=0;i=-1;while(1){if((g|0)>=(k|0)){l=6;break}m=(b[172340+(g<<1)>>1]|0)-d|0;n=(b[172852+(g<<1)>>1]|0)-e|0;j=(b[173364+(g<<1)>>1]|0)-f|0;j=(O(n,n)|0)+(O(m,m)|0)+(O(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((l|0)==6){c[41903]=k+1;if((k|0)==256)g=i;else{b[172340+(g<<1)>>1]=d;b[172852+(g<<1)>>1]=e;b[173364+(g<<1)>>1]=f;c[a>>2]=1}}return g|0}function id(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41904]|0;if(!d){c[41905]=64;d=ZI(64)|0;c[41904]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41905]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41905]=d;d=aJ(c[41904]|0,d)|0;c[41904]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;pL(d+1|0,74057,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41904]|0}function jd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=l;l=l+16|0;b=d;mr(a,66165)|0;if((c[a+64>>2]|0)==2)mr(a,66180)|0;else mr(a,134901)|0;g=c[c[a+12>>2]>>2]|0;f=c[g+4>>2]|0;e=c[g+8>>2]|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;c[b+8>>2]=e;sr(a,66191,b);l=d;return}function kd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+8|0;e=g;mr(a,66119)|0;d=a+64|0;b=a+12|0;if((c[d>>2]|0)!=2){c[e>>2]=c[(c[b>>2]|0)+28>>2];sr(a,66130,e)}if((c[(c[b>>2]|0)+20>>2]|0)==0?(c[d>>2]|0)!=2:0){b=c[a+476>>2]|0;d=c[a+480>>2]|0;e=c[a+484>>2]|0;c[f>>2]=c[a+472>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=e;sr(a,62499,f)}mr(a,66145)|0;mr(a,66158)|0;l=g;return}function ld(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+32|0;j=k+24|0;f=k+8|0;i=k;g=c[b+16>>2]|0;a[173892]=0;e=b+12|0;h=g+8|0;if(!(c[(c[e>>2]|0)+28>>2]|0)){c[i>>2]=Dn(c[h>>2]|0)|0;sr(b,62430,i);d=b+64|0;if((c[d>>2]|0)==2)mr(b,62463)|0;else mr(b,62445)|0;do if(!(c[(c[e>>2]|0)+20>>2]|0))if((c[d>>2]|0)==2){n=c[b+460>>2]|0;m=c[b+464>>2]|0;d=c[b+468>>2]|0;c[f>>2]=c[b+456>>2];c[f+4>>2]=n;c[f+8>>2]=m;c[f+12>>2]=d;sr(b,62499,f);break}else{mr(b,62475)|0;break}while(0);mr(b,62529)|0;ey(b,c[(c[e>>2]|0)+24>>2]|0,12928);gy(b);d=c[(c[e>>2]|0)+20>>2]|0;if(d|0){c[i>>2]=c[d>>2];c[i+4>>2]=0;ey(b,0,i)}}c[41906]=(a[(c[(c[h>>2]|0)+16>>2]|0)+115>>0]|0)==1?1:-1;if(!(a[173892]|0)){mr(b,62549)|0;a[173892]=1}d=c[g+208>>2]|0;if(d|0){c[j>>2]=hy(d,c[41906]|0)|0;sr(b,62562,j)}l=k;return}function md(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=l;l=l+16|0;f=b;c[f>>2]=d;c[f+4>>2]=e;sr(a,62414,f);l=b;return}function nd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0;s=l;l=l+144|0;r=s+128|0;q=s+112|0;p=s+72|0;o=s+56|0;n=s+40|0;m=s+32|0;e=s+24|0;b=s+8|0;d=s;f=c[a+456>>2]|0;j=c[a+460>>2]|0;g=c[a+464>>2]|0;i=c[a+468>>2]|0;k=a+12|0;t=(c[(c[k>>2]|0)+28>>2]|0)+1|0;c[d>>2]=t;c[d+4>>2]=t;sr(a,62041,d);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[b>>2]=f;c[b+4>>2]=j;c[b+8>>2]=g;c[b+12>>2]=i;sr(a,62058,b)}d=a+360|0;c[e>>2]=c[d>>2]|0?62092:62102;sr(a,62111,e);b=a+64|0;if((c[b>>2]|0)==1){c[m>>2]=g;c[m+4>>2]=i;sr(a,62136,m)}m=c[a+200>>2]|0;t=c[a+204>>2]|0;c[n>>2]=c[a+196>>2];c[n+4>>2]=m;c[n+8>>2]=t;sr(a,62175,n);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[o>>2]=f;c[o+4>>2]=j;c[o+8>>2]=g-f;c[o+12>>2]=i-j;sr(a,62195,o)}w=+h[a+496>>3];t=c[d>>2]|0;v=+h[a+504>>3];u=+h[a+512>>3];h[p>>3]=+h[a+488>>3];h[p+8>>3]=w;c[p+16>>2]=t;h[p+24>>3]=v;h[p+32>>3]=u;sr(a,62235,p);if((c[b>>2]|0)==1){if((g|0)>14399|(i|0)>14399){t=c[(c[k>>2]|0)+16>>2]|0;c[q>>2]=g;c[q+4>>2]=i;c[q+8>>2]=14400;hb[t&31](62278,q)}c[r>>2]=f;c[r+4>>2]=j;c[r+8>>2]=g;c[r+12>>2]=i;sr(a,62373,r)}l=s;return}function od(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=a+12|0;if(c[(c[b>>2]|0)+20>>2]|0){mr(a,61965)|0;ey(a,0,(c[(c[b>>2]|0)+20>>2]|0)+4|0)}mr(a,61982)|0;mr(a,62009)|0;c[d>>2]=c[(c[b>>2]|0)+28>>2];sr(a,62024,d);l=e;return}function pd(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;sr(a,61958,d);mr(a,61951)|0;l=b;return}function qd(a){a=a|0;mr(a,77394)|0;return}function rd(a){a=a|0;mr(a,61951)|0;return}function sd(a){a=a|0;mr(a,77394)|0;return}function td(a){a=a|0;mr(a,61951)|0;return}function ud(a){a=a|0;mr(a,77394)|0;return}function vd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=l;l=l+16|0;d=e;if(b|0?(g=(c[a+16>>2]|0)+272|0,c[g>>2]|0):0){mr(a,61847)|0;wr(a,c[g>>2]|0,2);mr(a,61858)|0;c[d>>2]=hy(b,c[41906]|0)|0;sr(a,61862,d)}l=e;return}function wd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+8|0;k=m;f=c[b+16>>2]|0;if(!(+h[f+40>>3]<.5)){Dd(b,f+16|0);i=e+4|0;tr(b,+h[(c[i>>2]|0)+16>>3]);c[j>>2]=c[c[i>>2]>>2];sr(b,61806,j);i=hy(c[e>>2]|0,c[41906]|0)|0;switch(a[e+48>>0]|0){case 114:{n=e+32|0;f=n;g=+h[n>>3];break}case 108:{f=e+32|0;g=0.0;break}default:{n=e+32|0;f=n;g=+h[n>>3]*.5}}h[d>>3]=+h[d>>3]-g;n=d+8|0;h[n>>3]=+h[n>>3]+ +h[e+24>>3];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];vr(b,j);mr(b,61821)|0;tr(b,+h[f>>3]);c[k>>2]=i;sr(b,61830,k)}l=m;return}function xd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+32|0;f=g;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];h[f+16>>3]=+h[b+16>>3]-+h[b>>3];h[f+24>>3]=+h[b+24>>3]-+h[b+8>>3];b=a+16|0;if(d|0?(e=c[b>>2]|0,+h[e+80>>3]>.5):0){Dd(a,e+56|0);wr(a,f,2);mr(a,61764)|0}if(+h[(c[b>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[b>>2]|0)+16|0);wr(a,f,2);mr(a,61784)|0}l=g;return}function yd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+16|0;i=j;g=a+16|0;if(e|0?(f=c[g>>2]|0,+h[f+80>>3]>.5):0){Dd(a,f+56|0);mr(a,61685)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];vr(a,i);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;f=b+(e<<4)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];vr(a,i);mr(a,61703)|0;e=e+1|0}mr(a,61730)|0}if(+h[(c[g>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[g>>2]|0)+16|0);mr(a,61685)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];vr(a,i);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;g=b+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];vr(a,i);mr(a,61703)|0;e=e+1|0}mr(a,61746)|0}l=j;return}function zd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0;k=l;l=l+16|0;f=k;i=a+16|0;if(g|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Dd(a,j+56|0);mr(a,61685)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];vr(a,f);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;wr(a,b+(e<<4)|0,3);mr(a,61720)|0;e=e+3|0}mr(a,61730)|0}if(+h[(c[i>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[i>>2]|0)+16|0);mr(a,61685)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];vr(a,f);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;wr(a,b+(e<<4)|0,3);mr(a,61720)|0;e=e+3|0}mr(a,61712)|0}l=k;return}function Ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;g=l;l=l+16|0;f=g;e=a+16|0;if(+h[(c[e>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[e>>2]|0)+16|0);mr(a,61685)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];vr(a,f);mr(a,61694)|0;e=1;while(1){if((e|0)>=(d|0))break;i=b+(e<<4)|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];vr(a,f);mr(a,61703)|0;e=e+1|0}mr(a,61712)|0}l=g;return}function Bd(a,b){a=a|0;b=b|0;mr(a,61682)|0;mr(a,b)|0;mr(a,134901)|0;return}function Cd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;g=n+16|0;m=n+8|0;k=n;i=a+16|0;if(f|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Dd(a,j+56|0);mr(a,77289)|0;wr(a,d,e);mr(a,87638)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];vr(a,g);c[k>>2]=e;c[k+4>>2]=b;sr(a,61599,k)}if(+h[(c[i>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[i>>2]|0)+16|0);mr(a,77289)|0;wr(a,d,e);mr(a,87638)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];vr(a,g);c[m>>2]=e;c[m+4>>2]=b;sr(a,61615,m)}l=n;return}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=l;l=l+32|0;e=f;if(b|0){switch(c[(c[a+16>>2]|0)+4>>2]|0){case 1:case 0:{d=96286;break}case 2:{d=96273;break}case 3:{d=96237;break}default:d=61651}i=+h[b+8>>3];g=+h[b+16>>3];h[e>>3]=+h[b>>3];h[e+8>>3]=i;h[e+16>>3]=g;c[e+24>>2]=d;sr(a,61658,e)}l=f;return}function Ed(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;g=b+16|0;i=c[g>>2]|0;d=c[i+160>>2]|0;tr(b,+h[i+152>>3]);mr(b,61632)|0;while(1){if(!d)break;i=d+4|0;f=c[d>>2]|0;if(!f)break;if(!(xJ(f,95910)|0)){d=i;continue}else e=f;while(1){d=e+1|0;if(!(a[e>>0]|0))break;else e=d}a:while(1){if(!(a[d>>0]|0))break;c[j>>2]=d;sr(b,61647,j);while(1){e=d+1|0;if(!(a[d>>0]|0)){d=e;continue a}else d=e}}if(!(xJ(f,119127)|0))h[(c[g>>2]|0)+152>>3]=0.0;c[k>>2]=f;sr(b,81633,k);d=i}l=m;return}function Fd(b){b=b|0;var d=0;mr(b,67671)|0;d=Im(c[(c[b>>2]|0)+168>>2]|0,67727)|0;if(d|0?a[d>>0]|0:0){mr(b,67738)|0;mr(b,d)|0;mr(b,67762)|0}mr(b,67783)|0;mr(b,67831)|0;mr(b,67885)|0;d=b+12|0;mr(b,rw(c[c[c[d>>2]>>2]>>2]|0)|0)|0;mr(b,71014)|0;mr(b,rw(c[(c[c[d>>2]>>2]|0)+4>>2]|0)|0)|0;mr(b,71024)|0;mr(b,rw(c[(c[c[d>>2]>>2]|0)+8>>2]|0)|0)|0;mr(b,68267)|0;mr(b,68291)|0;return}function Gd(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;i=l;l=l+48|0;g=i+16|0;f=i+8|0;e=i;d=c[b+16>>2]|0;mr(b,67506)|0;d=d+8|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){mr(b,68230)|0;mr(b,rw(Dn(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;sr(b,67511,e);e=c[b+452>>2]|0;c[f>>2]=c[b+448>>2];c[f+4>>2]=e;sr(b,67527,f);m=+h[b+392>>3];k=+h[b+400>>3];j=+h[b+408>>3];h[g>>3]=+h[b+384>>3];h[g+8>>3]=m;h[g+16>>3]=k;h[g+24>>3]=j;sr(b,67560,g);mr(b,67591)|0;mr(b,67627)|0;mr(b,69221)|0;l=i;return}function Hd(a){a=a|0;mr(a,67498)|0;return}function Id(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;de(a,b,0,86583,c[(c[a+16>>2]|0)+8>>2]|0);mr(a,69221)|0;return}function Jd(a){a=a|0;mr(a,67346)|0;return}function Kd(b){b=b|0;var d=0,e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=c[b+16>>2]|0;d=g+8|0;de(b,c[g+212>>2]|0,0,96286,c[d>>2]|0);mr(b,67450)|0;tr(b,+h[b+488>>3]);mr(b,87638)|0;tr(b,+h[b+496>>3]);c[f>>2]=0-(c[b+360>>2]|0);sr(b,67469,f);tr(b,+h[b+504>>3]);mr(b,87638)|0;tr(b,-+h[b+512>>3]);mr(b,67493)|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){mr(b,67402)|0;mr(b,rw(Dn(c[d>>2]|0)|0)|0)|0;mr(b,67410)|0}l=e;return}function Ld(a){a=a|0;mr(a,67346)|0;return}function Md(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;de(a,c[d+212>>2]|0,0,93039,c[b>>2]|0);mr(a,69221)|0;mr(a,67402)|0;mr(a,rw(Dn(c[b>>2]|0)|0)|0)|0;mr(a,67410)|0;return}function Nd(a){a=a|0;mr(a,67346)|0;return}function Od(a){a=a|0;var b=0,d=0,e=0;d=c[a+16>>2]|0;b=c[a+160>>2]|0;if((b|0)>1)b=c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0;else b=0;e=d+8|0;de(a,c[d+212>>2]|0,b,96273,c[e>>2]|0);mr(a,69221)|0;mr(a,67402)|0;mr(a,rw(Dn(c[e>>2]|0)|0)|0)|0;mr(a,67410)|0;return}function Pd(a){a=a|0;mr(a,67346)|0;return}function Qd(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;de(a,c[d+212>>2]|0,0,96237,c[b>>2]|0);mr(a,69221)|0;mr(a,67402)|0;b=qw(87129,c[b>>2]|0)|0;mr(a,rw(b)|0)|0;_I(b);mr(a,67410)|0;return}function Rd(a){a=a|0;mr(a,67346)|0;return}function Sd(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;mr(b,67352)|0;if(f|0){mr(b,67355)|0;mr(b,rw(f)|0)|0;mr(b,83714)|0}mr(b,67245)|0;mr(b,69182)|0;if(c|0?a[c>>0]|0:0){mr(b,67363)|0;mr(b,c)|0;mr(b,83714)|0}if(d|0?a[d>>0]|0:0){mr(b,67377)|0;mr(b,sw(d,1)|0)|0;mr(b,83714)|0}if(e|0?a[e>>0]|0:0){mr(b,67392)|0;mr(b,rw(e)|0)|0;mr(b,83714)|0}mr(b,69221)|0;return}function Td(a){a=a|0;mr(a,69176)|0;mr(a,67346)|0;return}function Ud(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+176|0;L=M+160|0;K=M+152|0;F=M+136|0;J=M+128|0;E=M+120|0;D=M+112|0;C=M+104|0;B=M+96|0;A=M+88|0;y=M+80|0;w=M+72|0;v=M+64|0;u=M+56|0;t=M+48|0;i=M+40|0;q=M+32|0;s=M+24|0;r=M+16|0;p=M+8|0;o=M;I=c[e+16>>2]|0;mr(e,66877)|0;switch(a[g+48>>0]|0){case 108:{mr(e,66883)|0;break}case 114:{mr(e,66904)|0;break}default:mr(e,66923)|0}H=f+8|0;G=+h[H>>3]+ +h[g+24>>3];h[H>>3]=G;H=I+260|0;if(!(b[H>>1]&512)){mr(e,66945)|0;tr(e,+h[f>>3]);mr(e,66950)|0;tr(e,-G);mr(e,83714)|0}x=g+4|0;f=c[x>>2]|0;n=c[f+8>>2]|0;if(n){switch(c[(c[(c[(c[e>>2]|0)+168>>2]|0)+16>>2]|0)+244>>2]|0){case 1:{m=n;f=n+16|0;i=n+8|0;break}case 2:{m=n+24|0;f=n+32|0;i=n+28|0;break}default:{m=n+4|0;f=n+16|0;i=n+8|0}}j=c[f>>2]|0;f=c[i>>2]|0;k=c[n+12>>2]|0;c[o>>2]=c[m>>2];sr(e,66956,o);i=c[n+24>>2]|0;if(i|0){c[p>>2]=i;sr(e,66973,p)}mr(e,83714)|0;if(f|0){c[r>>2]=f;sr(e,66977,r)}if(k|0){c[s>>2]=k;sr(e,66995,s)}if(!j)j=0;else{c[q>>2]=j;sr(e,67014,q)}}else{c[i>>2]=c[f>>2];sr(e,67031,i);j=0;f=0}i=c[x>>2]|0;if(i|0?(z=c[i+24>>2]|0,z&127|0):0){if(!((f|0)!=0|(z&1|0)==0))sr(e,67049,t);if(!((j|0)!=0|(z&2|0)==0))sr(e,67069,u);if(z&100|0){sr(e,67090,v);if(!(z&4))f=0;else{sr(e,91030,w);f=1}if(z&64){c[y>>2]=f|0?86030:174181;sr(e,67109,y);f=1}if(z&32|0){c[A>>2]=f|0?86030:174181;sr(e,67120,A)}sr(e,83714,B)}if(z&8|0)sr(e,67135,C);if(z&16|0)sr(e,67159,D)}h[E>>3]=+h[(c[x>>2]|0)+16>>3];sr(e,67181,E);f=I+16|0;switch(c[I+48>>2]|0){case 5:{f=c[f>>2]|0;if(iK(f,122106)|0){c[J>>2]=f;sr(e,67199,J)}break}case 1:{E=d[f+1>>0]|0;J=d[f+2>>0]|0;c[F>>2]=d[f>>0];c[F+4>>2]=E;c[F+8>>2]=J;sr(e,67210,F);break}default:ma(123205,66391,486,67232)}mr(e,67245)|0;if(b[H>>1]&512){c[K>>2]=rw(c[I+212>>2]|0)|0;sr(e,67247,K);mr(e,67296)|0;tr(e,-G);mr(e,67314)|0}mr(e,sw(c[g>>2]|0,1)|0)|0;if(b[H>>1]&512)sr(e,67317,L);mr(e,67337)|0;l=M;return}function Vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 2:{d=ae(a,b,2)|0;break}case 3:{d=be(a)|0;break}default:d=0}mr(a,66841)|0;_d(a,c,d);mr(a,66850)|0;tr(a,+h[b>>3]);mr(a,66856)|0;c=b+8|0;tr(a,-+h[c>>3]);mr(a,66863)|0;tr(a,+h[b+16>>3]-+h[b>>3]);mr(a,66870)|0;tr(a,+h[b+24>>3]-+h[c>>3]);mr(a,66257)|0;return}function Wd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;switch(d|0){case 2:{e=ae(a,b,c)|0;break}case 3:{e=be(a)|0;break}default:e=0}mr(a,66832)|0;_d(a,d,e);mr(a,66247)|0;e=0;while(1){if((e|0)>=(c|0))break;tr(a,+h[b+(e<<4)>>3]);mr(a,86030)|0;tr(a,-+h[b+(e<<4)+8>>3]);mr(a,87638)|0;e=e+1|0}tr(a,+h[b>>3]);mr(a,86030)|0;tr(a,-+h[b+8>>3]);mr(a,66257)|0;return}function Xd(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=c[a+16>>2]|0;switch(h|0){case 2:{f=ae(a,d,e)|0;break}case 3:{f=be(a)|0;break}default:f=0}mr(a,66427)|0;if(b[g+260>>1]&512){mr(a,66433)|0;mr(a,rw(c[g+212>>2]|0)|0)|0;mr(a,66439)|0}_d(a,h,f);mr(a,66444)|0;ce(a,d,e);mr(a,66257)|0;return}function Yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;mr(a,66237)|0;_d(a,0,0);mr(a,66247)|0;d=0;while(1){if((d|0)>=(c|0))break;tr(a,+h[b+(d<<4)>>3]);mr(a,86030)|0;tr(a,-+h[b+(d<<4)+8>>3]);mr(a,87638)|0;d=d+1|0}mr(a,66257)|0;return}function Zd(a,b){a=a|0;b=b|0;mr(a,66231)|0;mr(a,rw(b)|0)|0;mr(a,68291)|0;return}function _d(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+96|0;k=q+48|0;p=q+40|0;n=q+32|0;o=q+24|0;j=q+16|0;g=q+8|0;f=q;m=c[b+16>>2]|0;mr(b,66262)|0;a:do switch(d|0){case 2:{c[f>>2]=e;sr(b,66270,f);break}case 3:{c[g>>2]=e;sr(b,66281,g);break}case 0:{mr(b,120501)|0;break}default:{d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:break a;default:{}}h[j>>3]=+(d&255)*.00392156862745098;sr(b,66292,j)}}}while(0);mr(b,66311)|0;e=m+16|0;f=k;g=e;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);d=m+152|0;if(+h[d>>3]!=1.0){mr(b,66322)|0;tr(b,+h[d>>3])}switch(c[m+144>>2]|0){case 1:{c[o>>2]=66362;sr(b,66339,o);break}case 2:{c[n>>2]=66366;sr(b,66339,n);break}default:{}}b:do if((c[m+48>>2]|0)==1){d=a[e+3>>0]|0;switch(d<<24>>24){case -1:case 0:break b;default:{}}h[p>>3]=+(d&255)*.00392156862745098;sr(b,66370,p)}while(0);mr(b,83714)|0;l=q;return}function $d(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{mr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){mr(b,122171)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;sr(b,68547,f);break a}default:ma(123205,66391,117,66411)}while(0);l=g;return}function ae(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;o=t+64|0;r=t+56|0;n=t+48|0;m=t+40|0;i=t+32|0;k=t;q=c[41908]|0;c[41908]=q+1;p=c[b+16>>2]|0;f=+(c[p+136>>2]|0)*.017453292519943295;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;JB(d,k,e,f,0);c[o>>2]=q;sr(b,66664,o);mr(b,66729)|0;tr(b,+h[k>>3]);mr(b,66734)|0;tr(b,+h[k+8>>3]);mr(b,66741)|0;tr(b,+h[k+16>>3]);mr(b,66748)|0;tr(b,+h[k+24>>3]);mr(b,66755)|0;k=p+140|0;f=+g[k>>2];if(f>0.0){h[i>>3]=f+-.001;sr(b,66760,i)}else mr(b,66536)|0;d=p+56|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));$d(b,o);mr(b,66572)|0;a:do if((c[p+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=7;break a}default:{}}h[m>>3]=+(d&255)*.00392156862745098;sr(b,84631,m)}else s=7;while(0);if((s|0)==7)mr(b,66587)|0;mr(b,66590)|0;f=+g[k>>2];if(f>0.0){h[n>>3]=f;sr(b,66760,n)}else mr(b,66596)|0;d=p+96|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));$d(b,o);mr(b,66572)|0;b:do if((c[p+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=14;break b}default:{}}h[r>>3]=+(d&255)*.00392156862745098;sr(b,84631,r)}else s=14;while(0);if((s|0)==14)mr(b,66587)|0;mr(b,66800)|0;l=t;return q|0}function be(b){b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;k=q+16|0;o=q+8|0;j=q;n=c[41907]|0;c[41907]=n+1;m=c[b+16>>2]|0;r=+(c[m+136>>2]|0)*.017453292519943295;e=r;if(r==0.0){f=50;d=50}else{f=~~((+E(+e)+1.0)*50.0);d=~~((1.0-+F(+e))*50.0)}c[k>>2]=n;c[k+4>>2]=f;c[k+8>>2]=d;sr(b,66452,k);mr(b,66536)|0;d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);mr(b,66572)|0;a:do if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=6;break a}default:{}}h[j>>3]=+(d&255)*.00392156862745098;sr(b,84631,j)}else p=6;while(0);if((p|0)==6)mr(b,66587)|0;mr(b,66590)|0;mr(b,66596)|0;d=m+96|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);mr(b,66572)|0;b:do if((c[m+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=10;break b}default:{}}h[o>>3]=+(d&255)*.00392156862745098;sr(b,84631,o)}else p=10;while(0);if((p|0)==10)mr(b,66587)|0;mr(b,66632)|0;l=q;return n|0}function ce(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+16|0;g=i;e=77;f=0;while(1){if((f|0)>=(d|0))break;c[g>>2]=e;sr(a,66449,g);tr(a,+h[b+(f<<4)>>3]);mr(a,86030)|0;tr(a,-+h[b+(f<<4)+8>>3]);e=(f|0)==0?67:32;f=f+1|0}l=i;return}function de(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;mr(b,67420)|0;mr(b,rw(d)|0)|0;if(e|0){c[h>>2]=rw(e)|0;sr(b,67428,h)}c[i>>2]=f;sr(b,67432,i);d=Im(g,67444)|0;if(d|0?a[d>>0]|0:0){mr(b,87638)|0;mr(b,rw(d)|0)|0}mr(b,83714)|0;l=j;return}function ee(a){a=a|0;var b=0;mr(a,68251)|0;b=a+12|0;mr(a,oe(c[c[c[b>>2]>>2]>>2]|0)|0)|0;mr(a,71014)|0;mr(a,oe(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;mr(a,71024)|0;mr(a,oe(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;mr(a,68267)|0;return}function fe(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b+16>>2]|0;mr(b,68228)|0;d=d+8|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){mr(b,68230)|0;mr(b,oe(Dn(c[d>>2]|0)|0)|0)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;sr(b,68239,e);c[41909]=0;l=f;return}function ge(a){a=a|0;c[41909]=1;return}function he(a){a=a|0;c[41909]=-1;return}function ie(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;i=n+8|0;m=n;f=c[b+16>>2]|0;if(c[f+144>>2]|0?(k=e+4|0,j=~~(+h[b+352>>3]*+h[(c[k>>2]|0)+16>>3]),j|0):0){pe(b);mr(b,68167)|0;g=d+8|0;h[g>>3]=+h[g>>3]-+(j|0)*.55;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];vr(b,i);mr(b,68181)|0;mr(b,c[e>>2]|0)|0;mr(b,68190)|0;mr(b,67988)|0;g=i;d=f+16|0;f=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(f|0));qe(b,i);mr(b,68192)|0;i=c[k>>2]|0;k=c[i+8>>2]|0;k=c[((k|0)==0?i:k+4|0)>>2]|0;mr(b,83714)|0;mr(b,k)|0;mr(b,83714)|0;c[m>>2]=j;sr(b,68201,m);switch(a[e+48>>0]|0){case 108:{mr(b,68206)|0;break}case 114:{mr(b,68217)|0;break}default:{}}re(b);mr(b,134901)|0}l=n;return}function je(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){n=+h[b>>3];m=+h[b+24>>3];e=b+8|0;k=+h[e>>3];h[b>>3]=n-+h[b+16>>3]+n;h[e>>3]=k-m+k;pe(a);mr(a,68153)|0;wr(a,b,2);mr(a,67988)|0;do if(!d)if(!(c[41909]|0)){mr(a,82272)|0;break}else{mr(a,121990)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f)}while(0);if((c[41909]|0)==1)c[41909]=0;mr(a,68099)|0;tr(a,+h[g+152>>3]);mr(a,68142)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f);b=c[i>>2]|0;if((b|0)==1){mr(a,67996)|0;b=c[i>>2]|0}if((b|0)==2)mr(a,68005)|0;re(a);mr(a,134901)|0}l=j;return}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){pe(a);mr(a,68125)|0;wr(a,b,d);mr(a,67988)|0;do if(!e)if(!(c[41909]|0)){mr(a,82272)|0;break}else{mr(a,121990)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f)}while(0);if((c[41909]|0)==1)c[41909]=0;mr(a,68099)|0;tr(a,+h[g+152>>3]);mr(a,68142)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f);b=c[i>>2]|0;if((b|0)==1){mr(a,67996)|0;b=c[i>>2]|0}if((b|0)==2)mr(a,68005)|0;re(a);mr(a,134901)|0}l=j;return}function le(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m;j=c[a+16>>2]|0;k=j+144|0;if(c[k>>2]|0){pe(a);mr(a,67974)|0;wr(a,b,d);mr(a,67988)|0;e=i;f=j+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));qe(a,i);mr(a,68099)|0;tr(a,+h[j+152>>3]);e=c[k>>2]|0;if((e|0)==1){mr(a,67996)|0;e=c[k>>2]|0}if((e|0)==2)mr(a,68005)|0;mr(a,68108)|0;re(a);mr(a,134901)|0}l=m;return}function me(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;g=i;e=c[a+16>>2]|0;h=e+144|0;if(c[h>>2]|0){pe(a);mr(a,67974)|0;wr(a,b,d);mr(a,67988)|0;f=g;b=e+16|0;d=f+40|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));qe(a,g);b=c[h>>2]|0;if((b|0)==1){mr(a,67996)|0;b=c[h>>2]|0}if((b|0)==2)mr(a,68005)|0;re(a);mr(a,134901)|0}l=i;return}function ne(a,b){a=a|0;b=b|0;mr(a,67971)|0;mr(a,oe(b)|0)|0;mr(a,134901)|0;return}function oe(a){a=a|0;return a|0}function pe(b){b=b|0;if(!(a[b+144>>0]|0))mr(b,68096)|0;else mr(b,c[b+148>>2]|0)|0;return}function qe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{mr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){mr(b,82272)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;sr(b,68547,f);break a}default:ma(123205,68014,49,68078)}while(0);l=g;return}function re(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[a+16>>2]|0;switch(c[f+12>>2]|0){case 8:{b=1;d=96273;e=f+8|0;break}case 10:{b=0;d=96273;e=f+8|0;break}case 3:case 2:case 9:{b=1;d=96237;e=f+8|0;break}case 7:case 6:case 11:{b=0;d=96237;e=f+8|0;break}case 0:{b=1;d=96286;e=f+8|0;break}case 4:{b=0;d=68050;e=f+8|0;break}case 1:{b=1;d=96286;e=f+8|0;break}case 5:{b=0;d=96286;e=f+8|0;break}default:ma(123205,68014,106,68033)}f=c[(c[e>>2]|0)+8>>2]|0;c[g>>2]=b;c[g+4>>2]=d;c[g+8>>2]=f;sr(a,68062,g);l=h;return}function se(a){a=a|0;var b=0;mr(a,70986)|0;mr(a,70994)|0;b=a+12|0;mr(a,De(c[c[c[b>>2]>>2]>>2]|0)|0)|0;mr(a,71014)|0;mr(a,De(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;mr(a,71024)|0;mr(a,De(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;mr(a,71027)|0;return}function te(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;d=c[b+16>>2]|0;c[41913]=~~(+h[b+232>>3]-+h[b+216>>3]);c[41912]=~~(+h[b+224>>3]-+h[b+208>>3]);mr(b,69673)|0;mr(b,69680)|0;d=Dn(c[d+8>>2]|0)|0;if(a[d>>0]|0){mr(b,69749)|0;mr(b,De(d)|0)|0;mr(b,69757)|0}c[e>>2]=O(c[b+168>>2]|0,c[b+164>>2]|0)|0;sr(b,69766,e);mr(b,69786)|0;mr(b,69821)|0;mr(b,69849)|0;mr(b,69855)|0;mr(b,69898)|0;mr(b,69939)|0;mr(b,69958)|0;mr(b,69975)|0;mr(b,70023)|0;mr(b,70076)|0;mr(b,70152)|0;mr(b,70228)|0;mr(b,70237)|0;mr(b,70260)|0;mr(b,70287)|0;mr(b,70340)|0;mr(b,70362)|0;mr(b,70407)|0;mr(b,70419)|0;mr(b,70429)|0;mr(b,70455)|0;mr(b,70340)|0;mr(b,70507)|0;mr(b,70407)|0;mr(b,70419)|0;mr(b,70551)|0;mr(b,70260)|0;mr(b,70287)|0;mr(b,70340)|0;mr(b,70507)|0;mr(b,70407)|0;mr(b,70419)|0;mr(b,70429)|0;mr(b,70455)|0;mr(b,70340)|0;mr(b,70362)|0;mr(b,70407)|0;mr(b,70419)|0;mr(b,70564)|0;mr(b,70572)|0;mr(b,70578)|0;mr(b,70592)|0;mr(b,70600)|0;mr(b,70633)|0;e=(c[41913]|0)+10|0;c[f>>2]=c[41912];c[f+4>>2]=e;sr(b,70710,f);mr(b,70740)|0;mr(b,70749)|0;mr(b,70807)|0;mr(b,70817)|0;mr(b,70882)|0;f=c[41913]|0;c[g>>2]=c[41912];c[g+4>>2]=f;sr(b,70919,g);g=c[41913]|0;c[i>>2]=c[41912];c[i+4>>2]=g;sr(b,70947,i);l=j;return}function ue(a){a=a|0;mr(a,69224)|0;mr(a,69236)|0;mr(a,69244)|0;mr(a,69307)|0;mr(a,69236)|0;mr(a,69352)|0;mr(a,69401)|0;mr(a,69455)|0;mr(a,69236)|0;mr(a,69555)|0;mr(a,69604)|0;mr(a,69236)|0;mr(a,69656)|0;return}function ve(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j+8|0;g=j;mr(b,69182)|0;if(d|0?a[d>>0]|0:0){c[g>>2]=De(d)|0;sr(b,69185,g)}if(e|0?a[e>>0]|0:0){c[h>>2]=De(e)|0;sr(b,69196,h)}if(f|0?a[f>>0]|0:0){c[i>>2]=De(f)|0;sr(b,69208,i)}mr(b,69221)|0;l=j;return}function we(a){a=a|0;mr(a,69176)|0;return}function xe(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=l;l=l+112|0;y=A+96|0;z=A+88|0;w=A+80|0;q=A+72|0;v=A+64|0;t=A+56|0;s=A+48|0;r=A+40|0;p=A+24|0;o=A+8|0;n=A;x=c[b+16>>2]|0;switch(a[f+48>>0]|0){case 108:{j=+h[e>>3];m=+h[f+32>>3];break}case 114:{m=+h[f+32>>3];j=+h[e>>3]-m;break}default:{m=+h[f+32>>3];j=+h[e>>3]-m*.5}}g=f+40|0;i=+h[g>>3];u=f+4|0;k=+h[(c[u>>2]|0)+16>>3];if(i<k){i=k*1.1+1.0;h[g>>3]=i}B=j+-8.0;k=+((c[41913]|0)>>>0)-+h[e+8>>3]-i+k*.2+(k<12.0?1.4:2.0);sr(b,68838,n);h[o>>3]=B;h[o+8>>3]=k;sr(b,68775,o);h[p>>3]=j+8.0+m-B;h[p+8>>3]=i;sr(b,68799,p);mr(b,68873)|0;mr(b,68907)|0;g=c[u>>2]|0;e=c[g+8>>2]|0;if(e){c[r>>2]=c[e+4>>2];sr(b,68997,r);g=c[e+8>>2]|0;if(g|0){c[s>>2]=g;sr(b,69016,s)}g=c[e+12>>2]|0;if(g|0){c[t>>2]=g;sr(b,69033,t)}g=c[e+16>>2]|0;if(g|0){c[v>>2]=g;sr(b,69051,v)}}else{c[q>>2]=c[g>>2];sr(b,68997,q)}h[w>>3]=+h[(c[u>>2]|0)+16>>3];sr(b,69067,w);g=x+16|0;switch(c[x+48>>2]|0){case 5:{g=c[g>>2]|0;if(iK(g,122106)|0){c[z>>2]=g;sr(b,69087,z)}break}case 1:{x=d[g+1>>0]|0;z=d[g+2>>0]|0;c[y>>2]=d[g>>0];c[y+4>>2]=x;c[y+8>>2]=z;sr(b,69097,y);break}default:ma(123205,68561,438,69118)}mr(b,69131)|0;mr(b,De(c[f>>2]|0)|0)|0;mr(b,69142)|0;mr(b,69165)|0;l=A;return}function ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;e=l;l=l+32|0;f=e+16|0;j=e;mr(a,68739)|0;m=+h[b>>3];i=+h[b+16>>3]-m;k=+h[b+24>>3];g=k-+h[b+8>>3];k=+((c[41913]|0)>>>0)-k;h[j>>3]=m-i;h[j+8>>3]=k;sr(a,68775,j);h[f>>3]=i*2.0;h[f+8>>3]=g*2.0;sr(a,68799,f);He(a,d);mr(a,68621)|0;Fe(a);mr(a,68827)|0;l=e;return}function ze(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+24|0;j=m+8|0;g=m;mr(a,68344)|0;n=c[41913]|0;c[g>>2]=c[41912];c[g+4>>2]=n;sr(a,68597,g);He(a,e);mr(a,68621)|0;Fe(a);mr(a,68624)|0;g=d+-1|0;e=0;while(1){if((e|0)>=(d|0))break;i=+h[b+(e<<4)>>3];f=+((c[41913]|0)>>>0)-+h[b+(e<<4)+8>>3];if(!e){mr(a,68651)|0;h[j>>3]=i;h[j+8>>3]=f;sr(a,68717,j);mr(a,68728)|0}else{h[k>>3]=i;h[k+8>>3]=f;sr(a,68717,k)}if((e|0)==(g|0))mr(a,68731)|0;e=e+1|0}mr(a,68460)|0;l=m;return}function Ae(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;f=l;l=l+16|0;e=f;mr(a,68344)|0;h=c[41913]|0;c[e>>2]=c[41912];c[e+4>>2]=h;sr(a,68597,e);He(a,g);mr(a,68621)|0;Fe(a);mr(a,68624)|0;Ie(a,b,d);mr(a,68637)|0;l=f;return}function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0.0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;f=k;mr(a,68344)|0;g=c[41913]|0;c[f>>2]=c[41912];c[f+4>>2]=g;sr(a,68381,f);mr(a,68421)|0;f=d+-1|0;g=b+8|0;e=0;while(1){if((e|0)>=(d|0))break;if(!e){mr(a,68433)|0;m=+((c[41913]|0)>>>0)-+h[g>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=m;sr(a,68437,i);mr(a,68448)|0}else{m=+((c[41913]|0)>>>0)-+h[b+(e<<4)+8>>3];h[j>>3]=+h[b+(e<<4)>>3];h[j+8>>3]=m;sr(a,68437,j)}if((e|0)==(f|0))mr(a,68452)|0;e=e+1|0}mr(a,68456)|0;Fe(a);mr(a,68460)|0;l=k;return}function Ce(a,b){a=a|0;b=b|0;mr(a,68279)|0;mr(a,De(b)|0)|0;mr(a,68291)|0;return}function De(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;e=u;d=c[41910]|0;if(!d){c[41911]=64;d=ww(64)|0;c[41910]=d}s=e+15|0;r=e+14|0;g=0;q=0;o=0;e=0;f=0;a:while(1){n=(o|0)!=0;k=g;p=b;j=e;b:while(1){if(!p){t=32;break a}e=a[p>>0]|0;if(!(e<<24>>24)){t=32;break a}b=c[41911]|0;if((q|0)>(b+-8|0)){d=b<<1;c[41911]=d;d=yw(c[41910]|0,d)|0;c[41910]=d;d=d+q|0;e=a[p>>0]|0}switch(e<<24>>24){case 60:{e=4;b=87187;t=26;break b}case 62:{e=4;b=87170;t=27;break b}case 38:{t=10;break b}case 45:{e=5;b=87181;i=j;break b}default:{}}if(n&e<<24>>24==32){t=12;break}switch(e<<24>>24){case 34:{e=6;b=87150;t=26;break b}case 39:{e=5;b=87175;t=27;break b}default:{}}if(e<<24>>24<0){i=127;b=0}else{e=1;b=p;t=26;break}while(1){g=i&255;h=e&255;if(g>>>0>=h>>>0)break;e=i&h&255;i=g>>>1;b=b+1|0}if((b|0)<=1){g=ON(j|0,f|0,6)|0;g=HN(g|0,z|0,e&255|0,0)|0;f=z;m=k+-1|0;if((k|0)>1){b=m;e=g}else{t=21;break}}else{b=b+-1|0;e=e&255;f=0}k=b;p=p+1|0;j=e}if((t|0)==10){t=0;b=(Ee(p)|0)==0;e=b?5:1;b=b?87164:p;i=j}else if((t|0)==12){t=0;b=(a[o>>0]|0)==32;e=b?6:1;b=b?87157:p;i=j}else if((t|0)==21){t=0;a[s>>0]=59;e=3;h=r;i=g;j=f;while(1){b=MN(i|0,j|0,10,0)|0;g=h+-1|0;a[h>>0]=b|48;b=i;i=LN(i|0,j|0,10,0)|0;f=j;j=z;o=e;e=e+1|0;if((o|0)>11){t=23;break a}if(!(f>>>0>0|(f|0)==0&b>>>0>9))break;else h=g}b=h+-2|0;a[g>>0]=35;a[b>>0]=38;k=m;f=j}else if((t|0)==26){t=0;i=j}else if((t|0)==27){t=0;i=j}h=d+e|0;g=e;while(1){if(!g)break;a[d>>0]=a[b>>0]|0;g=g+-1|0;b=b+1|0;d=d+1|0}g=k;b=p+1|0;q=e+q|0;o=p;d=h;e=i}if((t|0)==23){XL(68297,46,1,c[13918]|0)|0;Ma(1)}else if((t|0)==32){a[d>>0]=0;l=u;return c[41910]|0}return 0}function Ee(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function Fe(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;d=k+8|0;j=k;i=c[a+16>>2]|0;mr(a,68472)|0;e=d;f=i+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Ge(a,d);b=+h[i+152>>3];if(b!=1.0){h[j>>3]=b;sr(a,68490,j)}switch(c[i+144>>2]|0){case 1:{mr(a,68507)|0;break}case 2:{mr(a,68525)|0;break}default:{}}mr(a,68542)|0;l=k;return}function Ge(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{mr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){mr(b,120501)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;sr(b,68547,f);break a}default:ma(123205,68561,94,68581)}while(0);l=g;return}function He(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;if(!b)mr(a,68700)|0;else{d=c[a+16>>2]|0;mr(a,68670)|0;b=f;d=d+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ge(a,f);mr(a,68697)|0}l=g;return}function Ie(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+32|0;g=i;e=68651;f=0;while(1){if((f|0)>=(d|0))break;k=+h[b+(f<<4)>>3];j=+((c[41913]|0)>>>0)-+h[b+(f<<4)+8>>3];c[g>>2]=e;h[g+8>>3]=k;h[g+16>>3]=j;sr(a,68654,g);e=(f|0)==0?68667:174181;f=f+1|0}mr(a,83714)|0;l=i;return}function Je(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+8|0;e=b;mr(a,73284)|0;mr(a,73299)|0;mr(a,73338)|0;mr(a,73387)|0;c[e>>2]=122106;c[e+4>>2]=73475;sr(a,73456,e);c[d>>2]=121990;c[d+4>>2]=73481;sr(a,73456,d);l=b;return}function Ke(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;b=l;l=l+64|0;d=b+8|0;j=b;c[j>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;sr(a,72237,j);i=+h[a+368>>3]*.5*+h[a+488>>3];g=+h[a+376>>3]*.5*+h[a+496>>3];f=+J(+(i*2.0000000949949026e-03))*180.0*.6366197723675814;e=+J(+(g*2.0000000949949026e-03))*180.0*.6366197723675814;h[d>>3]=i;h[d+8>>3]=g;h[d+16>>3]=-500.0;h[d+24>>3]=i;h[d+32>>3]=g;h[d+40>>3]=0.0;h[d+48>>3]=(f>e?f:e)*1.2;sr(a,72259,d);mr(a,72406)|0;mr(a,73236)|0;l=b;return}function Le(a){a=a|0;mr(a,72220)|0;return}function Me(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0;f=l;l=l+16|0;h=f;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=e;sr(a,72190,h);g[41914]=+(O(d,-10)|0);l=f;return}function Ne(a){a=a|0;mr(a,72173)|0;return}function Oe(a){a=a|0;mr(a,72155)|0;return}function Pe(a){a=a|0;mr(a,72139)|0;return}function Qe(a){a=a|0;mr(a,72118)|0;g[41914]=+g[41914]+-2.0;return}function Re(a){a=a|0;mr(a,72099)|0;return}function Se(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;sr(a,72077,d);l=b;return}function Te(a){a=a|0;mr(a,72061)|0;return}function Ue(a){a=a|0;mr(a,72043)|0;g[41914]=+g[41914]+-5.0;return}function Ve(a){a=a|0;mr(a,72027)|0;g[41914]=+g[41914]+5.0;return}function We(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;r=l;l=l+144|0;o=r+104|0;q=r+56|0;m=r+32|0;j=r+24|0;n=r;p=e+4|0;i=c[p>>2]|0;f=+h[i+16>>3];i=c[i>>2]|0;c[n>>2]=c[e>>2];h[n+8>>3]=f;c[n+16>>2]=i;sr(b,71873,n);g[41915]=+g[41914]+-9.0;switch(a[e+48>>0]|0){case 108:{f=+h[d>>3];break}case 114:{i=d;f=+h[d>>3]-+h[e+32>>3];k=5;break}default:{i=d;f=+h[d>>3]-+h[e+32>>3]*.5;k=5}}if((k|0)==5)h[i>>3]=f;u=+h[b+488>>3];t=(+h[b+504>>3]+f)*u;s=(+h[b+512>>3]+ +h[d+8>>3])*+h[b+496>>3];h[j>>3]=+h[(c[p>>2]|0)+16>>3]*u;n=af(b,71925,j)|0;f=+(c[b+360>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=f;i=af(b,71142,m)|0;f=+g[41915];h[o>>3]=t;h[o+8>>3]=s;h[o+16>>3]=f;d=af(b,71174,o)|0;j=o;k=(c[b+16>>2]|0)+16|0;m=j+40|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(m|0));o=bf(b,o,0.0)|0;e=c[e>>2]|0;c[q>>2]=c[c[p>>2]>>2];h[q+8>>3]=.25;h[q+16>>3]=0.0;c[q+24>>2]=e;c[q+28>>2]=72012;c[q+32>>2]=n;c[q+36>>2]=i;c[q+40>>2]=d;c[q+44>>2]=o;q=af(b,71937,q)|0;mr(b,q)|0;_I(q);_I(i);_I(o);_I(d);_I(n);l=r;return}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=l;l=l+240|0;x=z+192|0;y=z+152|0;t=z+128|0;r=z+104|0;o=z+80|0;n=z+48|0;e=z+24|0;m=z;mr(a,71750)|0;g[41915]=+g[41914]+-6.0;i=+h[b>>3];j=+h[a+488>>3];p=(+h[a+504>>3]+i)*j;A=+h[b+8>>3];k=+h[a+496>>3];q=(+h[a+512>>3]+A)*k;j=(+h[b+16>>3]-i)*j;k=(+h[b+24>>3]-A)*k;s=a+16|0;A=k+j;i=+h[(c[s>>2]|0)+152>>3]/A*2.5;h[m>>3]=j;h[m+8>>3]=A*.25;h[m+16>>3]=k;b=af(a,71110,m)|0;m=a+360|0;A=+(c[m>>2]|0);h[e>>3]=90.0;h[e+8>>3]=0.0;h[e+16>>3]=A;e=af(a,71142,e)|0;A=+g[41915];h[x>>3]=p;h[x+8>>3]=q;h[x+16>>3]=A;f=af(a,71174,x)|0;u=x;v=(c[s>>2]|0)+16|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=bf(a,x,0.0)|0;h[n>>3]=1.0;h[n+8>>3]=i;c[n+16>>2]=b;c[n+20>>2]=e;c[n+24>>2]=f;c[n+28>>2]=v;w=af(a,71765,n)|0;mr(a,w)|0;_I(b);_I(e);_I(f);_I(v);_I(w);if(d|0){h[o>>3]=j;h[o+8>>3]=k;h[o+16>>3]=1.0;f=af(a,71110,o)|0;A=+(c[m>>2]|0);h[r>>3]=0.0;h[r+8>>3]=0.0;h[r+16>>3]=A;e=af(a,71142,r)|0;A=+g[41915];h[t>>3]=p;h[t+8>>3]=q;h[t+16>>3]=A;b=af(a,71174,t)|0;u=x;v=(c[s>>2]|0)+56|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));x=bf(a,x,0.0)|0;h[y>>3]=0.0;h[y+8>>3]=0.0;h[y+16>>3]=0.0;c[y+24>>2]=f;c[y+28>>2]=e;c[y+32>>2]=b;c[y+36>>2]=x;y=af(a,71811,y)|0;mr(a,y)|0;_I(f);_I(e);_I(b);_I(x);_I(y)}l=z;return}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0.0;K=l;l=l+336|0;B=K+296|0;J=K+288|0;I=K+272|0;H=K+264|0;G=K+240|0;D=K+232|0;A=K+208|0;z=K+184|0;w=K+160|0;v=K+152|0;u=K+136|0;t=K+128|0;s=K+96|0;r=K+88|0;q=K+56|0;f=K+48|0;m=K+24|0;k=K;mr(a,71615)|0;g[41915]=+g[41914]+-2.0;o=a+488|0;p=a+496|0;L=+h[p>>3];h[k>>3]=+h[o>>3];h[k+8>>3]=L;h[k+16>>3]=1.0;k=af(a,71110,k)|0;y=a+360|0;L=+(c[y>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=L;m=af(a,71142,m)|0;L=+g[41915]+-2.0;h[B>>3]=0.0;h[B+8>>3]=0.0;h[B+16>>3]=L;n=af(a,71174,B)|0;C=a+16|0;i=B;j=(c[C>>2]|0)+16|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=bf(a,B,0.0)|0;c[f>>2]=71237;c[f+4>>2]=d+1;E=a+504|0;F=a+512|0;i=0;f=af(a,71206,f)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];L=+h[(c[C>>2]|0)+152>>3];h[q>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[q+8>>3]=N;h[q+16>>3]=0.0;h[q+24>>3]=L;M=af(a,71251,q)|0;c[r>>2]=f;c[r+4>>2]=M;x=af(a,71280,r)|0;_I(M);_I(f);i=i+1|0;f=x}L=+h[F>>3]+ +h[b+8>>3];N=+h[(c[C>>2]|0)+152>>3];h[s>>3]=+h[E>>3]+ +h[b>>3];h[s+8>>3]=L;h[s+16>>3]=0.0;h[s+24>>3]=N;x=af(a,71251,s)|0;c[t>>2]=f;c[t+4>>2]=x;M=af(a,71280,t)|0;_I(x);_I(f);c[u>>2]=k;c[u+4>>2]=m;c[u+8>>2]=n;c[u+12>>2]=j;x=af(a,71630,u)|0;c[v>>2]=M;c[v+4>>2]=x;M=af(a,71335,v)|0;_I(x);mr(a,M)|0;_I(k);_I(m);_I(n);_I(j);_I(M);if(e|0){N=+h[p>>3];h[w>>3]=+h[o>>3];h[w+8>>3]=N;h[w+16>>3]=1.0;n=af(a,71110,w)|0;N=+(c[y>>2]|0);h[z>>3]=0.0;h[z+8>>3]=0.0;h[z+16>>3]=N;m=af(a,71142,z)|0;N=+g[41915]+-2.0;h[A>>3]=0.0;h[A+8>>3]=0.0;h[A+16>>3]=N;k=af(a,71174,A)|0;i=B;j=(c[C>>2]|0)+56|0;x=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(x|0));j=bf(a,B,.25)|0;c[D>>2]=d;i=0;f=af(a,71675,D)|0;while(1){if((i|0)>=(d|0))break;N=+h[F>>3]+ +h[b+(i<<4)+8>>3];h[G>>3]=+h[E>>3]+ +h[b+(i<<4)>>3];h[G+8>>3]=N;h[G+16>>3]=0.0;D=af(a,71690,G)|0;c[H>>2]=f;c[H+4>>2]=D;M=af(a,71712,H)|0;_I(D);_I(f);i=i+1|0;f=M}c[I>>2]=n;c[I+4>>2]=m;c[I+8>>2]=k;c[I+12>>2]=j;I=af(a,71722,I)|0;c[J>>2]=f;c[J+4>>2]=I;M=af(a,71335,J)|0;_I(I);mr(a,M)|0;_I(n);_I(m);_I(k);_I(j);_I(M)}l=K;return}function Ze(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=l;l=l+208|0;e=B+160|0;A=B+152|0;z=B+136|0;y=B+128|0;x=B+96|0;w=B+88|0;v=B+56|0;k=B+48|0;s=B+24|0;r=B;mr(a,71542)|0;g[41915]=+g[41914]+-4.0;C=+h[a+496>>3];h[r>>3]=+h[a+488>>3];h[r+8>>3]=C;h[r+16>>3]=1.0;r=af(a,71110,r)|0;C=+(c[a+360>>2]|0);h[s>>3]=0.0;h[s+8>>3]=0.0;h[s+16>>3]=C;s=af(a,71142,s)|0;C=+g[41915]+-2.0;h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=C;t=af(a,71174,e)|0;u=a+16|0;f=e;i=(c[u>>2]|0)+56|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));n=bf(a,e,0.0)|0;c[k>>2]=71556;c[k+4>>2]=d+2;o=a+504|0;p=a+512|0;q=d+-1|0;m=0;e=af(a,71206,k)|0;while(1){if((m|0)>=(d|0))break;f=b+(m<<4)|0;i=b+(m<<4)+8|0;D=+h[p>>3]+ +h[i>>3];C=+h[(c[u>>2]|0)+152>>3];h[v>>3]=+h[o>>3]+ +h[f>>3];h[v+8>>3]=D;h[v+16>>3]=0.0;h[v+24>>3]=C;k=af(a,71251,v)|0;c[w>>2]=e;c[w+4>>2]=k;j=af(a,71280,w)|0;_I(k);_I(e);if((m|0)==0|(m|0)==(q|0)){C=+h[p>>3]+ +h[i>>3];D=+h[(c[u>>2]|0)+152>>3];h[x>>3]=+h[o>>3]+ +h[f>>3];h[x+8>>3]=C;h[x+16>>3]=0.0;h[x+24>>3]=D;k=af(a,71251,x)|0;c[y>>2]=j;c[y+4>>2]=k;e=af(a,71280,y)|0;_I(k);_I(j)}else e=j;m=m+1|0}c[z>>2]=r;c[z+4>>2]=s;c[z+8>>2]=t;c[z+12>>2]=n;b=af(a,71565,z)|0;c[A>>2]=e;c[A+4>>2]=b;d=af(a,71335,A)|0;_I(b);mr(a,d)|0;_I(r);_I(s);_I(t);_I(n);_I(d);l=B;return}function _e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0;v=l;l=l+160|0;e=v+120|0;u=v+112|0;t=v+96|0;s=v+88|0;r=v+56|0;m=v+48|0;n=v+24|0;q=v;mr(a,71094)|0;g[41915]=+g[41914]+-6.0;w=+h[a+496>>3];h[q>>3]=+h[a+488>>3];h[q+8>>3]=w;h[q+16>>3]=1.0;q=af(a,71110,q)|0;w=+(c[a+360>>2]|0);h[n>>3]=0.0;h[n+8>>3]=0.0;h[n+16>>3]=w;n=af(a,71142,n)|0;w=+g[41915];h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=w;o=af(a,71174,e)|0;p=a+16|0;f=e;i=(c[p>>2]|0)+16|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));i=bf(a,e,0.0)|0;c[m>>2]=71237;c[m+4>>2]=d;j=a+504|0;k=a+512|0;f=0;e=af(a,71206,m)|0;while(1){if((f|0)>=(d|0))break;y=+h[k>>3]+ +h[b+(f<<4)+8>>3];w=+h[(c[p>>2]|0)+152>>3];h[r>>3]=+h[j>>3]+ +h[b+(f<<4)>>3];h[r+8>>3]=y;h[r+16>>3]=0.0;h[r+24>>3]=w;x=af(a,71251,r)|0;c[s>>2]=e;c[s+4>>2]=x;m=af(a,71280,s)|0;_I(x);_I(e);f=f+1|0;e=m}c[t>>2]=q;c[t+4>>2]=n;c[t+8>>2]=o;c[t+12>>2]=i;t=af(a,71289,t)|0;c[u>>2]=e;c[u+4>>2]=t;x=af(a,71335,u)|0;_I(t);mr(a,x)|0;_I(q);_I(n);_I(o);_I(i);_I(x);l=v;return}function $e(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;sr(a,71075,e);l=d;return}function af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;h=i;e=i+24|0;f=i+8|0;c[f>>2]=d;g=LK(e,1024,b,f)|0;do if((g|0)>=0)if((g|0)>1023){a=ZI(g+1|0)|0;c[f>>2]=d;qL(a,b,f)|0;break}else{a=GL(e)|0;break}else{a=c[(c[a+12>>2]|0)+16>>2]|0;c[h>>2]=yJ(c[(jJ()|0)>>2]|0)|0;hb[a&31](71520,h);a=GL(174181)|0}while(0);l=i;return a|0}function bf(a,b,e){a=a|0;b=b|0;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+112|0;o=q+104|0;j=q+96|0;i=q+64|0;n=q+48|0;p=q+32|0;m=q+16|0;k=q;g=c[b+32>>2]|0;a:do switch(g|0){case 5:{f=c[b>>2]|0;if(!(xJ(f,121094)|0)){c[k>>2]=71357;h[k+8>>3]=e;f=af(a,71340,k)|0;break a}if(!(xJ(f,118224)|0)){c[m>>2]=71361;h[m+8>>3]=e;f=af(a,71340,m)|0;break a}if(!(xJ(f,116223)|0)){c[p>>2]=71367;h[p+8>>3]=e;f=af(a,71340,p)|0;break a}else{c[n>>2]=f;h[n+8>>3]=e;f=af(a,71340,n)|0;break a}}case 1:{s=+(d[b+1>>0]|0)*.00390625;r=+(d[b+2>>0]|0)*.00390625;h[i>>3]=+(d[b>>0]|0)*.00390625;h[i+8>>3]=s;h[i+16>>3]=r;h[i+24>>3]=e;f=af(a,71372,i)|0;break}default:{p=c[13918]|0;n=c[b>>2]|0;c[j>>2]=g;c[j+4>>2]=n;zL(p,71411,j)|0;ma(123205,71461,436,71481)}}while(0);c[o>>2]=f;p=af(a,71498,o)|0;_I(f);l=q;return p|0}function cf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;h=c[c[a+12>>2]>>2]|0;j=c[h>>2]|0;i=c[h+4>>2]|0;h=c[h+8>>2]|0;c[g>>2]=73927;c[g+4>>2]=j;c[g+8>>2]=i;c[g+12>>2]=h;sr(a,76546,g);f=Dn(c[f+8>>2]|0)|0;c[e>>2]=73927;c[e+4>>2]=f;sr(a,76578,e);c[d>>2]=73927;sr(a,76592,d);l=b;return}function df(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=73927;sr(a,76494,d);l=b;return}function ef(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+304|0;V=W+296|0;U=W+288|0;T=W+272|0;R=W+264|0;Q=W+256|0;P=W+248|0;O=W+240|0;N=W+232|0;M=W+224|0;L=W+216|0;K=W+208|0;J=W+200|0;I=W+192|0;H=W+184|0;G=W+176|0;F=W+168|0;E=W+160|0;C=W+152|0;A=W+144|0;z=W+136|0;y=W+128|0;x=W+120|0;w=W+112|0;v=W+104|0;u=W+96|0;t=W+88|0;s=W+80|0;r=W+72|0;q=W+64|0;p=W+56|0;o=W+48|0;S=W+40|0;B=W+24|0;n=W+16|0;m=W;g=c[a+456>>2]|0;i=c[a+460>>2]|0;j=c[a+464>>2]|0;k=c[a+468>>2]|0;f=a+360|0;a:do if(c[4007]|0){switch(c[f>>2]|0){case 90:case 0:break a;default:{}}rf();c[4007]=0}while(0);e=(+(k|0)-+(i|0))*.013888888888888888;b=(+(j|0)-+(g|0))*.013888888888888888;k=(c[f>>2]|0)==90;d=k?e:b;e=k?b:e;h[m>>3]=d;h[m+8>>3]=e;sr(a,74114,m);c[n>>2]=73927;sr(a,74129,n);if(d>0.0){b=+FJ(d);h[16877]=b;b=b+3.0-+(~~b|0)}else b=3.0;b=+D(10.0,+b);h[16877]=b;h[B>>3]=b;h[B+8>>3]=b;sr(a,74298,B);c[S>>2]=73927;sr(a,74333,S);c[o>>2]=73927;sr(a,74391,o);c[p>>2]=73927;sr(a,74451,p);c[q>>2]=73927;sr(a,74500,q);c[r>>2]=73927;sr(a,74539,r);c[s>>2]=73927;sr(a,74590,s);c[t>>2]=73927;sr(a,74652,t);c[u>>2]=73927;sr(a,74762,u);c[v>>2]=73927;sr(a,74853,v);c[w>>2]=73927;sr(a,74907,w);c[x>>2]=73927;sr(a,74976,x);sr(a,75012,y);c[z>>2]=73927;sr(a,75137,z);c[A>>2]=73927;sr(a,75166,A);sr(a,75206,C);c[E>>2]=73927;sr(a,75299,E);c[F>>2]=73927;sr(a,75358,F);c[G>>2]=73927;sr(a,75439,G);sr(a,75509,H);c[I>>2]=73927;sr(a,75598,I);c[J>>2]=73927;sr(a,75703,J);c[K>>2]=73927;sr(a,75779,K);c[L>>2]=73927;sr(a,75818,L);c[M>>2]=73927;sr(a,75917,M);c[N>>2]=73927;sr(a,75963,N);sr(a,76052,O);c[P>>2]=73927;sr(a,76093,P);c[Q>>2]=73927;sr(a,76176,Q);c[R>>2]=73927;sr(a,76277,R);h[T>>3]=e;h[T+8>>3]=d;sr(a,76341,T);sr(a,76369,U);sr(a,76377,V);l=W;return}function ff(a){a=a|0;var b=0;b=l;l=l+16|0;sr(a,74107,b);l=b;return}function gf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0;r=l;l=l+48|0;q=r+24|0;p=r+8|0;o=r;switch(a[e+48>>0]|0){case 108:{k=d;i=+h[e+32>>3];j=+h[d>>3];break}case 114:{i=+h[e+32>>3];g=i;f=5;break}default:{i=+h[e+32>>3];g=i*.5;f=5}}if((f|0)==5){j=+h[d>>3]-g;h[d>>3]=j;k=d}m=e+4|0;f=c[m>>2]|0;g=+h[f+16>>3];d=d+8|0;n=+h[d>>3]+g*.004629629629629629;h[d>>3]=n;i=j+i*.006944444444444444;h[k>>3]=i;f=c[f>>2]|0;do if(f){d=c[41916]|0;if(d|0?(xJ(d,f)|0)==0:0)break;c[o>>2]=pf(f)|0;sr(b,74006,o);o=c[m>>2]|0;c[41916]=c[o>>2];g=+h[o+16>>3]}while(0);f=~~g;f=(f|0)>1?f:1;if((f|0)!=(c[41917]|0)){j=+h[16877];c[p>>2]=f;h[p+8>>3]=j;sr(b,74014,p);c[41917]=f}c[q>>2]=qf(c[e>>2]|0)|0;h[q+8>>3]=i;h[q+16>>3]=n;sr(b,74035,q);l=r;return}function hf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[b>>3];k=(+h[b+16>>3]-i)*.027777777777777776;g=+h[b+8>>3];j=(+h[b+24>>3]-g)*.027777777777777776;c[f>>2]=1;c[f+4>>2]=d|0?73948:174181;h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i*.013888888888888888;h[f+32>>3]=g*.013888888888888888;sr(a,73954,f);l=e;return}function jf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=l;l=l+16|0;nf(c[a+16>>2]|0,e+8|0,e);of(a,b,d,1);l=e;return}function kf(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0;t=l;l=l+128|0;s=t+112|0;q=t+104|0;p=t+96|0;e=t+88|0;n=t+16|0;o=t;k=c[a+16>>2]|0;j=ZI((d*140|0)+140|0)|0;nf(k,t+116|0,t+80|0);v=+h[b>>3];k=n+48|0;h[k>>3]=v;u=+h[b+8>>3];h[n+56>>3]=u;c[e>>2]=~~(v+(v>=0.0?.5:-.5));c[e+4>>2]=~~(u+(u>=0.0?.5:-.5));i=o+8|0;e=j+(pL(j,73932,e)|0)|0;r=1;g=0;while(1){m=g+3|0;if((m|0)>=(d|0))break;c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];f=1;while(1){if((f|0)==4){f=1;break}w=f+g|0;h[n+(f<<4)>>3]=+h[b+(w<<4)>>3];h[n+(f<<4)+8>>3]=+h[b+(w<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;PA(o,n,3,+(f|0)*.16666666666666666,0,0);u=+h[o>>3];v=+h[i>>3];c[p>>2]=~~(u+(u>=0.0?.5:-.5));c[p+4>>2]=~~(v+(v>=0.0?.5:-.5));f=f+1|0;e=e+(pL(e,73932,p)|0)|0}r=r+6|0;g=m}c[q>>2]=j;sr(a,73939,q);_I(j);f=r+-1|0;e=0;while(1){if((e|0)>=(r|0))break;c[s>>2]=((e|0)%(f|0)|0|0)!=0&1;sr(a,73944,s);e=e+1|0}mr(a,134901)|0;l=t;return}function lf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=l;l=l+16|0;nf(c[a+16>>2]|0,e+8|0,e);of(a,b,d,0);l=e;return}function mf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=73927;c[e+4>>2]=b;sr(a,73920,e);l=d;return}function nf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function of(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));sr(a,73932,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));sr(a,73932,i)}mr(a,134901)|0;l=j;return}function pf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;a:while(1){d=15756;while(1){e=c[d+4>>2]|0;if(!e)break;if(!(xJ(e,b)|0)){g=6;break a}d=d+8|0}c[f>>2]=74088;c[f+4>>2]=b;_l(1,74062,f)|0;d=HL(b,45)|0;if(!d){d=74105;break}a[d>>0]=0}l=h;return d|0}function qf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41918]|0;if(!d){c[41919]=64;d=ZI(64)|0;c[41918]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41919]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41919]=d;d=aJ(c[41918]|0,d)|0;c[41918]=d;d=d+e|0}if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;pL(d+1|0,74057,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=d+1|0}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41918]|0}function rf(){var a=0,b=0;a=l;l=l+16|0;b=a;c[b>>2]=74088;c[b+4>>2]=76485;_l(0,76467,b)|0;l=a;return}function sf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;e=l;l=l+32|0;f=e+8|0;j=e;b=b+8|0;k=c[b>>2]|0;c[j>>2]=k;c[j+4>>2]=k;sr(a,77065,j);i=(+h[d>>3]+ +h[d+16>>3])*.5;g=(+h[d+8>>3]+ +h[d+24>>3])*.5;c[f>>2]=c[b>>2];h[f+8>>3]=i;h[f+16>>3]=g;sr(a,77107,f);l=e;return}function tf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[d>>3];k=+h[d+16>>3]-i;g=+h[d+24>>3];j=g-+h[d+8>>3];g=+(~~(+h[a+232>>3]-+h[a+216>>3])>>>0)-g;c[f>>2]=c[b+8>>2];h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i;h[f+32>>3]=g;sr(a,77152,f);mr(a,77244)|0;l=e;return}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function vf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+160|0;s=t+152|0;r=t+136|0;q=t+120|0;k=t+112|0;n=t+104|0;m=t+88|0;j=t+72|0;i=t+64|0;o=t;if(!a)ma(96061,77249,212,77268);if(!b)ma(96091,77249,213,77268);p=b+8|0;if(!(c[p>>2]|0))ma(96094,77249,214,77268);if(c[b+52>>2]|0){c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];b=o+32|0;d=d+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];f=+h[o>>3];h[o+16>>3]=f;h[o+24>>3]=+h[o+40>>3];h[o+48>>3]=+h[b>>3];g=+h[o+8>>3];h[o+56>>3]=g;if(e<<24>>24){sr(a,77289,i);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[j>>3]=+h[o+(b<<4)>>3];h[j+8>>3]=u;sr(a,77292,j);b=b+1|0}h[m>>3]=f;h[m+8>>3]=g;sr(a,77292,m);m=c[p>>2]|0;c[n>>2]=4;c[n+4>>2]=m;sr(a,77299,n)}sr(a,77289,k);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[q>>3]=+h[o+(b<<4)>>3];h[q+8>>3]=u;sr(a,77292,q);b=b+1|0}h[r>>3]=f;h[r+8>>3]=g;sr(a,77292,r);r=c[p>>2]|0;c[s>>2]=4;c[s+4>>2]=r;sr(a,77314,s)}l=t;return}function wf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+112|0;n=o+24|0;m=o+16|0;k=o;i=o+28|0;if(!b)ma(96061,77249,153,77330);if(!d)ma(96091,77249,154,77330);if(!(c[d+8>>2]|0))ma(96094,77249,155,77330);j=d+52|0;if(c[j>>2]|0){f=d+60|0;g=c[f>>2]|0;if((g|0)==84)g=18;else{gb[g&127](d);c[j>>2]=0;c[f>>2]=0;c[d+56>>2]=0;g=10}}else g=10;do if((g|0)==10){if(!((Mr(d)|0)<<24>>24))break;f=zN(c[d+20>>2]|0)|0;if((c[d+24>>2]&-2|0)==6){_L(f,i)|0;i=c[i+36>>2]|0;c[d+56>>2]=i;f=pJ(0,i,1,1,f,0)|0;c[j>>2]=f;a[d+16>>0]=1}else f=c[j>>2]|0;if(f|0)c[d+60>>2]=84;Nr(d);if(c[j>>2]|0)g=18}while(0);if((g|0)==18){p=+h[e+8>>3]-+(c[d+36>>2]|0);h[k>>3]=+h[e>>3]-+(c[d+32>>2]|0);h[k+8>>3]=p;sr(b,77348,k);if(!(a[d+16>>0]|0)){c[m>>2]=c[d+12>>2];sr(b,77379,m)}else fy(b,d);sr(b,77394,n)}l=o;return}function xf(a){a=a|0;nJ(c[a+52>>2]|0,c[a+56>>2]|0)|0;return}function yf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+80|0;f=g+48|0;if(!a)ma(96061,77249,121,77404);e=c[a+16>>2]|0;if(!e)ma(84921,77249,123,77404);if(!b)ma(96091,77249,124,77404);d=b+8|0;if(!(c[d>>2]|0))ma(96094,77249,125,77404);if(!(c[e+8>>2]|0))ma(123690,77249,128,77404);else{sr(a,77424,g);sr(a,77433,g+8|0);sr(a,77460,g+16|0);sr(a,77485,g+24|0);sr(a,77514,g+32|0);sr(a,77542,g+40|0);c[f>>2]=c[d>>2];sr(a,77549,f);sr(a,77588,g+56|0);sr(a,95830,g+64|0);l=g;return}}function zf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0;i=l;l=l+128|0;g=i+80|0;f=i;if(!a)ma(96061,77249,97,77593);if(!b)ma(96091,77249,98,77593);e=c[b+8>>2]|0;if(!e)ma(96094,77249,99,77593);else{m=+h[d>>3];j=~~(m+(m>=0.0?.5:-.5));m=+h[d+8>>3];b=~~(m+(m>=0.0?.5:-.5));m=+h[d+16>>3];k=~~(m+(m>=0.0?.5:-.5));m=+h[d+24>>3];d=~~(m+(m>=0.0?.5:-.5));c[f>>2]=2;c[f+4>>2]=5;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=-1;c[f+24>>2]=1;c[f+28>>2]=-1;c[f+32>>2]=0;h[f+40>>3]=0.0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=5;c[f+72>>2]=0;c[f+76>>2]=e;sr(a,77612,f);c[g>>2]=j;c[g+4>>2]=b;c[g+8>>2]=j;c[g+12>>2]=d;c[g+16>>2]=k;c[g+20>>2]=d;c[g+24>>2]=k;c[g+28>>2]=b;c[g+32>>2]=j;c[g+36>>2]=b;sr(a,77670,g);l=i;return}}function Af(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;o=l;l=l+96|0;n=o+56|0;m=o+32|0;k=o;i=+h[d>>3];j=+h[d+16>>3]-i;f=+h[d+24>>3];g=f-+h[d+8>>3];if(!a)ma(96061,77249,53,77702);if(!b)ma(96091,77249,54,77702);e=b+8|0;if(!(c[e>>2]|0))ma(96094,77249,55,77702);mr(a,77721)|0;mr(a,c[e>>2]|0)|0;e=a+360|0;f=-f;if(!(c[e>>2]|0)){h[n>>3]=j;h[n+8>>3]=g;h[n+16>>3]=i;h[n+24>>3]=f;sr(a,77850,n)}else{h[k>>3]=g;h[k+8>>3]=j;h[k+16>>3]=i;h[k+24>>3]=f;sr(a,77741,k);c[m>>2]=c[e>>2];h[m+8>>3]=i;h[m+16>>3]=f;sr(a,77820,m)}mr(a,77929)|0;l=o;return}function Bf(a){a=a|0;var b=0,c=0;b=co(a)|0;while(1){if(!b)break;Cf(b);b=eo(a,b)|0}c=co(a)|0;while(1){if(!c)break;b=Pm(a,c)|0;while(1){if(!b)break;Df(b);b=Rm(a,b)|0}c=eo(a,c)|0}return}function Cf(a){a=a|0;var b=0,d=0;No(a,122241,304,1)|0;WA(a);KB(a,c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&1);a=a+16|0;c[(c[a>>2]|0)+176>>2]=0;b=vw(20)|0;d=c[a>>2]|0;c[d+172>>2]=b;c[d+184>>2]=0;d=vw(20)|0;b=c[a>>2]|0;c[b+180>>2]=d;c[b+200>>2]=0;b=vw(12)|0;d=c[a>>2]|0;c[d+196>>2]=b;c[d+192>>2]=0;d=vw(12)|0;b=c[a>>2]|0;c[b+188>>2]=d;c[b+208>>2]=0;b=vw(12)|0;a=c[a>>2]|0;c[a+204>>2]=b;c[a+216>>2]=1;return}function Df(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;No(d,122254,176,1)|0;XA(d)|0;h=DA(d,c[42218]|0,1,0)|0;g=d+16|0;c[(c[g>>2]|0)+156>>2]=h;h=FA(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,c[42212]|0,174181)|0;i=FA(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,c[42212]|0,174181)|0;e=c[g>>2]|0;f=e+154|0;b[f>>1]=1;b[e+168>>1]=1;if((h|0)==(i|0)&(a[h>>0]|0)!=0){b[f>>1]=1e3;i=e+156|0;c[i>>2]=(c[i>>2]|0)*100}if(zk(d)|0){i=c[g>>2]|0;b[i+154>>1]=0;c[i+156>>2]=0}i=(DA(d,c[42231]|0,0,0)|0)&255;a[(c[g>>2]|0)+152>>0]=i;i=(DA(d,c[42219]|0,1,0)|0)&65535;b[(c[g>>2]|0)+170>>1]=i;return}function Ef(a){a=a|0;var b=0,d=0;Ff(c[(c[a+16>>2]|0)+192>>2]|0);d=co(a)|0;while(1){if(!d)break;b=Pm(a,d)|0;while(1){if(!b)break;rB(b);b=Rm(a,b)|0}Gf(d);d=eo(a,d)|0}Hf(a);return}function Ff(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){if(!b)break;f=b+16|0;g=c[(c[f>>2]|0)+164>>2]|0;If(b);d=c[f>>2]|0;if((a[d+156>>0]|0)!=1){b=g;continue}e=c[d+180>>2]|0;if(e){_I(e);d=c[f>>2]|0}e=c[d+172>>2]|0;if(e){_I(e);d=c[f>>2]|0}_I(d);_I(b);b=g}return}function Gf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+172>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+180>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+188>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+196>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+204>>2]|0;if(d){_I(d);b=c[e>>2]|0}ow(c[b+104>>2]|0);ow(c[(c[e>>2]|0)+108>>2]|0);b=c[(c[e>>2]|0)+8>>2]|0;if(b|0)gb[c[(c[b+4>>2]|0)+4>>2]&127](a);Po(a,122241)|0;return}function Hf(a){a=a|0;var d=0,e=0,f=0;d=Jp(a)|0;while(1){if(!d)break;Hf(d);d=Kp(d)|0}if(No(a,122277,0,1)|0){f=a+16|0;d=c[f>>2]|0;e=c[d+184>>2]|0;if(e){_I(e);d=c[f>>2]|0}e=c[d+268>>2]|0;if(e){_I(e);d=c[f>>2]|0}e=c[d+216>>2]|0;if(e){_I(e);d=c[f>>2]|0}do if(c[d+196>>2]|0){e=b[d+236>>1]|0;while(1){if((e|0)>(b[d+238>>1]|0))break;_I(c[(c[d+196>>2]|0)+(e<<6)+12>>2]|0);e=e+1|0;d=c[f>>2]|0}e=c[d+196>>2]|0;if((b[d+236>>1]|0)==-1){_I(e+-64|0);break}else{_I(e);break}}while(0);if((so(a)|0)!=(a|0)){ow(c[(c[f>>2]|0)+12>>2]|0);Po(a,122277)|0}}return}function If(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+176>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[d+172>>2]|0)+(a<<2)>>2]|0;Xg(b);_I(c[b+16>>2]|0);_I(b);b=a;d=c[e>>2]|0}b=c[d+184>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[(c[e>>2]|0)+180>>2]|0)+(a<<2)>>2]|0;Xg(b);_I(c[b+16>>2]|0);_I(b);b=a}return}function Jf(a){a=a|0;if(mn(a)|0)Kf(a);$x(a);return}function Kf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+48|0;g=h+32|0;f=h;b=et(a,-1,8)|0;d=ft(a,0,f)|0;dt(a,2,8,f)|0;d=(d|0)==0;e=(b|0)<0;if(e&d)Lf(a);else{if(d)c[f+16>>2]=3;else b=e?8:b;c[f+8>>2]=b;c[f+20>>2]=0;e=Bs(a,g,0)|0;b=c[g>>2]|0;do if((b|0)==1){Lf(a);b=0}else{if(c[(c[(c[a+16>>2]|0)+8>>2]|0)+84>>2]|0){Lf(a);b=0;break}c[f+12>>2]=1;d=0;while(1){if((d|0)>=(b|0))break;b=c[e+(d<<2)>>2]|0;Mf(b,a);Lf(b);d=d+1|0;b=c[g>>2]|0}Nf(a);ct(c[g>>2]|0,e,a,f)|0;Of(a);Pf(c[g>>2]|0,e,a);b=0}while(0);while(1){if((b|0)>=(c[g>>2]|0))break;f=e+(b<<2)|0;_I(c[(c[(c[f>>2]|0)+16>>2]|0)+8>>2]|0);Hf(c[f>>2]|0);qo(a,c[f>>2]|0)|0;b=b+1|0}_I(e)}l=h;return}function Lf(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+40|0;e=m;i=DA(a,ym(a,0,77944,0)|0,-1,1)|0;IB(a,10);d=yk(a,e)|0;Rf(a,a);Bf(a);f=(i|0)==1;g=e+32|0;h=(i|0)==2;i=(i|0)==3;j=e+28|0;e=e+24|0;while(1){kj(a,d);if(f){d=3;break}if(c[g>>2]|0){_l(0,77950,k)|0;c[e>>2]=0;d=0}uh(a,(d|0)!=0&1);if(h){d=7;break}xi(a,d);if(i){d=9;break}n=(c[j>>2]|0)+-1|0;c[j>>2]=n;if(!((n|0)!=0&(c[e>>2]|0)!=0)){d=11;break}}if((d|0)==3)Sf(a,1);else if((d|0)==7)Sf(a,2);else if((d|0)==9)Sf(a,2);else if((d|0)==11){if(b[(c[a+16>>2]|0)+136>>1]&16)Tf(a);ek(a);Xf(a);if((IA(Im(a,78041)|0)|0)<<24>>24)_k(a)}l=m;return}function Mf(b,d){b=b|0;d=d|0;var e=0,f=0;No(b,122277,280,1)|0;e=vw(96)|0;b=c[b+16>>2]|0;c[b+8>>2]=e;d=c[d+16>>2]|0;f=c[d+8>>2]|0;h[e>>3]=+h[f>>3];h[e+24>>3]=+h[f+24>>3];c[b+144>>2]=c[d+144>>2];a[b+115>>0]=a[d+115>>0]|0;c[b+116>>2]=c[d+116>>2];c[b+248>>2]=c[d+248>>2];c[b+252>>2]=c[d+252>>2];c[b+244>>2]=c[d+244>>2];return}function Nf(a){a=a|0;var b=0,d=0,e=0;b=vw((mn(a)|0)<<4)|0;d=co(a)|0;while(1){if(!d)break;e=c[d+16>>2]|0;c[e+132>>2]=b;h[b>>3]=+h[e+16>>3]*.013888888888888888;h[b+8>>3]=+h[e+24>>3]*.013888888888888888;b=b+16|0;d=eo(a,d)|0}return}function Of(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[(c[(co(a)|0)+16>>2]|0)+132>>2]|0;b=e;d=co(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;c[f+132>>2]=0;h[f+16>>3]=+h[b>>3]*72.0;h[f+24>>3]=+h[b+8>>3]*72.0;b=b+16|0;d=eo(a,d)|0}_I(e);return}function Pf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;f=0;while(1){if((e|0)>=(a|0))break;i=(c[(c[(c[b+(e<<2)>>2]|0)+16>>2]|0)+180>>2]|0)+f|0;e=e+1|0;f=i}i=d+16|0;c[(c[i>>2]|0)+180>>2]=f;g=vw((f<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=g;g=0;e=1;while(1){if((g|0)>=(a|0))break;h=(c[b+(g<<2)>>2]|0)+16|0;f=1;while(1){d=c[h>>2]|0;if((f|0)>(c[d+180>>2]|0))break;d=As(c[(c[d+184>>2]|0)+(f<<2)>>2]|0)|0;c[(c[(c[i>>2]|0)+184>>2]|0)+(e<<2)>>2]=d;Qf(c[(c[(c[h>>2]|0)+184>>2]|0)+(f<<2)>>2]|0,d);f=f+1|0;e=e+1|0}g=g+1|0}return}function Qf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;No(d,122277,280,1)|0;g=d+16|0;d=(c[g>>2]|0)+16|0;f=b+16|0;b=(c[f>>2]|0)+16|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];b=c[f>>2]|0;d=c[g>>2]|0;a[d+275>>0]=a[b+275>>0]|0;d=d+48|0;b=b+48|0;e=d+64|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));b=c[(c[f>>2]|0)+180>>2]|0;c[(c[g>>2]|0)+180>>2]=b;d=vw((b<<2)+4|0)|0;c[(c[g>>2]|0)+184>>2]=d;d=1;while(1){e=c[f>>2]|0;if((d|0)>(b|0))break;e=As(c[(c[e+184>>2]|0)+(d<<2)>>2]|0)|0;c[(c[(c[g>>2]|0)+184>>2]|0)+(d<<2)>>2]=e;Qf(c[(c[(c[f>>2]|0)+184>>2]|0)+(d<<2)>>2]|0,e);d=d+1|0}f=e+12|0;c[(c[g>>2]|0)+12>>2]=c[f>>2];c[f>>2]=0;return}function Rf(a,b){a=a|0;b=b|0;if((so(a)|0)!=(a|0))No(a,122277,280,1)|0;if((a|0)==(b|0))c[(c[(so(a)|0)+16>>2]|0)+188>>2]=a;a=Jp(a)|0;while(1){if(!a)break;Rf(a,b);a=Kp(a)|0}return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1040|0;k=m+8|0;j=m;e=m+16|0;f=ym(a,1,80018,174181)|0;g=ym(a,1,78084,174181)|0;h=(b|0)>0;d=(b|0)==1;b=co(a)|0;while(1){if(!b)break;if(h?(i=b+16|0,c[j>>2]=c[(c[i>>2]|0)+232>>2],pL(e,122187,j)|0,Cm(b,f,e)|0,!d):0){c[k>>2]=c[(c[i>>2]|0)+236>>2];pL(e,122187,k)|0;Cm(b,g,e)|0}b=eo(a,b)|0}l=m;return}function Tf(a){a=a|0;var b=0,c=0,d=0;c=Ip(a,79522,0)|0;if(c|0){b=co(c)|0;while(1){if(!b)break;d=eo(c,b)|0;dh(a,b);Uf(a,b);Gf(b);po(a,b)|0;b=d}Mp(a,c)|0}return}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=c[(c[b+16>>2]|0)+232>>2]|0;i=a+16|0;a=c[(c[i>>2]|0)+196>>2]|0;d=c[a+(j<<6)>>2]|0;h=a+(j<<6)+4|0;g=0;e=0;while(1){if((e|0)>=(d|0)){f=7;break}f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if((f|0)==(b|0)){f=4;break}else g=f}if((f|0)==4){while(1){if((e|0)>=(d|0))break;f=c[a+(j<<6)+4>>2]|0;c[f+(e+-1<<2)>>2]=c[f+(e<<2)>>2];f=c[(c[i>>2]|0)+196>>2]|0;e=e+1|0;d=c[f+(j<<6)>>2]|0;a=f;f=4}c[a+(j<<6)>>2]=d+-1}else if((f|0)==7?(g|0)!=(b|0):0)ma(78050,78057,248,78067);return}function Vf(a){a=a|0;return c[(c[(so(a)|0)+16>>2]|0)+188>>2]|0}function Wf(b,c){b=b|0;c=c|0;var d=0;d=a[b+28>>0]|0;if(a[c+28>>0]|0)if(d<<24>>24){d=~~(+h[b>>3]-+h[c>>3]);if(!d)d=~~(+h[b+8>>3]-+h[c+8>>3])}else d=-1;else d=d<<24>>24!=0&1;return d|0}function Xf(a){a=a|0;Yf(a,1);return}function Yf(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0;Z=l;l=l+656|0;O=Z+592|0;N=Z+552|0;f=Z+544|0;T=Z+96|0;U=Z;Y=Z+632|0;V=d+16|0;X=b[(c[V>>2]|0)+136>>1]&14;P=X&65535;Q=T+16|0;c[Q>>2]=Z+368;R=U+16|0;c[R>>2]=Z+192;do if(X<<16>>16){S=X<<16>>16==4;do if(S){Zf(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1))A=9;else{_l(0,78090,f)|0;A=9}}else if(X<<16>>16==8){Zf(d);if(!(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)){LB(d,0);n=0;m=0;k=0;break}else{_f(d);LB(d,1);n=0;m=0;k=0;break}}else A=9;while(0);if((A|0)==9){Yk(d);if(ly()|0)break;W=vw(96)|0;K=c[(c[V>>2]|0)+248>>2]|0;c[Y+8>>2]=(K|0)/4|0;c[Y+12>>2]=K;k=vw(512)|0;F=Y+4|0;c[F>>2]=0;c[Y>>2]=0;j=c[V>>2]|0;C=b[j+236>>1]|0;D=0;L=0;M=k;E=k;m=k;n=k;o=k;H=0;I=0;a:while(1){if((C|0)>(b[j+238>>1]|0))break;p=c[j+196>>2]|0;i=c[p+(C<<6)>>2]|0;G=i+D|0;g=c[p+(C<<6)+4>>2]|0;f=c[g>>2]|0;if(!f)f=H;else{_=+(H|0);f=c[f+16>>2]|0;y=+h[f+16>>3]-+h[f+88>>3];f=~~(y>_?_:y)}if((i|0)!=0?(J=c[g+(i+-1<<2)>>2]|0,(J|0)!=0):0){y=+(I|0);g=c[J+16>>2]|0;_=+h[g+96>>3]+ +h[g+16>>3];g=~~(_<y?y:_)}else g=I;B=f+-16|0;z=g+16|0;x=0;t=L;r=M;q=j;u=E;v=m;g=k;f=p;while(1){if((x|0)>=(i|0))break;k=c[(c[f+(C<<6)+4>>2]|0)+(x<<2)>>2]|0;w=k+16|0;f=c[w>>2]|0;i=c[f+112>>2]|0;if(i){i=i+16|0;j=c[(c[i>>2]|0)+96>>2]|0;if(!j){A=21;break a}s=j+56|0;f=f+16|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];a[(c[(c[i>>2]|0)+96>>2]|0)+81>>0]=1;f=c[w>>2]|0}if((a[f+156>>0]|0)!=0?($a[c[17228>>2]&31](k)|0)<<24>>24==0:0){q=t;f=r;j=u;k=v;i=o}else{s=0;q=t;j=u;k=v;A=25}b:do if((A|0)==25){while(1){A=0;p=c[w>>2]|0;i=c[(c[p+180>>2]|0)+(s<<2)>>2]|0;if(!i)break;switch(a[(c[i+16>>2]|0)+112>>0]|0){case 6:case 4:{f=q;i=r;break}default:{$f(i,1,16,64);f=q+1|0;c[r+(q<<2)>>2]=i;if(!(f&127)){g=yw(g,(q<<2)+516|0)|0;i=g;j=g;k=g;n=g;o=g}else i=r}}s=s+1|0;q=f;r=i;A=25}f=c[p+188>>2]|0;c:do if(!f)i=o;else{s=0;i=o;while(1){f=c[f+(s<<2)>>2]|0;if(!f)break c;$f(f,2,0,128);o=q+1|0;c[r+(q<<2)>>2]=f;if(!(o&127)){g=yw(i,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=r;p=c[w>>2]|0;s=s+1|0;q=o;r=f;f=c[p+188>>2]|0}}while(0);f=c[p+204>>2]|0;if(!f)f=r;else{if(!(a[p+156>>0]|0)){v=p+96|0;_=+h[v>>3];s=p+240|0;h[v>>3]=+h[s>>3];h[s>>3]=_;s=0;p=r}else{s=0;p=r}while(1){f=c[f+(s<<2)>>2]|0;if(!f){f=p;break b}$f(f,0,0,128);o=q+1|0;c[p+(q<<2)>>2]=f;if(!(o&127)){g=yw(n,(q<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=p;s=s+1|0;q=o;p=f;f=c[(c[w>>2]|0)+204>>2]|0}}}while(0);u=c[V>>2]|0;w=c[u+196>>2]|0;x=x+1|0;t=q;r=f;q=u;u=j;v=k;o=i;i=c[w+(C<<6)>>2]|0;f=w}C=C+1|0;D=G;L=t;M=r;E=u;j=q;m=v;k=g;H=B;I=z}if((A|0)==21)ma(78158,78171,313,78184);c[Y>>2]=H;c[F>>2]=I;rL(E,L,4,10);c[W+84>>2]=vw((D<<5)+11520|0)|0;c[Y+16>>2]=vw(C<<5)|0;d:do if(X<<16>>16==2){f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break d;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){bg(g);f=c[i>>2]|0}f=f+164|0}}while(0);z=U+48|0;A=U+-48|0;B=T+48|0;C=T+-48|0;y=+(K|0);x=0;e:while(1){if((x|0)>=(L|0))break;v=M+(x<<2)|0;r=c[v>>2]|0;s=cg(r)|0;t=r+16|0;g=c[t>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:r;f=g;g=c[g+16>>2]|0}else f=r;i=f+16|0;if(c[g+164>>2]&32){g=c[Q>>2]|0;TN(g|0,c[i>>2]|0,176)|0;n=T;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[Q>>2]=g;o=c[f>>2]&3;n=c[T>>2]&3;c[((n|0)==3?T:B)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?T:C)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f;f=T}q=f+16|0;w=1;f=x;while(1){u=f+1|0;if((u|0)>=(L|0))break;j=M+(u<<2)|0;f=c[j>>2]|0;if((s|0)!=(cg(f)|0))break;if(!(a[(c[t>>2]|0)+113>>0]|0)){k=f+16|0;g=c[k>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?s:f;f=g;g=c[g+16>>2]|0}i=f+16|0;if(c[g+164>>2]&32){g=c[R>>2]|0;TN(g|0,c[i>>2]|0,176)|0;n=U;o=f;p=n+48|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));c[R>>2]=g;o=c[f>>2]&3;n=c[U>>2]&3;c[((n|0)==3?U:z)+40>>2]=c[((o|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?U:A)+40>>2]=c[((o|0)==3?f:f+48|0)+40>>2];n=g+16|0;o=(c[i>>2]|0)+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=g+56|0;o=(c[i>>2]|0)+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));a[g+112>>0]=1;c[g+116>>2]=f}i=c[q>>2]|0;f=g+16|0;n=N;o=i+16|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(Wf(N,O)|0)break;f=g+56|0;n=N;o=i+56|0;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));n=O;o=f;p=n+40|0;do{c[n>>2]=c[o>>2];n=n+4|0;o=o+4|0}while((n|0)<(p|0));if(Wf(N,O)|0)break;K=c[t>>2]|0;if((c[K+164>>2]&15|0)==2?(c[K+96>>2]|0)!=(c[(c[k>>2]|0)+96>>2]|0):0)break;if(c[(c[(c[j>>2]|0)+16>>2]|0)+164>>2]&64|0)break}w=w+1|0;f=u}if(S){if((w|0)==1)f=O;else f=vw(w<<2)|0;c[f>>2]=cg(c[v>>2]|0)|0;g=1;while(1){if((g|0)>=(w|0))break;c[f+(g<<2)>>2]=c[v+(g<<2)>>2];g=g+1|0}uy(d,f,w,P,17224);if((w|0)>1)_I(f);x=u;continue}f=c[r>>2]&3;K=c[((f|0)==3?r:r+48|0)+40>>2]|0;f=c[((f|0)==2?r:r+-48|0)+40>>2]|0;g=c[K+16>>2]|0;i=c[g+232>>2]|0;if((K|0)!=(f|0))if((i|0)==(c[(c[f+16>>2]|0)+232>>2]|0)){dg(d,Y,W,M,x,w,P);x=u;continue}else{eg(d,Y,W,M,x,w,P);x=u;continue}f=c[V>>2]|0;do if((i|0)==(b[f+238>>1]|0))if((i|0)>0){f=~~(+h[(c[(c[c[(c[f+196>>2]|0)+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[g+24>>3]);break}else{f=~~+h[g+80>>3];break}else if((i|0)==(b[f+236>>1]|0)){f=~~(+h[g+24>>3]-+h[(c[(c[c[(c[f+196>>2]|0)+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);break}else{f=c[f+196>>2]|0;_=+h[g+24>>3];K=~~(+h[(c[(c[c[f+(i+-1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-_);f=~~(_-+h[(c[(c[c[f+(i+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);f=(K|0)<(f|0)?K:f;break}while(0);Rz(W,M,x,w,y,+((f|0)/2|0|0),17224);f=0;while(1){if((f|0)>=(w|0)){x=u;continue e}g=c[(c[(c[M+(f+x<<2)>>2]|0)+16>>2]|0)+96>>2]|0;if(g|0)bB(d,g);f=f+1|0}}f=(c[V>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){bg(g);bB(d,c[(c[i>>2]|0)+104>>2]|0);f=c[i>>2]|0}f=f+164|0}if(!e){n=W;k=W}else{fg(d);n=W;k=W}}f:do if((c[42241]|0)!=0|(c[42242]|0)!=0?(c[42247]|0)!=0|(c[42246]|0)!=0:0){j=co(d)|0;while(1){if(!j)break f;g:do if(c[42241]|0){f=Sm(d,j)|0;while(1){if(!f)break g;g=f+-48|0;i=(c[f>>2]&3|0)==2?f:g;if(c[(c[i+16>>2]|0)+100>>2]|0){Zz(i,1)|0;bB(d,c[(c[((c[f>>2]&3|0)==2?f:g)+16>>2]|0)+100>>2]|0)}f=Tm(d,f)|0}}while(0);h:do if(c[42242]|0){f=Pm(d,j)|0;while(1){if(!f)break h;g=f+16|0;if(c[(c[g>>2]|0)+104>>2]|0?Zz(f,0)|0:0)bB(d,c[(c[g>>2]|0)+104>>2]|0);f=Rm(d,f)|0}}while(0);j=eo(d,j)|0}}while(0);switch(X&15){case 4:case 8:break;default:{_I(m);_I(c[n+84>>2]|0);_I(k);_I(c[Y+16>>2]|0);my()}}c[42181]=1;c[42182]=1}while(0);l=Z;return}function Zf(a){a=a|0;var b=0,d=0,e=0.0,f=0;b=co(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;if(c[d+204>>2]|0){f=d+96|0;e=+h[f>>3];d=d+240|0;h[f>>3]=+h[d>>3];h[d>>3]=e}b=eo(a,b)|0}return}function _f(b){b=b|0;var d=0,e=0,f=0,g=0;d=(c[b+16>>2]|0)+192|0;a:while(1){f=c[d>>2]|0;if(!f){d=12;break}g=f+16|0;d=c[g>>2]|0;do if((a[d+156>>0]|0)==1){e=c[d+112>>2]|0;if(!e){e=c[d+104>>2]|0;if(!e)break;bg(f);d=e}else{e=c[(c[e+16>>2]|0)+96>>2]|0;if(!e){d=6;break a}f=e+56|0;d=d+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];a[e+81>>0]=1;d=e}bB(b,d);d=c[g>>2]|0}while(0);d=d+164|0}if((d|0)==6)ma(78358,78171,234,78377);else if((d|0)==12)return}function $f(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;do if(!d){g=c[b>>2]&3;d=c[((g|0)==3?b:b+48|0)+40>>2]|0;g=c[((g|0)==2?b:b+-48|0)+40>>2]|0;if((d|0)!=(g|0)){d=(c[(c[d+16>>2]|0)+232>>2]|0)==(c[(c[g+16>>2]|0)+232>>2]|0)?2:1;break}d=c[b+16>>2]|0;if(!(a[d+44>>0]|0))d=(a[d+84>>0]|0)==0?8:4;else d=4}while(0);a:do if(!e)switch(d|0){case 1:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)?16:32;break a}case 2:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)?16:32;break a}default:{e=16;break a}}while(0);c[(c[b+16>>2]|0)+164>>2]=d|f|e;return}function ag(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+624|0;z=D+584|0;y=D+544|0;s=D+368|0;e=D+192|0;t=D+96|0;v=D;u=t+16|0;c[u>>2]=s;w=v+16|0;c[w>>2]=e;C=c[b>>2]|0;B=c[d>>2]|0;x=C+16|0;q=c[x>>2]|0;d=c[q+164>>2]|0;f=d&15;A=B+16|0;b=c[A>>2]|0;g=c[b+164>>2]&15;do if((g|0)==(f|0)){p=cg(C)|0;r=cg(B)|0;n=c[p>>2]|0;g=n&3;f=c[(c[((g|0)==3?p:p+48|0)+40>>2]|0)+16>>2]|0;g=c[(c[((g|0)==2?p:p+-48|0)+40>>2]|0)+16>>2]|0;i=(c[f+232>>2]|0)-(c[g+232>>2]|0)|0;o=c[r>>2]|0;m=o&3;k=c[(c[((m|0)==3?r:r+48|0)+40>>2]|0)+16>>2]|0;m=c[(c[((m|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0;j=(c[k+232>>2]|0)-(c[m+232>>2]|0)|0;i=(i|0)>-1?i:0-i|0;j=(j|0)>-1?j:0-j|0;if((i|0)!=(j|0)){b=i-j|0;break}g=~~(+h[f+16>>3]-+h[g+16>>3]);g=(g|0)>-1?g:0-g|0;f=~~(+h[k+16>>3]-+h[m+16>>3]);f=(f|0)>-1?f:0-f|0;if((g|0)!=(f|0)){b=g-f|0;break}g=n>>>4;f=o>>>4;if((g|0)!=(f|0)){b=g-f|0;break}if(!(a[q+44>>0]|0)){d=(a[q+84>>0]|0)==0?p:C;g=d;d=c[(c[d+16>>2]|0)+164>>2]|0}else g=C;f=g+16|0;if(d&32){TN(s|0,c[f>>2]|0,176)|0;i=t;j=g;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[u>>2]=s;j=c[g>>2]&3;i=c[t>>2]&3;c[((i|0)==3?t:t+48|0)+40>>2]=c[((j|0)==2?g:g+-48|0)+40>>2];c[((i|0)==2?t:t+-48|0)+40>>2]=c[((j|0)==3?g:g+48|0)+40>>2];i=s+16|0;j=(c[f>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=s+56|0;j=(c[f>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[s+112>>0]=1;c[s+116>>2]=g;g=t;b=c[A>>2]|0}if(!(a[b+44>>0]|0)){b=(a[b+84>>0]|0)==0?r:B;f=b;b=c[b+16>>2]|0}else f=B;d=f+16|0;if(!(c[b+164>>2]&32))e=b;else{TN(e|0,c[d>>2]|0,176)|0;i=v;j=f;k=i+48|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));c[w>>2]=e;j=c[f>>2]&3;i=c[v>>2]&3;c[((i|0)==3?v:v+48|0)+40>>2]=c[((j|0)==2?f:f+-48|0)+40>>2];c[((i|0)==2?v:v+-48|0)+40>>2]=c[((j|0)==3?f:f+48|0)+40>>2];i=e+16|0;j=(c[d>>2]|0)+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=e+56|0;j=(c[d>>2]|0)+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));a[e+112>>0]=1;c[e+116>>2]=f}d=c[g+16>>2]|0;b=e+16|0;i=y;j=d+16|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=Wf(y,z)|0;if(!b){b=e+56|0;i=y;j=d+56|0;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));i=z;j=b;k=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(k|0));b=Wf(y,z)|0;if(!b){d=c[(c[x>>2]|0)+164>>2]&192;b=c[(c[A>>2]|0)+164>>2]&192;if((d|0)==(b|0)){b=((c[C>>2]|0)>>>4)-((c[B>>2]|0)>>>4)|0;break}else{b=d-b|0;break}}}}else b=g-f|0;while(0);l=D;return b|0}function bg(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=b+16|0;d=c[f>>2]|0;if(c[d+176>>2]|0){d=c[d+180>>2]|0;while(1){d=(c[d>>2]|0)+16|0;e=c[d>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}e=c[e+96>>2]|0;g=+h[e+24>>3];i=+h[e+32>>3];e=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=c[f>>2]|0;f=c[(c[d>>2]|0)+96>>2]|0;h[f+56>>3]=(e?i:g)*.5+ +h[b+16>>3];h[f+64>>3]=+h[b+24>>3];a[f+81>>0]=1}return}function cg(a){a=a|0;var b=0,d=0;while(1){b=c[a+16>>2]|0;d=c[b+172>>2]|0;if(!d)break;else a=d}while(1){b=c[b+116>>2]|0;if(!b)break;a=b;b=c[b+16>>2]|0}return a|0}function dg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;B=l;l=l+1712|0;x=B+1664|0;s=B+1488|0;t=B+1392|0;A=B+1696|0;y=B+696|0;z=B;p=t+16|0;c[p>>2]=s;q=c[f+(g<<2)>>2]|0;r=q+16|0;k=c[r>>2]|0;u=a[k+113>>0]|0;if(c[k+164>>2]&32){TN(s|0,k|0,176)|0;k=t;n=q;o=k+48|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));c[p>>2]=s;k=c[t>>2]&3;c[((k|0)==3?t:t+48|0)+40>>2]=c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2];c[((k|0)==2?t:t+-48|0)+40>>2]=c[((c[q>>2]&3|0)==3?q:q+48|0)+40>>2];k=s+16|0;n=(c[r>>2]|0)+56|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));k=s+56|0;n=(c[r>>2]|0)+16|0;o=k+40|0;do{c[k>>2]=c[n>>2];k=k+4|0;n=n+4|0}while((k|0)<(o|0));a[s+112>>0]=1;c[s+116>>2]=q;q=t}k=1;while(1){if((k|0)>=(i|0)){w=6;break}if(!(a[(c[(c[f+(k+g<<2)>>2]|0)+16>>2]|0)+113>>0]|0))k=k+1|0;else{w=7;break}}a:do if((w|0)==6)if(!(u<<24>>24)){k=c[q+16>>2]|0;if(c[k+96>>2]|0){Dg(b,d,e,q,j);break}if((j|0)==2){A=c[q>>2]&3;Eg(c[((A|0)==3?q:q+48|0)+40>>2]|0,c[((A|0)==2?q:q+-48|0)+40>>2]|0,f,g,i,2);break}t=a[k+49>>0]|0;u=a[k+89>>0]|0;if(!(t<<24>>24==1&u<<24>>24!=4)?!(t<<24>>24!=4&u<<24>>24==1):0){p=c[q>>2]&3;o=c[((p|0)==3?q:q+48|0)+40>>2]|0;p=c[((p|0)==2?q:q+-48|0)+40>>2]|0;k=c[o+16>>2]|0;n=c[k+232>>2]|0;if((n|0)>0){u=c[(c[b+16>>2]|0)+196>>2]|0;t=n+~(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1)|0;m=+h[(c[(c[c[u+(t<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[u+(t<<6)+16>>3]-+h[k+24>>3]-+h[u+(n<<6)+24>>3]}else m=+(c[(c[b+16>>2]|0)+252>>2]|0);C=+(i+1|0);v=+(c[d+12>>2]|0)/C;m=m/C;Gg(b,d,e,o,q,y,1);Gg(b,d,e,p,q,z,0);s=y+52|0;t=z+52|0;p=(j|0)==10;q=e+80|0;k=0;while(1){if((k|0)>=(i|0))break a;r=c[f+(k+g<<2)>>2]|0;o=c[s>>2]|0;n=o+-1|0;G=+h[y+56+(n<<5)>>3];F=+h[y+56+(n<<5)+16>>3];E=+h[y+56+(n<<5)+24>>3];h[16878]=G;h[16879]=E;k=k+1|0;C=+(k|0);D=v*C;h[16880]=F+D;C=E+m*C;h[16881]=C;h[16882]=G;h[16883]=C;n=(c[t>>2]|0)+-1|0;G=+h[z+56+(n<<5)+16>>3];h[16884]=G;h[16885]=C+m;E=+h[z+56+(n<<5)>>3];F=+h[z+56+(n<<5)+24>>3];h[16888]=G;h[16887]=F;h[16886]=E-D;h[16889]=C;n=0;while(1){if((n|0)>=(o|0)){n=0;break}o=y+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];Lz(e,x);n=n+1|0;o=c[s>>2]|0}while(1){if((n|0)==3)break;j=135024+(n<<5)|0;c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];c[x+16>>2]=c[j+16>>2];c[x+20>>2]=c[j+20>>2];c[x+24>>2]=c[j+24>>2];c[x+28>>2]=c[j+28>>2];Lz(e,x);n=n+1|0}o=c[t>>2]|0;while(1){n=o+-1|0;if((o|0)<=0)break;o=z+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];Lz(e,x);o=n}if(p)n=ny(e,A)|0;else n=ty(e,A)|0;o=c[A>>2]|0;if(!o)break a;Jz(r,c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0,n,o,17224);c[q>>2]=0}}Fg(b,d,e,f,g,i,q,(j|0)==10&1)}else w=7;while(0);if((w|0)==7)Cg(b,f,g,i,q,j);l=B;return}function eg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;ba=l;l=l+2576|0;S=ba+2528|0;_=ba+2568|0;k=ba+2352|0;n=ba+2176|0;t=ba+1904|0;Y=ba+1808|0;$=ba+1712|0;T=ba+1016|0;U=ba+320|0;V=ba+256|0;X=ba+2564|0;Z=ba+2560|0;z=ba+288|0;A=ba+224|0;L=ba+192|0;M=ba+160|0;N=ba+128|0;P=ba+96|0;Q=ba+64|0;R=ba+32|0;W=ba;s=t+16|0;c[s>>2]=k;o=Y+16|0;c[o>>2]=n;aa=$+16|0;c[aa>>2]=ba+2e3;if(!(c[41920]|0)){c[41920]=ww(32e3)|0;c[41921]=ww(32e3)|0;c[41922]=2e3;c[41923]=2e3}u=c[f+(g<<2)>>2]|0;K=c[u>>2]&3;p=u+48|0;q=u+-48|0;K=(c[(c[(c[((K|0)==3?u:p)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((K|0)==2?u:q)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;r=u+16|0;if((((K|0)>-1?K:0-K|0)|0)<=1){k=c[r>>2]|0;if(!(c[k+164>>2]&32)){K=u;n=0}else{n=c[s>>2]|0;TN(n|0,k|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=n;w=c[t>>2]&3;c[((w|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?t:t+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[s>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;n=0;J=12}}else{TN(k|0,c[r>>2]|0,176)|0;w=t;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));w=t+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[s>>2]=k;k=c[r>>2]|0;if(!(c[k+164>>2]&32)){TN(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=Y+48|0;x=p;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}else{n=c[o>>2]|0;TN(n|0,k|0,176)|0;w=Y;x=u;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[o>>2]=n;w=c[Y>>2]&3;c[((w|0)==3?Y:Y+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];c[((w|0)==2?Y:Y+-48|0)+40>>2]=c[((c[u>>2]&3|0)==3?u:p)+40>>2];w=n+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[o>>2]|0;w=k+56|0;x=(c[r>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=u;o=c[t>>2]|0;c[((o&3|0)==3?t:t+48|0)+40>>2]=c[((c[u>>2]&3|0)==2?u:q)+40>>2];w=(c[s>>2]|0)+16|0;x=(c[r>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0))}k=cg(u)|0;while(1){n=c[(c[k+16>>2]|0)+172>>2]|0;if(!n)break;else k=n}c[((o&3|0)==2?t:t+-48|0)+40>>2]=c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2];k=c[s>>2]|0;a[k+84>>0]=0;a[k+112>>0]=1;n=k+56|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=1;J=12}if((J|0)==12){c[k+116>>2]=u;K=t}H=(j|0)==2;if(H?(v=ig(b,K,c[41920]|0,_)|0,c[Z>>2]=v,(v|0)!=0):0)J=63;else J=15;a:do if((J|0)==15){G=(j|0)==10;c[Z>>2]=0;o=c[K>>2]&3;k=c[((o|0)==3?K:K+48|0)+40>>2]|0;o=c[((o|0)==2?K:K+-48|0)+40>>2]|0;c[_>>2]=o;jg(z,b,d,k,0,K);c[T>>2]=c[z>>2];c[T+4>>2]=c[z+4>>2];c[T+8>>2]=c[z+8>>2];c[T+12>>2]=c[z+12>>2];c[T+16>>2]=c[z+16>>2];c[T+20>>2]=c[z+20>>2];c[T+24>>2]=c[z+24>>2];c[T+28>>2]=c[z+28>>2];c[V>>2]=c[z>>2];c[V+4>>2]=c[z+4>>2];c[V+8>>2]=c[z+8>>2];c[V+12>>2]=c[z+12>>2];c[V+16>>2]=c[z+16>>2];c[V+20>>2]=c[z+20>>2];Mz(e,K,1,T,kg(k)|0);B=T+52|0;I=(c[B>>2]|0)+-1|0;D=V+24|0;h[D>>3]=+h[T+56+(I<<5)+24>>3];E=V+8|0;h[E>>3]=+h[T+56+(I<<5)+8>>3];I=c[k+16>>2]|0;F=b+16|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];lg(A,S,1,m);c[V>>2]=c[A>>2];c[V+4>>2]=c[A+4>>2];c[V+8>>2]=c[A+8>>2];c[V+12>>2]=c[A+12>>2];c[V+16>>2]=c[A+16>>2];c[V+20>>2]=c[A+20>>2];c[V+24>>2]=c[A+24>>2];c[V+28>>2]=c[A+28>>2];A=V+16|0;if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){I=c[B>>2]|0;c[B>>2]=I+1;I=T+56+(I<<5)|0;c[I>>2]=c[V>>2];c[I+4>>2]=c[V+4>>2];c[I+8>>2]=c[V+8>>2];c[I+12>>2]=c[V+12>>2];c[I+16>>2]=c[V+16>>2];c[I+20>>2]=c[V+20>>2];c[I+24>>2]=c[V+24>>2];c[I+28>>2]=c[V+28>>2]}w=b+60|0;C=U+52|0;x=e+56|0;y=e+69|0;j=e+16|0;z=e+29|0;I=K;q=0;r=-1;b:while(1){s=k;t=0;k=0;u=I;while(1){p=o;v=o;if((a[(c[p+16>>2]|0)+156>>0]|0)!=1)break b;if(($a[c[17228>>2]&31](p)|0)<<24>>24)break b;o=t|1;ca=135024+(t<<5)|0;mg(L,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[ca>>2]=c[L>>2];c[ca+4>>2]=c[L+4>>2];c[ca+8>>2]=c[L+8>>2];c[ca+12>>2]=c[L+12>>2];c[ca+16>>2]=c[L+16>>2];c[ca+20>>2]=c[L+20>>2];c[ca+24>>2]=c[L+24>>2];c[ca+28>>2]=c[L+28>>2];if(!k){q=ng(p)|0;k=(q|0)<((a[(c[(c[w>>2]|0)+16>>2]|0)+113>>0]<<1&2)+3&255|0);q=k?q:q+-2|0;r=k?r:1;k=(k^1)&1}if(!((k|0)==0|(r|0)>0))break;ca=135024+(o<<5)|0;jg(M,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[ca>>2]=c[M>>2];c[ca+4>>2]=c[M+4>>2];c[ca+8>>2]=c[M+8>>2];c[ca+12>>2]=c[M+12>>2];c[ca+16>>2]=c[M+16>>2];c[ca+20>>2]=c[M+20>>2];c[ca+24>>2]=c[M+24>>2];c[ca+28>>2]=c[M+28>>2];ca=c[c[(c[v+16>>2]|0)+180>>2]>>2]|0;o=c[ca>>2]&3;s=c[((o|0)==3?ca:ca+48|0)+40>>2]|0;o=c[((o|0)==2?ca:ca+-48|0)+40>>2]|0;c[_>>2]=o;t=t+2|0;r=r+-1|0;u=ca}jg(N,b,d,p,u,c[c[(c[p+16>>2]|0)+180>>2]>>2]|0);c[U>>2]=c[N>>2];c[U+4>>2]=c[N+4>>2];c[U+8>>2]=c[N+8>>2];c[U+12>>2]=c[N+12>>2];c[U+16>>2]=c[N+16>>2];c[U+20>>2]=c[N+20>>2];c[U+24>>2]=c[N+24>>2];c[U+28>>2]=c[N+28>>2];Pz(e,u,1,U,kg(c[((c[u>>2]&3|0)==2?u:u+-48|0)+40>>2]|0)|0);ca=U+56+((c[C>>2]|0)+-1<<5)|0;t=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[t+232>>2]<<6)+24>>3]+ +h[t+24>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];lg(V,S,4,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[x>>3]=1.5707963267948966;a[y>>0]=1;og(e,I,u,T,U,o);if(!G){k=ty(e,X)|0;o=c[X>>2]|0;if(H&(o|0)>4){ca=k+16|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];ca=k+32|0;o=k+(o+-1<<4)|0;c[ca>>2]=c[o>>2];c[ca+4>>2]=c[o+4>>2];c[ca+8>>2]=c[o+8>>2];c[ca+12>>2]=c[o+12>>2];UN(k+48|0,o|0,16)|0;c[X>>2]=4;o=4}else J=33}else{k=ny(e,X)|0;o=c[X>>2]|0;J=33}if((J|0)==33){J=0;if(!o)break a}u=c[Z>>2]|0;p=u+o|0;if((p|0)>(c[41922]|0)){c[41922]=p<<1;t=yw(c[41920]|0,p<<5)|0;c[41920]=t;o=c[X>>2]|0}else t=c[41920]|0;s=0;p=u;while(1){if((s|0)>=(o|0))break;ca=t+(p<<4)|0;u=k+(s<<4)|0;c[ca>>2]=c[u>>2];c[ca+4>>2]=c[u+4>>2];c[ca+8>>2]=c[u+8>>2];c[ca+12>>2]=c[u+12>>2];s=s+1|0;p=p+1|0}c[Z>>2]=p;o=pg(c[c[(c[v+16>>2]|0)+180>>2]>>2]|0,q,t,Z)|0;qg(I,e);p=c[o>>2]&3;k=c[((p|0)==3?o:o+48|0)+40>>2]|0;p=c[((p|0)==2?o:o+-48|0)+40>>2]|0;c[_>>2]=p;I=k+16|0;jg(P,b,d,k,c[c[(c[I>>2]|0)+172>>2]>>2]|0,o);c[T>>2]=c[P>>2];c[T+4>>2]=c[P+4>>2];c[T+8>>2]=c[P+8>>2];c[T+12>>2]=c[P+12>>2];c[T+16>>2]=c[P+16>>2];c[T+20>>2]=c[P+20>>2];c[T+24>>2]=c[P+24>>2];c[T+28>>2]=c[P+28>>2];Mz(e,o,1,T,kg(k)|0);ca=T+56+((c[B>>2]|0)+-1<<5)|0;I=c[I>>2]|0;m=+h[I+24>>3]-+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[I+232>>2]<<6)+16>>3];c[S>>2]=c[ca>>2];c[S+4>>2]=c[ca+4>>2];c[S+8>>2]=c[ca+8>>2];c[S+12>>2]=c[ca+12>>2];c[S+16>>2]=c[ca+16>>2];c[S+20>>2]=c[ca+20>>2];c[S+24>>2]=c[ca+24>>2];c[S+28>>2]=c[ca+28>>2];lg(V,S,1,m);if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[B>>2]|0;c[B>>2]=ca+1;ca=T+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}h[j>>3]=-1.5707963267948966;a[z>>0]=1;I=o;o=p}k=t|1;r=135024+(t<<5)|0;mg(Q,d,b,c[(c[s+16>>2]|0)+232>>2]|0);c[r>>2]=c[Q>>2];c[r+4>>2]=c[Q+4>>2];c[r+8>>2]=c[Q+8>>2];c[r+12>>2]=c[Q+12>>2];c[r+16>>2]=c[Q+16>>2];c[r+20>>2]=c[Q+20>>2];c[r+24>>2]=c[Q+24>>2];c[r+28>>2]=c[Q+28>>2];jg(R,b,d,p,u,0);c[U>>2]=c[R>>2];c[U+4>>2]=c[R+4>>2];c[U+8>>2]=c[R+8>>2];c[U+12>>2]=c[R+12>>2];c[U+16>>2]=c[R+16>>2];c[U+20>>2]=c[R+20>>2];c[U+24>>2]=c[R+24>>2];c[U+28>>2]=c[R+28>>2];c[V>>2]=c[R>>2];c[V+4>>2]=c[R+4>>2];c[V+8>>2]=c[R+8>>2];c[V+12>>2]=c[R+12>>2];c[V+16>>2]=c[R+16>>2];c[V+20>>2]=c[R+20>>2];c[V+24>>2]=c[R+24>>2];c[V+28>>2]=c[R+28>>2];r=(n|0)!=0;s=u+-48|0;Pz(e,r?Y:u,1,U,kg(c[((c[u>>2]&3|0)==2?u:s)+40>>2]|0)|0);ca=(c[C>>2]|0)+-1|0;h[D>>3]=+h[U+56+(ca<<5)+24>>3];h[E>>3]=+h[U+56+(ca<<5)+8>>3];ca=c[v+16>>2]|0;m=+h[(c[(c[F>>2]|0)+196>>2]|0)+(c[ca+232>>2]<<6)+24>>3]+ +h[ca+24>>3];c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[S+16>>2]=c[V+16>>2];c[S+20>>2]=c[V+20>>2];c[S+24>>2]=c[V+24>>2];c[S+28>>2]=c[V+28>>2];lg(W,S,4,m);c[V>>2]=c[W>>2];c[V+4>>2]=c[W+4>>2];c[V+8>>2]=c[W+8>>2];c[V+12>>2]=c[W+12>>2];c[V+16>>2]=c[W+16>>2];c[V+20>>2]=c[W+20>>2];c[V+24>>2]=c[W+24>>2];c[V+28>>2]=c[W+28>>2];if(+h[V>>3]<+h[A>>3]?+h[E>>3]<+h[D>>3]:0){ca=c[C>>2]|0;c[C>>2]=ca+1;ca=U+56+(ca<<5)|0;c[ca>>2]=c[V>>2];c[ca+4>>2]=c[V+4>>2];c[ca+8>>2]=c[V+8>>2];c[ca+12>>2]=c[V+12>>2];c[ca+16>>2]=c[V+16>>2];c[ca+20>>2]=c[V+20>>2];c[ca+24>>2]=c[V+24>>2];c[ca+28>>2]=c[V+28>>2]}og(e,I,u,T,U,k);if(G)q=ny(e,X)|0;else q=ty(e,X)|0;k=c[X>>2]|0;if(!(H&(k|0)>4)){if(!k)break}else{ca=q+16|0;c[ca>>2]=c[q>>2];c[ca+4>>2]=c[q+4>>2];c[ca+8>>2]=c[q+8>>2];c[ca+12>>2]=c[q+12>>2];ca=q+32|0;k=q+(k+-1<<4)|0;c[ca>>2]=c[k>>2];c[ca+4>>2]=c[k+4>>2];c[ca+8>>2]=c[k+8>>2];c[ca+12>>2]=c[k+12>>2];UN(q+48|0,k|0,16)|0;c[X>>2]=4;k=4}o=c[Z>>2]|0;n=o+k|0;if((n|0)>(c[41922]|0)){c[41922]=n<<1;p=yw(c[41920]|0,n<<5)|0;c[41920]=p;k=c[X>>2]|0}else p=c[41920]|0;n=0;while(1){if((n|0)>=(k|0))break;ca=p+(o<<4)|0;X=q+(n<<4)|0;c[ca>>2]=c[X>>2];c[ca+4>>2]=c[X+4>>2];c[ca+8>>2]=c[X+8>>2];c[ca+12>>2]=c[X+12>>2];n=n+1|0;o=o+1|0}c[Z>>2]=o;qg(I,e);if(r)k=(c[Y>>2]&3|0)==2?Y:Y+-48|0;else k=(c[u>>2]&3|0)==2?u:s;c[_>>2]=c[k+40>>2];v=o;J=63}while(0);c:do if((J|0)==63){if((i|0)==1){Jz(K,c[_>>2]|0,c[41920]|0,v,17224);break}t=d+12|0;u=v+-1|0;m=+((O(c[t>>2]|0,i+-1|0)|0)/2|0|0);n=c[41920]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=n+(k<<4)|0;h[ca>>3]=+h[ca>>3]-m;k=k+1|0}k=c[41922]|0;if((k|0)>(c[41923]|0)){c[41923]=k;o=yw(c[41921]|0,k<<4)|0;c[41921]=o;n=c[41920]|0}else o=c[41921]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=o+(k<<4)|0;d=n+(k<<4)|0;c[ca>>2]=c[d>>2];c[ca+4>>2]=c[d+4>>2];c[ca+8>>2]=c[d+8>>2];c[ca+12>>2]=c[d+12>>2];k=k+1|0}Jz(K,c[_>>2]|0,o,v,17224);r=$+48|0;s=$+-48|0;q=1;while(1){if((q|0)>=(i|0))break c;o=c[f+(q+g<<2)>>2]|0;p=o+16|0;k=c[p>>2]|0;if(c[k+164>>2]&32){n=c[aa>>2]|0;TN(n|0,k|0,176)|0;w=$;x=o;y=w+48|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));c[aa>>2]=n;w=c[$>>2]&3;c[((w|0)==3?$:r)+40>>2]=c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2];c[((w|0)==2?$:s)+40>>2]=c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2];w=n+16|0;x=(c[p>>2]|0)+56|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));k=c[aa>>2]|0;w=k+56|0;x=(c[p>>2]|0)+16|0;y=w+40|0;do{c[w>>2]=c[x>>2];w=w+4|0;x=x+4|0}while((w|0)<(y|0));a[k+112>>0]=1;c[k+116>>2]=o;o=$}p=c[41920]|0;k=1;while(1){if((k|0)>=(u|0))break;ca=p+(k<<4)|0;h[ca>>3]=+h[ca>>3]+ +(c[t>>2]|0);k=k+1|0}n=c[41921]|0;k=0;while(1){if((k|0)>=(v|0))break;ca=n+(k<<4)|0;_=p+(k<<4)|0;c[ca>>2]=c[_>>2];c[ca+4>>2]=c[_+4>>2];c[ca+8>>2]=c[_+8>>2];c[ca+12>>2]=c[_+12>>2];k=k+1|0}Jz(o,c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,n,v,17224);q=q+1|0}}while(0);l=ba;return}function fg(a){a=a|0;var b=0,d=0,e=0;b=co(a)|0;while(1){if(!b)break;d=Pm(a,b)|0;while(1){if(!d)break;if(($a[c[4306]&31](d)|0)<<24>>24?(e=c[(c[d+16>>2]|0)+8>>2]|0,e|0):0)gg(e);d=Rm(a,d)|0}b=eo(a,b)|0}return}function gg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[a+4>>2]|0;g=ww(f*48|0)|0;b=g;d=0;e=(c[a>>2]|0)+((f+-1|0)*48|0)|0;while(1){if((d|0)>=(f|0)){b=0;break}hg(e,b);b=b+48|0;d=d+1|0;e=e+-48|0}while(1){d=c[a>>2]|0;if((b|0)>=(f|0))break;_I(c[d+(b*48|0)>>2]|0);b=b+1|0}_I(d);c[a>>2]=g;return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;h=ww(g<<4)|0;d=h;e=0;f=(c[a>>2]|0)+(g+-1<<4)|0;while(1){if((e|0)>=(g|0))break;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];d=d+16|0;e=e+1|0;f=f+-16|0}c[b>>2]=h;c[b+4>>2]=g;c[b+8>>2]=c[a+12>>2];c[b+12>>2]=c[a+8>>2];h=b+16|0;g=a+32|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];h=b+32|0;g=a+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}function ig(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+96|0;q=x+80|0;s=x+64|0;r=x+48|0;u=x+32|0;v=x+16|0;w=x;m=d;while(1){t=m+16|0;g=c[t>>2]|0;if(!(a[g+112>>0]|0))break;m=c[g+116>>2]|0}g=c[m>>2]&3;o=c[((g|0)==2?m:m+-48|0)+40>>2]|0;g=c[((g|0)==3?m:m+48|0)+40>>2]|0;m=o+16|0;n=g+16|0;y=(c[(c[m>>2]|0)+232>>2]|0)-(c[(c[n>>2]|0)+232>>2]|0)|0;switch(((y|0)>-1?y:0-y|0)|0){case 1:{g=0;break}case 2:{if(!(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1))p=6;else g=0;break}default:p=6}do if((p|0)==6){if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(g|0)){c[f>>2]=o;y=(c[n>>2]|0)+16|0;p=(c[t>>2]|0)+16|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Ag(u,s,q);p=(c[m>>2]|0)+16|0;y=(c[t>>2]|0)+56|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Ag(v,s,q)}else{c[f>>2]=g;y=(c[m>>2]|0)+16|0;p=(c[t>>2]|0)+56|0;c[s>>2]=c[y>>2];c[s+4>>2]=c[y+4>>2];c[s+8>>2]=c[y+8>>2];c[s+12>>2]=c[y+12>>2];c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];Ag(u,s,q);p=(c[n>>2]|0)+16|0;y=(c[t>>2]|0)+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];Ag(v,s,q)}g=c[(c[t>>2]|0)+96>>2]|0;if(!g){g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+48|0;y=e+32|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=4;break}j=+h[g+24>>3];i=+h[g+32>>3];p=(c[(c[(ro(o)|0)+16>>2]|0)+116>>2]&1|0)==0;k=p?i:j;y=(c[(c[t>>2]|0)+96>>2]|0)+56|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];c[s>>2]=c[u>>2];c[s+4>>2]=c[u+4>>2];c[s+8>>2]=c[u+8>>2];c[s+12>>2]=c[u+12>>2];c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];y=(Bg(r,s,q)|0)==0;i=(p?j:i)*.5;j=+h[w>>3];if(y){h[w>>3]=j-i;y=w+8|0;h[y>>3]=+h[y>>3]+k*.5}else{h[w>>3]=j+i;y=w+8|0;h[y>>3]=+h[y>>3]-k*.5}g=e+16|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[g>>2]=c[u>>2];c[g+4>>2]=c[u+4>>2];c[g+8>>2]=c[u+8>>2];c[g+12>>2]=c[u+12>>2];g=e+32|0;y=e+48|0;u=e+64|0;c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2];g=e+80|0;y=e+96|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];c[g>>2]=c[v>>2];c[g+4>>2]=c[v+4>>2];c[g+8>>2]=c[v+8>>2];c[g+12>>2]=c[v+12>>2];g=7}while(0);l=x;return g|0}function jg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0,l=0,m=0.0,n=0,o=0.0,p=0.0,q=0;q=c[f+16>>2]|0;p=+h[q+16>>3];j=p-+h[q+88>>3];m=j+-4.0;l=wg(d,f,g,i,-1)|0;if(!l){n=~~(j+(m>=0.0?-3.5:-4.5));k=c[e>>2]|0;k=(k|0)>(n|0)?n:k}else{k=xg(d,f,l)|0;do if(!k){n=c[l+16>>2]|0;j=+h[n+240>>3]+ +h[n+16>>3];if(!(a[n+156>>0]|0)){j=+(c[(c[d+16>>2]|0)+248>>2]|0)*.5+j;break}else{j=j+ +(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+32>>3]+ +(c[e+8>>2]|0);while(0);o=j<m?j:m;k=~~(o+(o>=0.0?.5:-.5))}o=+(k|0);n=(a[q+156>>0]|0)==1;if(n?(c[q+104>>2]|0)!=0:0)m=p+10.0;else m=p+4.0+ +h[q+96>>3];l=wg(d,f,g,i,1)|0;if(!l){f=~~(m+(m>=0.0?.5:-.5));k=c[e+4>>2]|0;k=(k|0)<(f|0)?f:k}else{k=xg(d,f,l)|0;do if(!k){f=c[l+16>>2]|0;j=+h[f+16>>3]-+h[f+88>>3];if(!(a[f+156>>0]|0)){j=j-+(c[(c[d+16>>2]|0)+248>>2]|0)*.5;break}else{j=j-+(c[e+8>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+16>>3]-+(c[e+8>>2]|0);while(0);m=j>m?j:m;k=~~(m+(m>=0.0?.5:-.5))}j=+(k|0);if(n?(c[q+104>>2]|0)!=0:0){j=j-+h[q+96>>3];if(j<o)j=p}p=+h[q+24>>3];d=c[(c[d+16>>2]|0)+196>>2]|0;q=c[q+232>>2]|0;m=p-+h[d+(q<<6)+16>>3];p=+h[d+(q<<6)+24>>3]+p;h[b>>3]=o;h[b+8>>3]=m;h[b+16>>3]=j;h[b+24>>3]=p;return}function kg(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)if((c[b+176>>2]|0)>1)b=1;else b=(c[b+184>>2]|0)>1&1;else b=0;return b|0}function lg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=l;l=l+32|0;f=g;switch(d|0){case 1:{vg(f,+h[b>>3],e,+h[b+16>>3],+h[b+8>>3]);break}case 4:{vg(f,+h[b>>3],+h[b+24>>3],+h[b+16>>3],e);break}default:{}}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2];c[a+16>>2]=c[f+16>>2];c[a+20>>2]=c[f+20>>2];c[a+24>>2]=c[f+24>>2];c[a+28>>2]=c[f+28>>2];l=g;return}function mg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0;l=c[b+16>>2]|0;k=l+(e<<5)|0;j=+h[k>>3];m=l+(e<<5)+8|0;g=+h[m>>3];n=l+(e<<5)+16|0;f=+h[n>>3];l=l+(e<<5)+24|0;i=+h[l>>3];if(j==f){d=c[(c[d+16>>2]|0)+196>>2]|0;o=e+1|0;j=+(c[b>>2]|0);g=+h[d+(o<<6)+24>>3]+ +h[(c[(c[c[d+(o<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];f=+(c[b+4>>2]|0);i=+h[(c[(c[c[d+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[d+(e<<6)+16>>3];h[k>>3]=j;h[m>>3]=g;h[n>>3]=f;h[l>>3]=i}h[a>>3]=j;h[a+8>>3]=g;h[a+16>>3]=f;h[a+24>>3]=i;return}function ng(b){b=b|0;var d=0,e=0;b=c[b+16>>2]|0;e=b+16|0;d=0;while(1){b=c[c[b+180>>2]>>2]|0;b=c[(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0;if((a[b+156>>0]|0)!=1)break;if((c[b+184>>2]|0)!=1)break;if((c[b+176>>2]|0)!=1)break;if(+h[b+16>>3]!=+h[e>>3])break;d=d+1|0}return d|0}function og(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=l;l=l+32|0;j=k;h=sg(b,-1)|0;b=sg(b,1)|0;if(!((h|0)!=0?!(_z(h)|0):0))i=3;do if((i|0)==3){if(b|0?(_z(b)|0)==0:0)break;h=tg(d,-1)|0;b=tg(d,1)|0;if(h|0?(_z(h)|0)==0:0)break;if(b|0?(_z(b)|0)==0:0)break;h=e+52|0;b=0;while(1){if((b|0)>=(c[h>>2]|0))break;d=e+56+(b<<5)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];Lz(a,j);b=b+1|0}h=c[a+80>>2]|0;i=g+-3|0;b=0;while(1){if((b|0)>=(g|0))break;e=135024+(b<<5)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[j+16>>2]=c[e+16>>2];c[j+20>>2]=c[e+20>>2];c[j+24>>2]=c[e+24>>2];c[j+28>>2]=c[e+28>>2];Lz(a,j);b=b+1|0}d=h+1|0;i=i+d|0;h=c[f+52>>2]|0;while(1){b=h+-1|0;if((h|0)<=0)break;h=f+56+(b<<5)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];Lz(a,j);h=b}ug(a,d,i)}while(0);l=k;return}function pg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[e>>2]|0;while(1){if(!b)break;a=c[c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;b=b+-1|0}c[e>>2]=f+1;g=d+(f<<4)|0;b=d+(f+-1<<4)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];f=c[e>>2]|0;c[e>>2]=f+1;f=d+(f<<4)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];f=d+(c[e>>2]<<4)|0;e=(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];return a|0}function qg(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0;m=d+84|0;l=d+80|0;e=0;d=b;a:while(1){j=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;k=j+16|0;if((a[(c[k>>2]|0)+156>>0]|0)!=1)break;if(($a[c[17228>>2]&31](j)|0)<<24>>24)break;d=c[l>>2]|0;while(1){if((e|0)>=(d|0))break a;if(!(+h[(c[m>>2]|0)+(e<<5)+8>>3]>+h[(c[k>>2]|0)+24>>3]))break;e=e+1|0}d=c[m>>2]|0;b=c[k>>2]|0;do if(!(+h[d+(e<<5)+24>>3]<+h[b+24>>3])){g=+h[d+(e<<5)>>3];i=~~g;f=+h[d+(e<<5)+16>>3];if(!(c[b+104>>2]|0)){rg(j,i,~~((f+g)*.5),~~f);break}else{rg(j,i,~~f,~~(+h[b+96>>3]+f));break}}while(0);d=c[c[(c[k>>2]|0)+180>>2]>>2]|0}return}function rg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+16>>2]|0;h[a+16>>3]=+(d|0);h[a+88>>3]=+(d-b|0);h[a+96>>3]=+(e-d|0);return}function sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180>>2]|0;h=((h|0)==2?a:a+-48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172>>2]|0;h=((h|0)==3?a:a+48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((O(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(O((c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function ug(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0;l=a+84|0;i=b+-1|0;while(1){if((i|0)>(d|0))break;f=c[l>>2]|0;j=f+(i<<5)|0;e=+h[j>>3];if(!(i-b&1)){f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e>=m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}else{f=f+(i<<5)+16|0;m=+h[f>>3];g=~~((m+e)*.5);if(e+16.0>m){h[j>>3]=+(g+-8|0);h[f>>3]=+(g+8|0)}}i=i+1|0}k=(c[a+80>>2]|0)+-1|0;g=0;while(1){if((g|0)>=(k|0))break;i=c[l>>2]|0;f=i+(g<<5)|0;j=g+1|0;a=i+(j<<5)|0;if(!((g|0)<(b|0)|(g|0)>(d|0))?(g-b&1|0)==0:0){e=+h[f>>3]+16.0;f=i+(j<<5)+16|0;if(e>+h[f>>3])h[f>>3]=e;e=+h[i+(g<<5)+16>>3]+-16.0;if(!(e<+h[a>>3])){g=j;continue}h[a>>3]=e;g=j;continue}if(!((g|0)<(d|0)&(j|0)>=(b|0))){g=j;continue}if(j-b&1|0){g=j;continue}e=+h[i+(j<<5)+16>>3];if(+h[f>>3]+16.0>e)h[f>>3]=e+-16.0;f=i+(g<<5)+16|0;e=+h[a>>3];if(!(+h[f>>3]+-16.0<e)){g=j;continue}h[f>>3]=e+16.0;g=j}return}function vg(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function wg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[(c[b+16>>2]|0)+196>>2]|0;h=c[d+16>>2]|0;j=c[h+232>>2]|0;i=k+(j<<6)|0;j=k+(j<<6)+4|0;h=c[h+236>>2]|0;a:do{h=h+g|0;if((h|0)<=-1){b=0;break}if((h|0)>=(c[i>>2]|0)){b=0;break}b=c[(c[j>>2]|0)+(h<<2)>>2]|0;k=c[b+16>>2]|0;switch(a[k+156>>0]|0){case 0:break a;case 1:{if(c[k+104>>2]|0)break a;break}default:{}}}while((zg(b,d,e,f)|0)<<24>>24!=0);return b|0}function xg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){i=c[d+212>>2]|0;h=i}else{i=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[i>>2]&3;h=c[(c[(c[((g|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;i=c[(c[(c[((g|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0}d=c[e+16>>2]|0;if(!(a[d+156>>0]|0)){e=c[d+212>>2]|0;e=(e|0)==(b|0)?0:e;return ((e|0)==(h|0)|((e|0)==0|(e|0)==(i|0))?0:e)|0}f=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[f>>2]&3;d=c[(c[(c[((g|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if(!(!((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))?(yg(d,e)|0)!=0:0)){d=c[(c[(c[((g|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))d=0;else{e=(yg(d,e)|0)==0;return (e?0:d)|0}}return d|0}function yg(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;d=c[a+16>>2]|0;a=c[b+16>>2]|0;f=+h[a+16>>3];if((+h[d+16>>3]<=f?f<=+h[d+32>>3]:0)?(e=+h[a+24>>3],+h[d+24>>3]<=e):0)a=e<=+h[d+40>>3]&1;else a=0;return a|0}function zg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=c[b+16>>2]|0;j=(c[i+236>>2]|0)>(c[(c[d+16>>2]|0)+236>>2]|0);a:do if((c[i+184>>2]|0)==1){b:do if(f|0){h=0;b=c[c[i+180>>2]>>2]|0;while(1){if((h|0)>=2)break b;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((b|0)==(d|0))break b;g=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[g+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[g+184>>2]|0)!=1)break b;if(!(a[g+156>>0]|0))break b;if((c[b+184>>2]|0)!=1)break b;if(!(a[b+156>>0]|0))break b;h=h+1|0;f=c[c[b+180>>2]>>2]|0;b=c[c[g+180>>2]>>2]|0}}while(0);if(e|0?(c[i+176>>2]|0)==1:0){g=0;d=e;b=c[c[i+172>>2]>>2]|0;while(1){if((g|0)>=2){b=0;break a}b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((b|0)==(d|0)){b=0;break a}f=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[f+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[f+176>>2]|0)!=1){b=0;break a}if(!(a[f+156>>0]|0)){b=0;break a}if((c[b+176>>2]|0)!=1){b=0;break a}if(!(a[b+156>>0]|0)){b=0;break a}g=g+1|0;d=c[c[b+172>>2]>>2]|0;b=c[c[f+172>>2]>>2]|0}}else b=0}else b=0;while(0);return b|0}function Ag(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Bg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];return (~~((+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d))|0)>0|0}function Cg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;R=l;l=l+256|0;D=R+232|0;C=R+216|0;P=R+88|0;O=R+80|0;K=R+64|0;L=R+200|0;M=R+184|0;N=R;E=R+168|0;F=R+152|0;G=R+136|0;H=R+120|0;I=R+104|0;B=c[g>>2]&3;J=c[((B|0)==3?g:g+48|0)+40>>2]|0;B=c[((B|0)==2?g:g+-48|0)+40>>2]|0;do if((By(J)|0)!=2?(By(B)|0)!=2:0){g=0;j=0;k=0;while(1){if((k|0)>=(f|0))break;A=c[(c[d+(k+e<<2)>>2]|0)+16>>2]|0;g=g+((c[A+96>>2]|0)!=0&1)|0;if(!((a[A+44>>0]|0)==0?(a[A+84>>0]|0)==0:0))j=1;k=k+1|0}if(!j)if(!g){Eg(J,B,d,e,f,i);break}else{Jg(J,B,d,e,f,i,g);break}y=vw(156)|0;z=Kg(b,y)|0;t=Ip(z,78320,1)|0;No(t,122277,280,1)|0;Km(t,80018,80032)|0;m=+h[(c[B+16>>2]|0)+16>>3];s=+h[(c[J+16>>2]|0)+16>>3];A=b+16|0;q=(c[(c[A>>2]|0)+116>>2]&1|0)==0;r=q?B:J;q=q?J:B;t=Lg(t,q)|0;u=Lg(z,r)|0;g=0;p=0;while(1){if((p|0)>=(f|0))break;j=d+(p+e<<2)|0;while(1){o=c[j>>2]|0;n=o+16|0;j=c[n>>2]|0;if(!(a[j+112>>0]|0))break;else j=j+116|0}if((c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)==(q|0))k=Mg(z,t,u,o)|0;else k=Mg(z,u,t,o)|0;j=c[n>>2]|0;c[j+120>>2]=k;if(!g)if((a[j+44>>0]|0)==0?(a[j+84>>0]|0)==0:0){c[(c[k+16>>2]|0)+120>>2]=o;g=k}else g=0;p=p+1|0}if(!g)x=an(z,t,u,0,1)|0;else x=g;Cm(x,c[42218]|0,78324)|0;g=z+16|0;n=c[g>>2]|0;c[n+144>>2]=c[(c[A>>2]|0)+144>>2];c[n+188>>2]=z;IB(z,i);Bf(z);kj(z,0);uh(z,0);xi(z,0);q=q+16|0;i=c[q>>2]|0;n=c[r+16>>2]|0;r=t+16|0;o=c[r>>2]|0;p=o+16|0;v=+(~~m|0);w=+(~~((+h[(c[u+16>>2]|0)+16>>3]+ +h[p>>3])*.5)|0);m=+(~~s|0);s=+(~~((+h[i+16>>3]-+h[i+96>>3]+ +h[n+16>>3]+ +h[n+88>>3])*.5)|0);n=o+24|0;g=(c[g>>2]|0)+192|0;while(1){j=c[g>>2]|0;if(!j)break;do if((j|0)!=(t|0)){g=c[j+16>>2]|0;k=g+24|0;if((j|0)==(u|0)){h[k>>3]=m;h[g+16>>3]=w;break}else{h[k>>3]=s;break}}else{h[n>>3]=v;h[p>>3]=w;g=o}while(0);g=g+164|0}ek(z);Yf(z,0);$x(z);k=c[q>>2]|0;g=c[r>>2]|0;if(!(c[(c[A>>2]|0)+116>>2]&1)){j=g+16|0;m=+h[k+24>>3]-+h[g+24>>3]}else{j=g+24|0;m=+h[g+16>>3]+ +h[k+24>>3]}h[K>>3]=+h[k+16>>3]-+h[j>>3];h[K+8>>3]=m;i=N+16|0;t=N+32|0;u=N+48|0;r=0;while(1){if((r|0)>=(f|0))break;g=d+(r+e<<2)|0;while(1){j=c[g>>2]|0;q=j+16|0;g=c[q>>2]|0;if(!(a[g+112>>0]|0))break;else g=g+116|0}o=c[g+120>>2]|0;p=o+16|0;g=c[p>>2]|0;if(!((o|0)==(x|0)&(c[g+120>>2]|0)==0)){n=c[c[g+8>>2]>>2]|0;o=n+4|0;j=Iz(j,c[o>>2]|0)|0;c[j+8>>2]=c[n+8>>2];g=j+16|0;k=n+16|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(L,C,D,S);c[g>>2]=c[L>>2];c[g+4>>2]=c[L+4>>2];c[g+8>>2]=c[L+8>>2];c[g+12>>2]=c[L+12>>2];c[j+12>>2]=c[n+12>>2];g=j+32|0;S=n+32|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(M,C,D,k);c[g>>2]=c[M>>2];c[g+4>>2]=c[M+4>>2];c[g+8>>2]=c[M+8>>2];c[g+12>>2]=c[M+12>>2];g=0;while(1){if((g|0)>=(c[o>>2]|0))break;k=(c[j>>2]|0)+(g<<4)|0;T=(c[n>>2]|0)+(g<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[T>>2];c[C+4>>2]=c[T+4>>2];c[C+8>>2]=c[T+8>>2];c[C+12>>2]=c[T+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(E,C,D,S);c[k>>2]=c[E>>2];c[k+4>>2]=c[E+4>>2];c[k+8>>2]=c[E+8>>2];c[k+12>>2]=c[E+12>>2];c[N>>2]=c[E>>2];c[N+4>>2]=c[E+4>>2];c[N+8>>2]=c[E+8>>2];c[N+12>>2]=c[E+12>>2];k=g+1|0;if((k|0)>=(c[o>>2]|0)){Q=48;break}S=(c[j>>2]|0)+(k<<4)|0;k=(c[n>>2]|0)+(k<<4)|0;T=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(F,C,D,T);c[S>>2]=c[F>>2];c[S+4>>2]=c[F+4>>2];c[S+8>>2]=c[F+8>>2];c[S+12>>2]=c[F+12>>2];c[i>>2]=c[F>>2];c[i+4>>2]=c[F+4>>2];c[i+8>>2]=c[F+8>>2];c[i+12>>2]=c[F+12>>2];S=g+2|0;T=(c[j>>2]|0)+(S<<4)|0;S=(c[n>>2]|0)+(S<<4)|0;k=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(G,C,D,k);c[T>>2]=c[G>>2];c[T+4>>2]=c[G+4>>2];c[T+8>>2]=c[G+8>>2];c[T+12>>2]=c[G+12>>2];c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];T=g+3|0;k=(c[n>>2]|0)+(T<<4)|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(H,C,D,S);c[u>>2]=c[H>>2];c[u+4>>2]=c[H+4>>2];c[u+8>>2]=c[H+8>>2];c[u+12>>2]=c[H+12>>2];eu((c[A>>2]|0)+16|0,N);g=T}if((Q|0)==48)Q=0;g=c[(c[q>>2]|0)+96>>2]|0;if(g|0){T=g+56|0;p=(c[(c[p>>2]|0)+96>>2]|0)+56|0;S=c[(c[A>>2]|0)+116>>2]&1;c[C>>2]=c[p>>2];c[C+4>>2]=c[p+4>>2];c[C+8>>2]=c[p+8>>2];c[C+12>>2]=c[p+12>>2];c[D>>2]=c[K>>2];c[D+4>>2]=c[K+4>>2];c[D+8>>2]=c[K+8>>2];c[D+12>>2]=c[K+12>>2];Ng(I,C,D,S);c[T>>2]=c[I>>2];c[T+4>>2]=c[I+4>>2];c[T+8>>2]=c[I+8>>2];c[T+12>>2]=c[I+12>>2];T=c[(c[q>>2]|0)+96>>2]|0;a[T+81>>0]=1;bB(b,T)}}r=r+1|0}Og(z,y)}else Q=3;while(0);if((Q|0)==3?(c[41924]|0)==0:0){c[41924]=1;_l(0,78197,O)|0;Q=Dn(J)|0;S=(qn(b)|0)!=0;T=Dn(B)|0;c[P>>2]=Q;c[P+4>>2]=S?122546:122549;c[P+8>>2]=T;_l(3,78303,P)|0}l=R;return}function Dg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;z=l;l=l+1600|0;u=z+1552|0;n=z+1536|0;t=z+840|0;v=z+144|0;w=z+1584|0;j=z+32|0;s=z+16|0;o=z;q=c[f>>2]&3;p=c[((q|0)==3?f:f+48|0)+40>>2]|0;x=f+-48|0;q=c[((q|0)==2?f:x)+40>>2]|0;r=f+16|0;k=c[r>>2]|0;i=c[k+172>>2]|0;while(1){m=c[(c[i+16>>2]|0)+172>>2]|0;if(!m)break;else i=m}k=(c[k+96>>2]|0)+56|0;i=(c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)+16|0;m=(c[i>>2]|0)+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[r>>2]|0;a[(c[k+96>>2]|0)+81>>0]=1;if((g|0)!=2){k=c[i>>2]|0;C=+h[k+16>>3];E=C-+h[k+88>>3];C=+h[k+96>>3]+C;B=+h[k+24>>3];D=+h[k+80>>3]*.5+B;k=c[(c[b+16>>2]|0)+196>>2]|0;m=c[p+16>>2]|0;j=c[m+232>>2]|0;B=+(~~(+(~~(B-+h[k+(j<<6)+16>>3]-+h[m+24>>3]+ +h[k+(j<<6)+24>>3])|0)*.16666666666666666)|0);B=D-(B<5.0?5.0:B);Gg(b,d,e,p,f,t,1);Gg(b,d,e,q,f,v,0);j=t+52|0;k=c[j>>2]|0;m=k+-1|0;A=+h[t+56+(m<<5)>>3];h[16878]=A;h[16879]=+h[t+56+(m<<5)+24>>3];h[16880]=E;h[16881]=B;h[16882]=A;h[16883]=B;m=v+52|0;i=(c[m>>2]|0)+-1|0;A=+h[v+56+(i<<5)+16>>3];h[16884]=A;h[16885]=D;h[16886]=C;h[16889]=B;h[16887]=+h[v+56+(i<<5)+24>>3];h[16888]=A;i=0;while(1){if((i|0)>=(k|0)){i=0;break}k=t+56+(i<<5)|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];c[u+16>>2]=c[k+16>>2];c[u+20>>2]=c[k+20>>2];c[u+24>>2]=c[k+24>>2];c[u+28>>2]=c[k+28>>2];Lz(e,u);i=i+1|0;k=c[j>>2]|0}while(1){if((i|0)==3)break;t=135024+(i<<5)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];Lz(e,u);i=i+1|0}j=c[m>>2]|0;while(1){i=j+-1|0;if((j|0)<=0)break;j=v+56+(i<<5)|0;c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];c[u+16>>2]=c[j+16>>2];c[u+20>>2]=c[j+20>>2];c[u+24>>2]=c[j+24>>2];c[u+28>>2]=c[j+28>>2];Lz(e,u);j=i}if((g|0)==10)j=ny(e,w)|0;else j=ty(e,w)|0;i=c[w>>2]|0;if(i|0)y=17}else{i=(c[p+16>>2]|0)+16|0;v=k+16|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];Ag(s,n,u);v=(c[q+16>>2]|0)+16|0;i=(c[r>>2]|0)+56|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];c[u>>2]=c[i>>2];c[u+4>>2]=c[i+4>>2];c[u+8>>2]=c[i+8>>2];c[u+12>>2]=c[i+12>>2];Ag(o,n,u);i=c[(c[r>>2]|0)+96>>2]|0;D=+h[i+56>>3];E=+h[i+64>>3]-+h[i+32>>3]*.5;i=j+16|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];i=j+32|0;v=j+48|0;y=j+64|0;h[j+64>>3]=D;h[j+72>>3]=E;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[i>>2]=c[y>>2];c[i+4>>2]=c[y+4>>2];c[i+8>>2]=c[y+8>>2];c[i+12>>2]=c[y+12>>2];i=j+80|0;y=j+96|0;c[y>>2]=c[o>>2];c[y+4>>2]=c[o+4>>2];c[y+8>>2]=c[o+8>>2];c[y+12>>2]=c[o+12>>2];c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];c[w>>2]=7;i=7;y=17}if((y|0)==17)Jz(f,c[((c[f>>2]&3|0)==2?f:x)+40>>2]|0,j,i,17224);l=z;return}function Eg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=l;l=l+352|0;x=N+336|0;w=N+320|0;L=N+128|0;u=N+304|0;y=N+288|0;M=N+112|0;E=N+96|0;F=N+80|0;G=N+64|0;H=N+48|0;I=N+32|0;J=N+16|0;K=N;a=a+16|0;q=(c[a>>2]|0)+16|0;v=(c[d+(e<<2)>>2]|0)+16|0;s=(c[v>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[x>>2]=c[s>>2];c[x+4>>2]=c[s+4>>2];c[x+8>>2]=c[s+8>>2];c[x+12>>2]=c[s+12>>2];Ag(u,w,x);C=+h[u>>3];D=+h[u+8>>3];u=(c[b+16>>2]|0)+16|0;v=(c[v>>2]|0)+56|0;c[w>>2]=c[u>>2];c[w+4>>2]=c[u+4>>2];c[w+8>>2]=c[u+8>>2];c[w+12>>2]=c[u+12>>2];c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];Ag(y,w,x);A=+h[y>>3];B=+h[y+8>>3];if((f|0)>1){z=+h[(c[a>>2]|0)+80>>3];i=z*.5;z=z/+(f+-1|0)}else{i=0.0;z=0.0}p=(g|8|0)==10;m=L+8|0;q=L+16|0;r=(A+C*2.0)*.3333333333333333;s=L+32|0;t=(A*2.0+C)*.3333333333333333;n=L+24|0;u=L+48|0;v=L+64|0;w=L+80|0;x=L+96|0;y=L+112|0;k=L+128|0;o=L+136|0;i=D-i;b=0;while(1){if((b|0)>=(f|0))break;j=c[d+(b+e<<2)>>2]|0;h[L>>3]=C;h[m>>3]=D;if(p){Ig(M,r,i);c[q>>2]=c[M>>2];c[q+4>>2]=c[M+4>>2];c[q+8>>2]=c[M+8>>2];c[q+12>>2]=c[M+12>>2];Ig(E,t,i);c[s>>2]=c[E>>2];c[s+4>>2]=c[E+4>>2];c[s+8>>2]=c[E+8>>2];c[s+12>>2]=c[E+12>>2];a=4;g=3}else{h[q>>3]=C;h[n>>3]=D;Ig(F,r,i);c[s>>2]=c[F>>2];c[s+4>>2]=c[F+4>>2];c[s+8>>2]=c[F+8>>2];c[s+12>>2]=c[F+12>>2];Ig(G,r,i);c[u>>2]=c[G>>2];c[u+4>>2]=c[G+4>>2];c[u+8>>2]=c[G+8>>2];c[u+12>>2]=c[G+12>>2];Ig(H,r,i);c[v>>2]=c[H>>2];c[v+4>>2]=c[H+4>>2];c[v+8>>2]=c[H+8>>2];c[v+12>>2]=c[H+12>>2];Ig(I,t,i);c[w>>2]=c[I>>2];c[w+4>>2]=c[I+4>>2];c[w+8>>2]=c[I+8>>2];c[w+12>>2]=c[I+12>>2];Ig(J,t,i);c[x>>2]=c[J>>2];c[x+4>>2]=c[J+4>>2];c[x+8>>2]=c[J+8>>2];c[x+12>>2]=c[J+12>>2];Ig(K,t,i);c[y>>2]=c[K>>2];c[y+4>>2]=c[K+4>>2];c[y+8>>2]=c[K+8>>2];c[y+12>>2]=c[K+12>>2];h[k>>3]=A;h[o>>3]=B;a=10;g=9}h[L+(g<<4)>>3]=A;h[L+(g<<4)+8>>3]=B;Jz(j,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0,L,a,17224);i=i+z;b=b+1|0}l=N;return}function Fg(a,d,e,f,g,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;x=l;l=l+1440|0;t=x+1392|0;v=x+1424|0;w=x+696|0;u=x;r=c[j>>2]&3;q=c[((r|0)==3?j:j+48|0)+40>>2]|0;r=c[((r|0)==2?j:j+-48|0)+40>>2]|0;m=c[q+16>>2]|0;o=c[m+232>>2]|0;p=c[a+16>>2]|0;if((o|0)<(b[p+238>>1]|0)){y=c[p+196>>2]|0;p=o+1|0;n=+h[m+24>>3]-+h[y+(o<<6)+32>>3]-+h[(c[(c[c[y+(p<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[y+(p<<6)+40>>3]}else n=+(c[p+252>>2]|0);z=+(i+1|0);s=+(c[d+12>>2]|0)/z;n=n/z;Hg(a,d,e,q,j,w,1);Hg(a,d,e,r,j,u,0);r=w+52|0;j=u+52|0;a=(k|0)==0;d=e+80|0;m=0;while(1){if((m|0)>=(i|0))break;q=c[f+(m+g<<2)>>2]|0;p=c[r>>2]|0;o=p+-1|0;D=+h[w+56+(o<<5)>>3];B=+h[w+56+(o<<5)+8>>3];C=+h[w+56+(o<<5)+16>>3];h[16878]=D;h[16881]=B;m=m+1|0;z=+(m|0);A=s*z;h[16880]=C+A;z=B-n*z;h[16879]=z;h[16882]=D;h[16885]=z;o=(c[j>>2]|0)+-1|0;D=+h[u+56+(o<<5)+16>>3];h[16884]=D;h[16883]=z-n;B=+h[u+56+(o<<5)>>3];C=+h[u+56+(o<<5)+8>>3];h[16888]=D;h[16889]=C;h[16886]=B-A;h[16887]=z;o=0;while(1){if((o|0)>=(p|0)){o=0;break}p=w+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];Lz(e,t);o=o+1|0;p=c[r>>2]|0}while(1){if((o|0)==3)break;y=135024+(o<<5)|0;c[t>>2]=c[y>>2];c[t+4>>2]=c[y+4>>2];c[t+8>>2]=c[y+8>>2];c[t+12>>2]=c[y+12>>2];c[t+16>>2]=c[y+16>>2];c[t+20>>2]=c[y+20>>2];c[t+24>>2]=c[y+24>>2];c[t+28>>2]=c[y+28>>2];Lz(e,t);o=o+1|0}p=c[j>>2]|0;while(1){o=p+-1|0;if((p|0)<=0)break;p=u+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];Lz(e,t);p=o}if(a)o=ty(e,v)|0;else o=ny(e,v)|0;p=c[v>>2]|0;if(!p)break;Jz(q,c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0,o,p,17224);c[d>>2]=0}l=x;return}function Gg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;jg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=4;if(!(i<<24>>24))Pz(d,f,2,g,0);else Mz(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3]+ +h[e+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];lg(m,j,4,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Hg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;jg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=1;if(!(i<<24>>24))Pz(d,f,2,g,0);else Mz(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[e+24>>3]-+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];lg(m,j,1,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Ig(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Jg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0.0;Y=l;l=l+288|0;R=Y+256|0;Q=Y+240|0;P=Y+224|0;V=Y+280|0;W=Y+272|0;X=Y+32|0;S=Y+16|0;T=Y;m=Y+208|0;n=Y+192|0;o=c[e+(f<<2)>>2]|0;U=vw(g<<2)|0;k=0;while(1){if((k|0)>=(g|0))break;c[U+(k<<2)>>2]=c[e+(k+f<<2)>>2];k=k+1|0}rL(U,g,4,11);e=b+16|0;f=(c[e>>2]|0)+16|0;o=o+16|0;C=(c[o>>2]|0)+16|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[C>>2];c[R+4>>2]=c[C+4>>2];c[R+8>>2]=c[C+8>>2];c[R+12>>2]=c[C+12>>2];Ag(m,Q,R);c[S>>2]=c[m>>2];c[S+4>>2]=c[m+4>>2];c[S+8>>2]=c[m+8>>2];c[S+12>>2]=c[m+12>>2];C=d+16|0;f=(c[C>>2]|0)+16|0;o=(c[o>>2]|0)+56|0;c[Q>>2]=c[f>>2];c[Q+4>>2]=c[f+4>>2];c[Q+8>>2]=c[f+8>>2];c[Q+12>>2]=c[f+12>>2];c[R>>2]=c[o>>2];c[R+4>>2]=c[o+4>>2];c[R+8>>2]=c[o+8>>2];c[R+12>>2]=c[o+12>>2];Ag(n,Q,R);c[T>>2]=c[n>>2];c[T+4>>2]=c[n+4>>2];c[T+8>>2]=c[n+8>>2];c[T+12>>2]=c[n+12>>2];w=+h[(c[e>>2]|0)+96>>3]+ +h[S>>3];x=+h[T>>3]-+h[(c[C>>2]|0)+88>>3];u=x+w;v=u*.5;C=c[U>>2]|0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];o=X+16|0;c[o>>2]=c[S>>2];c[o+4>>2]=c[S+4>>2];c[o+8>>2]=c[S+8>>2];c[o+12>>2]=c[S+12>>2];e=X+32|0;c[e>>2]=c[T>>2];c[e+4>>2]=c[T+4>>2];c[e+8>>2]=c[T+8>>2];c[e+12>>2]=c[T+12>>2];f=X+48|0;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];Jz(C,c[((c[C>>2]&3|0)==2?C:C+-48|0)+40>>2]|0,X,4,17224);C=c[(c[C+16>>2]|0)+96>>2]|0;h[C+56>>3]=v;z=S+8|0;r=+h[z>>3];s=+h[C+32>>3];h[C+64>>3]=(s+6.0)*.5+r;a[C+81>>0]=1;r=r+3.0;B=+h[C+24>>3];A=(u-B)*.5;B=(B+u)*.5;C=X+24|0;D=X+40|0;E=X+56|0;F=X+64|0;G=T+8|0;H=X+72|0;I=X+80|0;J=X+88|0;K=X+96|0;L=X+104|0;M=X+112|0;N=X+120|0;O=V+4|0;n=(i|0)==6&1;q=0.0;p=0.0;s=s+r;m=1;while(1){if((m|0)>=(j|0)){y=6;break}d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];h[N>>3]=Z;s=+h[(c[(c[d+16>>2]|0)+96>>2]|0)+32>>3];t=Z+s*.5;s=Z+s}else{k=d+16|0;b=c[(c[k>>2]|0)+96>>2]|0;if((m|0)==1){p=+h[b+24>>3];q=(p+u)*.5;p=(u-p)*.5}r=r+-6.0-+h[b+32>>3];c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];t=r+-6.0;h[C>>3]=t;h[e>>3]=+h[T>>3];h[D>>3]=t;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=r;h[K>>3]=p;h[L>>3]=r;h[M>>3]=p;h[N>>3]=+h[z>>3];t=+h[(c[(c[k>>2]|0)+96>>2]|0)+32>>3]*.5+r}c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=jy(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break;i=c[(c[d+16>>2]|0)+96>>2]|0;h[i+56>>3]=v;h[i+64>>3]=t;a[i+81>>0]=1;Jz(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17224);m=m+1|0}a:do if((y|0)==6){v=(x+w*2.0)*.3333333333333333;u=(x*2.0+w)*.3333333333333333;while(1){if((m|0)>=(g|0))break;d=c[U+(m<<2)>>2]|0;if(!(m&1)){c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=A;h[C>>3]=+h[z>>3];h[e>>3]=A;h[D>>3]=s;h[f>>3]=B;h[E>>3]=s;h[F>>3]=B;t=+h[G>>3];h[H>>3]=t;Z=+h[T>>3];h[I>>3]=Z;h[J>>3]=t;h[K>>3]=Z;Z=s+6.0;h[L>>3]=Z;h[M>>3]=+h[S>>3];s=Z;t=p;p=Z}else{y=(m|0)==1;t=y?v:p;q=y?u:q;p=r+-6.0;c[X>>2]=c[S>>2];c[X+4>>2]=c[S+4>>2];c[X+8>>2]=c[S+8>>2];c[X+12>>2]=c[S+12>>2];h[o>>3]=+h[S>>3];r=r+-12.0;h[C>>3]=r;h[e>>3]=+h[T>>3];h[D>>3]=r;c[f>>2]=c[T>>2];c[f+4>>2]=c[T+4>>2];c[f+8>>2]=c[T+8>>2];c[f+12>>2]=c[T+12>>2];h[F>>3]=q;h[H>>3]=+h[G>>3];h[I>>3]=q;h[J>>3]=p;h[K>>3]=t;h[L>>3]=p;h[M>>3]=t;r=p;p=+h[z>>3]}h[N>>3]=p;c[O>>2]=8;c[V>>2]=X;c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];c[Q>>2]=c[T>>2];c[Q+4>>2]=c[T+4>>2];c[Q+8>>2]=c[T+8>>2];c[Q+12>>2]=c[T+12>>2];c[R>>2]=c[V>>2];c[R+4>>2]=c[V+4>>2];k=jy(P,Q,R,W,n)|0;b=c[W>>2]|0;if(!b)break a;Jz(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17224);m=m+1|0;p=t}_I(U)}while(0);l=Y;return}function Kg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0;g=l;l=l+16|0;f=g;j=(qn(b)|0)==0;j=j?17648:17640;a[f>>0]=a[j>>0]|0;a[f+1>>0]=a[j+1>>0]|0;a[f+2>>0]=a[j+2>>0]|0;a[f+3>>0]=a[j+3>>0]|0;f=gn(78335,f,0)|0;No(f,122277,280,1)|0;ym(f,0,80018,174181)|0;j=vw(96)|0;e=c[f+16>>2]|0;c[e+8>>2]=j;i=c[b+16>>2]|0;k=c[i+8>>2]|0;h[j>>3]=+h[k>>3];h[j+24>>3]=+h[k+24>>3];a[e+115>>0]=a[i+115>>0]|0;c[e+116>>2]=c[i+116>>2]&1^1;c[e+248>>2]=c[i+248>>2];c[e+252>>2]=c[i+252>>2];e=Dm(so(b)|0,1,0)|0;while(1){if(!e)break;ym(f,1,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=Dm(so(b)|0,1,e)|0}e=Dm(so(b)|0,2,0)|0;while(1){if(!e)break;ym(f,2,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=Dm(so(b)|0,2,e)|0}if(!(ym(f,2,96251,0)|0))ym(f,2,96251,174181)|0;if(!(ym(f,2,96242,0)|0))ym(f,2,96242,174181)|0;Pg(f,d);l=g;return f|0}function Lg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;a=no(a,Dn(b)|0,1)|0;No(a,122241,304,1)|0;Mm(b,a)|0;if((By(b)|0)==2){f=b+16|0;b=ww((rJ(c[c[(c[f>>2]|0)+104>>2]>>2]|0)|0)+3|0)|0;c[d>>2]=c[c[(c[f>>2]|0)+104>>2]>>2];pL(b,78330,d)|0;Km(a,86240,b)|0}l=e;return a|0}function Mg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=an(a,b,c,0,1)|0;No(c,122254,176,1)|0;Mm(d,c)|0;return c|0}function Ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i+16|0;f=i;if(e|0){j=+h[b>>3];e=b+8|0;h[b>>3]=+h[e>>3];h[e>>3]=-j};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];Ag(a,f,g);l=i;return}function Og(a,b){a=a|0;b=b|0;c[42233]=c[b>>2];c[42237]=c[b+4>>2];c[42238]=c[b+8>>2];c[42218]=c[b+12>>2];c[42219]=c[b+16>>2];c[42225]=c[b+20>>2];c[42224]=c[b+24>>2];c[42223]=c[b+28>>2];c[42249]=c[b+32>>2];c[42241]=c[b+36>>2];c[42226]=c[b+40>>2];c[42236]=c[b+44>>2];c[42245]=c[b+48>>2];c[42244]=c[b+52>>2];c[42243]=c[b+56>>2];c[42248]=c[b+60>>2];c[42242]=c[b+64>>2];c[42227]=c[b+68>>2];c[42189]=c[b+72>>2];c[42190]=c[b+76>>2];c[42191]=c[b+80>>2];c[42201]=c[b+84>>2];c[42194]=c[b+88>>2];c[42195]=c[b+92>>2];c[42196]=c[b+96>>2];c[42198]=c[b+100>>2];c[42199]=c[b+104>>2];c[42202]=c[b+108>>2];c[42205]=c[b+112>>2];c[42203]=c[b+116>>2];c[42204]=c[b+120>>2];c[42207]=c[b+124>>2];c[42206]=c[b+128>>2];c[42208]=c[b+132>>2];c[42209]=c[b+136>>2];c[42200]=c[b+140>>2];c[42212]=c[b+144>>2];c[42184]=c[b+148>>2];c[42181]=c[b+152>>2];_I(b);Ef(a);ln(a)|0;return}function Pg(a,b){a=a|0;b=b|0;c[b>>2]=c[42233];c[b+4>>2]=c[42237];c[b+8>>2]=c[42238];c[b+12>>2]=c[42218];c[b+16>>2]=c[42219];c[b+20>>2]=c[42225];c[b+24>>2]=c[42224];c[b+28>>2]=c[42223];c[b+32>>2]=c[42249];c[b+36>>2]=c[42241];c[b+40>>2]=c[42226];c[b+44>>2]=c[42236];c[b+48>>2]=c[42245];c[b+52>>2]=c[42244];c[b+56>>2]=c[42243];c[b+60>>2]=c[42248];c[b+64>>2]=c[42242];c[b+68>>2]=c[42227];c[b+72>>2]=c[42189];c[b+76>>2]=c[42190];c[b+80>>2]=c[42191];c[b+84>>2]=c[42201];c[b+88>>2]=c[42194];c[b+92>>2]=c[42195];c[b+96>>2]=c[42196];c[b+100>>2]=c[42198];c[b+104>>2]=c[42199];c[b+108>>2]=c[42202];c[b+112>>2]=c[42205];c[b+116>>2]=c[42203];c[b+120>>2]=c[42204];c[b+124>>2]=c[42207];c[b+128>>2]=c[42206];c[b+132>>2]=c[42208];c[b+136>>2]=c[42209];c[b+140>>2]=c[42200];c[b+144>>2]=c[42212];c[b+152>>2]=c[42181];c[b+148>>2]=c[42184];c[42233]=0;c[42237]=ym(a,2,80259,0)|0;c[42238]=ym(a,2,80268,0)|0;b=ym(a,2,86614,0)|0;c[42218]=b;if(!b)c[42218]=ym(a,2,86614,174181)|0;c[42219]=0;c[42225]=0;c[42224]=ym(a,2,86494,0)|0;c[42223]=ym(a,2,86485,0)|0;c[42249]=ym(a,2,86790,0)|0;c[42241]=0;c[42226]=ym(a,2,86240,0)|0;c[42236]=ym(a,2,78340,0)|0;c[42245]=0;c[42244]=ym(a,2,86690,0)|0;c[42243]=ym(a,2,86676,0)|0;c[42248]=ym(a,2,86781,0)|0;c[42242]=0;c[42227]=0;c[42189]=ym(a,1,96049,0)|0;c[42190]=ym(a,1,96043,0)|0;c[42191]=ym(a,1,90671,0)|0;c[42201]=0;c[42194]=ym(a,1,86485,0)|0;c[42195]=ym(a,1,86494,0)|0;c[42196]=0;c[42198]=ym(a,1,86240,0)|0;c[42199]=0;c[42202]=0;c[42205]=ym(a,1,86446,0)|0;c[42203]=ym(a,1,86529,0)|0;c[42204]=ym(a,1,86535,0)|0;c[42207]=ym(a,1,86547,0)|0;c[42206]=ym(a,1,86385,0)|0;c[42208]=ym(a,1,86552,0)|0;c[42209]=ym(a,1,78352,0)|0;c[42200]=0;c[42212]=0;c[42184]=ym(a,0,86446,0)|0;return}function Qg(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0;d=c[(c[(c[a>>2]|0)+16>>2]|0)+96>>2]|0;a=c[(c[(c[b>>2]|0)+16>>2]|0)+96>>2]|0;b=(a|0)!=0;if(d)if(b?(f=+h[d+24>>3],i=+h[d+32>>3],e=+h[a+24>>3],g=+h[a+32>>3],!(f>e)):0)if(!(f<e))if(i>g)a=-1;else a=i<g&1;else a=1;else a=-1;else a=b&1;return a|0}function Rg(a){a=a|0;var b=0,d=0,e=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;d=c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;e=c[d+232>>2]|0;a=c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;b=c[a+232>>2]|0;if((e|0)<=(b|0))if((e|0)<(b|0))a=1;else a=(c[d+236>>2]|0)<(c[a+236>>2]|0)&1;else a=0;return a|0}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+180|0;g=(c[b+16>>2]|0)+172|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=Tg(a,f,b,e)|0;l=d;return b|0}function Tg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[b+4>>2]|0;a:do if((f|0)>0?(g=c[e+4>>2]|0,(g|0)>0):0)if((f|0)<(g|0)){f=c[b>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)==(d|0))break;else e=e+1|0}}else{f=c[e>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)==(a|0))break;else e=e+1|0}}else b=0;while(0);return b|0}function Ug(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+188|0;g=(c[b+16>>2]|0)+196|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=Tg(a,f,b,e)|0;l=d;return b|0}function Vg(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+180>>2]|0;if(!b)b=ww((c[d+184>>2]<<2)+8|0)|0;else b=yw(b,(c[d+184>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+180>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;d=c[f+180>>2]|0;f=f+184|0;b=c[f>>2]|0;c[f>>2]=b+1;c[d+(b<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=a+-48|0;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=ww((c[b+176>>2]<<2)+8|0)|0;else b=yw(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;b=b+176|0;f=c[b>>2]|0;c[b>>2]=f+1;c[d+(f<<2)>>2]=a;f=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;return a|0}function Wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+4|0;f=c[e>>2]|0;d=0;while(1){if((d|0)>=(f|0))break;g=c[a>>2]|0;h=g+(d<<2)|0;if((c[h>>2]|0)==(b|0)){i=4;break}else d=d+1|0}if((i|0)==4){i=f+-1|0;c[e>>2]=i;c[h>>2]=c[g+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=0}return}function Xg(a){a=a|0;if(!a)ma(78393,78403,117,78412);else{Wg((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180|0,a);Wg((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172|0,a);return}}function Yg(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+204>>2]|0;if(!b)b=ww((c[d+208>>2]<<2)+8|0)|0;else b=yw(b,(c[d+208>>2]<<2)+8|0)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+204>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[f+204>>2]|0;f=f+208|0;d=c[f>>2]|0;c[f>>2]=d+1;c[b+(d<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+204>>2]|0)+(c[e+208>>2]<<2)>>2]=0;return}function Zg(a){a=a|0;_g(a,(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+204|0);return}function _g(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+4|0;e=c[h>>2]|0;f=c[b>>2]|0;d=0;while(1){if((d|0)>=(e|0)){g=4;break}if((c[f+(d<<2)>>2]|0)==(a|0))break;else d=d+1|0}if((g|0)==4){if(!f)d=ww((e<<2)+8|0)|0;else d=yw(f,(e<<2)+8|0)|0;c[b>>2]=d;f=c[h>>2]|0;g=f+1|0;c[h>>2]=g;c[d+(f<<2)>>2]=a;c[(c[b>>2]|0)+(g<<2)>>2]=0}return}function $g(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=vw(96)|0;g=n+48|0;c[g>>2]=c[g>>2]|3;c[n>>2]=c[n>>2]&-4|2;h=vw(176)|0;m=n+16|0;c[m>>2]=h;c[((c[n>>2]&3|0)==3?n:g)+40>>2]=d;j=n+-48|0;c[((c[n>>2]&3|0)==2?n:j)+40>>2]=e;a[h+112>>0]=1;if(!f){c[h+156>>2]=1;b[h+154>>1]=1;b[h+168>>1]=1;b[h+170>>1]=1}else{c[n>>2]=c[n>>2]&15|c[f>>2]&-16;c[g>>2]=c[g>>2]&15|c[f>>2]&-16;l=f+16|0;i=c[l>>2]|0;b[h+168>>1]=b[i+168>>1]|0;b[h+154>>1]=b[i+154>>1]|0;c[h+156>>2]=c[i+156>>2];b[h+170>>1]=b[i+170>>1]|0;d=c[((c[n>>2]&3|0)==3?n:g)+40>>2]|0;e=c[f>>2]&3;k=f+48|0;if((d|0)!=(c[((e|0)==3?f:k)+40>>2]|0)){g=f+-48|0;if((d|0)==(c[((e|0)==2?f:g)+40>>2]|0)){h=h+16|0;d=i+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=h+16|0;d=i+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0));g=f+-48|0}d=c[((c[n>>2]&3|0)==2?n:j)+40>>2]|0;e=c[f>>2]&3;if((d|0)!=(c[((e|0)==2?f:g)+40>>2]|0)){if((d|0)==(c[((e|0)==3?f:k)+40>>2]|0)){h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+16|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}}else{h=(c[m>>2]|0)+56|0;d=(c[l>>2]|0)+56|0;e=h+40|0;do{c[h>>2]=c[d>>2];h=h+4|0;d=d+4|0}while((h|0)<(e|0))}d=(c[l>>2]|0)+172|0;if(!(c[d>>2]|0))c[d>>2]=n;c[(c[m>>2]|0)+116>>2]=f}return n|0}function ah(a,b,c){a=a|0;b=b|0;c=c|0;return Vg($g(a,b,c)|0)|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;f=c[a>>2]|0;d=c[b+16>>2]|0;c[d+164>>2]=f;e=f;if(f|0)c[(c[e+16>>2]|0)+168>>2]=b;c[a>>2]=b;c[d+168>>2]=0;if((e|0)==(b|0))ma(78429,78403,215,78445);else return}function ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((a|0)==(b|0))ma(78455,78403,220,78462);f=c[b+16>>2]|0;d=f+164|0;if(c[d>>2]|0)ma(78475,78403,221,78462);e=(c[a+16>>2]|0)+164|0;c[d>>2]=c[e>>2];d=c[e>>2]|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=b;c[f+168>>2]=a;c[e>>2]=b;return}function dh(a,b){a=a|0;b=b|0;var d=0,e=0;if(!(eh(a,b)|0))ma(78494,78403,231,78515);b=c[b+16>>2]|0;d=c[b+164>>2]|0;e=d;b=b+168|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=c[b>>2];b=c[b>>2]|0;if(!b)c[(c[a+16>>2]|0)+192>>2]=e;else c[(c[b+16>>2]|0)+164>>2]=e;return}function eh(a,b){a=a|0;b=b|0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if((a|0)==0|(a|0)==(b|0))break;a=(c[a+16>>2]|0)+164|0}return a|0}function fh(b){b=b|0;var d=0,e=0,f=0,g=0;d=vw(64)|0;c[d>>2]=c[d>>2]&-4|1;e=d+16|0;c[e>>2]=vw(304)|0;c[d+24>>2]=so(b)|0;g=c[e>>2]|0;a[g+156>>0]=1;h[g+96>>3]=1.0;h[g+88>>3]=1.0;h[g+80>>3]=1.0;c[g+216>>2]=1;c[g+176>>2]=0;g=vw(20)|0;f=c[e>>2]|0;c[f+172>>2]=g;c[f+184>>2]=0;f=vw(20)|0;c[(c[e>>2]|0)+180>>2]=f;bh(b,d);b=(c[b+16>>2]|0)+232|0;c[b>>2]=(c[b>>2]|0)+1;return d|0}function gh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=d+48|0;e=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[e+188>>2]|0;if(!f)e=ww((c[e+192>>2]<<2)+8|0)|0;else e=yw(f,(c[e+192>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0)+188>>2]=e;h=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;f=c[h+188>>2]|0;h=h+192|0;e=c[h>>2]|0;c[h>>2]=e+1;c[f+(e<<2)>>2]=d;g=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;c[(c[g+188>>2]|0)+(c[g+192>>2]<<2)>>2]=0;g=d+-48|0;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;if(!f)e=ww((c[e+200>>2]<<2)+8|0)|0;else e=yw(f,(c[e+200>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+196>>2]=e;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;e=e+200|0;h=c[e>>2]|0;c[e>>2]=h+1;c[f+(h<<2)>>2]=d;h=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;c[(c[h+196>>2]|0)+(c[h+200>>2]<<2)>>2]=0;a[(c[b+16>>2]|0)+240>>0]=1;a[(c[(Vf(b)|0)+16>>2]|0)+240>>0]=1;return}function hh(a){a=a|0;var b=0,d=0;if(!a)ma(78393,78403,269,78532);b=c[(c[a+16>>2]|0)+116>>2]|0;if(b|0?(d=(c[b+16>>2]|0)+172|0,(c[d>>2]|0)==(a|0)):0)c[d>>2]=0;Wg((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+188|0,a);Wg((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+196|0,a);return}function ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=(c[a+16>>2]|0)+172|0;e=c[d>>2]|0;do if((e|0)!=(b|0))if(!e){c[d>>2]=b;jh(a,b);break}else ma(80440,78403,340,78570);else _l(0,78549,f)|0;while(0);l=f;return}function jh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0;f=(c[d+16>>2]|0)+170|0;i=c[a+16>>2]|0;a=b[i+170>>1]|0;if((e[f>>1]|0)<(a&65535))b[f>>1]=a;g=i+168|0;h=i+154|0;f=i+156|0;a=d;while(1){if(!a)break;d=c[a+16>>2]|0;i=d+168|0;b[i>>1]=(e[i>>1]|0)+(e[g>>1]|0);i=d+154|0;b[i>>1]=(e[i>>1]|0)+(e[h>>1]|0);i=d+156|0;c[i>>2]=(c[i>>2]|0)+(c[f>>2]|0);a=c[d+172>>2]|0}return}function kh(d){d=d|0;var e=0,f=0,g=0,h=0;f=d+16|0;e=c[(c[f>>2]|0)+172>>2]|0;a:while(1){if(!e)break;lh(e,d);h=c[e+16>>2]|0;g=c[h+172>>2]|0;if(!(b[h+168>>1]|0))mh(e);while(1){if((a[(c[e+16>>2]|0)+112>>0]|0)!=1){e=g;continue a}e=c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){e=g;continue a}if((c[e+184>>2]|0)!=1){e=g;continue a}e=c[c[e+180>>2]>>2]|0;lh(e,d)}}c[(c[f>>2]|0)+172>>2]=0;return}function lh(a,d){a=a|0;d=d|0;var f=0;f=c[d+16>>2]|0;d=c[a+16>>2]|0;a=d+168|0;b[a>>1]=(e[a>>1]|0)-(e[f+168>>1]|0);a=d+154|0;b[a>>1]=(e[a>>1]|0)-(e[f+154>>1]|0);d=d+156|0;c[d>>2]=(c[d>>2]|0)-(c[f+156>>2]|0);return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)ma(78393,78403,128,78583);g=a+48|0;d=0;while(1){b=c[a>>2]|0;e=(c[(c[((b&3|0)==3?a:g)+40>>2]|0)+16>>2]|0)+180|0;f=c[(c[e>>2]|0)+(d<<2)>>2]|0;if(!f)break;if((f|0)==(a|0))Wg(e,a);d=d+1|0}g=a+-48|0;f=0;while(1){d=(c[(c[((b&3|0)==2?a:g)+40>>2]|0)+16>>2]|0)+172|0;e=c[(c[d>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)==(a|0)){Wg(d,a);b=c[a>>2]|0}f=f+1|0}return}function nh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=l;l=l+1040|0;n=p+1032|0;o=p;m=p+8|0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;i=c[d+196>>2]|0;h=i+(j<<6)|0;i=i+(j<<6)+4|0;g=0;d=0;while(1){if((g|0)>=(c[h>>2]|0))break;e=c[(c[i>>2]|0)+(g<<2)>>2]|0;f=e+16|0;if(c[(c[f>>2]|0)+112>>2]|0){if(!d){a[n>>0]=a[17644]|0;a[n+1>>0]=a[17645]|0;a[n+2>>0]=a[17646]|0;a[n+3>>0]=a[17647]|0;d=gn(78605,n,0)|0}c[o>>2]=g;pL(m,122187,o)|0;t=no(d,m,1)|0;No(t,78608,24,1)|0;q=c[(c[f>>2]|0)+180>>2]|0;r=c[q>>2]|0;r=c[(c[(c[((c[r>>2]&3|0)==2?r:r+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;q=c[q+4>>2]|0;q=c[(c[(c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;s=(r|0)>(q|0);f=c[t+16>>2]|0;c[f+12>>2]=s?q:r;c[f+16>>2]=s?r:q;c[f+20>>2]=e}g=g+1|0}if(d|0){if((mn(d)|0)>1)oh(d,h);ln(d)|0}j=j+1|0;d=c[k>>2]|0}l=p;return}function oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=0;h=co(a)|0;a:while(1){if(!h)break;i=eo(a,h)|0;j=h+16|0;g=i;while(1){if(!g){h=i;continue a}f=c[g+16>>2]|0;e=c[j>>2]|0;if((c[f+16>>2]|0)>(c[e+12>>2]|0)){if((c[e+16>>2]|0)<=(c[f+12>>2]|0))an(a,h,g,0,1)|0}else{an(a,g,h,0,1)|0;d=1}g=eo(a,g)|0}}do if(d|0){h=Ip(a,78613,1)|0;j=vw((mn(a)|0)<<2)|0;i=vw((mn(a)|0)<<2)|0;f=b+4|0;e=co(a)|0;b:while(1){if(!e){d=23;break}if((c[(c[e+16>>2]|0)+8>>2]|0)==0?on(a,e,1,1)|0:0){c:do if(ph(a,e,h,i)|0){g=mn(h)|0;if((qh(a,h,j)|0)!=(g|0)){d=17;break b}rL(i,g,4,12);d=0;while(1){if((d|0)>=(g|0))break c;b=i+(d<<2)|0;k=c[j+(d<<2)>>2]|0;c[(c[k+16>>2]|0)+236>>2]=c[b>>2];c[(c[f>>2]|0)+(c[b>>2]<<2)>>2]=k;d=d+1|0}}while(0);sh(h)}e=eo(a,e)|0}if((d|0)==17)ma(78618,78628,265,78639);else if((d|0)==23){_I(j);break}}while(0);return}function ph(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=c[b+16>>2]|0;c[h+8>>2]=1;h=c[(c[(c[h+20>>2]|0)+16>>2]|0)+236>>2]|0;c[e+((mn(d)|0)<<2)>>2]=h;io(d,b,1)|0;h=Pm(a,b)|0;f=0;while(1){if(!h)break;j=c[h>>2]&3;g=c[((j|0)==2?h:h+-48|0)+40>>2]|0;i=c[g+16>>2]|0;f=f+((c[(c[(c[i+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[(c[(c[((j|0)==3?h:h+48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[i+8>>2]|0))f=(ph(a,g,d,e)|0)+f|0;h=Rm(a,h)|0}h=Sm(a,b)|0;while(1){if(!h)break;i=c[h>>2]&3;g=c[((i|0)==3?h:h+48|0)+40>>2]|0;j=c[g+16>>2]|0;f=f+((c[(c[(c[(c[(c[((i|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[j+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)|0;if(!(c[j+8>>2]|0))f=(ph(a,g,d,e)|0)+f|0;h=Tm(a,h)|0}return f|0}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=0;while(1){e=th(a,b)|0;if(!e)break;c[d+(f<<2)>>2]=c[(c[e+16>>2]|0)+20>>2];po(b,e)|0;e=Pm(a,e)|0;while(1){if(!e)break;g=Rm(a,e)|0;dn(a,e)|0;e=g}f=f+1|0}return f|0}function rh(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function sh(a){a=a|0;var b=0,c=0;b=co(a)|0;while(1){if(!b)break;c=eo(a,b)|0;po(a,b)|0;b=c}return}function th(a,b){a=a|0;b=b|0;var c=0;c=co(b)|0;while(1){if(!c){c=0;break}if(!(on(a,c,1,0)|0))break;c=eo(b,c)|0}return c|0}function uh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;vh(b);i=b+16|0;f=0;e=0;while(1){if((f|0)>=(c[(c[i>>2]|0)+220>>2]|0))break;wh(b,f);f=f+1|0;e=(xh(b,0,d)|0)+e|0}yh(b);h=1;while(1){f=c[i>>2]|0;g=c[f+180>>2]|0;if((h|0)>(g|0))break;g=(zh(c[(c[f+184>>2]|0)+(h<<2)>>2]|0,d)|0)+e|0;h=h+1|0;e=g}do if((g|0)>0){f=Im(b,78653)|0;if(f|0?(IA(f)|0)<<24>>24==0:0)break;Yk(b);a[173893]=1;e=xh(b,2,d)|0}while(0);Ah(b,e);return}function vh(d){d=d|0;var e=0;if(0)xA();a[173893]=0;c[41927]=d;e=((nn(Vf(d)|0)|0)<<2)+4|0;c[41926]=vw(e)|0;c[41925]=vw(e)|0;qi(d);e=d+16|0;if(b[(c[e>>2]|0)+136>>1]&16)ri(d);Fk(d);tl(d,1);si(d);Hh(d);e=c[e>>2]|0;c[41928]=b[e+236>>1];c[41929]=b[e+238>>1];return}function wh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;a=c[a+16>>2]|0;c[a+192>>2]=c[(c[a+216>>2]|0)+(d<<2)>>2];a:do if((d|0)>0){d=b[a+238>>1]|0;e=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(d|0))break a;f=c[e>>2]|0;g=f+(a<<6)+4|0;f=f+(a<<6)|0;c[g>>2]=(c[g>>2]|0)+(c[f>>2]<<2);c[f>>2]=0;a=a+1|0}}while(0);return}function xh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;n=o;if((b|0)>1){e=Xh(0)|0;Yh(a)}else e=2147483647;m=c[13918]|0;k=b;f=0;b=e;while(1){if((k|0)>=3)break;f=c[42180]|0;if((k|0)==2)if((e|0)>(b|0)){_h(a);e=b}else e=b;else{e=(f|0)<4?f:4;if((Vf(a)|0)==(a|0))Zh(a,k);if(!k)Ih(a);Jh(a);g=Xh(0)|0;if((g|0)>(b|0)){f=e;e=g}else{Yh(a);f=e;e=g;b=g}}g=0;j=0;while(1){if((j|0)>=(f|0))break;if(0){c[n>>2]=k;c[n+4>>2]=j;c[n+8>>2]=g;c[n+12>>2]=e;c[n+16>>2]=b;zL(m,79046,n)|0}i=g+1|0;if((e|0)==0|(g|0)>=(c[41930]|0))break;$h(a,j);e=Xh(0)|0;if((e|0)>(b|0))g=i;else{Yh(a);g=+h[20878]*+(b|0)>+(e|0)?0:i;b=e}j=j+1|0}if(!e){e=0;break}else k=k+1|0}if((e|0)>(b|0))_h(a);if((b|0)>0){ai(a,0);e=Xh(0)|0}else e=b;a:do if(d|0){b=0;while(1){if((b|0)>=(f|0))break a;bi(a);b=b+1|0}}while(0);l=o;return e|0}function yh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;Wh(a);k=a+16|0;d=c[k>>2]|0;m=c[13918]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;e=c[d+196>>2]|0;f=c[e+(j<<6)+8>>2]|0;c[e+(j<<6)>>2]=f;g=c[e+(j<<6)+12>>2]|0;c[e+(j<<6)+4>>2]=g;i=0;while(1){if((i|0)>=(f|0))break;h=c[g+(i<<2)>>2]|0;if(!h){o=6;break}c[(c[h+16>>2]|0)+236>>2]=i;i=i+1|0}if((o|0)==6){o=0;if(0){e=Dn(a)|0;d=c[(c[(c[k>>2]|0)+196>>2]|0)+(j<<6)>>2]|0;c[n>>2]=e;c[n+4>>2]=j;c[n+8>>2]=i;c[n+12>>2]=d;zL(m,78996,n)|0;d=c[k>>2]|0;e=c[d+196>>2]|0}c[e+(j<<6)>>2]=i}j=j+1|0}l=p;return}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;Sk(a);Hh(a);Ih(a);Jh(a);f=a+16|0;d=xh(a,2,b)|0;e=1;while(1){g=c[f>>2]|0;if((e|0)>(c[g+180>>2]|0))break;d=(zh(c[(c[g+184>>2]|0)+(e<<2)>>2]|0,b)|0)+d|0;e=e+1|0}Kh(a);return d|0}function Ah(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+16|0;p=q;f=c[41925]|0;if(f|0){_I(f);c[41925]=0}f=c[41926]|0;if(f|0){_I(f);c[41926]=0}o=d+16|0;f=1;while(1){g=c[o>>2]|0;if((f|0)>(c[g+180>>2]|0))break;Bh(c[(c[g+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0}n=b[g+236>>1]|0;f=g;while(1){if((n|0)>(b[f+238>>1]|0))break;else m=0;while(1){f=c[f+196>>2]|0;if((m|0)>=(c[f+(n<<6)>>2]|0))break;k=(c[(c[f+(n<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;f=c[k>>2]|0;c[f+236>>2]=m;f=c[f+188>>2]|0;a:do if(f|0){g=0;while(1){i=c[f+(g<<2)>>2]|0;if(!i)break a;j=i+16|0;if((a[(c[j>>2]|0)+112>>0]|0)==4){hh(i);_I(c[j>>2]|0);_I(i);g=g+-1|0;f=c[(c[k>>2]|0)+188>>2]|0}g=g+1|0}}while(0);m=m+1|0;f=c[o>>2]|0}Ch(c[f+(n<<6)+56>>2]|0);n=n+1|0;f=c[o>>2]|0}if(0){o=c[13918]|0;d=Dn(d)|0;r=+yA();c[p>>2]=d;c[p+4>>2]=e;h[p+8>>3]=r;zL(o,78664,p)|0}l=q;return}function Bh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+16|0;d=1;while(1){f=c[g>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Bh(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a:do if(c[f+268>>2]|0){e=b[f+236>>1]|0;d=f;while(1){if((e|0)>(b[d+238>>1]|0))break a;j=c[(c[d+268>>2]|0)+(e<<2)>>2]|0;i=Dh(a,j,-1)|0;j=Dh(a,j,1)|0;c[(c[(c[g>>2]|0)+268>>2]|0)+(e<<2)>>2]=i;k=c[(c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0;i=c[(c[i+16>>2]|0)+236>>2]|0;f=c[g>>2]|0;h=c[f+196>>2]|0;c[h+(e<<6)+4>>2]=k+(i<<2);c[h+(e<<6)>>2]=(c[(c[j+16>>2]|0)+236>>2]|0)+1-i;e=e+1|0;d=f}}while(0);return}function Ch(a){a=a|0;if(a|0){_I(c[a+8>>2]|0);_I(a)}return}function Dh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=b;while(1){b=Eh(b,c)|0;if(!b)break;if(Fh(a,b)|0){d=b;continue}e=(Gh(a,b)|0)==0;d=e?d:b}return d|0}function Eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a)ma(78703,78628,1023,78705);if((b|0)<0){a=c[a+16>>2]|0;e=c[a+236>>2]|0;if((e|0)>0){a=(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+-1|0;f=7}else g=0}else{a=c[a+16>>2]|0;e=c[a+236>>2]|0;a=(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+1|0;f=7}if((f|0)==7){a=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(a)if((O((c[(c[a+16>>2]|0)+236>>2]|0)-e|0,b)|0)>0)g=a;else ma(78714,78628,1029,78705);else g=0}return g|0}function Fh(b,d){b=b|0;d=d|0;if(!(a[(c[d+16>>2]|0)+156>>0]|0))b=(Bo(b,d)|0)!=0&1;else b=0;return b|0}function Gh(b,d){b=b|0;d=d|0;var e=0,f=0;d=c[d+16>>2]|0;if(((a[d+156>>0]|0)==1?(c[d+176>>2]|0)==1:0)?(c[d+184>>2]|0)==1:0){d=c[d+180>>2]|0;while(1){d=c[d>>2]|0;e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}if(Bo(b,d)|0)d=1;else f=7}else f=7;if((f|0)==7)d=0;return d|0}function Hh(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[42184]|0;a:do if((d|0)!=0|(c[42205]|0)!=0){d=FA(b,d,0)|0;if(d|0){switch(a[d>>0]|0){case 0:break a;case 111:{if(!(xJ(d,78916)|0)){Rh(b,1);break a}break}case 105:{if(!(xJ(d,83705)|0)){Rh(b,0);break a}break}default:{}}c[e>>2]=d;_l(1,78920,e)|0;break}d=Jp(b)|0;while(1){if(!d)break;if(!(Cj(d)|0))Hh(d);d=Kp(d)|0}if(c[42205]|0)Sh(b)}while(0);l=f;return}function Ih(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;e=c[k>>2]|0;j=b[e+236>>1]|0;while(1){if((j|0)>(b[e+238>>1]|0))break;else{f=0;i=0}while(1){g=c[e+196>>2]|0;h=c[g+(j<<6)>>2]|0;if((i|0)>=(h|0))break;g=c[(c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;a[g+158>>0]=0;a[g+157>>0]=0;c[g+284>>2]=i;if((f|0)==0&(c[g+192>>2]|0)>0){f=Ph(h,h)|0;e=c[k>>2]|0;c[(c[e+196>>2]|0)+(j<<6)+56>>2]=f;f=1}i=i+1|0}a:do if(f){i=0;f=h;while(1){if((i|0)>=(f|0))break a;h=c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0;if(!(a[(c[h+16>>2]|0)+157>>0]|0)){Qh(d,h);e=c[k>>2]|0;f=c[e+196>>2]|0;g=f;f=c[f+(j<<6)>>2]|0}i=i+1|0}}while(0);j=j+1|0}return}function Jh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=d+16|0;e=c[s>>2]|0;if(a[e+240>>0]|0){h=0;r=b[e+236>>1]|0;q=0;i=0;a:while(1){if((r|0)>(b[e+238>>1]|0))break;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if(!g){g=q;f=i}else{f=c[f+(r<<6)+4>>2]|0;o=c[(c[(c[f>>2]|0)+16>>2]|0)+236>>2]|0;e=0;while(1){if((e|0)>=(g|0))break;a[(c[(c[f+(e<<2)>>2]|0)+16>>2]|0)+157>>0]=0;e=e+1|0}e=(e<<2)+4|0;if(!h)p=ww(e)|0;else p=yw(i,e)|0;m=0;n=0;while(1){e=c[s>>2]|0;f=c[e+196>>2]|0;g=c[f+(r<<6)>>2]|0;if((g|0)<=(n|0))break;j=c[(c[f+(r<<6)+4>>2]|0)+(((c[e+116>>2]&1|0)==0?g+~n|0:n)<<2)>>2]|0;l=j+16|0;e=0;k=0;while(1){i=c[l>>2]|0;if((e|0)>=(c[i+200>>2]|0)){f=0;g=0;e=i;break}i=k+((Lh(d,c[(c[i+196>>2]|0)+(e<<2)>>2]|0)|0)!=0&1)|0;e=e+1|0;k=i}while(1){if((g|0)>=(c[e+192>>2]|0))break;i=f+((Lh(d,c[(c[e+188>>2]|0)+(g<<2)>>2]|0)|0)!=0&1)|0;f=i;g=g+1|0;e=c[l>>2]|0}if(f|k)if((k|0)==0&(a[e+157>>0]|0)==0)e=(Mh(d,j,p+(m<<2)|0,r)|0)+m|0;else e=m;else{c[p+(m<<2)>>2]=j;e=m+1|0}m=e;n=n+1|0}b:do if(m){c:do if(!(c[e+116>>2]&1)){f=p;e=p+(m<<2)|0;while(1){e=e+-4|0;if(f>>>0>=e>>>0){g=0;break c}n=c[f>>2]|0;c[f>>2]=c[e>>2];c[e>>2]=n;f=f+4|0}}else g=0;while(0);while(1){e=c[s>>2]|0;i=c[e+196>>2]|0;f=c[i+(r<<6)>>2]|0;if((g|0)>=(f|0)){m=0;g=i;break}n=c[p+(g<<2)>>2]|0;c[(c[i+(r<<6)+4>>2]|0)+(g<<2)>>2]=n;c[(c[n+16>>2]|0)+236>>2]=g+o;g=g+1|0}while(1){if((m|0)>=(f|0))break b;l=(c[(c[g+(r<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;i=c[(c[l>>2]|0)+188>>2]|0;if(i){k=0;f=i;while(1){g=c[f+(k<<2)>>2]|0;e=c[s>>2]|0;if(!g)break;j=c[g>>2]&3;i=c[(c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=c[(c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;if(!(c[e+116>>2]&1))if((i|0)<(j|0))t=36;else e=k;else if((i|0)>(j|0))t=36;else e=k;if((t|0)==36){t=0;if(Lh(d,g)|0){t=37;break a}hh(g);Nh(d,g);e=k+-1|0;f=c[(c[l>>2]|0)+188>>2]|0}k=e+1|0}f=c[e+196>>2]|0;g=f;f=c[f+(r<<6)>>2]|0}m=m+1|0}}while(0);a[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(r<<6)+49>>0]=0;h=p;g=p;f=p}r=r+1|0;q=g;i=f}if((t|0)==37)ma(78762,78628,1561,78801);if(h|0)_I(q)}return}function Kh(a){a=a|0;var d=0,e=0;e=a+16|0;a=c[e>>2]|0;a:do if(c[a+268>>2]|0){d=b[a+236>>1]|0;while(1){if((d|0)>(b[a+238>>1]|0))break a;c[(c[a+268>>2]|0)+(d<<2)>>2]=c[c[(c[a+196>>2]|0)+(d<<6)+4>>2]>>2];d=d+1|0;a=c[e>>2]|0}}while(0);return}function Lh(a,b){a=a|0;b=b|0;if((c[(c[b+16>>2]|0)+156>>2]|0)!=0?(Oh(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)!=0:0)a=(Oh(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)!=0&1;else a=0;return a|0}function Mh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+16|0;g=c[l>>2]|0;a[g+157>>0]=1;a:do if((c[g+192>>2]|0)>0){h=0;j=0;while(1){i=c[(c[g+188>>2]|0)+(j<<2)>>2]|0;if(!i)break a;if((Lh(b,i)|0)!=0?(k=c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,(a[(c[k+16>>2]|0)+157>>0]|0)==0):0)h=(Mh(b,k,e+(h<<2)|0,f)|0)+h|0;j=j+1|0;g=c[l>>2]|0}}else h=0;while(0);if((c[g+232>>2]|0)==(f|0)){c[e+(h<<2)>>2]=d;return h+1|0}else ma(78814,78628,1490,78830);return 0}function Nh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=c[d>>2]&3;j=c[((i|0)==2?d:d+-48|0)+40>>2]|0;f=c[(c[j+16>>2]|0)+188>>2]|0;a:do if(!f){e=d+48|0;m=15}else{l=d+48|0;g=((i|0)==3?d:l)+40|0;e=0;while(1){h=c[f+(e<<2)>>2]|0;if(!h){e=l;m=15;break a}if((c[((c[h>>2]&3|0)==2?h:h+-48|0)+40>>2]|0)==(c[g>>2]|0))break;else e=e+1|0}ih(d,h);e=(c[d+16>>2]|0)+172|0;if(!(c[e>>2]|0))c[e>>2]=h;e=c[h+16>>2]|0;if((a[e+112>>0]|0)==4?(k=e+116|0,(c[k>>2]|0)==0):0)c[k>>2]=d;e=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;f=c[e+204>>2]|0;if(!f)e=ww((c[e+208>>2]<<2)+8|0)|0;else e=yw(f,(c[e+208>>2]<<2)+8|0)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0)+204>>2]=e;i=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;j=c[i+204>>2]|0;i=i+208|0;k=c[i>>2]|0;c[i>>2]=k+1;c[j+(k<<2)>>2]=d;d=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;c[(c[d+204>>2]|0)+(c[d+208>>2]<<2)>>2]=0}while(0);if((m|0)==15){m=$g(j,c[((i|0)==3?d:e)+40>>2]|0,d)|0;l=c[d+16>>2]|0;d=c[m+16>>2]|0;a[d+112>>0]=(a[l+112>>0]|0)==4?4:3;c[d+96>>2]=c[l+96>>2];gh(b,m)}return}function Oh(a,b){a=a|0;b=b|0;var c=0;c=Fh(a,b)|0;return Gh(a,b)|0|c|0}function Ph(a,b){a=a|0;b=b|0;var d=0;d=vw(12)|0;c[d>>2]=a;c[d+4>>2]=b;c[d+8>>2]=vw(O(b,a)|0)|0;return d|0}function Qh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=d+16|0;l=c[o>>2]|0;k=c[(c[(c[b+16>>2]|0)+196>>2]|0)+(c[l+232>>2]<<6)+56>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=(c[(c[(Vf(b)|0)+16>>2]|0)+180>>2]|0)>0;e=c[o>>2]|0;f=c[e+188>>2]|0;a:do if(f){m=k+4|0;n=k+8|0;d=0;b:while(1){j=c[f+(d<<2)>>2]|0;if(!j){p=e;break a}if(l){if((Bo(b,c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)|0)!=0?(Bo(b,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0)!=0:0)q=7}else q=7;do if((q|0)==7){q=0;h=j+16|0;if(c[(c[h>>2]|0)+156>>2]|0){e=c[j>>2]&3;g=j+-48|0;r=c[(c[((e|0)==2?j:g)+40>>2]|0)+16>>2]|0;i=c[r+284>>2]|0;f=(i|0)<(c[k>>2]|0);if((a[r+158>>0]|0)==1){if(!f){q=10;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=12;break b}a[(c[n>>2]|0)+((O(f,i)|0)+e)>>0]=1;hh(j);d=d+-1|0;if((a[(c[h>>2]|0)+112>>0]|0)==4)break;Nh(b,j);break}else{if(!f){q=16;break b}e=c[(c[(c[((e|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=18;break b}a[(c[n>>2]|0)+((O(f,e)|0)+i)>>0]=1;e=c[((c[j>>2]&3|0)==2?j:g)+40>>2]|0;if(a[(c[e+16>>2]|0)+157>>0]|0)break;Qh(b,e);break}}}while(0);f=c[o>>2]|0;d=d+1|0;e=f;f=c[f+188>>2]|0}if((q|0)==10)ma(78840,78628,1251,78872);else if((q|0)==12)ma(78884,78628,1252,78872);else if((q|0)==16)ma(78840,78628,1260,78872);else if((q|0)==18)ma(78884,78628,1261,78872)}else p=e;while(0);a[p+158>>0]=0;return}function Rh(a,b){a=a|0;b=b|0;var c=0;c=co(a)|0;while(1){if(!c)break;Th(a,c,b);c=eo(a,c)|0}return}function Sh(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=co(b)|0;while(1){if(!d)break;e=FA(d,c[42205]|0,0)|0;a:do if(e|0){switch(a[e>>0]|0){case 0:break a;case 111:{if(!(xJ(e,78916)|0)){Th(b,d,1);break a}break}case 105:{if(!(xJ(e,83705)|0)){Th(b,d,0);break a}break}default:{}}h=Dn(d)|0;c[f>>2]=e;c[f+4>>2]=h;_l(1,78951,f)|0}while(0);d=eo(b,d)|0}l=g;return}function Th(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[41926]|0;h=d+16|0;f=c[h>>2]|0;a:do if(!(c[f+212>>2]|0)){i=(e|0)!=0;b:do if(i){g=0;d=0;e=f;while(1){f=c[(c[e+180>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(Uh(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}else{g=0;d=0;e=f;while(1){f=c[(c[e+172>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(Uh(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}while(0);if((d|0)>=2){c[j+(d<<2)>>2]=0;rL(j,d,4,13);h=i?2:3;g=i?-1:1;f=1;while(1){d=c[j+(f<<2)>>2]|0;if(!d)break a;e=c[j+(f+-1<<2)>>2]|0;e=c[((c[e>>2]&3|0)==(h|0)?e:e+(g*48|0)|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==(h|0)?d:d+(g*48|0)|0)+40>>2]|0;if(Ug(e,d)|0)break a;i=$g(e,d,0)|0;a[(c[i+16>>2]|0)+112>>0]=4;gh(b,i);f=f+1|0}}}while(0);return}function Uh(a){a=a|0;var b=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;return (c[(c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)!=(c[(c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)|0}function Vh(a,b){a=a|0;b=b|0;return ((c[c[a>>2]>>2]|0)>>>4)-((c[c[b>>2]>>2]|0)>>>4)|0}function Wh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[a+16>>2]|0;g=f+220|0;h=c[g>>2]|0;if((h|0)>=2){i=f+216|0;a=0;e=0;while(1){if((e|0)>=(h|0))break;d=c[(c[i>>2]|0)+(e<<2)>>2]|0;if(a|0)c[(c[a+16>>2]|0)+164>>2]=d;j=c[d+16>>2]|0;c[j+168>>2]=a;a=d;d=j;while(1){d=c[d+164>>2]|0;if(!d)break;a=d;d=c[d+16>>2]|0}e=e+1|0}c[g>>2]=1;c[f+192>>2]=c[c[f+216>>2]>>2];b[f+236>>1]=c[41928];b[f+238>>1]=c[41929]}return}function Xh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[41927]|0;j=i+16|0;f=c[j>>2]|0;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>=(b[f+238>>1]|0))break;d=c[f+196>>2]|0;if(!(a[d+(h<<6)+49>>0]|0)){e=oi(i,h)|0;d=c[j>>2]|0;f=c[d+196>>2]|0;c[f+(h<<6)+52>>2]=e;a[f+(h<<6)+49>>0]=1}else{e=c[d+(h<<6)+52>>2]|0;d=f}g=e+g|0;h=h+1|0;f=d}return g|0}function Yh(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0;a=c[a+16>>2]|0;g=b[a+238>>1]|0;i=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(g|0))break;f=c[i>>2]|0;e=c[f+(a<<6)>>2]|0;f=f+(a<<6)+4|0;d=0;while(1){if((d|0)>=(e|0))break;j=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;h[j+16>>3]=+(c[j+236>>2]|0);d=d+1|0}a=a+1|0}return}function Zh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;m=r;n=d+16|0;o=zA(c[(c[n>>2]|0)+232>>2]|0)|0;j=c[n>>2]|0;f=j+192|0;g=f;while(1){g=c[g>>2]|0;if(!g)break;g=c[g+16>>2]|0;a[g+157>>0]=0;g=g+164|0}h=b[j+238>>1]|0;i=j+196|0;g=b[j+236>>1]|0;while(1){if((g|0)>(h|0))break;c[(c[i>>2]|0)+(g<<6)>>2]=0;g=g+1|0}i=(e|0)==0;while(1){g=c[f>>2]|0;if(!g)break;h=g+16|0;f=c[h>>2]|0;if((c[c[(i?f+172|0:f+180|0)>>2]>>2]|0)==0?(k=f+157|0,(a[k>>0]|0)==0):0){a[k>>0]=1;BA(o,g);while(1){f=CA(o)|0;if(!f)break;if((a[(c[f+16>>2]|0)+159>>0]|0)==7){Xk(d,f,e,o);continue}else{mi(d,f);ni(o,f,e);continue}}f=c[h>>2]|0}f=f+164|0}if(CA(o)|0)_l(1,79159,m)|0;f=c[n>>2]|0;j=b[f+236>>1]|0;while(1){if((j|0)>(b[f+238>>1]|0))break;a[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(j<<6)+49>>0]=0;if((c[f+116>>2]&1|0)!=0?(p=c[f+196>>2]|0,q=c[p+(j<<6)>>2]|0,(q|0)>0):0){g=c[p+(j<<6)+4>>2]|0;h=q+-1|0;i=(h|0)/2|0;f=0;while(1){if((f|0)>(i|0))break;gi(c[g+(f<<2)>>2]|0,c[g+(h-f<<2)>>2]|0);f=f+1|0}f=c[n>>2]|0}j=j+1|0}if((Vf(d)|0)==(d|0)?(Xh(0)|0)>0:0)ai(d,0);AA(o);l=r;return}function _h(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;d=c[n>>2]|0;f=b[d+236>>1]|0;e=b[d+238>>1]|0;l=e<<16>>16;m=d+196|0;g=f;while(1){if((g|0)>(l|0))break;k=c[m>>2]|0;j=c[k+(g<<6)>>2]|0;k=k+(g<<6)+4|0;i=0;while(1){if((i|0)>=(j|0))break;o=c[(c[(c[k>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;c[o+236>>2]=~~+h[o+16>>3];i=i+1|0}g=g+1|0}while(1){if((f|0)>(e<<16>>16|0))break;a[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(f<<6)+49>>0]=0;o=c[d+196>>2]|0;rL(c[o+(f<<6)+4>>2]|0,c[o+(f<<6)>>2]|0,4,14);o=c[n>>2]|0;f=f+1|0;e=b[o+238>>1]|0;d=o}return}function $h(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=((d|0)%4|0|0)<2&1;e=c[a+16>>2]|0;if(!(d&1)){d=b[e+236>>1]|0;f=1;e=b[e+238>>1]|0;d=(d<<16>>16<=(b[(c[(c[41927]|0)+16>>2]|0)+236>>1]|0)&1)+(d<<16>>16)|0}else{d=b[e+238>>1]|0;f=-1;e=b[e+236>>1]|0;d=((d<<16>>16>=(b[(c[(c[41927]|0)+16>>2]|0)+238>>1]|0))<<31>>31)+(d<<16>>16)|0}e=f+e|0;while(1){if((d|0)==(e|0))break;ji(a,d,g,(ii(a,d,d-f|0)|0)&255);d=d+f|0}ai(a,g^1);return}function ai(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;g=c[k>>2]|0;i=b[g+236>>1]|0;j=b[g+238>>1]|0;h=g+196|0;f=i<<16>>16;while(1){if((f|0)>(j|0)){h=i;break}a[(c[h>>2]|0)+(f<<6)+48>>0]=1;f=f+1|0}while(1){f=0;h=h<<16>>16;while(1){if((h|0)>(b[g+238>>1]|0))break;if(a[(c[g+196>>2]|0)+(h<<6)+48>>0]|0){f=(hi(d,h,e)|0)+f|0;g=c[k>>2]|0}h=h+1|0}if((f|0)<=0)break;h=b[g+236>>1]|0}return}function bi(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=d+16|0;e=c[o>>2]|0;n=b[e+238>>1]|0;a:while(1){if((n|0)<(b[e+236>>1]|0)){e=16;break}f=c[e+196>>2]|0;a[f+(n<<6)+48>>0]=0;p=(n|0)>0;q=n+1|0;g=0;b:while(1){l=(c[f+(n<<6)>>2]|0)+-1|0;m=f+(n<<6)+4|0;k=f+(q<<6)|0;while(1){if((g|0)>=(l|0))break b;j=c[m>>2]|0;i=c[j+(g<<2)>>2]|0;g=g+1|0;j=c[j+(g<<2)>>2]|0;if((c[(c[i+16>>2]|0)+236>>2]|0)>=(c[(c[j+16>>2]|0)+236>>2]|0)){e=7;break a}if(ci(d,i,j)|0)continue;if(p){f=di(i,j)|0;h=di(j,i)|0}else{f=0;h=0}if((c[k>>2]|0)>0){f=(ei(i,j)|0)+f|0;h=(ei(j,i)|0)+h|0}if((h|0)<=(f|0))break}fi(d,n,i,j);e=c[o>>2]|0;f=c[e+196>>2]|0}n=n+-1|0}if((e|0)==7)ma(79110,78628,721,79136);else if((e|0)==16)return}function ci(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+16>>2]|0;i=c[j+212>>2]|0;f=c[e+16>>2]|0;g=c[f+212>>2]|0;h=(i|0)!=(g|0);do if(!(a[173893]|0))if((g|0)==0|((i|0)==0|h^1))k=9;else{if((a[j+159>>0]|0)==7?(a[j+156>>0]|0)==1:0){b=0;break}if((a[f+159>>0]|0)==7?(a[f+156>>0]|0)==1:0){b=0;break}b=1}else if(h)b=1;else k=9;while(0);if((k|0)==9){f=c[b+16>>2]|0;b=c[(c[f+196>>2]|0)+(c[j+232>>2]<<6)+56>>2]|0;if(!b)b=0;else{j=(c[f+116>>2]&1|0)==0;k=O(c[b+4>>2]|0,c[(c[(j?d:e)+16>>2]|0)+284>>2]|0)|0;b=a[(c[b+8>>2]|0)+((c[(c[(j?e:d)+16>>2]|0)+284>>2]|0)+k)>>0]|0}}return b|0}function di(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+172>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+16|0;f=c[(c[l>>2]|0)+172>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+16>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ei(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+180>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+56|0;f=c[(c[l>>2]|0)+180>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;if((e|0)<=0){if((e|0)==0?(m=c[d+16>>2]|0,+h[m+56>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d+16>>2]|0;n=9}if((n|0)==9){n=0;a=(O(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function fi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=a[(c[e+16>>2]|0)+156>>0]|0;if(i<<24>>24!=(a[(c[f+16>>2]|0)+156>>0]|0)){j=b+16|0;l=c[(c[j>>2]|0)+196>>2]|0;k=c[l+(d<<6)>>2]|0;l=l+(d<<6)+4|0;b=0;g=0;h=0;while(1){if((b|0)>=(k|0))break;o=(a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)==0;b=b+1|0;g=g+(o&1)|0;h=h+((o^1)&1)|0}i=i<<24>>24==0;h=(g|0)<(h|0)?(i?e:f):i?f:e;i=0;b=0;while(1){if((b|0)>=(k|0))break;i=(c[(c[l>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}o=(a[(c[h+16>>2]|0)+156>>0]|0)==0&1;n=0;g=i;while(1){b=g+-1|0;if((g|0)<=0){m=0;b=i;break}if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){m=0;b=i;break}n=n+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;m=m+1|0}gi(e,f);j=c[(c[j>>2]|0)+196>>2]|0;k=c[j+(d<<6)>>2]|0;j=j+(d<<6)+4|0;b=0;while(1){if((b|0)>=(k|0)){h=0;g=i;break}i=(c[(c[j>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}while(1){b=g+-1|0;if((g|0)<=0){g=0;b=i;break}if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){g=0;b=i;break}h=h+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;g=g+1|0}d=h-g|0;o=n-m|0;if((((d|0)>-1?d:0-d|0)|0)>(((o|0)>-1?o:0-o|0)|0))gi(e,f)}return}function gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[a+16>>2]|0;e=c[f+232>>2]|0;f=f+236|0;d=c[f>>2]|0;g=b+16|0;h=c[(c[g>>2]|0)+236>>2]|0;c[f>>2]=h;f=(c[41927]|0)+16|0;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(h<<2)>>2]=a;c[(c[g>>2]|0)+236>>2]=d;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return}function hi(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=d+16|0;n=c[(c[q>>2]|0)+196>>2]|0;a[n+(e<<6)+48>>0]=0;r=(e|0)>0;s=e+1|0;o=(f|0)!=0;p=e+-1|0;g=0;i=0;f=n;a:while(1){l=(c[f+(e<<6)>>2]|0)+-1|0;m=f+(e<<6)+4|0;h=f+(s<<6)|0;n=g;while(1){if((n|0)>=(l|0)){f=17;break a}k=c[m>>2]|0;j=c[k+(n<<2)>>2]|0;n=n+1|0;k=c[k+(n<<2)>>2]|0;if((c[(c[j+16>>2]|0)+236>>2]|0)>=(c[(c[k+16>>2]|0)+236>>2]|0)){f=5;break a}if(ci(d,j,k)|0)continue;if(r){f=di(j,k)|0;g=di(k,j)|0}else{f=0;g=0}if((c[h>>2]|0)>0){f=(ei(j,k)|0)+f|0;g=(ei(k,j)|0)+g|0}if((f|0)>(g|0))break;if((f|0)==(g|0)&(o&(f|0)>0)){f=g;break}}gi(j,k);i=f-g+i|0;g=c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0;a[g+(e<<6)+49>>0]=0;h=c[q>>2]|0;f=c[h+196>>2]|0;a[f+(e<<6)+48>>0]=1;if((b[h+236>>1]|0)<(e|0)){a[g+(p<<6)+49>>0]=0;a[f+(p<<6)+48>>0]=1}if((b[h+238>>1]|0)<=(e|0)){g=n;continue}a[g+(s<<6)+49>>0]=0;a[f+(s<<6)+48>>0]=1;g=n}if((f|0)==5)ma(79110,78628,770,79144);else if((f|0)==17)return i|0;return 0}function ii(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[41925]|0;q=a+16|0;a=c[(c[q>>2]|0)+196>>2]|0;r=c[a+(e<<6)+4>>2]|0;n=(f|0)>(e|0);o=p+4|0;m=0;while(1){f=c[a+(e<<6)>>2]|0;if((m|0)>=(f|0)){a=0;j=0;break}l=(c[r+(m<<2)>>2]|0)+16|0;a=c[l>>2]|0;a:do if(n){k=c[a+180>>2]|0;a=0;j=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+88>>0];a=a+1|0}j=j+1|0}}else{k=c[a+172>>2]|0;j=0;a=0;while(1){f=c[k+(j<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=c[(c[(c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8|d[g+48>>0];a=a+1|0}j=j+1|0}}while(0);b:do switch(a|0){case 0:{i=-1.0;break}case 1:{i=+(c[p>>2]|0);break}case 2:{i=+(((c[o>>2]|0)+(c[p>>2]|0)|0)/2|0|0);break}default:{rL(p,a,4,12);f=(a|0)/2|0;if(a&1|0){i=+(c[p+(f<<2)>>2]|0);break b}j=c[p+(f<<2)>>2]|0;g=(c[p+(a+-1<<2)>>2]|0)-j|0;a=c[p+(f+-1<<2)>>2]|0;f=a-(c[p>>2]|0)|0;if((f|0)==(g|0)){i=+((a+j|0)/2|0|0);break b}else{i=+(((O(f,j)|0)+(O(a,g)|0)|0)/(f+g|0)|0|0);break b}}}while(0);h[(c[l>>2]|0)+240>>3]=i;m=m+1|0;a=c[(c[q>>2]|0)+196>>2]|0}while(1){if((j|0)>=(f|0))break;g=c[r+(j<<2)>>2]|0;p=c[g+16>>2]|0;if((c[p+184>>2]|0)==0?(c[p+176>>2]|0)==0:0){a=(ki(g)|0|a&255)&255;f=c[(c[(c[q>>2]|0)+196>>2]|0)+(e<<6)>>2]|0}j=j+1|0}return a|0}function ji(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;o=c[(c[b+16>>2]|0)+196>>2]|0;s=c[o+(d<<6)+4>>2]|0;o=c[o+(d<<6)>>2]|0;q=(e|0)!=0;p=(f|e|0)==0;f=0;e=o;o=s+(o<<2)|0;while(1){n=e+-1|0;if((e|0)>0)e=s;else break;a:while(1){b:while(1){if(e>>>0>=o>>>0)break a;while(1){if(e>>>0>=o>>>0)break a;l=c[e>>2]|0;m=+h[(c[l+16>>2]|0)+240>>3];if(!(m<0.0))break;e=e+4|0}k=0;while(1){g=k<<24>>24==0;while(1){e=e+4|0;if(e>>>0>=o>>>0)break a;if(g){g=11;break}i=c[e>>2]|0;if(!(c[(c[i+16>>2]|0)+212>>2]|0)){g=13;break}}if((g|0)==11){i=c[e>>2]|0;j=i}else if((g|0)==13)j=i;if(ci(b,l,j)|0)continue b;g=c[i+16>>2]|0;if(+h[g+240>>3]>=0.0)break;k=(c[g+212>>2]|0)==0?k:1}g=~~m;k=~~+h[(c[i+16>>2]|0)+240>>3];if((g|0)>(k|0)|q&(g|0)==(k|0))break}gi(l,j);f=f+1|0}e=n;o=p?o+-4|0:o}if(f|0?(r=c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0,a[r+(d<<6)+49>>0]=0,(d|0)>0):0)a[r+(d+-1<<6)+49>>0]=0;return}function ki(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0;g=c[a+16>>2]|0;if((c[g+200>>2]|0)>0){f=c[g+196>>2]|0;a=c[f>>2]|0;a=c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0;d=1;while(1){e=c[f+(d<<2)>>2]|0;if(!e)break;e=c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;a=(c[(c[e+16>>2]|0)+236>>2]|0)>(c[(c[a+16>>2]|0)+236>>2]|0)?e:a;d=d+1|0}b=+h[(c[a+16>>2]|0)+240>>3];if(!(b>=0.0))a=1;else{h[g+240>>3]=b+1.0;a=0}}else if((c[g+192>>2]|0)>0){e=c[g+188>>2]|0;d=c[e>>2]|0;a=1;d=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;while(1){f=c[e+(a<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;a=a+1|0;d=(c[(c[f+16>>2]|0)+236>>2]|0)<(c[(c[d+16>>2]|0)+236>>2]|0)?f:d}b=+h[(c[d+16>>2]|0)+240>>3];if(b>0.0){h[g+240>>3]=b+-1.0;a=0}else a=1}else a=1;return a|0}function li(a,b){a=a|0;b=b|0;return (c[(c[(c[a>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[b>>2]|0)+16>>2]|0)+236>>2]|0)|0}function mi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+96|0;o=p+64|0;n=p+48|0;h=p+24|0;f=p;j=d+16|0;k=c[(c[j>>2]|0)+232>>2]|0;m=a+16|0;e=c[(c[m>>2]|0)+196>>2]|0;i=c[e+(k<<6)>>2]|0;do if((c[e+(k<<6)+8>>2]|0)>=1){c[(c[e+(k<<6)+4>>2]|0)+(i<<2)>>2]=d;c[(c[j>>2]|0)+236>>2]=i;a=c[m>>2]|0;f=c[a+196>>2]|0;e=f+(k<<6)|0;g=c[e>>2]|0;c[e>>2]=g+1;if((g|0)>=(c[f+(k<<6)+8>>2]|0))ma(79224,78628,1346,79260);g=c[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;if((i|0)>(g|0)){m=Dn(d)|0;n=c[(c[j>>2]|0)+236>>2]|0;o=c[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;c[h>>2]=1359;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=k;c[h+16>>2]=o;_l(1,79276,h)|0;break}e=b[a+236>>1]|0;a=b[a+238>>1]|0;if((k|0)<(e|0)|(k|0)>(a<<16>>16|0)){c[n>>2]=1364;c[n+4>>2]=k;c[n+8>>2]=e;c[n+12>>2]=a<<16>>16;_l(1,79349,n)|0;break}if(((c[f+(k<<6)+4>>2]|0)+(i<<2)|0)>>>0>((c[f+(k<<6)+12>>2]|0)+(g<<2)|0)>>>0){i=Dn(d)|0;n=c[(c[m>>2]|0)+196>>2]|0;m=(c[n+(k<<6)+4>>2]|0)+(c[(c[j>>2]|0)+236>>2]<<2)|0;n=(c[n+(k<<6)+12>>2]|0)+(c[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]<<2)|0;c[o>>2]=1370;c[o+4>>2]=k;c[o+8>>2]=i;c[o+12>>2]=m;c[o+16>>2]=k;c[o+20>>2]=k;c[o+24>>2]=n;_l(1,79410,o)|0}}else{n=Dn(a)|0;o=Dn(d)|0;c[f>>2]=1339;c[f+4>>2]=n;c[f+8>>2]=o;c[f+12>>2]=k;c[f+16>>2]=i;_l(1,79169,f)|0}while(0);l=p;return}function ni(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=d+16|0;a:do if(!e){g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+184>>2]|0))break a;d=c[(c[d+180>>2]|0)+(g<<2)>>2]|0;e=d+-48|0;f=(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;BA(b,c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)}g=g+1|0}}else{g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+176>>2]|0))break a;d=c[(c[d+172>>2]|0)+(g<<2)>>2]|0;e=d+48|0;f=(c[(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;BA(b,c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)}g=g+1|0}}while(0);return}function oi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;u=v;g=d+16|0;f=c[(c[g>>2]|0)+196>>2]|0;s=c[f+(e<<6)+4>>2]|0;t=e+1|0;d=c[(c[(c[(c[41927]|0)+16>>2]|0)+196>>2]|0)+(t<<6)>>2]|0;if((c[41931]|0)>(d|0))q=c[41932]|0;else{d=d+1|0;c[41931]=d;f=c[41932]|0;if(!f)d=ww(d<<2)|0;else d=yw(f,d<<2)|0;c[41932]=d;f=c[(c[g>>2]|0)+196>>2]|0;q=d}r=f+(t<<6)|0;d=0;while(1){if((d|0)>=(c[r>>2]|0))break;c[q+(d<<2)>>2]=0;d=d+1|0}p=f+(e<<6)|0;o=0;h=0;d=0;j=q;while(1){k=c[p>>2]|0;if((o|0)>=(k|0))break;n=c[(c[(c[s+(o<<2)>>2]|0)+16>>2]|0)+180>>2]|0;a:do if((h|0)>0){m=0;while(1){g=c[n+(m<<2)>>2]|0;if(!g)break a;k=g+16|0;i=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;while(1){g=i+1|0;if((i|0)>=(h|0))break;i=g;d=(O(c[j+(g<<2)>>2]|0,b[(c[k>>2]|0)+154>>1]|0)|0)+d|0}m=m+1|0}}while(0);i=0;while(1){g=c[n+(i<<2)>>2]|0;if(!g)break;j=c[(c[(c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;m=q+(j<<2)|0;c[m>>2]=(c[m>>2]|0)+(b[(c[g+16>>2]|0)+154>>1]|0);h=(j|0)>(h|0)?j:h;i=i+1|0;j=q}o=o+1|0}i=f+(e<<6)+4|0;h=0;while(1){if((h|0)>=(k|0))break;g=c[(c[(c[i>>2]|0)+(h<<2)>>2]|0)+16>>2]|0;if(a[g+145>>0]|0){e=g+180|0;c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];d=(pi(u,1)|0)+d|0}h=h+1|0}i=c[r>>2]|0;h=f+(t<<6)+4|0;g=0;while(1){if((g|0)>=(i|0))break;f=c[(c[(c[h>>2]|0)+(g<<2)>>2]|0)+16>>2]|0;if(a[f+145>>0]|0){t=f+172|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];d=(pi(u,-1)|0)+d|0}g=g+1|0}l=v;return d|0}function pi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=(d|0)<1;l=c[a>>2]|0;d=0;a=0;a:while(1){m=c[l+(d<<2)>>2]|0;if(!m)break;d=d+1|0;if(n){j=m+48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+56>>3]-+h[g+56>>3])*+((c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==3?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}else{j=m+-48|0;k=m+16|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if((+h[f+16>>3]-+h[g+16>>3])*+((c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==2?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)<0.0)a=(O(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}}return a|0}function qi(a){a=a|0;var b=0.0,d=0.0;c[41930]=8;c[42180]=24;h[20878]=.995;a=Im(a,79532)|0;if(a|0?(b=+sM(a),b>0.0):0){d=b*+(c[41930]|0);c[41930]=~~(d>1.0?d:1.0);b=b*+(c[42180]|0);c[42180]=~~(b>1.0?b:1.0)}return}function ri(a){a=a|0;var d=0,e=0;e=(b[(c[a+16>>2]|0)+238>>1]|0)+2|0;d=vw(e<<2)|0;ti(a,d,e,0)|0;_I(d);return}\nfunction Uq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(b|0)==2;d=(c[42039]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;e=d+4|0;f=c[e>>2]|0;if(!((g?(a[f>>0]|0)==(a[83089]|0):0)?!(xJ(f,83089)|0):0)){h=ym(c[c[42039]>>2]|0,b,f,0)|0;c[e>>2]=h;if(!h)c[e>>2]=ym(c[c[42039]>>2]|0,b,f,174181)|0;c[d>>2]=266;bp(c[42038]|0,f)|0}d=d+12|0}return}function Vq(a){a=a|0;Wq(c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;return}function Wq(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;switch(c[a>>2]|0){case 265:{Wq(c[a+4>>2]|0);break}case 266:case 267:{bp(c[42038]|0,c[a+8>>2]|0)|0;break}default:{}}Zn(c[42038]|0,a);a=b}return}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;f=h;g=h+8|0;d=rJ(a)|0;d=d+2+(rJ(b)|0)|0;if(d>>>0<1025)e=g;else e=ZI(d)|0;c[f>>2]=a;c[f+4>>2]=b;pL(e,83126,f)|0;d=$o(c[42038]|0,e)|0;bp(c[42038]|0,a)|0;bp(c[42038]|0,b)|0;if((e|0)!=(g|0))_I(e);l=h;return d|0}function Yq(a,b){a=a|0;b=b|0;return Sq(259,a,b)|0}function Zq(a){a=a|0;return Sq(265,a,0)|0}function _q(a){a=a|0;return Sq(262,a,0)|0}function $q(a){a=a|0;var b=0,d=0;b=(c[42039]|0)+24|0;while(1){b=c[b>>2]|0;if(!b)break;if((c[b>>2]|0)==266?(d=c[b+4>>2]|0,d|0):0)Cm(a,d,c[b+8>>2]|0)|0;b=b+12|0}return}function ar(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=d+4|0;a:do if((c[d>>2]|0)==262){d=c[f>>2]|0;f=co(d)|0;while(1){if(!f)break a;br(a,b,io(c[c[42039]>>2]|0,f,0)|0,0,e);f=eo(d,f)|0}}else while(1){f=c[f>>2]|0;if(!f)break a;d=io(c[c[42039]>>2]|0,c[f+4>>2]|0,0)|0;br(a,b,d,c[f+8>>2]|0,e);f=f+12|0}while(0);return}function br(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;d=an(c[c[42039]>>2]|0,a,d,f,1)|0;if(d|0){g=c[d>>2]&3;f=c[((g|0)==2?d:d+-48|0)+40>>2]|0;a=(f|0)==(a|0)?(c[((g|0)==3?d:d+48|0)+40>>2]|0)!=(f|0):0;cr(d,96242,a?e:b);cr(d,96251,a?b:e);$q(d)}return}function cr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=ym(c[c[42039]>>2]|0,2,b,0)|0;if(!e)e=ym(c[c[42039]>>2]|0,2,b,174181)|0;Cm(a,e,d)|0}return}function dr(a,b,d){a=a|0;b=b|0;d=d|0;c[42007]=b;c[42038]=a;c[41987]=0;a=d|0?d:17656;c[42041]=a;gp(a,b);Bq()|0;a=c[41987]|0;if(!a){Fp();a=c[41987]|0}return a|0}function er(a,b){a=a|0;b=b|0;return dr(0,a,b)|0}function fr(a,b){a=a|0;b=b|0;b=Jr(a,1,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+184>>2]=c[b+4>>2];c[a+172>>2]=c[b+12>>2];c[a+176>>2]=c[b>>2];c[a+180>>2]=c[b+16>>2];b=300}return b|0}function gr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;No(b,122277,280,1)|0;g=b+16|0;c[(c[g>>2]|0)+144>>2]=a;if((so(b)|0)!=(b|0))c[(c[(so(b)|0)+16>>2]|0)+144>>2]=a;e=Im(b,83342)|0;d=a+172|0;if((e|0)!=0?(c[d>>2]=0,(fr(a,e)|0)==999):0){d=Kr(a,1,e)|0;c[f>>2]=e;c[f+4>>2]=d;_l(1,83869,f)|0;d=-1}else{e=c[d>>2]|0;if(!e)d=-1;else{Fv(1);dw(b,c[c[a+180>>2]>>2]&1);d=c[(c[g>>2]|0)+8>>2]|0;c[(c[(so(b)|0)+16>>2]|0)+8>>2]=d;Ez();d=c[e>>2]|0;if(d|0?(gb[d&127](b),h=c[e+4>>2]|0,h|0):0)c[(c[g>>2]|0)+148>>2]=h;Fv(0);d=0}}l=i;return d|0}function hr(a,b){a=a|0;b=b|0;var d=0,e=0;if(No(b,122277,0,1)|0){d=b+16|0;a=c[d>>2]|0;e=c[a+148>>2]|0;if(e){gb[e&127](b);a=c[d>>2]|0;c[a+148>>2]=0}if(c[a+8>>2]|0)iw(b)}return 0}function ir(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;d=c[b+76>>2]|0;f=c[b>>2]|0;if((d|0)!=0?(e=c[d>>2]|0,(e|0)!=0):0){gb[e&127](b);g=12}else g=4;do if((g|0)==4)if((c[b+40>>2]|0)==0?(h=b+36|0,(c[h>>2]|0)==0):0){if(a[f+13>>0]|0)jr(b);d=b+32|0;e=c[d>>2]|0;if(!e){c[h>>2]=c[13885];g=12;break}f=aM(e,91556)|0;c[h>>2]=f;if(!f){j=c[(c[b+12>>2]|0)+16>>2]|0;h=c[d>>2]|0;d=yJ(c[(jJ()|0)>>2]|0)|0;c[i>>2]=h;c[i+4>>2]=d;hb[j&31](83132,i);d=1}else g=12}else g=12;while(0);if((g|0)==12)if(!(c[b+152>>2]&1024))d=0;else{hb[c[(c[b+12>>2]|0)+16>>2]&31](83170,j);d=1}l=k;return d|0}function jr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+112|0;e=h;g=h+4|0;d=c[b+24>>2]|0;if(!d)a[g>>0]=0;else{c[e>>2]=d+1;pL(g,83188,e)|0}e=c[b+20>>2]|0;e=e|0?e:83192;d=rJ(e)|0;i=rJ(g)|0;f=b+52|0;i=d+1+i+(rJ(c[f>>2]|0)|0)|0;d=i+11|0;if((c[42042]|0)>>>0<(i+1|0)>>>0){c[42042]=d;d=aJ(c[42043]|0,d)|0;c[42043]=d}else d=c[42043]|0;xK(d,e)|0;IL(c[42043]|0,g)|0;d=c[42043]|0;d=d+(rJ(d)|0)|0;a[d>>0]=46;a[d+1>>0]=0;d=GL(c[f>>2]|0)|0;f=c[42043]|0;while(1){e=HL(d,58)|0;if(!e)break;IL(f,e+1|0)|0;i=c[42043]|0;g=i+(rJ(i)|0)|0;a[g>>0]=46;a[g+1>>0]=0;a[e>>0]=0;f=i}IL(f,d)|0;_I(d);c[b+32>>2]=c[42043];l=h;return}function kr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+8|0;f=h;if((b|0)!=0&(d|0)!=0){if(c[a+152>>2]&1024|0){hb[c[(c[a+12>>2]|0)+16>>2]&31](83170,f);Ma(1)}if((lr(a,b,d)|0)==(d|0))e=d;else{f=c[(c[a+12>>2]|0)+16>>2]|0;c[g>>2]=d;hb[f&31](83202,g);Ma(1)}}else e=0;l=h;return e|0}function lr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=c[(c[b>>2]|0)+104>>2]|0;do if(!f){j=b+40|0;h=c[j>>2]|0;if(!h){e=XL(d,1,e,c[b+36>>2]|0)|0;break}f=b+44|0;i=b+48|0;g=c[i>>2]|0;do if(((c[f>>2]|0)+-1-g|0)>>>0<e>>>0){g=e+4096+g&-4096;c[f>>2]=g;f=aJ(h,g)|0;c[j>>2]=f;if(!f){hb[c[(c[b+12>>2]|0)+16>>2]&31](83227,n);Ma(1)}else{k=f;m=c[i>>2]|0;break}}else{k=h;m=g}while(0);TN(k+m|0,d|0,e|0)|0;n=(c[i>>2]|0)+e|0;c[i>>2]=n;a[(c[j>>2]|0)+n>>0]=0}else e=bb[f&31](b,d,e)|0;while(0);l=o;return e|0}function mr(a,b){a=a|0;b=b|0;var c=0;c=rJ(b)|0;b=(kr(a,b,c)|0)==(c|0);return (b?1:-1)|0}function nr(b,c){b=b|0;c=c|0;var d=0,e=0;d=l;l=l+16|0;e=d;a[e>>0]=c;b=(kr(b,e,1)|0)==1;l=d;return (b?c:-1)|0}function or(b){b=b|0;var d=0;d=c[b+36>>2]|0;if(((d|0)!=0?(a[b+144>>0]|0)==0:0)?(c[(c[b>>2]|0)+104>>2]|0)==0:0)b=PL(d)|0;else b=0;return b|0}function pr(a){a=a|0;var b=0,d=0;b=c[a+76>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)gb[d&127](a);or(a)|0;return}function qr(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=c[a+76>>2]|0;if(c[a+152>>2]&1024|0){hb[c[(c[a+12>>2]|0)+16>>2]&31](83254,e);Ma(1)}if((d|0)!=0?(b=c[d+8>>2]|0,(b|0)!=0):0)gb[b&127](a);else{or(a)|0;rr(a)}l=e;return}function rr(b){b=b|0;var d=0,e=0,f=0;d=b+32|0;if((c[d>>2]|0?(e=b+36|0,f=c[e>>2]|0,(f|0)!=(c[13885]|0)):0)?(a[b+144>>0]|0)==0:0){if(f|0){LL(f)|0;c[e>>2]=0}c[d>>2]=0}return}function sr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;f=i;h=i+24|0;g=i+8|0;c[g>>2]=d;e=LK(h,1024,b,g)|0;if((e|0)>=0){if((e|0)>1023){e=ww(e+1|0)|0;c[g>>2]=d;f=e;e=qL(e,b,g)|0}else f=h;kr(a,f,e)|0;if((f|0)!=(h|0))_I(f)}else{c[f>>2]=yJ(c[(jJ()|0)>>2]|0)|0;_l(1,83271,f)|0}l=i;return}function tr(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=ur(e,b)|0;kr(a,f,c[e>>2]|0)|0;l=d;return}function ur(b,d){b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(d<-1.0e15))if(!(d>1.0e15)){d=d*1.0e4;f=~~((d<0.0?-.5:.5)+d);if(!f){f=123205;e=1}else{l=(f|0)<0;k=4;i=0;e=173948;f=l?0-f|0:f;while(1){if(!((f|0)!=0|(k|0)>0))break;g=(f|0)%10|0;j=(f|0)/10|0;h=e+-1|0;if((g|0)==0&i<<24>>24==0)f=0;else{a[h>>0]=g|48;f=1;e=h}if((k|0)==1)if(!(f<<24>>24))f=1;else{e=e+-1|0;a[e>>0]=46;f=1}k=k+-1|0;i=f;f=j}if(l){e=e+-1|0;a[e>>0]=45}f=e;e=173948-e|0}}else{f=83286;e=18}else{f=83285;e=19}c[b>>2]=e;return f|0}function vr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=ur(e,+h[b>>3])|0;kr(a,f,c[e>>2]|0)|0;kr(a,87638,1)|0;b=ur(e,+h[b+8>>3])|0;kr(a,b,c[e>>2]|0)|0;l=d;return}function wr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;e=0;while(1){h=b+(e<<4)|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];vr(a,f);e=e+1|0;if((e|0)>=(d|0))break;kr(a,87638,1)|0}l=g;return}function xr(a,b){a=a|0;b=b|0;var d=0;d=vw(392)|0;if(d|0){c[d>>2]=19212;c[d+16>>2]=22;c[d+32>>2]=a;c[d+36>>2]=b}return d|0}function yr(a){a=a|0;var b=0,d=0,e=0,f=0;b=vw(392)|0;d=b;e=a;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));f=b+60|0;e=a+60|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];f=b+80|0;e=a+80|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];return b|0}function zr(a){a=a|0;Gr(a);_I(a);return}function Ar(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[42044]|0;if(e){d=c[e+4>>2]|0;if(!d){d=vw(632)|0;c[(c[42044]|0)+4>>2]=d}}}else{d=vw(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[42044]=d;c[d+32>>2]=b;c[d>>2]=a;return}function Br(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[42045]|0;if(e){d=c[e+4>>2]|0;if(!d){d=vw(632)|0;c[(c[42045]|0)+4>>2]=d}}}else{d=vw(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[42045]=d;c[d+52>>2]=b;c[d>>2]=a;return (Jr(a,3,b)|0)!=0|0}function Cr(a){a=a|0;var b=0;b=c[a+160>>2]|0;c[a+164>>2]=b;return b|0}function Dr(a){a=a|0;var b=0,d=0,e=0;a=a+164|0;b=c[a>>2]|0;d=c[b+4>>2]|0;if(d|0?(e=d+52|0,(c[e>>2]|0)==0):0)c[e>>2]=c[b+52>>2];c[a>>2]=d;return d|0}function Er(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;f=b+10|0;if((c[e>>2]|0)>(b|0))a=c[a>>2]|0;else{c[e>>2]=f;f=yw(c[a>>2]|0,f<<2)|0;c[a>>2]=f;a=f}c[a+(b<<2)>>2]=d;return}function Fr(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)_I(b);c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;return}function Gr(a){a=a|0;var b=0,d=0,e=0;d=a+160|0;b=c[d>>2]|0;while(1){if(!b)break;e=c[b+4>>2]|0;Fr(b+604|0);Fr(b+592|0);_I(c[b+584>>2]|0);_I(c[b+588>>2]|0);_I(b);b=e}c[42045]=0;c[42044]=0;c[a+192>>2]=0;c[a+164>>2]=0;c[d>>2]=0;c[a+28>>2]=0;return}function Hr(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;k=n+64|0;m=n;mL(k,e,63)|0;i=WJ(k,58)|0;if(i|0)a[i>>0]=0;b=b+60+(d<<2)|0;while(1){d=c[b>>2]|0;if(!d){d=b;b=0;break}mL(m,c[d+4>>2]|0,63)|0;d=WJ(m,58)|0;if(d|0)a[d>>0]=0;if((xJ(k,m)|0)<1){j=9;break}b=c[b>>2]|0}while(1){if((j|0)==9){d=b;b=c[b>>2]|0}if(!b)break;mL(m,c[b+4>>2]|0,63)|0;b=WJ(m,58)|0;if(b|0)a[b>>0]=0;if(xJ(k,m)|0)break;b=c[d>>2]|0;if((c[b+8>>2]|0)<=(f|0))break;j=9}m=ww(20)|0;c[m>>2]=c[d>>2];c[d>>2]=m;c[m+4>>2]=e;c[m+8>>2]=f;c[m+12>>2]=g;c[m+16>>2]=h;l=n;return 1}function Ir(a,b){a=a|0;b=b|0;b=l;l=l+16|0;_l(1,83366,b)|0;l=b;return 0}function Jr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+144|0;r=s;o=s+80|0;p=s+16|0;n=(d+-3|0)>>>0<2?0:d;mL(o,e,63)|0;e=WJ(o,58)|0;if(e){f=e+1|0;a[e>>0]=0;e=WJ(f,58)|0;if(!e)m=0;else{a[e>>0]=0;m=e+1|0}}else{m=0;f=0}i=(f|0)!=0;j=(m|0)==0;k=(n|0)==(d|0);h=b+60+(d<<2)|0;a:while(1){e=c[h>>2]|0;if(!e){e=0;break}mL(p,c[e+4>>2]|0,63)|0;e=WJ(p,58)|0;if(!e)e=0;else{a[e>>0]=0;e=e+1|0}do if(!(xJ(p,o)|0)){g=(e|0)!=0;if(i&g?xJ(e,f)|0:0)break;if(!j?xJ(m,c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]|0)|0:0)break;if(k|g^1){q=16;break a}if(Jr(b,n,e)|0){q=16;break a}}while(0);h=c[h>>2]|0}do if((q|0)==16){e=c[h>>2]|0;if(e){f=e+16|0;if((c[f>>2]|0)==0?(Ir(0,0)|0,(c[f>>2]|0)==0):0){e=0;break}if((c[b+8>>2]|0)>0){q=c[13918]|0;o=c[e+4>>2]|0;p=c[(c[e+12>>2]|0)+8>>2]|0;c[r>>2]=c[19224+(d<<2)>>2];c[r+4>>2]=o;c[r+8>>2]=p;zL(q,83397,r)|0}}else e=0}while(0);c[b+80+(d<<2)>>2]=e;l=s;return e|0}function Kr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!e)e=0;else{if(c[4811]|0){cm(168184,0,0);c[4811]=0}h=GL(e)|0;e=WJ(h,58)|0;if(e){a[e>>0]=0;f=b+60+(d<<2)|0;e=1;g=f;while(1){b=c[g>>2]|0;if(!b)break;d=GL(c[b+4>>2]|0)|0;b=WJ(d,58)|0;if(b|0)a[b>>0]=0;if(!((a[h>>0]|0)!=0?(iK(h,d)|0)!=0:0)){e=c[42047]|0;if(e>>>0>=(c[42048]|0)>>>0){dm(168184,1)|0;e=c[42047]|0}c[42047]=e+1;a[e>>0]=32;fm(168184,c[(c[g>>2]|0)+4>>2]|0)|0;e=c[42047]|0;if(e>>>0>=(c[42048]|0)>>>0){dm(168184,1)|0;e=c[42047]|0}c[42047]=e+1;a[e>>0]=58;fm(168184,c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)|0;e=0}_I(d);g=c[g>>2]|0}_I(h);if(e<<24>>24){g=0;i=19}}else{_I(h);g=0;f=b+60+(d<<2)|0;e=1;i=19}if((i|0)==19){while(1){b=c[f>>2]|0;if(!b)break;d=GL(c[b+4>>2]|0)|0;b=WJ(d,58)|0;if(b|0)a[b>>0]=0;if(!((g|0)!=0?(iK(g,d)|0)==0:0)){e=c[42047]|0;if(e>>>0>=(c[42048]|0)>>>0){dm(168184,1)|0;e=c[42047]|0}c[42047]=e+1;a[e>>0]=32;fm(168184,d)|0;e=0}g=d;f=c[f>>2]|0;i=19}if(e<<24>>24){e=174181;break}}e=c[42047]|0;if(e>>>0>=(c[42048]|0)>>>0){dm(168184,1)|0;e=c[42047]|0}a[e>>0]=0;e=c[42046]|0;c[42047]=e}while(0);return e|0}function Lr(b){b=b|0;var d=0;if(!b)ma(96030,83414,573,83428);if(!(a[b>>0]|0))ma(96035,83414,574,83428);d=c[42050]|0;if(!d)b=0;else b=bb[c[d>>2]&31](d,b,512)|0;return b|0}function Mr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;if(!b)ma(96091,83414,589,83445);g=b+8|0;e=c[g>>2]|0;if(!e)ma(96094,83414,590,83445);if(!(a[e>>0]|0))ma(96103,83414,591,83445);h=b+20|0;f=c[h>>2]|0;do if(!f){d=RA(e)|0;if(!d){c[i>>2]=c[g>>2];_l(0,83469,i)|0;d=0;break}i=aM(d,123632)|0;c[h>>2]=i;if(!i){c[j>>2]=yJ(c[(jJ()|0)>>2]|0)|0;c[j+4>>2]=d;_l(0,83494,j)|0;d=0;break}d=c[42051]|0;if((d|0)>49){a[b+17>>0]=1;d=1;break}else{c[42051]=d+1;d=1;break}}else{oM(f,0,0)|0;if(!(c[h>>2]|0))ma(83515,83414,614,83445);else d=1}while(0);l=k;return d|0}function Nr(b){b=b|0;var d=0,e=0;if(a[b+17>>0]|0?(d=b+20|0,e=c[d>>2]|0,e|0):0){LL(e)|0;c[d>>2]=0}return}function Or(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0;if(!b){e=-1;d=-1}else{e=c[b+48>>2]|0;f=+(e|0);if(!e){g=+h[d>>3];f=+h[d+8>>3]}else{h[d+8>>3]=f;h[d>>3]=f;g=f}e=~~(+((c[b+40>>2]|0)*72|0)/g);d=~~(+((c[b+44>>2]|0)*72|0)/f)}c[a>>2]=e;c[a+4>>2]=d;return}function Pr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;f=m+16|0;j=m;k=m+32|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){if((0==0?(g=c[42178]|0,(c[42052]|0)!=(g|0)):0)?(c[42052]=g,i=c[42050]|0,i|0):0){Kl(i)|0;c[42050]=0}n=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];n=!(n>=1.0)?96.0:n;h[j+8>>3]=n;h[j>>3]=n;d=Qr(e)|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];Or(k,d,f);d=c[k>>2]|0;f=c[k+4>>2]|0}else{d=-1;f=-1}c[b>>2]=d;c[b+4>>2]=f;l=m;return}function Qr(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(!a)ma(96030,83414,638,83521);if(!(c[42050]|0))c[42050]=Ql(19248,c[4353]|0)|0;b=Lr(a)|0;a:do if(!b){b=vw(64)|0;if(!b)b=0;else{d=b+8|0;c[d>>2]=$o(0,a)|0;if(!((Mr(b)|0)<<24>>24)){Rr(b);b=0;break}if(!(c[b+20>>2]|0))ma(83515,83414,653,83521);do switch(Sr(b)|0){case 0:{a=Py(c[d>>2]|0)|0;c[b+52>>2]=a;if(!a){c[e>>2]=c[d>>2];_l(0,83538,e)|0;Rr(b);b=0;break a}break}case 2:{Tr(b);break}case 3:{Ur(b);break}case 1:{Vr(b);break}case 4:{Wr(b);break}case 6:{Xr(b);break}case 11:{Yr(b);break}case 8:{Zr(b);break}case 5:{_r(b);break}case 12:{$r(b);break}default:{}}while(0);Nr(b);e=c[42050]|0;bb[c[e>>2]&31](e,b,1)|0}}else Nr(b);while(0);l=f;return b|0}function Rr(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(b|0)bp(0,b)|0;_I(a);return}function Sr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;f=j+200|0;g=j;h=a+20|0;b=c[h>>2]|0;a:do if((b|0)!=0?(wN(f,1,20,b)|0)==20:0){d=0;while(1){if(d>>>0>=10){i=13;break a}if(!(dL(f,c[19284+(d<<4)>>2]|0,c[19284+(d<<4)+4>>2]|0)|0))break;d=d+1|0}e=a+28|0;c[e>>2]=c[19284+(d<<4)+12>>2];b=c[19284+(d<<4)+8>>2]|0;a=a+24|0;c[a>>2]=b;switch(d|0){case 7:break;case 8:{if(dL(f+8|0,83754,4)|0)break a;c[e>>2]=83759;c[a>>2]=11;b=11;break a}default:break a}while(1){if(!(gL(g,200,c[h>>2]|0)|0)){i=11;break}if(!(dL(g,83749,4)|0)){i=8;break}}if((i|0)==8){c[e>>2]=86879;c[a>>2]=8;b=8;break}else if((i|0)==11){b=c[a>>2]|0;break}}else i=13;while(0);if((i|0)==13){c[a+28>>2]=83764;c[a+24>>2]=0;b=0}l=j;return b|0}function Tr(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,6,0)|0;if((is(c[e>>2]|0,2,b)|0)<<24>>24?(is(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function Ur(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,16,0)|0;if((as(c[e>>2]|0,4,b)|0)<<24>>24?(as(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function Vr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;b=h+12|0;d=h+8|0;e=h+4|0;f=h;c[a+48>>2]=0;g=a+20|0;oM(c[g>>2]|0,16,0)|0;if((((is(c[g>>2]|0,2,b)|0)<<24>>24?(is(c[g>>2]|0,2,d)|0)<<24>>24:0)?(is(c[g>>2]|0,2,e)|0)<<24>>24:0)?(is(c[g>>2]|0,2,f)|0)<<24>>24:0){c[a+40>>2]=c[b>>2]<<16|c[d>>2];c[a+44>>2]=c[e>>2]<<16|c[f>>2]}l=h;return}function Wr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+32|0;b=m+16|0;e=m+12|0;f=m+8|0;h=m+4|0;i=m;c[a+48>>2]=0;j=a+20|0;while(1){if(!((as(c[j>>2]|0,1,b)|0)<<24>>24))break;d=c[b>>2]|0;if((d|0)==255)continue;if(WJ(83737,d)|0)continue;if((d|0)==192){k=6;break}g=c[j>>2]|0;if((d|0)==194){k=11;break}if(!((as(g,2,e)|0)<<24>>24))break;oM(c[j>>2]|0,(c[e>>2]|0)+-2|0,1)|0}if((k|0)==6){if(((as(c[j>>2]|0,3,i)|0)<<24>>24?(as(c[j>>2]|0,2,f)|0)<<24>>24:0)?(as(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}}else if((((k|0)==11?(as(g,3,i)|0)<<24>>24:0)?(as(c[j>>2]|0,2,f)|0)<<24>>24:0)?(as(c[j>>2]|0,2,h)|0)<<24>>24:0){c[a+44>>2]=c[f>>2];c[a+40>>2]=c[h>>2]}l=m;return}function Xr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1056|0;j=m;b=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;c[a+48>>2]=72;i=a+20|0;oM(c[i>>2]|0,0,0)|0;while(1){if(!(gL(b,1024,c[i>>2]|0)|0))break;d=hL(b,83722)|0;if(!d)continue;c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=g;c[j+12>>2]=h;if((cM(d,89345,j)|0)==4){k=5;break}}if((k|0)==5){j=c[e>>2]|0;c[a+32>>2]=j;k=c[f>>2]|0;c[a+36>>2]=k;c[a+40>>2]=(c[g>>2]|0)-j;c[a+44>>2]=(c[h>>2]|0)-k}l=m;return}function Yr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;b=g+4|0;d=g;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,15,0)|0;h=(BN(c[e>>2]|0)|0)==88;f=c[e>>2]|0;if(h){oM(f,24,0)|0;if((is(c[e>>2]|0,4,b)|0)<<24>>24?(is(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}else{oM(f,26,0)|0;if((is(c[e>>2]|0,2,b)|0)<<24>>24?(is(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}}l=g;return}function Zr(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+352|0;C=F+80|0;B=F+72|0;E=F+64|0;D=F+56|0;A=F+48|0;d=F+40|0;s=F+32|0;t=F+24|0;u=F+16|0;v=F+8|0;w=F;x=F+328|0;y=F+128|0;z=F+96|0;if(!(c[42053]|0)){if(EM(168216,83607,1)|0){c[d>>2]=83607;_l(1,83634,d)|0}c[42053]=168216}m=b+20|0;oM(c[m>>2]|0,0,0)|0;n=z+12|0;o=z+20|0;p=z+8|0;q=z+16|0;r=z+4|0;d=0;g=0;f=0;e=0;a:while(1){if(!(gL(y,200,c[m>>2]|0)|0))break;if(g<<24>>24==0|d<<24>>24==0){i=y;k=e}else break;b:while(1){j=f;c:while(1){while(1){if(qN(168216,i,4,z,0)|0){f=j;e=k;continue a}a[i+(c[n>>2]|0)>>0]=0;a[i+(c[o>>2]|0)>>0]=0;e=i+(c[p>>2]|0)|0;f=i+(c[q>>2]|0)|0;i=i+((c[r>>2]|0)+1)|0;if(!(xJ(e,96043)|0))break;if(!(xJ(e,96049)|0))break c;if(xJ(e,83681)|0)continue;c[C>>2]=t;c[C+4>>2]=u;c[C+8>>2]=v;c[C+12>>2]=w;if((cM(f,83689,C)|0)==4)break b}c[A>>2]=s;c[A+4>>2]=x;if((cM(f,83671,A)|0)!=2){c[D>>2]=s;if((cM(f,86246,D)|0)==1){e=1;f=hs(+h[s>>3],83678)|0}else{e=g;f=j}}else{e=1;f=hs(+h[s>>3],x)|0}if(!(d<<24>>24)){d=0;g=e;j=f}else{g=e;e=k;continue a}}c[E>>2]=s;c[E+4>>2]=x;if((cM(f,83671,E)|0)!=2){c[B>>2]=s;if((cM(f,86246,B)|0)==1){d=1;e=hs(+h[s>>3],83678)|0}else e=k}else{d=1;e=hs(+h[s>>3],x)|0}if(!(g<<24>>24)){g=0;f=j;k=e}else{f=j;continue a}}d=1;g=1;f=~~(+h[v>>3]+1.0-+h[t>>3])>>>0;e=~~(+h[w>>3]+1.0-+h[u>>3])>>>0}c[b+48>>2]=0;c[b+40>>2]=f;c[b+44>>2]=e;l=F;return}function _r(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0;d=l;l=l+32|0;b=d;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,0,0)|0;if(!(bs(c[e>>2]|0,b)|0)){g=+h[b>>3];c[a+32>>2]=~~g;f=+h[b+8>>3];c[a+36>>2]=~~f;c[a+40>>2]=~~(+h[b+16>>3]-g);c[a+44>>2]=~~(+h[b+24>>3]-f)}l=d;return}function $r(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;oM(c[e>>2]|0,6,0)|0;if((as(c[e>>2]|0,1,b)|0)<<24>>24?(as(c[e>>2]|0,1,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function as(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=BN(a)|0;if(KL(a)|0){e=0;break}c[d>>2]=c[d>>2]<<8|f;e=e+1|0}return e|0}function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;d=h;e=h+16|0;while(1){if(!(gL(e,1024,a)|0)){a=1;break}f=hL(e,83597)|0;if(f|0){g=4;break}}if((g|0)==4){c[d+4>>2]=e;c[d>>2]=f+9;c[d+8>>2]=a;a=cs(d,b)|0}l=h;return a|0}function cs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+1024|0;f=g;ds(b);e=a[c[b>>2]>>0]|0;if(!(e<<24>>24))e=(es(b)|0)&255;else e=e<<24>>24;if((((e|0)==91?(c[b>>2]=(c[b>>2]|0)+1,fs(b,f),(gs(f,d)|0)==0):0)?(fs(b,f),(gs(f,d+8|0)|0)==0):0)?(fs(b,f),(gs(f,d+16|0)|0)==0):0){fs(b,f);e=(gs(f,d+24|0)|0)!=0&1}else e=1;l=g;return e|0}function ds(b){b=b|0;var d=0;d=c[b>>2]|0;while(1){d=a[d>>0]|0;if(!(d<<24>>24))d=(es(b)|0)&255;else d=d<<24>>24;if(!((d&255)<<24>>24))break;if(!(XJ(d&255)|0))break;d=(c[b>>2]|0)+1|0;c[b>>2]=d}return}function es(b){b=b|0;var d=0;d=b+4|0;if(!(gL(c[d>>2]|0,1024,c[b+8>>2]|0)|0))b=0;else{d=c[d>>2]|0;c[b>>2]=d;b=a[d>>0]|0}return b|0}function fs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;ds(b);e=0;f=c[b>>2]|0;while(1){f=a[f>>0]|0;if(!(f<<24>>24))g=(es(b)|0)&255;else g=f<<24>>24;f=g<<24>>24;if(!f)break;if(!((f|0)==46|(f+-48|0)>>>0<10))break;a[d+e>>0]=g;e=e+1|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;if((e|0)==1023){e=1023;break}}a[d+e>>0]=0;return}function gs(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=l;l=l+16|0;f=e;d=+tM(a,f);if((c[f>>2]|0)==(a|0))a=1;else{h[b>>3]=d;a=0}l=e;return a|0}function hs(a,b){a=+a;b=b|0;var c=0.0;do if(!(xJ(b,83705)|0)){a=a*72.0;c=a;a=a>=0.0?.5:-.5}else{if(!(xJ(b,83708)|0)){a=a*.75;c=a;a=a>=0.0?.5:-.5;break}if(!(xJ(b,83711)|0)){a=a*12.0;c=a;a=a>=0.0?.5:-.5;break}if(xJ(b,83678)|0?xJ(b,83714)|0:0)if(!(xJ(b,83716)|0)){a=a*28.346456664;c=a;a=a>=0.0?.5:-.5;break}else{b=(xJ(b,83719)|0)==0;c=a*2.8346456663999997;return (b?~~(c+(c>=0.0?.5:-.5)):0)|0}c=a>=0.0?.5:-.5}while(0);return ~~(a+c)|0}function is(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=BN(a)|0;if(KL(a)|0){e=0;break}c[d>>2]=c[d>>2]|f<<(e<<3);e=e+1|0}return e|0}function js(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+20>>2]|0;if(a|0)LL(a)|0;if(c[b+52>>2]|0?(e=c[b+60>>2]|0,e|0):0)gb[e&127](b);_I(b);return}function ks(){var a=0;ym(0,1,86240,90527)|0;a=xr(0,1)|0;sE(a,0);return a|0}function ls(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0;k=l;l=l+304|0;j=k+24|0;i=k+8|0;f=k;g=k+40|0;if((fr(b,e)|0)!=999)if((gr(b,d)|0)==-1)b=-1;else{b=c[d+16>>2]|0;e=b+16|0;if(!(a[(c[b+8>>2]|0)+81>>0]|0)){p=+h[e>>3];o=+h[b+24>>3];n=+h[b+32>>3];m=+h[b+40>>3];c[j>>2]=~~(p+(p>=0.0?.5:-.5));c[j+4>>2]=~~(o+(o>=0.0?.5:-.5));c[j+8>>2]=~~(n+(n>=0.0?.5:-.5));c[j+12>>2]=~~(m+(m>=0.0?.5:-.5));pL(g,83918,j)|0}else{m=+h[b+24>>3];n=+h[e>>3];o=+h[b+40>>3];p=+h[b+32>>3];c[i>>2]=~~(m+(m>=0.0?.5:-.5));c[i+4>>2]=~~(n+(n>=0.0?.5:-.5));c[i+8>>2]=~~(o+(o>=0.0?.5:-.5));c[i+12>>2]=~~(p+(p>=0.0?.5:-.5));pL(g,83918,i)|0}Lm(d,87705,g,174181)|0;b=0}else{b=Kr(b,1,e)|0;c[f>>2]=e;c[f+4>>2]=b;_l(1,83869,f)|0;b=-1}l=k;return b|0}function ms(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;Br(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=bD(b,c[b+52>>2]|0)|0;if((No(f,122277,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){bm(83930,g);b=-1}else h=5;if((h|0)==5){c[b+36>>2]=e;if(!e){h=b+152|0;c[h>>2]=c[h>>2]|134217728}h=Gv(a,f)|0;dD(b);Gr(a);b=h}l=i;return b|0}function ns(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;Br(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=bD(b,c[b+52>>2]|0)|0;if((No(f,122277,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){bm(83930,g);b=-1}else h=5;if((h|0)==5){Ar(a,e);h=Gv(a,f)|0;dD(b);qr(b);Gr(a);b=h}l=i;return b|0}function os(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m+8|0;g=m;b=c[b+60>>2]|0;Br(a,d)|0;j=c[a+164>>2]|0;c[j+56>>2]=bD(j,c[j+52>>2]|0)|0;if((No(b,122277,0,1)|0)!=0?(c[(c[b+16>>2]|0)+8>>2]|0)!=0:0)k=5;else if(!(c[j+152>>2]&67108864)){bm(83930,g);b=-1}else k=5;do if((k|0)==5){if(e|0?(i=ZI(4096)|0,c[e>>2]=i,i|0):0){g=j+40|0;c[g>>2]=i;c[j+44>>2]=4096;d=j+48|0;c[d>>2]=0;b=Gv(a,b)|0;dD(j);if(!b){c[e>>2]=c[g>>2];c[f>>2]=c[d>>2]}Gr(a);break}_l(1,83951,h)|0;b=-1}while(0);l=m;return b|0}function ps(a,b){a=a|0;b=b|0;qE(a,0,b);return}function qs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((a|0)!=0?(ys(a)|0)!=0:0))a=84007;e=rJ(a)|0;if((e|0)>=104){d=ww(e+25|0)|0;if(!d)d=0;else f=6}else f=6;if((f|0)==6){xK(d,a)|0;c[b>>2]=e}return d|0}function rs(a,b){a=a|0;b=b|0;io(b,a,1)|0;return}function ss(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=d;c[b+4>>2]=d+4096;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=e;c[a+16>>2]=f;return}function ts(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;ws(e,b);i=e+12|0;j=e+16|0;b=0;a:while(1){k=xs(e)|0;if(!k)break;b=b+1|0;f=c[i>>2]|0;if(f|0)hb[f&31](k,d);h=Um(a,k)|0;while(1){if(!h)continue a;g=c[h>>2]&3;f=c[((g|0)==3?h:h+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?h:h+-48|0)+40>>2]|0;if(!(ab[c[j>>2]&63](f,-1)|0))ws(e,f);h=Vm(a,h,k)|0}}return b|0}function us(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;vs(a);a=b}return}function vs(a){a=a|0;_I(c[a>>2]|0);_I(a);return}function ws(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;f=k;g=a+8|0;i=a+4|0;d=c[i>>2]|0;if((c[g>>2]|0)==(c[d+4>>2]|0)){d=c[d+12>>2]|0;do if(!d){e=ww(16)|0;if(!e){_l(1,83988,f)|0;Ua(168248,1)}c[e+8>>2]=c[i>>2];c[e+12>>2]=0;d=ww(4e6)|0;c[e>>2]=d;if(!d){_l(1,83988,j)|0;Ua(168248,1)}else{c[e+4>>2]=d+4e6;c[(c[i>>2]|0)+12>>2]=e;h=e;break}}else h=d;while(0);c[i>>2]=h;c[g>>2]=c[h>>2]}ab[c[a+16>>2]&63](b,1)|0;j=c[g>>2]|0;c[g>>2]=j+4;c[j>>2]=b;l=k;return}function xs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function ys(b){b=b|0;var c=0;a:while(1){c=b;b=b+1|0;c=a[c>>0]|0;switch(c<<24>>24){case 95:continue a;case 0:{b=1;break a}default:{}}if(!(gK(c&255)|0)){b=0;break}}return b|0}function zs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=0;f=co(a)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;if(io(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,0)|0){en(a,e,1)|0;d=d+1|0}e=Rm(b,e)|0}f=eo(a,f)|0}return d|0}function As(a){a=a|0;a=Lo(a,84012,0)|0;if(!a)ma(84017,84020,529,84029);else return c[a+8>>2]|0;return 0}function Bs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=l;l=l+4320|0;s=u+24|0;r=u+8|0;q=u;t=u+4184|0;p=u+4160|0;f=u+40|0;if(mn(b)|0){So(b,0,84038,-12,0);So(b,1,84050,16,0);o=qs(e,f,t)|0;k=Cs(b)|0;m=ww((mn(k)|0)<<2)|0;ss(p,u+4144|0,u+48|0,23,22);h=co(k)|0;n=p+16|0;i=o+(c[f>>2]|0)|0;j=c[13918]|0;e=0;while(1){if(!h)break;if(!(ab[c[n>>2]&63](h,-1)|0)){c[q>>2]=e;pL(i,84952,q)|0;v=Ip(k,o,1)|0;w=Ip(b,o,1)|0;No(w,84038,12,0)|0;a[(Lo(w,84038,0)|0)+8>>0]=1;f=ts(k,h,v,p)|0;Es(v,w);g=Fs(w)|0;Gs(b,w);c[m+(e<<2)>>2]=w;qo(k,v)|0;if(0){c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=g;zL(j,84062,r)|0}e=e+1|0}h=eo(k,h)|0}if(0){r=mn(b)|0;v=nn(b)|0;w=Dn(b)|0;c[s>>2]=r;c[s+4>>2]=v;c[s+8>>2]=e;c[s+12>>2]=w;zL(j,84092,s)|0}ln(k)|0;To(b,0,84038);To(b,1,84050);us(p);f=yw(m,e<<2)|0;if((o|0)!=(t|0))_I(o)}else{f=0;e=0}c[d>>2]=e;l=u;return f|0}function Cs(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a[h>>0]=a[17652]|0;a[h+1>>0]=a[17653]|0;a[h+2>>0]=a[17654]|0;a[h+3>>0]=a[17655]|0;h=gn(84139,h,0)|0;Js(h,b);d=co(b)|0;while(1){if(!d)break;if(!(c[(Lo(d,84050,0)|0)+12>>2]|0)){g=no(h,Dn(d)|0,1)|0;No(g,84050,16,1)|0;c[(c[g+16>>2]|0)+12>>2]=d;c[(Lo(d,84050,0)|0)+12>>2]=g}d=eo(b,d)|0}e=co(b)|0;while(1){if(!e)break;f=c[(Lo(e,84050,0)|0)+12>>2]|0;d=Pm(b,e)|0;while(1){if(!d)break;g=c[(Lo(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,84050,0)|0)+12>>2]|0;do if((g|0)!=(f|0))if(g>>>0>f>>>0){an(h,f,g,0,1)|0;break}else{an(h,g,f,0,1)|0;break}while(0);d=Rm(b,d)|0}e=eo(b,e)|0}l=i;return h|0}function Ds(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+8|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function Es(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=co(a)|0;while(1){if(!e)break;f=c[(c[e+16>>2]|0)+12>>2]|0;a:do if((c[f>>2]&3|0)==1)io(b,f,1)|0;else{d=co(f)|0;while(1){if(!d)break a;io(b,d,1)|0;d=eo(f,d)|0}}while(0);e=eo(a,e)|0}return}function Fs(a){a=a|0;return zs(a,c[a+60>>2]|0)|0}function Gs(a,b){a=a|0;b=b|0;Hs(a,b,0);return}function Hs(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=(d|0)==0;b=Jp(b)|0;while(1){if(!b)break;if((a[(Lo(b,84038,0)|0)+8>>0]|0)==0?(f=Is(b,c,d)|0,f|0):0){if(g)e=(VJ(Dn(b)|0,93039,7)|0)==0;else e=1;Hs(b,f,e&1)}b=Kp(b)|0}return}function Is(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=0;g=co(a)|0;while(1){if(!g)break;f=no(b,Dn(g)|0,0)|0;if(f){if(!e)e=Ip(b,Dn(a)|0,1)|0;io(e,f,1)|0}g=eo(a,g)|0}if((d|0)!=0&(e|0)==0)e=Ip(b,Dn(a)|0,1)|0;if(e|0?(zs(e,a)|0,Mm(a,e)|0,(VJ(Dn(e)|0,93039,7)|0)==0):0)c[(No(e,84012,12,0)|0)+8>>2]=a;return e|0}function Js(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;d=Jp(b)|0;e=c[13918]|0;while(1){if(!d)break;a:do if(!(VJ(Dn(d)|0,93039,7)|0)){f=no(a,Dn(d)|0,1)|0;No(f,84050,16,1)|0;c[(c[f+16>>2]|0)+12>>2]=d;b=co(d)|0;while(1){if(!b)break a;if(c[(Lo(b,84050,0)|0)+12>>2]|0){k=Dn(b)|0;j=Dn(d)|0;i=Dn(c[(Lo(b,84050,0)|0)+12>>2]|0)|0;c[g>>2]=k;c[g+4>>2]=j;c[g+8>>2]=i;zL(e,84142,g)|0}c[(Lo(b,84050,0)|0)+12>>2]=f;b=eo(d,b)|0}}else Js(a,d);while(0);d=Kp(d)|0}l=h;return}function Ks(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0;n=+h[a>>3];j=~~(n+(n>=0.0?.5:-.5));n=+h[a+8>>3];a=~~(n+(n>=0.0?.5:-.5));n=+h[b>>3];g=~~(n+(n>=0.0?.5:-.5));n=+h[b+8>>3];f=~~(n+(n>=0.0?.5:-.5));l=g-j|0;i=((l|0)>-1?l:0-l|0)<<1;l=l>>31|1;m=f-a|0;k=((m|0)>-1?m:0-m|0)<<1;m=m>>31|1;a:do if((i|0)>(k|0)){e=0-i|0;d=k-(i>>1)|0;b=j;while(1){Cx(c,b,a);if((b|0)==(g|0))break a;j=(d|0)>-1;d=d+k+(j?e:0)|0;b=b+l|0;a=(j?m:0)+a|0}}else{e=0-k|0;d=j;b=i-(k>>1)|0;while(1){Cx(c,d,a);if((a|0)==(f|0))break a;k=(b|0)>-1;d=(k?l:0)+d|0;b=b+i+(k?e:0)|0;a=a+m|0}}while(0);return}function Ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;j=n+4|0;do if((a|0)<1)d=0;else{f=e+16|0;if((c[f>>2]|0)>>>0<4){d=Ms(a,b,d,e)|0;break}m=ww(a<<5)|0;d=0;while(1){if((d|0)==(a|0))break;g=c[b+(d<<2)>>2]|0;dB(g);h=m+(d<<5)|0;g=(c[g+16>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];d=d+1|0}if((c[f>>2]|0)==4){h=e+28|0;a:do if(c[h>>2]&2|0){f=e+24|0;c[f>>2]=vw(a<<2)|0;d=0;while(1){if((d|0)==(a|0))break a;g=Im(c[b+(d<<2)>>2]|0,84209)|0;if(g|0?(c[k>>2]=j,g=(cM(g,122187,k)|0)>0,i=c[j>>2]|0,g&(i|0)>-1):0)c[(c[f>>2]|0)+(d<<2)>>2]=i;d=d+1|0}}while(0);d=Ns(a,m,e)|0;if(c[h>>2]&2)_I(c[e+24>>2]|0)}else d=0;_I(m)}while(0);l=n;return d|0}function Ms(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0;G=l;l=l+144|0;B=G+136|0;A=G+64|0;F=G+48|0;v=G+40|0;u=G;t=G+120|0;x=G+104|0;C=G+96|0;D=c[f+20>>2]|0;c[x>>2]=0;c[x+4>>2]=0;c[x+8>>2]=0;c[x+12>>2]=0;a:do if((b|0)>=1){o=(D|0)==0;E=c[13918]|0;p=t+4|0;q=t+8|0;r=t+12|0;y=x+4|0;w=x+8|0;z=x+12|0;n=0;g=0;while(1){if((n|0)==(b|0))break;s=c[d+(n<<2)>>2]|0;dB(s);if(!o?(a[D+n>>0]|0)!=0:0){m=c[s+16>>2]|0;H=+h[m+16>>3];i=~~(H+(H>=0.0?.5:-.5));c[t>>2]=i;H=+h[m+24>>3];j=~~(H+(H>=0.0?.5:-.5));c[p>>2]=j;H=+h[m+32>>3];k=~~(H+(H>=0.0?.5:-.5));c[q>>2]=k;H=+h[m+40>>3];m=~~(H+(H>=0.0?.5:-.5));c[r>>2]=m;if(!g){c[x>>2]=c[t>>2];c[x+4>>2]=c[t+4>>2];c[x+8>>2]=c[t+8>>2];c[x+12>>2]=c[t+12>>2]}else{c[x>>2]=c[((c[x>>2]|0)>(i|0)?t:x)>>2];c[y>>2]=c[((c[y>>2]|0)>(j|0)?t:x)+4>>2];c[w>>2]=c[((c[w>>2]|0)<(k|0)?t:x)+8>>2];c[z>>2]=c[((c[z>>2]|0)<(m|0)?t:x)+12>>2]}g=g+1|0}if(0>2){m=Dn(s)|0;s=c[s+16>>2]|0;K=+h[s+16>>3];J=+h[s+24>>3];I=+h[s+32>>3];H=+h[s+40>>3];c[u>>2]=m;h[u+8>>3]=K;h[u+16>>3]=J;h[u+24>>3]=I;h[u+32>>3]=H;zL(E,84276,u)|0}n=n+1|0}q=ww(b<<5)|0;g=0;while(1){if((g|0)==(b|0))break;u=q+(g<<5)|0;t=(c[(c[d+(g<<2)>>2]|0)+16>>2]|0)+16|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];g=g+1|0}o=f+8|0;p=Qs(b,q,c[o>>2]|0)|0;if(0){c[v>>2]=p;zL(E,84304,v)|0}if((p|0)>=1){n=(D|0)!=0;if(n){i=((c[w>>2]|0)+(c[x>>2]|0)|0)/2|0;g=((c[z>>2]|0)+(c[y>>2]|0)|0)/2|0}else{i=0;g=0}c[C+4>>2]=g;c[C>>2]=i;m=vw(b<<4)|0;k=f+16|0;g=0;while(1){if((g|0)>=(b|0))break;i=c[d+(g<<2)>>2]|0;j=m+(g<<4)|0;c[m+(g<<4)+12>>2]=g;if((c[k>>2]|0)==3){x=(c[i+16>>2]|0)+16|0;y=c[o>>2]|0;z=Dn(i)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];c[A+16>>2]=c[x+16>>2];c[A+20>>2]=c[x+20>>2];c[A+24>>2]=c[x+24>>2];c[A+28>>2]=c[x+28>>2];c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];Rs(A,j,p,y,B,z)}else{c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];Ss(e,i,j,p,f,B)}g=g+1|0}j=vw(b<<2)|0;g=0;while(1){if((g|0)>=(b|0))break;c[j+(g<<2)>>2]=m+(g<<4);g=g+1|0}rL(j,b,4,23);k=wx()|0;g=vw(b<<3)|0;b:do if(n){i=0;while(1){if((i|0)>=(b|0)){i=0;break}if(a[D+i>>0]|0){e=c[j+(i<<2)>>2]|0;f=g+(c[e+12>>2]<<3)|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];Us(e,k,f,B)}i=i+1|0}while(1){if((i|0)>=(b|0))break b;if(!(a[D+i>>0]|0)){C=c[j+(i<<2)>>2]|0;Vs(i,C,k,g+(c[C+12>>2]<<3)|0,p,c[o>>2]|0,q)}i=i+1|0}}else{i=0;while(1){if((i|0)>=(b|0))break b;D=c[j+(i<<2)>>2]|0;Vs(i,D,k,g+(c[D+12>>2]<<3)|0,p,c[o>>2]|0,q);i=i+1|0}}while(0);_I(j);i=0;while(1){if((i|0)>=(b|0))break;_I(c[m+(i<<4)+4>>2]|0);i=i+1|0}_I(m);zx(k);_I(q);if(0>1){i=0;while(1){if((i|0)>=(b|0))break a;C=c[g+(i<<3)>>2]|0;D=c[g+(i<<3)+4>>2]|0;c[F>>2]=i;c[F+4>>2]=C;c[F+8>>2]=D;zL(E,84320,F)|0;i=i+1|0}}}else g=0}else g=0;while(0);l=G;return g|0}function Ns(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=l;l=l+16|0;g=z;x=vw(a<<3)|0;f=c[d+4>>2]|0;y=d+28|0;e=(f|0)>0;do if(!(c[y>>2]&1))if(e){k=1;w=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=1;w=(a+-1+f|0)/(f|0)|0;break}else if(e){k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}else{f=~~+N(+(+C(+(+(a|0)))));k=0;w=f;f=(a+-1+f|0)/(f|0)|0;break}while(0);if(0){v=c[13918]|0;c[g>>2]=k|0?84215:84225;c[g+4>>2]=w;c[g+8>>2]=f;zL(v,84238,g)|0}t=vw((f<<3)+8|0)|0;u=vw((w<<3)+8|0)|0;v=vw(a*24|0)|0;j=d+8|0;e=0;g=v;while(1){if((e|0)>=(a|0))break;p=+h[b+(e<<5)+8>>3];o=+h[b+(e<<5)+24>>3];q=+((c[j>>2]|0)>>>0);h[g>>3]=+h[b+(e<<5)+16>>3]-+h[b+(e<<5)>>3]+q;h[g+8>>3]=o-p+q;c[g+16>>2]=e;e=e+1|0;g=g+24|0}s=vw(a<<2)|0;e=0;while(1){if((e|0)>=(a|0))break;c[s+(e<<2)>>2]=v+(e*24|0);e=e+1|0}e=c[d+24>>2]|0;if(!e){if(!(c[y>>2]&64))rL(s,a,4,25)}else{c[42101]=e;rL(s,a,4,24)}r=(k|0)==0;e=0;g=0;j=0;while(1){if((j|0)>=(a|0)){i=0.0;e=0;break}k=c[s+(j<<2)>>2]|0;d=t+(g<<3)|0;q=+h[d>>3];p=+h[k>>3];h[d>>3]=q>p?q:p;d=u+(e<<3)|0;p=+h[d>>3];q=+h[k+8>>3];h[d>>3]=p>q?p:q;if(r){e=e+1|0;d=(e|0)==(w|0);e=d?0:e;g=g+(d&1)|0}else{g=g+1|0;d=(g|0)==(f|0);e=e+(d&1)|0;g=d?0:g}j=j+1|0}while(1){if((e|0)>(f|0)){i=0.0;e=w;break}d=t+(e<<3)|0;q=+h[d>>3];h[d>>3]=i;i=q+i;e=e+1|0}while(1){if((e|0)<=0)break;d=e+-1|0;q=+h[u+(d<<3)>>3];h[u+(e<<3)>>3]=i;i=q+i;e=d}h[u>>3]=i;e=0;g=0;d=0;while(1){if((d|0)>=(a|0))break;k=c[(c[s+(d<<2)>>2]|0)+16>>2]|0;i=+h[b+(k<<5)>>3];m=-i;p=+h[b+(k<<5)+8>>3];q=-p;n=+h[b+(k<<5)+16>>3];o=+h[b+(k<<5)+24>>3];j=c[y>>2]|0;do if(!(j&4))if(!(j&8)){i=(m-n+ +h[t+(g<<3)>>3]+ +h[t+(g+1<<3)>>3])*.5;break}else{i=i-n+ +h[t+(g+1<<3)>>3];break}else i=+h[t+(g<<3)>>3];while(0);c[x+(k<<3)>>2]=~~i;do if(!(j&16))if(!(j&32)){i=(q-o+ +h[u+(e<<3)>>3]+ +h[u+(e+1<<3)>>3])*.5;break}else{i=+h[u+(e+1<<3)>>3];break}else i=p-o+ +h[u+(e<<3)>>3];while(0);c[x+(k<<3)+4>>2]=~~i;if(r){e=e+1|0;k=(e|0)==(w|0);e=k?0:e;g=g+(k&1)|0}else{g=g+1|0;k=(g|0)==(f|0);e=e+(k&1)|0;g=k?0:g}d=d+1|0}_I(v);_I(s);_I(t);_I(u);l=z;return x|0}function Os(a,b){a=a|0;b=b|0;var d=0;d=c[42101]|0;a=c[d+(c[(c[a>>2]|0)+16>>2]<<2)>>2]|0;b=c[d+(c[(c[b>>2]|0)+16>>2]<<2)>>2]|0;return ((a|0)>(b|0)?1:((a|0)<(b|0))<<31>>31)|0}function Ps(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;e=+h[a>>3]+ +h[a+8>>3];d=+h[b>>3]+ +h[b+8>>3];return (e<d?1:(e>d)<<31>>31)|0}function Qs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0;s=l;l=l+96|0;q=s+80|0;r=s+48|0;p=s+8|0;m=s;k=(a*100|0)+-1|0;e=+(d<<1|0);n=0.0;o=0.0;d=0;while(1){if((d|0)>=(a|0))break;j=+h[b+(d<<5)+16>>3]-+h[b+(d<<5)>>3]+e;i=+h[b+(d<<5)+24>>3]-+h[b+(d<<5)+8>>3]+e;n=n-j-i;o=o-i*j;d=d+1|0}i=+(k|0);j=n*n-i*4.0*o;if(!(j<0.0)){e=+C(+j);g=i*2.0;f=(e-n)/g;g=(-n-e)/g;d=~~f;d=(d|0)==0?1:d;if(0>2){m=c[13918]|0;XL(84463,27,1,m)|0;h[p>>3]=i;h[p+8>>3]=n;h[p+16>>3]=o;h[p+24>>3]=j;h[p+32>>3]=e;zL(m,84491,p)|0;c[r>>2]=d;h[r+8>>3]=f;c[r+16>>2]=~~g;h[r+24>>3]=g;zL(m,84517,r)|0;h[q>>3]=(f*i+n)*f+o;h[q+8>>3]=(g*i+n)*g+o;zL(m,84539,q)|0}}else{h[m>>3]=j;_l(1,84436,m)|0;d=-1}l=s;return d|0}function Rs(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0.0,w=0.0;u=l;l=l+32|0;t=u+16|0;s=u;p=+h[a>>3];q=+h[a+8>>3];n=+h[a+16>>3];o=+h[a+24>>3];r=wx()|0;j=c[f>>2]|0;a=j-e|0;k=c[f+4>>2]|0;i=k-e|0;j=e-~~(p+(p>=0.0?.5:-.5))+j+~~(n+(n>=0.0?.5:-.5))|0;k=e-~~(q+(q>=0.0?.5:-.5))+k+~~(o+(o>=0.0?.5:-.5))|0;if((a|0)>-1)f=(a|0)/(d|0)|0;else f=((a+1|0)/(d|0)|0)+-1|0;if((i|0)>-1)m=(i|0)/(d|0)|0;else m=((i+1|0)/(d|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(d|0)|0;else j=((j+1|0)/(d|0)|0)+-1|0;if((k|0)>-1)i=(k|0)/(d|0)|0;else i=((k+1|0)/(d|0)|0)+-1|0;while(1){if((f|0)>(j|0))break;else a=m;while(1){if((a|0)>(i|0))break;Cx(r,f,a);a=a+1|0}f=f+1|0}k=b+4|0;c[k>>2]=Gx(r)|0;j=Fx(r)|0;m=b+8|0;c[m>>2]=j;w=+(e<<1|0);v=+(d|0);i=~~+N(+((n+w-p)/v));a=~~+N(+((o+w-q)/v));c[b>>2]=a+i;a:do if(0>2){f=c[13918]|0;c[s>>2]=g;c[s+4>>2]=j;c[s+8>>2]=i;c[s+12>>2]=a;zL(f,84395,s)|0;a=0;while(1){if((a|0)>=(c[m>>2]|0))break a;g=c[k>>2]|0;s=c[g+(a<<3)+4>>2]|0;c[t>>2]=c[g+(a<<3)>>2];c[t+4>>2]=s;zL(f,84422,t)|0;a=a+1|0}}while(0);zx(r);l=u;return}function Ss(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0.0,R=0.0;P=l;l=l+128|0;F=P+112|0;E=P+104|0;O=P+16|0;M=P;H=P+64|0;I=P+56|0;z=P+40|0;A=P+96|0;y=P+88|0;v=P+24|0;w=P+80|0;x=P+72|0;K=c[f+8>>2]|0;G=c[f+12>>2]|0;C=(a|0)==0?b:a;L=wx()|0;J=b+16|0;B=c[J>>2]|0;t=+h[B+16>>3];D=(c[g>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;t=+h[B+24>>3];B=(c[g+4>>2]|0)-~~(t+(t>=0.0?.5:-.5))|0;a:do if((c[f+16>>2]|0)==1){v=ww((mn(b)|0)<<2)|0;a=0;g=co(b)|0;while(1){if(!g)break;x=g+16|0;c[v+(a<<2)>>2]=c[(c[x>>2]|0)+112>>2];c[(c[x>>2]|0)+112>>2]=0;a=a+1|0;g=eo(b,g)|0}o=D-K|0;p=B-K|0;q=D+K|0;r=B+K|0;n=1;while(1){a=c[J>>2]|0;if((n|0)>(c[a+180>>2]|0))break;m=c[(c[a+184>>2]|0)+(n<<2)>>2]|0;i=c[m+16>>2]|0;t=+h[i+16>>3];a=~~(t+(t>=0.0?.5:-.5));t=+h[i+24>>3];g=~~(t+(t>=0.0?.5:-.5));t=+h[i+32>>3];f=~~(t+(t>=0.0?.5:-.5));t=+h[i+40>>3];i=~~(t+(t>=0.0?.5:-.5));b:do if((f|0)>(a|0)&(i|0)>(g|0)){a=o+a|0;j=p+g|0;f=q+f|0;k=r+i|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(e|0)|0;else j=((j+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)i=(f|0)/(e|0)|0;else i=((f+1|0)/(e|0)|0)+-1|0;if((k|0)>-1)f=(k|0)/(e|0)|0;else f=((k+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=j;while(1){if((a|0)>(f|0))break;Cx(L,g,a);a=a+1|0}g=g+1|0}a=co(m)|0;while(1){if(!a)break b;c[(c[a+16>>2]|0)+212>>2]=m;a=eo(m,a)|0}}while(0);n=n+1|0}r=z+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=A+4|0;p=y+4|0;o=co(b)|0;while(1){if(!o)break;OA(z,o);R=+h[z>>3];Q=+h[r>>3];m=D+~~(R+(R>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(Q+(Q>=0.0?.5:-.5))|0;c[s>>2]=n;g=o+16|0;a=c[g>>2]|0;c:do if(!(c[a+212>>2]|0)){c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];Xs(A,E,F);a=c[A>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];Ys(y,E,F);i=c[y>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;Cx(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Pm(C,o)|0;while(1){if(!a)break c;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];Zs(a,F,L,D,B,e,G);a=Rm(C,a)|0}}else{if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Pm(C,o)|0;while(1){if(!a)break c;if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)){c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];Zs(a,F,L,D,B,e,G)}a=Rm(C,a)|0}}while(0);o=eo(b,o)|0}a=0;g=co(b)|0;while(1){if(!g)break;c[(c[g+16>>2]|0)+112>>2]=c[v+(a<<2)>>2];a=a+1|0;g=eo(b,g)|0}_I(v)}else{r=v+8|0;s=H+4|0;t=+(K|0);u=I+4|0;q=w+4|0;p=x+4|0;o=co(b)|0;while(1){if(!o)break a;OA(v,o);Q=+h[v>>3];R=+h[r>>3];m=D+~~(Q+(Q>=0.0?.5:-.5))|0;c[H>>2]=m;n=B+~~(R+(R>=0.0?.5:-.5))|0;c[s>>2]=n;a=c[o+16>>2]|0;c[I>>2]=~~((+h[a+96>>3]+ +h[a+88>>3])*.5+t);c[u>>2]=~~(+h[a+80>>3]*.5+t);c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];Xs(w,E,F);a=c[w>>2]|0;f=c[q>>2]|0;c[E>>2]=c[H>>2];c[E+4>>2]=c[H+4>>2];c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];Ys(x,E,F);i=c[x>>2]|0;j=c[p>>2]|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((f|0)>-1)k=(f|0)/(e|0)|0;else k=((f+1|0)/(e|0)|0)+-1|0;if((i|0)>-1)i=(i|0)/(e|0)|0;else i=((i+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)f=(j|0)/(e|0)|0;else f=((j+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(i|0))break;else a=k;while(1){if((a|0)>(f|0))break;Cx(L,g,a);a=a+1|0}g=g+1|0}if((m|0)>-1)a=(m|0)/(e|0)|0;else a=((m+1|0)/(e|0)|0)+-1|0;c[H>>2]=a;if((n|0)>-1)a=(n|0)/(e|0)|0;else a=((n+1|0)/(e|0)|0)+-1|0;c[s>>2]=a;a=Pm(C,o)|0;while(1){if(!a)break;c[F>>2]=c[H>>2];c[F+4>>2]=c[H+4>>2];Zs(a,F,L,D,B,e,G);a=Rm(C,a)|0}o=eo(b,o)|0}}while(0);i=d+4|0;c[i>>2]=Gx(L)|0;j=d+8|0;c[j>>2]=Fx(L)|0;g=c[J>>2]|0;Q=+(K<<1|0);R=+(e|0);a=~~+N(+((+h[g+32>>3]+Q-+h[g+16>>3])/R));g=~~+N(+((+h[g+40>>3]+Q-+h[g+24>>3])/R));c[d>>2]=g+a;d:do if(0>2){f=c[13918]|0;d=Dn(b)|0;b=c[j>>2]|0;c[M>>2]=d;c[M+4>>2]=b;c[M+8>>2]=a;c[M+12>>2]=g;zL(f,84395,M)|0;a=0;while(1){if((a|0)>=(c[j>>2]|0))break d;b=c[i>>2]|0;M=c[b+(a<<3)+4>>2]|0;c[O>>2]=c[b+(a<<3)>>2];c[O+4>>2]=M;zL(f,84422,O)|0;a=a+1|0}}while(0);zx(L);l=P;return}function Ts(a,b){a=a|0;b=b|0;return (c[c[b>>2]>>2]|0)-(c[c[a>>2]>>2]|0)|0}function Us(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;h=j+16|0;i=j;k=c[a+4>>2]|0;g=c[a+8>>2]|0;c[d>>2]=0-(c[e>>2]|0);f=d+4|0;c[f>>2]=0-(c[e+4>>2]|0);a=0;e=k;while(1){if((a|0)>=(g|0))break;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];Ax(b,h);a=a+1|0;e=e+8|0}if(0>1){k=c[13918]|0;b=c[d>>2]|0;d=c[f>>2]|0;c[i>>2]=g;c[i+4>>2]=b;c[i+8>>2]=d;zL(k,84369,i)|0}l=j;return}function Vs(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;k=c[b+12>>2]|0;l=+h[i+(k<<5)>>3];m=+h[i+(k<<5)+8>>3];n=+h[i+(k<<5)+16>>3];o=+h[i+(k<<5)+24>>3];if(!((a|0)==0?(q=+(g<<1|0),p=+(f|0),(Ws((~~+N(+((q-l+n)/p))|0)/-2|0,(~~+N(+((q-m+o)/p))|0)/-2|0,b,d,e,f,i)|0)!=0):0))j=3;a:do if((j|0)==3?(Ws(0,0,b,d,e,f,i)|0)==0:0)if((~~+N(+(n-l))|0)<(~~+N(+(o-m))|0)){k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)<=(j|0)){g=j;break}if(Ws(j,a,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)>=(k|0))break;if(Ws(g,a,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)>=(k|0))break;if(Ws(g,a,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)<=(j|0))break;if(Ws(g,a,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)<=0)break;if(!(Ws(g,a,b,d,e,f,i)|0))a=a+-1|0;else break a}k=k+1|0}}else{k=1;while(1){j=0-k|0;a=0;while(1){if((a|0)>=(k|0)){g=j;break}if(Ws(a,j,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)>=(k|0))break;if(Ws(a,g,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)<=(j|0))break;if(Ws(a,g,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)<=(j|0))break;if(Ws(a,g,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)>=0)break;if(!(Ws(a,g,b,d,e,f,i)|0))a=a+1|0;else break a}k=k+1|0}}while(0);return}function Ws(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;t=l;l=l+48|0;r=t+32|0;s=t+8|0;q=t;m=d+4|0;o=c[d+8>>2]|0;p=q+4|0;j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0)){n=5;break}v=j;u=c[v+4>>2]|0;c[q>>2]=(c[v>>2]|0)+a;c[p>>2]=u+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];if(Dx(e,r)|0){j=0;break}j=j+8|0;k=k+1|0}if((n|0)==5){d=c[d+12>>2]|0;x=+h[i+(d<<5)>>3];w=+h[i+(d<<5)+8>>3];c[f>>2]=(O(g,a)|0)-~~(x+(x>=0.0?.5:-.5));d=f+4|0;c[d>>2]=(O(g,b)|0)-~~(w+(w>=0.0?.5:-.5));j=c[m>>2]|0;k=0;while(1){if((k|0)>=(o|0))break;u=j;v=c[u+4>>2]|0;c[q>>2]=(c[u>>2]|0)+a;c[p>>2]=v+b;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];Ax(e,r);j=j+8|0;k=k+1|0}if(0>1){j=c[13918]|0;u=c[f>>2]|0;v=c[d>>2]|0;c[s>>2]=o;c[s+4>>2]=a;c[s+8>>2]=b;c[s+12>>2]=u;c[s+16>>2]=v;zL(j,84335,s)|0;j=1}else j=1}l=t;return j|0}function Xs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;c[a>>2]=(c[b>>2]|0)-(c[d>>2]|0);c[a+4>>2]=e;return}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function Zs(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;x=A+96|0;w=A+80|0;r=A+48|0;s=A+32|0;y=A+16|0;z=A;n=A+64|0;h[y>>3]=+(c[b>>2]|0);t=y+8|0;h[t>>3]=+(c[b+4>>2]|0);a:do if((i|0)!=0?(u=a+16|0,m=c[(c[u>>2]|0)+8>>2]|0,(m|0)!=0):0){q=+(e|0);p=+(f|0);o=1.0/+(g|0);n=z+8|0;i=0;while(1){if((i|0)>=(c[m+4>>2]|0))break a;f=c[m>>2]|0;a=c[f+(i*48|0)>>2]|0;b=c[f+(i*48|0)+4>>2]|0;g=c[f+(i*48|0)+8>>2]|0;e=c[f+(i*48|0)+12>>2]|0;m=f+(i*48|0)+16|0;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];f=f+(i*48|0)+32|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];if(!g){c[y>>2]=c[a>>2];c[y+4>>2]=c[a+4>>2];c[y+8>>2]=c[a+8>>2];c[y+12>>2]=c[a+12>>2];m=a+16|0;c[z>>2]=c[m>>2];c[z+4>>2]=c[m+4>>2];c[z+8>>2]=c[m+8>>2];c[z+12>>2]=c[m+12>>2];m=2}else{c[y>>2]=c[r>>2];c[y+4>>2]=c[r+4>>2];c[y+8>>2]=c[r+8>>2];c[y+12>>2]=c[r+12>>2];c[z>>2]=c[a>>2];c[z+4>>2]=c[a+4>>2];c[z+8>>2]=c[a+8>>2];c[z+12>>2]=c[a+12>>2];m=1}j=+h[y>>3]+q;h[y>>3]=j;k=+h[t>>3]+p;h[t>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[y>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[t>>3]=j;j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Ks(w,x,d);while(1){if((m|0)>=(b|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];g=a+(m<<4)|0;c[z>>2]=c[g>>2];c[z+4>>2]=c[g+4>>2];c[z+8>>2]=c[g+8>>2];c[z+12>>2]=c[g+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Ks(w,x,d);m=m+1|0}if(e|0){c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[z>>2]=c[s>>2];c[z+4>>2]=c[s+4>>2];c[z+8>>2]=c[s+8>>2];c[z+12>>2]=c[s+12>>2];j=+h[z>>3]+q;h[z>>3]=j;k=+h[n>>3]+p;h[n>>3]=k;if(!(j>=0.0))j=(j+1.0)*o+-1.0;else j=j*o;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)*o+-1.0;else j=k*o;h[n>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Ks(w,x,d)}i=i+1|0;m=c[(c[u>>2]|0)+8>>2]|0}}else v=4;while(0);if((v|0)==4){OA(n,c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0);c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];c[z+8>>2]=c[n+8>>2];c[z+12>>2]=c[n+12>>2];j=+h[z>>3]+ +(e|0);h[z>>3]=j;m=z+8|0;k=+h[m>>3]+ +(f|0);h[m>>3]=k;if(!(j>=0.0))j=(j+1.0)/+(g|0)+-1.0;else j=j/+(g|0);h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/+(g|0)+-1.0;else j=k/+(g|0);h[m>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Ks(w,x,d)}l=A;return}function _s(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;a:do if((a|0)<1)f=0-a|0;else{s=(e|0)==0;q=(f|0)==0;j=0;while(1){if((j|0)==(a|0)){f=0;break a}r=c[b+(j<<2)>>2]|0;g=s?r:e;k=c[d+(j<<3)>>2]|0;l=c[d+(j<<3)+4>>2]|0;m=+(k|0);n=m*.013888888888888888;o=+(l|0);p=o*.013888888888888888;i=co(r)|0;while(1){if(!i)break;f=c[i+16>>2]|0;t=c[f+132>>2]|0;h[t>>3]=+h[t>>3]+n;t=t+8|0;h[t>>3]=+h[t>>3]+p;t=f+16|0;h[t>>3]=+h[t>>3]+m;t=f+24|0;h[t>>3]=+h[t>>3]+o;f=c[f+108>>2]|0;if(f|0){t=f+56|0;h[t>>3]=+h[t>>3]+m;t=f+64|0;h[t>>3]=+h[t>>3]+o}b:do if(!q){f=Pm(g,i)|0;while(1){if(!f)break b;$s(f,k,l);f=Rm(g,f)|0}}while(0);i=eo(r,i)|0}at(r,k,l);j=j+1|0}}while(0);return f|0}function $s(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0,l=0.0,m=0,n=0;e=c[a+16>>2]|0;a=c[e+96>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+108>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+100>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}a=c[e+104>>2]|0;if(a|0){m=a+56|0;h[m>>3]=+h[m>>3]+ +(b|0);m=a+64|0;h[m>>3]=+h[m>>3]+ +(d|0)}m=c[e+8>>2]|0;a:do if(m|0){l=+(b|0);j=+(d|0);b=c[m+4>>2]|0;a=0;while(1){if((a|0)>=(b|0))break a;k=c[m>>2]|0;d=c[k+(a*48|0)>>2]|0;f=c[k+(a*48|0)+4>>2]|0;g=c[k+(a*48|0)+8>>2]|0;i=c[k+(a*48|0)+12>>2]|0;e=0;while(1){if((e|0)>=(f|0))break;n=d+(e<<4)|0;h[n>>3]=+h[n>>3]+l;n=d+(e<<4)+8|0;h[n>>3]=+h[n>>3]+j;e=e+1|0}if(g|0){n=k+(a*48|0)+16|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+24|0;h[n>>3]=+h[n>>3]+j}if(i|0){n=k+(a*48|0)+32|0;h[n>>3]=+h[n>>3]+l;n=k+(a*48|0)+40|0;h[n>>3]=+h[n>>3]+j}a=a+1|0}}while(0);return}function at(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0;j=b+16|0;b=c[j>>2]|0;o=b+16|0;m=b+24|0;f=b+32|0;b=b+40|0;g=+(d|0);l=+h[f>>3]+g;i=+(e|0);n=+h[m>>3]+i;k=+h[b>>3]+i;h[o>>3]=+h[o>>3]+g;h[m>>3]=n;h[f>>3]=l;h[b>>3]=k;b=c[j>>2]|0;f=c[b+12>>2]|0;if((f|0)!=0?(a[f+81>>0]|0)!=0:0){o=f+56|0;h[o>>3]=+h[o>>3]+g;f=f+64|0;h[f>>3]=+h[f>>3]+i;f=1}else f=1;while(1){if((f|0)>(c[b+180>>2]|0))break;at(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[j>>2]|0}return}function bt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ls(a,b,d,e)|0;if(!f)a=1;else{a=_s(a,b,f,d,c[e+12>>2]|0)|0;_I(f)}return a|0}function ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+32|0;o=p;n=bt(a,b,d,e)|0;if(!n){dB(d);m=(c[d+16>>2]|0)+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[o+16>>2]=c[m+16>>2];c[o+20>>2]=c[m+20>>2];c[o+24>>2]=c[m+24>>2];c[o+28>>2]=c[m+28>>2];f=o+8|0;g=o+16|0;i=o+24|0;e=0;while(1){if((e|0)>=(a|0))break;k=c[(c[b+(e<<2)>>2]|0)+16>>2]|0;j=c[k+180>>2]|0;k=k+184|0;d=1;while(1){if((d|0)>(j|0))break;r=(c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+16|0;h[o>>3]=+h[(+h[o>>3]<+h[r>>3]?o:r)>>3];r=c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;q=r+16|0;h[f>>3]=+h[(+h[f>>3]<+h[r+24>>3]?o:q)+8>>3];h[g>>3]=+h[(+h[g>>3]>+h[r+32>>3]?o:q)+16>>3];h[i>>3]=+h[(+h[i>>3]>+h[r+40>>3]?o:q)+24>>3];d=d+1|0}e=e+1|0}c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[m+16>>2]=c[o+16>>2];c[m+20>>2]=c[o+20>>2];c[m+24>>2]=c[o+24>>2];c[m+28>>2]=c[o+28>>2]}l=p;return n|0}function dt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=l;l=l+16|0;f=g;if(!e)ma(84553,84559,1400,84566);d=et(a,d,d)|0;c[e+8>>2]=d;if(0){h=c[13918]|0;c[f>>2]=d;zL(h,84578,f)|0}c[e+12>>2]=0;c[e+20>>2]=0;ft(a,b,e)|0;l=g;return c[e+16>>2]|0}function et(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=i+4|0;g=Im(b,84708)|0;a:do if(g){c[h>>2]=f;h=(cM(g,122187,h)|0)==1;b=c[f>>2]|0;if(h&(b|0)>-1)d=b;else{switch(a[g>>0]|0){case 84:case 116:break;default:break a}d=e}}while(0);l=i;return d|0}function ft(a,b,c){a=a|0;b=b|0;c=c|0;return gt(Im(a,84591)|0,b,c)|0}function gt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+64|0;r=u+40|0;q=u+32|0;t=u+24|0;s=u+16|0;m=u+8|0;k=u;i=u+48|0;j=u+44|0;if(!e)ma(84553,84559,1292,84600);o=e+28|0;c[o>>2]=0;p=e+16|0;c[p>>2]=d;n=e+4|0;c[n>>2]=0;c[e+24>>2]=0;a:do if(b|0?(f=a[b>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:if(!(VJ(b,84618,5)|0)){c[p>>2]=4;m=ht(b+5|0,e)|0;c[k>>2]=j;m=(cM(m,122187,k)|0)>0;d=c[j>>2]|0;if(!(m&(d|0)>0))break a;c[n>>2]=d;break a}else{if(VJ(b,84624,6)|0)break a;c[p>>2]=5;c[m>>2]=i;m=(cM(b+5|0,84631,m)|0)>0;v=+g[i>>2];g[e>>2]=m&v>0.0?v:1.0;break a}case 99:{if(f<<24>>24!=99)break a;if(xJ(b,93039)|0)break a;c[p>>2]=1;break a}case 103:{if(f<<24>>24!=103)break a;if(xJ(b,96286)|0)break a;c[p>>2]=3;break a}case 110:{if(f<<24>>24!=110)break a;if(xJ(b,96273)|0)break a;c[p>>2]=2;break a}default:break a}while(0);if(0){d=c[13918]|0;XL(84634,11,1,d)|0;c[s>>2]=it(c[p>>2]|0)|0;zL(d,84646,s)|0;if((c[p>>2]|0)==5){h[t>>3]=+g[e>>2];zL(d,84659,t)|0}c[q>>2]=c[n>>2];zL(d,84672,q)|0;c[r>>2]=c[o>>2];zL(d,84685,r)|0}l=u;return c[p>>2]|0}function ht(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[b>>0]|0)==95){f=d+28|0;e=1;while(1){b=b+1|0;b:while(1){if(!e)break a;d=a[b>>0]|0;if(!(d<<24>>24))break a;switch(d<<24>>24|0){case 99:{g=10;break b}case 105:{g=9;break b}case 117:{g=11;break b}case 116:{g=12;break b}case 98:{d=32;break b}case 108:{g=7;break b}case 114:{g=8;break b}default:e=0}}if((g|0)==7){g=0;d=4}else if((g|0)==8){g=0;d=8}else if((g|0)==9){g=0;d=64}else if((g|0)==10){g=0;d=1}else if((g|0)==11){g=0;d=2}else if((g|0)==12){g=0;d=16}c[f>>2]=c[f>>2]|d}}while(0);return b|0}function it(a){a=a|0;switch(a|0){case 1:{a=93039;break}case 2:{a=96273;break}case 3:{a=96286;break}case 4:{a=84618;break}case 5:{a=84624;break}default:a=84698}return a|0}function jt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n;m=n+80|0;do if(a){if(!e){e=$I(1,20)|0;c[e+4>>2]=d>>>0>80?d:80}d=c[e>>2]|0;j=c[e+4>>2]|0;if(!d){h=100;d=a;i=$I(100,j)|0}else{h=d+100|0;i=aJ(c[e+8>>2]|0,O(h,j)|0)|0;VN(i+(O(j,d)|0)|0,0,j*100|0)|0;d=a}while(1){d=kt(k,d,b,m)|0;if(!d)break;a=c[e>>2]|0;f=h<<1;g=O(h,j)|0;if((a|0)==(h|0)){i=aJ(i,O(f,j)|0)|0;VN(i+g|0,0,g|0)|0;a=c[e>>2]|0}else f=h;a=i+(O(a,j)|0)|0;g=k;h=a+80|0;do{c[a>>2]=c[g>>2];a=a+4|0;g=g+4|0}while((a|0)<(h|0));c[e>>2]=(c[e>>2]|0)+1;h=f}if(c[m>>2]|0){m=e+16|0;c[m>>2]=c[m>>2]|1}d=c[e>>2]|0;if(!d){_I(i);_I(e);e=0;break}else{c[e+8>>2]=aJ(i,O(d,j)|0)|0;break}}while(0);l=n;return e|0}function kt(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+80|0;h=j+64|0;i=j;c[f>>2]=0;do{g=a[d>>0]|0;d=d+1|0}while((XJ(g)|0)!=0);a:do switch(g|0){case 69:{c[b>>2]=0;d=lt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 101:{c[b>>2]=1;d=lt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e>>2];break}case 80:{c[b>>2]=2;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 112:{c[b>>2]=3;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+4>>2];break}case 98:{c[b>>2]=4;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 66:{c[b>>2]=5;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+8>>2];break}case 99:{d=nt(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=ot(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=9;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+24>>2];break a}else{c[b>>2]=14;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 67:{d=nt(d,h)|0;if(!d){c[f>>2]=1;d=0;break a}g=ot(c[h>>2]|0,i)|0;c[h>>2]=g;if(!g){c[f>>2]=1;d=0;break a}if(!(c[i>>2]|0)){c[b>>2]=8;c[b+8>>2]=c[i+8>>2];if(!e)break a;c[b+72>>2]=c[e+20>>2];break a}else{c[b>>2]=13;f=b+8|0;g=i;h=f+64|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));if(!e)break a;c[b+72>>2]=c[e+40>>2];break a}}case 76:{c[b>>2]=6;d=mt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+12>>2];break}case 84:{c[b>>2]=7;d=pt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=pt(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=qt(d,b+24|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=pt(d,b+32|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=nt(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+16>>2];break}case 70:{c[b>>2]=10;d=pt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=nt(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+28>>2];break}case 83:{c[b>>2]=11;d=nt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+32>>2];break}case 73:{c[b>>2]=12;d=lt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=nt(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+36>>2];break}case 116:{c[b>>2]=15;d=rt(d,b+8|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(e)c[b+72>>2]=c[e+44>>2];break}case 0:{d=0;break}default:{c[f>>2]=1;d=0}}while(0);l=j;return d|0}function lt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0;i=l;l=l+16|0;e=i;h[b>>3]=+tM(a,e);f=c[e>>2]|0;if(((f|0)!=(a|0)?(h[b+8>>3]=+tM(f,e),g=c[e>>2]|0,(f|0)!=(g|0)):0)?(h[b+16>>3]=+tM(g,e),d=c[e>>2]|0,(g|0)!=(d|0)):0){h[b+24>>3]=+tM(d,e);a=c[e>>2]|0;a=(d|0)==(a|0)?0:a}else a=0;l=i;return a|0}function mt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+4|0;g=k;a=st(a,j)|0;do if(a){d=c[j>>2]|0;i=$I(d,24)|0;c[b>>2]=d;e=i;f=0;while(1){if((f|0)>=(d|0)){d=9;break}h[e>>3]=+tM(a,g);d=c[g>>2]|0;if((a|0)==(d|0)){d=5;break}h[e+8>>3]=+tM(d,g);a=c[g>>2]|0;if((d|0)==(a|0)){d=7;break}h[e+16>>3]=0.0;e=e+24|0;d=c[b>>2]|0;f=f+1|0}if((d|0)==5){c[j>>2]=f;_I(i);a=0;break}else if((d|0)==7){c[j>>2]=f;_I(i);a=0;break}else if((d|0)==9){c[j>>2]=f;c[b+4>>2]=i;break}}else a=0;while(0);l=k;return a|0}function nt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;b=st(b,i)|0;f=c[i>>2]|0;do if(!((b|0)==0|(f|0)<1)){while(1){h=a[b>>0]|0;e=h<<24>>24==0;if(e^h<<24>>24!=45)b=b+1|0;else break}if(!e){h=$I(f+1|0,1)|0;g=h;e=f;while(1){b=b+1|0;if((e|0)<=0){e=9;break}e=a[b>>0]|0;if(!(e<<24>>24)){e=8;break}a[g>>0]=e;e=(c[i>>2]|0)+-1|0;c[i>>2]=e;g=g+1|0}if((e|0)==8){_I(h);b=0;break}else if((e|0)==9){a[g>>0]=0;c[d>>2]=h;break}}else b=0}else b=0;while(0);l=j;return b|0}function ot(b,d){b=b|0;d=d|0;var e=0;e=a[b>>0]|0;switch(e|0){case 91:{b=tt(b+1|0,d)|0;break}case 40:{b=ut(b+1|0,d)|0;break}case 47:case 35:{c[d>>2]=0;c[d+8>>2]=b;break}default:if(!(gK(e)|0))b=0;else{c[d>>2]=0;c[d+8>>2]=b}}return b|0}function pt(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0;f=l;l=l+16|0;d=f;e=+tM(a,d);d=c[d>>2]|0;if((d|0)==(a|0))d=0;else h[b>>3]=e;l=f;return d|0}function qt(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;a=st(a,e)|0;e=c[e>>2]|0;c[b>>2]=(e|0)<0?0:e|0?2:1;l=d;return a|0}function rt(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=YJ(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function st(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=BL(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function tt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;c[b>>2]=1;n=b+8|0;i=pt(a,n)|0;do if(((((i|0)!=0?(j=pt(i,b+16|0)|0,(j|0)!=0):0)?(e=pt(j,b+24|0)|0,(e|0)!=0):0)?(f=pt(e,b+32|0)|0,(f|0)!=0):0)?(k=b+40|0,d=st(f,k)|0,(d|0)!=0):0){b=c[k>>2]|0;f=$I(b,8)|0;e=0;while(1){if((e|0)>=(b|0)){d=13;break}d=pt(d,m)|0;if(!d){d=9;break}g[f+(e<<3)>>2]=+h[m>>3];d=nt(d,f+(e<<3)+4|0)|0;if(!d){d=12;break}e=e+1|0;b=c[k>>2]|0}if((d|0)==9){_I(f);a=0;break}else if((d|0)==12){_I(f);a=0;break}else if((d|0)==13){c[n+36>>2]=f;break}}else a=0;while(0);l=o;return a|0}function ut(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;c[b>>2]=2;k=pt(a,b+8|0)|0;do if(((((((k|0)!=0?(m=pt(k,b+16|0)|0,(m|0)!=0):0)?(e=pt(m,b+24|0)|0,(e|0)!=0):0)?(f=pt(e,b+32|0)|0,(f|0)!=0):0)?(i=pt(f,b+40|0)|0,(i|0)!=0):0)?(j=pt(i,b+48|0)|0,(j|0)!=0):0)?(o=b+56|0,d=st(j,o)|0,(d|0)!=0):0){e=c[o>>2]|0;i=$I(e,8)|0;f=0;while(1){if((f|0)>=(e|0)){d=15;break}d=pt(d,n)|0;if(!d){d=11;break}g[i+(f<<3)>>2]=+h[n>>3];d=nt(d,i+(f<<3)+4|0)|0;if(!d){d=14;break}f=f+1|0;e=c[o>>2]|0}if((d|0)==11){_I(i);a=0;break}else if((d|0)==14){_I(i);a=0;break}else if((d|0)==15){c[b+60>>2]=i;break}}else a=0;while(0);l=p;return a|0}function vt(a,b,c){a=a|0;b=b|0;c=c|0;return jt(a,b,c,0)|0}function wt(a){a=a|0;return vt(a,0,0)|0}function xt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+12>>2]|0;if(a|0){f=c[a+8>>2]|0;g=a+4|0;h=(e|0)==0;b=0;while(1){if((b|0)>=(c[a>>2]|0))break;d=f+(O(c[g>>2]|0,b)|0)|0;if(!h)gb[e&127](d);yt(d);b=b+1|0}_I(f);_I(a)}return}function yt(a){a=a|0;switch(c[a>>2]|0){case 3:case 2:{_I(c[a+8+4>>2]|0);break}case 5:case 4:{_I(c[a+8+4>>2]|0);break}case 6:{_I(c[a+8+4>>2]|0);break}case 7:{_I(c[a+40>>2]|0);break}case 9:case 8:{_I(c[a+8>>2]|0);break}case 14:case 13:{zt(a+8|0);break}case 10:{_I(c[a+16>>2]|0);break}case 11:{_I(c[a+8>>2]|0);break}case 12:{_I(c[a+40>>2]|0);break}default:{}}return}function zt(a){a=a|0;var b=0,d=0,e=0;switch(c[a>>2]|0){case 1:{e=a+40|0;b=a+8+36|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(c[e>>2]|0))break;_I(c[d+(a<<3)+4>>2]|0);a=a+1|0}_I(d);break}case 2:{e=a+56|0;d=a+60|0;a=0;while(1){b=c[d>>2]|0;if((a|0)>=(c[e>>2]|0))break;_I(c[b+(a<<3)+4>>2]|0);a=a+1|0}_I(b);break}default:{}}return}function At(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;k=o+4|0;n=o;c[d>>2]=0;c[e>>2]=(qn(ro(b)|0)|0)!=0&1;f=c[42228]|0;a:do if(f|0?(h=Jm(b,f)|0,i=a[h>>0]|0,i<<24>>24):0){f=19444;while(1){g=c[f>>2]|0;if(!g)break a;if(i<<24>>24==(a[g>>0]|0)?(xJ(h,g)|0)==0:0)break;f=f+12|0}c[d>>2]=c[f+4>>2];c[e>>2]=c[f+8>>2]}while(0);f=c[42239]|0;if((f|0?(c[e>>2]|0)==1:0)?(j=Jm(b,f)|0,a[j>>0]|0):0)Bt(j,e);f=c[42240]|0;if((f|0?(c[d>>2]|0)==1:0)?(m=Jm(b,f)|0,a[m>>0]|0):0)Bt(m,d);if(a[(c[b+16>>2]|0)+153>>0]|0){j=b+-48|0;i=ro(c[((c[b>>2]&3|0)==2?b:j)+40>>2]|0)|0;m=c[b>>2]&3;At(an(i,c[((m|0)==2?b:j)+40>>2]|0,c[((m|0)==3?b:b+48|0)+40>>2]|0,0,0)|0,k,n);c[e>>2]=c[k>>2]|c[e>>2];c[d>>2]=c[n>>2]|c[d>>2]}l=o;return}function Bt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;k=o+4|0;j=0;e=0;a:while(1){c[d>>2]=e;g=(j|0)<4;h=(j|0)==3;i=(j|0)==0;while(1){if(!(g&(a[b>>0]|0)!=0))break a;c[k>>2]=0;f=Ct(b,k)|0;e=c[k>>2]|0;if(!e){n=5;break a}b=(e|0)==8;if(!(h&b)){if(!(i&b))break;if(a[f>>0]|0)break}c[k>>2]=0;b=f}e=c[d>>2]|e<<(j<<3);j=j+1|0;b=f}if((n|0)==5){c[m>>2]=b;_l(0,84713,m)|0}l=o;return}function Ct(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;c[e>>2]=0;d=Dt(a,19504,e)|0;if((d|0)==(a|0)){while(1){d=Dt(a,19520,e)|0;if((a|0)==(d|0))break;else a=d}d=Dt(a,19568,e)|0}a=c[e>>2]|0;if((a|0)!=0&(a&15|0)==0){a=a|1;c[e>>2]=a}c[b>>2]=c[b>>2]|a;l=f;return d|0}function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=c[b>>2]|0;if(!e)break;f=rJ(e)|0;if(!(VJ(a,e,f)|0)){g=4;break}b=b+8|0}if((g|0)==4){c[d>>2]=c[d>>2]|c[b+4>>2];a=a+f|0}return a|0}function Et(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0;g=0;d=0.0;while(1){if((g|0)==4)break;f=b>>(g<<3)&15;e=1336;while(1){if(!(c[e+16>>2]|0))break;if((f|0)==(c[e>>2]|0)){i=6;break}e=e+24|0}if((i|0)==6){i=0;d=+h[e+8>>3]+d}g=g+1|0}return +(d*10.0*+EA(a,c[42232]|0,1.0,0.0))}function Ft(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0;p=l;l=l+96|0;m=p+80|0;o=p;k=f>4.0?f*.0875:.35;i=+h[d+8>>3];n=i*k;j=+h[d>>3];k=j*k;e=+h[b>>3];j=e+j;h[m>>3]=j;f=+h[b+8>>3];i=i+f;h[m+8>>3]=i;d=o+64|0;if(!(g&32)){c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=o+32|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];f=i;e=j}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];b=o+32|0;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2]}h[o+16>>3]=e+n;h[o+24>>3]=f-k;h[o+48>>3]=e-n;h[o+56>>3]=f+k;do if(!(g&64))if(!(g&128)){HD(a,o+16|0,3,g>>>4&1^1);break}else{HD(a,o+32|0,3,g>>>4&1^1);break}else HD(a,o,3,g>>>4&1^1);while(0);l=p;return}function Gt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0;x=l;l=l+160|0;n=x+144|0;w=x;q=e*4.0;y=(g&32|0)==0;q=!(q<f)|y?.45:f/q*.45;s=!(f>1.0)|y?0.0:(f+-1.0)*.05/e;u=+h[d+8>>3];r=-u;v=q*r;t=+h[d>>3];q=t*q;r=s*r;s=t*s;p=+h[b>>3];e=p+t;h[n>>3]=e;o=+h[b+8>>3];f=u+o;h[n+8>>3]=f;t=t*.5+p;u=u*.5+o;d=w+128|0;if(y){c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];y=w+64|0;c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];i=o;j=p;k=o;m=p;f=o;e=p}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[w>>2]=c[b>>2];c[w+4>>2]=c[b+4>>2];c[w+8>>2]=c[b+8>>2];c[w+12>>2]=c[b+12>>2];y=w+64|0;c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];i=f+s;j=e+r;k=f-s;m=e-r}h[w+16>>3]=e-v;h[w+24>>3]=f-q;h[w+32>>3]=t-r;h[w+40>>3]=u-s;h[w+48>>3]=m;h[w+56>>3]=k;h[w+80>>3]=j;h[w+88>>3]=i;h[w+96>>3]=t+r;h[w+104>>3]=u+s;h[w+112>>3]=e+v;h[w+120>>3]=f+q;do if(!(g&64))if(!(g&128)){HD(a,w,9,1);break}else{HD(a,w+48|0,6,1);break}else HD(a,w,6,1);while(0);l=x;return}function Ht(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;q=l;l=l+64|0;p=q;t=+h[d+8>>3];s=+h[d>>3];k=+h[b>>3];e=k+s;m=+h[b+8>>3];f=m+t;i=k+s*.2;j=m+t*.2;k=k+s*.6;m=m+t*.6;h[p>>3]=i-t;h[p+8>>3]=j+s;n=p+16|0;h[n>>3]=i+t;o=p+24|0;h[o>>3]=j-s;h[p+32>>3]=k+t;h[p+40>>3]=m-s;h[p+48>>3]=k-t;h[p+56>>3]=m+s;if(!(g&64)){if(g&128|0){d=2;g=1;r=3}}else{d=3;g=0;r=3}if((r|0)==3){h[p+(g<<4)>>3]=i;h[p+(g<<4)+8>>3]=j;h[p+(d<<4)>>3]=k;h[p+(d<<4)+8>>3]=m}HD(a,p,4,1);c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];h[n>>3]=e;h[o>>3]=f;KD(a,p,2);l=q;return}function It(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+64|0;n=o;j=+h[d+8>>3];r=j*-.4;i=+h[d>>3];q=i*.4;t=+h[b>>3];e=t+i*.8;s=+h[b+8>>3];f=s+j*.8;i=t+i;j=s+j;h[n>>3]=t+r;k=n+8|0;h[k>>3]=s+q;d=n+16|0;h[d>>3]=t-r;m=n+24|0;h[m>>3]=s-q;h[n+32>>3]=e-r;h[n+40>>3]=f-q;h[n+48>>3]=e+r;h[n+56>>3]=f+q;if(!(g&64)){if(g&128|0){c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];d=2;p=5}}else{c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];d=3;p=5}if((p|0)==5){h[n+(d<<4)>>3]=e;h[n+(d<<4)+8>>3]=f}HD(a,n,4,g>>>4&1^1);h[n>>3]=e;h[k>>3]=f;h[n+16>>3]=i;h[m>>3]=j;KD(a,n,2);l=o;return}function Jt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;j=l;l=l+80|0;i=j;n=+h[d+8>>3];k=n*-.3333333333333333;p=+h[d>>3];f=p*.3333333333333333;q=+h[b>>3];m=q+p*.5;o=+h[b+8>>3];e=o+n*.5;d=i+64|0;h[i+64>>3]=q+p;h[i+72>>3]=o+n;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];h[i+16>>3]=m+k;h[i+24>>3]=e+f;d=i+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[i+48>>3]=m-k;h[i+56>>3]=e-f;do if(!(g&64)){d=g>>>4&1^1;if(!(g&128)){HD(a,i,4,d);break}else{HD(a,i,3,d);break}}else HD(a,d,3,g>>>4&1^1);while(0);l=j;return}function Kt(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+32|0;i=g;k=+h[c>>3];e=+h[c+8>>3];d=+C(+(e*e+k*k))*.5;m=+h[b>>3];k=k*.5;h[i>>3]=m+k-d;j=+h[b+8>>3];e=e*.5;h[i+8>>3]=j-d+e;h[i+16>>3]=m+d+k;h[i+24>>3]=j+d+e;GD(a,i,2,f>>>4&1^1);l=g;return}function Lt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;q=t+48|0;r=t+16|0;s=t;n=f>4.0?f*.125:.5;p=+h[b>>3];o=+h[d>>3];i=+h[b+8>>3];m=+h[d+8>>3];e=m*n;f=o*n;c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];h[r+16>>3]=o+p;h[r+24>>3]=m+i;h[q>>3]=n*(o-m)+p;j=n*(m+o);k=j+i;h[q+8>>3]=k;h[q+48>>3]=j+p;i=n*(m-o)+i;h[q+56>>3]=i;o=e*-.95;m=o+f+p;n=f*1.3333333333333333;if(!(g&32)){e=e*1.3333333333333333;j=f*-.33333333333333326;i=i-e;f=k-e;e=m-n}else{e=e*1.3333333333333333;j=f*2.333333333333333;i=i+e;f=k+e;e=m+n}h[q+16>>3]=e;h[q+24>>3]=f;h[q+32>>3]=j-o+p;h[q+40>>3]=i;KD(a,r,2);if(!(g&64)){if(g&128|0)PA(s,q,3,.5,q,0)}else PA(s,q,3,.5,0,q);JD(a,q,4,0,0,0);l=t;return}function Mt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0;g=l;l=l+32|0;i=g;e=+h[d>>3]+ +h[b>>3];f=+h[d+8>>3]+ +h[b+8>>3];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=e;h[i+24>>3]=f;KD(a,i,2);l=g;return}function Nt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+80|0;j=n+72|0;k=n+8|0;m=n;i=+Et(a,g);i=i*i;h[m>>3]=i;c[f+12>>2]=g;g=f+32|0;a=e+3|0;f=b+(a<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];if((e|0)>(d|0)?(o=+h[b+(e<<4)>>3]-+h[f>>3],p=+h[b+(e<<4)+8>>3]-+h[b+(a<<4)+8>>3],p*p+o*o<i):0)e=e+-3|0;s=k+48|0;r=b+(e<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];q=k+32|0;a=b+(e+1<<4)|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];f=k+16|0;d=b+(e+2<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[j>>2]=k;c[j+4>>2]=m;Fz(j,26,k,1);c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];c[a>>2]=c[q>>2];c[a+4>>2]=c[q+4>>2];c[a+8>>2]=c[q+8>>2];c[a+12>>2]=c[q+12>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];m=b+(e+3<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];l=n;return e|0}function Ot(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a>>2]|0;d=+h[b>>3]-+h[f>>3];e=+h[b+8>>3]-+h[f+8>>3];return e*e+d*d<=+h[c[a+4>>2]>>3]|0}function Pt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0;o=l;l=l+80|0;k=o+72|0;m=o+8|0;n=o;j=+Et(a,g);j=j*j;h[n>>3]=j;c[f+8>>2]=g;f=f+16|0;a=b+(d<<4)|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];if(!((e|0)>(d|0)?(i=d+3|0,p=+h[a>>3]-+h[b+(i<<4)>>3],q=+h[b+(d<<4)+8>>3]-+h[b+(i<<4)+8>>3],q*q+p*p<j):0))i=d;e=b+(i+3<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];g=m+16|0;d=b+(i+2<<4)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];r=m+32|0;a=b+(i+1<<4)|0;c[r>>2]=c[a>>2];c[r+4>>2]=c[a+4>>2];c[r+8>>2]=c[a+8>>2];c[r+12>>2]=c[a+12>>2];s=m+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[k>>2]=s;c[k+4>>2]=n;Fz(k,26,m,0);n=b+(i<<4)|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];l=o;return i|0}function Qt(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0;u=(g|0)!=0;l=(i|0)!=0;if(!((e|0)==(d|0)&(u&l))){if(l){j=+Et(a,i);k=+h[b+(e<<4)>>3];p=+h[b+(e<<4)+8>>3];l=e+3|0;r=b+(l<<4)|0;n=+h[r>>3];l=b+(l<<4)+8|0;o=+h[l>>3];t=k-n;s=p-o;t=+C(+(s*s+t*t))*.9;j=j>=t?t:j;if(p==o){m=(k<n?-j:j)+n;j=p}else{m=k;j=(p<o?-j:j)+o}w=e+1|0;h[b+(w<<4)>>3]=k;h[b+(w<<4)+8>>3]=p;e=b+(e+2<<4)|0;h[r>>3]=m;h[l>>3]=j;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];c[f+12>>2]=i;h[f+32>>3]=n;h[f+40>>3]=o}if(u){m=+Et(a,g);l=b+(d<<4)|0;k=+h[l>>3];j=+h[b+(d<<4)+8>>3];w=d+3|0;o=+h[b+(w<<4)>>3];p=+h[b+(w<<4)+8>>3];t=k-o;s=j-p;t=+C(+(s*s+t*t))*.9;m=m>=t?t:m;if(j==p){n=(k<o?m:-m)+k;m=j}else{n=k;m=(j<p?m:-m)+j}w=d+1|0;v=b+(w<<4)|0;h[v>>3]=n;h[b+(w<<4)+8>>3]=m;c[l>>2]=c[v>>2];c[l+4>>2]=c[v+4>>2];c[l+8>>2]=c[v+8>>2];c[l+12>>2]=c[v+12>>2];v=d+2|0;h[b+(v<<4)>>3]=o;h[b+(v<<4)+8>>3]=p;v=16}}else{r=b+(e<<4)|0;s=+h[r>>3];t=+h[b+(e<<4)+8>>3];l=e+3|0;u=b+(l<<4)|0;k=+h[u>>3];l=b+(l<<4)+8|0;j=+h[l>>3];m=+Et(a,g);q=+Et(a,i);n=s-k;p=t-j;n=+C(+(p*p+n*n));w=!(q+m>=n);n=n*.3333333333333333;m=w?m:n;n=w?q:n;if(t==j){w=s<k;p=(w?-n:n)+k;q=(w?m:-m)+s;o=t;m=t}else{w=t<j;p=s;q=s;o=(w?m:-m)+t;m=(w?-n:n)+j}w=e+1|0;v=b+(w<<4)|0;h[v>>3]=q;h[b+(w<<4)+8>>3]=o;c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];v=b+(e+2<<4)|0;h[u>>3]=p;h[l>>3]=m;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];c[f+12>>2]=i;h[f+32>>3]=s;h[f+40>>3]=t;v=16}if((v|0)==16){c[f+8>>2]=g;h[f+16>>3]=k;h[f+24>>3]=j}return}function Rt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;n=+h[b>>3];k=+h[c>>3]-n;o=+h[b+8>>3];l=+h[c+8>>3]-o;j=d*10.0/(+C(+(k*k+l*l))+.0001);k=j*((k>=0.0?.0001:-.0001)+k);j=((l>=0.0?.0001:-.0001)+l)*j;l=k*.5;m=j*.5;i=n-m;f=o-l;n=m+n;l=o+l;o=i+k;m=f+j;k=n+k;j=l+j;g=o>k?o:k;g=n>g?n:g;d=m>j?m:j;d=l>d?l:d;k=o<k?o:k;k=n<k?n:k;j=m<j?m:j;j=l<j?l:j;h[a>>3]=i<k?i:k;h[a+8>>3]=f<j?f:j;h[a+16>>3]=i>g?i:g;h[a+24>>3]=f>d?f:d;return}function St(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;q=l;l=l+48|0;m=q+32|0;k=q+16|0;p=q;n=(c[a+16>>2]|0)+12|0;o=c[n>>2]|0;c[n>>2]=b;FD(a,c[(c[a>>2]|0)+336>>2]|0);OD(a,g);t=+h[e>>3]-+h[d>>3];b=e+8|0;s=+h[b>>3]-+h[d+8>>3];r=10.0/(+C(+(t*t+s*s))+.0001);h[e>>3]=r*((t>=0.0?.0001:-.0001)+t);h[b>>3]=((s>=0.0?.0001:-.0001)+s)*r;b=0;while(1){if((b|0)>=4)break;j=i>>(b<<3)&255;if(!j)break;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];Tt(p,a,k,m,f,g,j);c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];b=b+1|0}c[n>>2]=o;l=q;return}function Tt(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+32|0;m=q+16|0;k=q;n=i&15;j=1336;while(1){o=c[j>>2]|0;if(!o)break;if((n|0)==(o|0)){p=4;break}j=j+24|0}if((p|0)==4){r=+h[j+8>>3]*f;h[e>>3]=r*+h[e>>3];o=e+8|0;h[o>>3]=r*+h[o>>3];p=c[j+16>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];jb[p&15](b,k,m,f,g,i);h[d>>3]=+h[e>>3]+ +h[d>>3];p=d+8|0;h[p>>3]=+h[o>>3]+ +h[p>>3]};c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=q;return}function Ut(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+8|0;f=i;d=Im(b,84815)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else{d=Im(b,84827)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else d=0}if((h|0)==5){d=vt(e,0,120)|0;if(!d){c[f>>2]=Dn(b)|0;_l(0,84834,f)|0;c[g>>2]=e;_l(3,84887,g)|0}}l=i;return d|0}function Vt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;f=vw(304)|0;if(!f)_l(1,84895,g)|0;e=a+16|0;a=c[e>>2]|0;c[f>>2]=a;c[e>>2]=f;if(!a){c[f+144>>2]=3;c[f+148>>2]=0;h[f+152>>3]=1.0}else{b=f+16|0;d=a+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));b=f+56|0;d=a+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));c[f+144>>2]=c[a+144>>2];c[f+148>>2]=c[a+148>>2];h[f+152>>3]=+h[a+152>>3];c[f+136>>2]=c[a+136>>2];b=f+96|0;d=a+96|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0))}l=g;return f|0}function Wt(a){a=a|0;var b=0;a=a+16|0;b=c[a>>2]|0;if(!b)ma(84921,84925,117,84932);else{_I(c[b+212>>2]|0);_I(c[b+208>>2]|0);_I(c[b+216>>2]|0);_I(c[b+220>>2]|0);_I(c[b+224>>2]|0);_I(c[b+228>>2]|0);_I(c[b+232>>2]|0);_I(c[b+236>>2]|0);_I(c[b+240>>2]|0);_I(c[b+244>>2]|0);_I(c[b+248>>2]|0);_I(c[b+252>>2]|0);_I(c[b+256>>2]|0);_I(c[b+272>>2]|0);_I(c[b+284>>2]|0);_I(c[b+280>>2]|0);c[a>>2]=c[b>>2];_I(b);return}}function Xt(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0;l=c[d+16>>2]|0;k=c[d+152>>2]|0;if((e|0)!=0&(k&32768|0)!=0)c[l+192>>2]=e;if(((k&65536|0)!=0?(c[l+212>>2]=qw(i,j)|0,(f|0)!=0):0)?(a[f>>0]|0)!=0:0){c[l+208>>2]=qw(f,j)|0;d=1}else d=0;do if(k&4194304){if(g|0?a[g>>0]|0:0){c[l+228>>2]=qw(g,j)|0;d=l+260|0;b[d>>1]=b[d>>1]|1;d=1;break}e=c[l+192>>2]|0;if(e){c[l+228>>2]=GL(e)|0;d=1}}while(0);if((h|0)!=0&(k&8388608|0)!=0?(a[h>>0]|0)!=0:0){c[l+244>>2]=qw(h,j)|0;d=1}return d|0}function Yt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;i=j;h=j+8|0;g=c[(c[b>>2]|0)+168>>2]|0;f=c[(c[(c[g+16>>2]|0)+8>>2]|0)+92>>2]|0;Zt(b,e);b=Im(d,86799)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0){fm(e,b)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}else{if((g|0)!=(d|0)&(f|0)!=0){fm(e,f)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}c[f>>2]=b+1;a[b>>0]=95}switch(Co(d)|0){case 0:{f=(g|0)==(d|0)?96286:84946;b=(c[d>>2]|0)>>>4;break}case 1:{f=96273;b=(c[d>>2]|0)>>>4;break}case 2:{f=96237;b=(c[d>>2]|0)>>>4;break}default:{f=0;b=0}}fm(e,f)|0;c[i>>2]=b;pL(h,84952,i)|0;fm(e,h)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}l=j;return b|0}function Zt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+144|0;h=i;g=i+8|0;e=c[b+160>>2]|0;if((e|0)>1?c[b+152>>2]&64|0:0){fm(d,c[(c[(c[b>>2]|0)+308>>2]|0)+(e<<2)>>2]|0)|0;f=d+4|0;e=c[f>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0){dm(d,1)|0;e=c[f>>2]|0}c[f>>2]=e+1;a[e>>0]=95}f=c[b+196>>2]|0;e=c[b+200>>2]|0;if((f|0)>0|(e|0)>0){c[h>>2]=f;c[h+4>>2]=e;pL(g,84956,h)|0;fm(d,g)|0}l=i;return}function _t(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;s=l;l=l+48|0;p=s+16|0;f=s+32|0;q=s;r=+h[(c[a+16>>2]|0)+152>>3];o=$t(d,0,f)|0;if((o+-1|0)>>>0>=2){e=+h[b+16>>3];k=(e+ +h[b>>3])*.5;h[q>>3]=k;i=+h[b+24>>3];m=(i+ +h[b+8>>3])*.5;h[q+8>>3]=m;k=e-k;m=i-m;n=r>.5;if(n)OD(a,.5);j=c[f>>2]|0;i=0.0;f=c[j+8>>2]|0;while(1){d=c[f>>2]|0;if(!d)break;b=f+4|0;if(+g[b>>2]==0.0)e=i;else{DD(a,d);if(!(c[f+12>>2]|0))e=6.283185307179586;else e=+g[b>>2]*6.283185307179586+i;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];b=_E(p,k,m,i,e)|0;JD(a,c[b>>2]|0,c[b+4>>2]|0,0,0,1);XI(b)}i=e;f=f+12|0}if(n)OD(a,r);au(j)}l=s;return o|0}function $t(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r+8|0;n=r;q=vw(12)|0;i=GL(b)|0;a:do if(!d){d=1;f=i;while(1){switch(a[f>>0]|0){case 0:break a;case 58:{d=d+1|0;break}default:{}}f=f+1|0}}while(0);c[q+4>>2]=i;p=vw((d*12|0)+12|0)|0;c[q+8>>2]=p;m=1.0;h=0;d=0;f=i;while(1){f=DL(f,93017)|0;if(!f){f=20;break}j=+bu(f);if(!(j>=0.0)){f=17;break}k=j-m;if(k>0.0)if((c[4920]|0)!=0?!(k<1.0e-05&k>-1.0e-05):0){c[n>>2]=b;_l(0,84967,n)|0;c[4920]=0;j=m;d=3}else j=m;k=m-j;if(j>0.0)a[p+(h*12|0)+8>>0]=1;if(a[f>>0]|0)c[p+(h*12|0)>>2]=f;f=h+1|0;g[p+(h*12|0)+4>>2]=j;if(k<1.0e-05&k>-1.0e-05){h=f;f=30;break}else{m=k;h=f;f=0}}b:do if((f|0)==17){if(!(c[4920]|0))d=1;else{c[o>>2]=b;_l(1,85002,o)|0;c[4920]=0;d=2}au(q)}else if((f|0)==20)if(m>0.0){f=0;i=0;while(1){if((f|0)>=(h|0))break;o=i+(+g[p+(f*12|0)+4>>2]==0.0&1)|0;f=f+1|0;i=o}if((i|0)<=0){f=p+((h+-1|0)*12|0)+4|0;g[f>>2]=m+ +g[f>>2];f=30;break}j=m/+(i|0);f=0;while(1){if((f|0)>=(h|0)){f=30;break b}i=p+(f*12|0)+4|0;if(+g[i>>2]==0.0)g[i>>2]=j;f=f+1|0}}else f=30;while(0);if((f|0)==30){while(1){f=h+-1|0;if((h|0)<=0)break;if(+g[p+(f*12|0)+4>>2]>0.0)break;else h=f}c[p+(h*12|0)>>2]=0;c[q>>2]=h;c[e>>2]=q}l=r;return d|0}function au(a){a=a|0;_I(c[a+4>>2]|0);_I(c[a+8>>2]|0);_I(a);return}function bu(b){b=b|0;var d=0.0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;b=WJ(b,59)|0;if(!b)d=0.0;else{g=b+1|0;a[b>>0]=0;d=+tM(g,e);d=(d>=0.0?(c[e>>2]|0)!=(g|0):0)?d:-1.0}l=f;return +d}function cu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0;t=l;l=l+80|0;i=t+64|0;r=t;s=+h[(c[a+16>>2]|0)+152>>3];q=$t(d,0,i)|0;if((q+-1|0)>>>0>=2){if(!e){c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];p=r+16|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;o=b+32|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+48|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}else{p=b+32|0;c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+16|0;o=b+48|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=r+32|0;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];p=r+48|0;o=b+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}k=r+16|0;m=+h[k>>3];f=+h[r>>3];n=m-f;o=r+32|0;h[o>>3]=f;h[k>>3]=f;p=s>.5;if(p)OD(a,.5);i=c[i>>2]|0;j=r+48|0;e=c[i+8>>2]|0;while(1){d=c[e>>2]|0;if(!d)break;b=e+4|0;if(!(+g[b>>2]==0.0)){DD(a,d);if(!(c[e+12>>2]|0))f=m;else f=n*+g[b>>2]+ +h[r>>3];h[o>>3]=f;h[k>>3]=f;HD(a,r,4,1);f=+h[k>>3];h[j>>3]=f;h[r>>3]=f}e=e+12|0}if(p)OD(a,s);au(i)}l=t;return q|0}function du(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;g=f>>>16^2;c[d+264>>2]=g;h=d+268|0;c[h>>2]=g+2;g=d+272|0;_I(c[g>>2]|0);d=vw(c[h>>2]<<4)|0;c[g>>2]=d;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];g=d+16|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];if(!(e&8192))fD(a,d,d,2)|0;if(!f)Zv(d)}return}function eu(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0;q=l;l=l+144|0;c=q+80|0;e=q+16|0;f=q;k=+h[b>>3];o=a+16|0;m=+h[o>>3];if(!(((((((((!(k>m)?(n=+h[a>>3],!(k<n)):0)?(d=+h[b+8>>3],i=+h[a+24>>3],!(d>i)):0)?(j=+h[a+8>>3],!(d<j)):0)?(k=+h[b+16>>3],!(k>m|k<n)):0)?(k=+h[b+24>>3],!(k>i|k<j)):0)?(k=+h[b+32>>3],!(k>m|k<n)):0)?(k=+h[b+40>>3],!(k>i|k<j)):0)?(k=+h[b+48>>3],!(k>m|k<n)):0)?(n=+h[b+56>>3],!(n>i|n<j)):0))p=11;a:do if((p|0)==11){if(!(fu(b)|0)){PA(f,b,3,.5,c,e);eu(a,c);eu(a,e);break}f=a+24|0;g=a+8|0;e=0;while(1){if((e|0)==4)break a;d=+h[b+(e<<4)>>3];if(!(d>+h[o>>3])){if(d<+h[a>>3]){c=a;p=16}}else{c=o;p=16}if((p|0)==16){p=0;h[c>>3]=d}d=+h[b+(e<<4)+8>>3];if(!(d>+h[f>>3])){if(d<+h[g>>3]){c=a;p=19}}else{c=o;p=19}if((p|0)==19){p=0;h[c+8>>3]=d}e=e+1|0}}while(0);l=q;return}function fu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=l;l=l+48|0;d=b+32|0;e=b+16|0;f=b;i=a+48|0;h=a+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];g=+cw(f,e,d);h=a+32|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];a=g<4.0&+cw(f,e,d)<4.0&1;l=b;return a|0}function gu(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0.0;m=l;l=l+16|0;k=m;j=c[b+152>>2]|0;n=+h[b+432>>3];i=+h[b+352>>3]*.013888888888888888;f=i*n;h[b+488>>3]=f;g=+h[b+440>>3];i=i*g;h[b+496>>3]=i;h[b+520>>3]=n*.013888888888888888;e=b+528|0;h[e>>3]=g*.013888888888888888;if(j&4096|c[42183]|0)h[e>>3]=g*-.013888888888888888;e=(c[b+360>>2]|0)==0;n=+((c[b+448>>2]|0)>>>0);g=+((c[b+452>>2]|0)>>>0);h[b+368>>3]=(e?n:g)/f;h[b+376>>3]=(e?g:n)/i;LD(b,FA(d,ym(d,0,86595,0)|0,174181)|0);c[b+160>>2]=0;hu(b,d);if(j&2|0)iu(b,d);e=co(d)|0;while(1){if(!e)break;a[(c[e+16>>2]|0)+116>>0]=0;e=eo(d,e)|0}ju(b,k);while(1){if(!((ku(b)|0)<<24>>24))break;if((lu(b)|0)>1)kD(b);mu(b);while(1){if(!((nu(b)|0)<<24>>24))break;ou(b,d);pu(b)}if((lu(b)|0)>1)lD(b);qu(b,k)}ru(b);l=m;return}function hu(a,b){a=a|0;b=b|0;var d=0;d=Vt(a)|0;c[d+4>>2]=0;c[d+8>>2]=b;c[d+12>>2]=0;qv(a,c[(c[b+16>>2]|0)+12>>2]|0,b);gD(a,b);return}function iu(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;DD(b,119592);d=Im(c,85423)|0;if(d|0?a[d>>0]|0:0)DD(b,d);d=Im(c,86503)|0;if(d|0?a[d>>0]|0:0)BD(b,d);Cv(b,c);g=co(c)|0;while(1){if(!g)break;d=Im(g,122540)|0;if(d|0?a[d>>0]|0:0)BD(b,d);d=Im(g,122531)|0;if(d|0?a[d>>0]|0:0)DD(b,d);d=Im(g,86469)|0;do if(d|0?a[d>>0]|0:0){if(!(WJ(d,58)|0)){BD(b,d);break}e=GL(d)|0;d=e;while(1){d=DL(d,93017)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}BD(b,d);d=0}_I(e)}while(0);d=Im(g,86503)|0;if(d|0?a[d>>0]|0:0)BD(b,d);f=Pm(c,g)|0;while(1){if(!f)break;d=Im(f,122540)|0;do if(d|0?a[d>>0]|0:0){if(!(WJ(d,58)|0)){BD(b,d);break}e=GL(d)|0;d=e;while(1){d=DL(d,93017)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}BD(b,d);d=0}_I(e)}while(0);d=Im(f,86503)|0;if(d|0?a[d>>0]|0:0)BD(b,d);f=Rm(c,f)|0}g=eo(c,g)|0}return}function ju(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;e=i+8|0;g=i;h=c[a>>2]|0;d=c[h+312>>2]|0;f=a+156|0;c[f>>2]=d;h=c[h+316>>2]|0;if(!h)if((d|0)>1?(c[a+152>>2]&64|0)==0:0){c[e>>2]=c[a+52>>2];_l(0,85598,e)|0;c[f>>2]=1;e=1;d=0}else{e=1;d=0}else{d=h+4|0;if((c[h>>2]|0)>1?(c[a+152>>2]&64|0)==0:0){c[g>>2]=c[a+52>>2];_l(0,85598,g)|0;c[h+8>>2]=(c[f>>2]|0)+1}e=c[d>>2]|0;d=h+8|0}c[a+160>>2]=e;c[b>>2]=d;l=i;return}function ku(a){a=a|0;return (c[a+160>>2]|0)<=(c[a+156>>2]|0)|0}function lu(a){a=a|0;var b=0;b=c[(c[a>>2]|0)+316>>2]|0;return c[((b|0)==0?a+156|0:b)>>2]|0}function mu(a){a=a|0;var b=0,d=0;d=a+172|0;b=c[d+4>>2]|0;a=a+196|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;return}function nu(a){a=a|0;var b=0,d=0;d=c[a+196>>2]|0;if(((d|0)>-1?(d|0)<(c[a+164>>2]|0):0)?(b=c[a+200>>2]|0,(b|0)>-1):0)a=(b|0)<(c[a+168>>2]|0)&1;else a=0;return a|0}function ou(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+176|0;k=p;f=p+48|0;m=p+32|0;n=c[d+16>>2]|0;o=c[d+152>>2]|0;if((c[d+160>>2]|0)<=1?(c[d+196>>2]|0)<=0:0)h=0;else{cm(m,128,f);g=n+212|0;h=c[g>>2]|0;Zt(d,m);fm(m,h)|0;i=m+4|0;f=c[i>>2]|0;if(f>>>0>=(c[m+8>>2]|0)>>>0){dm(m,1)|0;f=c[i>>2]|0}a[f>>0]=0;f=c[m>>2]|0;c[i>>2]=f;c[g>>2]=f}ZE(Im(e,85048)|0);tu(d);iD(d);BD(d,122106);DD(d,119592);do if(o&4259840|0){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;if(o&655360){i=o&131072;c[n+264>>2]=i>>>16^2;f=vw((i>>>12^32)+32|0)|0;g=d+288|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=f+16|0;q=d+304|0;c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];if(!i){Zv(f);g=4}else g=2}else{f=0;g=0}if(!(o&8192))fD(d,f,f,g)|0;c[n+272>>2]=f;c[n+268>>2]=g}while(0);if(o&32768|0?(j=c[(c[e+16>>2]|0)+12>>2]|0,j|0):0)c[n+192>>2]=c[j>>2];g=(o&4|0)!=0;do if(!g){f=n+208|0;if((c[f>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;q=d+256|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[k+16>>2]=c[q+16>>2];c[k+20>>2]=c[q+20>>2];c[k+24>>2]=c[q+24>>2];c[k+28>>2]=c[q+28>>2];du(d,k);wD(d,c[f>>2]|0,c[n+228>>2]|0,c[n+244>>2]|0,c[n+212>>2]|0)}while(0);uu(d,e);f=c[(c[e+16>>2]|0)+12>>2]|0;if(f|0)pw(d,4,f);do if(!g){if((c[n+208>>2]|0)==0?(b[n+260>>1]&1)==0:0)break;xD(d)}while(0);vu(d,e,o);jD(d);if(h|0){gm(m);c[n+212>>2]=h}l=p;return}function pu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;d=h+24|0;b=h+16|0;j=h+8|0;f=h;g=a+196|0;i=a+188|0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];su(j,b,d);i=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=i;if(!((nu(a)|0)<<24>>24)){e=a+180|0;if(!(c[a+184>>2]|0))c[a+200>>2]=c[a+176>>2];else c[g>>2]=c[a+172>>2];c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];su(f,b,d);i=c[f+4>>2]|0;j=g;c[j>>2]=c[f>>2];c[j+4>>2]=i}l=h;return}function qu(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;if(!d){d=a+160|0;c[d>>2]=(c[d>>2]|0)+1}else{c[a+160>>2]=c[d>>2];c[b>>2]=d+4}return}function ru(a){a=a|0;hD(a);Wt(a);return}function su(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function tu(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+48|0;n=t+32|0;f=t+24|0;j=t+8|0;k=t+16|0;m=t;r=a+196|0;q=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=q;c[p+4>>2]=r;p=a+164|0;i=c[p>>2]|0;p=c[p+4>>2]|0;s=j;c[s>>2]=i;c[s+4>>2]=p;s=a+360|0;if(!(c[s>>2]|0)){k=q;j=r}else{c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];Bv(k,n);r=k;k=c[r>>2]|0;r=c[r+4>>2]|0;p=f;c[p>>2]=k;c[p+4>>2]=r;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];Bv(m,n);p=m;i=c[p>>2]|0;p=c[p+4>>2]|0;c[j>>2]=i;c[j+4>>2]=p;j=r}d=+h[a+320>>3];g=d*+(k|0)-+h[a+240>>3];h[a+288>>3]=g;e=+h[a+328>>3];o=e*+(j|0)-+h[a+248>>3];h[a+296>>3]=o;h[a+304>>3]=d+g;h[a+312>>3]=e+o;f=a+472|0;if(!(c[(c[a+12>>2]|0)+28>>2]|0)){r=a+456|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2]}else{q=a+456|0;c[f>>2]=c[((c[f>>2]|0)<(c[q>>2]|0)?f:q)>>2];r=a+476|0;c[r>>2]=c[((c[r>>2]|0)<(c[a+460>>2]|0)?f:q)+4>>2];r=a+480|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+464>>2]|0)?f:q)+8>>2];r=a+484|0;c[r>>2]=c[((c[r>>2]|0)>(c[a+468>>2]|0)?f:q)+12>>2]}m=c[a+152>>2]|0;b=+h[a+336>>3];if(!(m&128)){b=(+(k|0)-+(i|0)*.5)*d+b;h[a+256>>3]=b;g=(+(j|0)-+(p|0)*.5)*e+ +h[a+344>>3];o=g;d=d+b;g=g+e}else{d=+h[a+368>>3]*.5;e=b-d;h[a+256>>3]=e;g=+h[a+344>>3];u=+h[a+376>>3]*.5;o=g-u;d=d+b;g=u+g;b=e}h[a+264>>3]=o;h[a+272>>3]=d;h[a+280>>3]=g;if(!(c[s>>2]|0)){e=+h[a+352>>3];h[a+504>>3]=+h[a+384>>3]/e-b;if(!(m&4096|c[42183])){d=+h[a+392>>3]/e;b=o}else{d=-g;b=+h[a+392>>3]/e}h[a+512>>3]=d-b}else{f=a+384|0;e=+h[a+352>>3];h[a+512>>3]=-g-+h[a+392>>3]/e;if(!(m&4096|c[42183]))d=+h[f>>3]/e;else{d=-d;b=+h[f>>3]/e}h[a+504>>3]=d-b}l=t;return}function uu(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+48|0;q=s;o=s+40|0;p=s+36|0;r=s+32|0;e=Im(d,85423)|0;if(!e){j=1;e=121990}else{i=(a[e>>0]|0)==0;j=i&1;e=i?121990:e}h=c[b+152>>2]|0;i=(a[e>>0]|0)==116;if(!(h&256))if(i){m=(xJ(e,122171)|0)==0;k=m?121990:e;m=m?1:j;n=8}else{k=e;m=j;n=8}else if(!(i?!(xJ(e,122171)|0):0)){k=e;m=j;n=8}if((n|0)==8?!((m|0)!=0&(h&33554432|0)!=0):0)if(!((xv(k,o,p)|0)<<24>>24)){DD(b,k);BD(b,122171);r=b+256|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];c[q+16>>2]=c[r+16>>2];c[q+20>>2]=c[r+20>>2];c[q+24>>2]=c[r+24>>2];c[q+28>>2]=c[r+28>>2];ID(b,q,1)}else{c[r>>2]=0;i=c[o>>2]|0;DD(b,i);BD(b,122171);wv(d,r)|0;e=c[o+4>>2]|0;h=DA(d,c[42187]|0,0,0)|0;f=+g[p>>2];if(!e)ED(b,122106,h,f);else ED(b,e,h,f);r=(c[r>>2]|0)>>>1&1|2;p=b+256|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];c[q+16>>2]=c[p+16>>2];c[q+20>>2]=c[p+20>>2];c[q+24>>2]=c[p+24>>2];c[q+28>>2]=c[p+28>>2];ID(b,q,r);_I(i)}e=c[(c[(c[d+16>>2]|0)+8>>2]|0)+88>>2]|0;if(e|0)zv(b,e);l=s;return}function vu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[a>>2]|0)+28|0;c[g>>2]=(c[g>>2]|0)+1;g=(d&4|0)!=0;if(!g)wu(a,b,d);a:do if(!(d&1)){if(d&16|0){qD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;yu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}rD(a);oD(a);e=co(b)|0;while(1){if(!e)break;xu(a,e);e=eo(b,e)|0}pD(a);break}if(!(d&8)){f=co(b)|0;while(1){if(!f)break a;xu(a,f);e=Pm(b,f)|0;while(1){if(!e)break;xu(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0);yu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}}oD(a);e=co(b)|0;while(1){if(!e)break;if((zu(b,e)|0)<<24>>24)xu(a,e);e=eo(b,e)|0}pD(a);qD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;if((Au(b,e)|0)<<24>>24)yu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}rD(a)}else{oD(a);e=co(b)|0;while(1){if(!e)break;xu(a,e);e=eo(b,e)|0}pD(a);qD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;yu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}rD(a)}while(0);if(g)wu(a,b,d);return}function wu(e,f,i){e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;P=l;l=l+128|0;w=P+72|0;N=P+64|0;H=P+112|0;I=P;J=P+104|0;K=f+16|0;L=(i&4|0)!=0;M=e+16|0;x=I+32|0;y=I+16|0;A=I+8|0;B=I+24|0;C=I+48|0;D=I+40|0;E=I+56|0;F=(i&8|0)==0;G=J+4|0;v=1;while(1){j=c[K>>2]|0;if((v|0)>(c[j+180>>2]|0))break;u=c[(c[j+184>>2]|0)+(v<<2)>>2]|0;if((uv(e,u)|0)<<24>>24){if(L)wu(e,u,i);vv(e,u);r=c[M>>2]|0;s=r+208|0;if(!(c[s>>2]|0))t=(b[r+260>>1]&1)!=0;else t=1;ZE(Im(u,85048)|0);if(!(L|t^1)){q=(c[u+16>>2]|0)+16|0;c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[w+16>>2]=c[q+16>>2];c[w+20>>2]=c[q+20>>2];c[w+24>>2]=c[q+24>>2];c[w+28>>2]=c[q+28>>2];du(e,w);wD(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}c[H>>2]=0;j=wv(u,H)|0;if(!j)p=0;else{FD(e,j);p=c[H>>2]&1}q=u+16|0;j=d[(c[q>>2]|0)+112>>0]|0;do if(!(j&1)){if(j&2|0){j=GA(u,0,91300)|0;k=GA(u,0,91308)|0;O=29;break}if(j&8|0){j=GA(u,0,91316)|0;k=GA(u,0,91324)|0;O=29;break}if(j&4|0){j=GA(u,0,91332)|0;k=GA(u,0,91340)|0;O=29;break}j=Im(u,122540)|0;if(!j)k=0;else k=(a[j>>0]|0)==0?0:j;j=Im(u,122531)|0;if(!j)j=k;else j=(a[j>>0]|0)==0?k:j;m=Im(u,86469)|0;if(m)k=(a[m>>0]|0)==0?k:m;if(!((p|0)!=0&(k|0)!=0)){m=Im(u,85423)|0;if(m|0?a[m>>0]|0:0){k=m;O=29;break}j=(j|0)==0?122106:j;n=(k|0)==0?119592:k;c[J>>2]=0;if(!p)k=0;else O=31}else O=29}else{j=GA(u,0,91284)|0;k=GA(u,0,91292)|0;O=29}while(0);if((O|0)==29){c[J>>2]=0;j=(j|0)==0?122106:j;n=(k|0)==0?119592:k;O=31}if((O|0)==31){O=0;if(!((xv(n,J,w)|0)<<24>>24)){DD(e,n);k=1}else{DD(e,c[J>>2]|0);k=c[G>>2]|0;m=DA(u,c[42187]|0,0,0)|0;o=+g[w>>2];if(!k)ED(e,122106,m,o);else ED(e,k,m,o);k=(c[H>>2]|0)>>>1&1|2}}m=c[42186]|0;if((m|0?(z=Jm(u,m)|0,z|0):0)?a[z>>0]|0:0)OD(e,+EA(u,c[42186]|0,1.0,0.0));p=c[H>>2]|0;do if(p&4){m=DA(u,c[42185]|0,1,0)|0;if(m|k|0){n=c[q>>2]|0;Q=n+16|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];n=n+32|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!m)BD(e,122171);else BD(e,j);yy(e,I,4,p,k)}}else{if(!(p&64)){if(DA(u,c[42185]|0,1,0)|0){BD(e,j);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];ID(e,w,k);break}if(!k)break;BD(e,122171);Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];ID(e,w,k);break}Q=c[q>>2]|0;p=Q+16|0;c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];Q=Q+32|0;c[x>>2]=c[Q>>2];c[x+4>>2]=c[Q+4>>2];c[x+8>>2]=c[Q+8>>2];c[x+12>>2]=c[Q+12>>2];h[y>>3]=+h[x>>3];h[B>>3]=+h[A>>3];h[C>>3]=+h[I>>3];h[E>>3]=+h[D>>3];if(!(DA(u,c[42185]|0,1,0)|0))BD(e,122171);else BD(e,j);if((cu(e,I,n,0)|0)>1){c[N>>2]=Dn(u)|0;_l(3,85431,N)|0}Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];ID(e,w,0)}while(0);_I(c[J>>2]|0);j=c[(c[q>>2]|0)+12>>2]|0;if(j|0)pw(e,5,j);if(t){if(L){Q=(c[q>>2]|0)+16|0;c[w>>2]=c[Q>>2];c[w+4>>2]=c[Q+4>>2];c[w+8>>2]=c[Q+8>>2];c[w+12>>2]=c[Q+12>>2];c[w+16>>2]=c[Q+16>>2];c[w+20>>2]=c[Q+20>>2];c[w+24>>2]=c[Q+24>>2];c[w+28>>2]=c[Q+28>>2];du(e,w);wD(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0)}xD(e)}a:do if(!F){k=co(u)|0;while(1){if(!k)break a;xu(e,k);j=Pm(u,k)|0;while(1){if(!j)break;yu(e,j);j=Rm(u,j)|0}k=eo(u,k)|0}}while(0);yv(e,f);if(!L)wu(e,u,i)}v=v+1|0}l=P;return}function xu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;e=j;h=c[b>>2]|0;i=d+16|0;a:do if(((c[(c[i>>2]|0)+8>>2]|0?(mv(b,ro(d)|0,d)|0)<<24>>24:0)?(k=b+256|0,c[e>>2]=c[k>>2],c[e+4>>2]=c[k+4>>2],c[e+8>>2]=c[k+8>>2],c[e+12>>2]=c[k+12>>2],c[e+16>>2]=c[k+16>>2],c[e+20>>2]=c[k+20>>2],c[e+24>>2]=c[k+24>>2],c[e+28>>2]=c[k+28>>2],(nv(d,e)|0)<<24>>24):0)?(f=(c[i>>2]|0)+116|0,g=c[h+28>>2]|0,(g|0)!=(a[f>>0]|0)):0){a[f>>0]=g;LD(b,Dn(d)|0);e=FA(d,c[42213]|0,174181)|0;if(a[e>>0]|0)LD(b,e);e=FA(d,c[42201]|0,174181)|0;b:do if(a[e>>0]|0){Du(e)|0;e=168408;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f)break b;if((a[f>>0]|0)!=105)continue;if(!(xJ(f,119127)|0))break a}}while(0);ov(b,d);hb[c[(c[(c[(c[i>>2]|0)+8>>2]|0)+4>>2]|0)+20>>2]&31](b,d);e=c[(c[i>>2]|0)+108>>2]|0;if(e|0?a[e+81>>0]|0:0)pw(b,10,e);pv(b)}while(0);l=j;return}function yu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;g=h;e=b+256|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];a:do if((Bu(d,g)|0)<<24>>24?(f=d+-48|0,(Cu(b,d)|0)<<24>>24):0){i=d+48|0;e=rJ(Dn(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;e=ZI(e+3+(rJ(Dn(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)|0)|0;xK(e,Dn(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;i=(qn(ro(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)==0;g=e+(rJ(e)|0)|0;if(i){a[g>>0]=a[122549]|0;a[g+1>>0]=a[122550]|0;a[g+2>>0]=a[122551]|0}else{a[g>>0]=a[122546]|0;a[g+1>>0]=a[122547]|0;a[g+2>>0]=a[122548]|0}IL(e,Dn(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0;LD(b,e);_I(e);e=FA(d,c[42235]|0,174181)|0;if(a[e>>0]|0)LD(b,e);e=FA(d,c[42229]|0,174181)|0;b:do if(!(a[e>>0]|0))e=0;else{Du(e)|0;e=168408;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f){e=168408;break b}if((a[f>>0]|0)!=105)continue;if(!(xJ(f,119127)|0))break a}}while(0);Eu(b,d,e);Fu(b,d,e);Gu(b)}while(0);l=h;return}function zu(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(Bo(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function Au(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(Bo(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function Bu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=j+32|0;f=j;g=b+16|0;b=c[g>>2]|0;e=c[b+8>>2]|0;if((e|0)!=0?(e=e+8|0,c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+16>>2]=c[e+16>>2],c[f+20>>2]=c[e+20>>2],c[f+24>>2]=c[e+24>>2],c[f+28>>2]=c[e+28>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(lv(f,i)|0)!=0):0)b=1;else h=3;do if((h|0)==3){e=c[b+96>>2]|0;if(e){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];if((CB(e,i)|0)<<24>>24){b=1;break}b=c[g>>2]|0}b=c[b+108>>2]|0;if((b|0?a[b+81>>0]|0:0)?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(CB(b,i)|0)<<24>>24):0){b=1;break}b=0}while(0);l=j;return b|0}function Cu(b,d){b=b|0;d=d|0;var e=0,f=0;a:do if((c[b+156>>2]|0)>=2?(e=FA(d,c[42234]|0,174181)|0,(hv(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=0;while(1){if((e|0)>=2){e=0;break a}f=(e|0)==1;f=FA(c[((c[d>>2]&3|0)==((f?2:3)|0)?d:d+((f?-1:1)*48|0)|0)+40>>2]|0,c[42211]|0,174181)|0;if(!(a[f>>0]|0)){e=1;break a}if(!((hv(b,f)|0)<<24>>24))e=e+1|0;else{e=1;break}}}else e=0;else e=1;while(0);return e|0}function Du(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+192|0;o=p+24|0;n=p+16|0;m=p+8|0;k=p;g=p+48|0;j=p+32|0;if(a[85305]|0){cm(168672,128,173948);a[85305]=0}cm(j,128,p+56|0);c[g>>2]=b;h=j+4|0;i=j+8|0;d=0;e=0;a:while(1){f=d;b:while(1)switch(fv(g,j)|0){case 0:{d=21;break a}case 40:if(!(f<<24>>24)){f=1;continue b}else{d=7;break a}case 41:if(!(f<<24>>24)){d=9;break a}else{f=0;continue b}default:break b}if(!(f<<24>>24)){if((e|0)==63){d=12;break}d=c[42169]|0;if(d>>>0>=(c[42170]|0)>>>0){dm(168672,1)|0;d=c[42169]|0}c[42169]=d+1;a[d>>0]=0;c[168408+(e<<2)>>2]=c[42169];e=e+1|0}d=c[h>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){dm(j,1)|0;d=c[h>>2]|0}a[d>>0]=0;d=c[j>>2]|0;c[h>>2]=d;fm(168672,d)|0;d=c[42169]|0;if(d>>>0>=(c[42170]|0)>>>0){dm(168672,1)|0;d=c[42169]|0}c[42169]=d+1;a[d>>0]=0;d=f}do if((d|0)==7){c[k>>2]=b;_l(1,85306,k)|0;c[42102]=0;gm(j)}else if((d|0)==9){c[m>>2]=b;_l(1,85340,m)|0;c[42102]=0;gm(j)}else if((d|0)==12){c[n>>2]=b;_l(0,85368,n)|0;c[42165]=0;gm(j)}else if((d|0)==21){if(f<<24>>24){c[o>>2]=b;_l(1,85391,o)|0;c[42102]=0;gm(j);break}c[168408+(e<<2)>>2]=0;gm(j);d=c[42169]|0;if(d>>>0>=(c[42170]|0)>>>0){dm(168672,1)|0;d=c[42169]|0}a[d>>0]=0;c[42169]=c[42168]}while(0);l=p;return 168408}function Eu(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+160|0;y=A+24|0;w=A+20|0;v=A+16|0;o=A;p=A+32|0;x=c[d+152>>2]|0;c[y>>2]=0;c[w>>2]=0;c[v>>2]=0;z=Vt(d)|0;c[z+4>>2]=3;c[z+8>>2]=f;c[z+12>>2]=9;t=f+16|0;n=c[(c[t>>2]|0)+96>>2]|0;if((n|0?(a[n+82>>0]|0)==0:0)?(JA(Im(f,85121)|0,0)|0)<<24>>24:0){n=z+260|0;b[n>>1]=b[n>>1]|512}if(g|0?c[(c[t>>2]|0)+8>>2]|0:0)FD(d,g);g=c[42250]|0;if((g|0?(i=Jm(f,g)|0,i|0):0)?a[i>>0]|0:0)OD(d,+EA(f,c[42250]|0,1.0,0.0));do if(x&16777216|0){g=f+48|0;if((e[(c[(ro(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)|0)+16>>2]|0)+178>>1]|0)>2){m=+h[(c[(c[(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+176>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);m=+h[(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[z+184>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);break}else{n=z+176|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;break}}while(0);if(x&32768|0){n=c[t>>2]|0;g=c[n+96>>2]|0;if(!g)g=c[z+192>>2]|0;else{g=c[g>>2]|0;c[z+192>>2]=g}i=z+196|0;c[i>>2]=g;k=z+204|0;c[k>>2]=g;j=z+200|0;c[j>>2]=g;g=c[n+108>>2]|0;if(g|0)c[i>>2]=c[g>>2];g=c[n+104>>2]|0;if(g|0)c[j>>2]=c[g>>2];g=c[n+100>>2]|0;if(g|0)c[k>>2]=c[g>>2]}if(!(x&65536))j=0;else{cm(o,128,p);c[z+212>>2]=qw(Yt(d,f,o)|0,f)|0;gm(o);g=Im(f,96264)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else{g=Im(f,96269)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=31;else i=0}if((q|0)==31)i=qw(g,f)|0;g=Im(f,85134)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=36;else q=34;do if((q|0)==34){g=Im(f,85143)|0;if(g|0?a[g>>0]|0:0){q=36;break}if(i|0){g=GL(i)|0;q=39}}while(0);if((q|0)==36){g=qw(g,f)|0;q=39}if((q|0)==39)c[z+208>>2]=g;g=Im(f,85151)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=44;else q=42;do if((q|0)==42){g=Im(f,85161)|0;if(g|0?a[g>>0]|0:0){q=44;break}if(i|0){g=GL(i)|0;q=47}}while(0);if((q|0)==44){g=qw(g,f)|0;q=47}if((q|0)==47)c[z+216>>2]=g;g=Im(f,85170)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=52;else q=50;do if((q|0)==50){g=Im(f,85179)|0;if(g|0?a[g>>0]|0:0){q=52;break}if(i|0)c[z+220>>2]=GL(i)|0}while(0);if((q|0)==52){c[z+220>>2]=qw(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|128}g=Im(f,85187)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=59;else q=57;do if((q|0)==57){g=Im(f,85196)|0;if(g|0?a[g>>0]|0:0){q=59;break}if(i|0)c[z+224>>2]=GL(i)|0}while(0);if((q|0)==59){c[z+224>>2]=qw(g,f)|0;q=z+260|0;b[q>>1]=b[q>>1]|256}j=i}do if(x&8388608){g=Im(f,85204)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)i=qw(g,f)|0;else i=0;g=Im(f,85211)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){q=z+260|0;b[q>>1]=b[q>>1]|64;g=qw(g,f)|0;q=72}else q=70;if((q|0)==70?i|0:0){g=GL(i)|0;q=72}if((q|0)==72)c[z+244>>2]=g;g=Im(f,85222)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){g=qw(g,f)|0;q=78}else q=76;if((q|0)==76?i|0:0){g=GL(i)|0;q=78}if((q|0)==78)c[z+248>>2]=g;g=Im(f,85234)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){c[z+252>>2]=qw(g,f)|0;p=z+260|0;b[p>>1]=b[p>>1]|16}else q=82;if((q|0)==82?i|0:0)c[z+252>>2]=GL(i)|0;g=Im(f,85245)|0;if(g|0?a[g>>0]|0:0){q=z+260|0;b[q>>1]=b[q>>1]|32;c[z+256>>2]=qw(g,f)|0;break}if(i)c[z+256>>2]=GL(i)|0;else i=0}else i=0;while(0);do if(x&4194304|0){g=Im(f,96229)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)q=94;else q=92;do if((q|0)==92){g=Im(f,85256)|0;if(g|0?a[g>>0]|0:0){q=94;break}g=c[z+192>>2]|0;if(g|0)c[z+228>>2]=GL(g)|0}while(0);if((q|0)==94){p=Zu(g,f)|0;c[z+228>>2]=qw(p,f)|0;_I(p);p=z+260|0;b[p>>1]=b[p>>1]|1}g=Im(f,85268)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){p=Zu(g,f)|0;c[z+232>>2]=qw(p,f)|0;_I(p);p=z+260|0;b[p>>1]=b[p>>1]|8}else q=100;if((q|0)==100?(r=c[z+192>>2]|0,r|0):0)c[z+232>>2]=GL(r)|0;g=Im(f,85281)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){r=Zu(g,f)|0;c[z+236>>2]=qw(r,f)|0;_I(r);r=z+260|0;b[r>>1]=b[r>>1]|2}else q=105;if((q|0)==105?(s=c[z+200>>2]|0,s|0):0)c[z+236>>2]=GL(s)|0;g=Im(f,85293)|0;if(g|0?a[g>>0]|0:0){s=Zu(g,f)|0;c[z+240>>2]=qw(s,f)|0;_I(s);s=z+260|0;b[s>>1]=b[s>>1]|4;break}g=c[z+204>>2]|0;if(g|0)c[z+240>>2]=GL(g)|0}while(0);_I(j);_I(i);do if(x&4259840|0?(u=c[(c[t>>2]|0)+8>>2]|0,u|0):0){if(!(c[z+208>>2]|0)){if((x&524288|0)==0|(c[z+228>>2]|0)==0)break}else if(!(x&524288))break;m=+h[(c[d+16>>2]|0)+152>>3]*.5;m=m>2.0?m:2.0;i=c[u+4>>2]|0;g=0;while(1){if((g|0)>=(i|0))break;_u(y,w,v,(c[u>>2]|0)+(g*48|0)|0,m);g=g+1|0}j=c[v>>2]|0;c[z+276>>2]=j;k=c[w>>2]|0;c[z+280>>2]=k;if(!(x&8192)){g=0;i=0;while(1){if((i|0)>=(j|0))break;g=(c[k+(i<<2)>>2]|0)+g|0;i=i+1|0}y=c[y>>2]|0;fD(d,y,y,g)|0;g=y}else g=c[y>>2]|0;c[z+284>>2]=g;c[z+264>>2]=2;c[z+272>>2]=g;c[z+268>>2]=c[k>>2]}while(0);uD(d,f);g=c[z+208>>2]|0;if(!((g|0)==0?!(b[z+260>>1]&1):0))wD(d,g,c[z+228>>2]|0,c[z+244>>2]|0,c[z+212>>2]|0);l=A;return}function Fu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0,S=0;P=l;l=l+240|0;L=P+224|0;K=P+208|0;x=P+128|0;w=P+112|0;O=P+64|0;C=P+48|0;D=P+32|0;E=P+16|0;F=P;G=P+192|0;H=P+176|0;y=P+160|0;B=P+144|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;M=+h[(c[b+16>>2]|0)+152>>3];ZE(Im(e,85048)|0);J=e+16|0;a:do if(c[(c[J>>2]|0)+8>>2]|0){N=+EA(e,c[42232]|0,1.0,0.0);k=FA(e,c[42220]|0,174181)|0;v=(f|0)!=0;b:do if(v){g=f;while(1){i=g;g=g+4|0;i=c[i>>2]|0;if(!i){o=0;break b}if((a[i>>0]|0)!=116)continue;if(!(xJ(i,95939)|0)){o=1;break}}}else o=0;while(0);j=k;q=0;i=0;c:while(1){switch(a[j>>0]|0){case 0:break c;case 58:{g=q+1|0;break}case 59:{g=q;i=i+1|0;break}default:g=q}j=j+1|0;q=g}n=(q|0)!=0;if((i|0)!=0&n)if(!(Nu(b,e,f,k,q+1|0,N,M)|0))break;else m=122106;else m=k;g=d[(c[J>>2]|0)+115>>0]|0;if(!(g&1))if(!(g&2))if(!(g&8))if(!(g&4)){i=m;j=GA(e,c[42221]|0,m)|0}else{j=91340;g=91332;k=168888;i=168888;p=18}else{j=91324;g=91316;k=168888;i=168888;p=18}else{j=91308;g=91300;k=168888;i=168888;p=18}else{j=91292;g=91284;k=168888;i=168888;p=18}if((p|0)==18){i=c[i>>2]|0;i=GA(e,i,Ou(m,g)|0)|0;g=GA(e,c[k>>2]|0,j)|0;if((i|0)==(m|0)){i=m;j=g}else{BD(b,i);j=g}}if((j|0)!=(m|0))DD(b,j);if(o<<24>>24){i=(a[i>>0]|0)==0?122106:i;g=(a[j>>0]|0)==0?122106:j;BD(b,122171);DD(b,i);u=O;r=c[c[(c[J>>2]|0)+8>>2]>>2]|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));J=dA(O,Pu(e)|0,M,0,0)|0;HD(b,c[J+8>>2]|0,c[J>>2]|0,1);Qu(J);BD(b,i);if((g|0)!=(i|0))DD(b,g);g=c[O+8>>2]|0;if(g|0){I=O+16|0;J=c[O>>2]|0;c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];St(b,2,K,L,N,M,g)}g=c[O+12>>2]|0;if(!g)break;J=O+32|0;O=(c[O>>2]|0)+((c[O+4>>2]|0)+-1<<4)|0;c[K>>2]=c[J>>2];c[K+4>>2]=c[J+4>>2];c[K+8>>2]=c[J+8>>2];c[K+12>>2]=c[J+12>>2];c[L>>2]=c[O>>2];c[L+4>>2]=c[O+4>>2];c[L+8>>2]=c[O+8>>2];c[L+12>>2]=c[O+12>>2];St(b,3,K,L,N,M,g);break}g=c[J>>2]|0;if(!n){do if(!(a[g+115>>0]&3)){if(a[i>>0]|0){BD(b,i);DD(b,j);break}BD(b,122106);if(!(a[j>>0]|0)){DD(b,122106);break}else{DD(b,j);break}}while(0);k=b+152|0;m=O+4|0;n=O+8|0;o=O+12|0;p=O+32|0;q=O+16|0;j=0;while(1){g=c[(c[J>>2]|0)+8>>2]|0;if((j|0)>=(c[g+4>>2]|0))break a;u=O;r=(c[g>>2]|0)+(j*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[O>>2]|0;i=c[m>>2]|0;do if(!(c[k>>2]&16384)){JD(b,g,i,0,0,0);g=c[n>>2]|0;if(g|0){I=c[O>>2]|0;c[K>>2]=c[q>>2];c[K+4>>2]=c[q+4>>2];c[K+8>>2]=c[q+8>>2];c[K+12>>2]=c[q+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];St(b,2,K,L,N,M,g)}g=c[o>>2]|0;if(g|0){I=(c[O>>2]|0)+((c[m>>2]|0)+-1<<4)|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];c[L>>2]=c[I>>2];c[L+4>>2]=c[I+4>>2];c[L+8>>2]=c[I+8>>2];c[L+12>>2]=c[I+12>>2];St(b,3,K,L,N,M,g)}if((c[(c[(c[J>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[n>>2]|0)){if(!(v&(c[o>>2]|0)!=0))break}else if(!v)break;FD(b,f)}}else JD(b,g,i,c[n>>2]|0,c[o>>2]|0,0);while(0);j=j+1|0}}I=c[(c[g+8>>2]|0)+4>>2]|0;A=I*48|0;z=ZI(A)|0;A=ZI(A)|0;t=+(q+2|0)*.5;v=O+4|0;p=C+8|0;q=D+8|0;e=E+8|0;f=F+8|0;o=0;while(1){if((o|0)>=(I|0))break;u=O;r=(c[c[(c[J>>2]|0)+8>>2]>>2]|0)+(o*48|0)|0;s=u+48|0;do{c[u>>2]=c[r>>2];u=u+4|0;r=r+4|0}while((u|0)<(s|0));g=c[v>>2]|0;c[z+(o*48|0)+4>>2]=g;c[A+(o*48|0)+4>>2]=g;n=g<<4;m=ZI(n)|0;c[z+(o*48|0)>>2]=m;n=ZI(n)|0;c[A+(o*48|0)>>2]=n;k=c[O>>2]|0;c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];k=0;while(1){if((k|0)>=(g+-1|0))break;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];g=k+1|0;j=(c[O>>2]|0)+(g<<4)|0;c[D>>2]=c[j>>2];c[D+4>>2]=c[j+4>>2];c[D+8>>2]=c[j+8>>2];c[D+12>>2]=c[j+12>>2];j=m+(k<<4)|0;if(!k){c[K>>2]=c[C>>2];c[K+4>>2]=c[C+4>>2];c[K+8>>2]=c[C+8>>2];c[K+12>>2]=c[C+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];Ru(G,K,L);c[j>>2]=c[G>>2];c[j+4>>2]=c[G+4>>2];c[j+8>>2]=c[G+8>>2];c[j+12>>2]=c[G+12>>2]}else{c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[D>>2];c[L+4>>2]=c[D+4>>2];c[L+8>>2]=c[D+8>>2];c[L+12>>2]=c[D+12>>2];Ru(H,K,L);c[j>>2]=c[H>>2];c[j+4>>2]=c[H+4>>2];c[j+8>>2]=c[H+8>>2];c[j+12>>2]=c[H+12>>2]}R=c[O>>2]|0;s=k+2|0;S=R+(s<<4)|0;c[E>>2]=c[S>>2];c[E+4>>2]=c[S+4>>2];c[E+8>>2]=c[S+8>>2];c[E+12>>2]=c[S+12>>2];u=k+3|0;R=R+(u<<4)|0;c[F>>2]=c[R>>2];c[F+4>>2]=c[R+4>>2];c[F+8>>2]=c[R+8>>2];c[F+12>>2]=c[R+12>>2];Q=m+(g<<4)|0;r=m+(s<<4)|0;c[w>>2]=c[C>>2];c[w+4>>2]=c[C+4>>2];c[w+8>>2]=c[C+8>>2];c[w+12>>2]=c[C+12>>2];c[x>>2]=c[D>>2];c[x+4>>2]=c[D+4>>2];c[x+8>>2]=c[D+8>>2];c[x+12>>2]=c[D+12>>2];c[K>>2]=c[S>>2];c[K+4>>2]=c[S+4>>2];c[K+8>>2]=c[S+8>>2];c[K+12>>2]=c[S+12>>2];c[L>>2]=c[R>>2];c[L+4>>2]=c[R+4>>2];c[L+8>>2]=c[R+8>>2];c[L+12>>2]=c[R+12>>2];Su(y,w,x,K,L);c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[Q>>2]=c[y>>2];c[Q+4>>2]=c[y+4>>2];c[Q+8>>2]=c[y+8>>2];c[Q+12>>2]=c[y+12>>2];h[n+(k<<4)>>3]=+h[C>>3]-+h[j>>3]*t;h[n+(k<<4)+8>>3]=+h[p>>3]-+h[m+(k<<4)+8>>3]*t;h[n+(g<<4)>>3]=+h[D>>3]-+h[Q>>3]*t;h[n+(g<<4)+8>>3]=+h[q>>3]-+h[m+(g<<4)+8>>3]*t;h[n+(s<<4)>>3]=+h[E>>3]-+h[r>>3]*t;h[n+(s<<4)+8>>3]=+h[e>>3]-+h[m+(s<<4)+8>>3]*t;k=u;g=c[v>>2]|0}S=m+(k<<4)|0;c[K>>2]=c[E>>2];c[K+4>>2]=c[E+4>>2];c[K+8>>2]=c[E+8>>2];c[K+12>>2]=c[E+12>>2];c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];Ru(B,K,L);c[S>>2]=c[B>>2];c[S+4>>2]=c[B+4>>2];c[S+8>>2]=c[B+8>>2];c[S+12>>2]=c[B+12>>2];h[n+(k<<4)>>3]=+h[F>>3]-+h[S>>3]*t;h[n+(k<<4)+8>>3]=+h[f>>3]-+h[m+(k<<4)+8>>3]*t;o=o+1|0}s=GL(i)|0;f=0;r=i;g=i;j=i;i=s;while(1){i=DL(i,93017)|0;if(!i)break;e=(a[i>>0]|0)==0?122106:i;if((e|0)!=(j|0))if(!(a[(c[J>>2]|0)+115>>0]&3)){BD(b,e);DD(b,e);j=e}else j=e;m=(f|0)==0;n=f>>>0<2;i=0;while(1){if((i|0)>=(I|0))break;o=c[A+(i*48|0)>>2]|0;p=c[z+(i*48|0)>>2]|0;q=c[A+(i*48|0)+4>>2]|0;k=0;while(1){if((k|0)>=(q|0))break;S=o+(k<<4)|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)>>3];S=o+(k<<4)+8|0;h[S>>3]=+h[S>>3]+ +h[p+(k<<4)+8>>3];k=k+1|0}JD(b,o,q,0,0,0);i=i+1|0}f=f+1|0;r=m?e:r;g=n?e:g;i=0}i=c[O+8>>2]|0;if(!i)i=0;else{if(g){if(!(a[(c[J>>2]|0)+115>>0]&3)){BD(b,g);DD(b,g)}}else g=0;R=O+16|0;S=c[O>>2]|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];St(b,2,K,L,N,M,i);i=g}j=O+12|0;g=c[j>>2]|0;if(g|0){if((i|0)!=(r|0)?(a[(c[J>>2]|0)+115>>0]&3)==0:0){BD(b,r);DD(b,r);g=c[j>>2]|0}R=O+32|0;S=(c[O>>2]|0)+((c[v>>2]|0)+-1<<4)|0;c[K>>2]=c[R>>2];c[K+4>>2]=c[R+4>>2];c[K+8>>2]=c[R+8>>2];c[K+12>>2]=c[R+12>>2];c[L>>2]=c[S>>2];c[L+4>>2]=c[S+4>>2];c[L+8>>2]=c[S+8>>2];c[L+12>>2]=c[S+12>>2];St(b,3,K,L,N,M,g)}_I(s);g=0;while(1){if((g|0)>=(I|0))break;_I(c[z+(g*48|0)>>2]|0);_I(c[A+(g*48|0)>>2]|0);g=g+1|0}_I(z);_I(A)}while(0);l=P;return}function Gu(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;x=l;l=l+64|0;r=x+48|0;u=x+32|0;t=x+16|0;s=x;w=c[a+16>>2]|0;v=c[w+8>>2]|0;q=w+208|0;if(!((c[q>>2]|0)==0?!(b[w+260>>1]&1):0))d=3;a:do if((d|0)==3?(xD(a),p=w+276|0,e=c[p>>2]|0,e|0):0){h=w+280|0;d=c[h>>2]|0;i=w+268|0;j=w+284|0;k=w+272|0;m=w+228|0;n=w+244|0;o=w+212|0;f=c[d>>2]|0;g=1;while(1){if((g|0)>=(e|0))break a;c[i>>2]=c[d+(g<<2)>>2];c[k>>2]=(c[j>>2]|0)+(f<<4);wD(a,c[q>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0);xD(a);y=c[h>>2]|0;f=(c[y+(g<<2)>>2]|0)+f|0;g=g+1|0;e=c[p>>2]|0;d=y}}while(0);c[w+268>>2]=0;c[w+272>>2]=0;q=v+16|0;d=c[q>>2]|0;e=c[d+8>>2]|0;if(!e)f=w+260|0;else{p=c[e>>2]|0;d=c[p>>2]|0;y=c[p+8>>2]|0;o=p+16|0;c[t>>2]=c[o>>2];c[t+4>>2]=c[o+4>>2];c[t+8>>2]=c[o+8>>2];c[t+12>>2]=c[o+12>>2];p=p+32|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2];if(!y){c[u>>2]=c[d>>2];c[u+4>>2]=c[d+4>>2];c[u+8>>2]=c[d+8>>2];c[u+12>>2]=c[d+12>>2]}else{c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2]}f=w+260|0;p=b[f>>1]|0;o=c[w+220>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];Hu(a,r,(p<<8&65535)<<16>>16>>15&255,o,(p<<14&65535)<<16>>16>>15&255);p=c[(c[q>>2]|0)+8>>2]|0;o=c[p>>2]|0;p=(c[p+4>>2]|0)+-1|0;d=c[o+(p*48|0)>>2]|0;e=c[o+(p*48|0)+4>>2]|0;y=c[o+(p*48|0)+12>>2]|0;n=o+(p*48|0)+16|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];t=o+(p*48|0)+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];if(!y){y=d+(e+-1<<4)|0;c[u>>2]=c[y>>2];c[u+4>>2]=c[y+4>>2];c[u+8>>2]=c[y+8>>2];c[u+12>>2]=c[y+12>>2]}else{c[u>>2]=c[s>>2];c[u+4>>2]=c[s+4>>2];c[u+8>>2]=c[s+8>>2];c[u+12>>2]=c[s+12>>2]}d=b[f>>1]|0;y=c[w+224>>2]|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];Hu(a,r,(d<<7&65535)<<16>>16>>15&255,y,(d<<13&65535)<<16>>16>>15&255);d=c[q>>2]|0}e=c[d+96>>2]|0;g=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;m=w+216|0;h=c[m>>2]|0;n=w+232|0;i=c[n>>2]|0;o=w+248|0;j=c[o>>2]|0;p=w+212|0;k=c[p>>2]|0;if(!((IA(FA(v,c[42230]|0,122100)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;Iu(a,e,11,g,h,i,j,k,d);j=c[(c[q>>2]|0)+108>>2]|0;k=(b[f>>1]<<12&65535)<<16>>16>>15<<16>>16;i=c[m>>2]|0;h=c[n>>2]|0;e=c[o>>2]|0;g=c[p>>2]|0;if(!((IA(FA(v,c[42230]|0,122100)|0)|0)<<24>>24))d=0;else d=c[(c[q>>2]|0)+8>>2]|0;Iu(a,j,11,k,i,h,e,g,d);Iu(a,c[(c[q>>2]|0)+100>>2]|0,7,(b[f>>1]<<13&65535)<<16>>16>>15<<16>>16,c[w+224>>2]|0,c[w+240>>2]|0,c[w+256>>2]|0,c[p>>2]|0,0);Iu(a,c[(c[q>>2]|0)+104>>2]|0,6,(b[f>>1]<<14&65535)<<16>>16>>15<<16>>16,c[w+220>>2]|0,c[w+236>>2]|0,c[w+252>>2]|0,c[p>>2]|0,0);vD(a);Wt(a);l=x;return}function Hu(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=c[a+16>>2]|0;if(!(e<<24>>24))f=c[i+208>>2]|0;if(!(g<<24>>24==0?((f|0)==0?(b[i+260>>1]&1)==0:0):0)){c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];Mu(a,h)}l=j;return}function Iu(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;o=r;q=c[b+152>>2]|0;if(d|0?a[d+81>>0]|0:0){if(!j)n=0;else{n=vw((rJ(j)|0)+11|0)|0;switch(e|0){case 11:{m=86240;break}case 7:{m=86656;break}case 6:{m=86666;break}default:ma(123205,84925,2730,85060)}c[o>>2]=j;c[o+4>>2]=m;pL(n,85076,o)|0}o=b+16|0;j=(c[o>>2]|0)+12|0;p=c[j>>2]|0;c[j>>2]=e;j=(f|0)!=0|(g|0)!=0;m=(q&4|0)==0;if(j&m){Ju(b,d);wD(b,g,h,i,n)}pw(b,e,d);if(k|0)Ku(b,d,k);if(j){if(!m){Ju(b,d);wD(b,g,h,i,n)}xD(b)}_I(n);c[(c[o>>2]|0)+12>>2]=p}l=r;return}function Ju(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;i=f>>>16^2;c[d+264>>2]=i;j=d+268|0;c[j>>2]=i+2;i=d+272|0;_I(c[i>>2]|0);d=vw(c[j>>2]<<4)|0;c[i>>2]=d;i=b+56|0;j=b+24|0;h[d>>3]=+h[i>>3]-+h[j>>3]*.5;g=b+64|0;b=b+32|0;h[d+8>>3]=+h[g>>3]-+h[b>>3]*.5;h[d+16>>3]=+h[j>>3]*.5+ +h[i>>3];h[d+24>>3]=+h[b>>3]*.5+ +h[g>>3];if(!(e&8192))fD(a,d,d,2)|0;if(!f)Zv(d)}return}function Ku(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+96|0;g=o+80|0;i=o+32|0;j=o+16|0;k=o;f=c[d>>2]|0;while(1){m=a[f>>0]|0;if(!(m<<24>>24))break;if(!(XJ(m&255)|0)){n=4;break}else f=f+1|0}if((n|0)==4){p=+h[d+24>>3];m=d+56|0;Lu(i,+h[m>>3]+p*.5,+h[d+64>>3]-+h[d+32>>3]*.5);n=i+16|0;Lu(j,+h[i>>3]-p,+h[i+8>>3]);c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];n=i+32|0;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];VA(k,e,g);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];FD(b,c[(c[b>>2]|0)+336>>2]|0);BD(b,c[d+8>>2]|0);KD(b,i,3)}l=o;return}function Lu(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;j=f>>>16^2;c[d+264>>2]=j;k=d+268|0;c[k>>2]=j+2;j=d+272|0;_I(c[j>>2]|0);d=vw(c[k>>2]<<4)|0;c[j>>2]=d;i=+h[b>>3];h[d>>3]=i+-3.0;g=+h[b+8>>3];h[d+8>>3]=g+-3.0;h[d+16>>3]=i+3.0;h[d+24>>3]=g+3.0;if(!(e&8192))fD(a,d,d,2)|0;if(!f)Zv(d)}return}function Nu(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;var j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=l;l=l+256|0;D=J+224|0;C=J+208|0;j=J+192|0;F=J+144|0;G=J+96|0;H=J+48|0;E=J;k=J+240|0;e=$t(e,f,k)|0;if((e|0)>1){z=b+48|0;A=ro(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;z=Dn(c[((c[b>>2]&3|0)==3?b:z)+40>>2]|0)|0;A=(qn(A)|0)!=0;B=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[j>>2]=z;c[j+4>>2]=A?85095:85100;c[j+8>>2]=B;_l(3,85105,j)|0;if((e|0)==2)e=1;else I=4}else if((e|0)==1)e=1;else I=4;if((I|0)==4){B=b+16|0;r=c[k>>2]|0;s=r+8|0;t=H+4|0;u=F+8|0;v=F+12|0;w=(d|0)!=0;q=(d|0)==0;x=F+32|0;y=F+4|0;z=F+16|0;A=E+4|0;e=0;p=0;while(1){f=c[(c[B>>2]|0)+8>>2]|0;if((p|0)>=(c[f+4>>2]|0))break;j=F;f=(c[f>>2]|0)+(p*48|0)|0;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));b=1;m=1.0;o=c[s>>2]|0;a:while(1){f=c[o>>2]|0;if(!f)break;k=o+4|0;n=+g[k>>2];do if(n<1.0e-05&n>-1.0e-05)f=b;else{BD(a,f);n=+g[k>>2];m=m-n;e=c[o>>2]|0;if(b|0){Xu(F,n,H,E);k=c[H>>2]|0;JD(a,k,c[t>>2]|0,0,0,0);_I(k);if(m<1.0e-05&m>-1.0e-05){I=11;break a}else{f=0;break}}if(m<1.0e-05&m>-1.0e-05){I=13;break a}j=G;f=E;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));n=+g[k>>2];Xu(G,n/(m+n),H,E);_I(c[G>>2]|0);f=c[H>>2]|0;JD(a,f,c[t>>2]|0,0,0,0);_I(f);f=0}while(0);b=f;o=o+12|0}if((I|0)==11){I=0;_I(c[E>>2]|0)}else if((I|0)==13){I=0;o=c[E>>2]|0;JD(a,o,c[A>>2]|0,0,0,0);_I(o)}if(c[u>>2]|0){BD(a,c[c[s>>2]>>2]|0);DD(a,c[c[s>>2]>>2]|0);k=c[F>>2]|0;o=c[u>>2]|0;c[C>>2]=c[z>>2];c[C+4>>2]=c[z+4>>2];c[C+8>>2]=c[z+8>>2];c[C+12>>2]=c[z+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];St(a,2,C,D,h,i,o)}if(c[v>>2]|0){BD(a,e);DD(a,e);k=(c[F>>2]|0)+((c[y>>2]|0)+-1<<4)|0;o=c[v>>2]|0;c[C>>2]=c[x>>2];c[C+4>>2]=c[x+4>>2];c[C+8>>2]=c[x+8>>2];c[C+12>>2]=c[x+12>>2];c[D>>2]=c[k>>2];c[D+4>>2]=c[k+4>>2];c[D+8>>2]=c[k+8>>2];c[D+12>>2]=c[k+12>>2];St(a,3,C,D,h,i,o)}do if((c[(c[(c[B>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[u>>2]|0)){if(!(w&(c[v>>2]|0)!=0))break}else if(q)break;FD(a,d)}while(0);p=p+1|0}au(r);e=0}l=J;return e|0}function Ou(b,d){b=b|0;d=d|0;var e=0,f=0;e=1;a:while(1){switch(a[b>>0]|0){case 0:break a;case 58:{e=e+1|0;break}default:{}}b=b+1|0}f=O((rJ(d)|0)+1|0,e)|0;b=f+10|0;if((c[42166]|0)<(f|0)){c[42166]=b;b=aJ(c[42167]|0,b)|0;c[42167]=b}else b=c[42167]|0;xK(b,d)|0;while(1){e=e+-1|0;b=c[42167]|0;if(!e)break;f=b+(rJ(b)|0)|0;a[f>>0]=58;a[f+1>>0]=0;IL(b,d)|0}return b|0}function Pu(b){b=b|0;var d=0,e=0;d=c[42228]|0;a:do if(!d)e=7;else{d=Jm(b,d)|0;switch(a[d>>0]|0){case 110:if(!(xJ(d,120501)|0)){d=1;break a}else{e=7;break a}case 102:if(!(xJ(d,85082)|0)){d=2;break a}else{e=7;break a}case 98:{if(!(xJ(d,85090)|0)){d=3;break a}if(!(xJ(d,96056)|0)){d=4;break a}else{e=7;break a}}default:{e=7;break a}}}while(0);if((e|0)==7){d=(qn(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0)!=0;d=d?2:1}return d|0}function Qu(a){a=a|0;if(a|0){_I(c[a+8>>2]|0);_I(a)}return}function Ru(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[b>>3]-+h[c>>3];f=+h[b+8>>3]-+h[c+8>>3];d=2.0/+C(+(e*e+.0001+f*f));h[a>>3]=d*f;h[a+8>>3]=-(e*d);return}function Su(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0;g=+h[c>>3]-+h[d>>3];i=+h[c+8>>3]-+h[d+8>>3];f=+C(+(i*i+g*g));if(f<.0001){j=+h[b>>3]-+h[e>>3];f=+h[b+8>>3]-+h[e+8>>3];i=f;g=j;f=+C(+(j*j+.0001+f*f))}j=2.0/f;h[a>>3]=i*j;h[a+8>>3]=-(j*g);return}function Tu(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(1.0-a/b))}function Uu(a,b,c){a=+a;b=+b;c=+c;return +(c*.5)}function Vu(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(a/b))}function Wu(a,b,c){a=+a;b=+b;c=+c;b=a/b;return +((!(b<=.5)?1.0-b:b)*c)}function Xu(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0;p=l;l=l+16|0;o=p;n=c[a+4>>2]|0;j=(n+-1|0)/3|0;if((n+-4|0)>>>0<3){c[d+4>>2]=4;c[d>>2]=vw(64)|0;c[e+4>>2]=4;n=vw(64)|0;c[e>>2]=n;PA(o,c[a>>2]|0,3,b,c[d>>2]|0,n)}else{n=vw(j<<3)|0;g=0;i=c[a>>2]|0;f=0.0;while(1){if((g|0)>=(j|0))break;q=+Yu(i);h[n+(g<<3)>>3]=q;g=g+1|0;i=i+48|0;f=q+f}b=f*b;m=0;f=0.0;while(1){if((j|0)<=(m|0))break;f=+h[n+(m<<3)>>3]+f;if(f>=b)break;m=m+1|0}k=m*3|0;g=k+4|0;i=d+4|0;c[i>>2]=g;c[d>>2]=vw(g<<4)|0;g=((j-m|0)*3|0)+1|0;j=e+4|0;c[j>>2]=g;c[e>>2]=vw(g<<4)|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;r=(c[d>>2]|0)+(g<<4)|0;s=(c[a>>2]|0)+(g<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}g=g+-4|0;i=0;while(1){if((i|0)>=(c[j>>2]|0))break;s=(c[e>>2]|0)+(i<<4)|0;r=(c[a>>2]|0)+(g<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];g=g+1|0;i=i+1|0}q=+h[n+(m<<3)>>3];PA(o,(c[a>>2]|0)+(k<<4)|0,3,(b-f+q)/q,(c[d>>2]|0)+(k<<4)|0,c[e>>2]|0);_I(n)}l=p;return}function Yu(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0;e=+h[a+16>>3];d=+h[a>>3]-e;f=+h[a+24>>3];b=+h[a+8>>3]-f;d=+C(+(b*b+d*d));b=+h[a+32>>3];e=e-b;c=+h[a+40>>3];f=f-c;d=+C(+(f*f+e*e))+d;b=b-+h[a+48>>3];c=c-+h[a+56>>3];return +(d+ +C(+(c*c+b*b)))}function Zu(b,d){b=b|0;d=d|0;d=so(d)|0;if((a[(c[d+16>>2]|0)+115>>0]|0)==1)d=yB(b)|0;else d=vB(b,d)|0;return ev(d)|0}function _u(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+1664|0;m=q+1600|0;n=q+800|0;o=q;p=ww(24)|0;c[p+16>>2]=1;j=((c[e+4>>2]|0)+-1|0)/3|0;h=0;i=p;while(1){if((h|0)>=(j|0))break;k=h*3|0;g=0;while(1){if((g|0)==4)break;r=m+(g<<4)|0;s=(c[e>>2]|0)+(g+k<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}h=h+1|0;i=$u(m,i)|0}g=0;h=0;i=p;while(1){if(!i){h=p;g=p;break}j=c[i+16>>2]|0;k=n+(g<<4)|0;e=o+(g<<4)|0;av(h,i,j,k,e,f);g=g+1|0;if(!((g|0)==50|(j|0)==0)){h=i;i=j;continue}bv(a,b,d,g,n,o);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];h=i;g=1;i=j}while(1){if(!h)break;s=c[h+16>>2]|0;_I(g);h=s;g=s}l=q;return}function $u(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+144|0;f=g+128|0;d=g+64|0;e=g;if(!(fu(a)|0)){PA(f,a,3,.5,d,e);d=$u(e,$u(d,b)|0)|0}else{d=b+16|0;if((c[d>>2]|0)==1){c[d>>2]=0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2]}d=a+48|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=dv(f,b)|0}l=g;return d|0}function av(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=l;l=l+96|0;n=r+80|0;m=r+64|0;k=r+48|0;o=r+32|0;p=r+16|0;q=r;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];do if(a){c[p>>2]=c[a>>2];c[p+4>>2]=c[a+4>>2];c[p+8>>2]=c[a+8>>2];c[p+12>>2]=c[a+12>>2];if(!d){i=+h[o>>3];h[q>>3]=i*2.0-+h[p>>3];j=+h[o+8>>3];h[q+8>>3]=j*2.0-+h[p+8>>3];break}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];j=+h[o+8>>3];break}}else{c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];i=+h[o>>3];h[p>>3]=i*2.0-+h[q>>3];j=+h[o+8>>3];h[p+8>>3]=j*2.0-+h[q+8>>3]}while(0);c[k>>2]=c[p>>2];c[k+4>>2]=c[p+4>>2];c[k+8>>2]=c[p+8>>2];c[k+12>>2]=c[p+12>>2];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[q>>2];c[n+4>>2]=c[q+4>>2];c[n+8>>2]=c[q+8>>2];c[n+12>>2]=c[q+12>>2];t=+cv(k,m,n);s=+E(+t)*g;g=+F(+t)*g;h[e>>3]=i+s;h[e+8>>3]=j+g;h[f>>3]=i-s;h[f+8>>3]=j-g;l=r;return}function bv(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;i=e<<1;j=c[d>>2]|0;h=0;k=0;while(1){if((h|0)>=(j|0))break;l=(c[(c[b>>2]|0)+(h<<2)>>2]|0)+k|0;h=h+1|0;k=l}l=j+1|0;c[d>>2]=l;l=yw(c[b>>2]|0,l<<2)|0;c[b>>2]=l;c[l+(h<<2)>>2]=i;c[a>>2]=yw(c[a>>2]|0,k+i<<4)|0;b=i+-1+k|0;h=0;while(1){if((h|0)>=(e|0))break;l=(c[a>>2]|0)+(h+k<<4)|0;j=f+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];l=(c[a>>2]|0)+(b-h<<4)|0;j=g+(h<<4)|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];h=h+1|0}return}function cv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;f=+h[b+8>>3];d=+h[b>>3];e=+K(+(+h[c+8>>3]-f),+(+h[c>>3]-d));d=+K(+(+h[a+8>>3]-f),+(+h[a>>3]-d));e=e-d;return +((e>0.0?e+-6.283185307179586:e)*.5+d)}function dv(a,b){a=a|0;b=b|0;var d=0;d=ww(24)|0;c[d+16>>2]=0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b+16>>2]=d;return d|0}function ev(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;c=b;f=b;a:while(1){e=0;while(1){d=c;c=c+1|0;d=a[d>>0]|0;if(!(d<<24>>24))break a;if(e<<24>>24){g=5;break}if(d<<24>>24!=92)break;else e=1}b:do if((g|0)==5){g=0;switch(d<<24>>24|0){case 114:{d=13;break b}case 108:case 110:{d=10;break b}default:break b}}while(0);a[f>>0]=d;f=f+1|0}a[f>>0]=0;return b|0}function fv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;while(1){g=a[e>>0]|0;if(!(g<<24>>24)){f=0;break}f=g<<24>>24;if(!(g<<24>>24==44|(XJ(f)|0)!=0)){h=5;break}e=e+1|0}a:do if((h|0)==5){switch(f|0){case 0:{f=0;break a}case 41:case 40:{e=e+1|0;break a}default:{}}h=d+4|0;i=d+8|0;while(1){if((gv(g<<24>>24)|0)<<24>>24){f=1;break a}f=c[h>>2]|0;if(f>>>0>=(c[i>>2]|0)>>>0){dm(d,1)|0;f=c[h>>2]|0}c[h>>2]=f+1;a[f>>0]=g;f=e+1|0;e=f;g=a[f>>0]|0}}while(0);c[b>>2]=e;return f|0}function gv(a){a=a|0;switch(a|0){case 0:case 44:case 41:case 40:{a=1;break}default:a=0}return a|0}function hv(a,b){a=a|0;b=b|0;return iv(c[a>>2]|0,c[a+160>>2]|0,c[a+156>>2]|0,b)|0}function iv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+160|0;k=o+20|0;m=o+16|0;n=o;c[k>>2]=0;c[m>>2]=0;cm(n,128,o+24|0);fm(n,f)|0;g=n+4|0;f=c[g>>2]|0;if(f>>>0>=(c[n+8>>2]|0)>>>0){dm(n,1)|0;f=c[g>>2]|0}a[f>>0]=0;h=c[n>>2]|0;c[g>>2]=h;i=b+300|0;j=b+296|0;f=0;g=h;a:while(1){if(f){f=1;break}f=FL(g,c[i>>2]|0,k)|0;if(!f){f=0;break}g=FL(f,c[j>>2]|0,m)|0;h=(g|0)!=0;if(h)f=FL(0,c[j>>2]|0,m)|0;else f=0;switch(((f|0)!=0&1)+(h&1)&3){case 2:{g=jv(b,g,0)|0;f=jv(b,f,e)|0;h=(g|0)>(f|0);f=(f&g|0)>-1&(((h?g:f)|0)>=(d|0)&((h?f:g)|0)<=(d|0));g=0;continue a}case 1:{f=(jv(b,g,d)|0)==(d|0);g=0;continue a}default:{f=0;g=0;continue a}}}gm(n);l=o;return f|0}function jv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=a[d>>0]|0;if(!(h<<24>>24==97?(xJ(d,85419)|0)==0:0))f=3;a:do if((f|0)==3){if((kv(d)|0)<<24>>24){e=rM(d)|0;break}g=c[b+308>>2]|0;if(!g)e=-1;else{b=c[b+312>>2]|0;e=1;while(1){if((e|0)>(b|0)){e=-1;break a}f=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[f>>0]|0)?(xJ(d,f)|0)==0:0)break a;e=e+1|0}}}while(0);return e|0}function kv(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=1;break}if(((c&255)+-48|0)>>>0<10)b=b+1|0;else{b=0;break}}return b|0}function lv(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function mv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a:do if((c[b+156>>2]|0)>=2?(f=FA(e,c[42211]|0,174181)|0,(hv(b,f)|0)<<24>>24==0):0)if(!(a[f>>0]|0))if(!(Um(d,e)|0))f=1;else{f=Um(d,e)|0;while(1){if(!f){f=0;break a}g=FA(f,c[42234]|0,174181)|0;if(!(a[g>>0]|0)){f=1;break a}if((hv(b,g)|0)<<24>>24){f=1;break a}f=Vm(d,f,e)|0}}else f=0;else f=1;while(0);return f|0}function nv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+64|0;e=d+32|0;f=d;a=(c[a+16>>2]|0)+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[f+28>>2]=c[a+28>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];b=(lv(f,e)|0)&255;l=d;return b|0}function ov(a,d){a=a|0;d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0.0,v=0.0;r=c[a+152>>2]|0;s=Vt(a)|0;c[s+4>>2]=2;c[s+8>>2]=d;c[s+12>>2]=8;if(r&16777216|0){if((e[(c[(ro(d)|0)+16>>2]|0)+178>>1]|0)>2){f=+h[(c[(c[d+16>>2]|0)+132>>2]|0)+16>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0)}else f=0.0;h[s+168>>3]=f}k=d+16|0;qv(a,c[(c[k>>2]|0)+104>>2]|0,d);do if(r&4259840|0){if((c[s+208>>2]|0)==0?(b[s+260>>1]&1)==0:0)break;p=By(d)|0;l=c[k>>2]|0;f=+h[l+16>>3];q=+h[l+24>>3];l=rv(d)|0;a:do if((p|2|0)==3){n=c[(c[k>>2]|0)+12>>2]|0;if(!((sv(n)|0)<<24>>24))g=0;else g=(c[n+4>>2]|l|0)!=0;if(!((r&524288|0)==0|((n|0)==0|g))){i=n+8|0;o=c[i>>2]|0;o=(o|0)<3?1:o;j=n+4|0;m=c[j>>2]|0;m=(m|0)>1?m:1;p=c[n+44>>2]|0;g=Im(d,87739)|0;if(!g)g=0;else g=rM(g)|0;g=(g+-4|0)>>>0>56?20:g;if(!(c[j>>2]|l)){c[s+264>>2]=0;i=vw(32)|0;g=c[k>>2]|0;v=+h[g+88>>3];h[i>>3]=f-v;u=+h[g+80>>3]*.5;h[i+8>>3]=q-u;h[i+16>>3]=v+f;h[i+24>>3]=u+q;g=2;break}i=c[i>>2]|0;if(((i|0)<3?+h[n+32>>3]==0.0:0)?+h[n+24>>3]==0.0:0){i=s+264|0;if(c[n>>2]|0){c[i>>2]=1;i=vw(32)|0;h[i>>3]=f;h[i+8>>3]=q;g=(m<<1)+-1|0;h[i+16>>3]=+h[p+(g<<4)>>3]+f;h[i+24>>3]=+h[p+(g<<4)+8>>3]+q;g=2;break}c[i>>2]=2;i=(m<<1)+-1|0;i=tv(+h[p+(i<<4)>>3],+h[p+(i<<4)+8>>3],g)|0;j=0;while(1){if((j|0)>=(g|0))break a;p=i+(j<<4)|0;h[p>>3]=+h[p>>3]+f;p=i+(j<<4)+8|0;h[p>>3]=+h[p>>3]+q;j=j+1|0}}m=O(i,m+-1|0)|0;c[s+264>>2]=2;if((i|0)<(g|0)){i=vw(o<<4)|0;g=0;while(1){if((g|0)>=(o|0)){g=o;break a}n=g+m|0;h[i+(g<<4)>>3]=+h[p+(n<<4)>>3]+f;h[i+(g<<4)+8>>3]=+h[p+(n<<4)+8>>3]+q;g=g+1|0}}else{l=(i|0)/(g|0)|0;i=vw(g<<4)|0;j=0;k=0;while(1){if((j|0)>=(g|0))break a;o=k+m|0;h[i+(j<<4)>>3]=+h[p+(o<<4)>>3]+f;h[i+(j<<4)+8>>3]=+h[p+(o<<4)+8>>3]+q;j=j+1|0;k=k+l|0}}}else t=31}else t=31;while(0);if((t|0)==31){c[s+264>>2]=0;i=vw(32)|0;g=c[k>>2]|0;h[i>>3]=f-+h[g+88>>3];v=+h[g+80>>3]*.5;h[i+8>>3]=q-v;h[i+16>>3]=+h[g+96>>3]+f;h[i+24>>3]=v+q;g=2}if(!(r&8192))fD(a,i,i,g)|0;c[s+272>>2]=i;c[s+268>>2]=g}while(0);ZE(Im(d,85048)|0);sD(a,d);return}function pv(a){a=a|0;tD(a);Wt(a);return}function qv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m;f=Im(e,96264)|0;i=Im(e,96229)|0;k=Im(e,85204)|0;cm(j,128,m+16|0);if(!d)h=0;else h=c[d>>2]|0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))f=Im(e,96269)|0;g=Yt(b,e,j)|0;if(!i)d=0;else d=Zu(i,e)|0;Xt(b,h,f,d,k,g,e)|0;_I(d);gm(j);l=m;return}function rv(b){b=b|0;var d=0,e=0;b=GA(b,c[42201]|0,174181)|0;a:do if(!(a[b>>0]|0))b=0;else{Du(b)|0;b=0;d=168408;while(1){e=c[d>>2]|0;if(!e)break a;e=(xJ(e,95923)|0)==0;b=e?1:b;d=d+4|0}}while(0);return b|0}function sv(a){a=a|0;var b=0.0;if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function tv(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0,f=0.0,g=0;f=6.283185307179586/+(c|0);g=vw(c<<4)|0;d=0.0;e=0;while(1){if((e|0)>=(c|0))break;h[g+(e<<4)>>3]=+E(+d)*a;h[g+(e<<4)+8>>3]=+F(+d)*b;d=d+f;e=e+1|0}return g|0}function uv(b,d){b=b|0;d=d|0;var e=0;a:do if((c[b+156>>2]|0)>=2?(e=FA(d,ym(d,0,86583,0)|0,174181)|0,(hv(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=co(d)|0;while(1){if(!e){e=0;break a}if((mv(b,d,e)|0)<<24>>24){e=1;break a}e=eo(d,e)|0}}else e=0;else e=1;while(0);return e|0}function vv(a,b){a=a|0;b=b|0;var d=0;d=Vt(a)|0;c[d+4>>2]=1;c[d+8>>2]=b;c[d+12>>2]=1;qv(a,c[(c[b+16>>2]|0)+12>>2]|0,b);mD(a,b);return}function wv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;b=Im(b,86479)|0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){Du(b)|0;e=168408;b=0;while(1){while(1){f=c[e>>2]|0;if(!f){e=168408;break a}if(!(xJ(f,95923)|0)){g=10;break}if(!(xJ(f,91378)|0)){f=e;g=12;break}if(!(xJ(f,91385)|0)){f=e;g=14;break}if(!(xJ(f,91360)|0)){f=e;g=16;break}e=e+4|0}if((g|0)==10){e=e+4|0;b=b|1;continue}else if((g|0)==12){while(1){h=f;f=f+4|0;g=c[f>>2]|0;c[h>>2]=g;if(!g)break;else g=12}b=b|3;continue}else if((g|0)==14){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=14}b=b|64;continue}else if((g|0)==16){while(1){g=f;f=f+4|0;h=c[f>>2]|0;c[g>>2]=h;if(!h)break;else g=16}b=b|4;continue}}}else{e=0;b=0}while(0);c[d>>2]=b;return e|0}function xv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;i=k;j=k+4|0;c[j>>2]=0;m=($t(b,0,j)|0)==0;j=c[j>>2]|0;if((m?(f=c[j>>2]|0,(f|0)>=2):0)?(h=j+8|0,(c[c[h>>2]>>2]|0)!=0):0){if((f|0)>2)_l(0,85446,i)|0;m=ww((rJ(b)|0)+1|0)|0;c[d>>2]=m;xK(m,c[c[h>>2]>>2]|0)|0;if(!(c[(c[h>>2]|0)+12>>2]|0))c[d+4>>2]=0;else{m=c[d>>2]|0;m=m+((rJ(m)|0)+1)|0;c[d+4>>2]=m;xK(m,c[(c[h>>2]|0)+12>>2]|0)|0}b=c[h>>2]|0;do if(!(a[b+8>>0]|0))if(!(a[b+20>>0]|0)){g[e>>2]=0.0;break}else{g[e>>2]=1.0-+g[b+16>>2];break}else c[e>>2]=c[b+4>>2];while(0);au(j);b=1}else{c[d>>2]=0;au(j);b=0}l=k;return b|0}function yv(a,b){a=a|0;b=b|0;nD(a,b);Wt(a);return}function zv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=l;l=l+96|0;p=x+48|0;s=x+16|0;w=x+8|0;v=x;t=x+80|0;c[t>>2]=1e3;f=ww(16e3)|0;u=a+256|0;e=1;j=1;i=0;q=0;r=c[b+8>>2]|0;while(1){if((q|0)>=(c[b>>2]|0))break;d=c[r>>2]|0;a:do switch(d|0){case 1:case 0:{n=r+80|0;c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];c[s+16>>2]=c[n+16>>2];c[s+20>>2]=c[n+20>>2];c[s+24>>2]=c[n+24>>2];c[s+28>>2]=c[n+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{z=r+8|0;A=r+24|0;h[f>>3]=+h[z>>3]-+h[A>>3];n=r+16|0;y=r+32|0;h[f+8>>3]=+h[n>>3]-+h[y>>3];h[f+16>>3]=+h[A>>3]+ +h[z>>3];h[f+24>>3]=+h[y>>3]+ +h[n>>3];GD(a,f,2,(d|0)==0?j:0);d=j}break}case 3:case 2:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{d=r+8|0;f=Av(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;HD(a,f,c[d>>2]|0,(c[r>>2]|0)==2?j:0);d=j}break}case 5:case 4:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{d=r+8|0;f=Av(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;JD(a,f,c[d>>2]|0,0,0,(c[r>>2]|0)==4?j&255:0);d=j}break}case 6:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{d=r+8|0;f=Av(f,t,c[d+4>>2]|0,c[d>>2]|0)|0;KD(a,f,c[d>>2]|0);d=j}break}case 7:{A=r+80|0;c[s>>2]=c[A>>2];c[s+4>>2]=c[A+4>>2];c[s+8>>2]=c[A+8>>2];c[s+12>>2]=c[A+12>>2];c[s+16>>2]=c[A+16>>2];c[s+20>>2]=c[A+20>>2];c[s+24>>2]=c[A+24>>2];c[s+28>>2]=c[A+28>>2];c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[u+16>>2];c[p+20>>2]=c[u+20>>2];c[p+24>>2]=c[u+24>>2];c[p+28>>2]=c[u+28>>2];if(!(lv(s,p)|0))d=j;else{h[f>>3]=+h[r+8>>3];h[f+8>>3]=+h[r+16>>3];d=c[r+112>>2]|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];AD(a,p,d);d=j}break}case 8:{DD(a,c[r+8>>2]|0);d=1;break}case 9:{BD(a,c[r+8>>2]|0);d=1;break}case 13:{if((c[r+8>>2]|0)!=2){d=r+16|0;z=c[d+36>>2]|0;A=c[z+12>>2]|0;o=+g[z+8>>2];d=~~(+K(+(+h[r+40>>3]-+h[r+24>>3]),+(+h[r+32>>3]-+h[d>>3]))*57.29577951308232);DD(a,c[z+4>>2]|0);ED(a,A,d,o);d=2;break a}A=c[r+68>>2]|0;j=c[A+4>>2]|0;n=c[A+12>>2]|0;o=+g[A+8>>2];k=+h[r+40>>3];m=+h[r+16>>3];if(k==m?+h[r+48>>3]==+h[r+24>>3]:0)d=0;else d=~~(+H(+((m-k)/+h[r+32>>3]))*57.29577951308232);DD(a,j);ED(a,n,d,o);d=3;break}case 14:{_l(0,85512,v)|0;d=j;break}case 12:{if(!e){e=0;d=j}else{_l(0,85552,w)|0;e=0;d=j}break}case 11:{Du(c[r+8>>2]|0)|0;FD(a,168408);i=168408;d=j;break}default:d=j}while(0);j=d;q=q+1|0;r=r+120|0}if(i|0)FD(a,c[(c[a>>2]|0)+336>>2]|0);_I(f);l=x;return}function Av(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;f=g<<1;f=(f|0)>(e|0)?f:e;if((g|0)<(e|0)){a=yw(a,f<<4)|0;c[b>>2]=f}b=0;while(1){if((b|0)>=(e|0))break;h[a+(b<<4)>>3]=+h[d+(b*24|0)>>3];h[a+(b<<4)+8>>3]=+h[d+(b*24|0)+8>>3];b=b+1|0}return a|0}function Bv(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=c[b+4>>2];c[a+4>>2]=d;return}function Cv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+16|0;f=1;while(1){d=c[g>>2]|0;if((f|0)>(c[d+180>>2]|0))break;e=c[(c[d+184>>2]|0)+(f<<2)>>2]|0;Cv(b,e);d=Im(e,122540)|0;if(d|0?a[d>>0]|0:0)BD(b,d);d=Im(e,122531)|0;if(d|0?a[d>>0]|0:0)BD(b,d);d=Im(e,85423)|0;if(d|0?a[d>>0]|0:0)BD(b,d);d=Im(e,86469)|0;if(d|0?a[d>>0]|0:0)DD(b,d);d=Im(e,86503)|0;if(d|0?a[d>>0]|0:0)BD(b,d);f=f+1|0}return}function Dv(a){a=a|0;var b=0,d=0,e=0;b=c[42172]|0;if(!b){b=Ql(19684,c[4345]|0)|0;c[42172]=b}if(!(bb[c[b>>2]&31](b,a,4)|0)){d=c[42172]|0;e=c[d>>2]|0;b=GL(a)|0;bb[e&31](d,b,1)|0;b=1}else b=0;return b|0}function Ev(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function Fv(a){a=a|0;var b=0;b=c[42173]|0;if(!a){if((b|0)>0?(b=b+-1|0,c[42173]=b,(b|0)==0):0){bL(1,c[42174]|0)|0;_I(c[42174]|0)}}else{c[42173]=b+1;if(!b){c[42174]=GL(bL(1,0)|0)|0;bL(1,134865)|0}}return}function Gv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+96|0;r=u+72|0;q=u+56|0;p=u+48|0;t=u+32|0;s=u+24|0;e=u+8|0;d=u;if(0)xA();do if((No(b,122277,0,1)|0)!=0?(o=b+16|0,(c[(c[o>>2]|0)+8>>2]|0)!=0):0){Hv(b);Iv(a,b);Jv(a,b);Fv(1);j=a+56|0;k=a+184|0;m=a+192|0;n=a+28|0;i=Cr(a)|0;a:while(1){if(!i){g=33;break}d=c[j>>2]|0;if(!d){c[i+20>>2]=0;d=0}else{c[i+20>>2]=c[d+8>>2];d=c[d+12>>2]|0}c[i+24>>2]=d;c[i+12>>2]=a;c[i+28>>2]=c[k>>2];c[i+620>>2]=24748;c[i+624>>2]=14;if(!(c[(c[o>>2]|0)+8>>2]|0)){g=13;break}e=i+52|0;g=bD(i,c[e>>2]|0)|0;c[i+56>>2]=g;switch(g|0){case 999:{g=16;break a}case 21:{d=1;break}case 24:{d=520;break}default:d=Kv(b)|0}f=i+152|0;c[f>>2]=c[f>>2]|d;d=c[m>>2]|0;do if(!d)g=24;else{if(c[d+152>>2]&32|0?(xJ(c[e>>2]|0,c[d+52>>2]|0)|0)==0:0){d=c[42175]|0;if(!d){g=27;break}c[d+8>>2]=i;c[i+36>>2]=c[d+36>>2];g=29;break}dD(d);c[m>>2]=0;c[n>>2]=0;g=24}while(0);if((g|0)==24){c[42175]=0;g=27}if((g|0)==27?(g=0,(cD(i)|0)==0):0){c[m>>2]=i;g=29}if((g|0)==29){c[i+8>>2]=0;c[i+104>>2]=24860;Lv(i);Mv(i);Nv(i,b);Ov(i,b);Pv(i,b);if(!(c[f>>2]&128))gu(i,b);c[42175]=i}i=Dr(a)|0}if((g|0)==13){_l(1,85710,s)|0;Fv(0);if(!0){d=-1;break}d=c[13918]|0;s=Dn(b)|0;v=+yA();c[t>>2]=s;h[t+8>>3]=v;zL(d,85681,t)|0;d=-1;break}else if((g|0)==16){c[p>>2]=c[e>>2];_l(1,85731,p)|0;Fv(0);if(!0){d=-1;break}d=c[13918]|0;t=Dn(b)|0;v=+yA();c[q>>2]=t;h[q+8>>3]=v;zL(d,85681,q)|0;d=-1;break}else if((g|0)==33){Fv(0);if(!0){d=0;break}d=c[13918]|0;t=Dn(b)|0;v=+yA();c[r>>2]=t;h[r+8>>3]=v;zL(d,85681,r)|0;d=0;break}}else g=5;while(0);if((g|0)==5){_l(1,85633,d)|0;if(!0)d=-1;else{d=c[13918]|0;t=Dn(b)|0;v=+yA();c[e>>2]=t;h[e+8>>3]=v;zL(d,85681,e)|0;d=-1}}l=u;return d|0}function Hv(a){a=a|0;var b=0;b=co(a)|0;while(1){if(!b)break;Uv(a,b);b=eo(a,b)|0}return}function Iv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+32|0;k=o+24|0;f=o+16|0;j=o+8|0;n=o;c[b+168>>2]=d;g=b+293|0;a[g>>0]=0;e=Im(d,90530)|0;if(e|0?(c[f>>2]=j,c[f+4>>2]=n,i=cM(e,90537,f)|0,(i|0)>0):0){p=+h[j>>3]*72.0;e=b+208|0;h[e>>3]=p;h[b+200>>3]=p;if((i|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[g>>0]=1}f=b+292|0;a[f>>0]=0;e=Im(d,86133)|0;if(e|0?(c[k>>2]=j,c[k+4>>2]=n,m=cM(e,90537,k)|0,(m|0)>0):0){p=+h[j>>3]*72.0;e=b+224|0;h[e>>3]=p;h[b+216>>3]=p;if((m|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[f>>0]=1}e=b+294|0;a[e>>0]=0;f=b+232|0;g=d+16|0;n=(c[(c[g>>2]|0)+8>>2]|0)+48|0;c[f>>2]=c[n>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];f=c[(c[g>>2]|0)+8>>2]|0;if(+h[f+48>>3]>.001?+h[f+56>>3]>.001:0)a[e>>0]=1;c[b+288>>2]=a[f+81>>0]|0?90:0;e=b+196|0;c[e>>2]=86137;f=Im(d,86140)|0;if(f|0?a[f>>0]|0:0)c[e>>2]=f;n=b+256|0;m=(c[g>>2]|0)+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];c[42185]=ym(d,0,86535,0)|0;c[42186]=ym(d,0,86520,0)|0;c[b+320>>2]=GA(0,c[42195]|0,93027)|0;h[b+328>>3]=+EA(0,c[42194]|0,14.0,1.0);c[b+336>>2]=19720;c[b+188>>2]=Dn(d)|0;l=o;return}function Jv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+304|0;f=c[e>>2]|0;if(f|0){_I(f);c[e>>2]=0}f=b+308|0;e=c[f>>2]|0;if(e|0){_I(e);c[f>>2]=0}g=b+316|0;e=c[g>>2]|0;if(e|0){_I(e);c[g>>2]=0}e=Im(d,85884)|0;if(e){c[b+312>>2]=Sv(b,d,e)|0;e=Im(d,85891)|0;if(e|0?a[e>>0]|0:0)c[g>>2]=Tv(b,e)|0}else{c[f>>2]=0;c[b+312>>2]=1}return}function Kv(b){b=b|0;b=Im(b,85852)|0;a:do if(!b)b=0;else switch(a[b>>0]|0){case 110:{if(!(xJ(b+1|0,85864)|0))b=1;else{b=0;break a}break}case 101:{if(!(xJ(b+1|0,85874)|0))b=16;else{b=0;break a}break}default:{b=0;break a}}while(0);return b|0}function Lv(b){b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(!(a[e+292>>0]|0)){if((c[b+56>>2]|0)==300)d=+h[(c[b+68>>2]|0)+8>>3];else d=4.0;h[b+248>>3]=d;h[b+240>>3]=d}else{b=b+240|0;e=e+216|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}return}function Mv(b){b=b|0;var d=0;d=c[b>>2]|0;a:do if(!(a[d+293>>0]|0))switch(c[b+56>>2]|0){case 300:{d=b+416|0;b=(c[b+84>>2]|0)+8|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break a}case 30:case 21:case 22:case 4:case 3:case 2:{h[b+424>>3]=36.0;h[b+416>>3]=36.0;break a}default:{d=b+416|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;break a}}else{b=b+416|0;d=d+200|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2]}while(0);return}function Nv(b,d){b=b|0;d=d|0;var e=0.0,f=0;f=c[(c[b>>2]|0)+192>>2]|0;e=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];do if(!(e!=0.0)){if(f|0?a[f+128>>0]|0:0){b=b+432|0;f=f+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];break}d=b+432|0;if((c[b+56>>2]|0)==300){b=(c[b+84>>2]|0)+40|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];break}else{h[b+440>>3]=96.0;h[d>>3]=96.0;break}}else{h[b+440>>3]=e;h[b+432>>3]=e}while(0);return}function Ov(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;t=A+80|0;u=A+56|0;s=A+40|0;v=A+32|0;w=A+24|0;x=A+16|0;y=A+8|0;z=A;m=c[b>>2]|0;o=+h[m+272>>3];q=+h[m+280>>3];p=+h[m+256>>3];r=+h[m+264>>3];f=+h[b+240>>3];e=p-f;h[b+208>>3]=e;i=+h[b+248>>3];j=r-i;h[b+216>>3]=j;f=f+o;h[b+224>>3]=f;i=i+q;h[b+232>>3]=i;e=f-e;j=i-j;h[x>>3]=1.0;g=c[(c[d+16>>2]|0)+8>>2]|0;i=+h[g+64>>3];do if(i>.001?(k=+h[g+72>>3],k>.001):0){e=e==0.0?i:e;f=j==0.0?k:j;if(!(i<e|k<f)?!(k>f&(i>e&(a[g+80>>0]|0)!=0)):0){k=e;j=f;i=1.0;break}n=i/e<k/f;i=(n?i:k)/(n?e:f);h[x>>3]=i;k=e;j=f}else{k=e;i=1.0}while(0);f=(p+o)*.5;h[y>>3]=f;e=(r+q)*.5;h[z>>3]=e;c[b+360>>2]=c[m+288>>2];k=i*k;h[v>>3]=k;j=i*j;h[w>>3]=j;g=Im(d,85783)|0;if(g){m=ZI((rJ(g)|0)+1|0)|0;n=ZI((rJ(g)|0)+1|0)|0;c[s>>2]=v;c[s+4>>2]=w;c[s+8>>2]=x;c[s+12>>2]=m;do if((cM(g,85792,s)|0)==4){g=no(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}else{c[u>>2]=v;c[u+4>>2]=w;c[u+8>>2]=x;c[u+12>>2]=m;c[u+16>>2]=n;if((cM(g,85812,u)|0)!=4){c[t>>2]=v;c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=y;c[t+16>>2]=z;cM(g,85832,t)|0;break}g=no(c[d+60>>2]|0,m,0)|0;if(g|0){u=c[g+16>>2]|0;h[y>>3]=+h[u+16>>3];h[z>>3]=+h[u+24>>3]}}while(0);_I(m);_I(n);k=+h[v>>3];j=+h[w>>3];i=+h[x>>3];f=+h[y>>3];e=+h[z>>3]}h[b+368>>3]=k;h[b+376>>3]=j;h[b+352>>3]=i;h[b+336>>3]=f;h[b+344>>3]=e;l=A;return}function Pv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,P=0.0,Q=0.0;M=l;l=l+224|0;J=M+200|0;z=M+168|0;E=M+144|0;I=M+120|0;F=M+96|0;G=M+64|0;e=M+184|0;v=M+176|0;w=M+160|0;y=M+136|0;x=M+112|0;A=M+80|0;B=M+48|0;C=M+32|0;D=M+16|0;K=M+8|0;L=M;u=c[b>>2]|0;c[G>>2]=0;c[G+4>>2]=0;c[G+8>>2]=0;c[G+12>>2]=0;H=b+368|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=b+360|0;if(c[H>>2]|0){c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];Qv(e,J);c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2]}t=b+416|0;c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];if((a[u+294>>0]|0)!=0?(c[b+152>>2]&32|0)!=0:0){i=+h[u+232>>3]-+h[F>>3]*2.0;h[E>>3]=i;k=+h[u+240>>3]-+h[F+8>>3]*2.0;p=E+8|0;h[p>>3]=k;if(!(i<.0001)){o=+h[I>>3];e=~~(o/i);f=b+164|0;c[f>>2]=e;if(o-i*+(e|0)>.0001){e=e+1|0;c[f>>2]=e}}else{c[b+164>>2]=1;e=1}if(!(k<.0001)){g=+h[I+8>>3];f=~~(g/k);j=b+168|0;c[j>>2]=f;if(g-k*+(f|0)>.0001){f=f+1|0;c[j>>2]=f}}else{c[b+168>>2]=1;f=1;g=+h[I+8>>3]}c[b+204>>2]=O(f,e)|0;o=+h[(+h[I>>3]<i?I:E)>>3];h[I>>3]=o;e=p;f=I;m=+h[(g<k?I:E)+8>>3];g=o;j=21}else{if(c[b+68>>2]|0){e=c[b+84>>2]|0;i=+h[e+24>>3]-+h[F>>3]*2.0;i=i<0.0?0.0:i;h[E>>3]=i;o=+h[e+32>>3]-+h[F+8>>3]*2.0;e=E+8|0;h[e>>3]=o;if(o<0.0){f=E;j=17}else e=E}else{h[E+8>>3]=0.0;f=E;e=E;j=17}if((j|0)==17){h[e>>3]=0.0;e=f;i=+h[f>>3]}c[b+204>>2]=1;c[b+168>>2]=1;c[b+164>>2]=1;g=+h[I>>3];if(i<g){h[e>>3]=g;i=g}e=E+8|0;k=+h[e>>3];m=+h[I+8>>3];if(k<m){f=E;j=21}else{r=e;m=k}}if((j|0)==21){h[f+8>>3]=m;r=e;m=+h[e>>3]}n=+h[F>>3];s=b+432|0;k=+h[s>>3]*.013888888888888888*(n*2.0+i);c[b+448>>2]=~~(k+(k>=0.0?.5:-.5));q=F+8|0;k=+h[q>>3];t=b+440|0;o=+h[t>>3]*.013888888888888888*(k*2.0+m);c[b+452>>2]=~~(o+(o>=0.0?.5:-.5));j=b+188|0;p=b+180|0;e=b+172|0;f=u+196|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;Rv(v,b,a[c[f>>2]>>0]|0);u=v;v=c[u+4>>2]|0;e=p;c[e>>2]=c[u>>2];c[e+4>>2]=v;Rv(w,b,a[(c[f>>2]|0)+1>>0]|0);e=w;w=c[e>>2]|0;e=c[e+4>>2]|0;v=j;c[v>>2]=w;c[v+4>>2]=e;w=(c[p>>2]|0)+w|0;if(!((((w|0)>-1?w:0-w|0)|0)==1?(w=(c[b+184>>2]|0)+e|0,(((w|0)>-1?w:0-w|0)|0)==1):0)){Rv(y,b,66);v=y;y=c[v+4>>2]|0;w=p;c[w>>2]=c[v>>2];c[w+4>>2]=y;Rv(x,b,76);w=x;x=c[w+4>>2]|0;y=j;c[y>>2]=c[w>>2];c[y+4>>2]=x;c[z>>2]=c[f>>2];_l(0,85763,z)|0}if(a[(c[(c[d+16>>2]|0)+8>>2]|0)+82>>0]|0){if(i>g){m=(i-g)*.5;h[G>>3]=m}else m=0.0;i=+h[r>>3];o=+h[I+8>>3];if(i>o){i=(i-o)*.5;h[G+8>>3]=i}else i=0.0}else{i=0.0;m=0.0}if(!(c[H>>2]|0))j=1;else{c[J>>2]=c[I>>2];c[J+4>>2]=c[I+4>>2];c[J+8>>2]=c[I+8>>2];c[J+12>>2]=c[I+12>>2];Qv(A,J);c[I>>2]=c[A>>2];c[I+4>>2]=c[A+4>>2];c[I+8>>2]=c[A+8>>2];c[I+12>>2]=c[A+12>>2];c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];Qv(B,J);c[E>>2]=c[B>>2];c[E+4>>2]=c[B+4>>2];c[E+8>>2]=c[B+8>>2];c[E+12>>2]=c[B+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];Qv(C,J);c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];Qv(D,J);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];n=+h[F>>3];m=+h[G>>3];k=+h[q>>3];i=+h[G+8>>3];g=+h[I>>3];j=(c[H>>2]|0)==0}o=m+n;h[b+384>>3]=o;P=i+k;h[b+392>>3]=P;N=m+n+g;h[b+400>>3]=N;Q=+h[I+8>>3];n=i+k+Q;h[b+408>>3]=n;m=+h[b+352>>3];h[b+320>>3]=g/m;h[b+328>>3]=Q/m;m=+h[s>>3];o=o*.013888888888888888*m;f=b+456|0;c[f>>2]=~~(o+(o>=0.0?.5:-.5));o=+h[t>>3];k=P*.013888888888888888*o;c[b+460>>2]=~~(k+(k>=0.0?.5:-.5));m=N*.013888888888888888*m;e=b+464|0;c[e>>2]=~~(m+(m>=0.0?.5:-.5));o=n*.013888888888888888*o;c[b+468>>2]=~~(o+(o>=0.0?.5:-.5));if(!j){c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];Bv(K,J);I=K;K=c[I+4>>2]|0;b=f;c[b>>2]=c[I>>2];c[b+4>>2]=K;c[J>>2]=c[e>>2];c[J+4>>2]=c[e+4>>2];Bv(L,J);b=L;K=c[b+4>>2]|0;L=e;c[L>>2]=c[b>>2];c[L+4>>2]=K}l=M;return}function Qv(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b>>3];h[a>>3]=+h[b+8>>3];h[a+8>>3]=c;return}function Rv(a,b,d){a=a|0;b=b|0;d=d|0;d=(d<<24>>24)+-66|0;switch(d>>>1|d<<31|0){case 9:{c[b+176>>2]=(c[b+168>>2]|0)+-1;b=0;d=-1;break}case 0:{b=0;d=1;break}case 5:{b=1;d=0;break}case 8:{c[b+172>>2]=(c[b+164>>2]|0)+-1;b=-1;d=0;break}default:{b=0;d=0}}c[a>>2]=b;c[a+4>>2]=d;return}function Sv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;f=Im(d,86004)|0;i=b+296|0;c[i>>2]=(f|0)==0?86013:f;d=Im(d,86017)|0;f=b+300|0;d=(d|0)==0?86030:d;c[f>>2]=d;d=JL(c[i>>2]|0,d)|0;if(d|0){c[g>>2]=a[d>>0];_l(0,86032,g)|0;c[f>>2]=174181}d=GL(e)|0;c[b+304>>2]=d;h=b+308|0;f=0;b=0;while(1){e=DL(d,c[i>>2]|0)|0;if(!e)break;g=b+1|0;if((b|0)<(f|0))d=c[h>>2]|0;else{f=f+128|0;d=c[h>>2]|0;if(!d)d=ww(f<<2)|0;else d=yw(d,f<<2)|0;c[h>>2]=d}c[d+(g<<2)>>2]=e;b=g;d=0}if(b|0){i=yw(c[h>>2]|0,(b<<2)+8|0)|0;c[h>>2]=i;c[i>>2]=0;c[(c[h>>2]|0)+(b+1<<2)>>2]=0}l=j;return b|0}function Tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k;i=a+312|0;d=ww((c[i>>2]<<2)+8|0)|0;e=0;h=1;while(1){g=c[i>>2]|0;if((h|0)>(g|0))break;f=e+1|0;if((iv(a,h,g,b)|0)<<24>>24){c[d+(f<<2)>>2]=h;e=f}h=h+1|0}if(!e){c[j>>2]=b;_l(0,85903,j)|0;_I(d);d=0}else{c[d>>2]=e;c[d+(e+1<<2)>>2]=(c[i>>2]|0)+1}l=k;return d|0}function Uv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0;d=c[b+16>>2]|0;g=+h[d+16>>3];h[d+48>>3]=g-+h[d+88>>3];e=+h[d+24>>3];f=+h[d+80>>3]*.5;h[d+56>>3]=e-f;h[d+64>>3]=+h[d+96>>3]+g;h[d+72>>3]=f+e;b=Pm(a,b)|0;while(1){if(!b)break;Vv(b);b=Rm(a,b)|0}return}function Vv(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a|0)Wv(a);return}function Wv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+240|0;v=C+192|0;u=C+176|0;w=C+64|0;x=C+32|0;y=C;z=C+144|0;A=C+112|0;B=a+4|0;if((c[B>>2]|0)<=0)ma(86171,84925,3994,86185);b=c[a>>2]|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));Xv(x,v);i=x+8|0;j=y+8|0;k=x+16|0;m=y+16|0;n=x+24|0;o=y+24|0;p=w+8|0;q=w+12|0;r=w+32|0;s=w+4|0;t=w+16|0;g=0;while(1){if((g|0)>=(c[B>>2]|0))break;if((g|0)>0){b=(c[a>>2]|0)+(g*48|0)|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));Xv(y,v);h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[p>>2]|0;if(b|0){f=c[w>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];Rt(z,u,v,1.0,b);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[q>>2]|0;if(b|0){f=(c[w>>2]|0)+((c[s>>2]|0)+-1<<4)|0;c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];Rt(A,u,v,1.0,b);c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2];c[y+20>>2]=c[A+20>>2];c[y+24>>2]=c[A+24>>2];c[y+28>>2]=c[A+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}g=g+1|0}B=a+8|0;c[B>>2]=c[x>>2];c[B+4>>2]=c[x+4>>2];c[B+8>>2]=c[x+8>>2];c[B+12>>2]=c[x+12>>2];c[B+16>>2]=c[x+16>>2];c[B+20>>2]=c[x+20>>2];c[B+24>>2]=c[x+24>>2];c[B+28>>2]=c[x+28>>2];l=C;return}function Xv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;n=l;l=l+48|0;i=n+32|0;j=n;k=c[b+4>>2]|0;if((k|0)<=0)ma(86201,84925,3968,86213);if(((k>>>0)%3|0|0)!=1)ma(86223,84925,3969,86213);m=j+16|0;d=c[b>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];e=i+8|0;f=j+8|0;g=j+24|0;b=1;while(1){if((b|0)>=(k|0))break;p=+h[d+(b<<4)+8>>3];t=b+1|0;o=+h[d+(t<<4)+8>>3];r=(+h[d+(t<<4)>>3]+ +h[d+(b<<4)>>3])*.5;h[i>>3]=r;p=(o+p)*.5;h[e>>3]=p;o=+h[(+h[j>>3]<r?j:i)>>3];h[j>>3]=o;s=+h[(+h[f>>3]<p?j:i)+8>>3];h[f>>3]=s;r=+h[(+h[m>>3]>r?m:i)>>3];h[m>>3]=r;p=+h[(+h[g>>3]>p?m:i)+8>>3];h[g>>3]=p;t=d+(b+2<<4)|0;c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];q=+h[i>>3];h[j>>3]=+h[(o<q?j:i)>>3];o=+h[e>>3];h[f>>3]=+h[(s<o?j:i)+8>>3];h[m>>3]=+h[(r>q?m:i)>>3];h[g>>3]=+h[(p>o?m:i)+8>>3];b=b+3|0}c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[a+28>>2]=c[j+28>>2];l=n;return}function Yv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;q=+h[a>>3];r=+h[c>>3];k=!(q>=r);if((!k?q<=+h[c+16>>3]:0)?(e=+h[a+8>>3],e>=+h[c+8>>3]):0)i=e<=+h[c+24>>3];else i=0;e=+h[b>>3];if((e>=r?e<=+h[c+16>>3]:0)?(f=+h[b+8>>3],f>=+h[c+8>>3]):0){d=f<=+h[c+24>>3];if(!(i^d))if(i&d)d=1;else l=11;else d=0}else if(i)d=0;else l=11;a:do if((l|0)==11){p=+h[a+8>>3];do if(q==e){r=+h[c+8>>3];if(!(k|p>=r^+h[b+8>>3]>=r^1)?q<=+h[c+16>>3]:0){d=0;break a}}else{j=+h[b+8>>3];if(p==j){if(!(q>=r^e>=r))break;if(!(p>=+h[c+8>>3]))break;if(!(p<=+h[c+24>>3]))break;else{d=0;break a}}o=(j-p)/(e-q);l=q<e;g=l?q:e;e=l?e:q;f=(r-q)*o+p;m=+h[c+8>>3];if(!(!(r>=g)|!(r<=e)|!(f>=m))?f<=+h[c+24>>3]:0){d=0;break a}n=+h[c+16>>3];f=(n-r)*o+f;if(f>=m?!(!(n<=e)|(n>=g?!(f<=+h[c+24>>3]):1)):0){d=0;break a}l=p<j;g=l?p:j;f=l?j:p;e=(m-p)/o+q;if(e>=r?!(!(m<=f)|(!(m>=g)|!(e<=n))):0){d=0;break a}p=+h[c+24>>3];q=(p-m)/o+e;if(q>=r?!(!(p<=f)|(!(p>=g)|!(q<=n))):0){d=0;break a}}while(0);d=-1}while(0);return d|0}function Zv(a){a=a|0;var b=0,c=0.0;b=a+16|0;c=+h[b>>3];h[a+32>>3]=c;h[a+48>>3]=c;h[a+40>>3]=+h[a+24>>3];h[a+56>>3]=+h[a+8>>3];h[b>>3]=+h[a>>3];return}function _v(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;if((c[42176]|0)!=(d|0)){SJ(+(d|0)*.15915494309189535,167112,167120);c[42176]=d}g=+h[b>>3];e=+h[20890];f=+h[b+8>>3];i=+h[20889];h[a>>3]=e*g-i*f;h[a+8>>3]=i*g+f*e;return}function $v(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=g;e=-e;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];aw(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];$v(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];_v(a,f,d);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function aw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=-g;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];$v(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];aw(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];_v(a,f,360-d|0);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function bw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[c>>3];d=+h[c+8>>3];f=d+ +h[b>>3];e=g+ +h[b+24>>3];d=d+ +h[b+16>>3];h[a>>3]=g+ +h[b+8>>3];h[a+8>>3]=f;h[a+16>>3]=e;h[a+24>>3]=d;return}function cw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;f=+h[a>>3];d=+h[b>>3]-f;g=+h[a+8>>3];e=+h[b+8>>3]-g;f=(+h[c+8>>3]-g)*d-(+h[c>>3]-f)*e;f=f*f;return +(f<1.0e-10?0.0:f/(e*e+d*d))}function dw(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;g=n+8|0;i=n;e=vw(96)|0;m=b+16|0;c[(c[m>>2]|0)+8>>2]=e;e=Im(b,86250)|0;if(!e){e=Na(86259)|0;if(e|0)k=3}else k=3;if((k|0)==3)Va(86271,e|0,1)|0;e=(ew(b)|0)&255;a[(c[m>>2]|0)+115>>0]=e;if(0==0?(e=Im(b,86282)|0,c[42178]=e,(e|0)==0):0)c[42178]=c[42177];f=+EA(b,ym(b,0,86292,0)|0,0.0,0.0);h[c[(c[m>>2]|0)+8>>2]>>3]=f;e=Im(b,86300)|0;a:do if(!e)e=0;else{switch(a[e>>0]|0){case 76:{if(!(xJ(e,86308)|0)){e=1;break a}break}case 66:{if(!(xJ(e,86311)|0)){e=2;break a}break}case 82:{e=(xJ(e,86314)|0)==0;e=e?3:0;break a}default:{e=0;break a}}e=0}while(0);c[(c[m>>2]|0)+116>>2]=e<<2|(d<<24>>24==0?0:e);f=+EA(b,ym(b,0,86317,0)|0,.25,.02);h[i>>3]=f;f=f*72.0;c[(c[m>>2]|0)+248>>2]=~~(f+(f>=0.0?.5:-.5));e=FA(b,ym(b,0,86325,0)|0,0)|0;if(e){c[g>>2]=i;if(cM(e,86246,g)|0){f=+h[i>>3];if(f<.02){h[i>>3]=.02;f=.02}}else{h[i>>3]=.5;f=.5}if(hL(e,86333)|0)a[(c[m>>2]|0)+276>>0]=1}else{h[i>>3]=.5;f=.5}f=f*72.0;c[(c[m>>2]|0)+252>>2]=~~(f+(f>=0.0?.5:-.5));i=(DA(b,ym(b,0,86341,0)|0,0,0)|0)&255;a[(c[m>>2]|0)+243>>0]=i;i=UA(FA(b,ym(b,0,86351,0)|0,0)|0,19732,19748)|0;c[(c[m>>2]|0)+244>>2]=i;fw(b);i=gw(b,86361,(c[(c[m>>2]|0)+8>>2]|0)+64|0)|0;e=c[(c[m>>2]|0)+8>>2]|0;a[e+80>>0]=i;gw(b,86366,e+48|0)|0;e=IA(Im(b,86371)|0)|0;a[(c[(c[m>>2]|0)+8>>2]|0)+82>>0]=e;e=Im(b,86378)|0;do if(!e){e=Im(b,86385)|0;if(e|0){e=(a[e>>0]|32)<<24>>24==108&1;k=27;break}e=Im(b,86397)|0;if(e|0){e=IA(e)|0;k=27}}else{e=(rM(e)|0)==90&1;k=27}while(0);if((k|0)==27)a[(c[(c[m>>2]|0)+8>>2]|0)+81>>0]=e;c[42179]=UA(Im(b,86407)|0,19764,19780)|0;a[174076]=IA(Im(b,86419)|0)|0;c[42181]=0;c[42182]=0;h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=0.0;e=Im(b,86431)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)k=32;else k=30;if(((k|0)==30?(j=Im(b,86435)|0,j|0):0)?a[j>>0]|0:0){e=j;k=32}if((k|0)==32){f=+sM(e);h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=f}hw(b);c[42184]=ym(b,0,86446,0)|0;c[42187]=ym(b,0,86455,0)|0;c[42188]=ym(b,0,90530,0)|0;c[42189]=ym(b,1,96049,0)|0;c[42190]=ym(b,1,96043,0)|0;c[42191]=ym(b,1,90671,0)|0;c[42192]=ym(b,1,122540,0)|0;c[42193]=ym(b,1,86469,0)|0;c[42201]=ym(b,1,86479,0)|0;c[42194]=ym(b,1,86485,0)|0;c[42195]=ym(b,1,86494,0)|0;c[42196]=ym(b,1,86503,0)|0;k=ym(b,1,86240,0)|0;c[42198]=k;if(!k)c[42198]=ym(b,1,86240,90527)|0;c[42199]=ym(b,1,86513,0)|0;c[42202]=ym(b,1,86341,0)|0;c[42216]=ym(b,1,86520,0)|0;c[42205]=ym(b,1,86446,0)|0;c[42197]=ym(b,1,90530,0)|0;c[42203]=ym(b,1,86529,0)|0;c[42204]=ym(b,1,86535,0)|0;c[42207]=ym(b,1,86547,0)|0;c[42206]=ym(b,1,86385,0)|0;c[42208]=ym(b,1,86552,0)|0;c[42209]=ym(b,1,86563,0)|0;c[42210]=ym(b,1,122089,0)|0;c[42200]=ym(b,1,86573,0)|0;c[42211]=ym(b,1,86583,0)|0;c[42212]=ym(b,1,86589,0)|0;c[42213]=ym(b,1,86595,0)|0;c[42214]=ym(b,1,86603,0)|0;c[42215]=ym(b,1,86612,0)|0;c[42217]=ym(b,1,86455,0)|0;c[42218]=ym(b,2,86614,0)|0;c[42220]=ym(b,2,122540,0)|0;c[42221]=ym(b,2,86469,0)|0;c[42223]=ym(b,2,86485,0)|0;c[42224]=ym(b,2,86494,0)|0;c[42225]=ym(b,2,86503,0)|0;c[42226]=ym(b,2,86240,0)|0;c[42227]=ym(b,2,86513,0)|0;c[42236]=ym(b,2,86621,0)|0;c[42228]=ym(b,2,86632,0)|0;c[42239]=ym(b,2,86636,0)|0;c[42240]=ym(b,2,86646,0)|0;c[42241]=ym(b,2,86656,0)|0;c[42242]=ym(b,2,86666,0)|0;c[42243]=ym(b,2,86676,0)|0;c[42244]=ym(b,2,86690,0)|0;c[42245]=ym(b,2,86704,0)|0;c[42246]=ym(b,2,86719,0)|0;c[42247]=ym(b,2,86733,0)|0;c[42219]=ym(b,2,86744,0)|0;c[42231]=ym(b,2,86341,0)|0;c[42229]=ym(b,2,86479,0)|0;c[42230]=ym(b,2,86751,0)|0;c[42232]=ym(b,2,86760,0)|0;c[42233]=ym(b,2,86770,0)|0;c[42234]=ym(b,2,86583,0)|0;c[42235]=ym(b,2,86595,0)|0;c[42248]=ym(b,2,86781,0)|0;c[42249]=ym(b,2,86790,0)|0;c[42250]=ym(b,2,86520,0)|0;e=Ut(b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+88>>2]=e;e=Im(b,86799)|0;if(e|0?a[e>>0]|0:0){b=qw(e,b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+92>>2]=b}l=n;return}function ew(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=GA(a,ym(a,0,86883,0)|0,86891)|0;if(((((((iK(a,86897)|0)!=0?(iK(a,86905)|0)!=0:0)?(iK(a,86912)|0)!=0:0)?(iK(a,86915)|0)!=0:0)?(iK(a,86926)|0)!=0:0)?(iK(a,86937)|0)!=0:0)?(iK(a,86947)|0)!=0:0)if((iK(a,86958)|0)!=0?(iK(a,86964)|0)!=0:0)if((iK(a,86891)|0)!=0?(iK(a,86969)|0)!=0:0){c[b>>2]=a;_l(0,86974,b)|0;a=0}else a=0;else a=2;else a=1;l=d;return a|0}function fw(b){b=b|0;var d=0.0,e=0,f=0;e=Im(b,86841)|0;a:do if(e|0?(f=a[e>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:{if(f<<24>>24!=97)break a;if(xJ(e,86847)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=4;break a}case 99:{if(f<<24>>24!=99)break a;if(xJ(e,86852)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=3;break a}case 101:{if(f<<24>>24!=101)break a;if(xJ(e,86861)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=5;break a}case 102:{if(f<<24>>24!=102)break a;if(xJ(e,86868)|0)break a;c[(c[(c[b+16>>2]|0)+8>>2]|0)+84>>2]=2;break a}default:{d=+sM(e);if(!(d>0.0))break a;b=c[(c[b+16>>2]|0)+8>>2]|0;c[b+84>>2]=1;h[b+16>>3]=d;break a}}while(0);return}function gw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o+32|0;i=o+16|0;k=o+8|0;j=o;n=o+40|0;a[n>>0]=0;b=Im(b,d)|0;do if(b){c[i>>2]=k;c[i+4>>2]=j;c[i+8>>2]=n;i=(cM(b,86825,i)|0)>1;g=+h[k>>3];f=+h[j>>3];if(i&g>0.0&f>0.0){g=g*72.0;h[e>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);g=f*72.0;h[e+8>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);b=(a[n>>0]|0)==33;break}a[n>>0]=0;c[m>>2]=k;c[m+4>>2]=n;m=(cM(b,86835,m)|0)>0;f=+h[k>>3];if(m&f>0.0){g=f*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);h[e>>3]=g;h[e+8>>3]=g;b=(a[n>>0]|0)==33}else b=0}else b=0;while(0);l=o;return b&1|0}function hw(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0;d=Im(b,86240)|0;do if(d|0?a[d>>0]|0:0){e=(c[(c[b+60>>2]|0)+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|8;e=(cp(d)|0)!=0;g=+EA(b,ym(b,0,86485,0)|0,14.0,1.0);i=GA(b,ym(b,0,86494,0)|0,93027)|0;d=lw(b,d,e?2:0,g,i,GA(b,ym(b,0,86503,0)|0,122106)|0)|0;i=b+16|0;c[(c[i>>2]|0)+12>>2]=d;d=Im(b,90662)|0;e=(d|0)!=0;do if((so(b)|0)==(b|0)){if(e?(a[d>>0]|0)==116:0){d=1;break}d=0}else{if(e?(a[d>>0]|0)==98:0){d=0;break}d=1}while(0);e=Im(b,86802)|0;a:do if(e)switch(a[e>>0]|0){case 108:{d=d|2;break a}case 114:{d=d|4;break a}default:break a}while(0);a[(c[i>>2]|0)+275>>0]=d;if((so(b)|0)!=(b|0)){d=c[(c[i>>2]|0)+12>>2]|0;f=+h[d+24>>3]+16.0;g=+h[d+32>>3]+8.0;b=(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0;d=c[i>>2]|0;e=a[d+275>>0]<<1&2;if(b){b=e&255;h[d+48+(b<<4)>>3]=f;h[d+48+(b<<4)+8>>3]=g;break}else{b=(e^3)&255;h[d+48+(b<<4)>>3]=g;h[d+48+(b<<4)+8>>3]=f;break}}}while(0);return}function iw(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+8>>2]|0;do if(!b)b=d;else{d=c[b+88>>2]|0;if(d){xt(d);d=c[e>>2]|0;b=c[d+8>>2]|0;if(!b){b=d;break}}_I(c[b+92>>2]|0);b=c[e>>2]|0}while(0);_I(c[b+8>>2]|0);e=c[e>>2]|0;c[e+8>>2]=0;ow(c[e+12>>2]|0);To(a,0,122277);return}function jw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d>>2]|0;l=d+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;if(a[f>>0]|0){i=ww((rJ(f)|0)+1|0)|0;a[i>>0]=0;j=d+12|0;e=i;a:while(1){b:while(1){h=f+1|0;g=a[f>>0]|0;if(!(g<<24>>24))break a;if(!(g<<24>>24==-1|((g&255)<161|(c[j>>2]|0)!=2))){a[e>>0]=g;h=a[h>>0]|0;g=e+2|0;a[e+1>>0]=h;if(!(h<<24>>24)){e=g;break a}else{e=g;f=f+2|0;continue}}switch(g<<24>>24){case 92:break b;case 10:{k=12;break b}default:{}}a[e>>0]=g;e=e+1|0;f=h}if((k|0)==12){k=0;f=e+1|0;a[e>>0]=0;kw(b,d,i,110);e=f;i=f;f=h;continue}g=a[h>>0]|0;switch(g<<24>>24|0){case 114:case 108:case 110:{g=e+1|0;a[e>>0]=0;kw(b,d,i,a[h>>0]|0);e=g;break}default:{a[e>>0]=g;e=e+1|0;g=i}}i=g;f=(a[h>>0]|0)==0?h:f+2|0}if((i|0)!=(e|0)){a[e>>0]=0;kw(b,d,i,110)}d=d+40|0;c[d>>2]=c[l>>2];c[d+4>>2]=c[l+4>>2];c[d+8>>2]=c[l+8>>2];c[d+12>>2]=c[l+12>>2]}return}function kw(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+32|0;q=s+16|0;p=s;r=e+76|0;k=b[r>>1]|0;o=e+72|0;m=c[o>>2]|0;if(!m)n=vw((k*56|0)+112|0)|0;else n=xw(m,k+2|0,56,k+1|0)|0;c[o>>2]=n;k=b[r>>1]|0;m=n+(k*56|0)|0;c[m>>2]=f;a[n+(k*56|0)+48>>0]=g;if((f|0)!=0?(a[f>>0]|0)!=0:0){c[41782]=c[e+4>>2];h[20893]=+h[e+16>>3];g=c[d+144>>2]|0;c[n+(k*56|0)+4>>2]=bb[c[g>>2]&31](g,167128,1)|0;pA(p,d,m);j=+h[p>>3];h[q>>3]=j;i=+h[p+8>>3]}else{h[q>>3]=0.0;i=+(~~(+h[e+16>>3]*1.2)|0);h[n+(k*56|0)+40>>3]=i;j=0.0}b[r>>1]=(b[r>>1]|0)+1<<16>>16;r=e+24|0;h[r>>3]=+h[(+h[r>>3]>j?r:q)>>3];r=e+32|0;h[r>>3]=+h[r>>3]+i;l=s;return}function lw(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;r=u+16|0;q=u+8|0;p=u;t=vw(88)|0;switch(Co(b)|0){case 0:{m=0;s=c[b+60>>2]|0;n=b;o=0;break}case 1:{m=0;s=so(ro(b)|0)|0;n=0;o=b;break}case 2:{m=b;s=so(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0;n=0;o=0;break}default:{m=0;s=0;n=0;o=0}}c[t+4>>2]=i;c[t+8>>2]=j;h[t+16>>3]=g;k=s+16|0;j=t+12|0;c[j>>2]=d[(c[k>>2]|0)+115>>0];a:do if(f&4){c[t>>2]=GL(e)|0;if(f&2|0)a[t+82>>0]=1}else switch(f|0){case 2:{c[t>>2]=GL(e)|0;a[t+82>>0]=1;if(!(TF(b,t)|0))break a;switch(Co(b)|0){case 0:{c[p>>2]=Dn(n)|0;_l(3,87017,p)|0;break a}case 1:{c[q>>2]=Dn(o)|0;_l(3,87039,q)|0;break a}case 2:{p=Dn(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;q=(qn(s)|0)!=0;s=Dn(c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=q?122546:122549;c[r+8>>2]=s;_l(3,87060,r)|0;break a}default:break a}}case 0:{i=mw(e,b,0)|0;c[t>>2]=i;if((c[j>>2]|0)==1)i=yB(i)|0;else i=vB(i,s)|0;_I(c[t>>2]|0);c[t>>2]=i;jw(c[(c[k>>2]|0)+144>>2]|0,t);break a}default:ma(87087,87103,166,87112)}while(0);l=u;return t|0}function mw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;switch(Co(d)|0){case 0:{i=Dn(d)|0;g=rJ(i)|0;f=c[(c[d+16>>2]|0)+12>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;h=2;y=87135;m=87132;j=90527;o=174181;q=174181;p=0;r=0;n=2;w=f;x=87129}else{v=0;t=2;u=2;s=2;h=2;y=87135;m=87132;j=90527;o=174181;q=174181;p=0;r=0;n=rJ(f)|0;w=f;x=87129}}else{v=0;t=2;u=2;s=2;h=2;y=87135;m=87132;j=90527;o=174181;q=174181;p=0;r=0;n=2;w=87123;x=87129}break}case 1:{i=Dn(ro(d)|0)|0;g=rJ(i)|0;j=Dn(d)|0;h=rJ(j)|0;f=c[(c[d+16>>2]|0)+104>>2]|0;if(f){f=c[f>>2]|0;if(!b){v=0;t=2;u=2;s=2;y=87135;m=87132;o=174181;q=174181;p=0;r=0;n=2;w=f;x=87129}else{v=0;t=2;u=2;s=2;y=87135;m=87132;o=174181;q=174181;p=0;r=0;n=rJ(f)|0;w=f;x=87129}}else{v=0;t=2;u=2;s=2;y=87135;m=87132;o=174181;q=174181;p=0;r=0;n=2;w=87123;x=87129}break}case 2:{h=d+48|0;i=Dn(so(ro(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0;g=rJ(i)|0;l=Dn(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0;k=rJ(l)|0;f=d+16|0;q=c[(c[f>>2]|0)+52>>2]|0;if(!q)r=0;else r=rJ(q)|0;m=Dn(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;f=c[f>>2]|0;o=c[f+92>>2]|0;if(!o)p=0;else p=rJ(o)|0;j=rJ(m)|0;f=c[f+96>>2]|0;if(f){f=c[f>>2]|0;if(!b)n=2;else n=rJ(f)|0}else{n=2;f=87123}x=(qn(so(ro(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0)==0;v=1;t=k;u=j;s=k+2+(r|0?r+1|0:0)+j+(p|0?p+1|0:0)|0;h=2;y=l;j=90527;w=f;x=x?122549:122546;break}default:{v=0;t=2;u=2;s=2;h=2;g=2;y=87135;m=87132;j=90527;i=87126;o=174181;q=174181;p=0;r=0;n=2;w=87123;x=87129}}e=(e|0)==0;l=0;f=b;a:while(1){d=f+1|0;b:do switch(a[f>>0]|0){case 0:break a;case 92:{f=f+2|0;switch(a[d>>0]|0){case 78:{k=h;break b}case 71:{k=g;break b}case 69:{k=s;break b}case 72:{k=u;break b}case 84:{k=t;break b}case 76:{k=n;break b}case 92:{if(!e){k=1;break b}break}default:{}}k=2;break}default:{k=1;f=d}}while(0);l=l+k|0}s=ww(l+1|0)|0;n=(v|0)==0;l=(r|0)==0;d=(p|0)==0;f=s;g=b;c:while(1){k=g+1|0;h=a[g>>0]|0;switch(h<<24>>24){case 0:break c;case 92:break;default:{a[f>>0]=h;f=f+1|0;g=k;continue c}}h=g+2|0;g=a[k>>0]|0;switch(g<<24>>24|0){case 71:{g=i;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 78:{g=j;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 69:{if(n){g=h;continue c}else g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(l)g=x;else{a[f>>0]=58;g=q;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=x;break}else g=g+1|0}}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=m;break}g=g+1|0;f=f+1|0}while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24))break;g=g+1|0;f=f+1|0}if(d){g=h;continue c}a[f>>0]=58;g=o;while(1){f=f+1|0;b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}else g=g+1|0}}case 84:{g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}g=g+1|0;f=f+1|0}}case 72:{g=m;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 76:{g=w;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=h;continue c}f=f+1|0;g=g+1|0}}case 92:{if(!e){a[f>>0]=92;f=f+1|0;g=h;continue c}break}default:{}}a[f>>0]=92;a[f+1>>0]=g;f=f+2|0;g=h}a[f>>0]=0;return s|0}function nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(a|0){d=a;e=0;while(1){if((e|0)>=(b|0))break;if(!e)_I(c[d>>2]|0);g=c[d+8>>2]|0;if(g|0?(f=c[d+12>>2]|0,f|0):0)gb[f&127](g);d=d+56|0;e=e+1|0}_I(a)}return}function ow(d){d=d|0;var e=0;if(d|0){_I(c[d>>2]|0);e=d+72|0;if(a[d+82>>0]|0){e=c[e>>2]|0;if(e|0)EF(e,1)}else nw(c[e>>2]|0,b[d+76>>1]|0);_I(d)}return}function pw(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;q=u+16|0;r=u;k=c[d+16>>2]|0;s=k+12|0;t=c[s>>2]|0;c[s>>2]=e;if(!(a[f+82>>0]|0)){p=f+76|0;if((b[p>>1]|0)>=1){yD(d,0);BD(d,c[f+8>>2]|0);switch(a[f+80>>0]|0){case 116:{j=+h[f+64>>3];g=+h[f+48>>3]*.5+j;break}case 98:{j=+h[f+64>>3];g=+h[f+48>>3]*-.5+j+ +h[f+32>>3];break}default:{j=+h[f+64>>3];g=+h[f+32>>3]*.5+j}}g=g-+h[f+16>>3];o=r+8|0;h[o>>3]=g;if(b[k+260>>1]&512)h[o>>3]=g-j;m=f+72|0;n=f+56|0;i=f+40|0;e=0;while(1){if((e|0)>=(b[p>>1]|0))break;k=c[m>>2]|0;switch(a[k+(e*56|0)+48>>0]|0){case 108:{g=+h[n>>3]-+h[i>>3]*.5;break}case 114:{g=+h[i>>3]*.5+ +h[n>>3];break}default:g=+h[n>>3]}h[r>>3]=g;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];AD(d,q,k+(e*56|0)|0);h[o>>3]=+h[o>>3]-+h[(c[m>>2]|0)+(e*56|0)+40>>3];e=e+1|0}zD(d);i=18}}else{jF(d,c[f+72>>2]|0,f);i=18}if((i|0)==18)c[s>>2]=t;l=u;return}function qw(a,b){a=a|0;b=b|0;return mw(a,b,1)|0}function rw(a){a=a|0;return sw(a,0)|0}function sw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[42251]|0;if(!e){c[42252]=64;e=ww(64)|0;c[42251]=e}j=d<<24>>24==0;i=0;f=0;h=b;while(1){if(!h)break;d=a[h>>0]|0;if(!(d<<24>>24))break;b=c[42252]|0;if((i|0)>(b+-8|0)){e=b<<1;c[42252]=e;e=yw(c[42251]|0,e)|0;c[42251]=e;e=e+i|0;d=a[h>>0]|0}a:do switch(d<<24>>24){case 38:{if(j?(tw(h)|0)!=0:0)k=18;else{f=5;d=87164}break}case 60:{f=4;d=87187;break}case 62:{f=4;d=87170;break}case 45:{f=5;d=87181;break}default:{if((f|0)!=0&d<<24>>24==32)if((a[f>>0]|0)==32){f=6;d=87157;break a}else{k=18;break a}switch(d<<24>>24){case 34:{f=6;d=87150;break a}case 39:{f=5;d=87175;break a}case 10:if(j){k=18;break a}else{f=5;d=87144;break a}default:{k=18;break a}}}}while(0);if((k|0)==18){k=0;d=j|d<<24>>24!=13;f=d?1:5;d=d?h:87138}g=e+f|0;b=f;while(1){if(!b)break;a[e>>0]=a[d>>0]|0;b=b+-1|0;d=d+1|0;e=e+1|0}b=h;i=f+i|0;e=g;h=h+1|0;f=b}a[e>>0]=0;return c[42251]|0}function tw(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function uw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[42253]|0;if(!d){c[42254]=64;d=ww(64)|0;c[42253]=d;i=0}else i=0;while(1){if(!b)break;e=a[b>>0]|0;if(!(e<<24>>24))break;f=c[42254]|0;if((i|0)>(f+-8|0)){d=f<<1;c[42254]=d;d=yw(c[42253]|0,d)|0;c[42253]=d;d=d+i|0;e=a[b>>0]|0}switch(e<<24>>24){case 38:{if(!(tw(b)|0)){g=5;e=87164}else j=12;break}case 60:{g=4;e=87187;break}case 62:{g=4;e=87170;break}case 34:{g=6;e=87150;break}case 39:{g=5;e=87175;break}default:j=12}if((j|0)==12){j=0;g=1;e=b}h=d+g|0;f=g;while(1){if(!f)break;a[d>>0]=a[e>>0]|0;f=f+-1|0;e=e+1|0;d=d+1|0}i=g+i|0;d=h;b=b+1|0}a[d>>0]=0;return c[42253]|0}function vw(a){a=a|0;var b=0;if(!a)a=0;else{b=ww(a)|0;VN(b|0,0,a|0)|0;a=b}return a|0}function ww(a){a=a|0;if(a){a=ZI(a)|0;if(!a){XL(96532,14,1,c[13918]|0)|0;a=0}}else a=0;return a|0}function xw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=aJ(a,O(d,b)|0)|0;if(!((b|0)!=0&(a|0)==0)){if(b>>>0>e>>>0)VN(a+(O(e,d)|0)|0,0,O(b-e|0,d)|0)|0}else XL(96532,14,1,c[13918]|0)|0;return a|0}function yw(a,b){a=a|0;b=b|0;a=aJ(a,b)|0;if((b|0)!=0&(a|0)==0)XL(96532,14,1,c[13918]|0)|0;return a|0}function zw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+80|0;r=u+40|0;q=u+32|0;n=u+24|0;m=u;s=4;t=ZI(40)|0;c[t>>2]=0;f=u+68|0;g=u+64|0;if(0){o=0;ha(57,a|0,f|0,g|0);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=SN(c[i>>2]|0,t|0,s|0)|0;if(!j)Ua(i|0,p|0);z=p}else j=-1;if((j|0)!=1){j=c[13918]|0;i=c[f>>2]|0;f=c[g>>2]|0;o=0;c[m>>2]=87236;c[m+4>>2]=i;c[m+8>>2]=f;c[m+12>>2]=d;c[m+16>>2]=b;aa(13,j|0,87192,m|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1){o=0;ea(1);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1)j=6;else{f=z;j=15}}else{f=z;j=15}}else{f=z;j=15}}else j=6;do if((j|0)==6){o=0;f=_(20,a|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=SN(c[g>>2]|0,t|0,s|0)|0;if(!i)Ua(g|0,p|0);z=p}else i=-1;if((i|0)!=1){if(!f){o=0;ea(2);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}}if((d|0)<1){o=0;ea(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;break}else{c[42255]=(e|0)>-1?e:30;t=RN(169024,1,t|0,s|0)|0;s=z;o=0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;break}f=0;j=15;break}}else{f=z;j=15}}while(0);a:do if((j|0)==15){b:while(1){if(f|0){f=2;break a}o=0;ea(4);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}a=c[13918]|0;m=0;while(1){o=0;j=Z(1)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}if(!j)break;o=0;f=_(21,j|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=SN(c[g>>2]|0,t|0,s|0)|0;if(!i)Ua(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}o=0;ga(24,j|0,f|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}m=m+1|0;do if(((m|0)%100|0|0)==0&0!=0){f=(m|0)%1e3|0;if((f|0)==100){o=0;$(27,87236,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;c[n>>2]=m;aa(13,a|0,87254,n|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}o=0;c[q>>2]=m;aa(13,a|0,87254,q|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=SN(c[g>>2]|0,t|0,s|0)|0;if(!i)Ua(g|0,p|0);z=p}else i=-1;if((i|0)==1){f=z;j=15;continue b}if(!f){o=0;$(28,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}while(0);if((m|0)>=(d|0))break}switch(b|0){case 1:{o=0;ea(5);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}case 2:{o=0;ea(6);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}break}default:{o=0;ea(7);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}o=0;ea(3);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue b}}}if(!0){f=0;break a}if((m|0)>99){o=0;$(28,10,a|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15;continue}}f=c[42295]|0;g=c[42296]|0;o=0;k=+X(1);i=o;o=0;if((i|0)!=0&(p|0)!=0){j=SN(c[i>>2]|0,t|0,s|0)|0;if(!j)Ua(i|0,p|0);z=p}else j=-1;if((j|0)==1){f=z;j=15;continue}o=0;c[r>>2]=87236;c[r+4>>2]=f;c[r+8>>2]=g;c[r+12>>2]=m;h[r+16>>3]=k;aa(13,a|0,87258,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,s|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){f=z;j=15}else break}f=0}while(0);_I(t|0);l=u;return f|0}function Aw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a=(c[a+16>>2]|0)+192|0;e=0;h=0;while(1){a=c[a>>2]|0;if(!a)break;g=c[a+16>>2]|0;f=c[g+180>>2]|0;a=0;while(1){if(!(c[f+(a<<2)>>2]|0))break;a=a+1|0;e=e+1|0}a=g+164|0;h=h+1|0}c[b>>2]=h;c[d>>2]=e;return}function Bw(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[42298]=b;c[42305]=0;c[42296]=0;c[42295]=0;i=b+16|0;b=(c[i>>2]|0)+192|0;h=0;f=0;while(1){b=c[b>>2]|0;if(!b)break;g=c[b+16>>2]|0;a[g+157>>0]=0;h=h+1|0;c[42295]=h;d=c[g+180>>2]|0;b=0;while(1){if(!(c[d+(b<<2)>>2]|0))break;k=f+1|0;c[42296]=k;b=b+1|0;f=k}b=g+164|0}b=c[42306]|0;if(!b)b=ww(h<<2)|0;else b=yw(b,h<<2)|0;c[42306]=b;c[42307]=0;b=c[42300]|0;if(!b)b=ww(c[42295]<<2)|0;else b=yw(b,c[42295]<<2)|0;c[42300]=b;c[42299]=0;d=1;b=(c[i>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;k=b+16|0;i=c[k>>2]|0;j=i+292|0;c[j>>2]=0;i=c[i+172>>2]|0;h=d;g=0;b=0;while(1){d=c[i+(g<<2)>>2]|0;if(!d)break;f=b+1|0;c[j>>2]=f;b=c[d+16>>2]|0;c[b+160>>2]=0;c[b+164>>2]=-1;if(!h)b=0;else{l=c[d>>2]&3;b=((c[(c[(c[((l|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((l|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)<(e[b+170>>1]|0|0)?0:h}h=b;g=g+1|0;b=f}b=vw((g<<2)+4|0)|0;d=c[k>>2]|0;c[d+264>>2]=b;c[d+268>>2]=0;d=c[d+180>>2]|0;b=0;do{l=b;b=b+1|0}while((c[d+(l<<2)>>2]|0)!=0);d=vw(b<<2)|0;b=c[k>>2]|0;c[b+272>>2]=d;c[b+276>>2]=0;d=h;b=b+164|0}return d|0}function Cw(){var a=0,b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;k=o;m=zA(c[42295]|0)|0;a=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b){j=0;break}d=b+16|0;a=c[d>>2]|0;if(!(c[a+292>>2]|0)){BA(m,b);a=c[d>>2]|0}a=a+164|0}while(1){a=CA(m)|0;if(!a)break;i=a+16|0;a=c[i>>2]|0;f=a+232|0;c[f>>2]=0;d=c[a+172>>2]|0;b=0;h=0;while(1){g=c[d+(b<<2)>>2]|0;if(!g){f=0;break}g=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[(c[g+16>>2]|0)+170>>1]|0)|0;g=(h|0)>(g|0)?h:g;c[f>>2]=g;b=b+1|0;h=g}while(1){b=c[(c[a+180>>2]|0)+(f<<2)>>2]|0;if(!b)break;d=b+-48|0;g=(c[(c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0)+16>>2]|0)+292|0;h=c[g>>2]|0;c[g>>2]=h+-1;if((h|0)<2){BA(m,c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0);a=c[i>>2]|0}f=f+1|0}j=j+1|0}a:do if((j|0)!=(c[42295]|0)){_l(1,87590,k)|0;a=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break a;d=b+16|0;a=c[d>>2]|0;if(c[a+292>>2]|0){k=Dn(b)|0;a=c[(c[d>>2]|0)+292>>2]|0;c[n>>2]=k;c[n+4>>2]=a;_l(3,87612,n)|0;a=c[d>>2]|0}a=a+164|0}}while(0);AA(m);l=o;return}function Dw(){var b=0,d=0,e=0;b=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+264>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+272>>2]|0;if(d){_I(d);b=c[e>>2]|0}a[b+157>>0]=0;b=b+164|0}return}function Ew(){var a=0,b=0,d=0,e=0,f=0;a=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;a=c[a+16>>2]|0;c[a+280>>2]=0;a=a+164|0}f=vw(c[42295]<<2)|0;e=0;a=(c[(c[42298]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break;d=b+16|0;a=c[d>>2]|0;if(!(c[a+280>>2]|0)){c[f+(e<<2)>>2]=Rw(b)|0;b=e+1|0;a=c[d>>2]|0}else b=e;e=b;a=a+164|0}a=Sw(f,e)|0;while(1){if((Tw(a)|0)<=1)break;Xw(a,c[(Ww(Vw(Uw(a)|0)|0)|0)+8>>2]|0)}_I(a);a=0;while(1){if((a|0)>=(e|0))break;_I(c[f+(a<<2)>>2]|0);a=a+1|0}_I(f);if((c[42299]|0)==((c[42295]|0)+-1|0)){Yw();return}else ma(87335,87365,523,87370)}function Fw(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[42305]|0;f=c[42299]|0;j=c[42300]|0;k=c[42255]|0;b=0;a=0;g=i;while(1){if((g|0)>=(f|0)){h=8;break}e=c[j+(g<<2)>>2]|0;d=c[(c[e+16>>2]|0)+160>>2]|0;if((d|0)<0){if(!a)a=e;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(d|0)?e:a;b=b+1|0;if((b|0)>=(k|0))break}e=g+1|0;c[42305]=e;g=e}if((h|0)==8)if((i|0)>0){f=0;while(1){if((f|0)>=(i|0))break;d=c[j+(f<<2)>>2]|0;e=c[(c[d+16>>2]|0)+160>>2]|0;if((e|0)<0){if(!a)a=d;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(e|0)?d:a;b=b+1|0;if((b|0)>=(k|0))break}f=f+1|0}c[42305]=f}return a|0}function Gw(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;a=c[((b|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[d+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0);a=b?d:a;c[42301]=0;c[42302]=2147483647;d=c[a+16>>2]|0;c[42303]=c[d+284>>2];c[42304]=c[d+288>>2];if(b)Qw(a);else Pw(a);return c[42301]|0}function Hw(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;g=c[b>>2]&3;m=b+-48|0;j=b+48|0;k=b+16|0;g=(c[(c[(c[((g|0)==2?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((g|0)==3?b:j)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[k>>2]|0)+170>>1]|0)|0;do if((g|0)>0){d=c[a>>2]&3;h=c[((d|0)==3?a:a+48|0)+40>>2]|0;i=c[h+16>>2]|0;if(((c[i+276>>2]|0)+(c[i+268>>2]|0)|0)==1){Lw(h,g);break}d=c[((d|0)==2?a:a+-48|0)+40>>2]|0;f=c[d+16>>2]|0;if(((c[f+276>>2]|0)+(c[f+268>>2]|0)|0)==1){Lw(d,0-g|0);break}if((c[i+288>>2]|0)<(c[f+288>>2]|0)){Lw(h,g);break}else{Lw(d,0-g|0);break}}while(0);d=a+16|0;f=c[(c[d>>2]|0)+160>>2]|0;g=c[b>>2]&3;g=Mw(c[((g|0)==3?b:j)+40>>2]|0,c[((g|0)==2?b:m)+40>>2]|0,f,1)|0;i=c[b>>2]&3;if((Mw(c[((i|0)==2?b:m)+40>>2]|0,c[((i|0)==3?b:j)+40>>2]|0,f,0)|0)==(g|0)){c[(c[k>>2]|0)+160>>2]=0-f;c[(c[d>>2]|0)+160>>2]=0;Nw(a,b);n=c[g+16>>2]|0;Ow(g,c[n+280>>2]|0,c[n+284>>2]|0)|0;l=o;return}else{_l(1,87296,n)|0;Ua(169024,1)}}function Iw(){var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;Kw();m=vw((c[42297]<<2)+4|0)|0;d=c[42297]|0;b=0;while(1){if((b|0)>(d|0))break;c[m+(b<<2)>>2]=0;b=b+1|0}b=(c[(c[42298]|0)+16>>2]|0)+192|0;d=b;while(1){d=c[d>>2]|0;if(!d)break;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){l=m+(c[d+232>>2]<<2)|0;c[l>>2]=(c[l>>2]|0)+1}d=d+164|0}while(1){b=c[b>>2]|0;if(!b)break;l=b+16|0;b=c[l>>2]|0;if(!(a[b+156>>0]|0)){h=c[42297]|0;f=c[b+172>>2]|0;k=0;j=0;d=0;while(1){g=c[f+(d<<2)>>2]|0;if(!g)break;n=c[g+16>>2]|0;i=(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)+(e[n+170>>1]|0)|0;k=(c[n+156>>2]|0)+k|0;j=(j|0)>(i|0)?j:i;d=d+1|0}g=c[b+180>>2]|0;i=0;d=0;while(1){f=c[g+(d<<2)>>2]|0;if(!f)break;o=c[f+16>>2]|0;n=(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[o+170>>1]|0)|0;i=(c[o+156>>2]|0)+i|0;h=(h|0)<(n|0)?h:n;d=d+1|0}d=(j|0)>0?j:0;if((k|0)==(i|0)){g=d;f=d;while(1){d=f+1|0;if((f|0)>=(h|0))break;g=(c[m+(d<<2)>>2]|0)<(c[m+(g<<2)>>2]|0)?d:g;f=d}o=b+232|0;n=m+(c[o>>2]<<2)|0;c[n>>2]=(c[n>>2]|0)+-1;n=m+(g<<2)|0;c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=g}d=c[b+264>>2]|0;if(d){_I(d);b=c[l>>2]|0}d=c[b+272>>2]|0;if(d){_I(d);b=c[l>>2]|0}a[b+157>>0]=0}b=b+164|0}_I(m);return}function Jw(){var a=0,b=0,d=0,f=0,g=0,h=0;b=0;while(1){if((b|0)>=(c[42299]|0))break;a=c[(c[42300]|0)+(b<<2)>>2]|0;do if(((c[(c[a+16>>2]|0)+160>>2]|0)==0?(d=Gw(a)|0,d|0):0)?(f=c[d>>2]&3,f=(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0,(f|0)>=2):0){h=c[a>>2]&3;g=c[((h|0)==3?a:a+48|0)+40>>2]|0;a=c[((h|0)==2?a:a+-48|0)+40>>2]|0;if((c[(c[g+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0)){Lw(g,f>>>1);break}else{Lw(a,(f|0)/-2|0);break}}while(0);b=b+1|0}Dw();return}function Kw(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;c[h>>2]=0;c[h>>2]=2147483647;c[42297]=-2147483647;b=(c[(c[42298]|0)+16>>2]|0)+192|0;e=b;g=2147483647;f=-2147483647;while(1){d=c[e>>2]|0;if(!d)break;e=c[d+16>>2]|0;if(!(a[e+156>>0]|0)){j=c[e+232>>2]|0;d=(g|0)<(j|0)?g:j;c[h>>2]=d;f=(f|0)>(j|0)?f:j;c[42297]=f}else d=g;e=e+164|0;g=d}if(g|0){while(1){b=c[b>>2]|0;if(!b)break;b=c[b+16>>2]|0;j=b+232|0;c[j>>2]=(c[j>>2]|0)-g;b=b+164|0}c[42297]=f-g;c[h>>2]=0}l=i;return}function Lw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;a=c[f>>2]|0;e=a+232|0;c[e>>2]=(c[e>>2]|0)-b;e=0;while(1){d=c[(c[a+272>>2]|0)+(e<<2)>>2]|0;if(!d){e=0;break}if((d|0)!=(c[a+280>>2]|0)){Lw(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(c[a+280>>2]|0)){Lw(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}return}function Mw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=(e|0)==0&1;h=0-d|0;f=c[(c[b+16>>2]|0)+288>>2]|0;b=a;while(1){a=c[b+16>>2]|0;if((c[a+284>>2]|0)<=(f|0)?(f|0)<=(c[a+288>>2]|0):0)break;a=c[a+280>>2]|0;i=a+48|0;j=(c[a+16>>2]|0)+160|0;c[j>>2]=(((b|0)==(c[((c[a>>2]&3|0)==3?a:i)+40>>2]|0)?e:g)|0?d:h)+(c[j>>2]|0);j=c[a>>2]&3;i=c[((j|0)==3?a:i)+40>>2]|0;a=c[((j|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[i+16>>2]|0)+288>>2]|0)>(c[(c[a+16>>2]|0)+288>>2]|0)?i:a}return b|0}function Nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=a+16|0;e=(c[i>>2]|0)+164|0;c[(c[b+16>>2]|0)+164>>2]=c[e>>2];c[(c[42300]|0)+(c[e>>2]<<2)>>2]=b;c[(c[i>>2]|0)+164>>2]=-1;i=(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+276|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+272|0;h=0;while(1){if((h|0)>=(f|0)){k=3;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==3)d=c[e+272>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+272>>2]|0)+(j<<2)>>2]=0;i=(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16|0;e=c[i>>2]|0;g=e+268|0;f=c[g>>2]|0;j=f+-1|0;c[g>>2]=j;g=e+264|0;h=0;while(1){if((h|0)>=(f|0)){k=8;break}d=c[g>>2]|0;if((c[d+(h<<2)>>2]|0)==(a|0))break;h=h+1|0}if((k|0)==8)d=c[e+264>>2]|0;c[d+(h<<2)>>2]=c[d+(j<<2)>>2];c[(c[(c[i>>2]|0)+264>>2]|0)+(j<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)+16|0;a=c[k>>2]|0;j=c[a+272>>2]|0;a=a+276|0;i=c[a>>2]|0;c[a>>2]=i+1;c[j+(i<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+272>>2]|0)+(c[k+276>>2]<<2)>>2]=0;k=(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16|0;i=c[k>>2]|0;j=c[i+264>>2]|0;i=i+268|0;a=c[i>>2]|0;c[i>>2]=a+1;c[j+(a<<2)>>2]=b;k=c[k>>2]|0;c[(c[k+264>>2]|0)+(c[k+268>>2]<<2)>>2]=0;return}function Ow(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;c[a+280>>2]=b;c[a+284>>2]=d;f=0;while(1){e=c[(c[a+272>>2]|0)+(f<<2)>>2]|0;if(!e){f=0;break}if((e|0)!=(b|0)){d=Ow(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}while(1){e=c[(c[a+264>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)!=(b|0)){d=Ow(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}c[a+288>>2]=d;return d+1|0}function Pw(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+180>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[42303]|0)>(j|0)|(j|0)>(c[42304]|0)?(h=(c[b+232>>2]|0)-(c[(c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[42302]|0)|(c[42301]|0)==0):0){c[42301]=d;c[42302]=h}}else{b=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))Pw(b)}g=g+1|0}while(1){b=c[(c[a+264>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[42302]|0)>0))break;b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){Pw(b);a=c[i>>2]|0}d=d+1|0}return}function Qw(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0;i=a+16|0;g=0;while(1){a=c[i>>2]|0;d=c[(c[a+172>>2]|0)+(g<<2)>>2]|0;if(!d){d=0;break}f=c[d+16>>2]|0;if((c[f+164>>2]|0)<0){a=c[d>>2]&3;b=c[(c[((a|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0;j=c[b+288>>2]|0;if((c[42303]|0)>(j|0)|(j|0)>(c[42304]|0)?(h=(c[(c[(c[((a|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[b+232>>2]|0)-(e[f+170>>1]|0)|0,(h|0)<(c[42302]|0)|(c[42301]|0)==0):0){c[42301]=d;c[42302]=h}}else{b=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0))Qw(b)}g=g+1|0}while(1){b=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[42302]|0)>0))break;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){Qw(b);a=c[i>>2]|0}d=d+1|0}return}function Rw(a){a=a|0;var b=0;b=vw(16)|0;c[b>>2]=a;c[b+4>>2]=fx(a,b)|0;c[b+12>>2]=b;return b|0}function Sw(a,b){a=a|0;b=b|0;var d=0,e=0;e=vw(8)|0;c[e>>2]=a;c[e+4>>2]=b;d=0;while(1){if((d|0)>=(b|0))break;c[(c[a+(d<<2)>>2]|0)+8>>2]=d;d=d+1|0}d=(b|0)/2|0;while(1){if((d|0)<=-1)break;Xw(e,d);d=d+-1|0}return e|0}function Tw(a){a=a|0;return c[a+4>>2]|0}function Uw(a){a=a|0;var b=0,d=0,e=0,f=0;f=c[a>>2]|0;b=c[f>>2]|0;c[b+8>>2]=-1;d=a+4|0;e=(c[d>>2]|0)+-1|0;c[f>>2]=c[f+(e<<2)>>2];f=c[a>>2]|0;c[(c[f>>2]|0)+8>>2]=0;c[f+(e<<2)>>2]=b;c[d>>2]=e;Xw(a,0);return b|0}function Vw(a){a=a|0;return ex(c[a>>2]|0,0,0)|0}function Ww(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0;b=a+16|0;if((c[(c[b>>2]|0)+164>>2]|0)>-1)ma(87384,87365,463,87398);g=a+48|0;d=ax(c[((c[a>>2]&3|0)==3?a:g)+40>>2]|0)|0;i=a+-48|0;f=ax(c[((c[a>>2]&3|0)==2?a:i)+40>>2]|0)|0;h=c[a>>2]&3;b=(c[(c[(c[((h|0)==2?a:i)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?a:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[b>>2]|0)+170>>1]|0)|0;if((c[d+8>>2]|0)==-1)bx(c[d>>2]|0,0,b);else bx(c[f>>2]|0,0,0-b|0);cx(a);return dx(d,f)|0}function Xw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]|0;g=c[a+4>>2]|0;while(1){a=b<<1;f=a+2|0;a=a|1;if(!((a|0)<(g|0)?(c[(c[h+(a<<2)>>2]|0)+4>>2]|0)<(c[(c[h+(b<<2)>>2]|0)+4>>2]|0):0))a=b;if((f|0)>=(g|0))break;d=h+(f<<2)|0;e=c[d>>2]|0;if((f|0)==(b|0)?1:(c[e+4>>2]|0)>=(c[(c[h+(a<<2)>>2]|0)+4>>2]|0))break;i=h+(b<<2)|0;a=c[i>>2]|0;c[i>>2]=e;c[d>>2]=a;c[(c[i>>2]|0)+8>>2]=b;c[a+8>>2]=f;b=f}return}function Yw(){Ow(c[(c[(c[42298]|0)+16>>2]|0)+192>>2]|0,0,1)|0;Zw(c[(c[(c[42298]|0)+16>>2]|0)+192>>2]|0,0);return}function Zw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;d=0;while(1){a=c[f>>2]|0;e=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!e){e=0;break}if((e|0)!=(b|0))Zw(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e);d=d+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(b|0)){Zw(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,d);a=c[f>>2]|0}e=e+1|0}if(b|0)_w(b);return}function _w(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;e=c[d+16>>2]|0;if((c[e+280>>2]|0)==(a|0))i=1;else{e=c[((b|0)==2?a:a+-48|0)+40>>2]|0;i=-1;d=e;e=c[e+16>>2]|0}g=c[e+180>>2]|0;b=0;f=0;while(1){h=c[g+(f<<2)>>2]|0;if(!h)break;b=($w(h,d,i)|0)+b|0;f=f+1|0}g=c[e+172>>2]|0;e=0;while(1){f=c[g+(e<<2)>>2]|0;if(!f)break;b=($w(f,d,i)|0)+b|0;e=e+1|0}c[(c[a+16>>2]|0)+160>>2]=b;return}function $w(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=(h|0)==3?a:a+48|0;e=c[i+40>>2]|0;if((e|0)==(b|0))e=c[((h|0)==2?a:a+-48|0)+40>>2]|0;g=c[b+16>>2]|0;f=c[(c[e+16>>2]|0)+288>>2]|0;if((c[g+284>>2]|0)<=(f|0)?(f|0)<=(c[g+288>>2]|0):0){f=c[a+16>>2]|0;if((c[f+164>>2]|0)>-1)e=c[f+160>>2]|0;else e=0;g=1;e=e-(c[f+156>>2]|0)|0}else{g=0;e=c[(c[a+16>>2]|0)+156>>2]|0}i=(c[((d|0)>0?((h|0)==2?a:a+-48|0):i)+40>>2]|0)==(b|0)?1:-1;return (((g?i:0-i|0)|0)<0?0-e|0:e)|0}function ax(a){a=a|0;var b=0,d=0;a=c[(c[a+16>>2]|0)+280>>2]|0;while(1){b=a+12|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[d+12>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function bx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=a+16|0;e=c[h>>2]|0;g=e+232|0;c[g>>2]=(c[g>>2]|0)+d;g=0;while(1){f=c[(c[e+264>>2]|0)+(g<<2)>>2]|0;if(!f){g=0;break}f=c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0;if((f|0)!=(b|0)){bx(f,a,d);e=c[h>>2]|0}g=g+1|0}while(1){f=c[(c[e+272>>2]|0)+(g<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((f|0)!=(b|0)){bx(f,a,d);e=c[h>>2]|0}g=g+1|0}return}function cx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;d=(c[b+16>>2]|0)+164|0;if((c[d>>2]|0)>-1){_l(1,87487,h)|0;Ua(169024,1)}g=c[42299]|0;c[d>>2]=g;d=c[42300]|0;c[42299]=g+1;c[d+(g<<2)>>2]=b;d=c[b>>2]|0;g=b+48|0;e=c[((d&3|0)==3?b:g)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){f=c[42306]|0;d=c[42307]|0;c[42307]=d+1;c[f+(d<<2)>>2]=e;d=c[b>>2]|0}f=b+-48|0;e=c[((d&3|0)==2?b:f)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){i=c[42306]|0;d=c[42307]|0;c[42307]=d+1;c[i+(d<<2)>>2]=e;d=c[b>>2]|0}i=(c[((d&3|0)==3?b:g)+40>>2]|0)+16|0;d=c[i>>2]|0;a[d+157>>0]=1;e=c[d+272>>2]|0;d=d+276|0;g=c[d>>2]|0;c[d>>2]=g+1;c[e+(g<<2)>>2]=b;g=c[i>>2]|0;c[(c[g+272>>2]|0)+(c[g+276>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+180>>2]|0)+((c[i+276>>2]|0)+-1<<2)>>2]|0)){_l(1,87521,h+8|0)|0;Ua(169024,1)}i=(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16|0;e=c[i>>2]|0;a[e+157>>0]=1;f=c[e+264>>2]|0;e=e+268|0;g=c[e>>2]|0;c[e>>2]=g+1;c[f+(g<<2)>>2]=b;b=c[i>>2]|0;c[(c[b+264>>2]|0)+(c[b+268>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+172>>2]|0)+((c[i+268>>2]|0)+-1<<2)>>2]|0)){_l(1,87556,h+16|0)|0;Ua(169024,1)}else{l=h;return}}function dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;while(1){g=a+12|0;d=c[g>>2]|0;if((d|0)==0|(d|0)==(a|0))break;else a=d}while(1){f=b+12|0;d=c[f>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else b=d}if((a|0)!=(b|0)){e=c[a+8>>2]|0;d=c[b+8>>2]|0;do if((e|0)>-1)if((d|0)==-1)h=a;else j=10;else if((d|0)>-1)if((e|0)==-1){h=b;break}else{j=10;break}else ma(87410,87365,327,87457);while(0);if((j|0)==10)h=(c[b+4>>2]|0)<(c[a+4>>2]|0)?a:b;c[f>>2]=h;c[g>>2]=h;c[h+4>>2]=(c[b+4>>2]|0)+(c[a+4>>2]|0);if((c[h+8>>2]|0)>-1)i=h;else ma(87468,87365,335,87457)}else i=a;return i|0}function ex(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=ax(a)|0;if(d){k=c[d>>2]&3;if(((c[(c[(c[((k|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((k|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)!=(e[(c[d+16>>2]|0)+170>>1]|0|0))f=3}else{d=0;f=3}a:do if((f|0)==3){k=a+16|0;j=0;while(1){f=c[k>>2]|0;i=c[(c[f+180>>2]|0)+(j<<2)>>2]|0;if(!i){j=0;break}f=i+16|0;g=i+-48|0;h=c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0;do if((c[(c[f>>2]|0)+164>>2]|0)>-1){if((h|0)!=(b|0))d=ex(h,a,d)|0}else if((ax(h)|0)!=(l|0)){if(d|0?(m=c[i>>2]&3,h=c[d>>2]&3,((c[(c[(c[((m|0)==2?i:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[f>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((h|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=i}while(0);j=j+1|0}while(1){f=c[(c[f+172>>2]|0)+(j<<2)>>2]|0;if(!f)break a;g=f+16|0;h=f+48|0;i=c[((c[f>>2]&3|0)==3?f:h)+40>>2]|0;do if((c[(c[g>>2]|0)+164>>2]|0)>-1){if((i|0)!=(b|0))d=ex(i,a,d)|0}else if((ax(i)|0)!=(l|0)){if(d|0?(i=c[f>>2]&3,m=c[d>>2]&3,((c[(c[(c[((i|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((i|0)==3?f:h)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[g>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((m|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=f}while(0);j=j+1|0;f=c[k>>2]|0}}while(0);return d|0}function fx(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+16|0;d=c[l>>2]|0;c[d+280>>2]=b;a=1;h=0;while(1){g=c[(c[d+172>>2]|0)+(h<<2)>>2]|0;if(!g){h=0;break}f=c[g+16>>2]|0;if(((c[f+164>>2]|0)<=-1?(i=c[g>>2]&3,j=g+48|0,k=c[(c[((i|0)==3?g:j)+40>>2]|0)+16>>2]|0,(c[k+280>>2]|0)==0):0)?((c[(c[(c[((i|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[k+232>>2]|0)|0)==(e[f+170>>1]|0|0):0){cx(g);a=(fx(c[((c[g>>2]&3|0)==3?g:j)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}while(1){f=c[(c[d+180>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;if(((c[g+164>>2]|0)<=-1?(m=c[f>>2]&3,n=f+-48|0,o=c[(c[((m|0)==2?f:n)+40>>2]|0)+16>>2]|0,(c[o+280>>2]|0)==0):0)?((c[o+232>>2]|0)-(c[(c[(c[((m|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)==(e[g+170>>1]|0|0):0){cx(f);a=(fx(c[((c[f>>2]&3|0)==2?f:n)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}return a|0}function gx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Im(a,87620)|0;if(!d)d=30;else d=rM(d)|0;return zw(a,b,c,d)|0}function hx(a){a=+a;return +((c[42183]|0)==0?a:+h[20895]-a)}function ix(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0;r=l;l=l+16|0;q=r;c[42308]=c[(c[(c[d+64>>2]|0)+8>>2]|0)+4>>2];jx(d);i=c[d+16>>2]|0;t=+h[i+32>>3];s=+h[i+40>>3];kx(e,87631,+h[b+352>>3]);kx(e,87638,t*.013888888888888888);kx(e,87638,s*.013888888888888888);lx(e);i=co(d)|0;while(1){if(!i)break;g=i+16|0;if(!(a[(c[g>>2]|0)+118>>0]|0)){mx(e,87640,Wp(Dn(i)|0)|0);p=(c[g>>2]|0)+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];nx(e,q);if(!(a[(c[(c[g>>2]|0)+104>>2]|0)+82>>0]|0)){b=ro(i)|0;b=ox(b,c[c[(c[g>>2]|0)+104>>2]>>2]|0)|0}else b=Wp(Jm(i,c[42198]|0)|0)|0;kx(e,87638,+h[(c[g>>2]|0)+32>>3]);kx(e,87638,+h[(c[g>>2]|0)+40>>3]);mx(e,87638,b);mx(e,87638,GA(i,c[42201]|0,95889)|0);mx(e,87638,c[c[(c[g>>2]|0)+8>>2]>>2]|0);mx(e,87638,GA(i,c[42192]|0,122106)|0);b=GA(i,c[42193]|0,174181)|0;if(!(a[b>>0]|0))b=GA(i,c[42192]|0,119592)|0;mx(e,87638,b);lx(e)}i=eo(d,i)|0}o=f<<24>>24==0;n=co(d)|0;while(1){if(!n)break;m=Pm(d,n)|0;while(1){if(!m)break;if(o){f=174181;j=174181}else{j=Im(m,96242)|0;f=Im(m,96251)|0;f=f|0?f:174181;j=j|0?j:174181}p=m+16|0;b=c[p>>2]|0;k=c[b+8>>2]|0;a:do if(k){i=c[k+4>>2]|0;b=0;g=0;while(1){if((b|0)>=(i|0))break;u=(c[(c[k>>2]|0)+(b*48|0)+4>>2]|0)+g|0;b=b+1|0;g=u}mx(e,0,96237);px(e,c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0,j);px(e,c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0,f);qx(e,g);f=0;while(1){b=c[p>>2]|0;g=c[b+8>>2]|0;if((f|0)>=(c[g+4>>2]|0))break a;i=c[g>>2]|0;g=c[i+(f*48|0)>>2]|0;i=c[i+(f*48|0)+4>>2]|0;b=0;while(1){if((b|0)>=(i|0))break;u=g+(b<<4)|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];nx(e,q);b=b+1|0}f=f+1|0}}while(0);if(c[b+96>>2]|0){u=ro(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;mx(e,87638,ox(u,c[c[(c[p>>2]|0)+96>>2]>>2]|0)|0);u=(c[(c[p>>2]|0)+96>>2]|0)+56|0;c[q>>2]=c[u>>2];c[q+4>>2]=c[u+4>>2];c[q+8>>2]=c[u+8>>2];c[q+12>>2]=c[u+12>>2];nx(e,q)}mx(e,87638,GA(m,c[42229]|0,95889)|0);mx(e,87638,GA(m,c[42220]|0,122106)|0);lx(e);m=Rm(d,m)|0}n=eo(d,n)|0}rx(87646,e);l=r;return}function jx(a){a=a|0;var b=0.0;if(c[42183]|0){a=c[a+16>>2]|0;b=+h[a+24>>3]+ +h[a+40>>3];h[20895]=b;h[20896]=b*.013888888888888888}return}function kx(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;if(b|0)rx(b,a);h[e>>3]=c;pL(d,87652,e)|0;rx(d,a);l=f;return}function lx(b){b=b|0;a[174077]=10;ab[c[42308]&63](b,174077)|0;return}function mx(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)rx(b,a);rx(c,a);return}function nx(a,b){a=a|0;b=b|0;var d=0.0;kx(a,87638,+h[b>>3]*.013888888888888888);if(!(c[42183]|0))d=+h[b+8>>3];else d=+h[20895]-+h[b+8>>3];kx(a,87638,d*.013888888888888888);return}function ox(a,b){a=a|0;b=b|0;var c=0;c=$o(a,b)|0;b=Wp(c)|0;bp(a,c)|0;return b|0}function px(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!(a[(c[d+16>>2]|0)+118>>0]|0))d=Wp(Dn(d)|0)|0;else{f=ro(d)|0;d=ox(f,(WJ(Dn(d)|0,58)|0)+1|0)|0}mx(b,87638,d);if(e|0?a[e>>0]|0:0)mx(b,93017,Wp(e)|0);return}function qx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;rx(87638,a);c[f>>2]=b;pL(e,122187,f)|0;rx(e,a);l=d;return}function rx(a,b){a=a|0;b=b|0;ab[c[42308]&63](b,a)|0;return}\nfunction EB(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3]&1;else a=0;return a|0}function FB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n+64|0;j=n+48|0;i=n+32|0;f=n+16|0;g=n;m=a+4|0;d=c[m>>2]|0;if(!d)ma(94759,92694,1637,94767);e=c[a>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)>=(d|0)){h=7;break}d=(c[a>>2]|0)+(e<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if((Yv(i,j,k)|0)!=-1){d=1;break};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];e=e+1|0;d=c[m>>2]|0}do if((h|0)==7){d=c[a+8>>2]|0;if(d|0?(g=a+16|0,h=c[a>>2]|0,c[i>>2]=c[g>>2],c[i+4>>2]=c[g+4>>2],c[i+8>>2]=c[g+8>>2],c[i+12>>2]=c[g+12>>2],c[j>>2]=c[h>>2],c[j+4>>2]=c[h+4>>2],c[j+8>>2]=c[h+8>>2],c[j+12>>2]=c[h+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(GB(i,j,d,k)|0)<<24>>24):0){d=1;break}d=c[a+12>>2]|0;if(d|0?(h=a+32|0,m=(c[a>>2]|0)+((c[m>>2]|0)+-1<<4)|0,c[i>>2]=c[h>>2],c[i+4>>2]=c[h+4>>2],c[i+8>>2]=c[h+8>>2],c[i+12>>2]=c[h+12>>2],c[j>>2]=c[m>>2],c[j+4>>2]=c[m+4>>2],c[j+8>>2]=c[m+8>>2],c[j+12>>2]=c[m+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(GB(i,j,d,k)|0)<<24>>24):0){d=1;break}d=0}while(0);l=n;return d|0}function GB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+160|0;g=m+144|0;f=m+128|0;n=m+96|0;i=m+64|0;j=m+32|0;k=m;o=+h[e+16>>3];c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];Rt(n,f,g,1.0,d);if(((o>=+h[n>>3]?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Rt(i,f,g,1.0,d),+h[i+16>>3]>=+h[e>>3]):0)?(o=+h[e+24>>3],c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Rt(j,f,g,1.0,d),o>=+h[j+8>>3]):0)?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Rt(k,f,g,1.0,d),+h[k+24>>3]>=+h[e+8>>3]):0)f=1;else f=0;l=m;return f|0}function HB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;a:do if((b|0)!=0?(e=a[b>>0]|0,e<<24>>24!=0):0){do switch(e<<24>>24|0){case 48:{d=2;break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{d=10;break a}case 67:case 99:{e=b+1|0;if(!(iK(e,94782)|0)){d=4;break a}if(!(iK(e,94788)|0)){d=12;break a}break}case 70:case 102:{if(!(iK(b+1|0,94796)|0)){d=2;break a}break}case 76:case 108:{if(!(iK(b+1|0,94801)|0)){d=2;break a}break}case 78:case 110:{e=b+1|0;if(!(iK(e,94805)|0)){d=0;break a}if(!(iK(e,94809)|0)){d=2;break a}break}case 79:case 111:{if(!(iK(b+1|0,94811)|0)){d=8;break a}break}case 80:case 112:{if(!(iK(b+1|0,94816)|0)){d=6;break a}break}case 83:case 115:{if(!(iK(b+1|0,94824)|0)){d=10;break a}break}case 84:case 116:{if(!(iK(b+1|0,94830)|0)){d=10;break a}break}case 89:case 121:{if(!(iK(b+1|0,94834)|0)){d=10;break a}break}default:{}}while(0);c[f>>2]=b;_l(0,94837,f)|0}while(0);l=g;return d|0}function IB(d,f){d=d|0;f=f|0;var g=0;g=Im(d,94878)|0;if(g)if(!(a[g>>0]|0))f=0;else f=HB(g,f)|0;d=(c[d+16>>2]|0)+136|0;b[d>>1]=f|e[d>>1];return}function JB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0;v=l;l=l+32|0;p=v+16|0;r=v;t=e&1;u=e&2;a:do if((c|0)==2){s=+h[a+16>>3];f=+h[a>>3];j=+h[a+24>>3];i=+h[a+8>>3];f=f-(s-f);h[p>>3]=f;h[r>>3]=s;i=i-(j-i);h[p+8>>3]=i;h[r+8>>3]=j}else{g=+h[a>>3];h[r>>3]=g;h[p>>3]=g;j=+h[a+8>>3];m=r+8|0;h[m>>3]=j;n=p+8|0;h[n>>3]=j;e=0;f=g;i=j;while(1){if((e|0)>=(c|0)){s=g;break a}w=a+(e<<4)|0;q=+h[w>>3];k=+h[(q<f?w:p)>>3];h[p>>3]=k;s=+h[a+(e<<4)+8>>3];o=+h[(s<i?w:p)+8>>3];h[n>>3]=o;q=+h[(q>g?w:r)>>3];h[r>>3]=q;s=+h[(s>j?w:r)+8>>3];h[m>>3]=s;e=e+1|0;f=k;i=o;g=q;j=s}}while(0);g=(s-f)*.5;q=g+f;o=(j-i)*.5;k=o+i;if(!t){f=j-k;j=d;i=+F(+j);j=+E(+j);if(!u){g=i*f-k;f=-k-o*i}else{f=i*f;g=k-f;f=f+k}h[b+8>>3]=g;h[b+24>>3]=f;d=j*(s-q);h[b>>3]=q-d;h[b+16>>3]=d+q}else{d=+C(+(o*o+g*g));h[b+8>>3]=u|0?k:-k;h[b>>3]=q;h[b+16>>3]=d*.25;h[b+24>>3]=d}l=v;return}function KB(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=a+16|0;f=c[e>>2]|0;if(!(b<<24>>24)){d=+h[f+32>>3]*36.0;h[f+88>>3]=d;a=f+40|0}else{d=+h[f+40>>3]*36.0;h[f+88>>3]=d;a=f+32|0}h[f+96>>3]=d;h[(c[e>>2]|0)+80>>3]=+h[a>>3]*72.0;return}function LB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0;y=l;l=l+16|0;j=y+8|0;x=4;w=ZI(40)|0;c[w>>2]=0;s=y;o=0;e=_(22,b|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;a:do if((g|0)!=1){o=0;v=_(23,e<<3|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){e=SN(c[f>>2]|0,w|0,x|0)|0;if(!e)Ua(f|0,p|0);z=p}else e=-1;if((e|0)!=1){if(!(a[174076]|0))t=0;else{o=0;e=Z(2)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){n=0;k=0;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}t=e}o=0;e=$(31,b|0,94886)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[42366]=0;b:do if(e|0?(i=a[e>>0]|0,i<<24>>24):0){h=e;f=i;g=0;while(1){i=h+1|0;if(!(f<<24>>24))break b;switch(f<<24>>24|0){case 99:{e=8;u=16;break}case 105:{e=18;u=16;break}case 109:{e=1;u=16;break}case 114:{e=4;u=16;break}case 115:{e=2;u=16;break}default:e=g}if((u|0)==16){u=0;e=g|e;c[42366]=e}h=i;f=a[i>>0]|0;g=e}}while(0);if(d|0){o=0;aa(11,0,94890,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74;break}}o=0;r=$(32,b|0,0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){m=c[r+16>>2]|0;if(c[42366]&2|0){o=0;ga(25,c[13918]|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break}}o=0;g=_(24,b|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){n=0;while(1){if(!g)break;o=0;e=$(33,b|0,g|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=SN(c[f>>2]|0,w|0,x|0)|0;if(!h)Ua(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}i=n;while(1){if(!e)break;if(!(0==2?(c[(c[e+16>>2]|0)+8>>2]|0)!=0:0))u=32;c:do if((u|0)==32){u=0;do if(a[174076]|0){k=c[e>>2]&3;j=(c[c[((k|0)==3?e:e+48|0)+40>>2]>>2]|0)>>>4;k=(c[c[((k|0)==2?e:e+-48|0)+40>>2]>>2]|0)>>>4;if(j>>>0>k>>>0){o=0;f=aa(15,t|0,k|0,j|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=SN(c[h>>2]|0,w|0,x|0)|0;if(!d)Ua(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ha(59,t|0,k|0,j|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=SN(c[f>>2]|0,w|0,x|0)|0;if(!h)Ua(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}else{o=0;f=aa(15,t|0,j|0,k|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=SN(c[h>>2]|0,w|0,x|0)|0;if(!d)Ua(h|0,p|0);z=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}if(f|0)break c;o=0;ha(59,t|0,j|0,k|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=SN(c[f>>2]|0,w|0,x|0)|0;if(!h)Ua(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}break}}while(0);c[v+(i<<3)+4>>2]=e;o=0;h=_(25,e|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=SN(c[d>>2]|0,w|0,x|0)|0;if(!f)Ua(d|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}c[v+(i<<3)>>2]=h;i=i+1|0}while(0);o=0;e=$(34,b|0,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=SN(c[f>>2]|0,w|0,x|0)|0;if(!h)Ua(f|0,p|0);z=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}}o=0;g=$(35,b|0,g|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74;break a}n=i}o=0;j=_(26,n<<3|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;ja(25,v|0,n|0,8,36);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){g=c[m>>2]|0;o=0;fa(87,g+2|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){i=c[m+16>>2]|0;d=i+(g*40|0)|0;i=i+((g+1|0)*40|0)|0;q=c[13918]|0;h=0;while(1){if((h|0)>=(n|0))break;if((h|0)>0?c[42366]&16|0:0){o=0;ga(25,q|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}e=c[v+(h<<3)+4>>2]|0;k=c[e>>2]&3;g=c[(c[(c[((k|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;e=c[(c[(c[((k|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if((g|0)==(e|0)){o=0;ja(26,m|0,g|0,i|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}else{o=0;ha(60,m|0,e|0,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}o=0;ha(60,m|0,g|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}}o=0;e=aa(16,m|0,i|0,d|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}if(e|0){k=t;m=j;i=r;d=v;h=v;break a}e=j+(h<<3)|0;o=0;ja(27,s|0,m|0,d|0,i|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}g=s;k=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=k;o=0;fa(88,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74;break a}h=h+1|0}o=0;ea(8);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){o=0;e=_(27,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+20>>2]=e;o=0;e=_(28,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)!=1){c[r+24>>2]=e;o=0;ha(61,n|0,j|0,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){w=RN(169468,1,w|0,x|0)|0;x=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)!=1){k=t;m=j;i=r;d=v;h=v;e=0;g=q;u=74}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=z;g=0;u=74}}else{k=t;m=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=v;e=z;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=0;e=z;g=0;u=74}while(0);d:while(1){if((u|0)==74){u=0;if(e|0){q=g;continue}o=0;fa(89,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){A=g;f=h;q=d;r=i;s=j;t=m;v=k;u=n;e=z;g=A;h=f;d=q;i=r;j=s;m=t;k=v;n=u;u=74;continue}if(c[42366]&4|0){o=0;ka(7,g|0,i|0,n|0,m|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}}o=0;la(10,b|0,i|0,n|0,m|0,d|0,0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;A=k;u=n;e=z;g=f;h=q;d=r;i=s;j=t;m=v;k=A;n=u;u=74;continue}q=g}if(!(a[174076]|0))e=0;else{o=0;fa(90,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}e=0}while(1){if((e|0)>=(n|0))break;o=0;fa(91,c[m+(e<<3)+4>>2]|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,w|0,x|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;g=q;u=74;continue d}e=e+1|0}o=0;fa(91,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;fa(92,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74;continue}o=0;fa(91,h|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,w|0,x|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;g=q;u=74}else break}_I(w|0);l=y;return}function MB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;p=q+32|0;o=q+16|0;j=q;k=q+48|0;WL(95757,a)|0;WL(95768,a)|0;m=b+16|0;n=j+8|0;i=k+4|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;d=c[m>>2]|0;e=c[d+(g*40|0)+20>>2]|0;f=c[d+(g*40|0)+24>>2]|0;if((e|0)==(f|0)){FC(j,e);d=~~+h[j>>3];e=~~+h[n>>3]}else{HC(k,(c[e>>2]&1|0)==0?e:f,d+(g*40|0)|0);d=c[k>>2]|0;e=c[i>>2]|0}c[o>>2]=g;c[o+4>>2]=d;c[o+8>>2]=e;zL(a,95788,o)|0;g=g+1|0}f=b+4|0;e=b+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;o=c[e>>2]|0;b=c[o+(d*24|0)+16>>2]|0;r=+h[o+(d*24|0)>>3];c[p>>2]=c[o+(d*24|0)+12>>2];c[p+4>>2]=b;h[p+8>>3]=r;zL(a,95808,p)|0;d=d+1|0}WL(95830,a)|0;l=q;return}function NB(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;f=c[a>>2]&3;e=c[(c[((f|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;a=c[(c[((f|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;b=+h[e+16>>3]-+h[a+16>>3];d=+h[e+24>>3]-+h[a+24>>3];return ~~(d*d+b*b)|0}function OB(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function PB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n;FC(n+16|0,d);k=d+32|0;m=d+36|0;g=0;while(1){if((g|0)>=(c[k>>2]|0))break;h=c[(c[m>>2]|0)+(g<<2)>>2]|0;do if(!(a[h+36>>0]|0)){i=c[h+20>>2]|0;if((i|0)==(d|0)){DC(j,h,c[h+24>>2]|0);YC(b,f,h,0.0)|0;break}else{DC(j,h,i);YC(b,e,h,0.0)|0;break}}while(0);g=g+1|0}c[b>>2]=(c[b>>2]|0)+2;l=n;return}function QB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;h=k;FC(k+16|0,b);i=b+32|0;j=b+36|0;f=0;while(1){if((f|0)>=(c[i>>2]|0))break;g=c[(c[j>>2]|0)+(f<<2)>>2]|0;e=c[g+20>>2]|0;if((e|0)==(b|0))e=c[g+24>>2]|0;DC(h,g,e);YC(a,d,g,0.0)|0;f=f+1|0}c[a>>2]=(c[a>>2]|0)+1;c[d+24>>2]=b;c[d+20>>2]=b;l=k;return}function RB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+128|0;C=H+64|0;n=H+48|0;D=H+32|0;E=H+16|0;F=H;g=0;i=e;while(1){if(!i)break;g=g+1|0;i=c[i+8>>2]|0}B=vw((g*56|0)+-112|0)|0;c[C+52>>2]=0;c[C+48>>2]=0;A=e+8|0;e=c[A>>2]|0;i=c[e+8>>2]|0;g=c[e+20>>2]|0;if(c[g>>2]&1)g=c[e+24>>2]|0;DC(n,e,g);j=e;q=e;p=0.0;o=+h[n>>3];z=0;m=0.0;x=+h[n+8>>3];while(1){y=i+8|0;if(!(c[y>>2]|0))break;v=EC(j,i)|0;uG(d,v,c[q+12>>2]|0);t=q+36|0;u=i+36|0;if((a[t>>0]|0)==(a[u>>0]|0))if((c[y>>2]|0)==(f|0)){DC(E,i,v);e=E;G=12}else{j=q;e=z;k=x}else{FC(D,v);e=D;G=12}if((G|0)==12){G=0;w=+h[e>>3];k=+h[e+8>>3];e=a[t>>0]|0;s=e<<24>>24==0;r=(q|0)==(c[A>>2]|0);if(s){if(!(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?4:2;n=v+48|0;q=g+48|0;j=g+40|0;g=r?0:p>o?4:2}else{if(e<<24>>24==(a[u>>0]|0))e=0;else e=(c[i+20>>2]|0)==(v|0)?1:3;n=v+40|0;q=g+40|0;j=g+48|0;g=r?0:m>x?1:3}GC(C,s&1,+h[j>>3],+h[q>>3],+h[n>>3],g,e);q=z+1|0;g=B+(z*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));if((a[t>>0]|0)!=(a[u>>0]|0)?(c[y>>2]|0)==(f|0):0){DC(F,i,v);n=(a[u>>0]|0)==0;e=v+40|0;g=v+48|0;p=+h[(n?g:e)>>3];GC(C,n&1,+h[(n?e:g)>>3],p,p,n?(o>w?4:2):x>k?1:3,0);n=z+2|0;g=B+(q*56|0)|0;e=C;j=g+56|0;do{c[g>>2]=c[e>>2];g=g+4|0;e=e+4|0}while((g|0)<(j|0));g=v;j=i;p=o;o=w;e=n;m=x}else{g=v;j=i;p=o;o=w;e=q;m=x}}v=i;i=c[y>>2]|0;q=j;z=e;x=k;j=v}i=aJ(B,z*56|0)|0;e=z+-1|0;g=0;while(1){if((g|0)>=(z|0))break;if((g|0)>0)c[i+(g*56|0)+48>>2]=i+((g+-1|0)*56|0);if((g|0)<(e|0)){G=g+1|0;c[i+(g*56|0)+52>>2]=i+(G*56|0);g=G;continue}else{g=g+1|0;continue}}c[b>>2]=z;c[b+4>>2]=i;l=H;return}function SB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Ql(24676,c[4345]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&4)){while(1){d=c[(c[b+36>>2]|0)+8>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=vw(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+40>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|4;d=c[c[f+36>>2]>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+56>>3];yC(j,g,+h[b+48>>3])}i=i+1|0}return j|0}function TB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Ql(24676,c[4345]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&2)){while(1){d=c[(c[b+36>>2]|0)+12>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=vw(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+48>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|2;d=c[(c[f+36>>2]|0)+4>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+64>>3];yC(j,g,+h[b+40>>3])}i=i+1|0}return j|0}function UB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;i=e+24|0;e=0;while(1){if((e|0)>=(b|0))break;g=c[d+(e<<3)>>2]|0;h=c[d+(e<<3)+4>>2]|0;f=0;while(1){if((f|0)>=(g|0))break;k=h+(f*56|0)|0;xC(bC(c[((a[k>>0]|0)==0?j:i)>>2]|0,k)|0,k);f=f+1|0}e=e+1|0}return}function VB(a){a=a|0;var b=0,d=0;d=a+20|0;dC(c[d>>2]|0);b=a+24|0;dC(c[b>>2]|0);eC(c[d>>2]|0);eC(c[b>>2]|0);fC(c[d>>2]|0,a);fC(c[b>>2]|0,a);gC(c[d>>2]|0);gC(c[b>>2]|0);return}function WB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0.0;z=l;l=l+224|0;n=z+176|0;m=z+208|0;x=z+160|0;y=z+128|0;k=z+96|0;t=z+64|0;u=z;o=z+32|0;v=u+8|0;h[v>>3]=1797693134862315708145274.0e284;h[u>>3]=1797693134862315708145274.0e284;w=u+24|0;h[w>>3]=-1797693134862315708145274.0e284;p=u+16|0;h[p>>3]=-1797693134862315708145274.0e284;WL(95005,a)|0;c[n>>2]=10;c[n+4>>2]=10;zL(a,95411,n)|0;WL(123076,a)|0;i=b+4|0;j=b+12|0;q=t+8|0;r=t+16|0;s=t+24|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;D=(c[j>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];C=+h[q>>3];B=+h[r>>3];A=+h[s>>3];h[k>>3]=+h[t>>3];h[k+8>>3]=C;h[k+16>>3]=B;h[k+24>>3]=A;zL(a,123095,k)|0;g=g+1|0}g=0;while(1){if((g|0)>=(d|0))break;D=c[f+(g<<3)+4>>2]|0;k=e+(g<<3)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];c[n+16>>2]=c[u+16>>2];c[n+20>>2]=c[u+20>>2];c[n+24>>2]=c[u+24>>2];c[n+28>>2]=c[u+28>>2];cC(o,a,D,m,b,n);c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];c[u+16>>2]=c[o+16>>2];c[u+20>>2]=c[o+20>>2];c[u+24>>2]=c[o+24>>2];c[u+28>>2]=c[o+28>>2];g=g+1|0}WL(95428,a)|0;i=b+8|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;D=(c[i>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];E=+h[t>>3];A=+h[q>>3];B=+h[r>>3];C=+h[s>>3];h[y>>3]=E;h[y+8>>3]=A;h[y+16>>3]=B;h[y+24>>3]=C;zL(a,123132,y)|0;h[u>>3]=+h[(+h[u>>3]<E?u:t)>>3];h[v>>3]=+h[(+h[v>>3]<A?u:t)+8>>3];h[p>>3]=+h[(+h[p>>3]>B?u:t)+16>>3];h[w>>3]=+h[(+h[w>>3]>C?u:t)+24>>3];g=g+1|0}v=~~(+h[v>>3]+10.0);y=~~(+h[p>>3]+10.0);D=~~(+h[w>>3]+10.0);c[x>>2]=~~(+h[u>>3]+10.0);c[x+4>>2]=v;c[x+8>>2]=y;c[x+12>>2]=D;zL(a,95453,x)|0;l=z;return}function XB(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;N=l;l=l+112|0;F=N+88|0;E=N+72|0;M=N+32|0;I=N+16|0;J=N;K=N+56|0;L=N+40|0;G=c[13918]|0;w=(i|0)==0;x=J+8|0;y=I+8|0;v=0;m=0;n=0;o=0;p=0;i=0;while(1){if((v|0)>=(e|0))break;z=c[g+(v<<3)+4>>2]|0;A=z+48|0;u=(c[(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)+16>>2]|0)+16|0;B=z+16|0;C=(c[B>>2]|0)+16|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2];YB(K,E,F);c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];C=z+-48|0;u=(c[(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)+16>>2]|0)+16|0;t=(c[B>>2]|0)+56|0;c[E>>2]=c[u>>2];c[E+4>>2]=c[u+4>>2];c[E+8>>2]=c[u+8>>2];c[E+12>>2]=c[u+12>>2];c[F>>2]=c[t>>2];c[F+4>>2]=c[t+4>>2];c[F+8>>2]=c[t+8>>2];c[F+12>>2]=c[t+12>>2];YB(L,E,F);c[J>>2]=c[L>>2];c[J+4>>2]=c[L+4>>2];c[J+8>>2]=c[L+8>>2];c[J+12>>2]=c[L+12>>2];t=c[f+(v<<3)>>2]|0;u=c[f+(v<<3)+4>>2]|0;s=t*3|0;D=s+1|0;if((s|0)>=(n|0)){if(m|0)_I(i);p=ww(D<<4)|0;m=p;n=D;o=p;i=p}if(!(a[u>>0]|0)){k=+(_B(u,d)|0);j=+h[I>>3]}else{j=+ZB(u,d);k=+h[y>>3]}r=m+16|0;h[m+16>>3]=j;h[m+24>>3]=k;c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];r=1;q=u;s=2;while(1){if((r|0)>=(t|0))break;q=u+(r*56|0)|0;if(!(a[q>>0]|0))k=+(_B(q,d)|0);else j=+ZB(q,d);O=m+(s+2<<4)|0;Q=m+(s+1<<4)|0;P=m+(s<<4)|0;h[P>>3]=j;h[m+(s<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];r=r+1|0;s=s+3|0}if(!(a[q>>0]|0)){k=+(_B(q,d)|0);j=+h[J>>3]}else{j=+ZB(q,d);k=+h[x>>3]}Q=m+(s<<4)|0;O=s+1|0;P=m+(O<<4)|0;h[P>>3]=j;h[m+(O<<4)+8>>3]=k;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];if(0>1){P=Dn(c[((c[z>>2]&3|0)==3?z:A)+40>>2]|0)|0;Q=Dn(c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0)|0;c[M>>2]=P;c[M+4>>2]=Q;zL(G,94964,M)|0}Jz(z,c[((c[z>>2]&3|0)==2?z:C)+40>>2]|0,m,D,24664);if((!w?(H=c[(c[B>>2]|0)+96>>2]|0,H|0):0)?(a[H+81>>0]|0)==0:0){c[E>>2]=c[I>>2];c[E+4>>2]=c[I+4>>2];c[E+8>>2]=c[I+8>>2];c[E+12>>2]=c[I+12>>2];c[F>>2]=c[J>>2];c[F+4>>2]=c[J+4>>2];c[F+8>>2]=c[J+8>>2];c[F+12>>2]=c[J+12>>2];cA(b,z,E,F)}v=v+1|0}_I(o);l=N;return}function YB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function ZB(a,b){a=a|0;b=b|0;var d=0.0,e=0;b=bC(c[b+24>>2]|0,a)|0;e=c[b+36>>2]|0;d=+h[e+40>>3];return +((+h[e+56>>3]-d)*(+(c[a+44>>2]|0)/+((c[b+24>>2]|0)+1|0))+d)}function _B(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=bC(c[b+20>>2]|0,a)|0;b=c[e+36>>2]|0;d=+h[b+48>>3];return ~~((1.0-+(c[a+44>>2]|0)/+((c[e+24>>2]|0)+1|0))*(+h[b+64>>3]-d)+d)|0}function $B(a){a=a|0;return 0}function aC(a){a=a|0;return 0}function bC(a,b){a=a|0;b=b|0;a=bb[c[a>>2]&31](a,b+8|0,512)|0;if(!a)ma(94977,94983,423,94991);a=c[a+16>>2]|0;a=bb[c[a>>2]&31](a,b+16|0,512)|0;if(!a)ma(95002,94983,425,94991);else return a|0;return 0}function cC(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;z=l;l=l+32|0;y=z+16|0;u=z+8|0;m=z;j=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;t=c[f+4>>2]|0;if(!(a[t>>0]|0)){k=+h[j+56>>3];s=+h[j+40>>3];j=_B(t,g)|0;k=(s+k)*.5}else{k=+h[j+64>>3];s=+h[j+48>>3];j=~~((s+k)*.5);k=+ZB(t,g)}A=~~k;p=+h[i>>3];r=+(A|0);p=p<r?p:r;h[i>>3]=p;v=i+8|0;q=+h[v>>3];s=+(j|0);q=q<s?q:s;h[v>>3]=q;w=i+16|0;k=+h[w>>3];r=k>r?k:r;h[w>>3]=r;x=i+24|0;k=+h[x>>3];s=k>s?k:s;h[x>>3]=s;c[m>>2]=A;c[m+4>>2]=j;zL(d,95504,m)|0;o=c[f>>2]|0;m=t;n=1;f=A;while(1){if((n|0)>=(o|0))break;m=t+(n*56|0)|0;if(!(a[m>>0]|0))j=_B(m,g)|0;else f=~~+ZB(m,g);B=+(f|0);D=p<B?p:B;h[i>>3]=D;k=+(j|0);C=q<k?q:k;h[v>>3]=C;B=r>B?r:B;h[w>>3]=B;k=s>k?s:k;h[x>>3]=k;c[u>>2]=f;c[u+4>>2]=j;zL(d,95526,u)|0;n=n+1|0;p=D;q=C;r=B;s=k}j=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if(!(a[m>>0]|0)){k=+h[j+56>>3];D=+h[j+40>>3];j=_B(m,g)|0;k=(D+k)*.5}else{k=+h[j+64>>3];D=+h[j+48>>3];j=~~((D+k)*.5);k=+ZB(m,g)}A=~~k;C=+(A|0);h[i>>3]=p<C?p:C;D=+(j|0);h[v>>3]=q<D?q:D;h[w>>3]=r>C?r:C;h[x>>3]=s>D?s:D;c[y>>2]=A;c[y+4>>2]=j;zL(d,95540,y)|0;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];c[b+16>>2]=c[i+16>>2];c[b+20>>2]=c[i+20>>2];c[b+24>>2]=c[i+24>>2];c[b+28>>2]=c[i+28>>2];l=z;return}function dC(a){a=a|0;var b=0;a=Ol(a)|0;while(1){if(!a)break;b=Ol(c[a+16>>2]|0)|0;while(1){if(!b)break;c[b+32>>2]=IC(c[b+24>>2]|0)|0;b=c[b>>2]|0}a=c[a>>2]|0}return}function eC(a){a=a|0;var b=0;a=Ol(a)|0;while(1){if(!a)break;b=Ol(c[a+16>>2]|0)|0;while(1){if(!b)break;if(c[b+24>>2]|0)wC(b);b=c[b>>2]|0}a=c[a>>2]|0}return}function fC(a,b){a=a|0;b=b|0;var d=0;d=Ol(a)|0;while(1){if(!d)break;a=Ol(c[d+16>>2]|0)|0;while(1){if(!a)break;kC(a,b);a=c[a>>2]|0}d=c[d>>2]|0}return}function gC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0;e=Ol(a)|0;while(1){if(!e)break;i=e+8|0;f=Ol(c[e+16>>2]|0)|0;while(1){if(!f)break;a=f+24|0;a:do if(c[a>>2]|0){if(c[42366]&8|0)hC(f,~~+h[i>>3]);g=f+32|0;NC(c[g>>2]|0);b=c[a>>2]|0;d=f+28|0;a=0;while(1){if((a|0)>=(b|0))break a;c[(c[(c[d>>2]|0)+(a<<2)>>2]|0)+44>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+(a*12|0)+4>>2]|0)+1;a=a+1|0}}while(0);f=c[f>>2]|0}e=c[e>>2]|0}return}function hC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+32|0;d=j;g=a+24|0;a:do if((c[g>>2]|0)>=2){i=c[13918]|0;m=+h[a+8>>3];k=+h[a+16>>3];c[d>>2]=b;h[d+8>>3]=m;h[d+16>>3]=k;zL(i,95561,d)|0;f=a+32|0;a=a+28|0;b=0;while(1){if((b|0)>=(c[g>>2]|0))break a;e=c[(c[(c[f>>2]|0)+4>>2]|0)+(b*12|0)+8>>2]|0;b:do if(Sl(e)|0){iC(i,c[(c[a>>2]|0)+(b<<2)>>2]|0);WL(95581,i)|0;d=bb[c[e>>2]&31](e,0,128)|0;while(1){if(!d)break b;WL(95586,i)|0;iC(i,c[(c[a>>2]|0)+(c[d>>2]<<2)>>2]|0);WL(134901,i)|0;d=bb[c[e>>2]&31](e,d,8)|0}}while(0);b=b+1|0}}while(0);l=j;return}function iC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;g=l;l=l+80|0;f=g+40|0;e=g;if(!(a[d>>0]|0)){m=+h[d+16>>3];j=+h[d+8>>3];k=+h[d+24>>3];i=jC(c[d+32>>2]|0)|0;e=jC(c[d+36>>2]|0)|0;h[f>>3]=m;h[f+8>>3]=j;h[f+16>>3]=k;h[f+24>>3]=j;c[f+32>>2]=i;c[f+36>>2]=e;zL(b,95592,f)|0}else{k=+h[d+8>>3];j=+h[d+16>>3];m=+h[d+24>>3];f=jC(c[d+32>>2]|0)|0;i=jC(c[d+36>>2]|0)|0;h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=k;h[e+24>>3]=m;c[e+32>>2]=f;c[e+36>>2]=i;zL(b,95592,e)|0}l=g;return}function jC(a){a=a|0;switch(a|0){case 0:{a=95643;break}case 1:{a=95638;break}case 2:{a=95631;break}case 3:{a=95624;break}case 4:{a=95616;break}default:a=0}return a|0}function kC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;r=w+8|0;t=w;u=c[a+32>>2]|0;v=c[a+28>>2]|0;p=a+24|0;m=r+4|0;n=t+4|0;j=0;a=c[p>>2]|0;a:while(1){q=j+1|0;if((q|0)>=(a|0))break;o=v+(j<<2)|0;k=q;while(1){if((k|0)>=(a|0)){j=q;continue a}b:do if(((MC(u,j,k)|0)==0?(MC(u,k,j)|0)==0:0)?(s=v+(k<<2)|0,lC(c[o>>2]|0,c[s>>2]|0)|0):0){f=c[o>>2]|0;a=c[f+48>>2]|0;i=c[s>>2]|0;d=c[i+48>>2]|0;e=(d|0)==0;if(a)if(e)a=1;else a=+h[a+8>>3]!=+h[d+8>>3];else a=e^1;g=a&1;mC(r,f,i,0,g);a=c[r>>2]|0;i=c[m>>2]|0;f=g^1;mC(t,c[o>>2]|0,c[s>>2]|0,1,f);d=c[t>>2]|0;e=c[n>>2]|0;switch(i|0){case -1:{nC(c[s>>2]|0,c[o>>2]|0,g,0,a,b);nC(c[s>>2]|0,c[o>>2]|0,f,1,d,b);if((e|0)!=1)break b;oC(c[o>>2]|0,c[s>>2]|0,f,b);break b}case 0:switch(e|0){case -1:{nC(c[s>>2]|0,c[o>>2]|0,g,0,a,b);nC(c[s>>2]|0,c[o>>2]|0,f,1,d,b);break b}case 0:{nC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);nC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}case 1:{nC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);nC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}default:break b}case 1:{nC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);nC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);if((e|0)!=-1)break b;oC(c[o>>2]|0,c[s>>2]|0,f,b);break b}default:break b}}while(0);k=k+1|0;a=c[p>>2]|0}}l=w;return}function lC(a,b){a=a|0;b=b|0;if(!(+h[a+8>>3]==+h[b+8>>3]))ma(95714,94983,843,95745);if((+h[a+16>>3]==+h[b+16>>3]?+h[a+24>>3]==+h[b+24>>3]:0)?(c[a+32>>2]|0)==(c[b+32>>2]|0):0)a=(c[a+36>>2]|0)==(c[b+36>>2]|0)&1;else a=0;return a|0}function mC(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=0;while(1){b=pC(b,e)|0;if(!b){h=0;break}d=pC(d,f)|0;if(!d){i=6;break}if(!(lC(b,d)|0)){i=7;break}g=g+1|0}if((i|0)==6)ma(123205,94983,871,95663);else if((i|0)==7)h=rC(b,qC(b,d)|0,g+1|0,1-e|0)|0;c[a>>2]=g;c[a+4>>2]=h;return}function nC(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i+20|0;n=i+24|0;i=bC(c[((a[b>>0]|0)==0?o:n)>>2]|0,b)|0;KC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0);k=1;while(1){if((k|0)>(g|0))break;l=pC(b,e)|0;m=pC(d,f)|0;do if(!(a[b>>0]|0)){j=bC(c[n>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==1;i=(MC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==1;i=(MC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}}else{j=bC(c[o>>2]|0,l)|0;if(+h[l+8>>3]==+h[b+16>>3]){p=(c[b+32>>2]|0)==2;i=(MC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else if(i){KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}}else{p=(c[b+36>>2]|0)==2;i=(MC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0)|0)!=0;b=c[j+32>>2]|0;if(p)if(i){KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}else{KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else if(i){KC(b,c[l+40>>2]|0,c[m+40>>2]|0);i=j;break}else{KC(b,c[m+40>>2]|0,c[l+40>>2]|0);i=j;break}}}while(0);b=l;d=m;k=k+1|0}return}function oC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;while(1){if(!(lC(b,d)|0))break;g=pC(b,1)|0;d=pC(d,e)|0;b=g}g=c[(bC(c[((a[b>>0]|0)==0?f+20|0:f+24|0)>>2]|0,b)|0)+32>>2]|0;LC(g,c[b+40>>2]|0,c[d+40>>2]|0);return}function pC(a,b){a=a|0;b=b|0;if(!a)ma(95650,94983,798,95654);else return c[((b|0)==0?a+48|0:a+52|0)>>2]|0;return 0}function qC(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=a[b>>0]|0;if(d<<24>>24==(a[c>>0]|0)?!(+h[b+8>>3]!=+h[c+8>>3]):0){if(!(d<<24>>24))b=sC(b,c,3,1)|0;else b=sC(b,c,4,2)|0;l=f;return b|0}_l(1,95676,e)|0;Ua(169468,1);return 0}function rC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0;j=1;while(1){if((j|0)>(e|0))break;i=pC(b,f)|0;g=+h[i+8>>3]==+h[b+16>>3];do if(!(a[b>>0]|0))if(g){g=(c[b+32>>2]|0)==1;break}else{g=(c[b+36>>2]|0)==3;break}else if(g){g=(c[b+32>>2]|0)==4;break}else{g=(c[b+36>>2]|0)==2;break}while(0);b=i;j=j+1|0;d=g?0-d|0:d}return d|0}function sC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0;j=+h[a+24>>3];k=+h[b+16>>3];do if(!(j<k)?(g=+h[a+16>>3],i=+h[b+24>>3],!(g>i)):0){if(k<j&g<k){b=tC(a,b,d,e)|0;break}if(k<g&g<i){b=0-(tC(b,a,d,e)|0)|0;break}if(!(g==k))if(j==k){d=c[a+36>>2]|0;return ((d|0)==(c[b+32>>2]|0)?0:(d|0)==(e|0)?1:-1)|0}else{d=c[a+32>>2]|0;b=(d|0)==(c[b+36>>2]|0)?0:(d|0)==(e|0)?1:-1;break}if(!(j==i))if(j<i){o=(c[a+36>>2]|0)==(d|0);d=vC(c[b+32>>2]|0,c[a+32>>2]|0,d,e)|0;return (o?d:0-d|0)|0}else{o=(c[b+36>>2]|0)==(e|0);b=vC(c[a+32>>2]|0,c[b+32>>2]|0,d,e)|0;b=o?b:0-b|0;break}o=c[a+32>>2]|0;n=c[b+32>>2]|0;if((o|0)==(n|0)){b=c[b+36>>2]|0;if((c[a+36>>2]|0)==(b|0)){b=0;break}}else b=c[b+36>>2]|0;m=(n|0)==(d|0);if((n|0)==(b|0)){if(m){b=1;break}if((n|0)==(e|0)){b=-1;break}if((o|0)!=(d|0)?(c[a+36>>2]|0)!=(d|0):0){b=1;break}if((o|0)!=(e|0)?(c[a+36>>2]|0)!=(e|0):0){b=-1;break}b=0;break}f=(b|0)==(e|0);if(m&f){b=(c[a+36>>2]|0)==(e|0);if((o|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}l=(b|0)==(d|0);if((n|0)==(e|0)&l){b=(o|0)==(e|0);if((c[a+36>>2]|0)==(d|0)){if(!b){b=-1;break}}else if(b){b=1;break}b=0;break}if(!n){if(l){b=uC(o,c[a+36>>2]|0,d)|0;break}if(f){b=0-(uC(o,c[a+36>>2]|0,e)|0)|0;break}}f=c[a+36>>2]|0;if(m&(b|0)==0){b=uC(f,o,d)|0;break}else{b=0-(uC(f,o,e)|0)|0;break}}else b=0;while(0);return b|0}function tC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0;i=+h[a+24>>3];j=+h[b+24>>3];do if(i<j){a=c[a+36>>2]|0;if((a|0)==(d|0)?(c[b+32>>2]|0)==(e|0):0){a=-1;break}if((a|0)==(e|0)?(c[b+32>>2]|0)==(d|0):0){a=1;break}a=0}else{f=c[b+32>>2]|0;g=(f|0)==(e|0);if(i==j)if(g){a=vC(c[a+36>>2]|0,c[b+36>>2]|0,d,e)|0;break}else{a=0-(vC(c[b+36>>2]|0,c[a+36>>2]|0,d,e)|0)|0;break}if(g?(c[b+36>>2]|0)==(e|0):0){a=-1;break}if((f|0)==(d|0)?(c[b+36>>2]|0)==(d|0):0){a=1;break}a=0}while(0);return a|0}function uC(a,b,c){a=a|0;b=b|0;c=c|0;return ((a|0)==(c|0)?((b|0)==(c|0))<<31>>31:1)|0}function vC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(d|0)){b=(a|0)==0;if(b)return 0;else b=b&1}return ((a|0)!=0|(b|0)!=(c|0))<<31>>31|0}function wC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=c[a+28>>2]|0;h=c[a+24>>2]|0;d=c[a+32>>2]|0;a=0;a:while(1){e=a+1|0;if((e|0)>=(h|0))break;f=g+(a<<2)|0;b=e;while(1){if((b|0)==(h|0)){a=e;continue a}switch(qC(c[f>>2]|0,c[g+(b<<2)>>2]|0)|0){case 1:{KC(d,a,b);break}case -1:{KC(d,b,a);break}default:{}}b=b+1|0}}return}function xC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+24|0;e=c[f>>2]|0;d=e+1|0;c[f>>2]=d;c[b+40>>2]=e;e=a+28|0;a=c[e>>2]|0;if(!a)a=ww(d<<2)|0;else a=yw(a,d<<2)|0;c[e>>2]=a;c[a+((c[f>>2]|0)+-1<<2)>>2]=b;return}function yC(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;h[f>>3]=d;e=bb[c[a>>2]&31](a,f,512)|0;if(!e){e=vw(24)|0;h[e+8>>3]=+h[f>>3];c[e+16>>2]=Ql(24712,c[4345]|0)|0;bb[c[a>>2]&31](a,e,1)|0}f=c[e+16>>2]|0;bb[c[f>>2]&31](f,b,1)|0;l=g;return}function zC(a,b,d){a=a|0;b=b|0;d=d|0;JC(c[b+32>>2]|0);_I(c[b+28>>2]|0);_I(b);return}function AC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(e<f)a=!(+h[b+8>>3]>=+h[c+8>>3])<<31>>31;else a=0;else a=!(+h[b+8>>3]<=+h[c+8>>3])&1;return a|0}function BC(a,b,d){a=a|0;b=b|0;d=d|0;Kl(c[b+16>>2]|0)|0;_I(b);return}function CC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[b>>3];e=+h[c>>3];return (f>e?1:(f<e)<<31>>31)|0}function DC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;i=(a[d+36>>0]|0)!=0;j=e+40|0;do if((c[d+24>>2]|0)==(e|0)){f=+h[j>>3];if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;break}else{g=+h[e+48>>3];f=(+h[e+56>>3]+f)*.5;break}}else if(i){g=(+h[e+64>>3]+ +h[e+48>>3])*.5;f=+h[e+56>>3];break}else{g=+h[e+64>>3];f=(+h[e+56>>3]+ +h[j>>3])*.5;break}while(0);h[b>>3]=f;h[b+8>>3]=g;return}function EC(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;if((d|0)!=(c[b+20>>2]|0)?(d|0)!=(c[b+24>>2]|0):0)d=c[a+24>>2]|0;return d|0}function FC(a,b){a=a|0;b=b|0;var c=0.0;c=(+h[b+64>>3]+ +h[b+48>>3])*.5;h[a>>3]=(+h[b+56>>3]+ +h[b+40>>3])*.5;h[a+8>>3]=c;return}function GC(b,d,e,f,g,i,j){b=b|0;d=d|0;e=+e;f=+f;g=+g;i=i|0;j=j|0;var k=0,l=0;a[b>>0]=d;h[b+8>>3]=e;if(f<g){k=0;l=i;d=j;e=f;f=g}else{k=1;l=j;d=i;e=g}h[b+24>>3]=f;h[b+16>>3]=e;c[b+36>>2]=d;c[b+32>>2]=l;a[b+1>>0]=k;return}function HC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+36>>2]|0;do if((c[e+4>>2]|0)!=(d|0)){if((c[e+12>>2]|0)==(d|0)){e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+48>>3];break}if((c[e+8>>2]|0)==(d|0)){e=~~+h[b+40>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5);break}if((c[e>>2]|0)==(d|0)){e=~~+h[b+56>>3];d=~~((+h[b+64>>3]+ +h[b+48>>3])*.5)}else{e=0;d=0}}else{e=~~((+h[b+56>>3]+ +h[b+40>>3])*.5);d=~~+h[b+64>>3]}while(0);c[a>>2]=e;c[a+4>>2]=d;return}function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=vw(8)|0;c[d>>2]=a;e=d+4|0;c[e>>2]=vw(a*12|0)|0;b=0;while(1){if((b|0)>=(a|0))break;g=fG()|0;f=c[e>>2]|0;c[f+(b*12|0)+8>>2]=g;c[f+(b*12|0)>>2]=0;b=b+1|0}return d|0}function JC(a){a=a|0;var b=0,d=0,e=0;d=a+4|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[a>>2]|0))break;Kl(c[e+(b*12|0)+8>>2]|0)|0;b=b+1|0}_I(e);_I(a);return}function KC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;bb[c[d>>2]&31](d,f,1)|0;l=e;return}function LC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=d;a=a+4|0;g=c[(c[a>>2]|0)+(b*12|0)+8>>2]|0;bb[c[g>>2]&31](g,f,2)|0;c[f>>2]=b;d=c[(c[a>>2]|0)+(d*12|0)+8>>2]|0;bb[c[d>>2]&31](d,f,2)|0;l=e;return}function MC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;d=(bb[c[d>>2]&31](d,f,512)|0)!=0&1;l=e;return d|0}function NC(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;switch(b|0){case 0:break;case 1:{c[(c[a+4>>2]|0)+4>>2]=0;break}default:{e=OC(b)|0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[a>>2]|0)){b=0;break}if(!(c[(c[f>>2]|0)+(d*12|0)>>2]|0))b=PC(a,d,b,e)|0;d=d+1|0}while(1){d=QC(e)|0;if((d|0)<=-1)break;c[(c[f>>2]|0)+(d*12|0)+4>>2]=b;b=b+1|0}RC(e)}}return}function OC(a){a=a|0;var b=0;b=vw(8)|0;c[b+4>>2]=vw(a<<2)|0;c[b>>2]=-1;return b|0}function PC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;g=c[i>>2]|0;j=g+(b*12|0)|0;c[j>>2]=1;g=c[g+(b*12|0)+8>>2]|0;h=g+4|0;d=d+1|0;g=Ol(g)|0;while(1){if(!g)break;f=c[(c[h>>2]|0)+8>>2]|0;if((f|0)<0)f=c[g+8>>2]|0;else f=g+(0-f)|0;f=c[f>>2]|0;if(!(c[(c[i>>2]|0)+(f*12|0)>>2]|0))d=PC(a,f,d,e)|0;g=c[g>>2]|0}c[j>>2]=2;SC(e,b);return d+1|0}function QC(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if((b|0)==-1)a=-1;else{d=c[(c[a+4>>2]|0)+(b<<2)>>2]|0;c[a>>2]=b+-1;a=d}return a|0}function RC(a){a=a|0;_I(c[a+4>>2]|0);_I(a);return}function SC(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[(c[a+4>>2]|0)+(d<<2)>>2]=b;return}function TC(a){a=a|0;var d=0,e=0,f=0;e=c[a>>2]|0;c[a+8>>2]=e;c[a+12>>2]=c[a+4>>2];d=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;f=c[d>>2]|0;b[f+(a*40|0)+18>>1]=b[f+(a*40|0)+16>>1]|0;a=a+1|0}return}function UC(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;c[a>>2]=d;c[a+4>>2]=c[a+12>>2];e=a+16|0;a=0;while(1){if((a|0)>=(d|0))break;f=c[e>>2]|0;b[f+(a*40|0)+16>>1]=b[f+(a*40|0)+18>>1]|0;a=a+1|0}d=d+2|0;while(1){if((a|0)>=(d|0))break;b[(c[e>>2]|0)+(a*40|0)+16>>1]=0;a=a+1|0}return}function VC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=vw(((c[a>>2]|0)*6|0)+(b<<1)<<2)|0;c[a+20>>2]=vw((((c[a>>2]|0)*3|0)+b|0)*24|0)|0;e=c[a>>2]|0;f=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+24|0;a=a+1|0}e=e+2|0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+(b<<2)|0;a=a+1|0}return}function WC(a){a=a|0;var b=0;b=vw(24)|0;c[b>>2]=0;c[b+16>>2]=vw(a*40|0)|0;return b|0}function XC(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=c[a>>2]|0;c[d+(b*40|0)+32>>2]=b;c[a>>2]=b+1;return d+(b*40|0)|0}function YC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=a+4|0;f=c[g>>2]|0;c[g>>2]=f+1;g=c[a+20>>2]|0;a=g+(f*24|0)|0;c[g+(f*24|0)+12>>2]=c[b+32>>2];c[g+(f*24|0)+16>>2]=c[d+32>>2];h[a>>3]=e;c[g+(f*24|0)+8>>2]=0;ZC(b,f);ZC(d,f);return a|0}function ZC(a,d){a=a|0;d=d|0;var e=0,f=0;e=a+16|0;f=b[e>>1]|0;c[(c[a+28>>2]|0)+(f<<16>>16<<2)>>2]=d;b[e>>1]=f+1<<16>>16;return}function _C(a){a=a|0;var b=0;b=a+16|0;_I(c[(c[b>>2]|0)+28>>2]|0);_I(c[b>>2]|0);_I(c[a+20>>2]|0);_I(a);return}function $C(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;i=a+16|0;f=0;while(1){if((f|0)>=(g|0))break;c[(c[i>>2]|0)+(f*40|0)>>2]=-2147483648;f=f+1|0}nG();a:do if(!(qG(d)|0)){c[d+8>>2]=0;c[d>>2]=0;d=a+20|0;b:while(1){g=sG()|0;if(!g){f=0;break a}c[g>>2]=0-(c[g>>2]|0);if((g|0)==(e|0)){f=0;break a}i=g+16|0;j=g+28|0;f=0;while(1){if((f|0)>=(b[i>>1]|0))continue b;k=(c[d>>2]|0)+((c[(c[j>>2]|0)+(f<<2)>>2]|0)*24|0)|0;l=aD(a,k,g)|0;m=c[l>>2]|0;do if((m|0)<0){n=~~-(+h[k>>3]+ +(c[g>>2]|0));if((m|0)==-2147483648){c[l>>2]=n;if(qG(l)|0){f=1;break a}c[l+8>>2]=g;c[l+12>>2]=k;break}else{if((m|0)>=(n|0))break;tG(l,n);c[l+8>>2]=g;c[l+12>>2]=k;break}}while(0);f=f+1|0}}}else f=1;while(0);return f|0}function aD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+12>>2]|0;if((e|0)==(c[d+32>>2]|0))e=c[b+16>>2]|0;return (c[a+16>>2]|0)+(e*40|0)|0}function bD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;Jr(g,3,b)|0;b=c[g+92>>2]|0;do if(b){d=c[b+16>>2]|0;h=c[d+12>>2]|0;c[a+76>>2]=h;e=c[d+16>>2]|0;c[a+84>>2]=e;f=a+80|0;c[f>>2]=c[d>>2];c[a+88>>2]=c[b+4>>2];d=a+152|0;e=c[d>>2]|c[e>>2];c[d>>2]=e;b=c[g+80>>2]|0;if(!b){c[a+60>>2]=0;b=999;break}else{g=c[b+16>>2]|0;c[a+60>>2]=c[g+12>>2];i=c[g+16>>2]|0;c[a+68>>2]=i;c[a+72>>2]=c[b+4>>2];c[d>>2]=e|c[i>>2];c[a+64>>2]=c[((h|0)==0?f:g)>>2];b=300;break}}else b=999;while(0);return b|0}function cD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(!(ir(a)|0))if((b|0)!=0?(d=c[b>>2]|0,(d|0)!=0):0){gb[d&127](a);a=0}else a=0;else a=1;return a|0}function dD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)gb[d&127](a);c[(c[a>>2]|0)+24>>2]=0;qr(a);return}function eD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;e=+h[b+504>>3];f=+h[b+512>>3];i=+h[b+352>>3];if(!(c[b+360>>2]|0)){g=+h[d>>3]+e;d=d+8|0;e=f}else g=-(f+ +h[d+8>>3]);f=+h[b+528>>3]*i*(+h[d>>3]+e);h[a>>3]=+h[b+520>>3]*i*g;h[a+8>>3]=f;return}function fD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;f=+h[a+504>>3];g=+h[a+512>>3];i=+h[a+352>>3];j=+h[a+520>>3]*i;i=+h[a+528>>3]*i;a:do if(!(c[a+360>>2]|0)){a=0;while(1){if((a|0)>=(e|0))break a;h[d+(a<<4)>>3]=(+h[b+(a<<4)>>3]+f)*j;h[d+(a<<4)+8>>3]=(+h[b+(a<<4)+8>>3]+g)*i;a=a+1|0}}else{a=0;while(1){if((a|0)>=(e|0))break a;k=-(j*(+h[b+(a<<4)+8>>3]+g));h[d+(a<<4)+8>>3]=(+h[b+(a<<4)>>3]+f)*i;h[d+(a<<4)>>3]=k;a=a+1|0}}while(0);return d|0}function gD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+8>>2]|0,d|0):0)gb[d&127](a);return}function hD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+12>>2]|0,d|0):0)gb[d&127](a);pr(a);return}function iD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+24>>2]|0,d|0):0)gb[d&127](a);return}function jD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+28>>2]|0,d|0):0)gb[d&127](a);return}function kD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+16>>2]|0,d|0):0){b=c[a+160>>2]|0;kb[d&31](a,c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0,b,c[a+156>>2]|0)}return}function lD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+20>>2]|0,d|0):0)gb[d&127](a);return}function mD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+32>>2]|0,d|0):0)gb[d&127](a);return}function nD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+36>>2]|0,d|0):0)gb[d&127](a);return}function oD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+40>>2]|0,d|0):0)gb[d&127](a);return}function pD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+44>>2]|0,d|0):0)gb[d&127](a);return}function qD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+48>>2]|0,d|0):0)gb[d&127](a);return}function rD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+52>>2]|0,d|0):0)gb[d&127](a);return}function sD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+56>>2]|0,d|0):0)gb[d&127](a);return}function tD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+60>>2]|0,d|0):0)gb[d&127](a);return}function uD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+64>>2]|0,d|0):0)gb[d&127](a);return}function vD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+68>>2]|0,d|0):0)gb[d&127](a);return}function wD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+60>>2]|0;if(g|0?(h=c[g+72>>2]|0,h|0):0)lb[h&7](a,b,d,e,f);return}function xD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+76>>2]|0,d|0):0)gb[d&127](a);return}function yD(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+60>>2]|0;if(d|0?(e=c[d+80>>2]|0,e|0):0)hb[e&31](a,b);return}function zD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+84>>2]|0,d|0):0)gb[d&127](a);return}function AD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;f=k+32|0;h=k;i=k+16|0;j=c[b+60>>2]|0;m=c[e>>2]|0;do if(m|0?a[m>>0]|0:0){m=c[b+16>>2]|0;if(m|0?(c[m+144>>2]|0)==0:0)break;if(!(c[b+152>>2]&8192)){c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];eD(i,b,f);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2]}else{c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2]}if(j|0?(g=c[j+88>>2]|0,g|0):0){c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];ib[g&127](b,f,e)}}while(0);l=k;return}function BD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+16|0;i=WJ(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(CD(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)hb[e&31](b,g);if(h)a[i>>0]=58;return}function CD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;g=k+16|0;j=k+8|0;i=k;c[d>>2]=b;c[d+32>>2]=5;e=RE(b)|0;f=c[a+16>>2]|0;if(!((f|0)!=0?(vM(e,f,c[a+20>>2]|0,4,37)|0)!=0:0))h=3;a:do if((h|0)==3){switch(SE(b,d,c[a+24>>2]|0)|0){case 0:break a;case 1:break;default:{_l(1,95868,g)|0;break a}}a=ww((rJ(b)|0)+16|0)|0;c[i>>2]=b;pL(a,95833,i)|0;if(Dv(a)|0){c[j>>2]=b;_l(0,95842,j)|0}_I(a)}while(0);l=k;return}function DD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+56|0;i=WJ(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(CD(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)hb[e&31](b,g);if(h)a[i>>0]=58;return}function ED(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0;h=c[a+60>>2]|0;i=a+16|0;j=(c[i>>2]|0)+96|0;if(h|0?(CD(c[a+68>>2]|0,b,j),f=c[h+92>>2]|0,f|0):0)hb[f&31](a,j);j=c[i>>2]|0;c[j+136>>2]=d;g[j+140>>2]=e;return}function FD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m;j=c[b+60>>2]|0;b=c[b+16>>2]|0;c[b+160>>2]=d;a:do if((d|0)!=0&(j|0)!=0){j=b+144|0;i=b+152|0;g=b+148|0;b=d;b:while(1){f=b+4|0;b=c[b>>2]|0;if(!b)break a;c:do switch(a[b>>0]|0){case 115:{if(!(xJ(b,95889)|0)){c[j>>2]=3;b=f;continue b}if(!(xJ(b,95910)|0)){e=115;while(1){d=b+1|0;if(!(e<<24>>24))break;b=d;e=a[d>>0]|0}h[i>>3]=+sM(d);b=f;continue b}break}case 100:{if(!(xJ(b,122119)|0)){c[j>>2]=1;b=f;continue b}if(!(xJ(b,122112)|0)){c[j>>2]=2;b=f;continue b}break}case 105:{if(xJ(b,119127)|0?xJ(b,95895)|0:0)break c;c[j>>2]=0;b=f;continue b}case 98:{if(!(xJ(b,95905)|0)){h[i>>3]=2.0;b=f;continue b}break}case 102:{if(!(xJ(b,95923)|0)){c[g>>2]=1;b=f;continue b}break}case 117:{if(!(xJ(b,95930)|0)){c[g>>2]=0;b=f;continue b}break}case 116:{if(!(xJ(b,95939)|0)){b=f;continue b}break}default:{}}while(0);c[k>>2]=b;_l(0,95947,k)|0;b=f}}while(0);l=m;return}function GD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;d=c[a+60>>2]|0;if((d|0?(i=d+96|0,f=c[i>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){d=b+16|0;h[g>>3]=(+h[d>>3]+ +h[b>>3])*.5;h[g+8>>3]=(+h[b+24>>3]+ +h[b+8>>3])*.5;b=g+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];if(!(c[a+152>>2]&8192)){fD(a,g,g,2)|0;f=c[i>>2]|0}ib[f&127](a,g,e)}l=j;return}function HD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o;f=c[a+60>>2]|0;if((f|0?(n=f+100|0,c[n>>2]|0):0)?(k=a+16|0,j=c[k>>2]|0,c[j+144>>2]|0):0){if(!(e&4)){f=e;g=0}else{f=e&-5;e=j+16|0;g=m;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=e;h=j+56|0;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));g=1}if(!(c[a+152>>2]&8192)){e=d+10|0;if((c[42406]|0)<(d|0)){c[42406]=e;e=yw(c[42407]|0,e<<4)|0;c[42407]=e}else e=c[42407]|0;fD(a,b,e,d)|0;kb[c[n>>2]&31](a,e,d,f)}else kb[c[n>>2]&31](a,b,d,f);if(g|0){g=(c[k>>2]|0)+16|0;h=m;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0))}}l=o;return}function ID(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+64|0;f=e;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];g=f+32|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[f+16>>3]=+h[f>>3];h[f+24>>3]=+h[f+40>>3];h[f+48>>3]=+h[g>>3];h[f+56>>3]=+h[f+8>>3];HD(a,f,4,d);l=e;return}function JD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=c[a+60>>2]|0;do if((i|0?(j=i+104|0,h=c[j>>2]|0,h|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){mb[h&15](a,b,d,e,f,g&255);break}h=d+10|0;if((c[42406]|0)<(d|0)){c[42406]=h;h=yw(c[42407]|0,h<<4)|0;c[42407]=h}else h=c[42407]|0;fD(a,b,h,d)|0;mb[c[j>>2]&15](a,h,d,e,f,g&255)}while(0);return}function KD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a+60>>2]|0;do if((e|0?(g=e+108|0,f=c[g>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){ib[f&127](a,b,d);break}e=d+10|0;if((c[42406]|0)<(d|0)){c[42406]=e;e=yw(c[42407]|0,e<<4)|0;c[42407]=e}else e=c[42407]|0;fD(a,b,e,d)|0;ib[c[g>>2]&127](a,e,d)}while(0);return}function LD(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+60>>2]|0;if((d|0?!((e|0)==0|(a[d>>0]|0)==0):0)?(f=c[e+112>>2]|0,f|0):0)hb[f&31](b,d);return}function MD(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+112|0;B=F+64|0;E=F;n=F+96|0;x=F+48|0;y=F+32|0;C=c[b+60>>2]|0;if(!b)ma(96061,96e3,691,96011);if(!d)ma(96030,96e3,692,96011);if(!(a[d>>0]|0))ma(96035,96e3,693,96011);D=Lr(d)|0;if(!D){if((C|0)!=0&(Py(d)|0)!=0?(m=c[C+116>>2]|0,m|0):0)lb[m&7](b,d,e,f,g&255)}else{s=b+432|0;c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];Or(n,D,B);s=c[n>>2]|0;m=c[n+4>>2]|0;if(!((s|0)<1&(m|0)<1)){n=E+16|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];c[E>>2]=c[e>>2];c[E+4>>2]=c[e+4>>2];c[E+8>>2]=c[e+8>>2];c[E+12>>2]=c[e+12>>2];z=E+8|0;A=E+24|0;d=1;while(1){if((d|0)>=(f|0))break;G=e+(d<<4)|0;v=+h[G>>3];h[E>>3]=+h[(+h[E>>3]<v?E:G)>>3];w=+h[e+(d<<4)+8>>3];h[z>>3]=+h[(+h[z>>3]<w?E:G)+8>>3];h[n>>3]=+h[(+h[n>>3]>v?n:G)>>3];h[A>>3]=+h[(+h[A>>3]>w?n:G)+8>>3];d=d+1|0}k=+h[n>>3];j=+h[E>>3];t=k-j;u=+h[A>>3];v=+h[z>>3];w=u-v;o=+(m|0);p=+(s|0);q=t/p;r=w/o;a:do switch(ND(i)|0){case 1:if(q<r){p=q*p;o=q*o;break a}else{p=r*p;o=r*o;break a}case 2:{p=q*p;break}case 3:{o=r*o;break}case 4:{p=q*p;o=r*o;break}default:{}}while(0);if(p<t){t=(t-p)*.5;j=j+t;h[E>>3]=j;k=k-t;h[n>>3]=k}if(o<w){w=(w-o)*.5;h[z>>3]=v+w;h[A>>3]=u-w}if(!(c[b+152>>2]&8192)){c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];eD(x,b,B);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2];c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];eD(y,b,B);c[n>>2]=c[y>>2];c[n+4>>2]=c[y+4>>2];c[n+8>>2]=c[y+8>>2];c[n+12>>2]=c[y+12>>2];k=+h[n>>3];j=+h[E>>3]}if(j>k){h[E>>3]=k;h[n>>3]=j}j=+h[z>>3];k=+h[A>>3];if(j>k){h[z>>3]=k;h[A>>3]=j}if(C|0){G=c[b+72>>2]|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];c[B+16>>2]=c[E+16>>2];c[B+20>>2]=c[E+20>>2];c[B+24>>2]=c[E+24>>2];c[B+28>>2]=c[E+28>>2];PD(b,D,B,g,G)}}}l=F;return}function ND(b){b=b|0;if(a[b>>0]|0)if(iK(b,96043)|0)if(iK(b,96049)|0)if(!(iK(b,96056)|0))b=4;else b=(IA(b)|0)<<24>>24!=0&1;else b=3;else b=2;else b=0;return b|0}function OD(a,b){a=a|0;b=+b;if(c[a+60>>2]|0)h[(c[a+16>>2]|0)+152>>3]=b;return}function PD(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+176|0;k=n+8|0;j=n;h=n+40|0;if(!b)ma(96061,96065,52,96079);if(!d)ma(96091,96065,53,96079);i=c[d+8>>2]|0;if(!i)ma(96094,96065,54,96079);if(!(a[i>>0]|0))ma(96103,96065,55,96079);xK(h,c[d+28>>2]|0)|0;i=h+(rJ(h)|0)|0;a[i>>0]=58;a[i+1>>0]=0;IL(h,g)|0;if((QD(b,h)|0)==999){c[j>>2]=h;_l(0,96115,j)|0}g=c[b+92>>2]|0;if(g|0?(m=c[g>>2]|0,m|0):0){c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];kb[m&31](b,d,k,f)}l=n;return}function QD(a,b){a=a|0;b=b|0;b=Jr(c[a>>2]|0,4,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+92>>2]=c[b+12>>2];c[a+96>>2]=c[b>>2];b=300}return b|0}function RD(a){a=a|0;return 1}function SD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function TD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function UD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function VD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function WD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*1.1;a[b+537>>0]=1;return 0}function XD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*.9090909090909091;a[b+537>>0]=1;return 0}function YD(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;e=b+536|0;d=(a[e>>0]|0)==0;a[e>>0]=d&1;if(d){d=c[b+448>>2]|0;e=c[b+452>>2]|0;i=+(d>>>0);g=+(e>>>0);f=i/+(d|0)<g/+(e|0);h[b+352>>3]=(f?i:g)/+((f?d:e)|0);e=b+336|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;a[b+537>>0]=1}return 0}function ZD(b){b=b|0;var d=0,e=0;d=c[(c[b>>2]|0)+168>>2]|0;e=b+580|0;if(!(c[e>>2]|0)){c[e>>2]=d;e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]|2;nE(b,d)}gu(b,d);a[b+540>>0]=1;return}function _D(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;k=l;l=l+16|0;f=k;switch(d|0){case 1:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];gE(b,f);mE(b);a[b+538>>0]=1;a[b+541>>0]=1;j=13;break}case 2:{a[b+538>>0]=1;a[b+541>>0]=2;j=13;break}case 3:{c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];gE(b,f);a[b+538>>0]=1;a[b+541>>0]=3;j=13;break}case 4:{a[b+536>>0]=0;if(!(c[b+360>>2]|0)){f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i)+ +h[d>>3];g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;d=b+528|0}else{f=b+352|0;i=+h[f>>3];d=b+336|0;h[d>>3]=+h[d>>3]-(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i);g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;d=b+520|0}j=b+344|0;h[j>>3]=g*.10000000000000009/(+h[d>>3]*i)+ +h[j>>3];h[f>>3]=i*1.1;j=13;break}case 5:{a[b+536>>0]=0;j=b+352|0;i=+h[j>>3]*.9090909090909091;h[j>>3]=i;if(!(c[b+360>>2]|0)){f=b+336|0;h[f>>3]=+h[f>>3]-(+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+520>>3]*i);g=+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5;f=b+528|0}else{f=b+336|0;h[f>>3]=(+h[e+8>>3]-+((c[b+452>>2]|0)>>>0)*.5)*.10000000000000009/(+h[b+528>>3]*i)+ +h[f>>3];g=+h[e>>3]-+((c[b+448>>2]|0)>>>0)*.5;f=b+520|0}j=b+344|0;h[j>>3]=+h[j>>3]-g*.10000000000000009/(+h[f>>3]*i);j=13;break}default:{}}if((j|0)==13)a[b+537>>0]=1;b=b+560|0;c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];l=k;return}function $D(b,c,d){b=b|0;c=c|0;d=d|0;a[b+538>>0]=0;a[b+541>>0]=0;return}function aE(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0;k=l;l=l+16|0;e=k;i=b+560|0;j=(+h[d>>3]-+h[i>>3])/+h[b+520>>3];g=(+h[d+8>>3]-+h[b+568>>3])/+h[b+528>>3];if(!(+B(+j)<.0001&+B(+g)<.0001)){switch(a[b+541>>0]|0){case 0:{c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];gE(b,e);break}case 2:{f=+h[b+352>>3];if(!(c[b+360>>2]|0)){e=b+336|0;h[e>>3]=+h[e>>3]-j/f;e=b+344|0;h[e>>3]=+h[e>>3]-g/f}else{e=b+336|0;h[e>>3]=+h[e>>3]-g/f;e=b+344|0;h[e>>3]=+h[e>>3]+j/f}a[b+537>>0]=1;break}default:{}}c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2]}l=k;return}function bE(a,b,c){a=a|0;b=b|0;c=c|0;return}function cE(a){a=a|0;return}function dE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[b>>2]|0;if(d){d=aM(d,123632)|0;if(d|0){i=er(d,0)|0;LL(d)|0;f=5}}else{i=er(c[13853]|0,0)|0;f=5}if((f|0)==5?i|0:0){g=j+168|0;d=c[g>>2]|0;if(d|0){f=c[j+172>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h|0)!=0):0){gb[h&127](d);d=c[g>>2]|0}iw(d);ln(c[g>>2]|0)|0}So(i,0,122277,280,1);So(i,1,122241,304,1);So(i,2,122254,176,1);c[g>>2]=i;c[(c[i+16>>2]|0)+144>>2]=j;if((ls(j,i,e)|0)!=-1){c[b+580>>2]=0;c[b+576>>2]=0;a[b+537>>0]=1}}return}function eE(a,b){a=a|0;b=b|0;a=c[a>>2]|0;ls(a,c[a+168>>2]|0,b)|0;return}function fE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;f=g+160|0;e=c[f>>2]|0;if((e|0)!=0?(c[g+164>>2]|0)==0:0){i=g+192|0;h=c[i>>2]|0;c[f>>2]=0;c[i>>2]=0;f=h}else{f=0;e=0}ns(g,c[g+168>>2]|0,b,d)|0;if(e|0){i=c[a>>2]|0;c[i+160>>2]=e;c[i+192>>2]=f}return}function gE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0;f=l;l=l+80|0;e=f+48|0;g=f;m=f+32|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];hE(m,b,e);k=+h[m>>3];j=+h[m+8>>3];i=1.0/+h[b+352>>3];h[g+16>>3]=i+k;h[g+24>>3]=i+j;h[g>>3]=k-i;h[g+8>>3]=j-i;d=c[(c[b>>2]|0)+168>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];d=iE(d,e)|0;e=b+576|0;if((d|0)!=(c[e>>2]|0)){jE(b);c[e>>2]=d;kE(b);a[b+537>>0]=1}l=f;return}function hE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0;if(!(c[b+360>>2]|0)){e=+h[b+352>>3];f=+h[d+8>>3];g=e;i=b+528|0;e=+h[d>>3]/(+h[b+520>>3]*e)-+h[b+504>>3]}else{e=+h[b+352>>3];f=-+h[d>>3];g=e;i=b+520|0;e=+h[d+8>>3]/(+h[b+528>>3]*e)-+h[b+504>>3]}g=f/(+h[i>>3]*g)-+h[b+512>>3];h[a>>3]=e;h[a+8>>3]=g;return}function iE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g;e=co(a)|0;a:while(1){if(!e){e=9;break}d=Pm(a,e)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((DB(d,f)|0)<<24>>24){e=6;break a}d=Rm(a,d)|0}e=eo(a,e)|0}do if((e|0)!=6)if((e|0)==9){d=fo(a)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((AB(d,f)|0)<<24>>24){e=12;break}d=go(a,d)|0}if((e|0)==12)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];d=lE(a,f)|0;if(!d){d=a;break}else break}while(0);l=g;return d|0}function jE(b){b=b|0;var d=0;d=c[b+576>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{d=(c[d+16>>2]|0)+112|0;a[d>>0]=a[d>>0]&-2;break a}case 1:{d=(c[d+16>>2]|0)+117|0;a[d>>0]=a[d>>0]&-2;break a}case 2:{d=(c[d+16>>2]|0)+115|0;a[d>>0]=a[d>>0]&-2;break a}default:break a}while(0);c[b+584>>2]=0;return}function kE(b){b=b|0;var d=0,e=0;e=b+584|0;d=c[e>>2]|0;if(d|0){_I(d);c[e>>2]=0}d=c[b+576>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{b=(c[d+16>>2]|0)+112|0;a[b>>0]=a[b>>0]|1;b=ym(d,0,96229,0)|0;if(!b)break a;c[e>>2]=qw(Jm(d,b)|0,d)|0;break a}case 1:{b=(c[d+16>>2]|0)+117|0;a[b>>0]=a[b>>0]|1;b=ym(ro(d)|0,1,96229,0)|0;if(!b)break a;c[e>>2]=qw(Jm(d,b)|0,d)|0;break a}case 2:{b=(c[d+16>>2]|0)+115|0;a[b>>0]=a[b>>0]|1;b=ym(ro(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0,2,96229,0)|0;if(!b)break a;c[e>>2]=qw(Jm(d,b)|0,d)|0;break a}default:break a}while(0);return}function lE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+32|0;e=m;g=c[a+16>>2]|0;i=c[g+180>>2]|0;j=g+184|0;d=1;while(1){if((d|0)>(i|0)){k=4;break}f=c[(c[j>>2]|0)+(d<<2)>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];f=lE(f,e)|0;if(!f)d=d+1|0;else{a=f;break}}do if((k|0)==4){o=+h[g+24>>3];n=+h[g+40>>3];if(((+h[b+16>>3]>=+h[g+16>>3]?+h[g+32>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=o:0)?n>=+h[b+8>>3]:0)break;a=0}while(0);l=m;return a|0}function mE(b){b=b|0;var d=0,e=0,f=0;f=b+580|0;d=c[f>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]&-7|4;break a}case 1:{e=(c[d+16>>2]|0)+117|0;a[e>>0]=a[e>>0]&-7|4;break a}case 2:{e=(c[d+16>>2]|0)+115|0;a[e>>0]=a[e>>0]&-7|4;break a}default:break a}while(0);d=b+588|0;e=c[d>>2]|0;if(e|0){_I(e);c[d>>2]=0}d=c[b+576>>2]|0;c[f>>2]=d;b:do if(d|0)switch(Co(d)|0){case 0:{f=(c[d+16>>2]|0)+112|0;a[f>>0]=a[f>>0]|2;nE(b,d);break b}case 1:{f=(c[d+16>>2]|0)+117|0;a[f>>0]=a[f>>0]|2;oE(b,d);break b}case 2:{f=(c[d+16>>2]|0)+115|0;a[f>>0]=a[f>>0]|2;pE(b,d);break b}default:break b}while(0);return}function nE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+592|0;do if((so(b)|0)==(b|0))if(!(qn(b)|0)){Er(d,0,96286);break}else{Er(d,0,96278);break}else Er(d,0,96292);while(0);Er(d,1,Dn(b)|0);c[a+596>>2]=2;f=a+604|0;d=0;e=2;while(1){d=Dm(b,0,d)|0;if(!d)break;Er(f,e,c[d+8>>2]|0);Er(f,e+1|0,Jm(b,d)|0);Er(f,e+2|0,0);e=e+3|0}c[a+608>>2]=e;d=ym(b,0,96264,0)|0;if(!d){d=ym(b,0,96269,0)|0;if(d|0)g=11}else g=11;if((g|0)==11)c[a+588>>2]=qw(Jm(b,d)|0,b)|0;return}function oE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+592|0;Er(f,0,96273);Er(f,1,Dn(b)|0);c[a+596>>2]=2;f=a+604|0;g=so(ro(b)|0)|0;e=2;d=0;while(1){d=Dm(g,1,d)|0;if(!d)break;Er(f,e,c[d+8>>2]|0);Er(f,e|1,Jm(b,d)|0);e=e+2|0}c[a+608>>2]=e;d=ym(ro(b)|0,1,96264,0)|0;if(!d){d=ym(ro(b)|0,1,96269,0)|0;if(d|0)h=6}else h=6;if((h|0)==6)c[a+588>>2]=qw(Jm(b,d)|0,b)|0;return}function pE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=a+592|0;Er(h,0,96237);k=b+48|0;Er(h,1,Dn(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0);k=(qn(ro(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0)|0)!=0;Er(h,3,k?122546:122549);k=b+-48|0;Er(h,4,Dn(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0);c[a+596>>2]=7;i=a+604|0;j=so(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0)|0;g=7;d=0;a:while(1){while(1){d=Dm(j,2,d)|0;if(!d)break a;e=d+8|0;f=c[e>>2]|0;if(!(xJ(f,96242)|0)){l=5;break}if(!(xJ(f,96251)|0)){l=7;break}if(xJ(f,96260)|0)break;Er(h,6,Jm(b,d)|0)}if((l|0)==5){l=0;Er(h,2,Jm(b,d)|0)}else if((l|0)==7){l=0;Er(h,5,Jm(b,d)|0)}Er(i,g,c[e>>2]|0);Er(i,g+1|0,Jm(b,d)|0);g=g+2|0}c[a+608>>2]=g;d=ym(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,96264,0)|0;if(!d){d=ym(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,96269,0)|0;if(d|0)l=13}else l=13;if((l|0)==13)c[a+588>>2]=qw(Jm(b,d)|0,b)|0;return}function qE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=rE(a,b,c[d>>2]|0)|0;d=c[d+4>>2]|0;while(1){f=c[d+4>>2]|0;if(!f)break;b=0;while(1){e=c[f+(b*20|0)+4>>2]|0;if(!e)break;Hr(a,c[d>>2]|0,e,c[f+(b*20|0)+8>>2]|0,g,f+(b*20|0)|0)|0;b=b+1|0}d=d+8|0}return}function rE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=ww(12)|0;if(!b)b=0;else b=GL(b)|0;c[e+4>>2]=b;c[e+8>>2]=GL(d)|0;d=a+100|0;c[e>>2]=c[d>>2];c[d>>2]=e;return e|0}function sE(b,c){b=b|0;c=c|0;tE(b);a[b+44>>0]=0;uE(b)|0;tA(b)|0;return}function tE(b){b=b|0;var d=0,e=0;d=c[b+32>>2]|0;a:do if(d|0)while(1){e=c[d>>2]|0;if(!e)break a;if((a[e>>0]|0)==103?hL(e,96301)|0:0)qE(b,0,c[d+4>>2]|0);d=d+8|0}while(0);return}function uE(a){a=a|0;var b=0;b=Jr(a,2,96314)|0;if(!b)a=999;else{c[a+148>>2]=c[(c[b+16>>2]|0)+12>>2];a=300}return a|0}function vE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+148>>2]|0;if((a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)a=ab[e&63](b,d)|0;else a=0;return a|0}function wE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function xE(a){a=a|0;var b=0.0,d=0.0;a=c[a+16>>2]|0;d=+h[a+16>>3];b=+h[a+24>>3];return (yE(~~(d>b?d:b)>>>0)|0)+1|0}function yE(a){a=a|0;var b=0,c=0;if(!a)a=-1;else{c=a>>>0>65535;a=c?a>>>16:a;c=c?16:0;b=a>>>0>255;a=b?a>>>8:a;c=b?c|8:c;b=a>>>0>15;a=b?a>>>4:a;c=b?c|4:c;b=a>>>0>3;a=(b?c|2:c)+((b?a>>>2:a)>>>0>1&1)|0}return a|0}function zE(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;q=r;p=AE(b,d,e,f,g)|0;e=BE(p)|0;if((e|0)>=0){n=q+16|0;o=q+24|0;m=q+8|0;k=g+32|0;e=0;g=0;while(1){if((g|0)>=(d|0))break;f=b+(g*40|0)+32|0;do if(c[f>>2]|0){CE(q,p,b+(g*40|0)|0);i=+h[n>>3];j=+h[o>>3];if(!(c[q>>2]|0)){a[(c[f>>2]|0)+36>>0]=1;break}if(+h[m>>3]==0.0){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1;break}if((a[k>>0]|0)==1){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1}else e=1}while(0);g=g+1|0}DE(p)}l=r;return e|0}function AE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=vw(28)|0;j=Ql(24896,c[4348]|0)|0;h=g+20|0;c[h>>2]=j;do if(j){j=jH()|0;c[g+24>>2]=j;if(!j){XL(96532,14,1,c[13918]|0)|0;i=6;break}else{c[g>>2]=a;c[g+4>>2]=b;c[g+8>>2]=d;c[g+12>>2]=e;c[g+16>>2]=f;break}}else{XL(96532,14,1,c[13918]|0)|0;i=6}while(0);if((i|0)==6){a=c[h>>2]|0;if(a|0)Kl(a)|0;a=c[g+24>>2]|0;if(a|0)lH(a)|0;_I(g);g=0}return g|0}function BE(a){a=a|0;var b=0;b=ME(a)|0;if((b|0)>=0){NE(a);OE(a);b=Kl(c[a+20>>2]|0)|0}return b|0}function CE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0;M=l;l=l+464|0;J=M+416|0;L=M+400|0;G=M+384|0;m=M+352|0;n=M+320|0;o=M+288|0;p=M+256|0;r=M+224|0;s=M+192|0;t=M+160|0;u=M+128|0;v=M+96|0;x=M+64|0;y=M+32|0;H=M;z=c[d+32>>2]|0;e=+h[z>>3];C=d+16|0;A=(e*2.0+ +h[C>>3])*.125;D=z+8|0;I=d+24|0;i=+h[I>>3];K=(+h[D>>3]*2.0+i)*.5;if(!z)ma(96325,96335,445,96345);f=J;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));B=z+16|0;h[B>>3]=+h[d>>3]-e;E=d+8|0;F=z+24|0;h[F>>3]=i+ +h[E>>3];EE(m,b,d,J);j=c[m>>2]|0;f=c[m+4>>2]|0;e=+h[m+8>>3];m=m+16|0;c[L>>2]=c[m>>2];c[L+4>>2]=c[m+4>>2];c[L+8>>2]=c[m+8>>2];c[L+12>>2]=c[m+12>>2];a:do if(!j){c[a>>2]=0;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}else{h[F>>3]=+h[E>>3];EE(n,b,d,J);g=c[n>>2]|0;m=c[n+4>>2]|0;i=+h[n+8>>3];n=n+16|0;c[G>>2]=c[n>>2];c[G+4>>2]=c[n+4>>2];c[G+8>>2]=c[n+8>>2];c[G+12>>2]=c[n+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=m;e=i}else g=j;h[F>>3]=+h[E>>3]-+h[D>>3];EE(o,b,d,J);m=c[o>>2]|0;j=c[o+4>>2]|0;i=+h[o+8>>3];o=o+16|0;c[G>>2]=c[o>>2];c[G+4>>2]=c[o+4>>2];c[G+8>>2]=c[o+8>>2];c[G+12>>2]=c[o+12>>2];if(!m){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else m=g;h[B>>3]=+h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];EE(p,b,d,J);g=c[p>>2]|0;j=c[p+4>>2]|0;i=+h[p+8>>3];p=p+16|0;c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];EE(r,b,d,J);g=c[r>>2]|0;j=c[r+4>>2]|0;i=+h[r+8>>3];r=r+16|0;c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[B>>3]=+h[C>>3]+ +h[d>>3];h[F>>3]=+h[I>>3]+ +h[E>>3];EE(s,b,d,J);g=c[s>>2]|0;j=c[s+4>>2]|0;i=+h[s+8>>3];s=s+16|0;c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3];EE(t,b,d,J);g=c[t>>2]|0;j=c[t+4>>2]|0;i=+h[t+8>>3];t=t+16|0;c[G>>2]=c[t>>2];c[G+4>>2]=c[t+4>>2];c[G+8>>2]=c[t+8>>2];c[G+12>>2]=c[t+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=g;f=j;e=i}h[F>>3]=+h[E>>3]-+h[D>>3];EE(u,b,d,J);g=c[u>>2]|0;j=c[u+4>>2]|0;i=+h[u+8>>3];u=u+16|0;c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(!g){c[a>>2]=0;c[a+4>>2]=j;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break}if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];f=j;e=i}else g=m;j=(c[J+28>>2]|0)==0;do if(!(c[J+24>>2]|0))if(j){if(c[J+32>>2]|0){w=38;break}if(!((c[J+12>>2]|0)==0&(c[J>>2]|0)==0))w=38}else w=46;else if(j)w=38;else w=46;while(0);b:do if((w|0)==38)if(!(c[J+32>>2]|0)){h[B>>3]=+h[d>>3]-+h[z>>3];p=v+4|0;r=v+8|0;s=v+16|0;m=F;j=E;i=+h[I>>3];c:while(1){while(1){h[m>>3]=+h[j>>3]+i;if(!(+h[B>>3]<=+h[C>>3]+ +h[d>>3])){w=46;break b}EE(v,b,d,J);n=c[v>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break c;if(k<e)break;else{m=B;j=B;i=A}}c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}else w=46;while(0);d:do if((w|0)==46)if((c[J+12>>2]|0)==0&(c[J>>2]|0)==0){h[B>>3]=+h[d>>3]-+h[z>>3];k=+h[E>>3];n=x+4|0;o=x+8|0;p=x+16|0;i=k;k=+h[I>>3]+k;while(1){h[F>>3]=k;if(!(k>=i-+h[D>>3]))break d;EE(x,b,d,J);j=c[x>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}i=+h[E>>3];k=+h[F>>3]-K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);i=+h[d>>3];k=+h[C>>3]+i;h[B>>3]=k;q=+h[D>>3];h[F>>3]=+h[E>>3]-q;j=c[J+4>>2]|0;do if(!(c[J+8>>2]|0)){m=c[J>>2]|0;if(!((j|0)==0&(m|0)==0)){w=59;break}if(c[J+20>>2]|0){j=0;m=0;w=59;break}if(c[J+32>>2]|0){j=0;m=0;w=59}}else{m=c[J>>2]|0;w=59}while(0);e:do if((w|0)==59){f:do if((j|0)==0&(m|0)==0){h[B>>3]=k;p=y+4|0;r=y+8|0;s=y+16|0;m=F;j=E;i=q;g:while(1){while(1){h[m>>3]=+h[j>>3]-i;i=+h[d>>3];if(!(+h[B>>3]>=i-+h[z>>3]))break f;EE(y,b,d,J);n=c[y>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[G>>2]=c[s>>2];c[G+4>>2]=c[s+4>>2];c[G+8>>2]=c[s+8>>2];c[G+12>>2]=c[s+12>>2];if(!n)break g;if(k<e)break;else{m=B;j=B;i=A}}c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];m=B;j=B;i=A;g=n;f=o;e=k}c[a>>2]=0;c[a+4>>2]=o;h[a+8>>3]=k;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);if(c[J+20>>2]|0)break;if(c[J+32>>2]|0)break;h[B>>3]=+h[C>>3]+i;i=+h[E>>3];n=H+4|0;o=H+8|0;p=H+16|0;k=i;i=i-+h[D>>3];while(1){h[F>>3]=i;if(!(i<=+h[I>>3]+k))break e;EE(H,b,d,J);j=c[H>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[G>>2]=c[p>>2];c[G+4>>2]=c[p+4>>2];c[G+8>>2]=c[p+8>>2];c[G+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[L>>2]=c[G>>2];c[L+4>>2]=c[G+4>>2];c[L+8>>2]=c[G+8>>2];c[L+12>>2]=c[G+12>>2];g=j;f=m;e=i}k=+h[E>>3];i=+h[F>>3]+K}c[a>>2]=0;c[a+4>>2]=m;h[a+8>>3]=i;a=a+16|0;c[a>>2]=c[G>>2];c[a+4>>2]=c[G+4>>2];c[a+8>>2]=c[G+8>>2];c[a+12>>2]=c[G+12>>2];break a}while(0);c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;a=a+16|0;c[a>>2]=c[L>>2];c[a+4>>2]=c[L+4>>2];c[a+8>>2]=c[L+8>>2];c[a+12>>2]=c[L+12>>2]}while(0);l=M;return}function DE(a){a=a|0;lH(c[a+24>>2]|0)|0;_I(a);return}function EE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;s=t+16|0;p=t;g=c[e+32>>2]|0;if(!g)ma(96325,96335,382,96354);o=g+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=d+4|0;m=0;g=0;while(1){if((m|0)>=(c[o>>2]|0))break;j=c[d>>2]|0;k=j+(m*40|0)|0;do if((k|0)!=(e|0)){if(+h[j+(m*40|0)+16>>3]>0.0?+h[j+(m*40|0)+24>>3]>0.0:0)break;g=g+((FE(e,k)|0)!=0&1)|0}while(0);m=m+1|0}GE(e,q);m=c[d+24>>2]|0;m=nH(m,c[m>>2]|0,q)|0;if(!m){c[b>>2]=g;h[b+8>>3]=0.0;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}else{k=m;i=0.0;while(1){if(!k)break;j=c[(c[k+4>>2]|0)+16>>2]|0;if((j|0)!=(e|0)){HE(j,s);n=+IE(q,s);if(n>0.0){g=g+1|0;i=+JE(e,j,q,n,f)+i}d=c[j+32>>2]|0;if(((d|0)!=0?(a[d+36>>0]|0)!=0:0)?(GE(j,s),r=+IE(q,s),r>0.0):0){g=g+1|0;i=+KE(e,j,q,r,f)+i}}k=c[k>>2]|0}iH(m);c[b>>2]=g;h[b+8>>3]=i;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}l=t;return}function FE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0;a=c[a+32>>2]|0;if(+h[b+16>>3]==0.0?+h[b+24>>3]==0.0:0){if((((a|0)!=0?(d=+h[b>>3],e=+h[a+16>>3],d>e):0)?d<+h[a>>3]+e:0)?(f=+h[b+8>>3],g=+h[a+24>>3],f>g):0)a=f<+h[a+8>>3]+g&1;else a=0;return a|0}ma(96391,96335,219,96428);return 0}function GE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a+32>>2]|0;e=+h[a+16>>3];c[b>>2]=~~e;d=+h[a+24>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a>>3]+e);c[b+12>>2]=~~(+h[a+8>>3]+d);return}function HE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;e=+h[a>>3];c[b>>2]=~~e;d=+h[a+8>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(+h[a+16>>3]+e);c[b+12>>2]=~~(+h[a+24>>3]+d);return}function IE(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=c[a+8>>2]|0;j=c[b>>2]|0;if((((i|0)>=(j|0)?(k=c[a>>2]|0,l=c[b+8>>2]|0,(k|0)<=(l|0)):0)?(e=c[a+12>>2]|0,f=c[b+4>>2]|0,(e|0)>=(f|0)):0)?(g=c[a+4>>2]|0,h=c[b+12>>2]|0,(g|0)<=(h|0)):0)d=(+(c[((e|0)<(h|0)?a:b)+12>>2]|0)-+(c[((g|0)>(f|0)?a:b)+4>>2]|0))*(+(c[((i|0)<(l|0)?a:b)+8>>2]|0)-+(c[((k|0)>(j|0)?a:b)>>2]|0));else d=0.0;return +d}function JE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=LE(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{HE(a,i);g=+IE(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(GE(a,i),h=+IE(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function KE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=LE(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{HE(a,i);g=+IE(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(GE(a,i),h=+IE(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function LE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=c[b+32>>2]|0;f=c[d+32>>2]|0;if((e|0)==(f|0))ma(96370,96335,276,96380);do if((a[e+36>>0]|0)!=0?(a[f+36>>0]|0)!=0:0){j=+h[b>>3];if(j==0.0?+h[b+8>>3]==0.0:0){e=-1;break}k=+h[d>>3];i=+h[d+8>>3];if(!(k==0.0&i==0.0)){g=+h[b+8>>3];if(i<g){if(k<j){e=0;break}e=k>j?2:1;break}e=k<j;if(i>g){if(e){e=6;break}e=k>j?8:7;break}if(!e)if(k>j)e=5;else e=-1;else e=3}else e=-1}else e=-1;while(0);return e|0}function ME(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+32|0;d=k+24|0;e=k+16|0;f=k;g=xE(a)|0;h=a+4|0;i=e+4|0;j=a+20|0;b=0;while(1){if((b|0)>=(c[h>>2]|0)){b=0;break}m=vw(32)|0;o=(c[a>>2]|0)+(b*40|0)|0;n=m+12|0;c[m+28>>2]=o;PE(f,o);c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];n=c[n>>2]|0;c[e>>2]=(((c[m+20>>2]|0)-n|0)/2|0)+n;n=c[m+16>>2]|0;c[i>>2]=(((c[m+24>>2]|0)-n|0)/2|0)+n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[m+8>>2]=QE(d,g)|0;n=c[j>>2]|0;if(!(bb[c[n>>2]&31](n,m,1)|0)){b=-1;break}else b=b+1|0}l=k;return b|0}function NE(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;e=c[d>>2]|0;b=a+24|0;a=bb[c[e>>2]&31](e,0,128)|0;while(1){if(!a)break;e=c[b>>2]|0;oH(e,a+12|0,c[a+28>>2]|0,e,0)|0;e=c[d>>2]|0;a=bb[c[e>>2]&31](e,a,8)|0}return}function OE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a+20|0;f=Sl(c[e>>2]|0)|0;d=0;while(1){if(!(Sl(c[e>>2]|0)|0))break;g=c[e>>2]|0;a=c[(c[g+8>>2]|0)+4>>2]|0;if(!a){h=8;break}b=c[(c[g+4>>2]|0)+8>>2]|0;if((b|0)<0)a=c[a+8>>2]|0;else a=a+(0-b)|0;if(!a){h=8;break}bb[c[g>>2]&31](g,a,4096)|0;_I(a);d=d+1|0}if((h|0)==8)ma(96441,96335,616,96444);if((f|0)==(d|0))return;else ma(96456,96335,623,96444)}function PE(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0.0;d=c[b+32>>2]|0;if(!d){e=0.0;f=0.0}else{e=+h[d>>3];f=+h[d+8>>3]}l=+h[b>>3];k=~~+A(+(l-e));g=+h[b+8>>3];j=~~+A(+(g-f));i=~~+N(+(l+e+ +h[b+16>>3]));if((i|0)==2147483647)ma(96468,96335,264,96495);d=~~+N(+(g+f+ +h[b+24>>3]));if((d|0)==2147483647)ma(96505,96335,266,96495);else{c[a>>2]=k;c[a+4>>2]=j;c[a+8>>2]=i;c[a+12>>2]=d;return}}function QE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=0;e=c[a>>2]|0;d=c[a+4>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;i=e>>>a&1;b=d>>>a&1;g=b+-1|0;h=g&(e^d);g=g&0-i;f=i<<1|f<<2|i^b;b=a;e=h^e^g;d=h^d^g}return f|0}function RE(b){b=b|0;var d=0,e=0,f=0,g=0;d=rJ(b)|0;if(d>>>0>=(c[42408]|0)>>>0){d=d+11|0;c[42408]=d;d=yw(c[42409]|0,d)|0;c[42409]=d;if(!d)d=0;else e=4}else{d=c[42409]|0;e=4}if((e|0)==4){g=d;while(1){e=a[b>>0]|0;if(!(e<<24>>24))break;f=e&255;if(kK(f)|0)e=(jK(f)|0)&255;a[g>>0]=e;g=g+1|0;b=b+1|0}a[g>>0]=0}return d|0}function SE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0;F=l;l=l+144|0;s=F+96|0;p=F+80|0;v=F+124|0;t=F+72|0;w=F+64|0;x=F+56|0;C=F+48|0;D=F+40|0;E=F+32|0;y=F+24|0;z=F+16|0;A=F+8|0;B=F;i=F+120|0;m=F+116|0;n=F+112|0;o=F+108|0;c[e+32>>2]=f;r=b;while(1)if((a[r>>0]|0)==32)r=r+1|0;else break;c[o>>2]=255;b=a[r>>0]|0;a:do if(b<<24>>24==35){c[p>>2]=i;c[p+4>>2]=m;c[p+8>>2]=n;c[p+12>>2]=o;if((cM(r,96547,p)|0)<=2){b=a[r>>0]|0;q=12;break}switch(f|0){case 0:{G=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=G;g=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=g;j=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=j;k=+((c[o>>2]|0)>>>0)*.00392156862745098;TE(G,g,j,t,w,x);h[e>>3]=+h[t>>3];h[e+8>>3]=+h[w>>3];h[e+16>>3]=+h[x>>3];h[e+24>>3]=k;b=0;break a}case 1:{a[e>>0]=c[i>>2];a[e+1>>0]=c[m>>2];a[e+2>>0]=c[n>>2];a[e+3>>0]=c[o>>2];b=0;break a}case 3:{j=+((c[i>>2]|0)>>>0)*.00392156862745098;h[C>>3]=j;k=+((c[m>>2]|0)>>>0)*.00392156862745098;h[D>>3]=k;G=+((c[n>>2]|0)>>>0)*.00392156862745098;h[E>>3]=G;UE(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break a}case 2:{c[e>>2]=(((c[i>>2]|0)*65535|0)>>>0)/255|0;c[e+4>>2]=(((c[m>>2]|0)*65535|0)>>>0)/255|0;c[e+8>>2]=(((c[n>>2]|0)*65535|0)>>>0)/255|0;c[e+12>>2]=(((c[o>>2]|0)*65535|0)>>>0)/255|0;b=0;break a}case 4:{h[e>>3]=+((c[i>>2]|0)>>>0)*.00392156862745098;h[e+8>>3]=+((c[m>>2]|0)>>>0)*.00392156862745098;h[e+16>>3]=+((c[n>>2]|0)>>>0)*.00392156862745098;h[e+24>>3]=+((c[o>>2]|0)>>>0)*.00392156862745098;b=0;break a}default:{b=0;break a}}}else q=12;while(0);b:do if((q|0)==12){if(!(b<<24>>24!=46?((b&255)+-48|0)>>>0>=10:0)){b=rJ(r)|0;if(b>>>0>=(c[42410]|0)>>>0){b=b+11|0;c[42410]=b;b=yw(c[42411]|0,b)|0;c[42411]=b;if(!b){b=-1;break}}else b=c[42411]|0;m=b;i=r;c:while(1){n=i+1|0;i=a[i>>0]|0;switch(i<<24>>24){case 0:break c;case 44:{i=32;break}default:{}}a[m>>0]=i;m=m+1|0;i=n}a[m>>0]=0;c[s>>2]=t;c[s+4>>2]=w;c[s+8>>2]=x;if((cM(b,96561,s)|0)==3){k=+h[t>>3];k=k<1.0?k:1.0;k=k>0.0?k:0.0;h[t>>3]=k;j=+h[w>>3];j=j<1.0?j:1.0;j=j>0.0?j:0.0;h[w>>3]=j;g=+h[x>>3];g=g<1.0?g:1.0;g=g>0.0?g:0.0;h[x>>3]=g;switch(f|0){case 0:{h[e>>3]=k;h[e+8>>3]=j;h[e+16>>3]=g;h[e+24>>3]=1.0;b=0;break b}case 1:{VE(k,j,g,C,D,E);a[e>>0]=~~(+h[C>>3]*255.0);a[e+1>>0]=~~(+h[D>>3]*255.0);a[e+2>>0]=~~(+h[E>>3]*255.0);a[e+3>>0]=-1;b=0;break b}case 3:{VE(k,j,g,C,D,E);UE(+h[C>>3],+h[D>>3],+h[E>>3],y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{VE(k,j,g,C,D,E);c[e>>2]=~~(+h[C>>3]*65535.0);c[e+4>>2]=~~(+h[D>>3]*65535.0);c[e+8>>2]=~~(+h[E>>3]*65535.0);c[e+12>>2]=65535;b=0;break b}case 4:{VE(k,j,g,C,D,E);h[e>>3]=+h[C>>3];h[e+8>>3]=+h[D>>3];h[e+16>>3]=+h[E>>3];h[e+24>>3]=1.0;b=0;break b}default:{b=0;break b}}}}i=WE(r)|0;c[v>>2]=i;if(!i)b=-1;else{b=c[42412]|0;if(!(((b|0)!=0?(u=c[b>>2]|0,(a[u>>0]|0)==(a[i>>0]|0)):0)?(xJ(u,i)|0)==0:0)){b=vM(v,24932,2491,12,38)|0;c[42412]=b;if(!b)switch(f|0){case 0:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}case 1:{a[e+2>>0]=0;a[e+1>>0]=0;a[e>>0]=0;a[e+3>>0]=-1;b=1;break b}case 3:{c[e>>2]=0;b=1;break b}case 2:{c[e+8>>2]=0;c[e+4>>2]=0;c[e>>2]=0;c[e+12>>2]=65535;b=1;break b}case 4:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[e+24>>3]=1.0;b=1;break b}default:{b=1;break b}}}switch(f|0){case 0:{h[e>>3]=+(d[b+4>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+5>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+6>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}case 1:{a[e>>0]=a[b+7>>0]|0;a[e+1>>0]=a[b+8>>0]|0;a[e+2>>0]=a[b+9>>0]|0;a[e+3>>0]=a[b+10>>0]|0;b=0;break b}case 3:{j=+(d[b+7>>0]|0)*.00392156862745098;h[C>>3]=j;k=+(d[b+8>>0]|0)*.00392156862745098;h[D>>3]=k;G=+(d[b+9>>0]|0)*.00392156862745098;h[E>>3]=G;UE(j,k,G,y,z,A,B);a[e>>0]=~~+h[y>>3]*255;a[e+1>>0]=~~+h[z>>3]*255;a[e+2>>0]=~~+h[A>>3]*255;a[e+3>>0]=~~+h[B>>3]*255;b=0;break b}case 2:{c[e>>2]=(d[b+7>>0]|0)*257;c[e+4>>2]=(d[b+8>>0]|0)*257;c[e+8>>2]=(d[b+9>>0]|0)*257;c[e+12>>2]=(d[b+10>>0]|0)*257;b=0;break b}case 4:{h[e>>3]=+(d[b+7>>0]|0)*.00392156862745098;h[e+8>>3]=+(d[b+8>>0]|0)*.00392156862745098;h[e+16>>3]=+(d[b+9>>0]|0)*.00392156862745098;h[e+24>>3]=+(d[b+10>>0]|0)*.00392156862745098;b=0;break b}default:{b=0;break b}}}}while(0);l=F;return b|0}function TE(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;i=b<c?b:c;m=b>c?b:c;m=m<a?a:m;i=m-(i>a?a:i);g=i/m;if(m>0.0)if(g>0.0){j=(m-a)/i;k=(m-b)/i;l=(m-c)/i;do if(!(m==a)){if(m==b){a=j+2.0-l;break}if(m==c)a=k+4.0-j;else a=0.0}else a=(b-c)/i;while(0);a=a*60.0;if(a<0.0)a=a+360.0}else a=0.0;else{g=0.0;a=0.0}h[d>>3]=a*.002777777777777778;h[f>>3]=m;h[e>>3]=g;return}function UE(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h[d>>3]=1.0-a;h[e>>3]=1.0-b;h[f>>3]=1.0-c;b=+h[d>>3];c=+h[e>>3];c=b<c?b:c;h[g>>3]=c;b=+h[f>>3];c=b<c?b:c;h[g>>3]=c;h[d>>3]=+h[d>>3]-c;h[e>>3]=+h[e>>3]-+h[g>>3];h[f>>3]=+h[f>>3]-+h[g>>3];return}function VE(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0,l=0;a:do if(!(b<=0.0)){i=!(a>=1.0)?a*6.0:0.0;l=~~i;i=i-+(l|0);a=(1.0-b)*c;j=(1.0-i*b)*c;b=(1.0-(1.0-i)*b)*c;switch(l|0){case 0:{g=a;i=b;a=c;k=8;break a}case 1:{g=a;i=c;a=j;k=8;break a}case 2:{g=b;i=c;k=8;break a}case 3:{g=c;i=j;k=8;break a}case 4:{g=c;i=a;a=b;k=8;break a}case 5:{g=j;i=a;a=c;k=8;break a}default:break a}}else{g=c;i=c;a=c;k=8}while(0);if((k|0)==8){h[d>>3]=a;h[e>>3]=i;h[f>>3]=g}return}function WE(b){b=b|0;var d=0,e=0;d=a[b>>0]|0;if(((d<<24>>24!=98?(e=b+1|0,!(d<<24>>24==119|(VJ(e,122058,4)|0)==0)):0)?!(d<<24>>24==108|(VJ(e,122063,4)|0)==0):0)?(VJ(e,122068,8)|0)!=0:0){do if(d<<24>>24==47){d=WJ(e,47)|0;if(!d)b=e;else{if((a[e>>0]|0)!=47){e=(pK(122077,e,4)|0)==0;b=e?d+1|0:b;break}d=c[42413]|0;if((d|0?a[d>>0]|0:0)?pK(122077,d,3)|0:0){b=YE(d,b+2|0)|0;break}b=b+2|0}}else{d=c[42413]|0;if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(pK(122077,d,3)|0)!=0:0)b=YE(d,b)|0}while(0);b=RE(b)|0}return b|0}function XE(a,b){a=a|0;b=b|0;return iK(c[a>>2]|0,c[b>>2]|0)|0}function YE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;g=rJ(a)|0;g=(rJ(b)|0)+g|0;d=g+13|0;if((g+3|0)>>>0<(c[42414]|0)>>>0)d=c[42415]|0;else{c[42414]=d;d=yw(c[42415]|0,d)|0;c[42415]=d}c[e>>2]=a;c[e+4>>2]=b;pL(d,122082,e)|0;l=f;return c[42415]|0}function ZE(a){a=a|0;c[42413]=a;return}function _E(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0;f=l;l=l+208|0;g=f;$E(g,+h[a>>3],+h[a+8>>3],b,c,d,e);a=aF(g)|0;l=f;return a|0}function $E(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var i=0,j=0;h[a>>3]=b;h[a+8>>3]=c;j=a+16|0;h[j>>3]=d;i=a+24|0;h[i>>3]=e;h[a+32>>3]=0.0;c=+K(+(+F(+f)/e),+(+E(+f)/d));h[a+56>>3]=c;e=+K(+(+F(+g)/e),+(+E(+g)/d));h[a+40>>3]=1.0;h[a+48>>3]=0.0;e=e-+A(+((e-c)*.15915494309189535))*6.283185307179586;h[a+64>>3]=g-f>3.141592653589793&e-c<3.141592653589793?e+6.283185307179586:e;gF(a);hF(a);iF(a);g=+h[j>>3];g=(g-+h[i>>3])/g;h[a+168>>3]=g;h[a+176>>3]=(2.0-g)*g;g=1.0-g;h[a+184>>3]=g;h[a+192>>3]=g*g;return}function aF(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=vw(8)|0;f=+h[a+56>>3];e=+h[a+64>>3]-f;p=1;b=0;while(1){o=e/+(p|0);if(!(b<<24>>24==0&(p|0)<1024))break;a:do if(!(o<=1.5707963267948966))b=0;else{c=f;d=0;b=1;while(1){if(!(b<<24>>24!=0&(d|0)<(p|0)))break a;n=c+o;b=+bF(a,c,n)<=1.0e-05&1;c=n;d=d+1|0}}while(0);p=p<<1}i=+E(+f);u=+F(+f);d=a+16|0;s=+h[d>>3];v=s*i;j=a+24|0;c=+h[j>>3];g=c*u;i=c*i;c=+h[a>>3];k=a+40|0;t=+h[k>>3];l=a+48|0;r=+h[l>>3];e=t*v+c-r*g;m=a+8|0;n=+h[m>>3];g=r*v+t*g+n;s=-(u*s);cF(q,c,n);dF(q,e,g);n=+G(+(o*.5));n=+F(+o)*.3333333333333333*(+C(+(n*n*3.0+4.0))+-1.0);c=f;f=g;g=r*s+t*i;i=t*s-r*i;b=0;while(1){if((b|0)>=(p|0))break;r=c+o;u=+E(+r);v=+F(+r);x=+h[d>>3];z=x*u;w=+h[j>>3];t=w*v;u=w*u;w=+h[k>>3];y=+h[l>>3];s=w*z+ +h[a>>3]-y*t;t=y*z+w*t+ +h[m>>3];x=-(v*x);v=w*x-y*u;u=y*x+w*u;eF(q,e+i*n,f+g*n,s-v*n,t-u*n,s,t);c=r;e=s;f=t;g=u;i=v;b=b+1|0}fF(q);return q|0}function bF(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;d=c+b;i=+h[a+16>>3];e=+h[a+24>>3]/i;g=+E(+d);f=+E(+(d*2.0));d=+E(+(d*3.0));a=e<.25?10328:10584;return +(((e*.001+4.98)*e+.207)/(e+.0067)*i*+L(+(((+h[a+32>>3]*e+ +h[a+40>>3])*e+ +h[a+48>>3])/(+h[a+56>>3]+e)*g+((+h[a>>3]*e+ +h[a+8>>3])*e+ +h[a+16>>3])/(+h[a+24>>3]+e)+((+h[a+64>>3]*e+ +h[a+72>>3])*e+ +h[a+80>>3])/(+h[a+88>>3]+e)*f+((+h[a+96>>3]*e+ +h[a+104>>3])*e+ +h[a+112>>3])/(+h[a+120>>3]+e)*d+(((+h[a+160>>3]*e+ +h[a+168>>3])*e+ +h[a+176>>3])/(+h[a+184>>3]+e)*g+((+h[a+128>>3]*e+ +h[a+136>>3])*e+ +h[a+144>>3])/(+h[a+152>>3]+e)+((+h[a+192>>3]*e+ +h[a+200>>3])*e+ +h[a+208>>3])/(+h[a+216>>3]+e)*f+((+h[a+224>>3]*e+ +h[a+232>>3])*e+ +h[a+240>>3])/(+h[a+248>>3]+e)*d)*(c-b))))}function cF(a,b,d){a=a|0;b=+b;d=+d;var e=0;c[42416]=100;e=vw(1600)|0;c[a>>2]=e;h[e>>3]=b;h[e+8>>3]=d;c[a+4>>2]=1;return}function dF(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;f=c[a>>2]|0;e=(c[a+4>>2]|0)+-1|0;eF(a,+h[f+(e<<4)>>3],+h[f+(e<<4)+8>>3],b,d,b,d);return}function eF(a,b,d,e,f,g,i){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;i=+i;var j=0,k=0,l=0,m=0;l=a+4|0;j=c[l>>2]|0;k=c[42416]|0;if((j+3|0)<(k|0))a=c[a>>2]|0;else{c[42416]=k<<1;j=aJ(c[a>>2]|0,k<<5)|0;c[a>>2]=j;a=j;j=c[l>>2]|0}h[a+(j<<4)>>3]=b;m=j+1|0;h[a+(j<<4)+8>>3]=d;h[a+(m<<4)>>3]=e;k=j+2|0;h[a+(m<<4)+8>>3]=f;h[a+(k<<4)>>3]=g;c[l>>2]=j+3;h[a+(k<<4)+8>>3]=i;return}function fF(a){a=a|0;var b=0;b=c[a>>2]|0;dF(a,+h[b>>3],+h[b+8>>3]);c[a>>2]=aJ(c[a>>2]|0,c[a+4>>2]<<4)|0;c[42416]=0;return}function gF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;d=+h[a+16>>3];b=+h[a+24>>3];b=+C(+(d*d-b*b));d=b*+h[a+40>>3];b=b*+h[a+48>>3];e=+h[a>>3];h[a+104>>3]=e-d;c=+h[a+8>>3];h[a+112>>3]=c-b;h[a+120>>3]=e+d;h[a+128>>3]=c+b;return}function hF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;d=+h[a+16>>3];i=+h[a+56>>3];j=+E(+i)*d;b=+h[a+24>>3];i=+F(+i)*b;g=+h[a+64>>3];d=+E(+g)*d;b=+F(+g)*b;g=+h[a>>3];c=+h[a+40>>3];e=+h[a+48>>3];h[a+72>>3]=c*j+g-e*i;f=+h[a+8>>3];h[a+80>>3]=e*j+f+c*i;h[a+88>>3]=g+c*d-e*b;h[a+96>>3]=f+e*d+c*b;return}function iF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0;k=+h[a+24>>3];l=+h[a+16>>3];e=k/l;m=+h[a+48>>3];n=+B(+m)<.1;j=+h[a+40>>3];do if(n){b=m/j;c=+J(+(b*e));d=-c;if(j<0.0){b=+J(+(b/e));e=d;d=3.141592653589793-c;c=4.71238898038469-b;b=1.5707963267948966-b;break}else{b=+J(+(b/e));e=-3.141592653589793-c;c=1.5707963267948966-b;b=-1.5707963267948966-b;break}}else{b=j/m;c=+J(+(b/e));d=c+1.5707963267948966;if(m<0.0){b=+J(+(b*e));e=c+-1.5707963267948966;c=b+3.141592653589793;break}else{b=+J(+(b*e));e=d;d=c+4.71238898038469;c=b;b=b+-3.141592653589793;break}}while(0);g=+h[a+56>>3];e=e-+A(+((e-g)*.15915494309189535))*6.283185307179586;b=b-+A(+((b-g)*.15915494309189535))*6.283185307179586;f=d-+A(+((d-g)*.15915494309189535))*6.283185307179586;g=c-+A(+((c-g)*.15915494309189535))*6.283185307179586;i=+h[a+64>>3];if(!(e<=i)){e=+h[a+72>>3];c=+h[a+88>>3];c=e<c?e:c}else c=+E(+e)*l*j+ +h[a>>3]-k*+F(+e)*m;h[a+136>>3]=c;if(!(b<=i)){e=+h[a+80>>3];d=+h[a+96>>3];d=e<d?e:d}else d=+E(+b)*l*m+ +h[a+8>>3]+ +F(+b)*k*j;h[a+144>>3]=d;if(!(f<=i)){f=+h[a+72>>3];b=+h[a+88>>3];b=f>b?f:b}else b=+E(+f)*l*j+ +h[a>>3]-k*+F(+f)*m;h[a+152>>3]=b-c;if(!(g<=i)){m=+h[a+80>>3];b=+h[a+96>>3];b=m>b?m:b}else b=+E(+g)*l*m+ +h[a+8>>3]+ +F(+g)*k*j;h[a+160>>3]=b-d;return}function jF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+80|0;m=n;kF(b);k=+h[e+56>>3];g=+h[e+64>>3];switch(a[e+80>>0]|0){case 116:{g=(+h[e+48>>3]-+lF(d))*.5+g;f=4;break}case 98:{g=g-(+h[e+48>>3]-+lF(d))*.5;f=4;break}default:{}}if((f|0)==4)g=g+-1.0;h[m>>3]=k;h[m+8>>3]=g;c[m+20>>2]=c[e+8>>2];c[m+16>>2]=c[e+4>>2];h[m+32>>3]=+h[e+16>>3];j=b+16|0;f=Im(c[(c[j>>2]|0)+8>>2]|0,122089)|0;e=m+56|0;c[e>>2]=f;i=m+60|0;c[i>>2]=c[(c[j>>2]|0)+212>>2];j=m+64|0;a[j>>0]=0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))c[e>>2]=122100;if((a[d+4>>0]|0)==1){e=c[d>>2]|0;FD(b,c[(c[b>>2]|0)+336>>2]|0);f=c[e+24>>2]|0;if(!f)BD(b,122106);else BD(b,f);nF(b,e,m);if(a[j>>0]|0)_I(c[i>>2]|0)}else mF(b,c[d>>2]|0,m);oF(b);l=n;return}function kF(a){a=a|0;var d=0,e=0,f=0;d=Vt(a)|0;e=c[d>>2]|0;a=c[e+4>>2]|0;c[d+4>>2]=a;c[d+12>>2]=c[e+12>>2];switch(a|0){case 2:{a=e+8|0;f=6;break}case 0:{a=e+8|0;f=6;break}case 1:{a=e+8|0;f=6;break}case 3:{a=e+8|0;f=6;break}default:{}}if((f|0)==6)c[d+8>>2]=c[a>>2];c[d+208>>2]=c[e+208>>2];c[d+228>>2]=c[e+228>>2];c[d+244>>2]=c[e+244>>2];f=d+260|0;b[f>>1]=b[f>>1]&-2|b[e+260>>1]&1;return}function lF(b){b=b|0;var d=0.0,e=0,f=0;switch(a[b+4>>0]|0){case 1:{e=c[b>>2]|0;b=e+72|0;e=e+56|0;f=5;break}case 3:{e=c[b>>2]|0;b=e+24|0;e=e+8|0;f=5;break}case 2:{e=c[b>>2]|0;b=e+32|0;e=e+16|0;f=5;break}default:d=0.0}if((f|0)==5)d=+h[b>>3]-+h[e>>3];return +d}function mF(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+96|0;j=n+64|0;i=n+32|0;g=n+16|0;k=n;m=b[e+4>>1]|0;if(m<<16>>16>=1){r=e+8|0;p=+h[e+24>>3];o=+h[r>>3];h[k>>3]=(o+p)*.5+ +h[f>>3];h[k+8>>3]=(+h[e+16>>3]+ +h[e+32>>3])*.5+ +h[f+8>>3];q=c[e>>2]|0;s=f+16|0;f=a[e+6>>0]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[i+16>>2]=c[s+16>>2];c[i+20>>2]=c[s+20>>2];c[i+24>>2]=c[s+24>>2];c[i+28>>2]=c[s+28>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[j+16>>2]=c[r+16>>2];c[j+20>>2]=c[r+20>>2];c[j+24>>2]=c[r+24>>2];c[j+28>>2]=c[r+28>>2];AF(d,m<<16>>16,q,g,(p-o)*.5,i,j,f)}l=n;return}function nF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+176|0;t=y+96|0;v=y+64|0;w=y+136|0;p=y;q=y+128|0;r=f+48|0;c[v>>2]=c[r>>2];c[v+4>>2]=c[r+4>>2];c[v+8>>2]=c[r+8>>2];c[v+12>>2]=c[r+12>>2];c[v+16>>2]=c[r+16>>2];c[v+20>>2]=c[r+20>>2];c[v+24>>2]=c[r+24>>2];c[v+28>>2]=c[r+28>>2];m=+h[g>>3];n=+h[g+8>>3];r=f+84|0;i=c[r>>2]|0;if(!(c[f>>2]|0))x=(c[f+8>>2]|0)!=0;else x=1;u=f+108|0;j=c[u>>2]|0;if(j|0)pF(g,j,167296);h[v>>3]=+h[v>>3]+m;s=v+16|0;h[s>>3]=+h[s>>3]+m;s=v+8|0;h[s>>3]=+h[s>>3]+n;s=v+24|0;h[s>>3]=+h[s>>3]+n;if(x?(c[e+152>>2]&4|0)==0:0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];s=qF(e,g,f,t,w)|0}else s=0;o=f+42|0;j=b[o>>1]|0;if(!(j&32)){k=c[f+20>>2]|0;if(k){j=rF(e,k,c[f+28>>2]|0,j&65535,q)|0;if(!(b[o>>1]&4)){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];ID(e,t,j)}else{o=d[f+33>>0]|0;c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];yy(e,sF(p,t,o)|0,4,4,j)}_I(c[q>>2]|0)}while(1){j=c[i>>2]|0;if(!j)break;tF(e,j,g);i=i+4|0}i=c[r>>2]|0;OD(e,1.0);j=f+24|0;while(1){k=i+4|0;i=c[i>>2]|0;if(!i)break;if(!(a[i+100>>0]|0)){i=k;continue}uF(e,i,g,c[j>>2]|0,c[k>>2]|0);i=k}if(a[f+33>>0]|0){c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[t+16>>2]=c[v+16>>2];c[t+20>>2]=c[v+20>>2];c[t+24>>2]=c[v+24>>2];c[t+28>>2]=c[v+28>>2];vF(e,f,t)}}if(s|0)wF(e,w);if((x?c[e+152>>2]&4|0:0)?(c[t>>2]=c[v>>2],c[t+4>>2]=c[v+4>>2],c[t+8>>2]=c[v+8>>2],c[t+12>>2]=c[v+12>>2],c[t+16>>2]=c[v+16>>2],c[t+20>>2]=c[v+20>>2],c[t+24>>2]=c[v+24>>2],c[t+28>>2]=c[v+28>>2],qF(e,g,f,t,w)|0):0)wF(e,w);if(c[u>>2]|0)xF(g,167296);l=y;return}function oF(a){a=a|0;var b=0;b=c[a+16>>2]|0;c[b+208>>2]=0;c[b+228>>2]=0;c[b+244>>2]=0;c[b+212>>2]=0;Wt(a);return}function pF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;i=a+16|0;f=c[i>>2]|0;if(f|0){if(!(c[b>>2]|0)){f=0;g=d}else{c[d>>2]=f;f=c[b>>2]|0;g=i}c[g>>2]=f}f=c[a+20>>2]|0;if(f|0){g=b+4|0;if(!(c[g>>2]|0)){f=0;g=d}else{c[d+4>>2]=f;f=c[g>>2]|0;g=i}c[g+4>>2]=f}e=+h[a+32>>3];if(e>=0.0){f=b+16|0;if(!(+h[f>>3]>=0.0))e=-1.0;else{h[d+16>>3]=e;e=+h[f>>3];d=i}h[d+16>>3]=e}return}function qF(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+224|0;n=u+8|0;k=u;t=u+40|0;j=u+184|0;i=u+56|0;m=c[d+16>>2]|0;o=m+208|0;c[h>>2]=c[o>>2];p=m+228|0;c[h+4>>2]=c[p>>2];q=m+244|0;c[h+8>>2]=c[q>>2];r=m+212|0;c[h+12>>2]=c[r>>2];s=m+260|0;a[h+16>>0]=(b[s>>1]<<15&65535)<<16>>16>>15;h=c[f+16>>2]|0;if((h|0)!=0?(a[h>>0]|0)!=0:0)i=0;else{cm(t,128,i);i=e+60|0;h=c[i>>2]|0;if(!h){h=GL(Yt(d,c[m+8>>2]|0,t)|0)|0;c[i>>2]=h;a[e+64>>0]=1}fm(t,h)|0;i=c[42417]|0;c[42417]=i+1;c[k>>2]=i;pL(j,122183,k)|0;fm(t,j)|0;i=t+4|0;h=c[i>>2]|0;if(h>>>0>=(c[t+8>>2]|0)>>>0){dm(t,1)|0;h=c[i>>2]|0}a[h>>0]=0;h=c[t>>2]|0;c[i>>2]=h;i=1}h=Xt(d,0,c[f>>2]|0,c[f+12>>2]|0,c[f+8>>2]|0,h,c[m+8>>2]|0)|0;if(i)gm(t);do if(h|0){if((c[o>>2]|0)==0?(b[s>>1]&1)==0:0)break;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];c[n+16>>2]=c[g+16>>2];c[n+20>>2]=c[g+20>>2];c[n+24>>2]=c[g+24>>2];c[n+28>>2]=c[g+28>>2];du(d,n);wD(d,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)}while(0);l=u;return h|0}function rF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;if(!((xv(b,f,i)|0)<<24>>24)){DD(a,b);b=1}else{DD(a,c[f>>2]|0);b=c[f+4>>2]|0;h=+g[i>>2];if(!b)ED(a,122106,d,h);else ED(a,b,d,h);b=e>>>1&1|2}BD(a,122171);l=j;return b|0}function sF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];e=a+32|0;b=b+16|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];if((d|0)>1){j=+(d|0)*.5;i=+h[a>>3]+j;h[a>>3]=i;d=a+8|0;g=+h[d>>3]+j;h[d>>3]=g;f=+h[e>>3]-j;h[e>>3]=f;e=a+40|0;j=+h[e>>3]-j;h[e>>3]=j}else{f=+h[e>>3];g=+h[a+8>>3];i=+h[a>>3];j=+h[a+40>>3]}h[a+16>>3]=f;h[a+24>>3]=g;h[a+48>>3]=i;h[a+56>>3]=j;return a|0}function tF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+176|0;r=v+96|0;s=v+136|0;t=v+64|0;p=v;q=v+128|0;u=f+48|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];c[t+16>>2]=c[u+16>>2];c[t+20>>2]=c[u+20>>2];c[t+24>>2]=c[u+24>>2];c[t+28>>2]=c[u+28>>2];j=+h[g>>3];k=+h[g+8>>3];if(!(c[f>>2]|0))u=(c[f+8>>2]|0)!=0;else u=1;h[t>>3]=+h[t>>3]+j;o=t+16|0;h[o>>3]=+h[o>>3]+j;o=t+8|0;h[o>>3]=+h[o>>3]+k;o=t+24|0;h[o>>3]=+h[o>>3]+k;if(u?(c[e+152>>2]&4|0)==0:0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];o=qF(e,g,f,r,s)|0}else o=0;n=f+42|0;i=b[n>>1]|0;a:do if(!(i&32)){m=c[f+20>>2]|0;if(m|0){i=rF(e,m,c[f+28>>2]|0,i&65535,q)|0;if(!(b[n>>1]&4)){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];ID(e,r,i)}else{n=d[f+33>>0]|0;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];yy(e,sF(p,r,n)|0,4,4,i)}_I(c[q>>2]|0)}if(a[f+33>>0]|0){c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];c[r+16>>2]=c[t+16>>2];c[r+20>>2]=c[t+20>>2];c[r+24>>2]=c[t+24>>2];c[r+28>>2]=c[t+28>>2];vF(e,f,r)}i=f+88|0;switch(a[f+92>>0]|0){case 1:{nF(e,c[i>>2]|0,g);break a}case 3:{zF(e,c[i>>2]|0,g);break a}default:{mF(e,c[i>>2]|0,g);break a}}}while(0);if(o|0)wF(e,s);if((u?c[e+152>>2]&4|0:0)?(c[r>>2]=c[t>>2],c[r+4>>2]=c[t+4>>2],c[r+8>>2]=c[t+8>>2],c[r+12>>2]=c[t+12>>2],c[r+16>>2]=c[t+16>>2],c[r+20>>2]=c[t+20>>2],c[r+24>>2]=c[t+24>>2],c[r+28>>2]=c[t+28>>2],qF(e,g,f,r,s)|0):0)wF(e,s);l=v;return}function uF(f,g,i,j,k){f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0;A=l;l=l+32|0;y=A+16|0;z=A;r=+h[i>>3];x=+h[i+8>>3];q=(j|0)==0?122106:j;DD(f,q);BD(f,q);t=+h[g+48>>3];o=+h[g+56>>3];u=+h[g+64>>3];p=+h[g+72>>3];s=t+r;r=u+r;x=o+x;q=g+100|0;i=a[q>>0]|0;if((i&1)!=0?(n=c[g+96>>2]|0,((e[g+80>>1]|0)+(e[g+84>>1]|0)|0)<(c[n+104>>2]|0)):0){i=b[g+86>>1]|0;do if(i<<16>>16)if(((e[g+82>>1]|0)+(i&65535)|0)==(c[n+100>>2]|0)){B=a[n+32>>0]|0;C=(B<<24>>24)/2|0;j=(C<<24>>24)+(d[n+33>>0]|0)|0;i=j;j=j&255;m=x-+(C<<24>>24);n=B;break}else{n=a[n+32>>0]|0;i=0;j=((n<<24>>24)/2|0)<<24>>24;m=x;break}else{C=a[n+32>>0]|0;j=((C<<24>>24)/2|0)<<24>>24;i=j+(d[n+33>>0]|0)|0;m=x;n=C}while(0);h[z+8>>3]=m-+(j|0);h[z>>3]=r+ +(((n<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];yF(f,y,0.0,p-o+ +(i&255|0)+ +(n<<24>>24));i=a[q>>0]|0}if(i&2?(v=b[g+86>>1]|0,w=c[g+96>>2]|0,((e[g+82>>1]|0)+(v&65535)|0)<(c[w+100>>2]|0)):0){i=b[g+84>>1]|0;do if(!(i<<16>>16)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;n=(C<<24>>24)+(d[w+33>>0]|0)|0;j=n&255;n=n&255;m=+(C<<24>>24);h[z>>3]=s-m-+(n|0);if((c[w+104>>2]|0)==(e[g+80>>1]|0)){j=n<<1&255;break}if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+(j&255)-u+ +h[w+64>>3]-m)&255}else{if(((e[g+80>>1]|0)+(i&65535)|0)==(c[w+104>>2]|0)){i=a[w+32>>0]|0;C=(i<<24>>24)/2|0;j=(C&255)+(d[w+33>>0]|0)&255;h[z>>3]=s-+(C<<24>>24);break}i=a[w+32>>0]|0;m=+(((i<<24>>24)/2|0)<<24>>24);h[z>>3]=s-m;if((k|0)!=0?(b[k+86>>1]|0)!=v<<16>>16:0)j=~~(+h[w+64>>3]-u-m)&255;else j=0}while(0);h[z+8>>3]=x-+(((i<<24>>24)/2|0)<<24>>24);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];yF(f,y,u-t+ +(j&255)+ +(i<<24>>24),0.0)}l=A;return}function vF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;p=l;l=l+160|0;o=p+112|0;n=p;j=p+144|0;m=c[f+24>>2]|0;BD(e,(m|0)==0?122106:m);m=f+42|0;i=b[m>>1]|0;if(!(i&384))FD(e,c[(c[e>>2]|0)+336>>2]|0);else{c[j+4>>2]=0;c[j>>2]=0;i=i&65535;if(!(i&256)){if(i&128|0){i=122112;k=4}}else{i=122119;k=4}if((k|0)==4)c[j>>2]=i;FD(e,j)}k=f+33|0;OD(e,+(d[k>>0]|0));a:do if(!(b[m>>1]&4)){i=b[f+36>>1]&15360;if(!(i<<16>>16)){i=a[k>>0]|0;if((i&255)>1){q=+(i&255)*.5;h[g>>3]=+h[g>>3]+q;n=g+8|0;h[n>>3]=+h[n>>3]+q;n=g+16|0;h[n>>3]=+h[n>>3]-q;n=g+24|0;h[n>>3]=+h[n>>3]-q};c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];ID(e,o,0);break}j=n+16|0;m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];sF(j,o,m)|0;do switch(((i&65535)+-1024|0)>>>10&4194303|0){case 7:{KD(e,j,2);break a}case 3:{KD(e,n+32|0,2);break a}case 1:{KD(e,n+48|0,2);break a}case 0:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];KD(e,n,2);break a}case 11:{KD(e,j,3);break a}case 5:{KD(e,n+32|0,3);break a}case 2:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];KD(e,n+48|0,3);break a}case 8:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];KD(e,n,3);break a}case 13:{KD(e,j,4);break a}case 6:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];KD(e,n+32|0,4);break a}case 10:{g=n+80|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];g=n+96|0;o=n+32|0;c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];KD(e,n+48|0,4);break a}case 12:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];KD(e,n,4);break a}case 9:{KD(e,j,2);KD(e,n+48|0,2);break a}case 4:{g=n+64|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];KD(e,n,2);KD(e,n+32|0,2);break a}default:break a}while(0)}else{m=d[k>>0]|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];yy(e,sF(n,o,m)|0,4,4,0)}while(0);l=p;return}function wF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=c[d+16>>2]|0;f=h+208|0;if((c[f>>2]|0)==0?(b[h+260>>1]&1)==0:0)d=0;else{xD(d);d=c[f>>2]|0}if((d|0)!=(c[e>>2]|0)){_I(d);c[f>>2]=c[e>>2]}d=h+228|0;f=c[d>>2]|0;g=e+4|0;if((f|0)!=(c[g>>2]|0)){_I(f);c[d>>2]=c[g>>2]}d=h+244|0;f=c[d>>2]|0;g=e+8|0;if((f|0)!=(c[g>>2]|0)){_I(f);c[d>>2]=c[g>>2]}d=h+212|0;f=c[d>>2]|0;g=e+12|0;if((f|0)!=(c[g>>2]|0)){_I(f);c[d>>2]=c[g>>2]}h=h+260|0;b[h>>1]=b[h>>1]&-2|a[e+16>>0]&1;return}function xF(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(e|0)c[a+16>>2]=e;e=c[b+4>>2]|0;if(e|0)c[a+20>>2]=e;d=+h[b+16>>3];if(d>=0.0)h[a+32>>3]=d;return}function yF(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0;f=l;l=l+64|0;g=f+32|0;i=f;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=+h[b>>3]+d;h[i+24>>3]=+h[b+8>>3]+e;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];ID(a,g,1);l=f;return}function zF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0;i=l;l=l+64|0;g=i;k=+h[e>>3];n=k+ +h[d>>3];m=+h[e+8>>3];j=m+ +h[d+8>>3];k=k+ +h[d+16>>3];m=m+ +h[d+24>>3];h[g>>3]=k;h[g+8>>3]=m;h[g+32>>3]=n;h[g+40>>3]=j;h[g+16>>3]=n;h[g+24>>3]=m;h[g+48>>3]=k;h[g+56>>3]=j;f=c[d+36>>2]|0;if(!f)f=c[e+56>>2]|0;e=c[d+32>>2]|0;if(!e)ma(122126,122134,623,122146);if(!(a[e>>0]|0))ma(122160,122134,624,122146);else{MD(b,e,g,4,1,f);l=i;return}}function AF(d,e,f,g,i,j,k,m){d=d|0;e=e|0;f=f|0;g=g|0;i=+i;j=j|0;k=k|0;m=m|0;var n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0,R=0;R=l;l=l+128|0;K=R+104|0;O=R+48|0;P=R+16|0;L=R;J=L;c[J>>2]=0;c[J+4>>2]=0;M=+h[g>>3];N=M-i;I=M+i;J=L+8|0;h[J>>3]=(+h[k+24>>3]-+h[k+8>>3])*.5+ +h[g+8>>3];yD(d,1);D=P+16|0;E=P+4|0;F=P+24|0;G=O+4|0;H=O+16|0;s=(m|0)==0;t=O+24|0;u=O+8|0;v=O+32|0;w=O+40|0;x=O+48|0;y=j+16|0;z=j+4|0;A=P+8|0;q=0;while(1){if((q|0)>=(e|0))break;switch(a[f+(q*24|0)+6>>0]|0){case 108:{i=N;break}case 114:{i=I-+h[f+(q*24|0)+8>>3];break}default:i=M-+h[f+(q*24|0)+8>>3]*.5}h[g>>3]=i;B=f+(q*24|0)+16|0;h[J>>3]=+h[J>>3]-+h[B>>3];C=f+(q*24|0)+4|0;p=c[f+(q*24|0)>>2]|0;r=0;while(1){if((r|0)>=(b[C>>1]|0))break;o=p+4|0;m=c[o>>2]|0;if(m){h[D>>3]=+h[(+h[m+16>>3]>0.0?m:j)+16>>3];c[P>>2]=c[((c[m>>2]|0)==0?j:m)>>2];k=c[((c[m+4>>2]|0)==0?j:m)+4>>2]|0;c[E>>2]=k;m=c[m+24>>2]&127;if(!m)Q=12;else m=c[F>>2]&-128|m}else{h[D>>3]=+h[y>>3];c[P>>2]=c[j>>2];k=c[z>>2]|0;c[E>>2]=k;Q=12}if((Q|0)==12){Q=0;m=c[F>>2]&-128}c[F>>2]=m;BD(d,k);c[O>>2]=c[p>>2];c[G>>2]=P;h[H>>3]=+h[p+16>>3];if(s)n=1.0;else n=+h[p+24>>3];h[t>>3]=n;c[A>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=c[p+8>>2];o=p+32|0;h[v>>3]=+h[o>>3];h[w>>3]=+h[B>>3];a[x>>0]=108;h[L>>3]=i;c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];AD(d,K,O);n=+h[o>>3]+i;h[g>>3]=n;p=p+56|0;r=r+1|0;i=n}q=q+1|0}zD(d);l=R;return}function BF(a){a=a|0;_I(c[a>>2]|0);_I(c[a+4>>2]|0);_I(c[a+8>>2]|0);_I(c[a+16>>2]|0);_I(c[a+12>>2]|0);_I(c[a+20>>2]|0);_I(c[a+24>>2]|0);return}function CF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(a|0){j=a+4|0;e=0;g=c[a>>2]|0;while(1){if((e|0)>=(b[j>>1]|0))break;k=g+4|0;d=0;f=c[g>>2]|0;while(1){if((d|0)>=(b[k>>1]|0))break;_I(c[f>>2]|0);h=c[f+8>>2]|0;if(h|0?(i=c[f+12>>2]|0,i|0):0)gb[i&127](h);d=d+1|0;f=f+56|0}e=e+1|0;g=g+24|0}d=c[a>>2]|0;if(d|0)_I(d);_I(a)}return}function DF(a){a=a|0;_I(c[a+32>>2]|0);_I(a);return}function EF(b,d){b=b|0;d=d|0;switch(a[b+4>>0]|0){case 1:{FF(c[b>>2]|0);break}case 3:{DF(c[b>>2]|0);break}default:CF(c[b>>2]|0)}if(d|0)_I(b);return}function FF(a){a=a|0;var b=0,d=0,e=0;e=a+84|0;if((c[a+100>>2]|0)==-1)Kl(c[e>>2]|0)|0;else{b=c[e>>2]|0;_I(c[a+92>>2]|0);_I(c[a+96>>2]|0);while(1){d=c[b>>2]|0;if(!d)break;GF(d);b=b+4|0}_I(c[e>>2]|0)}BF(a);_I(a);return}function GF(a){a=a|0;EF(a+88|0,0);BF(a);_I(a);return}function HF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;b=c[(c[(c[b+16>>2]|0)+104>>2]|0)+72>>2]|0;if((a[b+4>>0]|0)!=2?(g=IF(c[b>>2]|0,e)|0,(g|0)!=0):0){c[f>>2]=d[g+35>>0];b=g+48|0}else b=0;return b|0}function IF(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(!((d|0)!=0?(iK(d,b)|0)==0:0))e=3;a:do if((e|0)==3){d=c[a+84>>2]|0;while(1){a=c[d>>2]|0;if(!a){a=0;break a}a=JF(a,b)|0;if(!a)d=d+4|0;else break}}while(0);return a|0}function JF(b,d){b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;if(!((e|0)!=0?(iK(e,d)|0)==0:0))if((a[b+92>>0]|0)==1)b=IF(c[b+88>>2]|0,d)|0;else b=0;return b|0}function KF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function LF(d){d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=d+92|0;c[p>>2]=vw((c[d+100>>2]<<2)+4|0)|0;n=vw((c[d+104>>2]<<2)+4|0)|0;c[d+96>>2]=n;o=d+32|0;m=c[d+84>>2]|0;while(1){l=c[m>>2]|0;if(!l)break;d=b[l+82>>1]|0;f=+h[l+72>>3];if(d<<16>>16==1)i=~~f;else{i=~~((f-+(O((a[o>>0]|0)+-1|0,(d&65535)+-1|0)|0))/+(d&65535));i=(i|0)>1?i:1}j=b[l+80>>1]|0;f=+h[l+64>>3];if(j<<16>>16==1)k=~~f;else{k=~~((f-+(O((a[o>>0]|0)+-1|0,(j&65535)+-1|0)|0))/+(j&65535));k=(k|0)>1?k:1}q=e[l+86>>1]|0;g=(d&65535)+q|0;d=q;while(1){if((d|0)>=(g|0))break;q=(c[p>>2]|0)+(d<<2)|0;r=c[q>>2]|0;c[q>>2]=(r|0)>(i|0)?r:i;d=d+1|0}d=e[l+84>>1]|0;g=(j&65535)+d|0;while(1){if((d|0)>=(g|0))break;r=n+(d<<2)|0;q=c[r>>2]|0;c[r>>2]=(q|0)>(k|0)?q:k;d=d+1|0}m=m+4|0}return}function MF(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(a>>>0<21)a=c[54824+(a<<2)>>2]|0;else{c[b>>2]=a;pL(174081,122187,b)|0;a=174081}l=d;return a|0}function NF(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=a+104|0;l=a+100|0;j=d+16|0;f=0;g=0;while(1){if((f|0)>(c[k>>2]|0))break;i=no(d,MF(f)|0,1)|0;No(i,122241,304,1)|0;m=i+16|0;c[(c[m>>2]|0)+176>>2]=0;o=vw((c[l>>2]<<2)+4|0)|0;n=c[m>>2]|0;c[n+172>>2]=o;c[n+184>>2]=0;n=vw((c[l>>2]<<2)+4|0)|0;c[(c[m>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}j=b+16|0;f=0;g=0;while(1){if((f|0)>(c[l>>2]|0))break;i=no(b,MF(f)|0,1)|0;No(i,122241,304,1)|0;o=i+16|0;c[(c[o>>2]|0)+176>>2]=0;m=vw((c[k>>2]<<2)+4|0)|0;n=c[o>>2]|0;c[n+172>>2]=m;c[n+184>>2]=0;n=vw((c[k>>2]<<2)+4|0)|0;c[(c[o>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}f=c[a+84>>2]|0;while(1){g=c[f>>2]|0;if(!g)break;o=g+84|0;n=no(d,MF(e[o>>1]|0)|0,0)|0;o=no(d,MF((e[g+80>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;OF(d,n,o,~~+h[g+64>>3]);o=g+86|0;n=no(b,MF(e[o>>1]|0)|0,0)|0;o=no(b,MF((e[g+82>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;OF(b,n,o,~~+h[g+72>>3]);f=f+4|0}PF(d);PF(b);return}function OF(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;h=an(a,d,f,0,0)|0;if(!h){i=an(a,d,f,0,1)|0;No(i,122254,176,1)|0;b[(c[i+16>>2]|0)+170>>1]=g;d=d+16|0;a=c[d>>2]|0;h=c[a+180>>2]|0;if(!h)a=ww((c[a+184>>2]<<2)+8|0)|0;else a=yw(h,(c[a+184>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+180>>2]=a;g=g+184|0;h=c[g>>2]|0;c[g>>2]=h+1;c[a+(h<<2)>>2]=i;d=c[d>>2]|0;c[(c[d+180>>2]|0)+(c[d+184>>2]<<2)>>2]=0;d=f+16|0;a=c[d>>2]|0;h=c[a+172>>2]|0;if(!h)a=ww((c[a+176>>2]<<2)+8|0)|0;else a=yw(h,(c[a+176>>2]<<2)+8|0)|0;g=c[d>>2]|0;c[g+172>>2]=a;g=g+176|0;f=c[g>>2]|0;c[g>>2]=f+1;c[a+(f<<2)>>2]=i;i=c[d>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0}else{i=(c[h+16>>2]|0)+170|0;f=e[i>>1]|0;b[i>>1]=(f|0)>(g|0)?f:g}return}function PF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[a+16>>2]|0)+192>>2]|0;while(1){f=d+16|0;h=c[(c[f>>2]|0)+164>>2]|0;if(!h)break;if(an(a,d,h,0,0)|0){d=h;continue}g=an(a,d,h,0,1)|0;No(g,122254,176,1)|0;b[(c[g+16>>2]|0)+170>>1]=0;d=c[f>>2]|0;e=c[d+180>>2]|0;if(!e)d=ww((c[d+184>>2]<<2)+8|0)|0;else d=yw(e,(c[d+184>>2]<<2)+8|0)|0;i=c[f>>2]|0;c[i+180>>2]=d;i=i+184|0;e=c[i>>2]|0;c[i>>2]=e+1;c[d+(e<<2)>>2]=g;f=c[f>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;f=h+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(!e)d=ww((c[d+176>>2]<<2)+8|0)|0;else d=yw(e,(c[d+176>>2]<<2)+8|0)|0;e=c[f>>2]|0;c[e+172>>2]=d;e=e+176|0;i=c[e>>2]|0;c[e>>2]=i+1;c[d+(i<<2)>>2]=g;d=c[f>>2]|0;c[(c[d+172>>2]|0)+(c[d+176>>2]<<2)>>2]=0;d=h}return}function QF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+92|0;e=0;f=0;b=c[(c[(c[b+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[g>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}a=a+96|0;e=0;f=0;b=c[(c[(c[d+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[a>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}return}function RF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+4|0;d=h;c[d>>2]=c[4411];e=c[b+100>>2]|0;if((e|0)!=1?(f=b+104|0,(c[f>>2]|0)!=1):0){c[b+92>>2]=vw((e<<2)+4|0)|0;c[b+96>>2]=vw((c[f>>2]<<2)+4|0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;f=gn(122267,g,0)|0;a[g>>0]=a[d>>0]|0;a[g+1>>0]=a[d+1>>0]|0;a[g+2>>0]=a[d+2>>0]|0;a[g+3>>0]=a[d+3>>0]|0;g=gn(122272,g,0)|0;No(f,122277,280,1)|0;No(g,122277,280,1)|0;NF(b,f,g);gx(f,2,2147483647)|0;gx(g,2,2147483647)|0;QF(b,f,g);SF(f,g)}else LF(b);l=h;return}function SF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;f=d+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(e){_I(e);d=c[f>>2]|0}e=c[d+180>>2]|0;if(e){_I(e);d=c[f>>2]|0}d=d+164|0}ln(a)|0;ln(b)|0;return}function TF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0;p=l;l=l+272|0;n=p+104|0;o=p+136|0;j=p+72|0;k=p;g=p+144|0;c[k+48>>2]=b;switch(Co(b)|0){case 0:{e=c[b+60>>2]|0;break}case 1:{e=ro(b)|0;break}case 2:{e=ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;break}default:{}}i=k+52|0;c[i>>2]=e;m=c[e+60>>2]|0;h[k+32>>3]=+h[d+16>>3];c[k+16>>2]=c[d+4>>2];c[k+20>>2]=c[d+8>>2];c[k+40>>2]=0;f=bI(c[d>>2]|0,o,k)|0;if(!f){cm(n,128,g);a[d+82>>0]=0;e=GL(UF(b,n)|0)|0;c[d>>2]=e;if((c[d+12>>2]|0)==1)e=yB(e)|0;else e=vB(e,c[i>>2]|0)|0;_I(c[d>>2]|0);c[d>>2]=e;jw(c[(c[m+16>>2]|0)+144>>2]|0,d);gm(n);e=c[o>>2]|0}else{e=f+4|0;if((a[e>>0]|0)==1){if((c[(c[f>>2]|0)+24>>2]|0)==0?VF(b)|0:0){i=GL(VF(b)|0)|0;c[(c[f>>2]|0)+24>>2]=i}m=WF(m,c[f>>2]|0,0,k)|0;c[o>>2]=c[o>>2]|m;m=c[f>>2]|0;r=+h[m+64>>3]*.5;q=+h[m+72>>3]*.5;XF(j,-r,-q,r,q);m=c[f>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2];YF(m,n,15)}else{ZF(c[(c[m+16>>2]|0)+144>>2]|0,c[f>>2]|0,k);n=c[f>>2]|0;q=+h[n+24>>3]*.5;r=+h[n+32>>3]*.5;XF(j,-q,-r,q,r);n=(c[f>>2]|0)+8|0;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];c[n+16>>2]=c[j+16>>2];c[n+20>>2]=c[j+20>>2];c[n+24>>2]=c[j+24>>2];c[n+28>>2]=c[j+28>>2]}h[d+24>>3]=+h[j+16>>3]-+h[j>>3];h[d+32>>3]=+h[j+24>>3]-+h[j+8>>3];c[d+72>>2]=f;if((a[e>>0]|0)==1){_I(c[d>>2]|0);c[d>>2]=GL(122290)|0}e=c[o>>2]|0}l=p;return e|0}function UF(b,d){b=b|0;d=d|0;var e=0;a:do switch(Co(b)|0){case 0:{fm(d,Dn(b)|0)|0;break}case 1:{fm(d,Dn(b)|0)|0;break}case 2:{fm(d,Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)|0;e=b+-48|0;fm(d,Dn(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0;if(!(qn(ro(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0)){fm(d,122549)|0;break a}else{fm(d,122546)|0;break a}}default:{}}while(0);e=d+4|0;b=c[e>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){dm(d,1)|0;b=c[e>>2]|0}a[b>>0]=0;d=c[d>>2]|0;c[e>>2]=d;return d|0}function VF(b){b=b|0;var c=0,d=0;c=Im(b,122531)|0;if(!((c|0)!=0?(a[c>>0]|0)!=0:0))d=3;do if((d|0)==3){c=Im(b,122540)|0;if(c|0?a[c>>0]|0:0)break;c=0}while(0);return c|0}function WF(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;u=w+8|0;t=w;v=g+108|0;k=c[v>>2]|0;if(k|0)pF(j,k,167328);c[g+80>>2]=i;k=bG(f,g,j)|0;r=g+36|0;f=b[r>>1]|0;if(!(f&128))a[g+32>>0]=2;i=g+33|0;if(!(f&32))a[i>>0]=1;RF(g);n=c[g+104>>2]|0;p=a[g+32>>0]|0;f=O(n+1|0,p)|0;o=d[i>>0]<<1;q=c[g+100>>2]|0;p=O(q+1|0,p)|0;m=g+96|0;f=o+f|0;i=0;while(1){if((i|0)>=(n|0))break;f=(c[(c[m>>2]|0)+(i<<2)>>2]|0)+f|0;i=i+1|0}n=g+92|0;i=p+o|0;m=0;while(1){if((m|0)>=(q|0))break;i=(c[(c[n>>2]|0)+(m<<2)>>2]|0)+i|0;m=m+1|0}n=g+38|0;do if(b[r>>1]&1){r=b[n>>1]|0;m=r&65535;if(r<<16>>16?(s=b[g+40>>1]|0,s<<16>>16):0){if(!((f|0)>(m|0)|(i|0)>(s&65535|0))){i=0;f=0;break}_l(0,122331,t)|0;k=1;i=0;f=0;break}_l(0,122365,u)|0;k=1}while(0);u=e[n>>1]|0;h[g+64>>3]=+(((f|0)>(u|0)?f:u)|0);u=e[g+40>>1]|0;h[g+72>>3]=+(((i|0)>(u|0)?i:u)|0);if(c[v>>2]|0)xF(j,167328);l=w;return k|0}function XF(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function YF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0;I=l;l=l+64|0;G=I+32|0;H=I;E=c[e+84>>2]|0;k=c[e+80>>2]|0;if((k|0?(i=c[k+24>>2]|0,i|0):0)?(j=e+24|0,(c[j>>2]|0)==0):0)c[j>>2]=GL(i)|0;F=e+48|0;i=f+16|0;n=+h[i>>3];m=+h[f>>3];k=~~(n-m-+(~~+h[e+64>>3]|0));if((k|0)<=-1)ma(122298,122134,1761,122308);o=f+24|0;y=+h[o>>3];p=f+8|0;q=+h[p>>3];r=+(~~+h[e+72>>3]|0);s=~~(y-q-r);if((s|0)<=-1)ma(122321,122134,1764,122308);t=b[e+36>>1]|0;j=t&65535;a:do if(j&1){b:do if((k|0)>0)switch(j&6){case 4:{h[i>>3]=m+r;break b}case 2:{J=+(k|0);h[i>>3]=n+J;m=m+J;h[f>>3]=m;break b}default:{J=+(k>>>1|0);m=m+J;h[f>>3]=m;h[i>>3]=n-J;break b}}while(0);if((s|0)>0)switch(t&24){case 16:{y=q+r;h[o>>3]=y;s=0;i=0;break a}case 8:{J=+(s|0);y=y+J;h[o>>3]=y;h[p>>3]=q+J;s=0;i=0;break a}default:{J=+(s>>>1|0);h[p>>3]=q+J;y=y-J;h[o>>3]=y;s=0;i=0;break a}}else{s=0;i=0}}else i=k;while(0);n=+(d[e+33>>0]|0);C=e+32|0;u=a[C>>0]|0;q=+(u<<24>>24);D=e+104|0;k=c[D>>2]|0;t=(i|0)/(k|0)|0;o=i-(O(t,k)|0)|0;o=~~(((o|0)>-1?.5:-.5)+ +(o|0));B=e+96|0;p=u<<24>>24;i=~~(m+n+q);j=0;while(1){if((j|0)>(k|0))break;A=(c[B>>2]|0)+(j<<2)|0;k=c[A>>2]|0;c[A>>2]=i;i=i+t+((j|0)<(o|0)&1)+k+p|0;j=j+1|0;k=c[D>>2]|0}A=e+100|0;k=c[A>>2]|0;t=(s|0)/(k|0)|0;p=s-(O(t,k)|0)|0;p=~~(((p|0)>-1?.5:-.5)+ +(p|0));z=e+92|0;o=u<<24>>24;i=~~(y-n-q);j=0;while(1){if((j|0)>(k|0))break;x=(c[z>>2]|0)+(j<<2)|0;k=c[x>>2]|0;c[x>>2]=i;i=i-t+(((j|0)<(p|0))<<31>>31)-k-o|0;j=j+1|0;k=c[A>>2]|0}u=(g|0)==0;v=H+16|0;w=H+24|0;x=H+8|0;i=E;while(1){o=c[i>>2]|0;if(!o)break;k=b[o+84>>1]|0;if(u){j=0;p=b[o+80>>1]|0;s=b[o+86>>1]|0;t=b[o+82>>1]|0}else{j=k<<16>>16==0?8:0;s=b[o+86>>1]|0;j=s<<16>>16==0?j|4:j;p=b[o+80>>1]|0;t=b[o+82>>1]|0;j=(((p&65535)+(k&65535)|0)==(c[D>>2]|0)?j|2:j)|((t&65535)+(s&65535)|0)==(c[A>>2]|0)}K=c[B>>2]|0;k=k&65535;h[H>>3]=+(c[K+(k<<2)>>2]|0);E=a[C>>0]|0;h[v>>3]=+((c[K+((p&65535)+k<<2)>>2]|0)-E|0);p=c[z>>2]|0;h[w>>3]=+(c[p+((s&65535)<<2)>>2]|0);h[x>>3]=+((c[p+((t&65535)+(s&65535)<<2)>>2]|0)+E|0);c[G>>2]=c[H>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];c[G+16>>2]=c[H+16>>2];c[G+20>>2]=c[H+20>>2];c[G+24>>2]=c[H+24>>2];c[G+28>>2]=c[H+28>>2];_F(o,G,j&g);i=i+4|0}a[e+35>>0]=g;c[F>>2]=c[f>>2];c[F+4>>2]=c[f+4>>2];c[F+8>>2]=c[f+8>>2];c[F+12>>2]=c[f+12>>2];c[F+16>>2]=c[f+16>>2];c[F+20>>2]=c[f+20>>2];c[F+24>>2]=c[f+24>>2];c[F+28>>2]=c[f+28>>2];l=I;return}function ZF(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0.0;O=l;l=l+112|0;H=O+48|0;I=O+16|0;J=O;c[I>>2]=0;c[I+4>>2]=0;c[I+8>>2]=0;c[I+12>>2]=0;c[I+16>>2]=0;c[I+20>>2]=0;c[I+24>>2]=0;c[I+28>>2]=0;K=e+4|0;L=f+16|0;M=f+32|0;N=I+16|0;r=b[K>>1]|0;n=r<<16>>16;g=0;j=-1.0;m=0;while(1){if((m|0)>=(n|0)){g=1;break}i=c[e>>2]|0;if((b[i+(m*24|0)+4>>1]|0)>1){g=0;break}i=c[(c[i+(m*24|0)>>2]|0)+4>>2]|0;if(!i){k=+h[M>>3];h[N>>3]=k;i=L}else{if(c[i+24>>2]&127|0){g=0;break}k=+h[(+h[i+16>>3]>0.0?i:L)+16>>3];h[N>>3]=k;i=(c[i>>2]|0)==0?L:i}i=c[i>>2]|0;c[I>>2]=i;if(!(j==-1.0)){if(k!=j){g=0;break}}else j=k;if(g){if(xJ(i,g)|0){g=0;break}}else g=i;m=m+1|0}a[e+6>>0]=g;E=f+48|0;F=f+20|0;G=I+4|0;w=f+40|0;x=I+24|0;y=d+144|0;z=H+4|0;v=J+8|0;A=H+16|0;B=H+24|0;C=H+8|0;D=H+12|0;f=(g|0)==0;j=0.0;s=0.0;t=0.0;u=0.0;n=0;g=r;while(1){if((n|0)>=(g<<16>>16|0))break;k=0.0;q=0.0;m=0;p=0.0;j=0.0;i=c[e>>2]|0;while(1){if((m|0)>=(b[i+(n*24|0)+4>>1]|0))break;c[H>>2]=qw(c[(c[i+(n*24|0)>>2]|0)+(m*56|0)>>2]|0,c[E>>2]|0)|0;i=(c[e>>2]|0)+(n*24|0)|0;g=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;if(!g){h[N>>3]=+h[M>>3];c[I>>2]=c[L>>2];c[G>>2]=c[F>>2];c[x>>2]=c[x>>2]&-128|c[w>>2]&127}else{g=c[g+24>>2]&127;if(!g)g=c[w>>2]&127;c[x>>2]=c[x>>2]&-128|g;r=c[(c[i>>2]|0)+(m*56|0)+4>>2]|0;h[N>>3]=+h[(+h[r+16>>3]>0.0?r:L)+16>>3];c[I>>2]=c[((c[r>>2]|0)==0?L:r)>>2];c[G>>2]=c[((c[r+4>>2]|0)==0?L:r)+4>>2]}i=c[y>>2]|0;c[z>>2]=bb[c[i>>2]&31](i,I,1)|0;pA(J,d,H);Q=+h[J>>3];o=+h[v>>3];_I(c[(c[(c[e>>2]|0)+(n*24|0)>>2]|0)+(m*56|0)>>2]|0);i=c[e>>2]|0;r=c[i+(n*24|0)>>2]|0;c[r+(m*56|0)>>2]=c[H>>2];h[r+(m*56|0)+32>>3]=Q;h[r+(m*56|0)+16>>3]=+h[A>>3];h[r+(m*56|0)+24>>3]=+h[B>>3];c[r+(m*56|0)+4>>2]=c[z>>2];c[r+(m*56|0)+8>>2]=c[C>>2];c[r+(m*56|0)+12>>2]=c[D>>2];P=+h[N>>3];R=+h[B>>3];k=R>k?R:k;q=Q+q;m=m+1|0;p=P>p?P:p;j=o>j?o:j}h[i+(n*24|0)+8>>3]=q;g=(n|0)==0;do if(f)if(g){o=p;k=p-k;g=i;break}else{o=p;k=t-u+p-k;g=i+(n*24|0)|0;break}else{o=j;k=g?p:j;g=i+(n*24|0)|0}while(0);h[g+16>>3]=k;s=q>s?q:s;t=o+t;u=+h[i+(n*24|0)+16>>3]+u;n=n+1|0;g=b[K>>1]|0}h[e+24>>3]=s;h[e+32>>3]=g<<16>>16==1?j:t;l=O;return}function _F(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0;y=l;l=l+64|0;v=y+32|0;x=y;j=e+24|0;if((c[j>>2]|0)==0?(i=c[(c[e+96>>2]|0)+24>>2]|0,i|0):0)c[j>>2]=GL(i)|0;t=e+36|0;w=b[t>>1]|0;i=w&65535;a:do if(i&1){k=+h[e+64>>3];q=+h[e+72>>3];j=f+16|0;m=+h[j>>3];o=+h[f>>3];n=m-o-k;b:do if(n>0.0)switch(i&6){case 4:{m=o+k;h[j>>3]=m;k=o;break b}case 2:{m=n+m;h[j>>3]=m;k=o+n;h[f>>3]=k;break b}default:{p=n*.5;k=p+o;h[f>>3]=k;m=m-p;h[j>>3]=m;break b}}else k=o;while(0);i=f+24|0;p=+h[i>>3];j=f+8|0;n=+h[j>>3];o=p-n-q;if(o>0.0)switch(w&24){case 16:{o=n+q;h[i>>3]=o;break a}case 8:{q=o+p;h[i>>3]=q;n=n+o;h[j>>3]=n;o=q;break a}default:{o=o*.5;n=o+n;h[j>>3]=n;o=p-o;h[i>>3]=o;break a}}else o=p}else{k=+h[f>>3];n=+h[f+8>>3];m=+h[f+16>>3];o=+h[f+24>>3]}while(0);s=e+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[s+16>>2]=c[f+16>>2];c[s+20>>2]=c[f+20>>2];c[s+24>>2]=c[f+24>>2];c[s+28>>2]=c[f+28>>2];a[e+35>>0]=g;A=+(d[e+33>>0]|0);z=+(d[e+34>>0]|0);p=k+A+z;h[x>>3]=p;q=n+A+z;s=x+8|0;h[s>>3]=q;n=m-A-z;f=x+16|0;h[f>>3]=n;o=o-A-z;r=x+24|0;h[r>>3]=o;j=e+88|0;switch(a[e+92>>0]|0){case 1:{w=c[j>>2]|0;c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];YF(w,v,g);break}case 3:{i=c[j>>2]|0;k=+h[i+24>>3];m=n-p-+h[i+16>>3];c:do if(m>0.0)switch(w&6){case 4:{h[f>>3]=n-m;break c}case 2:{h[x>>3]=m+p;break c}default:break c}while(0);k=o-q-k;d:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break d}case 8:{h[s>>3]=k+q;break d}default:break d}while(0);c[v>>2]=c[x>>2];c[v+4>>2]=c[x+4>>2];c[v+8>>2]=c[x+8>>2];c[v+12>>2]=c[x+12>>2];c[v+16>>2]=c[x+16>>2];c[v+20>>2]=c[x+20>>2];c[v+24>>2]=c[x+24>>2];c[v+28>>2]=c[x+28>>2];$F(i,v);break}default:{i=c[j>>2]|0;k=+h[i+32>>3];m=n-p-+h[i+24>>3];e:do if(m>0.0?(u=w&6,u<<16>>16!=6):0)switch(u&7){case 4:{h[f>>3]=n-m;break e}case 2:{h[x>>3]=m+p;break e}default:{A=m*.5;h[x>>3]=A+p;h[f>>3]=n-A;break e}}while(0);k=o-q-k;f:do if(k>0.0)switch(w&24){case 16:{h[r>>3]=o-k;break f}case 8:{h[s>>3]=k+q;break f}default:{A=k*.5;h[s>>3]=A+q;h[r>>3]=o-A;break f}}while(0);w=i+8|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];c[w+20>>2]=c[x+20>>2];c[w+24>>2]=c[x+24>>2];c[w+28>>2]=c[x+28>>2];x=b[t>>1]&768;aG(c[j>>2]|0,(x&1023)==512?108:(x&1023)==256?114:110)}}l=y;return}function $F(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function aG(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;g=b[d+4>>1]|0;f=0;while(1){if((f|0)>=(g|0))break;h=(c[d>>2]|0)+(f*24|0)+6|0;if(!(a[h>>0]|0))a[h>>0]=e;f=f+1|0}return}function bG(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=f+84|0;t=c[l>>2]|0;u=wx()|0;v=fG()|0;i=0;h=0;k=Ol(t)|0;while(1){if(!k)break;j=Ol(c[k+8>>2]|0)|0;while(1){if(!j)break;j=c[j>>2]|0;i=i+1|0}h=h+1|0;if(a[k+12>>0]|0)jG(v,h);k=c[k>>2]|0}h=vw((i<<2)+4|0)|0;c[l>>2]=h;i=0;j=0;k=0;q=0;r=Ol(t)|0;while(1){if(!r)break;s=q&65535;p=0;o=Ol(c[r+8>>2]|0)|0;while(1){if(!o)break;n=c[o+8>>2]|0;c[h>>2]=n;k=cG(d,n,f,g)|0|k;l=dG(u,q,p,n)|0;b[n+86>>1]=s;b[n+84>>1]=l;l=l+(e[n+80>>1]|0)|0;m=q+(e[n+82>>1]|0)|0;if(kG(v,m)|0){p=n+100|0;a[p>>0]=a[p>>0]|2}p=l;h=h+4|0;o=c[o>>2]|0;i=(l|0)>(i|0)?l:i;j=(m|0)>(j|0)?m:j}q=q+1|0;r=c[r>>2]|0}c[f+100>>2]=j;c[f+104>>2]=i;Kl(t)|0;Kl(v)|0;zx(u);return k|0}function cG(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+16|0;t=u+8|0;s=u;c[g+96>>2]=i;q=g+36|0;o=b[q>>1]|0;if(!(o&64)){if(!(b[i+36>>1]&64))n=2;else n=a[i+34>>0]|0;a[g+34>>0]=n}if(!(o&32)){n=a[i+88>>0]|0;if(n<<24>>24<=-1)if(!(b[i+36>>1]&32))n=1;else n=a[i+33>>0]|0;a[g+33>>0]=n}n=g+88|0;p=g+92|0;switch(a[p>>0]|0){case 1:{o=WF(f,c[n>>2]|0,g,j)|0;i=c[n>>2]|0;n=o;o=i+64|0;i=i+72|0;break}case 3:{o=eG(c[n>>2]|0,j)|0;i=c[n>>2]|0;n=o;o=i+16|0;i=i+24|0;break}default:{ZF(c[(c[f+16>>2]|0)+144>>2]|0,c[n>>2]|0,j);i=c[n>>2]|0;n=0;o=i+24|0;i=i+32|0}}k=+((d[g+33>>0]|0)+(d[g+34>>0]|0)<<1|0);m=+h[o>>3]+k;k=+h[i>>3]+k;i=g+38|0;do if(b[q>>1]&1){o=b[i>>1]|0;if(o<<16>>16?(r=b[g+40>>1]|0,r<<16>>16):0){if(!(m>+(o&65535)|k>+(r&65535))){m=0.0;k=0.0;break}if((a[p>>0]|0)==3){m=0.0;k=0.0;break}_l(0,122416,s)|0;n=1;m=0.0;k=0.0;break}_l(0,122449,t)|0;n=1}while(0);v=+(e[i>>1]|0);h[g+64>>3]=m>v?m:v;m=+(e[g+40>>1]|0);h[g+72>>3]=k>m?k:m;l=u;return n|0}function dG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=d+80|0;i=(e[j>>1]|0)+-1|0;h=0;a:while(1){f=c;while(1){if(h)break a;g=i+f|0;while(1){if((g|0)<(f|0)){c=f;h=1;continue a}if(Ex(a,g,b)|0)break;g=g+-1|0}f=g+1|0}}h=d+82|0;f=c;while(1){if((f|0)<(c+(e[j>>1]|0)|0))g=b;else break;while(1){if((g|0)>=((e[h>>1]|0)+b|0))break;Cx(a,f,g);g=g+1|0}f=f+1|0}return c|0}function eG(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;i=m+8|0;d=d+52|0;g=b+32|0;Pr(i,c[d>>2]|0,c[g>>2]|0);k=c[i>>2]|0;i=c[i+4>>2]|0;if((i&k|0)==-1){c[j>>2]=c[g>>2];_l(1,122499,j)|0;d=1;f=0.0;e=0.0}else{a[(c[(c[d>>2]|0)+16>>2]|0)+114>>0]=1;d=0;f=+(i|0);e=+(k|0)}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;h[b+16>>3]=e;h[b+24>>3]=f;l=m;return d|0}function fG(){return Ql(54908,c[4345]|0)|0}function gG(a,b,d){a=a|0;b=b|0;d=d|0;d=vw(12)|0;c[d>>2]=c[b>>2];return d|0}function hG(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function iG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)>(e|0)?1:((b|0)<(e|0))<<31>>31)|0}function jG(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;bb[c[a>>2]&31](a,e,1)|0;l=d;return}function kG(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(bb[c[a>>2]&31](a,e,512)|0)!=0&1;l=d;return b|0}function lG(a){a=a|0;var b=0;if(!(c[42418]|0)){b=vw((a<<2)+4|0)|0;c[42418]=b;c[b>>2]=169676;c[42429]=a}c[42430]=0;return}function mG(){_I(c[42418]|0);c[42418]=0;c[42430]=0;return}function nG(){c[42430]=0;return}function oG(){var a=0,b=0,d=0;b=c[42430]|0;d=c[42418]|0;a=1;while(1){if((a|0)>(b|0)){a=5;break}if((c[(c[d+(a<<2)>>2]|0)+4>>2]|0)==(a|0))a=a+1|0;else{a=4;break}}if((a|0)==4)ma(123205,122552,59,122558);else if((a|0)==5)return}function pG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=c[42418]|0;g=c[f+(a<<2)>>2]|0;h=c[g>>2]|0;while(1){b=(a|0)/2|0;d=c[f+(b<<2)>>2]|0;e=f+(a<<2)|0;if((c[d>>2]|0)>=(h|0))break;c[e>>2]=d;c[d+4>>2]=a;a=b}c[e>>2]=g;c[g+4>>2]=a;return}function qG(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=c[42430]|0;if((b|0)==(c[42429]|0)){_l(1,122566,d)|0;a=1}else{b=b+1|0;c[42430]=b;c[(c[42418]|0)+(b<<2)>>2]=a;pG(b);oG();a=0}l=d;return a|0}function rG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[42418]|0;f=c[e+(a<<2)>>2]|0;g=c[f>>2]|0;h=c[42430]|0;i=(h|0)/2|0;while(1){if((a|0)>(i|0))break;d=a<<1;b=c[e+(d<<2)>>2]|0;if((d|0)<(h|0)){l=d|1;j=c[e+(l<<2)>>2]|0;k=(c[b>>2]|0)<(c[j>>2]|0);d=k?l:d;b=k?j:b}if((g|0)>=(c[b>>2]|0))break;c[e+(a<<2)>>2]=b;c[b+4>>2]=a;a=d}c[e+(a<<2)>>2]=f;c[f+4>>2]=a;return}function sG(){var a=0,b=0,d=0,e=0;b=c[42430]|0;if(!b)a=0;else{e=c[42418]|0;d=e+4|0;a=c[d>>2]|0;c[d>>2]=c[e+(b<<2)>>2];b=b+-1|0;c[42430]=b;if(b|0)rG(1);oG()}return a|0}function tG(a,b){a=a|0;b=b|0;c[a>>2]=b;pG(c[a+4>>2]|0);oG();return}function uG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+16|0;j=c[m>>2]|0;j=(a[j+((c[e+12>>2]|0)*40|0)+36>>0]|0)!=(a[j+((c[e+16>>2]|0)*40|0)+36>>0]|0);k=~~((+h[d+64>>3]+-3.0-+h[d+48>>3])*.5);l=~~((+h[d+56>>3]+-3.0-+h[d+40>>3])*.5);g=(k|0)<(l|0)?k:l;n=d+4|0;f=0;while(1){b=c[n>>2]|0;if((f|0)>=(b|0)){g=f;break}i=c[d+8+(f<<2)>>2]|0;o=c[m>>2]|0;if((a[o+((c[i+12>>2]|0)*40|0)+36>>0]|0)==(a[o+((c[i+16>>2]|0)*40|0)+36>>0]|0)){g=f;break}vG(i,g);f=f+1|0}while(1){if((g|0)>=(b|0))break;f=c[d+8+(g<<2)>>2]|0;if(j|(f|0)==(e|0)){vG(f,a[(c[m>>2]|0)+((c[f+12>>2]|0)*40|0)+36>>0]|0?k:l);b=c[n>>2]|0}g=g+1|0}return}function vG(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;c[d>>2]=e+1;if((e|0)>=(b|0)){c[d>>2]=0;h[a>>3]=+h[a>>3]+16384.0}return}function wG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;x=l;l=l+112|0;u=x+64|0;t=x+96|0;m=x+32|0;v=x;w=vw(28)|0;b=mn(a)|0;s=w+4|0;c[s>>2]=b;b=vw(b*72|0)|0;r=w+12|0;c[r>>2]=b;e=v+8|0;h[e>>3]=1797693134862315708145274.0e284;h[v>>3]=1797693134862315708145274.0e284;f=v+24|0;h[f>>3]=-1797693134862315708145274.0e284;g=v+16|0;h[g>>3]=-1797693134862315708145274.0e284;i=m+16|0;j=m+8|0;k=m+24|0;d=co(a)|0;n=1797693134862315708145274.0e284;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;q=-1797693134862315708145274.0e284;while(1){if(!d)break;C=d+16|0;D=c[C>>2]|0;z=(+h[D+96>>3]+ +h[D+88>>3])*.5;z=z<1.0?1.0:z;y=+h[D+80>>3]*.5;y=y<1.0?1.0:y;E=+h[D+16>>3];B=E-z;h[m>>3]=B;z=E+z;h[i>>3]=z;E=+h[D+24>>3];A=E-y;h[j>>3]=A;y=E+y;h[k>>3]=y;B=+h[(n<B?v:m)>>3];h[v>>3]=B;A=+h[(o<A?v:m)+8>>3];h[e>>3]=A;z=+h[(p>z?v:m)+16>>3];h[g>>3]=z;y=+h[(q>y?v:m)+24>>3];h[f>>3]=y;D=b+40|0;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[D+16>>2]=c[m+16>>2];c[D+20>>2]=c[m+20>>2];c[D+24>>2]=c[m+24>>2];c[D+28>>2]=c[m+28>>2];c[b>>2]=c[b>>2]|1;c[(c[C>>2]|0)+112>>2]=b;b=b+72|0;d=eo(a,d)|0;n=B;o=A;p=z;q=y}h[v>>3]=n+-36.0;h[e>>3]=o+-36.0;h[g>>3]=p+36.0;h[f>>3]=q+36.0;D=c[r>>2]|0;f=c[s>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];f=GG(D,f,t,u)|0;if(c[42366]&1|0){r=c[r>>2]|0;C=c[s>>2]|0;D=c[t>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];xG(r,C,u,f,D)}e=w+8|0;c[e>>2]=vw((c[t>>2]|0)*72|0)|0;c[w>>2]=c[t>>2];d=c[t>>2]|0;b=0;while(1){if((b|0)>=(d|0))break;D=(c[e>>2]|0)+(b*72|0)+40|0;C=f+(b<<5)|0;c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];c[D+16>>2]=c[C+16>>2];c[D+20>>2]=c[C+20>>2];c[D+24>>2]=c[C+24>>2];c[D+28>>2]=c[C+28>>2];b=b+1|0}_I(f);c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];c[w+16>>2]=yG(w,u)|0;l=x;return w|0}function xG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0;q=l;l=l+128|0;p=q+96|0;o=q+64|0;j=q+32|0;r=q+16|0;s=q;m=+h[d+16>>3];n=+h[d>>3];k=+h[d+24>>3];g=+h[d+8>>3];i=c[13918]|0;WL(122581,i)|0;c[s>>2]=10;c[s+4>>2]=10;c[s+8>>2]=~~(m+10.0-n);c[s+12>>2]=~~(k+10.0-g);zL(i,123011,s)|0;h[r>>3]=10.0-n;h[r+8>>3]=10.0-g;zL(i,123059,r)|0;WL(123076,i)|0;d=0;while(1){if((d|0)>=(b|0))break;v=+h[a+(d*72|0)+48>>3];u=+h[a+(d*72|0)+56>>3];t=+h[a+(d*72|0)+64>>3];h[j>>3]=+h[a+(d*72|0)+40>>3];h[j+8>>3]=v;h[j+16>>3]=u;h[j+24>>3]=t;zL(i,123095,j)|0;d=d+1|0}WL(123113,i)|0;d=0;while(1){if((d|0)>=(f|0))break;t=+h[e+(d<<5)+8>>3];u=+h[e+(d<<5)+16>>3];v=+h[e+(d<<5)+24>>3];h[o>>3]=+h[e+(d<<5)>>3];h[o+8>>3]=t;h[o+16>>3]=u;h[o+24>>3]=v;zL(i,123132,o)|0;d=d+1|0}WL(123150,i)|0;h[p>>3]=n;h[p+8>>3]=g;h[p+16>>3]=m;h[p+24>>3]=k;zL(i,123132,p)|0;WL(122897,i)|0;l=q;return}function yG(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;A=l;l=l+32|0;t=A+16|0;k=A;w=c[a>>2]|0;y=WC(w<<2|2)|0;z=Ql(54944,c[4345]|0)|0;v=Ql(54980,c[4345]|0)|0;w=vw(w<<7)|0;f=vw(c[a>>2]<<4)|0;x=a+8|0;g=b+16|0;i=k+8|0;j=b+24|0;m=b+8|0;d=0;while(1){if((d|0)>=(c[a>>2]|0))break;n=c[x>>2]|0;o=n+(d*72|0)|0;c[n+(d*72|0)+32>>2]=4;p=n+(d*72|0)+36|0;c[p>>2]=f+(d<<2<<2);q=n+(d*72|0)+40|0;e=+h[n+(d*72|0)+56>>3];if(e<+h[g>>3]){h[k>>3]=e;h[i>>3]=+h[n+(d*72|0)+48>>3];c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=zG(y,z,t,w,1)|0;c[s+20>>2]=o;c[c[p>>2]>>2]=s}e=+h[n+(d*72|0)+64>>3];if(e<+h[j>>3]){h[k>>3]=+h[q>>3];h[i>>3]=e;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];s=zG(y,v,t,w,0)|0;c[s+20>>2]=o;c[(c[p>>2]|0)+4>>2]=s}if(+h[q>>3]>+h[b>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=zG(y,z,t,w,1)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+8>>2]=s}if(+h[n+(d*72|0)+48>>3]>+h[m>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=zG(y,v,t,w,0)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+12>>2]=s}d=d+1|0}o=vw(c[y>>2]<<2)|0;r=a+4|0;s=a+12|0;p=t+8|0;m=0;q=0;n=0;while(1){d=c[r>>2]|0;if((n|0)>=(d|0)){b=0;break}g=c[s>>2]|0;i=g+(n*72|0)|0;j=g+(n*72|0)+36|0;c[j>>2]=o+(m<<2);b=g+(n*72|0)+40|0;c[t>>2]=c[b>>2];c[t+4>>2]=c[b+4>>2];c[t+8>>2]=c[b+8>>2];c[t+12>>2]=c[b+12>>2];b=g+(n*72|0)+56|0;k=g+(n*72|0)+32|0;d=bb[c[v>>2]&31](v,t,512)|0;while(1){if(!d)break;if(!(+h[d+8>>3]<+h[b>>3]))break;C=c[d>>2]|0;B=c[j>>2]|0;f=c[k>>2]|0;c[k>>2]=f+1;c[B+(f<<2)>>2]=C;c[(c[d>>2]|0)+24>>2]=i;d=bb[c[v>>2]&31](v,d,8)|0}f=g+(n*72|0)+64|0;d=bb[c[z>>2]&31](z,t,512)|0;while(1){if(!d){u=20;break}e=+h[f>>3];if(!(+h[d+16>>3]<e))break;b=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=b;c[(c[d>>2]|0)+24>>2]=i;d=bb[c[z>>2]&31](z,d,8)|0}if((u|0)==20){u=0;e=+h[f>>3]}h[p>>3]=e;b=g+(n*72|0)+56|0;d=bb[c[v>>2]&31](v,t,512)|0;while(1){if(!d){u=25;break}e=+h[b>>3];if(!(+h[d+8>>3]<e))break;D=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=D;c[(c[d>>2]|0)+20>>2]=i;d=bb[c[v>>2]&31](v,d,8)|0}if((u|0)==25){u=0;e=+h[b>>3]}h[t>>3]=e;h[p>>3]=+h[g+(n*72|0)+48>>3];d=bb[c[z>>2]&31](z,t,512)|0;while(1){if(!d)break;if(!(+h[d+16>>3]<+h[f>>3]))break;B=c[d>>2]|0;C=c[j>>2]|0;D=c[k>>2]|0;c[k>>2]=D+1;c[C+(D<<2)>>2]=B;c[(c[d>>2]|0)+20>>2]=i;d=bb[c[z>>2]&31](z,d,8)|0}D=c[k>>2]|0;m=D+m|0;q=(D|0)>(q|0)?D:q;n=n+1|0}while(1){if((b|0)>=(d|0))break;AG((c[s>>2]|0)+(b*72|0)|0);b=b+1|0;d=c[r>>2]|0}d=c[y>>2]|0;D=c[y+16>>2]|0;c[D+(d*40|0)+32>>2]=d;d=d+1|0;c[D+(d*40|0)+32>>2]=d;VC(y,q);d=0;while(1){if((d|0)>=(c[a>>2]|0))break;BG((c[x>>2]|0)+(d*72|0)|0,y);d=d+1|0}Kl(z)|0;Kl(v)|0;_I(w);CG(y);TC(y);l=A;return y|0}function zG(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=bb[c[d>>2]&31](d,e,512)|0;do if(!h){b=XC(b)|0;if(!f)ma(122994,122942,291,123001);else{h=c[b+32>>2]|0;i=f+(h<<5)|0;f=f+(h<<5)+8|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[i>>2]=b;a[b+36>>0]=g;bb[c[d>>2]&31](d,i,1)|0;break}}else i=h;while(0);return c[i>>2]|0}function AG(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;a:do if((+h[b+64>>3]+-3.0-+h[b+48>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break a;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;b:do if(a[d+36>>0]|0){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|8;d=c[c[d+36>>2]>>2]|0;if(!d)break b;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|8;d=c[(c[e+36>>2]|0)+8>>2]|0;if(!d)break b;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);c:do if((+h[b+56>>3]+-3.0-+h[b+40>>3])*.5<2.0){i=c[b+32>>2]|0;j=b+36|0;g=0;while(1){if((g|0)>=(i|0))break c;d=c[(c[j>>2]|0)+(g<<2)>>2]|0;d:do if(!(a[d+36>>0]|0)){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|16;d=c[(c[d+36>>2]|0)+4>>2]|0;if(!d)break d;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|16;d=c[(c[e+36>>2]|0)+12>>2]|0;if(!d)break d;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);return}function BG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;g=+h[a+56>>3]-+h[a+40>>3];i=+h[a+64>>3]-+h[a+48>>3];f=(i+g)*.5+500.0;if((i+-3.0)*.5<2.0){l=(c[a>>2]&8|0)==0;f=l?16384.0:f;p=l?16384.0:g}else p=g;if((g+-3.0)*.5<2.0){l=(c[a>>2]&16|0)==0;i=l?16384.0:i;f=l?16384.0:f}l=a+36|0;d=c[l>>2]|0;e=c[d+8>>2]|0;if((e|0)!=0?(j=c[d+4>>2]|0,(j|0)!=0):0){j=YC(b,e,j,f)|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+1;c[a+8+(d<<2)>>2]=j;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(k=c[d>>2]|0,(k|0)!=0):0){k=YC(b,e,k,f)|0;j=a+4|0;d=c[j>>2]|0;c[j>>2]=d+1;c[a+8+(d<<2)>>2]=k;d=c[l>>2]|0}e=c[d+8>>2]|0;if((e|0)!=0?(m=c[d+12>>2]|0,(m|0)!=0):0){m=YC(b,e,m,f)|0;k=a+4|0;d=c[k>>2]|0;c[k>>2]=d+1;c[a+8+(d<<2)>>2]=m;d=c[l>>2]|0}e=c[d+12>>2]|0;if((e|0)!=0?(n=c[d>>2]|0,(n|0)!=0):0){n=YC(b,e,n,f)|0;m=a+4|0;d=c[m>>2]|0;c[m>>2]=d+1;c[a+8+(d<<2)>>2]=n;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(o=c[d+12>>2]|0,(o|0)!=0):0){o=YC(b,e,o,i)|0;n=a+4|0;d=c[n>>2]|0;c[n>>2]=d+1;c[a+8+(d<<2)>>2]=o;d=c[l>>2]|0}e=c[d+8>>2]|0;if(e|0?(q=c[d>>2]|0,q|0):0){b=YC(b,e,q,p)|0;o=a+4|0;q=c[o>>2]|0;c[o>>2]=q+1;c[a+8+(q<<2)>>2]=b}return}function CG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;f=a+16|0;g=c[13918]|0;e=0;while(1){if((e|0)>=(c[a>>2]|0)){b=10;break}b=c[f>>2]|0;d=b+(e*40|0)+20|0;if((c[d>>2]|0)==0?(c[h>>2]=e,zL(g,122907,h)|0,(c[d>>2]|0)==0):0){b=5;break}b=b+(e*40|0)+24|0;if((c[b>>2]|0)==0?(c[i>>2]=e,zL(g,122959,i)|0,(c[b>>2]|0)==0):0){b=8;break}e=e+1|0}if((b|0)==5)ma(122929,122942,311,122949);else if((b|0)==8)ma(122981,122942,313,122949);else if((b|0)==10){l=j;return}}function DG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[c+8>>3];if(!(e>f))if(!(e<f)){f=+h[b>>3];e=+h[c>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function EG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(!(e<f)){f=+h[b+8>>3];e=+h[c+8>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function FG(a){a=a|0;var b=0,d=0;d=a+8|0;_I(c[(c[d>>2]|0)+36>>2]|0);b=a+12|0;_I(c[(c[b>>2]|0)+36>>2]|0);_I(c[d>>2]|0);_I(c[b>>2]|0);_C(c[a+16>>2]|0);Kl(c[a+20>>2]|0)|0;Kl(c[a+24>>2]|0)|0;_I(a);return}function GG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+32|0;h=p;i=b<<2;f=i+4|0;i=i+5|0;o=ww(i*56|0)|0;i=vw(i<<2)|0;g=f*5|1;j=ww(g*72|0)|0;m=g<<5;k=vw(m)|0;m=vw(m)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];HG(a,b,h,o,0);yM(173);IG(f,i);SG(f,o,i,g,j)|0;n=JG(f,o,j,0,k)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];HG(a,b,h,o,1);IG(f,i);SG(f,o,i,g,j)|0;f=JG(f,o,j,1,m)|0;g=vw(O(n<<5,f)|0)|0;b=0;a=0;while(1){if((b|0)>=(f|0))break;h=m+(b<<5)|0;e=0;while(1){if((e|0)>=(n|0))break;q=a+((KG(g+(a<<5)|0,h,k+(e<<5)|0)|0)!=0&1)|0;e=e+1|0;a=q}b=b+1|0}q=yw(g,a<<5)|0;_I(o);_I(i);_I(j);_I(k);_I(m);c[d>>2]=a;l=p;return q|0}function HG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=l;l=l+96|0;h=j+64|0;i=j;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];QG(h,f,1,i);d=RG(e,1,i)|0;g=0;while(1){if((g|0)>=(b|0))break;k=a+(g*72|0)+40|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];QG(h,f,0,i);d=RG(e,d,i)|0;g=g+1|0}l=j;return}function IG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=0;while(1){if((d|0)>(a|0))break;c[b+(d<<2)>>2]=d;d=d+1|0}g=a+1|0;d=1;while(1){if((d|0)>(a|0))break;h=~~(+AM()*+(g-d|0)+ +(d|0));e=b+(d<<2)|0;f=b+(h<<2)|0;if((d|0)!=(h|0)){h=c[e>>2]|0;c[e>>2]=c[f>>2];c[f>>2]=h}d=d+1|0}return}function JG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a*5|0;j=g+1|0;l=vw(j<<2)|0;c[42431]=vw(j<<4)|0;c[42432]=vw((a*56|0)+56|0)|0;j=vw(a<<2)|0;c[42433]=j;k=0;while(1){if((k|0)>(g|0))break;if(LG(d+(k*72|0)|0,b)|0)break;k=k+1|0}h=c[42431]|0;i=c[42432]|0;g=1;while(1){if((g|0)>(a|0))break;c[h+(g<<4)+8>>2]=c[b+(g*56|0)+48>>2];m=b+(g*56|0)+44|0;c[h+(g<<4)+4>>2]=c[m>>2];c[h+(g<<4)>>2]=g;n=i+(g*56|0)|0;o=b+(g*56|0)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[i+(g*56|0)+16>>2]=c[m>>2];c[i+(g*56|0)+32>>2]=g;c[i+(g*56|0)+48>>2]=1;g=g+1|0}c[42434]=a;c[42435]=0;c[j>>2]=1;g=c[d+(k*72|0)+40>>2]|0;if((g|0)<=0){g=c[d+(k*72|0)+48>>2]|0;if((g|0)>0)g=MG(l,f,0,b,d,0,k,g,e,2)|0;else g=0}else g=MG(l,f,0,b,d,0,k,g,e,1)|0;_I(l);_I(c[42431]|0);_I(c[42432]|0);_I(c[42433]|0);return g|0}function KG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[(+h[b>>3]>+h[c>>3]?b:c)>>3];f=+h[(+h[b+16>>3]<+h[c+16>>3]?b:c)+16>>3];h[a+16>>3]=f;h[a>>3]=g;e=+h[(+h[b+8>>3]>+h[c+8>>3]?b:c)+8>>3];d=+h[(+h[b+24>>3]<+h[c+24>>3]?b:c)+24>>3];h[a+24>>3]=d;h[a+8>>3]=e;return !(g>=f)&!(e>=d)&1|0}function LG(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a+4>>2]|0;do if((c[a+68>>2]|0)!=2?!((f|0)<1|(c[a>>2]|0)<1):0){if(!((c[a+40>>2]|0)<1?(c[a+44>>2]|0)<1:0)){if((c[a+48>>2]|0)>=1){a=0;break}if((c[a+52>>2]|0)>=1){a=0;break}}d=+h[b+(f*56|0)+24>>3];e=+h[b+(f*56|0)+8>>3];if(!(d>e+1.0e-07))if(d<e+-1.0e-07)a=0;else a=+h[b+(f*56|0)+16>>3]>+h[b+(f*56|0)>>3]&1;else a=1}else a=0;while(0);return a|0}function MG(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0,N=0,O=0,P=0;D=(k|0)==0;C=i;a:while(1){y=f+(C*72|0)|0;if((C|0)<1)break;i=a+(C<<2)|0;if(c[i>>2]|0)break;c[i>>2]=1;v=f+(C*72|0)+8|0;t=f+(C*72|0)+16|0;p=+h[t>>3];w=f+(C*72|0)+24|0;x=f+(C*72|0)+32|0;o=+h[x>>3];if((p>o?(A=c[y>>2]|0,I=+h[e+(A*56|0)>>3],I==+h[e+(A*56|0)+16>>3]):0)?(A=c[f+(C*72|0)+4>>2]|0,K=+h[e+(A*56|0)>>3],K==+h[e+(A*56|0)+16>>3]):0){i=b+(d<<5)|0;if(D){h[i>>3]=I;q=p;p=K}else{h[i>>3]=o;q=-I;o=-K}h[b+(d<<5)+8>>3]=o;h[b+(d<<5)+16>>3]=p;h[b+(d<<5)+24>>3]=q;d=d+1|0}i=f+(C*72|0)+40|0;z=c[i>>2]|0;do if((z|0)<1?(L=f+(C*72|0)+44|0,(c[L>>2]|0)<1):0){i=f+(C*72|0)+48|0;n=f+(C*72|0)+52|0;if((c[i>>2]|0)>0?(M=c[n>>2]|0,(M|0)>0):0){m=c[f+(M*72|0)>>2]|0;l=c[y>>2]|0;if((M|0)==(j|0)){l=NG(g,l,m)|0;d=MG(a,b,d,e,f,g,c[n>>2]|0,C,k,1)|0;g=l;l=1;break}else{l=NG(g,m,l)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;g=l;i=n;l=1;break}}d=MG(a,b,d,e,f,g,z,C,k,2)|0;d=MG(a,b,d,e,f,g,c[L>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,1)|0;i=n;l=1}else P=19;while(0);do if((P|0)==19){P=0;A=f+(C*72|0)+48|0;r=c[A>>2]|0;if((r|0)<1?(N=f+(C*72|0)+52|0,(c[N>>2]|0)<1):0){n=f+(C*72|0)+44|0;if((z|0)>0?(O=c[n>>2]|0,(O|0)>0):0){m=c[f+(C*72|0)+4>>2]|0;l=c[f+(z*72|0)+4>>2]|0;if((O|0)==(j|0)){l=NG(g,l,m)|0;d=MG(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;g=l;l=2;break}else{l=NG(g,m,l)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=n;l=2;break}}d=MG(a,b,d,e,f,g,z,C,k,2)|0;d=MG(a,b,d,e,f,g,c[n>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;i=N;l=1;break}u=f+(C*72|0)+44|0;s=c[u>>2]|0;m=(s|0)>0;if((z|0)>0){if(m){if((r|0)>0?(E=f+(C*72|0)+52|0,F=c[E>>2]|0,(F|0)>0):0){n=c[f+(F*72|0)>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if(!((l|0)==2&(F|0)==(j|0))?!((l|0)==1&(s|0)==(j|0)):0){l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=E;l=1;break}l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[E>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}m=c[y>>2]|0;if(+B(+(+h[x>>3]-+h[e+(m*56|0)+24>>3]))<=1.0e-07?+B(+(+h[w>>3]-+h[e+(m*56|0)+16>>3]))<=1.0e-07:0){n=c[f+(z*72|0)+4>>2]|0;m=c[e+(m*56|0)+44>>2]|0;if((l|0)==1&(z|0)==(j|0)){l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[u>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+52|0;l=1;break}else{l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;l=2;break}}n=c[f+(C*72|0)+4>>2]|0;m=c[f+(z*72|0)+4>>2]|0;if((l|0)==1&(s|0)==(j|0)){l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[u>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[A>>2]|0,C,k,1)|0;g=l;l=2;break}else{l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=u;l=2;break}}}else if(!m)break a;if((r|0)>0?(G=f+(C*72|0)+52|0,H=c[G>>2]|0,(H|0)>0):0){n=c[y>>2]|0;if(+B(+(+h[t>>3]-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0){m=c[f+(H*72|0)>>2]|0;if((l|0)==2&(r|0)==(j|0)){l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}else{l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}}m=c[f+(H*72|0)>>2]|0;n=c[e+((c[f+(C*72|0)+4>>2]|0)*56|0)+44>>2]|0;if((l|0)==2&(H|0)==(j|0)){l=NG(g,n,m)|0;d=MG(a,b,d,e,f,g,c[G>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=A;l=1;break}else{l=NG(g,m,n)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;g=l;i=G;l=1;break}}o=+h[t>>3];n=c[y>>2]|0;if(((+B(+(o-+h[e+(n*56|0)+8>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(n*56|0)>>3]))<=1.0e-07:0)?(J=c[f+(C*72|0)+4>>2]|0,+B(+(+h[x>>3]-+h[e+(J*56|0)+8>>3]))<=1.0e-07):0)?+B(+(+h[w>>3]-+h[e+(J*56|0)>>3]))<=1.0e-07:0)if((l|0)==1){l=NG(g,n,J)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=NG(g,J,n)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}j=c[f+(C*72|0)+4>>2]|0;if(((+B(+(o-+h[e+(j*56|0)+24>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[e+(j*56|0)+16>>3]))<=1.0e-07:0)?+B(+(+h[x>>3]-+h[e+(n*56|0)+24>>3]))<=1.0e-07:0)?+B(+(+h[w>>3]-+h[e+(n*56|0)+16>>3]))<=1.0e-07:0){m=c[e+(j*56|0)+44>>2]|0;j=c[e+(n*56|0)+44>>2]|0;if((l|0)==1){l=NG(g,j,m)|0;d=MG(a,b,d,e,f,g,c[i>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;d=MG(a,b,d,e,f,l,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;g=l;i=A;l=1;break}else{l=NG(g,m,j)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+52>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,l,c[i>>2]|0,C,k,2)|0;g=l;i=f+(C*72|0)+44|0;l=2;break}}d=MG(a,b,d,e,f,g,z,C,k,2)|0;d=MG(a,b,d,e,f,g,c[A>>2]|0,C,k,1)|0;d=MG(a,b,d,e,f,g,c[f+(C*72|0)+44>>2]|0,C,k,2)|0;i=f+(C*72|0)+52|0;l=1}while(0);j=C;C=c[i>>2]|0}return d|0}function NG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;r=f+4|0;i=f;e=(c[42435]|0)+1|0;c[42435]=e;m=c[42432]|0;OG(b,d,r,i);r=c[r>>2]|0;h=c[m+(b*56|0)+32+(r<<2)>>2]|0;i=c[m+(d*56|0)+32+(c[i>>2]<<2)>>2]|0;n=c[42434]|0;g=n+1|0;n=n+2|0;c[42434]=n;q=c[42431]|0;c[q+(g<<4)>>2]=b;c[q+(n<<4)>>2]=d;o=q+(h<<4)+4|0;p=q+(g<<4)+4|0;c[p>>2]=c[o>>2];c[q+(c[o>>2]<<4)+8>>2]=g;c[q+(g<<4)+8>>2]=n;c[q+(n<<4)+4>>2]=g;j=q+(i<<4)+8|0;c[q+(n<<4)+8>>2]=c[j>>2];c[q+(c[j>>2]<<4)+4>>2]=n;c[o>>2]=i;c[j>>2]=h;j=m+(b*56|0)+48|0;o=c[j>>2]|0;i=m+(d*56|0)+48|0;k=c[i>>2]|0;c[m+(b*56|0)+16+(r<<2)>>2]=d;c[m+(b*56|0)+32+(o<<2)>>2]=g;c[m+(b*56|0)+16+(o<<2)>>2]=c[q+(c[p>>2]<<4)>>2];c[m+(d*56|0)+32+(k<<2)>>2]=n;c[m+(d*56|0)+16+(k<<2)>>2]=b;c[j>>2]=(c[j>>2]|0)+1;c[i>>2]=(c[i>>2]|0)+1;d=c[42433]|0;c[d+(a<<2)>>2]=h;c[d+(e<<2)>>2]=g;l=f;return e|0}function OG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0;l=c[42432]|0;m=l+(a*56|0)|0;n=l+(b*56|0)|0;f=0;g=-4.0;i=0;while(1){if((i|0)==4)break;h=c[l+(a*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(j=+PG(m,l+(h*56|0)|0,n),j>g):0){f=i;g=j}i=i+1|0}c[d>>2]=f;f=0;i=0;g=-4.0;while(1){if((i|0)==4)break;h=c[l+(b*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(k=+PG(n,l+(h*56|0)|0,m),k>g):0){f=i;g=k}i=i+1|0}c[e>>2]=f;return}function PG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;g=+h[a>>3];i=+h[b>>3]-g;d=+h[a+8>>3];f=+h[b+8>>3]-d;g=+h[c>>3]-g;d=+h[c+8>>3]-d;e=d*f+g*i;if(!(d*i-g*f>=0.0))d=-e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)))+-2.0;else d=e/(+C(+(d*d+g*g))*+C(+(f*f+i*i)));return +d}function QG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,l=0.0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];i=e+32|0;j=a+16|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];if(!d){f=a+8|0;g=j;i=a+24|0;d=a}else{f=a+24|0;g=a;i=a+8|0;d=j}k=+h[g>>3];l=+h[i>>3];h[e+16>>3]=+h[d>>3];h[e+24>>3]=l;h[e+48>>3]=k;h[e+56>>3]=+h[f>>3];a:do if(b|0){d=0;while(1){if((d|0)==4)break a;j=e+(d<<4)+8|0;l=+h[j>>3];b=e+(d<<4)|0;h[j>>3]=+h[b>>3];h[b>>3]=-l;d=d+1|0}}while(0);return}function RG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b+3|0;i=b+1|0;j=b+2|0;k=a+(b*56|0)+44|0;l=a+(h*56|0)+44|0;e=0;f=b;while(1){if((f|0)>(h|0))break;do if((f|0)!=(b|0))if((f|0)==(h|0)){c[l>>2]=b;g=j;break}else{c[a+(f*56|0)+44>>2]=f+1;g=f+-1|0;break}else{c[k>>2]=i;g=h}while(0);c[a+(f*56|0)+48>>2]=g;c[a+(f*56|0)+32>>2]=0;n=a+(f*56|0)|0;m=d+(e<<4)|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];UN(a+(g*56|0)+16|0,m|0,16)|0;e=e+1|0;f=f+1|0}return b+4|0}function SG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;c[42436]=e<<1;c[42437]=e;k=vw(e*80|0)|0;c[42438]=1;c[42439]=1;VN(f|0,0,e*72|0)|0;g=TG(c[d+4>>2]|0,b,f,k)|0;e=1;while(1){if((e|0)>(a|0))break;c[b+(e*56|0)+40>>2]=g;c[b+(e*56|0)+36>>2]=g;e=e+1|0}j=UG(a)|0;g=2;i=1;while(1){if((i|0)>(j|0))break;e=VG(a,i+-1|0)|0;h=VG(a,i)|0;while(1){if((e|0)>=(h|0)){e=1;break}WG(c[d+(g<<2)>>2]|0,b,f,k);e=e+1|0;g=g+1|0}while(1){if((e|0)>(a|0))break;XG(e,b,f,k);e=e+1|0}i=i+1|0}e=VG(a,j)|0;while(1){if((e|0)>=(a|0))break;WG(c[d+(g<<2)>>2]|0,b,f,k);g=g+1|0;e=e+1|0}_I(k);return c[42438]|0}function TG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=aH()|0;c[e+(f*40|0)>>2]=2;s=e+(f*40|0)+8|0;k=b+(a*56|0)|0;l=b+(a*56|0)+16|0;eH(s,k,l);n=aH()|0;c[e+(f*40|0)+36>>2]=n;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+28>>2]=f;j=aH()|0;c[e+(f*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=2;r=e+(j*40|0)+8|0;fH(r,k,l);c[e+(j*40|0)+28>>2]=f;l=aH()|0;c[e+(j*40|0)+32>>2]=l;c[e+(l*40|0)>>2]=3;c[e+(l*40|0)+28>>2]=j;k=aH()|0;c[e+(j*40|0)+36>>2]=k;c[e+(k*40|0)>>2]=1;c[e+(k*40|0)+4>>2]=a;c[e+(k*40|0)+28>>2]=j;j=aH()|0;c[e+(k*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=3;c[e+(j*40|0)+28>>2]=k;g=aH()|0;c[e+(k*40|0)+36>>2]=g;c[e+(g*40|0)>>2]=3;c[e+(g*40|0)+28>>2]=k;k=$G(d)|0;i=$G(d)|0;m=$G(d)|0;o=$G(d)|0;p=d+(k*72|0)+8|0;q=d+(i*72|0)+8|0;t=d+(o*72|0)+24|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];UN(q|0,s|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=d+(k*72|0)+24|0;q=d+(i*72|0)+24|0;s=d+(m*72|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];UN(q|0,r|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[d+(o*72|0)+16>>3]=1073741824.0;h[d+(o*72|0)+8>>3]=1073741824.0;h[d+(m*72|0)+32>>3]=-1073741824.0;h[d+(m*72|0)+24>>3]=-1073741824.0;c[d+(i*72|0)>>2]=a;c[d+(k*72|0)+4>>2]=a;c[d+(i*72|0)+40>>2]=o;c[d+(k*72|0)+40>>2]=o;c[d+(i*72|0)+48>>2]=m;c[d+(k*72|0)+48>>2]=m;c[d+(m*72|0)+40>>2]=k;c[d+(o*72|0)+48>>2]=k;c[d+(m*72|0)+44>>2]=i;c[d+(o*72|0)+52>>2]=i;c[d+(k*72|0)+56>>2]=j;c[d+(i*72|0)+56>>2]=g;c[d+(m*72|0)+56>>2]=l;c[d+(o*72|0)+56>>2]=n;c[d+(i*72|0)+68>>2]=1;c[d+(k*72|0)+68>>2]=1;c[d+(o*72|0)+68>>2]=1;c[d+(m*72|0)+68>>2]=1;c[e+(n*40|0)+24>>2]=o;c[e+(l*40|0)+24>>2]=m;c[e+(j*40|0)+24>>2]=k;c[e+(g*40|0)+24>>2]=i;c[b+(a*56|0)+32>>2]=1;return f|0}function UG(a){a=a|0;var b=0.0;b=+(a|0);a=0;while(1){if(!(b>=1.0))break;b=+CJ(b);a=a+1|0}return a+-1|0}function VG(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+(a|0);c=d;a=0;while(1){if((a|0)>=(b|0))break;c=+CJ(c);a=a+1|0}return ~~+N(+(d/c))|0}function WG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;W=l;l=l+96|0;S=W+32|0;f=W+16|0;T=W;s=S;k=b+(a*56|0)|0;r=s+56|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));U=S+16|0;V=S+24|0;i=+h[V>>3];H=S+8|0;j=+h[H>>3];do if(!(i>j+1.0e-07)){if(!(i<j+-1.0e-07)?+h[U>>3]>+h[S>>3]:0){G=4;break}G=(_G(a,b,1)|0)==0;f=c[S+36>>2]|0;if(G){n=0;G=7}else{f=YG(S,U,f,b,e)|0;G=20}}else G=4;while(0);if((G|0)==4){c[f>>2]=c[S>>2];c[f+4>>2]=c[S+4>>2];c[f+8>>2]=c[S+8>>2];c[f+12>>2]=c[S+12>>2];c[S>>2]=c[U>>2];c[S+4>>2]=c[U+4>>2];c[S+8>>2]=c[U+8>>2];c[S+12>>2]=c[U+12>>2];c[U>>2]=c[f>>2];c[U+4>>2]=c[f+4>>2];c[U+8>>2]=c[f+8>>2];c[U+12>>2]=c[f+12>>2];E=S+36|0;F=c[E>>2]|0;G=S+40|0;f=c[G>>2]|0;c[E>>2]=f;c[G>>2]=F;if(!(_G(a,b,2)|0)){n=1;G=7}else{f=YG(S,U,f,b,e)|0;G=19}}if((G|0)==7){m=YG(S,U,f,b,e)|0;f=$G(d)|0;c[d+(f*72|0)+68>>2]=1;s=d+(f*72|0)|0;k=d+(m*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[H>>3];h[d+(f*72|0)+16>>3]=q;h[d+(m*72|0)+32>>3]=q;q=+h[S>>3];h[d+(f*72|0)+8>>3]=q;h[d+(m*72|0)+24>>3]=q;c[d+(m*72|0)+48>>2]=f;c[d+(m*72|0)+52>>2]=0;c[d+(f*72|0)+40>>2]=m;c[d+(f*72|0)+44>>2]=0;g=c[d+(f*72|0)+48>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}g=c[d+(f*72|0)+52>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}E=aH()|0;G=aH()|0;F=d+(m*72|0)+56|0;D=c[F>>2]|0;c[e+(D*40|0)>>2]=2;C=e+(D*40|0)+8|0;c[C>>2]=c[S>>2];c[C+4>>2]=c[S+4>>2];c[C+8>>2]=c[S+8>>2];c[C+12>>2]=c[S+12>>2];c[e+(D*40|0)+4>>2]=a;c[e+(D*40|0)+32>>2]=G;c[e+(D*40|0)+36>>2]=E;c[e+(E*40|0)>>2]=3;c[e+(E*40|0)+24>>2]=m;c[e+(E*40|0)+28>>2]=D;c[e+(G*40|0)>>2]=3;c[e+(G*40|0)+24>>2]=f;c[e+(G*40|0)+28>>2]=D;c[F>>2]=E;c[d+(f*72|0)+56>>2]=G;if(n)G=19;else G=20}if((G|0)==19)if(!(_G(a,b,1)|0)){g=1;G=21}else{g=1;G=32}else if((G|0)==20)if(!(_G(a,b,2)|0)){g=0;G=21}else{g=0;G=32}if((G|0)==21){o=YG(U,S,c[S+40>>2]|0,b,e)|0;n=$G(d)|0;c[d+(n*72|0)+68>>2]=1;s=d+(n*72|0)|0;k=d+(o*72|0)|0;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));q=+h[V>>3];h[d+(n*72|0)+16>>3]=q;h[d+(o*72|0)+32>>3]=q;q=+h[U>>3];h[d+(n*72|0)+8>>3]=q;h[d+(o*72|0)+24>>3]=q;c[d+(o*72|0)+48>>2]=n;c[d+(o*72|0)+52>>2]=0;c[d+(n*72|0)+40>>2]=o;c[d+(n*72|0)+44>>2]=0;k=c[d+(n*72|0)+48>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}k=c[d+(n*72|0)+52>>2]|0;if((k|0)>0){m=d+(k*72|0)+40|0;if((c[m>>2]|0)==(o|0))c[m>>2]=n;k=d+(k*72|0)+44|0;if((c[k>>2]|0)==(o|0))c[k>>2]=n}D=aH()|0;F=aH()|0;E=d+(o*72|0)+56|0;C=c[E>>2]|0;c[e+(C*40|0)>>2]=2;A=e+(C*40|0)+8|0;c[A>>2]=c[U>>2];c[A+4>>2]=c[U+4>>2];c[A+8>>2]=c[U+8>>2];c[A+12>>2]=c[U+12>>2];c[e+(C*40|0)+4>>2]=a;c[e+(C*40|0)+32>>2]=F;c[e+(C*40|0)+36>>2]=D;c[e+(D*40|0)>>2]=3;c[e+(D*40|0)+24>>2]=o;c[e+(D*40|0)+28>>2]=C;c[e+(F*40|0)>>2]=3;c[e+(F*40|0)+24>>2]=n;c[e+(F*40|0)+28>>2]=C;c[E>>2]=D;c[d+(n*72|0)+56>>2]=F;F=f;f=0}else if((G|0)==32){F=f;o=YG(U,S,c[S+40>>2]|0,b,e)|0;f=1}a:do if((F|0)>0){D=d+(o*72|0)+24|0;E=d+(o*72|0)+32|0;C=(f|0)!=0;y=g?b+(a*56|0)+48|0:b+(a*56|0)+44|0;z=T+8|0;g=0;f=0;x=F;b:while(1){k=d+(x*72|0)|0;v=d+(x*72|0)+24|0;if(!(bH(v,D)|0))break a;m=d+(x*72|0)+56|0;u=c[m>>2]|0;n=aH()|0;p=aH()|0;c[e+(u*40|0)>>2]=1;c[e+(u*40|0)+4>>2]=a;c[e+(u*40|0)+32>>2]=n;c[e+(u*40|0)+36>>2]=p;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+24>>2]=x;c[e+(n*40|0)+28>>2]=u;c[e+(p*40|0)>>2]=3;w=$G(d)|0;c[e+(p*40|0)+24>>2]=w;A=d+(w*72|0)|0;c[d+(w*72|0)+68>>2]=1;c[e+(p*40|0)+28>>2]=u;g=(x|0)==(F|0)?w:g;u=d+(x*72|0)+32|0;if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0)f=w;s=A;r=s+72|0;do{c[s>>2]=c[k>>2];s=s+4|0;k=k+4|0}while((s|0)<(r|0));c[m>>2]=n;c[d+(w*72|0)+56>>2]=p;t=d+(x*72|0)+48|0;m=d+(x*72|0)+52|0;k=(c[m>>2]|0)<1;do if((c[t>>2]|0)<1){if(k)break b;s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(M=d+(x*72|0)+44|0,N=c[M>>2]|0,(N|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=N;c[d+(w*72|0)+44>>2]=-1;c[M>>2]=-1;c[d+(N*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=N;c[M>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=N}else{c[d+(w*72|0)+44>>2]=-1;t=d+(w*72|0)+40|0;c[t>>2]=c[M>>2];n=c[s>>2]|0;c[M>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[t>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=77;while(0);do if((G|0)==77){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(ZG(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(ZG(k,b,S)|0)!=0:0){c[d+((c[m>>2]|0)*72|0)+40>>2]=x;n=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+52>>2]|0)*72|0)+44>>2]=w;n=m;k=x}c[n>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[m>>2]|0;break}k=c[m>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(O=c[p>>2]|0,P=(n|0)==(x|0),(O|0)>0):0){c[d+(k*72|0)+60>>2]=P?O:n;c[d+(k*72|0)+64>>2]=P?1:2}c[m>>2]=x;c[p>>2]=w}else{if(!k){i=+h[u>>3];j=+h[H>>3];q=i-j;if(!(+B(+q)<=1.0e-07)){h[z>>3]=i;i=+h[S>>3];h[T>>3]=(+h[U>>3]-i)*(q/(+h[V>>3]-j))+i;s=(cH(T,v)|0)!=0}else s=+h[v>>3]>+h[S>>3];r=d+(x*72|0)+40|0;k=c[r>>2]|0;do if((k|0)>0?(Q=d+(x*72|0)+44|0,R=c[Q>>2]|0,(R|0)>0):0){p=d+(x*72|0)+60|0;k=c[p>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=R;c[d+(w*72|0)+44>>2]=-1;c[Q>>2]=-1;c[d+(R*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=R;c[Q>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;n=w;m=R}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[Q>>2];m=c[r>>2]|0;c[Q>>2]=m;c[r>>2]=k;c[d+(k*72|0)+48>>2]=x;n=x;k=c[X>>2]|0}c[d+(m*72|0)+48>>2]=n;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[p>>2]=0}else G=106;while(0);do if((G|0)==106){G=0;m=d+(k*72|0)+48|0;n=c[m>>2]|0;k=d+(k*72|0)+52|0;if((n|0)>0?(c[k>>2]|0)>0:0){k=c[d+(n*72|0)+4>>2]|0;if((k|0)>0?(ZG(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[r>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[r>>2]|0)*72|0)+48>>2]=x;break}c[m>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;c[d+(k*72|0)+44>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=w;c[d+(X*72|0)+44>>2]=-1;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;c[k>>2]=-1;k=-1}else G=116;do if((G|0)==116){G=0;k=c[t>>2]|0;c[d+(k*72|0)+40>>2]=x;m=d+(k*72|0)+44|0;if(s){c[m>>2]=w;X=d+(x*72|0)+52|0;v=c[X>>2]|0;c[d+(v*72|0)+40>>2]=w;c[d+(v*72|0)+44>>2]=-1;c[X>>2]=-1;break}else{c[m>>2]=-1;k=d+(x*72|0)+52|0;X=c[k>>2]|0;c[d+(X*72|0)+40>>2]=x;c[d+(X*72|0)+44>>2]=w;c[d+(w*72|0)+48>>2]=X;c[d+(w*72|0)+52>>2]=-1;k=c[k>>2]|0;break}}while(0);break}s=d+(x*72|0)+40|0;k=c[s>>2]|0;do if((k|0)>0?(I=d+(x*72|0)+44|0,J=c[I>>2]|0,(J|0)>0):0){r=d+(x*72|0)+60|0;k=c[r>>2]|0;if((k|0)<=0){c[d+(w*72|0)+40>>2]=J;c[d+(w*72|0)+44>>2]=-1;c[I>>2]=-1;c[d+(J*72|0)+48>>2]=w;break}if((c[d+(x*72|0)+64>>2]|0)==1){c[d+(w*72|0)+40>>2]=J;c[I>>2]=-1;c[d+(w*72|0)+44>>2]=k;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;p=w;n=J}else{c[d+(w*72|0)+44>>2]=-1;X=d+(w*72|0)+40|0;c[X>>2]=c[I>>2];n=c[s>>2]|0;c[I>>2]=n;c[s>>2]=k;c[d+(k*72|0)+48>>2]=x;p=x;k=c[X>>2]|0}c[d+(n*72|0)+48>>2]=p;c[d+(k*72|0)+48>>2]=w;c[d+(w*72|0)+60>>2]=0;c[r>>2]=0}else G=51;while(0);do if((G|0)==51){G=0;n=d+(k*72|0)+48|0;p=c[n>>2]|0;k=d+(k*72|0)+52|0;if((p|0)>0?(c[k>>2]|0)>0:0){k=c[d+(p*72|0)+4>>2]|0;if((k|0)>0?(ZG(k,b,U)|0)==0:0){c[d+(w*72|0)+44>>2]=-1;c[d+(x*72|0)+44>>2]=-1;c[s>>2]=-1;c[d+((c[d+(w*72|0)+40>>2]|0)*72|0)+52>>2]=w;break}c[d+(x*72|0)+44>>2]=-1;c[d+(w*72|0)+44>>2]=-1;c[d+(w*72|0)+40>>2]=-1;c[d+((c[s>>2]|0)*72|0)+48>>2]=x;break}c[n>>2]=x;c[k>>2]=w}while(0);if(+B(+(+h[u>>3]-+h[E>>3]))<=1.0e-07?C&+B(+(+h[v>>3]-+h[D>>3]))<=1.0e-07:0){k=c[y>>2]|0;if((k|0)>0?(ZG(k,b,S)|0)!=0:0){c[d+((c[t>>2]|0)*72|0)+40>>2]=x;m=d+(w*72|0)+52|0;k=w}else{c[d+((c[d+(w*72|0)+48>>2]|0)*72|0)+44>>2]=w;k=x}c[m>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[t>>2]|0;break}k=c[t>>2]|0;m=d+(k*72|0)+40|0;n=c[m>>2]|0;p=d+(k*72|0)+44|0;if((n|0)>0?(K=c[p>>2]|0,L=(n|0)==(x|0),(K|0)>0):0){c[d+(k*72|0)+60>>2]=L?K:n;c[d+(k*72|0)+64>>2]=L?1:2}c[m>>2]=x;c[p>>2]=w}while(0);c[A>>2]=a;c[d+(x*72|0)+4>>2]=a;if((k|0)>0)x=k;else break a}XL(123235,19,1,c[13918]|0)|0}else{g=0;f=0}while(0);dH(a,F,o,1,d,e);dH(a,g,f,2,d,e);c[b+(a*56|0)+32>>2]=1;l=W;return}function XG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!(c[b+(a*56|0)+32>>2]|0)){f=b+(a*56|0)|0;g=b+(a*56|0)+16|0;h=b+(a*56|0)+36|0;c[h>>2]=c[d+((YG(f,g,c[h>>2]|0,b,e)|0)*72|0)+56>>2];a=b+(a*56|0)+40|0;c[a>>2]=c[d+((YG(g,f,c[a>>2]|0,b,e)|0)*72|0)+56>>2]}return}function YG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0;o=a+8|0;q=b+8|0;a:while(1){b:do switch(c[f+(d*40|0)>>2]|0){case 3:{r=3;break a}case 2:{g=+h[o>>3];i=f+(d*40|0)+8|0;j=+h[f+(d*40|0)+16>>3];k=j+1.0e-07;do if(!(g>k)){l=j+-1.0e-07;if(!(g<l)?+h[a>>3]>+h[i>>3]:0)break;if(+B(+(g-j))<=1.0e-07?(m=+h[i>>3],+B(+(+h[a>>3]-m))<=1.0e-07):0){g=+h[q>>3];do if(!(g>k)){if(!(g<l)?+h[b>>3]>m:0)break;d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break b}d=f+(d*40|0)+32|0;break b}while(0);d=f+(d*40|0)+36|0;break}case 1:{g=+h[o>>3];i=c[f+(d*40|0)+4>>2]|0;if(+B(+(g-+h[e+(i*56|0)+8>>3]))<=1.0e-07?(n=+h[a>>3],+B(+(n-+h[e+(i*56|0)>>3]))<=1.0e-07):0)j=n;else r=19;do if((r|0)==19){r=0;if(+B(+(g-+h[e+(i*56|0)+24>>3]))<=1.0e-07?(p=+h[a>>3],+B(+(p-+h[e+(i*56|0)+16>>3]))<=1.0e-07):0){j=p;break}if(!(ZG(i,e,a)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}}while(0);if(!(+B(+(g-+h[q>>3]))<=1.0e-07))if(!(ZG(i,e,b)|0)){d=f+(d*40|0)+36|0;break b}else{d=f+(d*40|0)+32|0;break b}else if(+h[b>>3]<j){d=f+(d*40|0)+32|0;break b}else{d=f+(d*40|0)+36|0;break b}}default:{r=31;break a}}while(0);d=c[d>>2]|0}if((r|0)==3)return c[f+(d*40|0)+24>>2]|0;else if((r|0)==31){XL(123169,35,1,c[13918]|0)|0;ma(123205,123207,349,123219)}return 0}function ZG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0.0;f=b+(a*56|0)+16|0;g=+h[b+(a*56|0)+24>>3];i=b+(a*56|0)|0;e=+h[b+(a*56|0)+8>>3];do if(!(g>e+1.0e-07)){if(!(g<e+-1.0e-07)?+h[f>>3]>+h[i>>3]:0){j=4;break}d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[f>>3];d=(+h[i>>3]-k)*(d-g)-(+h[c>>3]-k)*(e-g);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}else j=4;while(0);do if((j|0)==4){d=+h[c+8>>3];if(+B(+(g-d))<=1.0e-07){d=+h[c>>3]<+h[f>>3]?1.0:-1.0;break}if(!(+B(+(e-d))<=1.0e-07)){k=+h[i>>3];d=(+h[f>>3]-k)*(d-e)-(+h[c>>3]-k)*(g-e);break}else{d=+h[c>>3]<+h[i>>3]?1.0:-1.0;break}}while(0);return d>0.0|0}function _G(a,b,d){a=a|0;b=b|0;d=d|0;return c[b+((c[((d|0)==1?b+(a*56|0)+48|0:b+(a*56|0)+44|0)>>2]|0)*56|0)+32>>2]|0}function $G(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[42438]|0;if((b|0)<(c[42437]|0)){c[a+(b*72|0)>>2]=-1;c[a+(b*72|0)+4>>2]=-1;c[a+(b*72|0)+68>>2]=1;c[42438]=b+1;l=e;return b|0}else{e=c[13918]|0;c[d>>2]=b;zL(e,123294,d)|0;ma(123205,123207,88,123332)}return 0}function aH(){var a=0;a=c[42439]|0;if((a|0)<(c[42436]|0)){c[42439]=a+1;return a|0}else{XL(123255,30,1,c[13918]|0)|0;ma(123205,123207,72,123286)}return 0}function bH(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d+1.0e-07))if(c<d+-1.0e-07)a=0;else a=+h[a>>3]>=+h[b>>3]&1;else a=1;return a|0}function cH(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c<d+-1.0e-07))if(c>d+1.0e-07)a=0;else a=+h[a>>3]<+h[b>>3]&1;else a=1;return a|0}function dH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=f+(d*72|0)+24|0;p=(e|0)==1;a:while(1){o=f+(b*72|0)+24|0;j=f+(b*72|0)+48|0;k=f+(b*72|0)+52|0;l=f+(b*72|0)|0;m=f+(b*72|0)+4|0;n=f+(b*72|0)+56|0;if((b|0)<=0)break;while(1){if(!(bH(o,q)|0))break a;d=c[j>>2]|0;e=(d|0)>0;do if(p){if(e?(c[f+(d*72|0)+4>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)+4>>2]|0)!=(a|0)){b=d;continue a}}else{if(e?(c[f+(d*72|0)>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}if((c[f+(d*72|0)>>2]|0)!=(a|0)){b=d;continue a}}while(0);if((c[l>>2]|0)!=(c[f+(d*72|0)>>2]|0)){b=d;continue a}if((c[m>>2]|0)!=(c[f+(d*72|0)+4>>2]|0)){b=d;continue a}r=c[f+(d*72|0)+56>>2]|0;e=c[g+(r*40|0)+28>>2]|0;h=g+(e*40|0)+32|0;i=c[n>>2]|0;if((c[h>>2]|0)==(r|0))c[h>>2]=i;else c[g+(e*40|0)+36>>2]=i;e=c[f+(d*72|0)+48>>2]|0;c[j>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);e=c[f+(d*72|0)+52>>2]|0;c[k>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);r=f+(d*72|0)+24|0;c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];c[f+(d*72|0)+68>>2]=2}}return}function eH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>f+1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]>+h[d>>3]+1.0e-07){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function fH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e<f+-1.0e-07)){if(!(+B(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]<+h[d>>3]){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function gH(a){a=a|0;var b=0;b=vw(8)|0;if(b|0){c[b+4>>2]=a;c[b>>2]=0}return b|0}function hH(a,b){a=a|0;b=b|0;if(b){b=gH(b)|0;c[b>>2]=a;a=b}return a|0}function iH(a){a=a|0;var b=0;do{b=a;a=c[a>>2]|0;_I(b)}while((a|0)!=0);return}function jH(){var a=0;a=vw(1992)|0;if(a|0)c[a>>2]=kH(a)|0;return a|0}function kH(a){a=a|0;var b=0;b=qH(a)|0;c[b+4>>2]=0;a=a+1972|0;c[a>>2]=(c[a>>2]|0)+1;return b|0}function lH(a){a=a|0;mH(a,c[a>>2]|0);_I(c[a>>2]|0);_I(a);return 0}function mH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=a+1980|0;h=a+1912|0;i=a+1936|0;a:do if((c[b+4>>2]|0)>0){d=0;while(1){if((d|0)==64)break a;e=b+8+(d*20|0)+16|0;f=c[e>>2]|0;if(f|0?(mH(a,f),_I(c[e>>2]|0),wH(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}else{d=0;while(1){if((d|0)==64)break a;if(c[b+8+(d*20|0)+16>>2]|0?(wH(b,d),c[g>>2]=(c[g>>2]|0)+-1,c[h>>2]|0):0)c[i>>2]=(c[i>>2]|0)+1;d=d+1|0}}while(0);return}function nH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)ma(123690,123340,194,123348);e=c[b+4>>2]|0;if((e|0)<=-1)ma(123360,123340,195,123348);if(!d)ma(123632,123340,196,123348);i=a+1952|0;c[i>>2]=(c[i>>2]|0)+1;a:do if((e|0)>0){i=0;e=0;while(1){if((i|0)==64)break a;f=b+8+(i*20|0)+16|0;if((c[f>>2]|0)!=0?(BH(d,b+8+(i*20|0)|0)|0)!=0:0){g=nH(a,c[f>>2]|0,d)|0;if(!e)e=g;else{f=e;while(1){h=c[f>>2]|0;if(!h)break;else f=h}c[f>>2]=g}}i=i+1|0}}else{g=0;e=0;while(1){if((g|0)==64)break a;f=b+8+(g*20|0)|0;if((c[b+8+(g*20|0)+16>>2]|0)!=0?(BH(d,f)|0)!=0:0)e=hH(e,f)|0;g=g+1|0}}while(0);return e|0}function oH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+64|0;k=p+52|0;m=p+32|0;n=p+16|0;o=p;c[k>>2]=0;if(!((b|0)!=0&(e|0)!=0))ma(123546,123340,247,123374);if((f|0)>-1?(j=c[e>>2]|0,(c[j+4>>2]|0)>=(f|0)):0){g=0;while(1){if((g|0)>=2)break;if((c[b+(g<<2)>>2]|0)>(c[b+(g+2<<2)>>2]|0)){h=8;break}else g=g+1|0}if((h|0)==8)ma(123421,123340,250,123374);i=a+1912|0;g=a+1908|0;h=c[g>>2]|0;if(c[i>>2]|0){q=h|0?a+1924|0:a+1916|0;c[q>>2]=(c[q>>2]|0)+1}if(!h){q=a+1964|0;c[q>>2]=(c[q>>2]|0)+1}if(!(pH(a,b,d,j,k,f)|0))g=0;else{if(c[i>>2]|0){q=c[g>>2]|0?a+1948|0:a+1944|0;c[q>>2]=(c[q>>2]|0)+1}g=qH(a)|0;q=a+1976|0;c[q>>2]=(c[q>>2]|0)+1;q=c[e>>2]|0;c[g+4>>2]=(c[q+4>>2]|0)+1;tH(n,q);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];q=m+16|0;c[q>>2]=c[e>>2];vH(a,m,g,0)|0;tH(o,c[k>>2]|0);c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[q>>2]=c[k>>2];vH(a,m,g,0)|0;c[e>>2]=g;g=a+1980|0;c[g>>2]=(c[g>>2]|0)+2;g=1}l=p;return g|0}ma(123386,123340,248,123374);return 0}function pH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;m=q+52|0;n=q+48|0;o=q+32|0;p=q+16|0;k=q;c[n>>2]=0;if(!((b|0)!=0&(e|0)!=0&(f|0)!=0))ma(123464,123340,311,123478);if((g|0)>-1?(i=e+4|0,h=c[i>>2]|0,(h|0)>=(g|0)):0){if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i>>2]|0}do if((h|0)>(g|0)){i=uH(b,e)|0;h=e+8+(i*20|0)+16|0;i=e+8+(i*20|0)|0;if(!(pH(a,b,d,c[h>>2]|0,n,g)|0)){AH(o,b,i);c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];j=0;break}else{tH(p,c[h>>2]|0);c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];j=c[n>>2]|0;c[m+16>>2]=j;tH(k,j);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=vH(a,m,e,f)|0;break}}else if((h|0)==(g|0)){c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];c[m+16>>2]=d;j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=vH(a,m,e,f)|0;break}else ma(123523,123340,341,123478);while(0);l=q;return j|0}ma(123491,123340,312,123478);return 0}function qH(a){a=a|0;a=a+1968|0;c[a>>2]=(c[a>>2]|0)+1;a=ZI(1288)|0;rH(a);return a|0}function rH(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=-1;b=0;while(1){if((b|0)==64)break;sH(a+8+(b*20|0)|0);b=b+1|0}return}function sH(a){a=a|0;xH(a);c[a+16>>2]=0;return}function tH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+16|0;h=i;if(!b)ma(123690,123529,99,123536);xH(g);d=1;f=0;while(1){if((f|0)==64)break;do if(c[b+8+(f*20|0)+16>>2]|0){e=b+8+(f*20|0)|0;if(!d){AH(h,g,e);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];d=0;break}else{c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];d=0;break}}while(0);f=f+1|0}c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];l=i;return}function uH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;k=l;l=l+32|0;i=k+16|0;j=k;if(!((a|0)!=0&(b|0)!=0))ma(123546,123529,125,123553);d=0;e=0;f=0;g=1;h=0;while(1){if((h|0)==64)break;if(c[b+8+(h*20|0)+16>>2]|0){n=b+8+(h*20|0)|0;p=zH(n)|0;AH(j,a,n);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];n=(zH(i)|0)-p|0;m=(g|0)!=0|(n|0)<(f|0);o=m|(p|0)<(e|0)&(n|0)==(f|0);d=o?h:d;e=o?p:e;f=o?n:f;g=m?0:g}h=h+1|0}l=k;return d|0}function vH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!b)ma(123712,123529,167,123564);if(!d)ma(123690,123529,168,123564);do if((c[d>>2]|0)<64){a=0;while(1){if((a|0)>=64){e=10;break}if(!(c[d+8+(a*20|0)+16>>2]|0)){e=8;break}a=a+1|0}if((e|0)==8){f=d+8+(a*20|0)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];f=0;g=d;break}else if((e|0)==10)ma(123574,123529,178,123564)}else{if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1}if(!e)ma(123587,123529,187,123564);else{CH(a,d,b,e);f=1;g=(c[d+4>>2]|0)==0?a+1972|0:a+1976|0;break}}while(0);c[g>>2]=(c[g>>2]|0)+1;return f|0}function wH(a,b){a=a|0;b=b|0;if(!((a|0)!=0&b>>>0<64))ma(123591,123529,201,123619);if(!(c[a+8+(b*20|0)+16>>2]|0))ma(124113,123529,202,123619);else{sH(a+8+(b*20|0)|0);c[a>>2]=(c[a>>2]|0)+-1;return}}function xH(a){a=a|0;var b=0;b=0;while(1){if((b|0)==4)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function yH(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;c[d>>2]=1;c[d+8>>2]=-1;b=1;while(1){if((b|0)==2)break;c[d+(b+2<<2)>>2]=0;c[d+(b<<2)>>2]=0;b=b+1|0}c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=e;return}function zH(a){a=a|0;var b=0,d=0,e=0;if(!a)ma(123632,123634,128,123646);a:do if((c[a>>2]|0)>(c[a+8>>2]|0))b=0;else{b=1;d=0;while(1){if((d|0)==2)break a;e=O(c[a+(d+2<<2)>>2]|0,b)|0;b=e-(c[a+(d<<2)>>2]|0)|0;d=d+1|0}}while(0);return b|0}function AH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;f=g;if(!((b|0)!=0&(d|0)!=0))ma(123655,123634,195,123663);do if((c[b>>2]|0)>(c[b+8>>2]|0)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2]}else{if((c[d>>2]|0)>(c[d+8>>2]|0)){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else e=0;while(1){if((e|0)==2)break;j=c[b+(e<<2)>>2]|0;h=c[d+(e<<2)>>2]|0;c[f+(e<<2)>>2]=(j|0)<(h|0)?j:h;h=e+2|0;j=c[b+(h<<2)>>2]|0;i=c[d+(h<<2)>>2]|0;c[f+(h<<2)>>2]=(j|0)>(i|0)?j:i;e=e+1|0}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2]}while(0);l=g;return}function BH(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)!=0&(b|0)!=0)d=0;else ma(123675,123634,216,123682);while(1){if((d|0)>=2){d=1;break}e=d+2|0;if((c[a+(d<<2)>>2]|0)>(c[b+(e<<2)>>2]|0)){d=0;break}if((c[b+(d<<2)>>2]|0)>(c[a+(e<<2)>>2]|0)){d=0;break}else d=d+1|0}return d|0}function CH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;if(!b)ma(123690,123692,40,123702);if(!d)ma(123712,123692,41,123702);j=a+1912|0;if(c[j>>2]|0){i=c[a+1908>>2]|0?a+1932|0:a+1928|0;c[i>>2]=(c[i>>2]|0)+1}h=b+4|0;i=c[h>>2]|0;DH(a,b,d);d=a+1324|0;EH(a);f=zH(a+1852|0)|0;f=(zH(a+1868|0)|0)+f|0;if(c[j>>2]|0?(f|0)!=0&(c[a+1908>>2]|0)==0:0){j=a+1960|0;g[j>>2]=+((c[a+1320>>2]|0)>>>0)/+(f|0)+ +g[j>>2]}j=qH(a)|0;c[e>>2]=j;c[h>>2]=i;c[j+4>>2]=i;FH(a,b,j,d);if(((c[c[e>>2]>>2]|0)+(c[b>>2]|0)|0)==65)return;else ma(123714,123692,86,123702)}function DH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h;if(!b)ma(123690,123692,106,124101);if(!d)ma(123712,123692,107,124101);else e=0;while(1){if((e|0)>=64)break;if(!(c[b+8+(e*20|0)+16>>2]|0)){f=7;break}j=b+8+(e*20|0)|0;i=a+4+(e*20|0)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];e=e+1|0}if((f|0)==7)ma(124113,123692,111,124101);e=a+4|0;j=a+1284|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];d=a+1304|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)==65)break;AH(g,d,a+4+(e*20|0)|0);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];e=e+1|0}c[a+1320>>2]=zH(d)|0;rH(b);l=h;return}function EH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+48|0;i=u+32|0;k=u+16|0;m=u;GH(a);HH(a);q=a+1844|0;s=a+1848|0;t=a+1892|0;n=a+1852|0;o=a+1884|0;p=a+1868|0;j=a+1888|0;f=0;e=0;while(1){d=c[q>>2]|0;b=c[s>>2]|0;if((b+d|0)>=65)break;h=65-(c[t>>2]|0)|0;if((d|0)<(h|0)&(b|0)<(h|0)){g=-1;h=0}else{r=12;break}while(1){if((h|0)==65)break;if(!(c[a+1584+(h<<2)>>2]|0)){v=a+4+(h*20|0)|0;AH(k,v,n);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];b=zH(i)|0;d=c[o>>2]|0;AH(m,v,p);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];v=zH(i)|0;b=v-(c[j>>2]|0)+(d-b)|0;d=(b|0)>-1;b=d?b:0-b|0;d=(d^1)&1;if((b|0)<=(g|0))if((b|0)==(g|0)){v=(c[a+1844+(d<<2)>>2]|0)<(c[a+1844+(f<<2)>>2]|0);b=g;d=v?d:f;e=v?h:e}else{b=g;d=f}else e=h}else{b=g;d=f}g=b;h=h+1|0;f=d}IH(a,e,f)}if((r|0)==12){b=(d|0)>=(65-(c[t>>2]|0)|0)&1;d=0;while(1){if((d|0)==65)break;if(!(c[a+1584+(d<<2)>>2]|0))IH(a,d,b);d=d+1|0}d=c[q>>2]|0;b=c[s>>2]|0}if((b+d|0)!=65)ma(123857,123692,210,123943);v=c[t>>2]|0;if((d|0)<(v|0)|(b|0)<(v|0))ma(123954,123692,212,123943);else{l=u;return}}function FH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!b)ma(123690,123692,297,123754);if(!d)ma(123764,123692,298,123754);if(!e)ma(123766,123692,299,123754);else f=0;while(1){if((f|0)>=65){e=14;break}e=c[a+1324+(f<<2)>>2]|0;if(e>>>0>=2){e=9;break}switch(e|0){case 0:{vH(a,a+4+(f*20|0)|0,b,0)|0;break}case 1:{vH(a,a+4+(f*20|0)|0,d,0)|0;break}default:{}}f=f+1|0}if((e|0)==9)ma(123768,123692,303,123754);else if((e|0)==14)return}function GH(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[a+1848>>2]=0;c[a+1844>>2]=0;b=a+1852|0;f=a+1868|0;yH(e);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[a+1888>>2]=0;c[a+1884>>2]=0;b=0;while(1){if((b|0)==65)break;c[a+1584+(b<<2)>>2]=0;c[a+1324+(b<<2)>>2]=-1;b=b+1|0}l=d;return}function HH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+304|0;k=o+32|0;m=o+16|0;n=o;b=0;while(1){if((b|0)==65)break;c[k+(b<<2)>>2]=zH(a+4+(b*20|0)|0)|0;b=b+1|0}b=0;d=0;e=0;g=0;a:while(1){if((g|0)==64)break;i=g+1|0;j=a+4+(g*20|0)|0;h=k+(g<<2)|0;f=i;while(1){if((f|0)==65){g=i;continue a}AH(n,j,a+4+(f*20|0)|0);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];p=zH(m)|0;p=p-(c[h>>2]|0)-(c[k+(f<<2)>>2]|0)|0;q=p>>>0>e>>>0;r=q?f:b;f=f+1|0;b=r;d=q?g:d;e=q?p:e}}IH(a,d,0);IH(a,b,1);l=o;return}function IH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;e=a+1584+(b<<2)|0;if(c[e>>2]|0)ma(124057,123692,257,124092);c[a+1324+(b<<2)>>2]=d;c[e>>2]=1;g=a+1844+(d<<2)|0;f=a+1852+(d<<4)|0;e=a+4+(b*20|0)|0;if(!(c[g>>2]|0)){c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2]}else{AH(h,e,f);c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2]}c[a+1884+(d<<2)>>2]=zH(f)|0;c[g>>2]=(c[g>>2]|0)+1;l=i;return}function JH(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[42440]=0;c[42441]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=95;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=ZI(k*6|3)|0;if(h){TN(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;TN(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{_I(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=96;break a}case 4:{s=95;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==31){e=0;s=96;break}e=b[58358+(p<<1)>>1]|0;j=e<<16>>16;do if(e<<16>>16!=-82){h=c[42441]|0;if((h|0)==-2){h=gI()|0;c[42441]=h}if((h|0)>=1)if(h>>>0<296)i=d[124132+h>>0]|0;else i=2;else{c[42441]=0;i=0}h=i+j|0;if(h>>>0<=271?(i|0)==(a[124428+h>>0]|0):0){p=a[124700+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[42441]=-2;g=g+4|0;c[g>>2]=0;j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[124972+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[42441]|0;b:do switch(q|0){case 0:{c[42440]=(c[42440]|0)+1;cI(125369);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=96;break a}else{h=o;break b}else{c[42441]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<16>>16==8)break;if((h|0)==(f|0)){e=1;s=96;break a}e=h+-2|0;g=g+-4|0;h=e;e=b[58358+(b[e>>1]<<1)>>1]|0}g=g+4|0;c[g>>2]=0;e=1;j=3}else s=23}do if((s|0)==23){s=0;j=d[125088+h>>0]|0;e=c[g+(1-j<<2)>>2]|0;do switch(h|0){case 4:{s=26;break a}case 2:{c[42442]=KH(c[g+-4>>2]|0,2)|0;break}case 3:{c[42442]=KH(c[g+-4>>2]|0,1)|0;break}case 5:{e=MH()|0;break}case 8:{NH(c[42443]|0);break}case 9:{OH(c[g>>2]|0);break}case 18:{PH(c[g>>2]|0);break}case 19:{QH();break}case 20:{PH(c[g>>2]|0);break}case 21:{QH();break}case 22:{PH(c[g>>2]|0);break}case 23:{QH();break}case 24:{PH(c[g>>2]|0);break}case 25:{QH();break}case 26:{PH(c[g>>2]|0);break}case 27:{QH();break}case 28:{PH(c[g>>2]|0);break}case 29:{QH();break}case 30:{PH(c[g>>2]|0);break}case 31:{QH();break}case 32:{PH(c[g>>2]|0);break}case 33:{QH();break}case 34:{e=c[g+-4>>2]|0;break}case 35:{e=c[g>>2]|0;break}case 38:{e=c[42443]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;i=c[42443]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(RH(p)|0){s=51;break a}c[(c[g>>2]|0)+80>>2]=c[42444];e=Ql(55016,c[4344]|0)|0;c[(c[g>>2]|0)+84>>2]=e;c[42444]=c[g>>2];c[(c[g>>2]|0)+108>>2]=c[c[42445]>>2];e=c[g>>2]|0;break}case 39:{e=c[42443]|0;i=c[e+4>>2]|0;if(i>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;i=c[42443]|0;e=i;i=c[i+4>>2]|0}a[i>>0]=0;p=c[e>>2]|0;c[e+4>>2]=p;if(RH(p)|0){s=56;break a}e=c[42444]|0;c[42444]=c[e+80>>2];break}case 40:{e=c[g>>2]|0;break}case 41:{e=c[g+-4>>2]|0;break}case 42:{e=c[g+-4>>2]|0;break}case 43:{e=c[g+-4>>2]|0;break}case 44:{e=c[g+-4>>2]|0;break}case 45:{e=c[g+-4>>2]|0;break}case 48:{e=c[g>>2]|0;break}case 49:{e=c[g>>2]|0;break}case 50:{a[(c[g+-8>>2]|0)+12>>0]=1;e=c[g>>2]|0;break}case 51:{SH();break}case 52:{e=TH()|0;break}case 53:{e=c[g>>2]|0;break}case 54:{e=c[g>>2]|0;break}case 55:{e=(c[g+-8>>2]|0)+100|0;a[e>>0]=a[e>>0]|1;e=c[g>>2]|0;break}case 56:{UH(c[g+-4>>2]|0,c[g>>2]|0,1);break}case 57:{e=c[g+-12>>2]|0;break}case 58:{UH(c[g+-4>>2]|0,c[g>>2]|0,2);break}case 59:{e=c[g+-12>>2]|0;break}case 60:{UH(c[g+-4>>2]|0,c[g>>2]|0,3);break}case 61:{e=c[g+-12>>2]|0;break}case 62:{UH(c[g>>2]|0,MH()|0,2);break}case 63:{e=c[g+-8>>2]|0;break}case 64:{e=c[g+-4>>2]|0;break}case 65:{e=c[g>>2]|0;break}default:{}}while(0);i=0-j|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[125260+h>>0]|0)+-41|0;p=b[i>>1]|0;h=p+(b[58590+(e<<1)>>1]|0)|0;if(h>>>0<272?(a[124428+h>>0]|0)==(p|0):0){e=a[124700+h>>0]|0;j=q;h=i;break}e=a[125330+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==26){LH();e=1;s=96}else if((s|0)==51){cI(125158);LH();e=1;s=96}else if((s|0)==56){cI(125209);LH();e=1;s=96}else if((s|0)==95){cI(125382);e=2;s=96}if((s|0)==96)if((f|0)!=(r|0))_I(f);l=t;return e|0}function KH(b,d){b=b|0;d=d|0;var e=0;e=vw(8)|0;a[e+4>>0]=d;c[e>>2]=b;return e|0}function LH(){var a=0,b=0;a=c[42444]|0;b=c[42442]|0;if(b|0){EF(b,1);c[42442]=0}c[13767]=62;while(1){if(!a)break;b=c[a+80>>2]|0;YH(a);a=b}c[13767]=51;c[13776]=63;b=c[42447]|0;bb[c[b>>2]&31](b,0,64)|0;c[13776]=51;c[13785]=64;b=c[42448]|0;bb[c[b>>2]&31](b,0,64)|0;c[13785]=51;$H();return}function MH(){var a=0,d=0,e=0,f=0,g=0,h=0;e=c[42448]|0;f=vw(40)|0;if(Sl(c[42447]|0)|0)OH(0);a=Sl(e)|0;b[f+4>>1]=a;a:do if(!a)a=e;else{c[f>>2]=vw(a*24|0)|0;a=0;d=bb[c[e>>2]&31](e,0,128)|0;while(1){if(!d){a=e;break a}g=(c[f>>2]|0)+(a*24|0)|0;h=d+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];a=a+1|0;d=bb[c[e>>2]&31](e,d,8)|0}}while(0);bb[c[a>>2]&31](e,0,64)|0;return f|0}function NH(b){b=b|0;var d=0,e=0,f=0;e=vw(64)|0;f=b+4|0;d=c[f>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){dm(b,1)|0;d=c[f>>2]|0}a[d>>0]=0;b=c[b>>2]|0;c[f>>2]=b;c[e+8>>2]=GL(b)|0;c[e+12>>2]=c[c[42445]>>2];f=c[42447]|0;bb[c[f>>2]&31](f,e,1)|0;return}function OH(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=vw(32)|0;j=c[42447]|0;e=Sl(j)|0;k=i+8|0;a[i+14>>0]=d;a:do if(!e){c[k>>2]=vw(56)|0;b[i+12>>1]=1;h=GL(174181)|0;k=c[k>>2]|0;c[k>>2]=h;c[k+4>>2]=c[c[42445]>>2]}else{b[i+12>>1]=e;c[k>>2]=vw(e*56|0)|0;d=0;e=Ol(j)|0;while(1){if(!e)break a;f=(c[k>>2]|0)+(d*56|0)|0;g=e+8|0;h=f+56|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));d=d+1|0;e=c[e>>2]|0}}while(0);bb[c[j>>2]&31](j,0,64)|0;k=c[42448]|0;bb[c[k>>2]&31](k,i,1)|0;return}function PH(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;i=vw(8)|0;f=c[c[42445]>>2]|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];if(f|0){a=g+4|0;if((c[a>>2]|0)==0?(b=c[f+4>>2]|0,b|0):0)c[a>>2]=b;a=g+16|0;if(+h[a>>3]<0.0?(d=+h[f+16>>3],d>=0.0):0)h[a>>3]=d;if((c[g>>2]|0)==0?(e=c[f>>2]|0,e|0):0)c[g>>2]=e;a=c[f+24>>2]&127;if(a|0){f=g+24|0;e=c[f>>2]|0;c[f>>2]=e&127|a|e&-128}}f=c[(c[42446]|0)+144>>2]|0;c[i>>2]=bb[c[f>>2]&31](f,g,1)|0;c[i+4>>2]=c[42445];c[42445]=i;l=j;return}function QH(){var a=0,b=0;b=c[42445]|0;a=c[b+4>>2]|0;_I(b);c[42445]=a;return}function RH(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=0;break}if(c<<24>>24==32)b=b+1|0;else{b=1;break}}return b|0}function SH(){var b=0,d=0,e=0;e=Ql(55052,c[4344]|0)|0;b=c[42444]|0;d=vw(16)|0;c[d+8>>2]=e;if(a[b+112>>0]&2)a[d+12>>0]=1;e=c[b+84>>2]|0;bb[c[e>>2]&31](e,d,1)|0;return}function TH(){var a=0;a=c[(c[42444]|0)+84>>2]|0;return bb[c[a>>2]&31](a,0,256)|0}function UH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=vw(16)|0;f=c[42444]|0;h=c[f+84>>2]|0;h=c[(bb[c[h>>2]&31](h,0,256)|0)+8>>2]|0;c[g+8>>2]=b;bb[c[h>>2]&31](h,g,1)|0;a[b+92>>0]=e;if(a[f+112>>0]&1)a[b+100>>0]=1;c[b+88>>2]=d;return}function VH(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function WH(a,b,d){a=a|0;b=b|0;d=d|0;Kl(c[b+8>>2]|0)|0;_I(b);return}function XH(a,b,d){a=a|0;b=b|0;d=d|0;aI(c[b+8>>2]|0);_I(b);return}function YH(a){a=a|0;Kl(c[a+84>>2]|0)|0;BF(a);_I(a);return}function ZH(a,b,d){a=a|0;b=b|0;d=d|0;_I(c[b+8>>2]|0);_I(b);return}function _H(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d+12|0;a=b[g>>1]|0;if(a<<16>>16){h=d+8|0;e=0;f=c[h>>2]|0;while(1){if((e|0)>=(a<<16>>16|0))break;_I(c[f>>2]|0);e=e+1|0;f=f+56|0;a=b[g>>1]|0}_I(c[h>>2]|0)}_I(d);return}function $H(){var a=0,b=0;a=c[42445]|0;while(1){b=c[a+4>>2]|0;if(!b)break;_I(a);a=b}return}function aI(b){b=b|0;var d=0;d=b+88|0;switch(a[b+92>>0]|0){case 1:{YH(c[d>>2]|0);break}case 2:{CF(c[d>>2]|0);break}default:{}}BF(b);_I(b);return}function bI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+160|0;e=f+8|0;g=f;c[g>>2]=0;c[g+4>>2]=0;c[42445]=g;c[42444]=0;c[42442]=0;c[42446]=c[(c[(c[d+52>>2]|0)+16>>2]|0)+144>>2];c[42447]=Ql(55088,c[4344]|0)|0;c[42448]=Ql(55124,c[4344]|0)|0;cm(e,128,f+24|0);c[42443]=e;if(!(eI(a,e,d)|0)){JH()|0;c[b>>2]=fI()|0;a=c[42442]|0}else{c[b>>2]=2;a=0}Kl(c[42447]|0)|0;Kl(c[42448]|0)|0;c[42447]=0;c[42448]=0;c[42445]=0;gm(e);l=f;return a|0}function cI(b){b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(a[169796]|0)){a[169796]=1;c[d>>2]=b;c[d+4>>2]=0;_l(1,125399,d)|0;dI()}else{l=e;return}}function dI(){Ta()}function eI(a,b,d){a=a|0;b=b|0;d=d|0;a=l;l=l+16|0;if(!(c[42450]|0)){_l(0,125415,a)|0;c[42450]=(c[42450]|0)+1}l=a;return 1}function fI(){return 1}function gI(){return -1}function hI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;m=u+48|0;k=u+32|0;s=4;j=ZI(40)|0;c[j>>2]=0;n=u+16|0;q=u;r=c[d>>2]|0;i=c[d+4>>2]|0;s=RN(169804,1,j|0,s|0)|0;j=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=SN(c[d>>2]|0,s|0,j|0)|0;if(!g)Ua(d|0,p|0);z=p}else g=-1;if((g|0)==1)d=z;else d=0;while(1){if(d|0){d=-1;break}o=0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];ga(26,n|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=SN(c[d>>2]|0,s|0,j|0)|0;if(!g)Ua(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[e>>2]=c[n>>2];c[e+4>>2]=c[n+4>>2];c[e+8>>2]=c[n+8>>2];c[e+12>>2]=c[n+12>>2];h=e+16|0;o=0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];ga(26,q|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=SN(c[d>>2]|0,s|0,j|0)|0;if(!g)Ua(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue};c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[42490]=0;o=0;fa(93,4);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=SN(c[d>>2]|0,s|0,j|0)|0;if(!g)Ua(d|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;continue}g=c[42491]|0;d=c[42490]|0;c[42490]=d+1;d=g+(d<<4)|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];o=0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];d=da(1,a|0,b|0,r|0,i|0,k|0,m|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=SN(c[g>>2]|0,s|0,j|0)|0;if(!h)Ua(g|0,p|0);z=p}else h=-1;if((h|0)==1)d=z;else{t=8;break}}if((t|0)==8)if((d|0)==-1)d=-1;else{c[f+4>>2]=c[42490];c[f>>2]=c[42491];d=0}_I(s|0);l=u;return d|0}function iI(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0.0;d=+h[b>>3];e=b+8|0;f=+h[e>>3];i=f*f+d*d;g=+C(+i);if(i>1.0e-06){h[b>>3]=d/g;h[e>>3]=f/g};c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function jI(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[42494]|0)<(a|0)){b=c[42491]|0;if(!b){e=ZI(a<<4)|0;c[42491]=e;if(!e){e=c[13918]|0;c[d>>2]=125476;c[d+4>>2]=531;c[d+8>>2]=125611;zL(e,125484,d)|0;Ua(169804,1)}}else{d=aJ(b,a<<4)|0;c[42491]=d;if(!d){d=c[13918]|0;c[e>>2]=125476;c[e+4>>2]=537;c[e+8>>2]=125629;zL(d,125484,e)|0;Ua(169804,1)}}c[42494]=a}l=f;return}function kI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0.0;R=l;l=l+336|0;J=R+320|0;I=R+304|0;w=R+144|0;q=R+128|0;G=R+112|0;H=R+96|0;Q=R+80|0;A=R+64|0;C=R+48|0;K=R+32|0;L=R+16|0;M=R;x=R+288|0;y=R+272|0;z=R+256|0;B=R+240|0;D=R+224|0;E=R+208|0;N=R+192|0;O=R+176|0;P=R+160|0;i=c[42493]|0;do if((c[42492]|0)<(e|0)){if(!i){i=ZI(e*40|0)|0;c[42493]=i;if(!i){i=-1;break}}else{i=aJ(i,e*40|0)|0;c[42493]=i;if(!i){i=-1;break}}c[42492]=e;k=6}else k=6;while(0);if((k|0)==6){h[i>>3]=0.0;k=1;j=0.0;while(1){if((k|0)>=(e|0))break;n=d+(k<<4)|0;F=d+(k+-1<<4)|0;c[I>>2]=c[n>>2];c[I+4>>2]=c[n+4>>2];c[I+8>>2]=c[n+8>>2];c[I+12>>2]=c[n+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];v=+lI(I,J)+j;h[i+(k*40|0)>>3]=v;k=k+1|0;j=v}F=e+-1|0;n=i+(F*40|0)|0;k=1;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)|0;h[S>>3]=+h[S>>3]/+h[n>>3];k=k+1|0}k=0;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)+8|0;n=i+(k*40|0)|0;v=+mI(+h[n>>3]);c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];c[J+8>>2]=c[f+8>>2];c[J+12>>2]=c[f+12>>2];nI(x,J,v);c[S>>2]=c[x>>2];c[S+4>>2]=c[x+4>>2];c[S+8>>2]=c[x+8>>2];c[S+12>>2]=c[x+12>>2];S=i+(k*40|0)+24|0;v=+oI(+h[n>>3]);c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];nI(y,J,v);c[S>>2]=c[y>>2];c[S+4>>2]=c[y+4>>2];c[S+8>>2]=c[y+8>>2];c[S+12>>2]=c[y+12>>2];k=k+1|0}c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];pI(d,e,i,I,J,G,A,H,C);c[q>>2]=c[G>>2];c[q+4>>2]=c[G+4>>2];c[q+8>>2]=c[G+8>>2];c[q+12>>2]=c[G+12>>2];c[w>>2]=c[A>>2];c[w+4>>2]=c[A+4>>2];c[w+8>>2]=c[A+8>>2];c[w+12>>2]=c[A+12>>2];c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];if(!(qI(a,b,q,w,I,J,d,e)|0)){c[J>>2]=c[A>>2];c[J+4>>2]=c[A+4>>2];c[J+8>>2]=c[A+8>>2];c[J+12>>2]=c[A+12>>2];nI(z,J,.3333333333333333);c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[z>>2];c[J+4>>2]=c[z+4>>2];c[J+8>>2]=c[z+8>>2];c[J+12>>2]=c[z+12>>2];rI(B,I,J);v=+h[B>>3];u=+h[B+8>>3];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];nI(D,J,.3333333333333333);c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[D>>2];c[J+4>>2]=c[D+4>>2];c[J+8>>2]=c[D+8>>2];c[J+12>>2]=c[D+12>>2];sI(E,I,J);t=+h[E>>3];p=+h[E+8>>3];q=c[42493]|0;r=+h[G>>3];s=+h[H>>3];o=+h[G+8>>3];m=+h[H+8>>3];n=Q+8|0;i=-1;j=-1.0;k=1;while(1){if((k|0)>=(F|0))break;T=+h[q+(k*40|0)>>3];U=+tI(T);V=+mI(T);W=+oI(T);T=+uI(T);h[Q>>3]=V*v+r*U+W*t+s*T;h[n>>3]=W*p+V*u+o*U+m*T;S=d+(k<<4)|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];T=+lI(I,J);S=T>j;i=S?k:i;j=S?T:j;k=k+1|0}S=d+(i<<4)|0;Q=d+(i+-1<<4)|0;c[I>>2]=c[S>>2];c[I+4>>2]=c[S+4>>2];c[I+8>>2]=c[S+8>>2];c[I+12>>2]=c[S+12>>2];c[J>>2]=c[Q>>2];c[J+4>>2]=c[Q+4>>2];c[J+8>>2]=c[Q+8>>2];c[J+12>>2]=c[Q+12>>2];sI(N,I,J);c[J>>2]=c[N>>2];c[J+4>>2]=c[N+4>>2];c[J+8>>2]=c[N+8>>2];c[J+12>>2]=c[N+12>>2];iI(L,J);Q=i+1|0;N=d+(Q<<4)|0;c[I>>2]=c[N>>2];c[I+4>>2]=c[N+4>>2];c[I+8>>2]=c[N+8>>2];c[I+12>>2]=c[N+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];sI(O,I,J);c[J>>2]=c[O>>2];c[J+4>>2]=c[O+4>>2];c[J+8>>2]=c[O+8>>2];c[J+12>>2]=c[O+12>>2];iI(M,J);c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[J>>2]=c[M>>2];c[J+4>>2]=c[M+4>>2];c[J+8>>2]=c[M+8>>2];c[J+12>>2]=c[M+12>>2];rI(P,I,J);c[J>>2]=c[P>>2];c[J+4>>2]=c[P+4>>2];c[J+8>>2]=c[P+8>>2];c[J+12>>2]=c[P+12>>2];iI(K,J);c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];kI(a,b,d,Q,I,J)|0;c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];kI(a,b,S,e-i|0,I,J)|0;i=0}else i=0}l=R;return i|0}function lI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[b>>3]-+h[a>>3];d=+h[b+8>>3]-+h[a+8>>3];return +(+C(+(d*d+c*c)))}function mI(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(a*3.0))}function nI(a,b,d){a=a|0;b=b|0;d=+d;var e=0;h[b>>3]=+h[b>>3]*d;e=b+8|0;h[e>>3]=+h[e>>3]*d;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function oI(a){a=+a;return +(a*a*3.0*(1.0-a))}function pI(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;G=l;l=l+128|0;B=G+112|0;v=G+80|0;u=G;r=G+96|0;s=G+64|0;t=G+48|0;C=G+32|0;D=G+16|0;E=a+(b+-1<<4)|0;q=0;w=0.0;x=0.0;y=0.0;z=0.0;A=0.0;while(1){if((q|0)>=(b|0))break;K=d+(q*40|0)+8|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];H=+AI(v,B)+x;J=d+(q*40|0)+24|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];p=+AI(v,B)+A;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];o=+AI(v,B)+y;L=a+(q<<4)|0;M=d+(q*40|0)|0;I=+BI(+h[M>>3]);c[B>>2]=c[a>>2];c[B+4>>2]=c[a+4>>2];c[B+8>>2]=c[a+8>>2];c[B+12>>2]=c[a+12>>2];nI(s,B,I);I=+CI(+h[M>>3]);c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];nI(t,B,I);c[v>>2]=c[s>>2];c[v+4>>2]=c[s+4>>2];c[v+8>>2]=c[s+8>>2];c[v+12>>2]=c[s+12>>2];c[B>>2]=c[t>>2];c[B+4>>2]=c[t+4>>2];c[B+8>>2]=c[t+8>>2];c[B+12>>2]=c[t+12>>2];rI(r,v,B);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];sI(u,v,B);c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];I=+AI(v,B)+w;c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];q=q+1|0;w=I;x=H;y=o;z=+AI(v,B)+z;A=p}o=y*x-A*A;p=o>=0.0?o:-o;if(!(p>=1.0e-06?(m=(y*w-A*z)/o,n=(x*z-A*w)/o,!(p<1.0e-06|m<=0.0|n<=0.0)):0))F=6;if((F|0)==6){c[v>>2]=c[a>>2];c[v+4>>2]=c[a+4>>2];c[v+8>>2]=c[a+8>>2];c[v+12>>2]=c[a+12>>2];c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];m=+lI(v,B)*.3333333333333333;n=m};c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];nI(C,B,m);c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[j>>2]=c[E>>2];c[j+4>>2]=c[E+4>>2];c[j+8>>2]=c[E+8>>2];c[j+12>>2]=c[E+12>>2];c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];nI(D,B,n);c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];l=G;return}function qI(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0;C=l;l=l+64|0;B=C;z=(j|0)==2;y=+h[d>>3];u=+h[d+8>>3];v=B+8|0;w=+h[e>>3];x=B+16|0;p=+h[e+8>>3];q=B+24|0;r=+h[f>>3];s=+h[g>>3];t=B+32|0;o=+h[f+8>>3];n=+h[g+8>>3];e=B+40|0;f=B+48|0;g=B+56|0;d=1;k=4.0;m=4.0;while(1){h[B>>3]=y;h[v>>3]=u;D=m*.3333333333333333;h[x>>3]=D*w+y;h[q>>3]=D*p+u;D=k*.3333333333333333;h[t>>3]=r-D*s;h[e>>3]=o-D*n;h[f>>3]=r;h[g>>3]=o;if(d?(D=+vI(B,4),D<+vI(i,j)+-.001):0){d=0;break}if(wI(a,b,B)|0){A=5;break}if(m==0.0&k==0.0){A=9;break}E=m>.01;d=0;k=E?k*.5:0.0;m=E?m*.5:0.0}a:do if((A|0)==5){jI((c[42490]|0)+4|0);e=c[42491]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[42490]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[42490]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else if((A|0)==9)if(z){jI((c[42490]|0)+4|0);e=c[42491]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[42490]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[42490]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else d=0;while(0);l=C;return d|0}function rI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]+ +h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function sI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]-+h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]-+h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function tI(a){a=+a;a=1.0-a;return +(a*a*a)}function uI(a){a=+a;return +(a*a*a)}function vI(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0;c=0.0;d=1;while(1){if((d|0)>=(b|0))break;g=d+-1|0;e=+h[a+(d<<4)>>3]-+h[a+(g<<4)>>3];f=+h[a+(d<<4)+8>>3]-+h[a+(g<<4)+8>>3];c=+C(+(f*f+e*e))+c;d=d+1|0}return +c}function wI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=l;l=l+64|0;t=C+32|0;u=C;w=u+16|0;y=d+16|0;z=d+32|0;A=d+48|0;B=d+8|0;g=d+24|0;i=d+40|0;j=d+56|0;k=u+8|0;m=u+24|0;f=0;a:while(1){if((f|0)>=(b|0)){e=1;break}n=a+(f<<5)|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=a+(f<<5)+16|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];n=xI(d,u,t)|0;b:do if((n|0)!=4){o=+h[u>>3];p=+h[k>>3];q=+h[w>>3];r=+h[m>>3];e=0;while(1){if((e|0)>=(n|0))break b;s=+h[t+(e<<3)>>3];if((!(s<1.0e-06|s>.999999)?(x=s*s*s,E=s*3.0,D=1.0-s,s=E*s*D,v=D*D,E=v*E,D=v*D,v=+h[y>>3]*E+ +h[d>>3]*D+ +h[z>>3]*s+ +h[A>>3]*x,x=+h[g>>3]*E+ +h[B>>3]*D+ +h[i>>3]*s+ +h[j>>3]*x,s=v-o,D=x-p,!(D*D+s*s<.001)):0)?(E=v-q,D=x-r,!(D*D+E*E<.001)):0){e=0;break a}e=e+1|0}}while(0);f=f+1|0}l=C;return e|0}function xI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+96|0;s=v+48|0;t=v+24|0;k=v;u=v+80|0;p=+h[b>>3];g=+h[b+16>>3]-p;q=+h[b+8>>3];j=+h[b+24>>3]-q;c[u>>2]=0;a:do if(!(g==0.0)){j=j/g;m=a+16|0;n=a+32|0;o=a+48|0;yI(+h[a+8>>3]-+h[a>>3]*j,+h[a+24>>3]-+h[m>>3]*j,+h[a+40>>3]-+h[n>>3]*j,+h[a+56>>3]-+h[o>>3]*j,s);h[s>>3]=j*p-q+ +h[s>>3];e=UI(s,t)|0;if((e|0)==4)b=4;else{f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/g;b=0;while(1){if((b|0)>=(e|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(yI(+h[a>>3],+h[m>>3],+h[n>>3],+h[o>>3],s),q=(+h[s>>3]-p+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,q>=0.0&q<=1.0):0)zI(j,d,u);b=b+1|0}b=c[u>>2]|0}}else{yI(+h[a>>3],+h[a+16>>3],+h[a+32>>3],+h[a+48>>3],s);h[s>>3]=+h[s>>3]-p;r=UI(s,t)|0;if(!(j==0.0)){if((r|0)==4){b=4;break}m=a+8|0;n=a+24|0;o=a+40|0;e=a+56|0;f=s+8|0;i=s+16|0;k=s+24|0;g=1.0/j;b=0;while(1){if((b|0)>=(r|0))break;j=+h[t+(b<<3)>>3];if(j>=0.0&j<=1.0?(yI(+h[m>>3],+h[n>>3],+h[o>>3],+h[e>>3],s),p=(+h[s>>3]-q+((+h[k>>3]*j+ +h[i>>3])*j+ +h[f>>3])*j)*g,p>=0.0&p<=1.0):0)zI(j,d,u);b=b+1|0}b=c[u>>2]|0;break}yI(+h[a+8>>3],+h[a+24>>3],+h[a+40>>3],+h[a+56>>3],s);h[s>>3]=+h[s>>3]-q;i=UI(s,k)|0;b=(i|0)==4;b:do if((r|0)==4){if(b){b=4;break a}else b=0;while(1){if((b|0)>=(i|0))break b;zI(+h[k+(b<<3)>>3],d,u);b=b+1|0}}else{if(b){b=0;while(1){if((b|0)>=(r|0))break b;zI(+h[t+(b<<3)>>3],d,u);b=b+1|0}}else e=0;while(1){if((e|0)>=(r|0))break b;f=t+(e<<3)|0;b=0;while(1){if((b|0)>=(i|0))break;g=+h[f>>3];if(g==+h[k+(b<<3)>>3])zI(g,d,u);b=b+1|0}e=e+1|0}}while(0);b=c[u>>2]|0}while(0);l=v;return b|0}function yI(a,b,c,d,e){a=+a;b=+b;c=+c;d=+d;e=e|0;h[e+24>>3]=d-a+(b-c)*3.0;h[e+16>>3]=(c+a)*3.0-b*6.0;h[e+8>>3]=(b-a)*3.0;h[e>>3]=a;return}function zI(a,b,d){a=+a;b=b|0;d=d|0;var e=0;if(a>=0.0&a<=1.0){e=c[d>>2]|0;h[b+(e<<3)>>3]=a;c[d>>2]=e+1}return}function AI(a,b){a=a|0;b=b|0;return +(+h[b+8>>3]*+h[a+8>>3]+ +h[b>>3]*+h[a>>3])}function BI(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(b+a*3.0))}function CI(a){a=+a;return +(a*a*((1.0-a)*3.0+a))}\nfunction sx(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;Y=l;l=l+2288|0;W=Y+208|0;V=Y+192|0;U=Y+176|0;T=Y+160|0;S=Y+144|0;R=Y+128|0;P=Y+112|0;O=Y+96|0;N=Y+80|0;M=Y+64|0;L=Y+56|0;K=Y+48|0;X=Y+32|0;Q=Y+24|0;J=Y;G=Y+1264|0;H=Y+224|0;I=d+16|0;C=(e[(c[I>>2]|0)+178>>1]|0)>2;Fv(1);jx(d);cm(H,1024,Y+240|0);tB(d,1,87657,174181)|0;tB(d,1,87661,174181)|0;c[42190]=tB(d,1,96043,174181)|0;c[42189]=tB(d,1,96049,174181)|0;tB(d,2,87657,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0;if(i&16){tB(d,1,87667,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&1){tB(d,2,87671,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&32){tB(d,2,87667,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&2){tB(d,2,87674,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(i&4){tB(d,2,87682,174181)|0;i=a[(c[I>>2]|0)+113>>0]|0}if(!(i&8)){v=0;w=0;x=0}else{x=tB(d,0,87671,174181)|0;w=tB(d,0,87690,174181)|0;v=tB(d,0,87697,174181)|0}z=tB(d,0,87705,174181)|0;A=H+4|0;B=H+8|0;u=0;i=0;y=co(d)|0;while(1){if(!y)break;t=y+16|0;k=c[t>>2]|0;o=+h[k+16>>3];j=(c[42183]|0)==0;if(C){if(j)m=+h[k+24>>3];else m=+h[20895]-+h[k+24>>3];q=+h[(c[k+132>>2]|0)+16>>3]*72.0;h[J>>3]=o;h[J+8>>3]=m;h[J+16>>3]=q;pL(G,87708,J)|0;fm(H,G)|0;j=3;while(1){if((j|0)>=(e[(c[I>>2]|0)+178>>1]|0))break;h[Q>>3]=+h[(c[(c[t>>2]|0)+132>>2]|0)+(j<<3)>>3]*72.0;pL(G,87723,Q)|0;fm(H,G)|0;j=j+1|0}j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;s=c[H>>2]|0;c[A>>2]=s;Km(y,87657,s)|0;s=y}else{if(j)m=+h[k+24>>3];else m=+h[20895]-+h[k+24>>3];h[X>>3]=o;h[X+8>>3]=m;pL(G,87729,X)|0;Km(y,87657,G)|0;s=y}h[K>>3]=+h[(c[t>>2]|0)+80>>3]*.013888888888888888;pL(G,87652,K)|0;Cm(s,c[42189]|0,G)|0;j=c[t>>2]|0;h[L>>3]=(+h[j+96>>3]+ +h[j+88>>3])*.013888888888888888;pL(G,87652,L)|0;Cm(s,c[42190]|0,G)|0;j=c[t>>2]|0;k=c[j+108>>2]|0;if((k|0)!=0?(a[k+81>>0]|0)!=0:0){q=+h[k+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[M>>3]=+h[k+56>>3];h[M+8>>3]=q;pL(G,87729,M)|0;Km(s,87667,G)|0;j=c[t>>2]|0}if(xJ(c[c[j+8>>2]>>2]|0,91264)|0){if(c[42214]|0?(Oy(y)|0)<<24>>24:0){k=c[(c[t>>2]|0)+12>>2]|0;r=k+8|0;j=c[r>>2]|0;if((j|0)<3){j=Im(s,87739)|0;if(!j)j=8;else j=rM(j)|0;j=(j|0)<3?8:j}p=k+44|0;q=1.0/+(j|0);n=0;while(1){if((n|0)>=(j|0))break;if((n|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32}if((c[r>>2]|0)>2){k=c[p>>2]|0;if(!(c[42183]|0))m=+h[k+(n<<4)+8>>3]*.013888888888888888;else m=+h[20896]-+h[k+(n<<4)+8>>3]*.013888888888888888;h[N>>3]=+h[k+(n<<4)>>3]*.013888888888888888;h[N+8>>3]=m;pL(G,87752,N)|0}else{k=c[t>>2]|0;m=q*+(n|0)*6.283185307179586;o=+h[k+32>>3]*.5*+E(+m);if(!(c[42183]|0))m=+h[k+40>>3]*.5*+F(+m);else m=+h[20896]-+h[k+40>>3]*.5*+F(+m);h[O>>3]=o;h[O+8>>3]=m;pL(G,87752,O)|0}fm(H,G)|0;n=n+1|0}k=c[42214]|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;Cm(s,k,t)|0}}else{tx(y,c[j+12>>2]|0,H);hm(H)|0;j=c[A>>2]|0;if(j>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;j=c[A>>2]|0}a[j>>0]=0;t=c[H>>2]|0;c[A>>2]=t;Km(s,87661,t)|0}a:do if((c[42181]|0)>0){t=Pm(d,y)|0;j=u;while(1){if(!t)break a;s=t+16|0;k=c[s>>2]|0;do if((a[k+112>>0]|0)!=6?(D=c[k+8>>2]|0,(D|0)!=0):0){r=0;k=D;while(1){if((r|0)>=(c[k+4>>2]|0))break;if((r|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=59;k=c[(c[s>>2]|0)+8>>2]|0}k=c[k>>2]|0;if(c[k+(r*48|0)+8>>2]|0){if(!(c[42183]|0))m=+h[k+(r*48|0)+24>>3];else m=+h[20895]-+h[k+(r*48|0)+24>>3];h[P>>3]=+h[k+(r*48|0)+16>>3];h[P+8>>3]=m;pL(G,87762,P)|0;fm(H,G)|0;i=1;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}if(c[k+(r*48|0)+12>>2]|0){if(!(c[42183]|0))m=+h[k+(r*48|0)+40>>3];else m=+h[20895]-+h[k+(r*48|0)+40>>3];h[R>>3]=+h[k+(r*48|0)+32>>3];h[R+8>>3]=m;pL(G,87775,R)|0;fm(H,G)|0;j=1}p=0;while(1){k=c[(c[s>>2]|0)+8>>2]|0;n=c[k>>2]|0;if((p|0)>=(c[n+(r*48|0)+4>>2]|0))break;if((p|0)>0){k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;k=c[A>>2]|0}c[A>>2]=k+1;a[k>>0]=32;k=c[c[(c[s>>2]|0)+8>>2]>>2]|0}else k=n;u=c[k+(r*48|0)>>2]|0;q=+h[u+(p<<4)+8>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[S>>3]=+h[u+(p<<4)>>3];h[S+8>>3]=q;pL(G,87729,S)|0;fm(H,G)|0;p=p+1|0}r=r+1|0}k=c[A>>2]|0;if(k>>>0>=(c[B>>2]|0)>>>0){dm(H,1)|0;k=c[A>>2]|0}a[k>>0]=0;k=c[H>>2]|0;c[A>>2]=k;Km(t,87657,k)|0;k=c[s>>2]|0;n=c[k+96>>2]|0;if(n){q=+h[n+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[T>>3]=+h[n+56>>3];h[T+8>>3]=q;pL(G,87729,T)|0;Km(t,87671,G)|0;k=c[s>>2]|0}n=c[k+108>>2]|0;do if(n){if(!(a[n+81>>0]|0))break;q=+h[n+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[U>>3]=+h[n+56>>3];h[U+8>>3]=q;pL(G,87729,U)|0;Km(t,87667,G)|0;k=c[s>>2]|0}while(0);n=c[k+100>>2]|0;if(n){q=+h[n+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[V>>3]=+h[n+56>>3];h[V+8>>3]=q;pL(G,87729,V)|0;Km(t,87674,G)|0;k=c[s>>2]|0}k=c[k+104>>2]|0;if(!k)break;q=+h[k+64>>3];q=(c[42183]|0)==0?q:+h[20895]-q;h[W>>3]=+h[k+56>>3];h[W+8>>3]=q;pL(G,87729,W)|0;Km(t,87682,G)|0}while(0);t=Rm(d,t)|0}}else j=u;while(0);u=j;y=eo(d,y)|0}ux(d,z,x,w,v);gm(H);if(b[(c[I>>2]|0)+136>>1]&1)nB(d);c[f>>2]=i;c[g>>2]=u;Fv(0);l=Y;return}function tx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+1056|0;k=n;j=n+32|0;m=b+48|0;if(!(c[m>>2]|0)){e=c[a+16>>2]|0;i=+h[e+16>>3];if(!(c[42183]|0)){g=+h[e+24>>3];f=g+ +h[b+24>>3];g=g+ +h[b+40>>3]}else{g=+h[e+24>>3];f=+h[20895]-+h[b+24>>3]-g;g=+h[20895]-+h[b+40>>3]-g}o=i+ +h[b+32>>3];h[k>>3]=i+ +h[b+16>>3];h[k+8>>3]=f;h[k+16>>3]=o;h[k+24>>3]=g;pL(j,87813,k)|0;fm(d,j)|0}b=b+56|0;e=0;while(1){if((e|0)>=(c[m>>2]|0))break;tx(a,c[(c[b>>2]|0)+(e<<2)>>2]|0,d);e=e+1|0}l=n;return}function ux(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;s=l;l=l+1088|0;o=s+56|0;q=s+48|0;p=s+32|0;j=s;n=s+64|0;r=b+16|0;i=c[r>>2]|0;if(!(c[42183]|0)){k=+h[i+24>>3];m=+h[i+40>>3]}else{m=+h[20895];k=m-+h[i+24>>3];m=m-+h[i+40>>3]}t=+h[i+32>>3];h[j>>3]=+h[i+16>>3];h[j+8>>3]=k;h[j+16>>3]=t;h[j+24>>3]=m;pL(n,87788,j)|0;Cm(b,d,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;if((i|0)!=0?(a[c[i>>2]>>0]|0)!=0:0){t=+h[i+64>>3];t=(c[42183]|0)==0?t:+h[20895]-t;h[p>>3]=+h[i+56>>3];h[p+8>>3]=t;pL(n,87729,p)|0;Cm(b,e,n)|0;i=c[(c[r>>2]|0)+12>>2]|0;t=+h[i+32>>3];h[q>>3]=+h[i+24>>3]*.013888888888888888;pL(n,87808,q)|0;Cm(b,f,n)|0;h[o>>3]=t*.013888888888888888;pL(n,87808,o)|0;Cm(b,g,n)|0;i=1}else i=1;while(1){j=c[r>>2]|0;if((i|0)>(c[j+180>>2]|0))break;ux(c[(c[j+184>>2]|0)+(i<<2)>>2]|0,d,e,f,g);i=i+1|0}l=s;return}function vx(a){a=a|0;var b=0;b=l;l=l+16|0;sx(a,b,b+4|0);l=b;return}function wx(){return Ql(19796,c[4345]|0)|0}function xx(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function yx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if((a|0)<=(e|0))if((a|0)<(e|0))a=-1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return ((b|0)>(d|0)?1:((b|0)<(d|0))<<31>>31)|0}else a=1;return a|0}function zx(a){a=a|0;Kl(a)|0;return}function Ax(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];b=Bx(e)|0;if((bb[c[a>>2]&31](a,b,1)|0)!=(b|0))_I(b);l=d;return}function Bx(a){a=a|0;var b=0,d=0,e=0;b=vw(16)|0;e=a;d=c[e+4>>2]|0;a=b+8|0;c[a>>2]=c[e>>2];c[a+4>>2]=d;return b|0}function Cx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[g>>2]=b;c[g+4>>2]=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];b=Bx(f)|0;if((bb[c[a>>2]&31](a,b,1)|0)!=(b|0))_I(b);l=e;return}function Dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d;g=b;f=c[g+4>>2]|0;b=e+8|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;b=(bb[c[a>>2]&31](a,e,4)|0)!=0&1;l=d;return b|0}function Ex(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f+8>>2]=b;c[f+12>>2]=d;d=(bb[c[a>>2]&31](a,f,4)|0)!=0&1;l=e;return d|0}function Fx(a){a=a|0;return Sl(a)|0}function Gx(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=vw((Sl(a)|0)<<3)|0;b=d;a=Ol(a)|0;while(1){if(!a)break;g=a+8|0;f=c[g+4>>2]|0;e=b;c[e>>2]=c[g>>2];c[e+4>>2]=f;b=b+8|0;a=c[a>>2]|0}return d|0}function Hx(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+160|0;q=t+144|0;d=t+48|0;j=t+128|0;k=t+112|0;m=t+96|0;n=t+80|0;o=t+32|0;p=t+16|0;r=t;s=a+16|0;a=c[s>>2]|0;e=+h[a+16>>3];f=+h[a+24>>3];g=+h[a+32>>3];i=+h[a+40>>3];if((b+-1|0)>>>0<2){Ix(j,e,i);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];Jx(d,q);p=d+16|0;Ix(k,g,f);c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];Jx(m,q);c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2]}else{Ix(n,e,f);c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];Jx(d,q);n=d+16|0;Ix(o,g,i);c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];Jx(p,q);c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2]}a=(c[s>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];a=c[(c[s>>2]|0)+12>>2]|0;if(!a)a=1;else{a=a+56|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];Jx(r,q);c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];a=1}while(1){d=c[s>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Hx(c[(c[d+184>>2]|0)+(a<<2)>>2]|0,b);a=a+1|0}l=t;return}function Ix(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Jx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;g=d+16|0;e=d;f=(c[42309]|0)*90|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];aw(e,g,f);c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];h[b>>3]=+h[b>>3]-+h[20897];e=b+8|0;h[e>>3]=+h[e>>3]-+h[20898];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];l=d;return}function Kx(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+1168|0;s=w+144|0;v=w+96|0;u=w+64|0;t=w+48|0;o=w+32|0;p=w+16|0;q=w;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;r=b+16|0;m=c[(c[r>>2]|0)+116>>2]|0;c[42309]=m&3;m=m&1;a[174079]=m;if(!(m<<24>>24))Mx(b);else Lx(b);Nx(b);m=c[r>>2]|0;e=c[m+12>>2]|0;do if(e|0?(a[e+81>>0]|0)==0:0){g=e+24|0;c[t>>2]=c[g>>2];c[t+4>>2]=c[g+4>>2];c[t+8>>2]=c[g+8>>2];c[t+12>>2]=c[g+12>>2];n=+h[t>>3]+16.0;h[t>>3]=n;g=t+8|0;f=+h[g>>3]+8.0;h[g>>3]=f;g=(a[m+275>>0]&1)!=0;if(a[174079]|0){if(g){i=m+32|0;h[i>>3]=+h[i>>3]+f}else{i=m+16|0;h[i>>3]=+h[i>>3]-f}g=m+40|0;f=+h[g>>3];i=m+24|0;j=+h[i>>3];k=f-j;if(!(n>k))break;n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n;break}i=(c[42309]|0)==0;do if(g)if(i){i=m+40|0;h[i>>3]=+h[i>>3]+f;break}else{i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else if(i){i=m+24|0;h[i>>3]=+h[i>>3]-f;break}else{i=m+40|0;h[i>>3]=+h[i>>3]+f;break}while(0);g=m+32|0;f=+h[g>>3];i=m+16|0;j=+h[i>>3];k=f-j;if(n>k){n=(n-k)*.5;h[i>>3]=j-n;h[g>>3]=f+n}}while(0);if(d){switch(c[42309]|0){case 0:{q=m+16|0;c[41794]=c[q>>2];c[41795]=c[q+4>>2];c[41796]=c[q+8>>2];c[41797]=c[q+12>>2];break}case 1:{Ix(o,-+h[m+40>>3],+h[m+16>>3]);c[41794]=c[o>>2];c[41795]=c[o+4>>2];c[41796]=c[o+8>>2];c[41797]=c[o+12>>2];break}case 2:{Ix(p,+h[m+16>>3],-+h[m+40>>3]);c[41794]=c[p>>2];c[41795]=c[p+4>>2];c[41796]=c[p+8>>2];c[41797]=c[p+12>>2];break}case 3:{Ix(q,+h[m+24>>3],+h[m+16>>3]);c[41794]=c[q>>2];c[41795]=c[q+4>>2];c[41796]=c[q+8>>2];c[41797]=c[q+12>>2];break}default:{}}Ox(b);e=c[(c[r>>2]|0)+12>>2]|0}if(e|0?(a[e+81>>0]|0)==0:0){c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];Px(b,s)}if(!0){l=w;return}if(!(a[174079]|0)){n=+h[20898];k=+h[20897];h[v>>3]=n;h[v+8>>3]=k;h[v+16>>3]=n;h[v+24>>3]=k;h[v+32>>3]=-k;h[v+40>>3]=-n;pL(s,88049,v)|0}else{k=+h[20897];n=+h[20898];h[u>>3]=k;h[u+8>>3]=n;h[u+16>>3]=k;h[u+24>>3]=n;pL(s,87834,u)|0}GL(s)|0;Ta()}function Lx(b){b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=b+16|0;if(((so(b)|0)!=(b|0)?(g=c[j>>2]|0,i=c[g+12>>2]|0,(i|0)!=0):0)?(a[i+81>>0]|0)==0:0){d=a[g+275>>0]|0;if(!(d&1)){f=+h[g+16>>3]+ +h[g+96>>3]*.5;b=g+104|0}else{f=+h[g+32>>3]-+h[g+64>>3]*.5;b=g+72|0}e=+h[b>>3];b=d<<24>>24;do if(!(b&4))if(!(b&2)){e=(+h[g+40>>3]+ +h[g+24>>3])*.5;break}else{e=+h[g+40>>3]-e*.5;break}else e=+h[g+24>>3]+e*.5;while(0);h[i+56>>3]=f;h[i+64>>3]=e;a[(c[(c[j>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[j>>2]|0;if((b|0)>(c[d+180>>2]|0))break;Lx(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function Mx(b){b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0;k=b+16|0;if(((so(b)|0)!=(b|0)?(i=c[k>>2]|0,j=c[i+12>>2]|0,(j|0)!=0):0)?(a[j+81>>0]|0)==0:0){d=a[i+275>>0]|0;if(!(d&1)){g=+h[i+24>>3]+ +h[i+56>>3]*.5;b=i+48|0}else{g=+h[i+40>>3]-+h[i+88>>3]*.5;b=i+80|0}f=+h[b>>3];b=d<<24>>24;do if(!(b&4)){e=+h[i+16>>3];if(!(b&2)){e=(+h[i+32>>3]+e)*.5;break}else{e=e+f*.5;break}}else e=+h[i+32>>3]-f*.5;while(0);h[j+56>>3]=e;h[j+64>>3]=g;a[(c[(c[k>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[k>>2]|0;if((b|0)>(c[d+180>>2]|0))break;Mx(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function Nx(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=l;l=l+544|0;L=S+504|0;R=S+416|0;Q=S+376|0;K=S+352|0;J=S+312|0;I=S+288|0;H=S+248|0;M=S+200|0;B=S+152|0;O=S+96|0;p=S+488|0;C=S+456|0;D=S+424|0;E=S+384|0;F=S+360|0;G=S+320|0;w=S+296|0;x=S+256|0;y=S+232|0;z=S+168|0;A=S+136|0;f=S+56|0;N=S+16|0;P=S;o=e+16|0;u=c[o>>2]|0;g=b[u+136>>1]&14;u=d[u+113>>0]|0;if(!((u&54|0)==0?(u&1|0)==0|(c[42182]|0)!=0:0)){u=g<<16>>16==0;n=co(e)|0;h=0;j=0;i=0;while(1){if(!n)break;g=c[(c[n+16>>2]|0)+108>>2]|0;do if(g)if(!(a[g+81>>0]|0)){i=i+1|0;break}else{h=h+1|0;break}while(0);m=Pm(e,n)|0;g=j;while(1){if(!m)break;k=c[m+16>>2]|0;j=c[k+108>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+100>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+104>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);j=c[k+96>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(!u)g=g+((c[k+8>>2]|0)!=0&1)|0}while(0);m=Rm(e,m)|0}n=eo(e,n)|0;j=g}if(!(a[(c[o>>2]|0)+113>>0]&8))o=0;else o=Rx(e)|0;t=j+i|0;if(t|0){q=h+j+o+(mn(e)|0)|0;r=vw(q*40|0)|0;s=vw(t*40|0)|0;Ix(M,2147483647.0,2147483647.0);g=M+16|0;Ix(p,-2147483647.0,-2147483647.0);c[g>>2]=c[p>>2];c[g+4>>2]=c[p+4>>2];c[g+8>>2]=c[p+8>>2];c[g+12>>2]=c[p+12>>2];g=s;i=r;n=co(e)|0;while(1){if(!n)break;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Sx(C,n,i,L);c[M>>2]=c[C>>2];c[M+4>>2]=c[C+4>>2];c[M+8>>2]=c[C+8>>2];c[M+12>>2]=c[C+12>>2];c[M+16>>2]=c[C+16>>2];c[M+20>>2]=c[C+20>>2];c[M+24>>2]=c[C+24>>2];c[M+28>>2]=c[C+28>>2];h=c[(c[n+16>>2]|0)+108>>2]|0;do if(h)if(!(a[h+81>>0]|0)){c[L>>2]=c[B>>2];c[L+4>>2]=c[B+4>>2];c[L+8>>2]=c[B+8>>2];c[L+12>>2]=c[B+12>>2];Ux(h,i,g,0,L);g=g+40|0;break}else{i=i+40|0;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(D,h,i,L);c[M>>2]=c[D>>2];c[M+4>>2]=c[D+4>>2];c[M+8>>2]=c[D+8>>2];c[M+12>>2]=c[D+12>>2];c[M+16>>2]=c[D+16>>2];c[M+20>>2]=c[D+20>>2];c[M+24>>2]=c[D+24>>2];c[M+28>>2]=c[D+28>>2];break}while(0);m=Pm(e,n)|0;i=i+40|0;while(1){if(!m)break;k=m+16|0;h=c[k>>2]|0;j=c[h+96>>2]|0;a:do if(!j)v=52;else{do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){$z(F,e,m);c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];Ux(j,i,g,1,L);g=g+40|0;break}c[H>>2]=c[j>>2];_l(0,88861,H)|0;break a}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(E,j,i,L);c[M>>2]=c[E>>2];c[M+4>>2]=c[E+4>>2];c[M+8>>2]=c[E+8>>2];c[M+12>>2]=c[E+12>>2];c[M+16>>2]=c[E+16>>2];c[M+20>>2]=c[E+20>>2];c[M+24>>2]=c[E+24>>2];c[M+28>>2]=c[E+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0;v=52}while(0);b:do if((v|0)==52){v=0;j=c[h+104>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){Vx(w,m);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];Ux(j,i,g,1,L);g=g+40|0;break}c[I>>2]=c[j>>2];_l(0,88896,I)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(G,j,i,L);c[M>>2]=c[G>>2];c[M+4>>2]=c[G+4>>2];c[M+8>>2]=c[G+8>>2];c[M+12>>2]=c[G+12>>2];c[M+16>>2]=c[G+16>>2];c[M+20>>2]=c[G+20>>2];c[M+24>>2]=c[G+24>>2];c[M+28>>2]=c[G+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+100>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){Wx(y,m);c[L>>2]=c[y>>2];c[L+4>>2]=c[y+4>>2];c[L+8>>2]=c[y+8>>2];c[L+12>>2]=c[y+12>>2];Ux(j,i,g,1,L);g=g+40|0;break}c[J>>2]=c[j>>2];_l(0,88936,J)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(x,j,i,L);c[M>>2]=c[x>>2];c[M+4>>2]=c[x+4>>2];c[M+8>>2]=c[x+8>>2];c[M+12>>2]=c[x+12>>2];c[M+16>>2]=c[x+16>>2];c[M+20>>2]=c[x+20>>2];c[M+24>>2]=c[x+24>>2];c[M+28>>2]=c[x+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+108>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(!u?c[h+8>>2]|0:0){$z(A,e,m);c[L>>2]=c[A>>2];c[L+4>>2]=c[A+4>>2];c[L+8>>2]=c[A+8>>2];c[L+12>>2]=c[A+12>>2];Ux(j,i,g,1,L);g=g+40|0;break}c[K>>2]=c[j>>2];_l(0,88976,K)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Tx(z,j,i,L);c[M>>2]=c[z>>2];c[M+4>>2]=c[z+4>>2];c[M+8>>2]=c[z+8>>2];c[M+12>>2]=c[z+12>>2];c[M+16>>2]=c[z+16>>2];c[M+20>>2]=c[z+20>>2];c[M+24>>2]=c[z+24>>2];c[M+28>>2]=c[z+28>>2]}while(0);i=i+40|0}}while(0);m=Rm(e,m)|0}n=eo(e,n)|0}if(o|0){c[f>>2]=c[M>>2];c[f+4>>2]=c[M+4>>2];c[f+8>>2]=c[M+8>>2];c[f+12>>2]=c[M+12>>2];c[f+16>>2]=c[M+16>>2];c[f+20>>2]=c[M+20>>2];c[f+24>>2]=c[M+24>>2];c[f+28>>2]=c[M+28>>2];c[f+32>>2]=i;h=L;g=h+40|0;do{c[h>>2]=c[f>>2];h=h+4|0;f=f+4|0}while((h|0)<(g|0));Xx(N,e,L);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];c[M+16>>2]=c[N+16>>2];c[M+20>>2]=c[N+20>>2];c[M+24>>2]=c[N+24>>2];c[M+28>>2]=c[N+28>>2]}a[O+32>>0]=HA(e,ym(e,0,89012,0)|0,1)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[O+16>>2]=c[M+16>>2];c[O+20>>2]=c[M+20>>2];c[O+24>>2]=c[M+24>>2];c[O+28>>2]=c[M+28>>2];zE(r,q,s,t,O)|0;if(0)Yx(r,q,s,t,O);f=0;g=0;h=s;while(1){if((g|0)>=(t|0))break;if(a[h+36>>0]|0){O=c[h+32>>2]|0;a[O+81>>0]=1;N=O+56|0;Zx(P,h);c[N>>2]=c[P>>2];c[N+4>>2]=c[P+4>>2];c[N+8>>2]=c[P+8>>2];c[N+12>>2]=c[P+12>>2];bB(e,O);f=f+1|0}g=g+1|0;h=h+40|0}if(!0){if((f|0)!=(t|0)){c[R>>2]=f;c[R+4>>2]=t;_l(0,89057,R)|0}}else{R=c[13918]|0;c[Q>>2]=f;c[Q+4>>2]=t;zL(R,89024,Q)|0}_I(r);_I(s)}}l=S;return}function Ox(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;i=l;l=l+48|0;e=i+32|0;f=i+16|0;g=i;if(+h[20897]!=0.0|+h[20898]!=0.0|(c[42309]|0)!=0){d=co(a)|0;while(1){if(!d)break;if(c[42309]|0)KB(d,0);b=d+16|0;j=(c[b>>2]|0)+16|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];Jx(f,e);c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];b=c[(c[b>>2]|0)+108>>2]|0;if(b|0){j=b+56|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];Jx(g,e);c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2]}a:do if((c[42181]|0)==1){b=Pm(a,d)|0;while(1){if(!b)break a;Qx(b);b=Rm(a,b)|0}}while(0);d=eo(a,d)|0}Hx(a,c[(c[a+16>>2]|0)+116>>2]&3)}l=i;return}function Px(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0;i=b+16|0;j=c[i>>2]|0;g=a[j+275>>0]|0;b=g<<24>>24;do if(!(b&4)){e=+h[j+16>>3];if(!(b&2)){f=(+h[j+32>>3]+e)*.5;break}else{f=+h[d>>3]*.5+e;break}}else f=+h[j+32>>3]-+h[d>>3]*.5;while(0);if(!(g&1))e=+h[d+8>>3]*.5+ +h[j+24>>3];else e=+h[j+40>>3]-+h[d+8>>3]*.5;j=c[j+12>>2]|0;h[j+56>>3]=f;h[j+64>>3]=e;a[(c[(c[i>>2]|0)+12>>2]|0)+81>>0]=1;return}function Qx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+144|0;q=s+120|0;e=s+16|0;i=s+104|0;j=s+88|0;k=s+72|0;m=s+56|0;n=s+40|0;o=s+24|0;r=s;p=b+16|0;d=c[p>>2]|0;f=c[d+8>>2]|0;if(!f){if((a[174076]|0)==0?(a[d+112>>0]|0)!=6:0){q=Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;r=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[e>>2]=q;c[e+4>>2]=r;_l(1,88844,e)|0}}else{h=0;b=f;while(1){if((h|0)>=(c[b+4>>2]|0))break;g=c[b>>2]|0;b=c[g+(h*48|0)>>2]|0;e=c[g+(h*48|0)+4>>2]|0;f=c[g+(h*48|0)+8>>2]|0;g=c[g+(h*48|0)+12>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;t=b+(d<<4)|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Jx(i,q);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];c[t+12>>2]=c[i+12>>2];d=d+1|0}if(f|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+16|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Jx(j,q);c[t>>2]=c[j>>2];c[t+4>>2]=c[j+4>>2];c[t+8>>2]=c[j+8>>2];c[t+12>>2]=c[j+12>>2]}if(g|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+32|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Jx(k,q);c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2]}d=c[p>>2]|0;h=h+1|0;b=c[d+8>>2]|0}b=c[d+96>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Jx(m,q);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];d=c[p>>2]|0}b=c[d+108>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Jx(n,q);c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];d=c[p>>2]|0}b=c[d+100>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Jx(o,q);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];d=c[p>>2]|0}d=c[d+104>>2]|0;if(d|0){t=d+56|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Jx(r,q);c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}}l=s;return}function Rx(b){b=b|0;var d=0,e=0,f=0;f=b+16|0;if((so(b)|0)!=(b|0)?(d=c[(c[f>>2]|0)+12>>2]|0,(d|0)!=0):0){e=1;b=(a[d+81>>0]|0)!=0&1}else{e=1;b=0}while(1){d=c[f>>2]|0;if((e|0)>(c[d+180>>2]|0))break;d=(Rx(c[(c[d+184>>2]|0)+(e<<2)>>2]|0)|0)+b|0;e=e+1|0;b=d}return b|0}function Sx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[174079]|0)==0;d=d+16|0;m=c[d>>2]|0;k=+h[(n?m+32|0:m+40|0)>>3];h[e+16>>3]=k*72.0;j=+h[(n?m+40|0:m+32|0)>>3];h[e+24>>3]=j*72.0;d=(c[d>>2]|0)+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*36.0;d=e+8|0;h[d>>3]=+h[d>>3]-j*36.0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];_x(b,e,i);l=g;return}function Tx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0;g=l;l=l+32|0;i=g;n=(a[174079]|0)==0;m=d+24|0;k=+h[(n?m:d+32|0)>>3];h[e+16>>3]=k;j=+h[(n?d+32|0:m)>>3];h[e+24>>3]=j;d=d+56|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*.5;d=e+8|0;h[d>>3]=+h[d>>3]-j*.5;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];_x(b,e,i);l=g;return}function Ux(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f|0){f=d+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2]}if(!(a[174079]|0)){g=b+24|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2]}else{h[e>>3]=+h[b+32>>3];h[e+8>>3]=+h[b+24>>3]}c[e+32>>2]=b;a[e+36>>0]=0;c[d+32>>2]=e;return}function Vx(a,b){a=a|0;b=b|0;b=_z(b)|0;do if(b){b=c[b>>2]|0;if(!(c[b+8>>2]|0)){b=c[b>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{b=b+16|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function Wx(a,b){a=a|0;b=b|0;var d=0;b=_z(b)|0;do if(b){d=c[b>>2]|0;b=(c[b+4>>2]|0)+-1|0;if(!(c[d+(b*48|0)+12>>2]|0)){d=(c[d+(b*48|0)>>2]|0)+((c[d+(b*48|0)+4>>2]|0)+-1<<4)|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}else{d=d+(b*48|0)+32|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+112|0;k=q+72|0;n=q+32|0;o=q;p=d+16|0;j=1;while(1){f=c[p>>2]|0;if((j|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(j<<2)>>2]|0;g=k;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));Xx(n,f,k);g=e;h=n;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));j=j+1|0}if(((so(d)|0)!=(d|0)?(m=c[(c[p>>2]|0)+12>>2]|0,m|0):0)?a[m+81>>0]|0:0){p=e+32|0;n=c[p>>2]|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];Tx(o,m,n,k);c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];c[e+16>>2]=c[o+16>>2];c[e+20>>2]=c[o+20>>2];c[e+24>>2]=c[o+24>>2];c[e+28>>2]=c[o+28>>2];c[p>>2]=(c[p>>2]|0)+40}g=b;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=q;return}function Yx(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+160|0;r=s+96|0;p=s+48|0;o=s;q=c[13918]|0;n=d[g+32>>0]|0;i=+h[g>>3];j=+h[g+8>>3];k=+h[g+16>>3];m=+h[g+24>>3];c[o>>2]=b;c[o+4>>2]=f;c[o+8>>2]=n;h[o+16>>3]=i;h[o+24>>3]=j;h[o+32>>3]=k;h[o+40>>3]=m;zL(q,89099,o)|0;a:do if(0>=2){XL(89159,8,1,q)|0;o=0;while(1){if((o|0)>=(b|0))break;g=c[a+32>>2]|0;i=+h[a>>3];j=+h[a+8>>3];k=+h[a+16>>3];m=+h[a+24>>3];if(!g)n=174181;else n=c[c[g+32>>2]>>2]|0;c[p>>2]=o;h[p+8>>3]=i;h[p+16>>3]=j;h[p+24>>3]=k;h[p+32>>3]=m;c[p+40>>2]=g;c[p+44>>2]=n;zL(q,89168,p)|0;o=o+1|0;a=a+40|0}XL(89211,8,1,q)|0;g=0;while(1){if((g|0)>=(f|0))break a;b=d[e+36>>0]|0;i=+h[e+16>>3];j=+h[e+24>>3];k=+h[e>>3];m=+h[e+8>>3];p=c[c[e+32>>2]>>2]|0;c[r>>2]=g;c[r+4>>2]=e;c[r+8>>2]=b;h[r+16>>3]=i;h[r+24>>3]=j;h[r+32>>3]=k;h[r+40>>3]=m;c[r+48>>2]=p;zL(q,89220,r)|0;e=e+40|0;g=g+1|0}}while(0);l=s;return}function Zx(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b+8>>3]*.5+ +h[b+24>>3];h[a>>3]=+h[b>>3]*.5+ +h[b+16>>3];h[a+8>>3]=c;return}function _x(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0;e=l;l=l+16|0;f=e;j=+h[b>>3];h[d>>3]=+h[(+h[d>>3]<j?d:b)>>3];g=d+8|0;i=+h[b+8>>3];h[g>>3]=+h[(+h[g>>3]<i?d:b)+8>>3];j=+h[b+16>>3]+j;h[f>>3]=j;i=+h[b+24>>3]+i;h[f+8>>3]=i;g=d+16|0;h[g>>3]=+h[(+h[g>>3]>j?g:f)>>3];b=d+24|0;h[b>>3]=+h[(+h[b>>3]>i?g:f)+8>>3];c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];l=e;return}function $x(a){a=a|0;Kx(a,1);return}function ay(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=l;l=l+16|0;d=e;b=RA(Im(a,90560)|0)|0;if(b){b=by(b)|0;if(b|0){f=c[b+40>>2]|0;d=c[b+44>>2]|0;g=a+16|0;a=c[g>>2]|0;h[a+32>>3]=+(f|0)*.013888888888888888;h[a+40>>3]=+(d|0)*.013888888888888888;a=vw(12)|0;c[(c[g>>2]|0)+12>>2]=a;c[a>>2]=c[b+12>>2];c[a+4>>2]=((f|0)/-2|0)-(c[b+32>>2]|0);c[a+8>>2]=((d|0)/-2|0)-(c[b+36>>2]|0)}}else{c[d>>2]=Dn(a)|0;_l(0,89268,d)|0}l=e;return}function by(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+1152|0;i=p+24|0;h=p+8|0;e=p;f=p+120|0;j=p+44|0;k=p+40|0;m=p+36|0;n=p+32|0;o=p+28|0;d=c[42310]|0;if(!d){d=Ql(19832,c[4345]|0)|0;c[42310]=d}d=bb[c[d>>2]&31](d,b,512)|0;do if(!d){g=aM(b,123632)|0;if(!g){c[e>>2]=b;_l(0,89317,e)|0;d=0;break}else{d=0;e=0}while(1){if(!(gL(f,1024,g)|0)){f=11;break}c[h>>2]=k;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=o;q=(cM(f,89345,h)|0)==4;e=q?1:e;if((a[f>>0]|0)!=37){q=(hL(f,89374)|0)==0;d=q?d:1}if((e|0)!=0&(d|0)!=0){f=12;break}}if((f|0)==11)if(!e){c[i>>2]=b;_l(0,89379,i)|0;d=0}else f=12;if((f|0)==12){q=ww(64)|0;k=c[k>>2]|0;c[q+32>>2]=k;m=c[m>>2]|0;c[q+40>>2]=(c[n>>2]|0)-k;c[q+36>>2]=(c[o>>2]|0)-m;c[q+8>>2]=b;o=c[42311]|0;c[42311]=o+1;c[q+12>>2]=o;_L(zN(g)|0,j)|0;o=c[j+36>>2]|0;n=ww(o+1|0)|0;c[q+52>>2]=n;oM(g,0,0)|0;wN(n,o,1,g)|0;a[n+o>>0]=0;o=c[42310]|0;bb[c[o>>2]&31](o,q,1)|0;a[q+16>>0]=d;d=q}LL(g)|0}while(0);l=p;return d|0}function cy(a,b,d){a=a|0;b=b|0;d=d|0;_I(c[b+52>>2]|0);return}function dy(a){a=a|0;_I(c[(c[a+16>>2]|0)+12>>2]|0);return}function ey(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+8|0;k=n;j=(d|0)!=0;a:do if(j){h=0;f=0;b:while(1)while(1){if(h)break a;g=c[d+(f<<2)>>2]|0;if(!g){i=6;break a}f=f+1|0;if(!(a[g>>0]|0)){h=1;continue b}}}else i=6;while(0);c:do if((i|0)==6)while(1){f=c[e>>2]|0;if(!f)break c;mr(b,f)|0;mr(b,134901)|0;e=e+4|0;i=6}while(0);d:do if(j){h=0;while(1){f=c[d+(h<<2)>>2]|0;if(!f)break d;do if(a[f>>0]|0){e=RA(f)|0;if(!e){c[k>>2]=f;_l(0,89418,k)|0;break}g=aM(e,123632)|0;if(!g){c[m>>2]=e;_l(0,89446,m)|0;break}while(1){f=QA(g)|0;if(!f)break;mr(b,f)|0}mr(b,134901)|0;LL(g)|0}while(0);h=h+1|0}}while(0);l=n;return}function fy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;d=c[d+52>>2]|0;a:while(1){e=a[d>>0]|0;b:do switch(e<<24>>24){case 0:break a;case 37:{if((a[d+1>>0]|0)==37){e=d+2|0;if((((pK(e,89474,3)|0)!=0?(pK(e,89478,5)|0)!=0:0)?(pK(e,89484,3)|0)!=0:0)?(pK(e,89488,7)|0)!=0:0){e=37;break b}else g=37;c:while(1){switch(g<<24>>24){case 13:{f=10;break c}case 10:case 0:{f=12;break c}default:{}}g=d+1|0;d=g;g=a[g>>0]|0}if((f|0)==10){e=d+1|0;if((a[e>>0]|0)==10){d=d+2|0;continue a}}else if((f|0)==12)e=d+1|0;d=g<<24>>24==0?d:e;continue a}else e=37;break}default:{}}while(0);d:while(1){switch(e<<24>>24){case 10:case 13:case 0:break d;default:{}}nr(b,e<<24>>24)|0;g=d+1|0;d=g;e=a[g>>0]|0}f=d+1|0;if(e<<24>>24==13?(a[f>>0]|0)==10:0)d=d+2|0;else d=e<<24>>24==0?d:f;nr(b,10)|0}return}function gy(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;d=c[42310]|0;a:do if(d|0){d=bb[c[d>>2]&31](d,0,128)|0;while(1){if(!d)break a;if(!(a[d+16>>0]|0)){c[e>>2]=c[d+12>>2];sr(b,89496,e);mr(b,89514)|0;fy(b,d);mr(b,89532)|0;mr(b,89547)|0}g=c[42310]|0;d=bb[c[g>>2]&31](g,d,8)|0}}while(0);l=f;return}function hy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;a:do switch(d|0){case 0:{f=b;break}case 1:{f=zB(b)|0;break}default:{switch(iy(b)|0){case 2:break;case 1:{f=zB(b)|0;break a}default:{f=b;break a}}if(!(c[42312]|0)){_l(0,89559,e)|0;c[42312]=1;f=b}else f=b}}while(0);if(!(c[42313]|0))cm(169252,0,0);d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}c[42314]=d+1;a[d>>0]=40;e=f;b:while(1){switch(a[e>>0]|0){case 0:break b;case 92:case 41:case 40:{d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}c[42314]=d+1;a[d>>0]=92;break}default:{}}d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}h=a[e>>0]|0;c[42314]=d+1;a[d>>0]=h;e=e+1|0}d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}c[42314]=d+1;a[d>>0]=41;if((f|0)!=(b|0))_I(f);d=c[42314]|0;if(d>>>0>=(c[42315]|0)>>>0){dm(169252,1)|0;d=c[42314]|0}a[d>>0]=0;h=c[42313]|0;c[42314]=h;l=g;return h|0}function iy(b){b=b|0;var c=0,d=0;c=0;a:while(1){while(1){d=a[b>>0]|0;if(!(d<<24>>24))break a;if((d&255)<127)b=b+1|0;else break}if((d&-4)<<24>>24==-64){c=1;b=b+2|0}else{c=2;break}}return c|0}function jy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+96|0;i=n+80|0;j=n+72|0;m=n+64|0;g=n+32|0;k=n;h[g>>3]=+h[a>>3];h[g+8>>3]=+h[a+8>>3];h[g+16>>3]=+h[b>>3];h[g+24>>3]=+h[b+8>>3];do if((DI(d,g,j)|0)>=0){if(!f){b=d+4|0;a=c[b>>2]|0;f=c[42318]|0;if((a|0)>(c[42317]|0)){if(!f)a=ww(a<<5)|0;else a=yw(f,a<<5)|0;c[42318]=a;g=c[b>>2]|0;c[42317]=g;f=a}else g=a;b=c[d>>2]|0;a=0;while(1){if((a|0)>=(g|0))break;o=f+(a<<5)|0;d=b+(a<<4)|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];o=f+(a<<5)+16|0;d=a+1|0;p=b+(((d|0)%(g|0)|0)<<4)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];a=d}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];if((hI(f,g,i,k,m)|0)<0){a=0;break}}else{c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];YI(i,m)}a=m+4|0;if(!(ky(c[a>>2]|0)|0)){g=c[a>>2]|0;a=c[42319]|0;f=c[m>>2]|0;b=0;while(1){if((b|0)>=(g|0))break;p=a+(b<<4)|0;o=f+(b<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];b=b+1|0}c[e>>2]=g}else a=0}else a=0;while(0);l=n;return a|0}function ky(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[42320]|0;do if((b|0)<(a|0)){a=a+300-((a|0)%300|0)+b|0;b=yw(c[42319]|0,a<<4)|0;c[42319]=b;if(!b){_l(1,89649,d)|0;a=1;break}else{c[42320]=a;a=0;break}}else a=0;while(0);l=e;return a|0}function ly(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;d=c[42321]|0;c[42321]=d+1;do if((d|0)<=0){d=ww(4800)|0;c[42319]=d;if(!d){_l(1,89672,a)|0;a=1;break}c[42320]=300;c[42322]=0;c[42323]=0;if(0){xA();a=0}else a=0}else a=0;while(0);l=b;return a|0}function my(){var a=0,b=0,d=0,e=0.0,f=0,g=0;b=l;l=l+16|0;a=b;d=c[42321]|0;c[42321]=d+-1;if((d|0)<=1?(_I(c[42319]|0),0):0){d=c[13918]|0;g=c[42322]|0;f=c[42323]|0;e=+yA();c[a>>2]=g;c[a+4>>2]=f;h[a+8>>3]=e;zL(d,89710,a)|0}l=b;return}function ny(a,b){a=a|0;b=b|0;return oy(a,b,0)|0}function oy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;L=l;l=l+176|0;G=L+168|0;K=L+128|0;x=L+120|0;v=L+112|0;i=L+104|0;s=L+88|0;n=L+72|0;g=L+64|0;t=L+160|0;I=L+152|0;y=L+144|0;u=L+32|0;w=L;J=L+136|0;c[42322]=(c[42322]|0)+1;H=c[b+80>>2]|0;c[42323]=(c[42323]|0)+H;f=b+88|0;while(1){C=c[f>>2]|0;if(!C){D=4;break}f=c[C+16>>2]|0;if(!(a[f+112>>0]|0)){D=5;break}else f=f+116|0}do if((D|0)==4){_l(1,89753,g)|0;f=0}else if((D|0)==5){B=c[b+84>>2]|0;if(!(py(H,B,b)|0)){g=H<<3;if((g|0)>(c[42324]|0)){f=c[42325]|0;if(!f)f=ww(H<<7)|0;else f=yw(f,H<<7)|0;c[42325]=f;c[42324]=g}a:do if((H|0)>1?+h[B+8>>3]>+h[B+40>>3]:0){f=0;while(1){if((f|0)==(H|0)){p=1;break a}z=B+(f<<5)+24|0;m=+h[z>>3];A=B+(f<<5)+8|0;h[z>>3]=-+h[A>>3];h[A>>3]=-m;f=f+1|0}}else p=0;while(0);r=c[C>>2]&3;z=C+48|0;f=c[((r|0)==3?C:z)+40>>2]|0;A=C+-48|0;if((f|0)==(c[((r|0)==2?C:A)+40>>2]|0)){c[i>>2]=Dn(f)|0;_l(1,89860,i)|0;f=0;break}o=H+-1|0;q=c[42325]|0;r=q;f=0;j=0;b:while(1){if((j|0)>=(H|0)){j=o;n=f;break}if((j|0)>0)g=+h[B+(j<<5)+8>>3]>+h[B+(j+-1<<5)+8>>3]?-1:1;else g=0;if((j|0)<(o|0))i=+h[B+(j+1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else i=0;c:do if((g|0)!=(i|0))if((g|0)==1|(i|0)==-1){g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29;break}else{g=B+(j<<5)+16|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+24|0;D=29;break}else{switch(g|0){case -1:break c;case 0:break;default:{D=28;break b}}g=B+(j<<5)|0;h[q+(f<<4)>>3]=+h[g>>3];i=f+1|0;h[q+(f<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(i<<4)>>3]=+h[g>>3];g=B+(j<<5)+8|0;D=29}while(0);if((D|0)==29){D=0;h[q+(i<<4)+8>>3]=+h[g>>3];f=f+2|0}j=j+1|0}if((D|0)==28){c[n>>2]=g;c[n+4>>2]=g;c[n+8>>2]=480;_l(1,89795,n)|0;f=0;break}d:while(1){if((j|0)<=-1)break;if((j|0)<(o|0))f=+h[B+(j<<5)+8>>3]>+h[B+(j+1<<5)+8>>3]?-1:1;else f=0;if((j|0)>0)g=+h[B+(j+-1<<5)+8>>3]>+h[B+(j<<5)+8>>3]?1:-1;else g=0;e:do if((f|0)!=(g|0))if((f|0)==1|(g|0)==-1){f=B+(j<<5)|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+24>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+8|0;i=2;break}else{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break}else switch(f|0){case 0:{f=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[f>>3];g=n+1|0;h[q+(n<<4)+8>>3]=+h[B+(j<<5)+8>>3];h[q+(g<<4)>>3]=+h[f>>3];f=B+(j<<5)+24|0;i=2;break e}case -1:{N=B+(j<<5)+16|0;h[q+(n<<4)>>3]=+h[N>>3];f=B+(j<<5)+8|0;i=n+1|0;h[q+(n<<4)+8>>3]=+h[f>>3];h[q+(i<<4)>>3]=+h[N>>3];N=B+(j<<5)+24|0;M=n+2|0;h[q+(i<<4)+8>>3]=+h[N>>3];i=B+(j<<5)|0;h[q+(M<<4)>>3]=+h[i>>3];g=n+3|0;h[q+(M<<4)+8>>3]=+h[N>>3];h[q+(g<<4)>>3]=+h[i>>3];i=4;break e}default:{D=42;break d}}while(0);h[q+(g<<4)+8>>3]=+h[f>>3];j=j+-1|0;n=n+i|0}if((D|0)==42){c[s>>2]=f;c[s+4>>2]=f;c[s+8>>2]=513;_l(1,89795,s)|0;f=0;break}f:do if(!p)f=0;else{f=0;while(1){if((f|0)>=(H|0)){f=0;break}M=B+(f<<5)+24|0;m=+h[M>>3];N=B+(f<<5)+8|0;h[M>>3]=-+h[N>>3];h[N>>3]=-m;f=f+1|0}while(1){if((f|0)>=(n|0)){f=0;break f}N=q+(f<<4)+8|0;h[N>>3]=-+h[N>>3];f=f+1|0}}while(0);while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}c[t>>2]=r;i=t+4|0;c[i>>2]=n;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[b+8>>3];h[u+16>>3]=+h[b+40>>3];h[u+24>>3]=+h[b+48>>3];if((DI(t,u,I)|0)<0){_l(1,89899,v)|0;f=0;break}if(!e){g=c[i>>2]|0;f=c[42318]|0;if((g|0)>(c[42317]|0)){if(!f)f=ww(g<<5)|0;else f=yw(f,g<<5)|0;c[42318]=f;g=c[i>>2]|0;c[42317]=g}j=c[42325]|0;i=0;while(1){if((i|0)>=(g|0))break;M=f+(i<<5)|0;N=j+(i<<4)|0;c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];M=f+(i<<5)+16|0;N=i+1|0;v=j+(((N|0)%(g|0)|0)<<4)|0;c[M>>2]=c[v>>2];c[M+4>>2]=c[v+4>>2];c[M+8>>2]=c[v+8>>2];c[M+12>>2]=c[v+12>>2];i=N}if(!(a[b+29>>0]|0)){k=0.0;m=0.0}else{m=+h[b+16>>3];k=+E(+m);m=+F(+m)}h[w+8>>3]=m;h[w>>3]=k;if(!(a[b+69>>0]|0)){k=0.0;m=0.0}else{m=+h[b+56>>3];k=-+E(+m);m=-+F(+m)}h[w+24>>3]=m;h[w+16>>3]=k;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];if((hI(f,g,G,w,y)|0)<0){_l(1,89938,x)|0;f=0;break}}else{c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];YI(G,y)}n=y+4|0;if(!(ky(c[n>>2]|0)|0)){f=0;while(1){if((f|0)>=(H|0))break;h[B+(f<<5)>>3]=2147483647.0;h[B+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}i=c[n>>2]|0;j=c[42319]|0;g=c[y>>2]|0;f=0;while(1){if((f|0)>=(i|0)){i=1;f=10;g=0;break}N=j+(f<<4)|0;M=g+(f<<4)|0;c[N>>2]=c[M>>2];c[N+4>>2]=c[M+4>>2];c[N+8>>2]=c[M+8>>2];c[N+12>>2]=c[M+12>>2];f=f+1|0}while(1){if(!((g|0)<15&i<<24>>24!=0))break;qy(B,H,c[42319]|0,c[n>>2]|0,f);j=0;while(1){if((j|0)>=(H|0))break;if(+h[B+(j<<5)>>3]==2147483647.0){D=82;break}if(+h[B+(j<<5)+16>>3]==-2147483648.0){D=82;break}j=j+1|0}if((D|0)==82){D=0;N=f<<1;f=N;g=(N|0)>(2147483647/(H|0)|0|0)?15:g}i=(j|0)==(H|0)?0:i;g=g+1|0}if(i<<24>>24){M=Dn(c[((c[C>>2]&3|0)==3?C:z)+40>>2]|0)|0;N=Dn(c[((c[C>>2]&3|0)==2?C:A)+40>>2]|0)|0;c[K>>2]=M;c[K+4>>2]=N;_l(0,89976,K)|0;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];YI(G,J);qy(B,H,c[J>>2]|0,c[J+4>>2]|0,10);_I(c[J>>2]|0)}c[d>>2]=c[n>>2];f=c[42319]|0}else f=0}else f=0}while(0);l=L;return f|0}function py(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0;R=l;l=l+32|0;I=R+16|0;H=R+8|0;k=R;e=0;j=0;while(1){if((j|0)>=(a|0))break;i=b+(j<<5)|0;s=+h[b+(j<<5)+8>>3]-+h[b+(j<<5)+24>>3];if(!((s>=0.0?s:-s)<.01)?(s=+h[i>>3]-+h[b+(j<<5)+16>>3],!((s>=0.0?s:-s)<.01)):0){if((e|0)!=(j|0)){P=b+(e<<5)|0;c[P>>2]=c[i>>2];c[P+4>>2]=c[i+4>>2];c[P+8>>2]=c[i+8>>2];c[P+12>>2]=c[i+12>>2];c[P+16>>2]=c[i+16>>2];c[P+20>>2]=c[i+20>>2];c[P+24>>2]=c[i+24>>2];c[P+28>>2]=c[i+28>>2]}e=e+1|0}j=j+1|0}J=b+16|0;do if(!(+h[b>>3]>+h[J>>3])?(L=b+8|0,N=b+24|0,!(+h[L>>3]>+h[N>>3])):0){P=e+-1|0;M=c[13918]|0;w=0;while(1){if((w|0)>=(P|0))break;D=w+1|0;E=b+(D<<5)|0;f=+h[E>>3];F=b+(D<<5)+16|0;g=+h[F>>3];if(f>g){Q=16;break}A=b+(D<<5)+8|0;m=+h[A>>3];B=b+(D<<5)+24|0;n=+h[B>>3];if(m>n){Q=16;break}G=b+(w<<5)+16|0;v=+h[G>>3]<f;e=v&1;C=b+(w<<5)|0;u=+h[C>>3]>g;a=u&1;z=b+(w<<5)+24|0;t=+h[z>>3]<m;j=t&1;y=b+(w<<5)+8|0;k=+h[y>>3]>n;i=k&1;x=a+e+j+i|0;o=(x|0)!=0;if(!(0==0|o^1)){c[I>>2]=w;c[I+4>>2]=D;zL(M,90176,I)|0;ry(d)}a:do if(o){if(!v)if(!u)if(!t){if(k){k=0;o=e;e=B;i=y;Q=24}}else{k=i;j=0;o=e;e=A;i=z;Q=24}else{k=i;a=0;o=e;e=F;i=C;Q=24}else{k=i;o=0;e=E;i=G;Q=24}if((Q|0)==24){Q=0;w=~~+h[i>>3];h[i>>3]=+h[e>>3];h[e>>3]=+(w|0);i=k;e=o}o=x+-1|0;k=0;while(1){if((k|0)>=(o|0))break a;do if((e|0)!=1){if((a|0)==1){s=+(~~((+h[F>>3]+ +h[C>>3])*.5+.5)|0);h[F>>3]=s;h[C>>3]=s;a=0;break}if((j|0)==1){s=+(~~((+h[A>>3]+ +h[z>>3])*.5+.5)|0);h[A>>3]=s;h[z>>3]=s;j=0;break}if((i|0)==1){s=+(~~((+h[B>>3]+ +h[y>>3])*.5+.5)|0);h[B>>3]=s;h[y>>3]=s;i=0}}else{s=+(~~((+h[E>>3]+ +h[G>>3])*.5+.5)|0);h[E>>3]=s;h[G>>3]=s;e=0}while(0);k=k+1|0}}while(0);p=+h[C>>3];q=+h[G>>3];r=+h[E>>3];s=+h[F>>3];i=sy(~~p,~~q,~~r,~~s)|0;n=+h[y>>3];m=+h[z>>3];g=+h[A>>3];f=+h[B>>3];e=sy(~~n,~~m,~~g,~~f)|0;if(!((i|0)!=0&(e|0)!=0)){w=D;continue}if((i|0)<(e|0)){B=q-p>s-r;w=q<s;h[(B?(w?G:C):w?E:F)>>3]=B?(w?r:s):w?q:p;w=D;continue}else{B=m-n>f-g;w=m<f;h[(B?(w?G:C):w?E:F)+8>>3]=B?(w?g:f):w?m:n;w=D;continue}}if((Q|0)==16){c[H>>2]=D;_l(1,90130,H)|0;ry(d);e=1;break}f=+h[d>>3];g=+h[b>>3];if(!(((!(f<g)?!(f>+h[J>>3]):0)?(K=+h[d+8>>3],!(K<+h[L>>3])):0)?!(K>+h[N>>3]):0)){if(0){XL(90219,42,1,M)|0;ry(d);g=+h[b>>3];f=+h[d>>3]}if(f<g)h[d>>3]=g;else g=f;f=+h[J>>3];if(g>f)h[d>>3]=f;e=d+8|0;g=+h[e>>3];f=+h[L>>3];if(g<f){h[e>>3]=f;g=f}f=+h[N>>3];if(g>f)h[e>>3]=f}i=d+40|0;f=+h[i>>3];e=b+(P<<5)|0;g=+h[e>>3];if(((!(f<g)?!(f>+h[b+(P<<5)+16>>3]):0)?(O=+h[d+48>>3],!(O<+h[b+(P<<5)+8>>3])):0)?!(O>+h[b+(P<<5)+24>>3]):0){e=0;break}if(0){XL(90262,39,1,M)|0;ry(d);g=+h[e>>3];f=+h[i>>3]}if(f<g){h[i>>3]=g;f=g}g=+h[b+(P<<5)+16>>3];if(f>g)h[i>>3]=g;e=d+48|0;f=+h[e>>3];g=+h[b+(P<<5)+8>>3];if(f<g)h[e>>3]=g;else g=f;f=+h[b+(P<<5)+24>>3];if(g>f){h[e>>3]=f;e=0}else e=0}else Q=12;while(0);if((Q|0)==12){_l(1,90085,k)|0;ry(d);e=1}l=R;return e|0}function qy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;s=O(e,b)|0;t=1.0/+(s|0);e=0;a:while(1){u=e+3|0;if((u|0)>=(d|0))break;o=c+(e<<4)|0;p=c+(e<<4)+8|0;r=e+1|0;q=c+(r<<4)|0;r=c+(r<<4)+8|0;j=e+2|0;i=c+(j<<4)|0;j=c+(j<<4)+8|0;k=c+(u<<4)|0;l=c+(u<<4)+8|0;g=0;while(1){if((g|0)>(s|0)){e=u;continue a}v=t*+(g|0);m=+h[o>>3];n=+h[p>>3];y=+h[q>>3];w=+h[r>>3];z=+h[i>>3];x=+h[j>>3];m=(y-m)*v+m;n=(w-n)*v+n;y=(z-y)*v+y;w=(x-w)*v+w;m=(y-m)*v+m;n=(w-n)*v+n;m=((z-y+(+h[k>>3]-z)*v)*v+y-m)*v+m;n=((x-w+(+h[l>>3]-x)*v)*v+w-n)*v+n;f=0;while(1){if((f|0)>=(b|0))break;if(n<=+h[a+(f<<5)+24>>3]+.0001?n>=+h[a+(f<<5)+8>>3]+-.0001:0){e=a+(f<<5)|0;if(+h[e>>3]>m)h[e>>3]=m;e=a+(f<<5)+16|0;if(+h[e>>3]<m)h[e>>3]=m}f=f+1|0}g=g+1|0}}return}function ry(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0;m=l;l=l+112|0;j=m+80|0;k=m+48|0;i=m+8|0;g=m;e=c[13918]|0;f=b+80|0;c[g>>2]=c[f>>2];zL(e,90302,g)|0;g=b+84|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;r=c[g>>2]|0;q=+h[r+(d<<5)>>3];p=+h[r+(d<<5)+8>>3];o=+h[r+(d<<5)+16>>3];n=+h[r+(d<<5)+24>>3];c[i>>2]=d;h[i+8>>3]=q;h[i+16>>3]=p;h[i+24>>3]=o;h[i+32>>3]=n;zL(e,90313,i)|0;d=d+1|0}q=+h[b+8>>3];p=+h[b+16>>3];r=a[b+29>>0]|0?90344:90356;h[k>>3]=+h[b>>3];h[k+8>>3]=q;h[k+16>>3]=p;c[k+24>>2]=r;zL(e,90372,k)|0;p=+h[b+48>>3];q=+h[b+56>>3];r=a[b+69>>0]|0?90344:90356;h[j>>3]=+h[b+40>>3];h[j+8>>3]=p;h[j+16>>3]=q;c[j+24>>2]=r;zL(e,90423,j)|0;l=m;return}function sy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;do if((b|0)>(c|0)&(d|0)>(a|0)){if(!((c|0)>(a|0)|(d|0)<(a|0))){a=d-a|0;break}if((b|0)<(c|0)|(b|0)>(d|0)){b=b-a|0;a=d-c|0;a=(b|0)<(a|0)?b:a;break}else{a=b-c|0;break}}else a=0;while(0);return a|0}function ty(a,b){a=a|0;b=b|0;return oy(a,b,1)|0}function uy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,P=0,Q=0;K=l;l=l+304|0;A=K+272|0;z=K+208|0;G=K+96|0;H=K+32|0;I=K+16|0;J=K;r=K+192|0;y=K+176|0;i=K+160|0;B=K+296|0;D=K+288|0;j=c[d>>2]|0;w=c[j>>2]&3;k=j+-48|0;E=c[((w|0)==2?j:k)+40>>2]|0;t=G+16|0;w=(c[(c[((w|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+16|0;x=j+16|0;F=(c[x>>2]|0)+16|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[F>>2];c[A+4>>2]=c[F+4>>2];c[A+8>>2]=c[F+8>>2];c[A+12>>2]=c[F+12>>2];vy(r,z,A);c[G>>2]=c[r>>2];c[G+4>>2]=c[r+4>>2];c[G+8>>2]=c[r+8>>2];c[G+12>>2]=c[r+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[I>>2]=c[r>>2];c[I+4>>2]=c[r+4>>2];c[I+8>>2]=c[r+8>>2];c[I+12>>2]=c[r+12>>2];r=G+32|0;F=G+48|0;w=(c[E+16>>2]|0)+16|0;x=(c[x>>2]|0)+56|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];vy(y,z,A);c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2];c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[J>>2]=c[y>>2];c[J+4>>2]=c[y+4>>2];c[J+8>>2]=c[y+8>>2];c[J+12>>2]=c[y+12>>2];a:do if((e|0)!=1&(a[174076]|0)==0){m=+h[G>>3];n=+h[F>>3];L=m-n;o=+h[G+8>>3];p=+h[G+56>>3];s=o-p;q=s*s;if(q+L*L<1.0e-06){c[t>>2]=c[G>>2];c[t+4>>2]=c[G+4>>2];c[t+8>>2]=c[G+8>>2];c[t+12>>2]=c[G+12>>2];c[r>>2]=c[F>>2];c[r+4>>2]=c[F+4>>2];c[r+8>>2]=c[F+8>>2];c[r+12>>2]=c[F+12>>2];y=G+24|0;x=G+40|0;n=0.0;m=0.0}else{M=n-m;L=+C(+(q+M*M));w=c[(c[(c[b+60>>2]|0)+16>>2]|0)+248>>2]|0;N=+((O(w,e+-1|0)|0)/2|0|0);q=s*N/L;h[t>>3]=q+m;m=M*N/L;y=G+24|0;h[y>>3]=m+o;h[r>>3]=q+n;x=G+40|0;h[x>>3]=p+m;m=+(0-w|0);n=M*m/L;m=s*m/L}f=(f|0)==6;u=D+4|0;v=B+4|0;j=0;while(1){if((j|0)>=(e|0))break a;w=c[d+(j<<2)>>2]|0;k=w+-48|0;b:do if((c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0)==(E|0)){c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];i=0;while(1){if((i|0)==4)break b;P=H+(i<<4)|0;Q=G+(i<<4)|0;c[P>>2]=c[Q>>2];c[P+4>>2]=c[Q+4>>2];c[P+8>>2]=c[Q+8>>2];c[P+12>>2]=c[Q+12>>2];i=i+1|0}}else{c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];i=0;while(1){if((i|0)==4)break b;Q=H+(3-i<<4)|0;P=G+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}}while(0);if(f){c[u>>2]=4;c[D>>2]=z;i=0;while(1){if((i|0)==4)break;Q=z+(i<<4)|0;P=H+(i<<4)|0;c[Q>>2]=c[P>>2];c[Q+4>>2]=c[P+4>>2];c[Q+8>>2]=c[P+8>>2];c[Q+12>>2]=c[P+12>>2];i=i+1|0}c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];YI(A,B);Jz(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,c[B>>2]|0,c[v>>2]|0,g)}else Jz(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,H,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cA(b,w,z,A);h[t>>3]=+h[t>>3]+m;h[y>>3]=+h[y>>3]+n;h[r>>3]=+h[r>>3]+m;h[x>>3]=+h[x>>3]+n;j=j+1|0}}else{if((f|0)==4){wy(i,b);c[A>>2]=c[i>>2];c[A+4>>2]=c[i+4>>2];c[A+8>>2]=c[i+8>>2];c[A+12>>2]=c[i+12>>2];xy(G,A)}Jz(j,c[((c[j>>2]&3|0)==2?j:k)+40>>2]|0,G,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];cA(b,j,z,A)}while(0);l=K;return}function vy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function wy(a,b){a=a|0;b=b|0;b=c[b+16>>2]|0;h[20899]=(+h[b+32>>3]+ +h[b+16>>3])*.5;h[20900]=(+h[b+40>>3]+ +h[b+24>>3])*.5;c[a>>2]=c[41798];c[a+4>>2]=c[41799];c[a+8>>2]=c[41800];c[a+12>>2]=c[41801];return}function xy(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;f=+h[a>>3];d=+h[a+48>>3];i=(d+f)*.5;g=+h[a+8>>3];c=+h[a+56>>3];e=(c+g)*.5;f=d-f;g=c-g;f=+C(+(g*g+f*f))*.2;g=+h[b>>3]-i;c=+h[b+8>>3]-e;d=+C(+(c*c+g*g));if(!(d==0.0)){g=i-g/d*f;i=e-c/d*f;h[a+32>>3]=g;h[a+16>>3]=g;h[a+40>>3]=i;h[a+24>>3]=i}return}function yy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0;E=l;l=l+208|0;t=E+192|0;s=E+176|0;B=E+32|0;w=E+16|0;x=E;y=E+160|0;z=E+144|0;u=E+128|0;v=E+112|0;g=e&2130706432;A=(e&8|0)==0?((g|0)==0?4:g):8;if((A|0)==436207616)zy(a,b,d,f);else{D=vw((d<<6)+64|0)|0;p=d+-1|0;q=x+8|0;r=w+8|0;o=12.0;e=0;while(1){if((e|0)>=(d|0))break;n=b+(e<<4)|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];if((e|0)<(p|0)){e=e+1|0;n=b+(e<<4)|0;c[x>>2]=c[n>>2];c[x+4>>2]=c[n+4>>2];c[x+8>>2]=c[n+8>>2];c[x+12>>2]=c[n+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2];e=e+1|0}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=+C(+(F*F+m*m))*.3333333333333333;o=o<m?o:m}k=(g|16777216|0)==83886080;n=(A|0)==4;j=(g|0)==16777216;e=0;i=0;while(1){if((i|0)>=(d|0))break;g=b+(i<<4)|0;c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if((i|0)<(p|0)){g=b+(i+1<<4)|0;c[x>>2]=c[g>>2];c[x+4>>2]=c[g+4>>2];c[x+8>>2]=c[g+8>>2];c[x+12>>2]=c[g+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2]}m=+h[x>>3]-+h[w>>3];F=+h[q>>3]-+h[r>>3];m=o/+C(+(F*F+m*m));m=k?m*.3333333333333333:j?m*.5:m;g=D+(e<<4)|0;if(n){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];Ay(y,m*.5,s,t);c[g>>2]=c[y>>2];c[g+4>>2]=c[y+4>>2];c[g+8>>2]=c[y+8>>2];c[g+12>>2]=c[y+12>>2]}else{c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2]}g=D+(e+1<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];Ay(z,m,s,t);c[g>>2]=c[z>>2];c[g+4>>2]=c[z+4>>2];c[g+8>>2]=c[z+8>>2];c[g+12>>2]=c[z+12>>2];g=e+3|0;G=D+(e+2<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];Ay(u,1.0-m,s,t);c[G>>2]=c[u>>2];c[G+4>>2]=c[u+4>>2];c[G+8>>2]=c[u+8>>2];c[G+12>>2]=c[u+12>>2];if(n){G=D+(g<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];Ay(v,1.0-m*.5,s,t);c[G>>2]=c[v>>2];c[G+4>>2]=c[v+4>>2];c[G+8>>2]=c[v+8>>2];c[G+12>>2]=c[v+12>>2];e=e+4|0}else e=g;i=i+1|0}k=D+(e<<4)|0;c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];k=D+(e+1<<4)|0;j=D+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];e=D+(e+2<<4)|0;k=D+32|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];e=A&2147483647;a:do if((e|0)<201326592){if((e|0)>=83886080){if((e|0)<134217728){if((e|0)<100663296){switch(e|0){case 83886080:break;default:break a}if((d|0)==4){G=vw(192)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];p=G+16|0;t=b+16|0;c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];p=D+48|0;t=D+64|0;o=+h[t>>3];n=G+32|0;h[n>>3]=o;q=D+56|0;r=D+72|0;H=+h[r>>3];z=G+40|0;h[z>>3]=H;F=+h[p>>3]+o-+h[k>>3];u=G+48|0;h[u>>3]=F;J=+h[q>>3]+H-+h[D+40>>3];x=G+56|0;h[x>>3]=J;I=+h[t>>3]+F-+h[p>>3];p=G+64|0;h[p>>3]=I;m=+h[r>>3]+J-+h[q>>3];q=G+72|0;h[q>>3]=m;r=G+80|0;h[r>>3]=o+I-F;h[G+88>>3]=H+m-J;t=D+96|0;v=D+80|0;J=+h[v>>3];d=G+144|0;h[d>>3]=J;w=D+104|0;s=D+88|0;m=+h[s>>3];h[G+152>>3]=m;H=+h[t>>3]+J-+h[D+112>>3];y=G+128|0;h[y>>3]=H;F=+h[w>>3]+m-+h[D+120>>3];A=G+136|0;h[A>>3]=F;I=+h[v>>3]+H-+h[t>>3];t=G+112|0;h[t>>3]=I;o=+h[s>>3]+F-+h[w>>3];w=G+120|0;h[w>>3]=o;s=G+96|0;h[s>>3]=J+I-H;v=G+104|0;h[v>>3]=m+o-F;k=G+160|0;j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];k=G+176|0;b=b+48|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];HD(a,G,12,f);c[B>>2]=c[n>>2];c[B+4>>2]=c[n+4>>2];c[B+8>>2]=c[n+8>>2];c[B+12>>2]=c[n+12>>2];F=+h[n>>3];o=+h[u>>3];F=F+F-o;u=B+16|0;h[u>>3]=F;m=+h[z>>3];H=+h[x>>3];m=m+m-H;x=B+24|0;h[x>>3]=m;z=B+32|0;h[z>>3]=+h[p>>3]+F-o;b=B+40|0;h[b>>3]=+h[q>>3]+m-H;f=B+48|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];KD(a,B,4);c[B>>2]=c[s>>2];c[B+4>>2]=c[s+4>>2];c[B+8>>2]=c[s+8>>2];c[B+12>>2]=c[s+12>>2];H=+h[s>>3];m=+h[t>>3];H=H-(m-H);h[u>>3]=H;o=+h[v>>3];F=+h[w>>3];o=o-(F-o);h[x>>3]=o;h[z>>3]=+h[y>>3]+H-m;h[b>>3]=+h[A>>3]+o-F;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];KD(a,B,4);_I(G);break}else ma(90472,90483,737,90492)}if((e|0)<117440512){switch(e|0){case 100663296:break;default:break a}y=d+5|0;G=vw(y<<4)|0;z=b+16|0;H=+h[z>>3];H=(+h[b>>3]-H)*.625+H;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;v=D+48|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*1.5;h[G+8>>3]=J;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+16>>3]=I;h[G+24>>3]=J;h[G+32>>3]=I;F=+h[A>>3];h[G+40>>3]=(+h[d>>3]-F)*.5+F;I=(+h[k>>3]-+h[v>>3])*.5+I;h[G+48>>3]=I;F=+h[A>>3];h[G+56>>3]=(+h[d>>3]-F)*.5+F;h[G+64>>3]=I;I=+h[A>>3];I=(+h[d>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3]);h[G+72>>3]=I;h[G+80>>3]=H;h[G+88>>3]=I;h[G+96>>3]=H;I=I-(+h[w>>3]-+h[x>>3])*.25;h[G+104>>3]=I;h[G+112>>3]=+h[k>>3]+H-+h[v>>3];h[G+120>>3]=(+h[w>>3]-+h[x>>3])*.5+I;h[G+128>>3]=+h[G>>3];h[G+136>>3]=(+h[w>>3]-+h[x>>3])*.25+J;HD(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 117440512:break;default:break a}d=d+1|0;G=vw(d<<4)|0;h[G>>3]=+h[j>>3];z=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[z>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[D+48>>3];J=+h[z>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];B=b+40|0;h[G+40>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];h[G+48>>3]=+h[j>>3];h[G+56>>3]=(+h[z>>3]-+h[A>>3])*.5+ +h[B>>3];J=+h[b+8>>3];h[G+72>>3]=J-(J-+h[b+56>>3])*.5;h[G+64>>3]=+h[b>>3];HD(a,G,d,f);_I(G);break}}if((e|0)<167772160)if((e|0)<150994944){switch(e|0){case 134217728:break;default:break a}y=d+4|0;G=vw(y<<4)|0;z=b+16|0;F=+h[z>>3];x=D+48|0;F=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*.25;h[G>>3]=F;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=F;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.5+J;h[G+24>>3]=H;F=(+h[k>>3]-+h[x>>3])*.5+F;h[G+32>>3]=F;h[G+40>>3]=H;h[G+48>>3]=F;F=(+h[v>>3]-+h[w>>3])*.5+H;h[G+56>>3]=F;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=F;h[G+80>>3]=I;h[G+88>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.25;h[G+96>>3]=I;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;HD(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 150994944:break;default:break a}y=d+2|0;G=vw(y<<4)|0;z=b+16|0;H=+h[z>>3];x=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[x>>3])*.75;h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;J=(+h[d>>3]-J)*.5+J;h[G+8>>3]=J;h[G+16>>3]=H;v=D+56|0;w=D+72|0;H=(+h[v>>3]-+h[w>>3])*.25+J;h[G+24>>3]=H;I=+h[z>>3];h[G+32>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*.25;I=(+h[v>>3]-+h[w>>3])*.5+H;h[G+40>>3]=I;F=+h[z>>3];h[G+48>>3]=(+h[b>>3]-F)*.5+F+(+h[k>>3]-+h[x>>3])*-.25;h[G+56>>3]=I;I=+h[z>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[x>>3])*-.75;h[G+64>>3]=I;h[G+72>>3]=H;h[G+80>>3]=I;h[G+88>>3]=J;HD(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else if((e|0)<184549376){switch(e|0){case 167772160:break;default:break a}y=d+1|0;G=vw(y<<4)|0;z=b+16|0;H=+h[z>>3];v=D+48|0;H=+h[k>>3]+H+(+h[b>>3]-H)*.5-+h[v>>3];h[G>>3]=H;A=b+40|0;J=+h[A>>3];d=b+24|0;w=D+56|0;x=D+72|0;J=(+h[d>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*.25;h[G+8>>3]=J;H=H-+h[k>>3]+ +h[v>>3];h[G+16>>3]=H;h[G+24>>3]=+h[w>>3]+J-+h[x>>3];h[G+32>>3]=H;H=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=H;I=+h[z>>3];I=(+h[b>>3]-I)*.25+I;h[G+48>>3]=I;h[G+56>>3]=H;h[G+64>>3]=I;h[G+72>>3]=J;HD(a,G,y,f);h[B>>3]=+h[z>>3];J=+h[A>>3];h[B+8>>3]=(+h[d>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 184549376:break;default:break a}z=d+4|0;G=vw(z<<4)|0;y=b+16|0;H=+h[y>>3];I=+h[b>>3]-H;u=D+48|0;I=I*.125+H+(+h[k>>3]-+h[u>>3]+I)*.5;h[G>>3]=I;w=b+40|0;H=+h[w>>3];x=b+24|0;d=D+56|0;v=D+72|0;H=(+h[x>>3]-H)*.5+H+(+h[d>>3]-+h[v>>3])*.25;h[G+8>>3]=H;J=+h[y>>3];J=(+h[b>>3]-J)*.375+J;h[G+16>>3]=J;h[G+24>>3]=H;h[G+32>>3]=J;H=(+h[d>>3]-+h[v>>3])*.5+H;h[G+40>>3]=H;J=J-(+h[k>>3]-+h[u>>3])*.5;h[G+48>>3]=J;h[G+56>>3]=H;A=G+64|0;h[A>>3]=J;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[d>>3]-+h[v>>3])*-.25;h[G+72>>3]=J;H=I-(+h[k>>3]-+h[u>>3])*.5;h[G+80>>3]=H;h[G+88>>3]=J;h[G+96>>3]=H;J=J-(+h[d>>3]-+h[v>>3])*.5;h[G+104>>3]=J;v=G+112|0;h[v>>3]=I;h[G+120>>3]=J;HD(a,G,z,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[A>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[b>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);_I(G);break}}if((e|0)<33554432){if((e|0)<8){switch(e|0){case 4:break;default:break a}i=ww((d*96|0)+32|0)|0;e=0;g=0;while(1){j=g|1;k=i+(g<<4)|0;if((e|0)>=(d|0))break;b=e<<2;G=D+(b<<4)|0;c[k>>2]=c[G>>2];c[k+4>>2]=c[G+4>>2];c[k+8>>2]=c[G+8>>2];c[k+12>>2]=c[G+12>>2];G=i+(j<<4)|0;B=D+((b|1)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+2<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+3<<4)|0;B=D+((b|2)<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+4<<4)|0;c[G>>2]=c[B>>2];c[G+4>>2]=c[B+4>>2];c[G+8>>2]=c[B+8>>2];c[G+12>>2]=c[B+12>>2];G=i+(g+5<<4)|0;b=D+((b|3)<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];e=e+1|0;g=g+6|0}c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];d=i+(j<<4)|0;G=i+16|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];JD(a,G,j,0,0,f&255);_I(i);break}if((e|0)<16777216){switch(e|0){case 8:break;default:break a}HD(a,b,d,f);g=B+16|0;e=0;while(1){if((e|0)>=(d|0))break a;G=e*3|0;f=D+(G+2<<4)|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];G=D+(G+4<<4)|0;c[g>>2]=c[G>>2];c[g+4>>2]=c[G+4>>2];c[g+8>>2]=c[G+8>>2];c[g+12>>2]=c[G+12>>2];KD(a,B,2);e=e+1|0}}switch(e|0){case 16777216:break;default:break a}g=d+1|0;i=vw(g<<4)|0;e=1;while(1){if((e|0)>=(d|0))break;G=i+(e<<4)|0;A=b+(e<<4)|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];e=e+1|0}b=d*3|0;A=D+(b+1<<4)|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];d=i+(d<<4)|0;G=D+(b+-1<<4)|0;c[d>>2]=c[G>>2];c[d+4>>2]=c[G+4>>2];c[d+8>>2]=c[G+8>>2];c[d+12>>2]=c[G+12>>2];HD(a,i,g,f);_I(i);c[B>>2]=c[G>>2];c[B+4>>2]=c[G+4>>2];c[B+8>>2]=c[G+8>>2];c[B+12>>2]=c[G+12>>2];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];f=B+32|0;h[f>>3]=+h[B>>3]+ +h[G>>3]-+h[D+(b<<4)>>3];h[B+40>>3]=+h[B+8>>3]+ +h[B+24>>3]-+h[D+(b<<4)+8>>3];KD(a,G,2);c[G>>2]=c[f>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];KD(a,B,2);break}else{if((e|0)<50331648){switch(e|0){case 33554432:break;default:break a}g=d+2|0;i=vw(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];j=i+16|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];j=D+48|0;d=D+64|0;h[i+32>>3]=(+h[j>>3]-+h[d>>3])*.3333333333333333+ +h[k>>3];G=D+56|0;e=D+72|0;h[i+40>>3]=(+h[G>>3]-+h[e>>3])*.3333333333333333+ +h[D+40>>3];J=+h[j>>3];h[i+48>>3]=(J-+h[d>>3])*.3333333333333333+J;J=+h[G>>3];h[i+56>>3]=(J-+h[e>>3])*.3333333333333333+J;e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-2<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}HD(a,i,g,f);_I(i);c[B>>2]=c[j>>2];c[B+4>>2]=c[j+4>>2];c[B+8>>2]=c[j+8>>2];c[B+12>>2]=c[j+12>>2];G=B+16|0;c[G>>2]=c[k>>2];c[G+4>>2]=c[k+4>>2];c[G+8>>2]=c[k+8>>2];c[G+12>>2]=c[k+12>>2];KD(a,B,2);break}if((e|0)>=67108864){switch(e|0){case 67108864:break;default:break a}if((d|0)==4){G=vw(96)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];d=G+16|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2];d=G+32|0;A=D+64|0;c[d>>2]=c[A>>2];c[d+4>>2]=c[A+4>>2];c[d+8>>2]=c[A+8>>2];c[d+12>>2]=c[A+12>>2];d=G+48|0;b=b+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=G+64|0;d=D+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=G+80|0;z=D+160|0;c[b>>2]=c[z>>2];c[b+4>>2]=c[z+4>>2];c[b+8>>2]=c[z+8>>2];c[b+12>>2]=c[z+12>>2];HD(a,G,6,f);_I(G);h[B>>3]=+h[D+176>>3]+ +h[j>>3]-+h[D>>3];h[B+8>>3]=+h[D+184>>3]+ +h[D+24>>3]-+h[D+8>>3];G=B+16|0;c[G>>2]=c[A>>2];c[G+4>>2]=c[A+4>>2];c[G+8>>2]=c[A+8>>2];c[G+12>>2]=c[A+12>>2];KD(a,B,2);c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];KD(a,B,2);c[G>>2]=c[D>>2];c[G+4>>2]=c[D+4>>2];c[G+8>>2]=c[D+8>>2];c[G+12>>2]=c[D+12>>2];KD(a,B,2);break}else ma(90472,90483,714,90492)}switch(e|0){case 50331648:break;default:break a}g=d+3|0;i=vw(g<<4)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];J=+h[b>>3];h[i+16>>3]=J-(J-+h[j>>3])*.25;e=D+56|0;J=(+h[e>>3]-+h[D+72>>3])*.3333333333333333+ +h[b+8>>3];h[i+24>>3]=J;I=+h[b>>3];h[i+32>>3]=I-(I-+h[j>>3])*2.0;h[i+40>>3]=J;J=+h[b>>3];h[i+48>>3]=J-(J-+h[j>>3])*2.25;h[i+56>>3]=+h[e>>3];h[i+64>>3]=+h[D+48>>3];h[i+72>>3]=+h[e>>3];e=4;while(1){if((e|0)>=(g|0))break;G=i+(e<<4)|0;d=b+(e+-3<<4)|0;c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2];e=e+1|0}HD(a,i,g,f);_I(i);break}}else if((e|0)<318767104){if((e|0)<251658240){if((e|0)<218103808){switch(e|0){case 201326592:break;default:break a}G=d<<4;u=vw(G)|0;v=b+16|0;J=+h[v>>3];h[u>>3]=J;z=b+40|0;I=+h[z>>3];A=b+24|0;y=D+48|0;w=D+56|0;x=D+72|0;I=(+h[A>>3]-I)*.5+I+(+h[w>>3]-+h[x>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[w>>3]-+h[x>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;HD(a,u,d,f);_I(u);G=vw(G)|0;I=+h[k>>3]+ +h[v>>3]-+h[y>>3];h[G>>3]=I;J=+h[z>>3];J=(+h[A>>3]-J)*.5+J+(+h[w>>3]-+h[x>>3])*-.625;h[G+8>>3]=J;H=+h[k>>3]-+h[y>>3]+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[w>>3]-+h[x>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;HD(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[B+16>>3]=+h[b>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}if((e|0)<234881024){switch(e|0){case 218103808:break;default:break a}G=d<<4;w=vw(G)|0;J=+h[b>>3];h[w>>3]=J;y=b+40|0;I=+h[y>>3];z=b+24|0;x=D+56|0;A=D+72|0;I=(+h[z>>3]-I)*.5+I+(+h[x>>3]-+h[A>>3])*.125;h[w+8>>3]=I;h[w+16>>3]=J;H=(+h[x>>3]-+h[A>>3])*.5+I;h[w+24>>3]=H;J=J-(+h[x>>3]-+h[A>>3])*2.0;h[w+32>>3]=J;h[w+40>>3]=H;h[w+48>>3]=J;h[w+56>>3]=I;HD(a,w,d,f);_I(w);G=vw(G)|0;I=+h[b>>3]-+h[k>>3]+ +h[D+48>>3];h[G>>3]=I;J=+h[y>>3];J=(+h[z>>3]-J)*.5+J+(+h[x>>3]-+h[A>>3])*-.625;h[G+8>>3]=J;h[G+16>>3]=I;H=(+h[x>>3]-+h[A>>3])*.5+J;h[G+24>>3]=H;I=I-(+h[x>>3]-+h[A>>3]);h[G+32>>3]=I;h[G+40>>3]=H;A=G+48|0;h[A>>3]=I;h[G+56>>3]=J;HD(a,G,d,f);h[B>>3]=+h[b+16>>3];J=+h[y>>3];h[B+8>>3]=(+h[z>>3]-J)*.5+J;h[B+16>>3]=+h[A>>3];h[B+24>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 234881024:break;default:break a}G=d<<4;y=vw(G)|0;u=b+16|0;I=+h[u>>3];v=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=I;w=b+40|0;J=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*.125;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;HD(a,y,d,f);_I(y);y=vw(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*-1.125;h[y>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;h[y+16>>3]=H;h[y+24>>3]=I;h[y+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=I;HD(a,y,d,f);_I(y);y=vw(G)|0;I=+h[u>>3];I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*.125;h[y>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[y+8>>3]=J;H=+h[k>>3]-+h[v>>3]+I;h[y+16>>3]=H;h[y+24>>3]=J;h[y+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[y+40>>3]=J;h[y+48>>3]=I;h[y+56>>3]=J;HD(a,y,d,f);_I(y);G=vw(G)|0;J=+h[u>>3];J=(+h[b>>3]-J)*.5+J+(+h[k>>3]-+h[v>>3])*.125;h[G>>3]=J;I=+h[w>>3];I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[G+8>>3]=I;H=+h[k>>3]-+h[v>>3]+J;y=G+16|0;h[y>>3]=H;h[G+24>>3]=I;h[G+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[G+40>>3]=I;h[G+48>>3]=J;h[G+56>>3]=I;HD(a,G,d,f);h[B>>3]=+h[y>>3];I=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-I)*.5+I;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+I;KD(a,B,2);I=+h[u>>3];h[B>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[v>>3])*-1.125;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=I;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);_I(G);break}}if((e|0)<285212672)if((e|0)<268435456){switch(e|0){case 251658240:break;default:break a}G=d<<4;u=vw(G)|0;v=b+16|0;J=+h[v>>3];y=D+48|0;J=J-+h[k>>3]+(+h[b>>3]-J)*.5+ +h[y>>3];h[u>>3]=J;w=b+40|0;I=+h[w>>3];x=b+24|0;A=D+56|0;z=D+72|0;I=(+h[x>>3]-I)*.5+I+(+h[A>>3]-+h[z>>3])*.125;h[u+8>>3]=I;H=(+h[k>>3]-+h[y>>3])*2.0+J;h[u+16>>3]=H;h[u+24>>3]=I;h[u+32>>3]=H;I=(+h[A>>3]-+h[z>>3])*.5+I;h[u+40>>3]=I;h[u+48>>3]=J;h[u+56>>3]=I;HD(a,u,d,f);_I(u);G=vw(G)|0;I=+h[v>>3];I=I-+h[k>>3]+(+h[b>>3]-I)*.5+ +h[y>>3];h[G>>3]=I;J=+h[w>>3];J=(+h[x>>3]-J)*.5+J+(+h[A>>3]-+h[z>>3])*-.625;h[G+8>>3]=J;H=(+h[k>>3]-+h[y>>3])*2.0+I;y=G+16|0;h[y>>3]=H;h[G+24>>3]=J;h[G+32>>3]=H;J=(+h[A>>3]-+h[z>>3])*.5+J;h[G+40>>3]=J;h[G+48>>3]=I;h[G+56>>3]=J;HD(a,G,d,f);h[B>>3]=+h[y>>3];J=+h[w>>3];y=B+8|0;h[y>>3]=(+h[x>>3]-J)*.5+J;z=B+16|0;h[z>>3]=+h[b>>3];A=b+8|0;d=b+56|0;f=B+24|0;h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);h[B>>3]=+h[v>>3];J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[z>>3]=+h[G>>3];h[f>>3]=(+h[A>>3]-+h[d>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 268435456:break;default:break a}G=vw(d<<4)|0;h[G>>3]=+h[b>>3];v=D+48|0;x=D+56|0;y=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[x>>3]-+h[y>>3])*.5;h[G+16>>3]=+h[v>>3];J=+h[x>>3];h[G+24>>3]=J-(J-+h[y>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[b>>3];h[G+56>>3]=(+h[x>>3]-+h[y>>3])*.5+ +h[z>>3];HD(a,G,d,f);w=b+16|0;J=(+h[k>>3]-+h[v>>3])*.25;I=J+ +h[w>>3];h[B>>3]=I;H=+h[z>>3];u=b+24|0;F=+h[x>>3]-+h[y>>3];H=(+h[u>>3]-H)*.5+H+F*.125;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J+I;f=B+24|0;h[f>>3]=H-F*.25;KD(a,B,2);F=(+h[k>>3]-+h[v>>3])*.25;H=F+ +h[w>>3];h[B>>3]=H;I=+h[z>>3];J=+h[x>>3]-+h[y>>3];I=(+h[u>>3]-I)*.5+I+J*-.125;h[A>>3]=I;h[d>>3]=F+H;h[f>>3]=J*.25+I;KD(a,B,2);I=(+h[k>>3]-+h[v>>3])*.25;h[B>>3]=I+ +h[w>>3];J=(+h[x>>3]-+h[y>>3])*.75+ +h[z>>3];h[A>>3]=J;h[d>>3]=+h[b>>3]-I;h[f>>3]=J;KD(a,B,2);_I(G);break}else if((e|0)<301989888){switch(e|0){case 285212672:break;default:break a}y=vw(d<<4)|0;v=b+16|0;I=+h[v>>3];z=D+48|0;I=(+h[k>>3]-+h[z>>3]+(+h[b>>3]-I))*.5+I;h[y>>3]=I;w=b+40|0;F=+h[w>>3];x=b+24|0;F=(+h[k>>3]-+h[z>>3]+(+h[x>>3]-F))*.5+F;h[y+8>>3]=F;h[y+16>>3]=I;I=+h[w>>3];o=+h[k>>3]-+h[z>>3];I=(+h[x>>3]-I-o)*.5+I;h[y+24>>3]=I;J=+h[v>>3];J=(+h[b>>3]-J-o)*.5+J;h[y+32>>3]=J;h[y+40>>3]=I;h[y+48>>3]=J;h[y+56>>3]=F;HD(a,y,d,f);_I(y);F=+h[v>>3];F=(+h[b>>3]-F)*.5+F;J=+h[k>>3]-+h[z>>3];I=J*.75;o=F+I;h[B>>3]=o;H=+h[w>>3];H=(+h[x>>3]-H)*.5+H;I=H+I;y=B+8|0;h[y>>3]=I;A=B+16|0;h[A>>3]=o;J=J*-.75;H=H+J;G=B+24|0;h[G>>3]=H;J=F+J;h[B+32>>3]=J;h[B+40>>3]=H;h[B+48>>3]=J;h[B+56>>3]=I;d=B+64|0;c[d>>2]=c[B>>2];c[d+4>>2]=c[B+4>>2];c[d+8>>2]=c[B+8>>2];c[d+12>>2]=c[B+12>>2];KD(a,B,5);I=+h[v>>3];J=+h[b>>3];h[B>>3]=(J-I)*.5+I+(+h[k>>3]-+h[z>>3])*.75;I=+h[w>>3];h[y>>3]=(+h[x>>3]-I)*.5+I;h[A>>3]=J;d=b+8|0;f=b+56|0;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+I;KD(a,B,2);I=+h[v>>3];h[B>>3]=I;J=+h[w>>3];h[y>>3]=(+h[x>>3]-J)*.5+J;h[A>>3]=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[z>>3])*-.75;h[G>>3]=(+h[d>>3]-+h[f>>3])*.5+J;KD(a,B,2);break}else{switch(e|0){case 301989888:break;default:break a}A=d+12|0;G=vw(A<<4)|0;x=b+16|0;m=+h[x>>3];s=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[s>>3])*.25;h[G>>3]=m;y=b+40|0;F=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;F=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-F))*.5+F;u=G+8|0;h[u>>3]=F;h[G+16>>3]=m;F=(+h[v>>3]-+h[w>>3])*.125+F;t=G+24|0;h[t>>3]=F;H=m-(+h[k>>3]-+h[s>>3])*.125;d=G+32|0;h[d>>3]=H;o=(+h[v>>3]-+h[w>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;I=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=I;h[G+64>>3]=m;m=(+h[v>>3]-+h[w>>3])*.125+I;h[G+72>>3]=m;h[G+80>>3]=H;h[G+88>>3]=m;H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[G+96>>3]=H;h[G+104>>3]=I;J=H-(+h[k>>3]-+h[s>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[s>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=I;I=(+h[k>>3]-+h[s>>3])*.125+J;h[G+160>>3]=I;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[u>>3];h[G+200>>3]=J;h[G+208>>3]=I;h[G+216>>3]=J;u=G+224|0;h[u>>3]=H;h[G+232>>3]=+h[t>>3];h[G+240>>3]=+h[d>>3];h[G+248>>3]=J;HD(a,G,A,f);J=+h[u>>3];h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;KD(a,B,2);H=+h[u>>3];h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;KD(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}}else{if((e|0)<369098752){if((e|0)<335544320){switch(e|0){case 318767104:break;default:break a}A=d+4|0;G=vw(A<<4)|0;x=b+16|0;H=+h[x>>3];d=D+48|0;H=(+h[b>>3]-H)*.5+H+(+h[k>>3]-+h[d>>3])*.125;h[G>>3]=H;y=b+40|0;J=+h[y>>3];z=b+24|0;v=D+56|0;w=D+72|0;J=(+h[v>>3]-+h[w>>3]+(+h[z>>3]-J))*.5+J;h[G+8>>3]=J;o=(+h[k>>3]-+h[d>>3])*.125+H;h[G+16>>3]=o;I=(+h[v>>3]-+h[w>>3])*.125+J;h[G+24>>3]=I;h[G+32>>3]=o;o=(+h[v>>3]-+h[w>>3])*.25+I;h[G+40>>3]=o;h[G+48>>3]=H;F=(+h[v>>3]-+h[w>>3])*.125+o;h[G+56>>3]=F;H=H-(+h[k>>3]-+h[d>>3])*.25;h[G+64>>3]=H;h[G+72>>3]=F;F=H-(+h[k>>3]-+h[d>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=I;h[G+112>>3]=H;h[G+120>>3]=J;HD(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;H=+h[y>>3];H=(+h[z>>3]-H)*.5+H;A=B+8|0;h[A>>3]=H;d=B+16|0;h[d>>3]=J;f=B+24|0;h[f>>3]=(+h[v>>3]-+h[w>>3])*.125+H;KD(a,B,2);H=+h[x>>3];H=(+h[b>>3]-H)*.5+H;h[B>>3]=H;J=+h[y>>3];I=+h[v>>3]-+h[w>>3];J=(+h[z>>3]-J)*.5+J+I*.25;h[A>>3]=J;h[d>>3]=H;h[f>>3]=I*.125+J;KD(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}if((e|0)<352321536){switch(e|0){case 335544320:break;default:break a}x=d+12|0;G=vw(x<<4)|0;y=b+16|0;m=+h[y>>3];u=D+48|0;m=(+h[b>>3]-m)*.5+m+(+h[k>>3]-+h[u>>3])*.25;h[G>>3]=m;z=b+40|0;F=+h[z>>3];A=b+24|0;s=D+56|0;t=D+72|0;F=(+h[s>>3]-+h[t>>3]+(+h[A>>3]-F))*.5+F;d=G+8|0;h[d>>3]=F;h[G+16>>3]=m;F=(+h[s>>3]-+h[t>>3])*.125+F;v=G+24|0;h[v>>3]=F;I=m-(+h[k>>3]-+h[u>>3])*.125;w=G+32|0;h[w>>3]=I;o=(+h[s>>3]-+h[t>>3])*.125+F;h[G+40>>3]=o;h[G+48>>3]=m;H=(+h[s>>3]-+h[t>>3])*.125+o;h[G+56>>3]=H;h[G+64>>3]=m;m=(+h[s>>3]-+h[t>>3])*.125+H;h[G+72>>3]=m;h[G+80>>3]=I;h[G+88>>3]=m;I=+h[y>>3];I=(+h[b>>3]-I)*.5+I;h[G+96>>3]=I;h[G+104>>3]=H;J=I-(+h[k>>3]-+h[u>>3])*.125;h[G+112>>3]=J;h[G+120>>3]=m;J=J-(+h[k>>3]-+h[u>>3])*.125;h[G+128>>3]=J;h[G+136>>3]=m;h[G+144>>3]=J;h[G+152>>3]=H;H=(+h[k>>3]-+h[u>>3])*.125+J;h[G+160>>3]=H;h[G+168>>3]=o;h[G+176>>3]=J;h[G+184>>3]=F;h[G+192>>3]=J;J=+h[d>>3];h[G+200>>3]=J;h[G+208>>3]=H;h[G+216>>3]=J;d=G+224|0;h[d>>3]=I;h[G+232>>3]=+h[v>>3];h[G+240>>3]=+h[w>>3];h[G+248>>3]=J;HD(a,G,x,f);c[B>>2]=c[d>>2];c[B+4>>2]=c[d+4>>2];c[B+8>>2]=c[d+8>>2];c[B+12>>2]=c[d+12>>2];d=B+16|0;h[d>>3]=+h[B>>3];J=+h[z>>3];f=B+24|0;h[f>>3]=(+h[A>>3]-J)*.5+J;KD(a,B,2);h[B>>3]=+h[y>>3];J=+h[z>>3];h[B+8>>3]=(+h[A>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}else{switch(e|0){case 352321536:break;default:break a}A=d+4|0;G=vw(A<<4)|0;x=b+16|0;I=+h[x>>3];w=D+48|0;I=(+h[b>>3]-I)*.5+I+(+h[k>>3]-+h[w>>3])*.125;h[G>>3]=I;y=b+40|0;J=+h[y>>3];z=b+24|0;u=D+56|0;v=D+72|0;J=(+h[u>>3]-+h[v>>3]+(+h[z>>3]-J))*.5+J;d=G+8|0;h[d>>3]=J;o=(+h[k>>3]-+h[w>>3])*.125+I;h[G+16>>3]=o;H=(+h[u>>3]-+h[v>>3])*.125+J;h[G+24>>3]=H;h[G+32>>3]=o;o=(+h[u>>3]-+h[v>>3])*.25+H;h[G+40>>3]=o;h[G+48>>3]=I;F=(+h[u>>3]-+h[v>>3])*.125+o;h[G+56>>3]=F;I=I-(+h[k>>3]-+h[w>>3])*.25;h[G+64>>3]=I;h[G+72>>3]=F;F=I-(+h[k>>3]-+h[w>>3])*.125;h[G+80>>3]=F;h[G+88>>3]=o;h[G+96>>3]=F;h[G+104>>3]=H;h[G+112>>3]=I;h[G+120>>3]=J;HD(a,G,A,f);J=+h[x>>3];J=(+h[b>>3]-J)*.5+J;h[B>>3]=J;A=B+8|0;h[A>>3]=+h[d>>3];d=B+16|0;h[d>>3]=J;J=+h[y>>3];f=B+24|0;h[f>>3]=(+h[z>>3]-J)*.5+J;KD(a,B,2);h[B>>3]=+h[x>>3];J=+h[y>>3];h[A>>3]=(+h[z>>3]-J)*.5+J;h[d>>3]=+h[b>>3];h[f>>3]=(+h[b+8>>3]-+h[b+56>>3])*.5+J;KD(a,B,2);_I(G);break}}if((e|0)<402653184)if((e|0)<385875968){switch(e|0){case 369098752:break;default:break a}d=d+5|0;G=vw(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=+h[z>>3];J=+h[k>>3];h[G+48>>3]=(J-+h[B>>3])*.5+J;h[G+56>>3]=+h[z>>3];J=+h[k>>3];h[G+64>>3]=(J-+h[B>>3])*.5+J;h[G+72>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+80>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+88>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+104>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+120>>3]=J-(J-+h[z>>3])*.5;h[G+112>>3]=+h[b>>3];h[G+136>>3]=+h[A>>3];h[G+128>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;HD(a,G,d,f);_I(G);break}else{switch(e|0){case 385875968:break;default:break a}d=d+3|0;G=vw(d<<4)|0;B=D+48|0;h[G>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;y=D+56|0;A=D+72|0;h[G+8>>3]=+h[D+24>>3]-(+h[y>>3]-+h[A>>3])*.5;h[G+16>>3]=+h[B>>3];J=+h[y>>3];h[G+24>>3]=J-(J-+h[A>>3])*.5;h[G+32>>3]=+h[b+32>>3];z=b+40|0;h[G+40>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+48>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;h[G+56>>3]=(+h[y>>3]-+h[A>>3])*.5+ +h[z>>3];h[G+64>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;z=b+56|0;h[G+72>>3]=+h[z>>3];A=b+8|0;J=+h[A>>3];h[G+88>>3]=J-(J-+h[z>>3])*.5;h[G+80>>3]=+h[b>>3];h[G+104>>3]=+h[A>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[B>>3])*.5;HD(a,G,d,f);_I(G);break}else if((e|0)<419430400){switch(e|0){case 402653184:break;default:break a}d=d+3|0;G=vw(d<<4)|0;h[G>>3]=+h[b>>3];y=b+8|0;z=D+48|0;A=D+56|0;B=D+72|0;h[G+8>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[z>>3])*.5+J;h[G+24>>3]=+h[y>>3]-(+h[A>>3]-+h[B>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[z>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];y=b+40|0;h[G+56>>3]=J-(J-+h[y>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[z>>3])*.5+J;h[G+72>>3]=+h[y>>3];h[G+88>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[y>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[z>>3])*.5+J;h[G+104>>3]=(+h[A>>3]-+h[B>>3])*.5+ +h[b+56>>3];h[G+96>>3]=+h[b>>3];HD(a,G,d,f);_I(G);break}else{switch(e|0){case 419430400:break;default:break a}d=d+5|0;G=vw(d<<4)|0;h[G>>3]=+h[b>>3];B=b+8|0;A=D+48|0;y=D+56|0;z=D+72|0;h[G+8>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+16>>3]=(J-+h[A>>3])*.5+J;h[G+24>>3]=+h[B>>3]-(+h[y>>3]-+h[z>>3])*.5;J=+h[k>>3];h[G+32>>3]=(J-+h[A>>3])*.5+J;h[G+40>>3]=+h[D+40>>3];h[G+48>>3]=+h[b+16>>3];J=+h[b+24>>3];B=b+40|0;h[G+56>>3]=J-(J-+h[B>>3])*.5;J=+h[k>>3];h[G+64>>3]=(J-+h[A>>3])*.5+J;h[G+72>>3]=+h[B>>3];h[G+88>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];J=+h[k>>3];h[G+80>>3]=(J-+h[A>>3])*.5+J;B=b+56|0;h[G+104>>3]=(+h[y>>3]-+h[z>>3])*.5+ +h[B>>3];h[G+96>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+112>>3]=+h[j>>3]-(+h[k>>3]-+h[A>>3])*.5;h[G+120>>3]=+h[B>>3];h[G+128>>3]=+h[b+48>>3];h[G+136>>3]=+h[B>>3];HD(a,G,d,f);_I(G);break}}while(0);_I(D)}l=E;return}function zy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0;f=l;l=l+112|0;g=f;k=+h[b+8>>3]*2.0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[g+16>>3]=+h[b+16>>3];h[g+24>>3]=k-+h[b+24>>3];h[g+32>>3]=+h[b+32>>3];h[g+40>>3]=k-+h[b+40>>3];h[g+48>>3]=+h[b+48>>3];h[g+56>>3]=k-+h[b+56>>3];h[g+64>>3]=+h[b+64>>3];h[g+72>>3]=k-+h[b+72>>3];h[g+80>>3]=+h[b+80>>3];h[g+88>>3]=k-+h[b+88>>3];i=g+96|0;j=b+96|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];JD(a,b,d,0,0,e&255);JD(a,g,7,0,0,0);l=f;return}function Ay(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[c>>3];e=+h[c+8>>3];e=(+h[d+8>>3]-e)*b+e;h[a>>3]=(+h[d>>3]-f)*b+f;h[a+8>>3]=e;return}function By(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a){a=c[c[a+4>>2]>>2]|0;if((a|0)!=75)if((a|0)==78)a=2;else return ((a|0)==77?3:(a|0)==80?4:0)|0;else a=1}else a=0;return a|0}function Cy(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,D=0,G=0,H=0,I=0,J=0,L=0,M=0,N=0,P=0.0,Q=0.0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;aa=l;l=l+144|0;J=aa+112|0;N=aa+104|0;G=aa+96|0;H=aa+88|0;i=aa+80|0;Y=aa+64|0;_=aa+48|0;R=aa+40|0;S=aa+32|0;j=aa+24|0;p=aa+16|0;D=aa+136|0;A=aa+128|0;L=aa;$=vw(48)|0;Z=b+16|0;W=c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0;g=(W|0)==1552;X=c[W>>2]|0;d=c[W+4>>2]|0;e=c[W+8>>2]|0;m=+h[W+16>>3];n=+h[W+32>>3];o=+h[W+24>>3];X=X|(IA(Im(b,90545)|0)|0)&255;do if(!g){if(!X){W=c[Z>>2]|0;k=+h[W+32>>3]*72.0;f=+h[W+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);break}k=+My(b);if(k>0.0)f=k;else{W=c[Z>>2]|0;f=+h[W+32>>3];k=+h[W+40>>3];k=(f<k?f:k)*72.0;k=+(~~(k+(k>=0.0?.5:-.5))|0);f=k}}else{f=0.0;k=0.0}while(0);W=DA(b,c[42204]|0,d,0)|0;V=+EA(b,c[42206]|0,0.0,-360.0)+m;if(!e){U=+EA(b,c[42207]|0,0.0,-100.0);I=DA(b,c[42203]|0,4,0)|0;T=+EA(b,c[42208]|0,0.0,-100.0)}else{I=e;U=n;T=o}d=c[(c[Z>>2]|0)+104>>2]|0;e=d+24|0;c[Y>>2]=c[e>>2];c[Y+4>>2]=c[e+4>>2];c[Y+8>>2]=c[e+8>>2];c[Y+12>>2]=c[e+12>>2];q=+h[Y>>3];if(q>0.0){if(!g)M=11}else if(!(g|!(+h[Y+8>>3]>0.0)))M=11;if((M|0)==11){d=Im(b,90530)|0;do if(d){h[p>>3]=0.0;h[j>>3]=0.0;c[i>>2]=j;c[i+4>>2]=p;d=cM(d,90537,i)|0;m=+h[j>>3];if(m<0.0){h[j>>3]=0.0;m=0.0}n=+h[p>>3];if(n<0.0){h[p>>3]=0.0;o=0.0}else o=n;if((d|0)<=0){n=q+16.0;h[Y>>3]=n;m=8.0;break}m=m*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0);n=q+m;h[Y>>3]=n;if((d|0)!=1){m=o*72.0;m=+(~~(m+(m>=0.0?.5:-.5))<<1|0)}}else{n=q+16.0;h[Y>>3]=n;m=8.0}while(0);d=Y+8|0;h[d>>3]=+h[d>>3]+m;d=c[(c[Z>>2]|0)+104>>2]|0;q=n}s=+h[d+24>>3];m=+h[c[(c[(ro(b)|0)+16>>2]|0)+8>>2]>>3];if(m>0.0){P=m*72.0;P=+(~~(P+(P>=0.0?.5:-.5))|0);Q=+Ny(q,P);h[Y>>3]=Q;p=Y+8|0;h[p>>3]=+Ny(+h[p>>3],P)}else Q=q;d=c[(c[Z>>2]|0)+8>>2]|0;do if(!(a[d+12>>0]|0)){e=Im(b,93847)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){Pr(A,ro(b)|0,e);d=c[A>>2]|0;g=c[A+4>>2]|0;if((g&d|0)==-1){d=Dn(b)|0;c[G>>2]=e;c[G+4>>2]=d;_l(0,90621,G)|0;e=0;d=0;break}else{a[(c[(ro(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}else{d=c[d>>2]|0;if((a[d>>0]|0)==99?(xJ(d,90553)|0)==0:0){e=Im(b,90560)|0;Pr(D,ro(b)|0,e);d=c[D>>2]|0;g=c[D+4>>2]|0;if((g&d|0)==-1){d=Dn(b)|0;c[H>>2]=e|0?e:90570;c[H+4>>2]=d;_l(0,90576,H)|0;e=0;d=0;break}else{a[(c[(ro(b)|0)+16>>2]|0)+114>>0]=1;e=d+2|0;d=g+2|0;break}}else{e=0;d=0}}while(0);P=+(e|0);h[_>>3]=Q>P?Q:P;P=+h[Y+8>>3];r=+(d|0);d=_+8|0;h[d>>3]=P>r?P:r;e=(I|0)<3&(T!=0.0|U!=0.0)?120:I;g=Im(b,90662)|0;if(!g)i=99;else{i=a[g>>0]|0;i=i<<24>>24==116?116:i<<24>>24==98?98:99}g=c[Z>>2]|0;a[(c[g+104>>2]|0)+80>>0]=i;if((e|0)==4?(T==0.0?((~~(V+(V>=0.0?.5:-.5))|0)%90|0|0)==0:0)&U==0.0:0)p=1;else M=39;do if((M|0)==39){g=c[(c[(c[g+8>>2]|0)+8>>2]|0)+44>>2]|0;if(g|0){p=c[g>>2]|0;c[J>>2]=c[_>>2];c[J+4>>2]=c[_+4>>2];c[J+8>>2]=c[_+8>>2];c[J+12>>2]=c[_+12>>2];hb[p&31](L,J);c[_>>2]=c[L>>2];c[_+4>>2]=c[L+4>>2];c[_+8>>2]=c[L+8>>2];c[_+12>>2]=c[L+12>>2];p=0;break}m=+h[d>>3];n=m*1.4142135623730951;if(f>n&i<<24>>24==99){o=m/f;o=+C(+(1.0/(1.0-o*o)));o=+h[_>>3]*o;h[_>>3]=o}else{o=+h[_>>3]*1.4142135623730951;h[_>>3]=o;h[d>>3]=n;m=n}if((e|0)>2){z=+E(+(3.141592653589793/+(e|0)));h[_>>3]=o/z;h[d>>3]=m/z;p=0}else p=0}while(0);m=+h[d>>3];g=FA(b,c[42209]|0,122100)|0;if((a[g>>0]|0)==115?(xJ(g,90671)|0)==0:0){h[_>>3]=k;h[d>>3]=f;N=$+40|0;c[N>>2]=c[N>>2]|2048}else{if(!((IA(g)|0)<<24>>24)){z=+h[_>>3];k=k>z?k:z;h[_>>3]=k;z=+h[d>>3];f=f>z?f:z}else{M=c[(c[Z>>2]|0)+104>>2]|0;if(!(!(k<+h[M+24>>3])?!(f<+h[M+32>>3]):0)){L=Dn(b)|0;M=Dn(ro(b)|0)|0;c[N>>2]=L;c[N+4>>2]=M;_l(0,90677,N)|0}h[_>>3]=k}h[d>>3]=f}if(!X){z=f;y=k}else{y=k>f?k:f;h[d>>3]=y;h[_>>3]=y;z=y}do if(!((IA(FA(b,c[42200]|0,122100)|0)|0)<<24>>24)){if(p){f=+h[(Q>+h[_>>3]?Y:_)>>3];break}f=+h[d>>3];if(P<f){f=+h[_>>3]*+C(+(1.0-P*P/(f*f)));f=Q>f?Q:f}else f=Q}else f=Q;while(0);g=c[(c[Z>>2]|0)+104>>2]|0;h[g+40>>3]=s-q+f;A=$+40|0;if(!(c[A>>2]&2048)){x=+h[d>>3]-m;h[g+48>>3]=(P<r?r-P+x:x)+P}j=(W|0)>1;g=j?W:1;a:do if((e|0)<3){g=vw(g<<5)|0;k=+h[_>>3]*.5;f=+h[d>>3]*.5;h[g>>3]=-k;h[g+8>>3]=-f;h[g+16>>3]=k;h[g+24>>3]=f;if(j){e=1;i=2;while(1){if((e|0)==(W|0))break;y=k+4.0;z=f+4.0;h[g+(i<<4)>>3]=-y;h[g+(i<<4)+8>>3]=-z;S=i|1;h[g+(S<<4)>>3]=y;h[g+(S<<4)+8>>3]=z;e=e+1|0;i=i+2|0;k=y;f=z}h[_>>3]=k*2.0;h[d>>3]=f*2.0;e=2}else e=2}else{g=vw(O(g<<4,e)|0)|0;i=c[(c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0)+44>>2]|0;b:do if(!i){q=6.283185307179586/+(e|0);t=q*.5;r=+F(+t);s=+QJ(+B(+U)+ +B(+T),1.0);t=T*1.4142135623730951/+E(+t);u=U*.5;SJ((q+-3.141592653589793)*.5,R,S);v=V*.017453292519943295;k=0.0;f=0.0;m=0.0;i=0;n=+h[S>>3]*.5;o=+h[R>>3]*.5;while(1){if((i|0)>=(e|0))break b;m=m+q;SJ(m,R,S);n=+h[S>>3]*r+n;o=+h[R>>3]*r+o;x=(o*t+s)*n+u*o;SJ(+K(+o,+x)+v,R,S);x=+QJ(x,o);w=+h[S>>3]*x*+h[_>>3];x=+h[R>>3]*x*+h[d>>3];ba=+B(+w);f=ba>f?ba:f;ba=+B(+x);k=ba>k?ba:k;h[g+(i<<4)>>3]=w;h[g+(i<<4)+8>>3]=x;if(p)break;else i=i+1|0}ba=-w;h[g+16>>3]=ba;h[g+24>>3]=x;h[g+32>>3]=ba;ba=-x;h[g+40>>3]=ba;h[g+48>>3]=w;h[g+56>>3]=ba}else{hb[c[i+4>>2]&31](g,_);k=+h[d>>3]*.5;f=+h[_>>3]*.5}while(0);f=f*2.0;k=k*2.0;y=y>f?y:f;h[_>>3]=y;ba=z>k?z:k;h[d>>3]=ba;f=y/f;k=ba/k;i=0;while(1){if((i|0)>=(e|0))break;N=g+(i<<4)|0;b=g+(i<<4)+8|0;ba=+h[b>>3]*k;h[N>>3]=+h[N>>3]*f;h[b>>3]=ba;i=i+1|0}if(j){j=e+-1|0;k=+h[g>>3];m=+h[g+8>>3];f=+K(+(m-+h[g+(j<<4)+8>>3]),+(k-+h[g+(j<<4)>>3]));j=0;c:while(1){if((j|0)>=(e|0))break;p=j+1|0;i=(p|0)%(e|0)|0;n=+h[g+(i<<4)>>3];o=+h[g+(i<<4)+8>>3];q=+K(+(o-m),+(n-k));z=(f+3.141592653589793-q)*.5;ba=4.0/+F(+z);SJ(f-z,R,S);h[R>>3]=+h[R>>3]*ba;h[S>>3]=+h[S>>3]*ba;i=1;f=m;while(1){if((i|0)==(W|0)){f=q;j=p;k=n;m=o;continue c}z=+h[S>>3]+k;ba=+h[R>>3]+f;b=(O(i,e)|0)+j|0;h[g+(b<<4)>>3]=z;h[g+(b<<4)+8>>3]=ba;i=i+1|0;k=z;f=ba}}j=O(e,W+-1|0)|0;i=0;while(1){if((i|0)>=(e|0))break a;S=i+j|0;z=+h[g+(S<<4)+8>>3];y=+B(+(+h[g+(S<<4)>>3]))*2.0;ba=+h[_>>3];h[_>>3]=y>ba?y:ba;z=+B(+z)*2.0;ba=+h[d>>3];h[d>>3]=z>ba?z:ba;i=i+1|0}}}while(0);c[$>>2]=X;c[$+4>>2]=W;c[$+8>>2]=e;h[$+16>>3]=V;h[$+32>>3]=U;h[$+24>>3]=T;c[$+44>>2]=g;f=+h[_>>3];if(!(c[A>>2]&2048)){e=c[Z>>2]|0;h[e+32>>3]=f*.013888888888888888}else{e=c[Z>>2]|0;h[e+32>>3]=+h[(Q>f?Y:_)>>3]*.013888888888888888;d=(P>+h[d>>3]?Y:_)+8|0}h[e+40>>3]=+h[d>>3]*.013888888888888888;c[e+12>>2]=$;l=aa;return}function Dy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+64|0;j=o+40|0;e=o+32|0;k=o+16|0;n=o;d=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]|0)>>>2&1^1;m=a+16|0;f=c[c[(c[m>>2]|0)+104>>2]>>2]|0;c[42326]=f;f=rJ(f)|0;f=vw(((f|0)>1?f:1)+1|0)|0;b=Fy(a,d,1,f)|0;if(!b){c[e>>2]=c[c[(c[m>>2]|0)+104>>2]>>2];_l(1,90506,e)|0;c[42326]=90527;b=Fy(a,d,1,f)|0}_I(f);Gy(j,a,b);d=c[m>>2]|0;i=+h[d+32>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))|0);h[n>>3]=i;g=+h[d+40>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);d=n+8|0;h[d>>3]=g;if(!((IA(FA(a,c[42209]|0,122100)|0)|0)<<24>>24)){i=+h[(+h[b>>3]>i?b:n)>>3];h[n>>3]=i;e=b+8|0;g=+h[(+h[e>>3]>g?b:n)+8>>3];h[d>>3]=g;d=e;e=b}else{d=b+8|0;e=b}a=(IA(FA(a,c[42200]|0,122100)|0)|0)&255;c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];Hy(b,j,a);Iy(k,i*-.5,g*.5);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];Jy(b,j,15);n=c[m>>2]|0;h[n+32>>3]=+h[e>>3]*.013888888888888888;h[n+40>>3]=(+h[d>>3]+1.0)*.013888888888888888;c[n+12>>2]=b;l=o;return}function Ey(a){a=a|0;var b=0.0,d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0.0,m=0;j=vw(48)|0;k=a+16|0;g=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+8>>2]|0)+4>>2]|0;f=+EA(a,c[42190]|0,1797693134862315708145274.0e284,0.0);b=+EA(a,c[42189]|0,1797693134862315708145274.0e284,0.0);f=f<b?f:b;f=b==1797693134862315708145274.0e284&f==1797693134862315708145274.0e284?.05:f>0.0?(f>.0003?f:.0003):f;i=c[k>>2]|0;h[i+40>>3]=f;h[i+32>>3]=f;b=f*72.0;g=DA(a,c[42204]|0,g,0)|0;i=vw((g|0)<1?32:g<<5)|0;f=f*36.0;e=-f;h[i>>3]=e;h[i+8>>3]=e;h[i+16>>3]=f;h[i+24>>3]=f;if((g|0)>1){a=1;d=2;e=f;b=f;while(1){if((a|0)==(g|0))break;l=e+4.0;f=b+4.0;h[i+(d<<4)>>3]=-l;h[i+(d<<4)+8>>3]=-f;m=d|1;h[i+(m<<4)>>3]=l;h[i+(m<<4)+8>>3]=f;a=a+1|0;d=d+2|0;e=l;b=f}b=e*2.0}c[j>>2]=1;c[j+4>>2]=g;c[j+8>>2]=2;m=j+16|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[j+44>>2]=i;l=b*.013888888888888888;m=c[k>>2]|0;h[m+32>>3]=l;h[m+40>>3]=l;c[m+12>>2]=j;return}function Fy(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=vw(72)|0;n=c[(c[b+16>>2]|0)+104>>2]|0;m=0;i=1;j=c[42326]|0;a:while(1){k=a[j>>0]|0;switch(k<<24>>24){case 0:break a;case 92:{j=j+1|0;k=a[j>>0]|0;switch(k<<24>>24){case 124:case 125:case 123:case 92:{l=m;break}default:E=4}break}default:E=4}if((E|0)==4){E=0;switch(k<<24>>24){case 123:{l=m+1|0;break}case 125:{l=m+-1|0;break}default:{l=m;i=i+((m|0)==0&k<<24>>24==124&1)|0}}if((l|0)<0)break}m=l;j=j+1|0}B=g+56|0;c[B>>2]=vw(i<<2)|0;a[g+64>>0]=d;y=(d|0)==0&1;z=n+82|0;A=f+1|0;v=(e|0)!=0;w=n+16|0;x=n+4|0;u=n+8|0;k=0;m=0;d=0;t=0;l=0;e=0;n=f;i=0;j=0;b:while(1){p=k;k=0;c:while(1){d:while(1){s=e;e:while(1){r=k;o=i;f:while(1){q=m;g:while(1){while(1){if(t){E=78;break b}m=c[42326]|0;i=a[m>>0]|0;if((i+-1&255)>=31)break;c[42326]=m+1}switch(i<<24>>24|0){case 92:{E=53;break d}case 0:case 124:case 125:break e;case 60:break f;case 62:break g;case 123:break;default:{k=d;i=m;break d}}i=m+1|0;c[42326]=i;if(l|0){E=34;break b}if(!(a[i>>0]|0)){E=34;break b}e=Fy(b,y,0,f)|0;c[(c[B>>2]|0)+(q<<2)>>2]=e;if(!e){E=36;break b}else{q=q+1|0;l=4}}if(a[z>>0]|0){k=d;i=m;break d}if(!(l&16)){E=27;break b}if(o>>>0>A>>>0?(C=o+-1|0,(C|0)!=(s|0)):0)i=(a[C>>0]|0)==32?C:o;else i=o;a[i>>0]=0;r=GL(f)|0;c[42326]=(c[42326]|0)+1;m=q;l=l&-17;o=i}if(l&6|0){E=22;break b}if(a[z>>0]|0){k=d;i=m;break d}c[42326]=m+1;m=q;l=l|18;k=r;s=f;i=f}if(!((l&16|0)==0&(v|i<<24>>24!=0))){E=38;break b}if(!(l&4)){k=vw(72)|0;c[(c[B>>2]|0)+(q<<2)>>2]=k;m=q+1|0}else{k=p;m=q}if(r|0)c[k+60>>2]=r;if(!(l&5)){a[f+j>>0]=32;l=l|1;j=j+1|0}i=f+j|0;if(l&1){if((j|0)>1?(D=i+-1|0,(D|0)!=(n|0)):0)i=(a[D>>0]|0)==32?D:i;a[i>>0]=0;n=GL(f)|0;c[k+52>>2]=lw(b,n,a[z>>0]|0?2:0,+h[w>>3],c[x>>2]|0,c[u>>2]|0)|0;a[k+64>>0]=1;n=f;j=0}i=c[42326]|0;switch(a[i>>0]|0){case 0:{t=1;e=s;i=o;continue b}case 125:{E=51;break b}default:{}}c[42326]=i+1;p=k;l=0;k=0;e=s;i=o}h:do if((E|0)==53){E=0;k=f+j|0;i=m+1|0;switch(a[i>>0]|0){case 0:{k=d;i=m;break h}case 62:case 60:case 124:case 125:case 123:{k=d;break}case 32:{if(!(a[z>>0]|0))k=1;else E=55;break}default:E=55}if((E|0)==55){E=0;a[k>>0]=92;k=d;l=l|9;j=j+1|0}c[42326]=i}while(0);d=f+j|0;if(l&4|0?(a[i>>0]|0)!=32:0){E=59;break b}if(!(l&24))l=(a[i>>0]|0)==32?l:l|9;if(!(l&8))if(!(l&16))e=s;else{m=a[i>>0]|0;d=(k|0)!=0;if(!(d|m<<24>>24!=32))if((o|0)!=(f|0))if((a[o+-1>>0]|0)==32)m=o;else E=73;else m=f;else E=73;if((E|0)==73){E=0;a[o>>0]=m;m=o+1|0;i=c[42326]|0}e=d?m+-1|0:s;o=m}else{m=a[i>>0]|0;e=(k|0)!=0;if(!((!(e|m<<24>>24!=32)?(a[d+-1>>0]|0)==32:0)?(a[z>>0]|0)==0:0)){a[d>>0]=m;j=j+1|0}if(e){e=s;n=f+j+-1|0}else e=s}i=i+1|0;c[42326]=i;while(1){if((a[i>>0]|0)>=0){m=q;d=k;k=r;i=o;continue c}s=i+1|0;c[42326]=s;a[f+j>>0]=a[i>>0]|0;j=j+1|0;i=s}}}if((E|0)==22){Ky(g,r);g=0}else if((E|0)==27){Ky(g,r);g=0}else if((E|0)==34){Ky(g,r);g=0}else if((E|0)==36){Ky(g,r);g=0}else if((E|0)==38){Ky(g,r);g=0}else if((E|0)==51){c[42326]=i+1;c[g+48>>2]=m}else if((E|0)==59){Ky(g,r);g=0}else if((E|0)==78)c[g+48>>2]=q;return g|0}function Gy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;k=u+48|0;m=u+40|0;n=u+32|0;t=u+16|0;s=u;j=c[e+52>>2]|0;a:do if(!j){n=t+8|0;o=e+48|0;p=e+56|0;q=e+64|0;r=s+8|0;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;j=0;while(1){if((j|0)>=(c[o>>2]|0))break a;Gy(s,d,c[(c[p>>2]|0)+(j<<2)>>2]|0);if(!(a[q>>0]|0)){h[n>>3]=+h[n>>3]+ +h[r>>3];k=t;m=+h[t>>3]>+h[s>>3]?t:s}else{h[t>>3]=+h[t>>3]+ +h[s>>3];k=n;m=(+h[n>>3]>+h[r>>3]?t:s)+8|0}h[k>>3]=+h[m>>3];j=j+1|0}}else{g=+h[j+24>>3];f=+h[j+32>>3];if(g>0.0|f>0.0){j=Im(d,90530)|0;do if(j){c[k>>2]=m;c[k+4>>2]=n;j=cM(j,90537,k)|0;if((j|0)<=0){i=8.0;g=g+16.0;break}i=+h[m>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0);g=g+i;if((j|0)!=1){i=+h[n>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0)}}else{i=8.0;g=g+16.0}while(0);f=i+f}h[t>>3]=g;h[t+8>>3]=f}while(0);c[e>>2]=c[t>>2];c[e+4>>2]=c[t+4>>2];c[e+8>>2]=c[t+8>>2];c[e+12>>2]=c[t+12>>2];c[b>>2]=c[t>>2];c[b+4>>2]=c[t+4>>2];c[b+8>>2]=c[t+8>>2];c[b+12>>2]=c[t+12>>2];l=u;return}function Hy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0;s=l;l=l+32|0;o=s+16|0;p=s;q=+h[d>>3];i=q-+h[b>>3];r=+h[d+8>>3];f=r-+h[b+8>>3];c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=c[b+52>>2]|0;if(!((e|0)!=0|(d|0)==0)){n=d+40|0;h[n>>3]=+h[n>>3]+i;n=d+48|0;h[n>>3]=+h[n>>3]+f}m=b+48|0;d=c[m>>2]|0;a:do if(d|0){n=b+64|0;f=((a[n>>0]|0)==0?f:i)/+(d|0);k=b+56|0;j=0;while(1){if((j|0)>=(d|0))break a;b=c[(c[k>>2]|0)+(j<<2)>>2]|0;g=j+1|0;d=~~(f*+(g|0))-~~(f*+(j|0))|0;if(!(a[n>>0]|0))Iy(p,q,+h[b+8>>3]+ +(d|0));else Iy(p,+h[b>>3]+ +(d|0),r);c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];Hy(b,o,e);j=g;d=c[m>>2]|0}}while(0);l=s;return}function Iy(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Jy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+48|0;j=q+32|0;n=q+16|0;m=q;a[b+65>>0]=e;k=b+16|0;s=+h[d>>3];p=d+8|0;r=+h[p>>3];Iy(n,s,r-+h[b+8>>3]);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];k=b+32|0;Iy(m,+h[b>>3]+s,r);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[b+48>>2]|0;m=k+-1|0;n=(e|0)==0;o=b+56|0;i=b+64|0;g=0;while(1){if((g|0)>=(k|0))break;do if(!n){b=(g|0)==0;f=(g|0)==(m|0);if(!(a[i>>0]|0))if(b){b=f?15:14;break}else{b=f?11:10;break}else if(b){b=f?15:13;break}else{b=f?7:5;break}}else b=0;while(0);f=c[(c[o>>2]|0)+(g<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];Jy(f,j,b&e);if(!(a[i>>0]|0))h[p>>3]=+h[p>>3]-+h[(c[(c[o>>2]|0)+(g<<2)>>2]|0)+8>>3];else h[d>>3]=+h[c[(c[o>>2]|0)+(g<<2)>>2]>>3]+ +h[d>>3];g=g+1|0}l=q;return}function Ky(a,b){a=a|0;b=b|0;Ly(a);_I(b);return}function Ly(a){a=a|0;var b=0,d=0,e=0;d=a+48|0;e=a+56|0;b=0;while(1){if((b|0)>=(c[d>>2]|0))break;Ly(c[(c[e>>2]|0)+(b<<2)>>2]|0);b=b+1|0}_I(c[a+60>>2]|0);ow(c[a+52>>2]|0);_I(c[e>>2]|0);_I(a);return}function My(a){a=a|0;var b=0.0,d=0.0;d=+EA(a,c[42190]|0,0.0,.01);b=+EA(a,c[42189]|0,0.0,.02);b=(d>b?d:b)*72.0;return +(+(~~(b+(b>=0.0?.5:-.5))|0))}function Ny(a,b){a=+a;b=+b;var c=0;c=~~(a/b);return +(+((+(c|0)*b+1.0e-05<a&1)+c|0)*b)}function Oy(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[c[a+4>>2]>>2]|0)==75&1;return a|0}function Py(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[42327]|0;a:do if(!f)d=0;else{g=c[42328]|0;e=0;while(1){if((e|0)>=(g|0)){d=0;break a}d=c[f+(e<<2)>>2]|0;h=c[d>>2]|0;if((a[h>>0]|0)==(a[b>>0]|0)?(xJ(h,b)|0)==0:0)break a;e=e+1|0}}while(0);return d|0}function Qy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(RA(Im(d,90560)|0)|0)if((a[b>>0]|0)==101?(xJ(b,90725)|0)==0:0){d=101;g=6}else{b=90553;g=4}else g=4;if((g|0)==4){d=a[b>>0]|0;if(d<<24>>24==99)if(!(xJ(b,90553)|0))g=11;else{d=99;g=6}else g=6}a:do if((g|0)==6){e=19868;while(1){f=c[e>>2]|0;if(!f){g=11;break a}if((a[f>>0]|0)==d<<24>>24?(xJ(f,b)|0)==0:0){b=e;break a}e=e+16|0}}while(0);if((g|0)==11)b=Ry(b)|0;return b|0}function Ry(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=Py(b)|0;if(!d){f=c[42328]|0;d=f+1|0;c[42328]=d;e=c[42327]|0;if(!e)d=ww(d<<2)|0;else d=yw(e,d<<2)|0;c[42327]=d;d=vw(16)|0;c[(c[42327]|0)+(f<<2)>>2]=d;c[d>>2]=c[4967];c[d+4>>2]=c[4968];c[d+8>>2]=c[4969];c[d+12>>2]=c[4970];e=GL(b)|0;c[d>>2]=e;do if(!0){if((a[b>>0]|0)==99?(xJ(b,90553)|0)==0:0){e=1;break}c[g>>2]=c[4967];c[g+4>>2]=e;_l(0,90730,g)|0;e=0}else e=1;while(0);a[d+12>>0]=e}l=h;return d|0}function Sy(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[b>>3]*.5257311121191336;c=+h[b+8>>3]*.8944271909999159;c=d>c?d:c;h[a>>3]=c*4.97979656976556;h[a+8>>3]=c*4.73606797749979;return}function Ty(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0.0;d=+h[b>>3];k=b+8|0;e=+h[k>>3];c=e/d;if(!(c>.9510565162951536))if(c<.9510565162951536){j=d;e=d*.9510565162951536}else j=d;else j=e*1.0514622242382672;d=j*.5257311121191336;g=j*.20081141588622725;i=j*.05020285397155681;c=.3141592653589793;f=0;while(1){if((f|0)>=10)break;h[a+(f<<4)>>3]=+E(+c)*d;h[a+(f<<4)+8>>3]=+F(+c)*d-i;m=c+.6283185307179586;l=f|1;h[a+(l<<4)>>3]=+E(+m)*g;h[a+(l<<4)+8>>3]=+F(+m)*g-i;c=c+1.2566370614359172;f=f+2|0}h[b>>3]=j;h[k>>3]=e;return}function Uy(a){a=a|0;a=c[(c[a+16>>2]|0)+12>>2]|0;if(a|0){_I(c[a+44>>2]|0);_I(a)}return}function Vy(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+80|0;k=o+40|0;g=o;n=o+64|0;h=o+56|0;if(!(a[e>>0]|0)){g=4144;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}else{i=(f|0)==0?91400:f;c[n>>2]=15;j=d+16|0;f=c[j>>2]|0;do if(a[(c[f+104>>2]|0)+82>>0]|0){f=HF(d,e,n)|0;if(!f){f=c[j>>2]|0;m=8;break}if(hz(d,f,g,i,c[n>>2]|0,0)|0){c[k>>2]=Dn(d)|0;c[k+4>>2]=e;c[k+8>>2]=i;_l(0,91402,k)|0}}else m=8;while(0);if((m|0)==8){if((c[(c[f+8>>2]|0)+8>>2]|0)==1600)h=0;else{c[h>>2]=d;c[h+4>>2]=0}if(hz(d,0,g,e,c[n>>2]|0,h)|0)iz(d,e)}c[g+36>>2]=0;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}l=o;return}function Wy(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0;r=l;l=l+112|0;n=r+96|0;m=r+80|0;p=r+64|0;k=r+48|0;q=r+32|0;o=r;f=r+16|0;if(!a){c[42331]=0;a=0}else{g=c[a+4>>2]|0;a=c[a>>2]|0;i=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];aw(f,n,i);c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];a:do if(g){d=+h[g+8>>3];e=+h[g+24>>3];s=+h[q>>3];if((+h[g>>3]<=s?s<=+h[g+16>>3]:0)?(j=+h[q+8>>3],d<=j):0)a=j<=e&1;else a=0}else{if((a|0)==(c[42331]|0)){f=c[42332]|0;g=c[42334]|0;i=c[42333]|0}else{g=c[(c[a+16>>2]|0)+12>>2]|0;c[42335]=g;i=c[g+44>>2]|0;c[42333]=i;f=c[g+8>>2]|0;c[42332]=f;g=O((c[g+4>>2]|0)+-1|0,f)|0;g=(g|0)>0?g:0;c[42334]=g;c[42331]=a}a=0;b=0;while(1){if((a|0)>=(f|0)){a=1;break a}t=i+(g+a<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=i+(g+((a+4|0)%(f|0)|0)<<4)|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[p>>2]=c[41802];c[p+4>>2]=c[41803];c[p+8>>2]=c[41804];c[p+12>>2]=c[41805];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];b=b+((gz(k,p,m,n)|0)==0&1)|0;if((b|0)==2){a=0;break}else a=a+2|0}}while(0)}l=r;return a|0}function Xy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;e=c[b+16>>2]|0;if((a[(c[e+104>>2]|0)+82>>0]|0)!=0?(a[e+145>>0]|0)!=0:0)b=KF(b,d,0,f,g)|0;else b=0;return b|0}function Yy(e,f){e=e|0;f=f|0;var i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0;P=l;l=l+48|0;H=P+24|0;G=P+16|0;A=P+8|0;z=P;L=P+32|0;n=P+28|0;M=c[e+16>>2]|0;N=M+208|0;i=c[N>>2]|0;if((i|0)==0?(b[M+260>>1]&1)==0:0)J=0;else E=4;if((E|0)==4)if(!(c[e+152>>2]&4)){wD(e,i,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);J=1}else J=1;I=f+16|0;i=c[I>>2]|0;r=c[i+12>>2]|0;F=c[r+44>>2]|0;K=c[r+8>>2]|0;r=c[r+4>>2]|0;if((c[42329]|0)<(K|0)){i=K+5|0;c[42329]=i;j=c[42330]|0;if(!j)i=ww(i<<4)|0;else i=yw(j,i<<4)|0;c[42330]=i;i=c[I>>2]|0}D=(c[i+104>>2]|0)+56|0;i=i+16|0;c[D>>2]=c[i>>2];c[D+4>>2]=c[i+4>>2];c[D+8>>2]=c[i+8>>2];c[D+12>>2]=c[i+12>>2];D=c[I>>2]|0;B=+h[D+32>>3]*72.0;B=(+h[D+96>>3]+ +h[D+88>>3])/+(~~(B+(B>=0.0?.5:-.5))|0);C=+h[D+40>>3]*72.0;C=+h[D+80>>3]/+(~~(C+(C>=0.0?.5:-.5))|0);D=Zy(e,f)|0;c[L>>2]=0;i=d[(c[I>>2]|0)+117>>0]|0;do if(!(i&1)){if(i&2|0){s=GA(f,0,91300)|0;BD(e,s);DD(e,GA(f,0,91308)|0);j=0;i=1;break}if(i&8|0){s=GA(f,0,91316)|0;BD(e,s);DD(e,GA(f,0,91324)|0);j=0;i=1;break}if(i&4|0){s=GA(f,0,91332)|0;BD(e,s);DD(e,GA(f,0,91340)|0);j=0;i=1;break}if(!(D&1))if(!(D&576)){j=0;i=0}else{j=_y(f)|0;i=1}else{j=_y(f)|0;if(!((xv(j,L,n)|0)<<24>>24)){DD(e,j);i=1}else{DD(e,c[L>>2]|0);i=c[L+4>>2]|0;m=DA(f,c[42217]|0,0,0)|0;k=+g[n>>2];if(!i)ED(e,122106,m,k);else ED(e,i,m,k);i=(D&2)>>>1|2}}s=$y(e,f)|0}else{s=GA(f,0,91284)|0;BD(e,s);DD(e,GA(f,0,91292)|0);j=0;i=1}while(0);m=c[(c[I>>2]|0)+8>>2]|0;if(a[m+12>>0]|0){m=c[m>>2]|0;if((a[m>>0]|0)==99){m=(xJ(m,90553)|0)==0;E=33}else u=1}else{m=1;E=33}if((E|0)==33){m=m^1;if((r|0)!=0|i<<24>>24==0|m)u=m;else{BD(e,122171);r=1;u=0}}v=(K|0)<3;w=(D&512|0)!=0;y=(D&8|0)==0;x=(D&64|0)==0;p=(D&1024|0)==0;q=(D&2130706444|0)==0;t=0;while(1){if((t|0)>=(r|0))break;n=O(t,K)|0;o=c[42330]|0;m=0;while(1){if((m|0)>=(K|0))break;R=m+n|0;k=+h[F+(R<<4)+8>>3];Q=c[I>>2]|0;h[o+(m<<4)>>3]=+h[Q+16>>3]+ +h[F+(R<<4)>>3]*B;h[o+(m<<4)+8>>3]=+h[Q+24>>3]+k*C;m=m+1|0}do if(v){if(w&(t|0)==0?(WJ(j,58)|0)!=0:0)if((_t(e,o,j)|0)>1){c[z>>2]=Dn(f)|0;_l(3,91348,z)|0;i=0}else i=0;GD(e,c[42330]|0,K,i&255);if(!y)az(e,f)}else{if(!x){if((t|0)==0?(cu(e,o,j,1)|0)>1:0){c[A>>2]=Dn(f)|0;_l(3,91348,A)|0}HD(e,c[42330]|0,K,0);break}if(!p){BD(e,122171);HD(e,c[42330]|0,K,i&255);BD(e,s);KD(e,(c[42330]|0)+32|0,2);break}i=i&255;if(q){HD(e,o,K,i);break}else{yy(e,o,K,D,i);break}}while(0);t=t+1|0;i=0}m=c[(c[I>>2]|0)+8>>2]|0;if(!(a[m+12>>0]|0)){m=Im(f,93847)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{m=c[m>>2]|0;if((a[m>>0]|0)==99?(xJ(m,90553)|0)==0:0){m=Im(f,90560)|0;if(m|0?a[m>>0]|0:0){o=m;E=65}}else{o=m;E=65}}if((E|0)==65){n=c[42330]|0;m=0;while(1){if((m|0)>=(K|0))break;k=+h[F+(m<<4)+8>>3];R=c[I>>2]|0;h[n+(m<<4)>>3]=+h[R+16>>3]+ +h[F+(m<<4)>>3]*B;h[n+(m<<4)+8>>3]=+h[R+24>>3]+k*C;m=m+1|0}m=i&255;do if(!(u|i<<24>>24==0)){if(v){if(w&(t|0)==0?(WJ(j,58)|0)!=0:0)if((_t(e,n,j)|0)>1){c[G>>2]=Dn(f)|0;_l(3,91348,G)|0;i=0}else i=0;GD(e,c[42330]|0,K,i&255);if(y)break;az(e,f);break}if(x)if(!(D&12)){HD(e,n,K,m);break}else{yy(e,n,K,D,m);break}else{if((cu(e,n,j,1)|0)>1){c[H>>2]=Dn(f)|0;_l(3,91348,H)|0}HD(e,c[42330]|0,K,0);break}}while(0);R=c[42330]|0;MD(e,o,R,K,i,FA(f,c[42210]|0,122100)|0)}_I(c[L>>2]|0);pw(e,10,c[(c[I>>2]|0)+104>>2]|0);if(J){if(c[e+152>>2]&4|0)wD(e,c[N>>2]|0,c[M+228>>2]|0,c[M+244>>2]|0,c[M+212>>2]|0);xD(e)}l=P;return}function Zy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;e=dz(d,f)|0;if(e|0)FD(b,e);e=c[42216]|0;if((e|0?(g=Jm(d,e)|0,g|0):0)?a[g>>0]|0:0)OD(b,+EA(d,c[42216]|0,1.0,0.0));l=h;return c[f>>2]|0}function _y(a){a=a|0;return cz(a,119592)|0}function $y(b,d){b=b|0;d=d|0;d=GA(d,c[42192]|0,174181)|0;d=a[d>>0]|0?d:122106;BD(b,d);return d|0}function az(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0;d=l;l=l+96|0;j=d+80|0;k=d+64|0;e=d+32|0;m=d+16|0;g=d;b=c[b+16>>2]|0;f=+h[b+80>>3];h[m+8>>3]=f*.375;i=+h[b+96>>3];h[m>>3]=i*.6614;b=b+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];bz(g,k,j);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=e+8|0;b=e+24|0;h[b>>3]=+h[g>>3];h[e+16>>3]=+h[e>>3]-i*1.3228;KD(a,e,2);f=+h[g>>3]-f*.75;h[g>>3]=f;h[b>>3]=f;KD(a,e,2);l=d;return}function bz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function cz(b,d){b=b|0;d=d|0;var e=0;e=GA(b,c[42193]|0,174181)|0;if(!(a[e>>0]|0)){e=GA(b,c[42192]|0,174181)|0;return ((a[e>>0]|0)==0?d:e)|0}else return e|0;return 0}function dz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=GA(b,c[42201]|0,174181)|0;a:do if(!(a[e>>0]|0)){g=0;e=0}else{g=Du(e)|0;h=g;e=0;b:while(1){f=c[h>>2]|0;if(!f)break a;switch(a[f>>0]|0){case 102:{if(!(xJ(f,95923)|0)){h=h+4|0;e=e|1;continue b}break}case 114:{if(!(xJ(f,91360)|0)){f=h;do{j=f;f=f+4|0;i=c[f>>2]|0;c[j>>2]=i}while((i|0)!=0);j=h;e=e|4;h=j;continue b}if(!(xJ(f,91378)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|3;h=j;continue b}break}case 100:{if(!(xJ(f,91368)|0)){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|8;h=j;continue b}break}case 105:{if(!(xJ(f,119127)|0)){h=h+4|0;e=e|32;continue b}break}case 115:{if((xJ(f,91385)|0)==0?ez(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|64;h=j;continue b}break}case 119:{if((xJ(f,91393)|0)==0?fz(b)|0:0){f=h;do{i=f;f=f+4|0;j=c[f>>2]|0;c[i>>2]=j}while((j|0)!=0);j=h;e=e|512;h=j;continue b}break}default:{}}h=h+4|0}}while(0);f=c[(c[(c[b+16>>2]|0)+8>>2]|0)+8>>2]|0;if(f)e=c[f+40>>2]|e;c[d>>2]=e;return g|0}function ez(a){a=a|0;var b=0.0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if((((a|0)!=0?(c[a+8>>2]|0)==4:0)?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function fz(a){a=a|0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[a+8>>2]|0)<3&1;return a|0}function gz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;i=+h[c+8>>3];g=-(+h[d+8>>3]-i);f=+h[c>>3];e=+h[d>>3]-f;f=e*i+f*g;return (+h[a+8>>3]*e+ +h[a>>3]*g-f>=0.0^+h[b>>3]*g-f+ +h[b+8>>3]*e>=0.0^1)&1|0}function hz(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;G=l;l=l+192|0;B=G+176|0;E=G+160|0;m=G+144|0;z=G+128|0;A=G+112|0;n=G+96|0;o=G+80|0;p=G+64|0;v=G+48|0;w=G+32|0;x=G+16|0;D=G;if(!d){c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;m=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;C=c[b+16>>2]|0;q=+h[C+80>>3]*.5;j=+h[C+88>>3];t=m?q:j;q=m?j:q;m=0;C=E;j=0.0;k=-q;r=t;F=E+8|0;s=0.0;t=-t}else{k=+h[d>>3];t=+h[d+8>>3];q=+h[d+16>>3];r=+h[d+24>>3];Iy(m,(q+k)*.5,(r+t)*.5);c[E>>2]=c[m>>2];c[E+4>>2]=c[m+4>>2];c[E+8>>2]=c[m+8>>2];c[E+12>>2]=c[m+12>>2];H=E+8|0;m=1;C=E;j=+h[E>>3];F=H;s=+h[H>>3]}u=(q>r?q:r)*4.0;a:do if((f|0)!=0?(y=a[f>>0]|0,y<<24>>24!=0):0){f=f+1|0;switch(y<<24>>24|0){case 99:{p=1;g=0;f=0;n=0;j=0.0;o=0;break a}case 101:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=q;else{jz(z,i,s,u);c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2]}p=0;g=g&2;f=0;n=1;j=0.0;o=0;m=1;break a}case 115:{h[F>>3]=t;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{jz(A,i,-u,j);c[E>>2]=c[A>>2];c[E+4>>2]=c[A+4>>2];c[E+8>>2]=c[A+8>>2];c[E+12>>2]=c[A+12>>2]}p=0;g=g&1;f=0;n=1;j=-1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{jz(n,i,-u,u);c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2]}p=0;g=g&3;f=0;n=1;j=-.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{u=-u;jz(o,i,u,u);c[E>>2]=c[o>>2];c[E+4>>2]=c[o+4>>2];c[E+8>>2]=c[o+8>>2];c[E+12>>2]=c[o+12>>2]}p=0;g=g&9;f=0;n=1;j=-2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 119:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(!i)h[C>>3]=k;else{jz(p,i,s,-u);c[E>>2]=c[p>>2];c[E+4>>2]=c[p+4>>2];c[E+8>>2]=c[p+8>>2];c[E+12>>2]=c[p+12>>2]}p=0;g=g&8;f=0;n=1;j=3.141592653589793;o=0;m=1;break a}case 110:{h[F>>3]=r;switch(a[f>>0]|0){case 0:{if(!i)h[C>>3]=j;else{jz(v,i,u,j);c[E>>2]=c[v>>2];c[E+4>>2]=c[v+4>>2];c[E+8>>2]=c[v+8>>2];c[E+12>>2]=c[v+12>>2]}p=0;g=g&4;f=0;n=1;j=1.5707963267948966;o=0;m=1;break a}case 101:{if(!i)h[C>>3]=q;else{jz(w,i,u,u);c[E>>2]=c[w>>2];c[E+4>>2]=c[w+4>>2];c[E+8>>2]=c[w+8>>2];c[E+12>>2]=c[w+12>>2]}p=0;g=g&6;f=0;n=1;j=.7853981633974483;o=0;m=1;break a}case 119:{if(!i)h[C>>3]=k;else{jz(x,i,u,-u);c[E>>2]=c[x>>2];c[E+4>>2]=c[x+4>>2];c[E+8>>2]=c[x+8>>2];c[E+12>>2]=c[x+12>>2]}p=0;g=g&12;f=0;n=1;j=2.356194490192345;o=0;m=1;break a}default:{h[F>>3]=s;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 95:{p=1;f=1;n=0;j=0.0;o=0;break a}default:{p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}else{p=1;g=0;f=0;n=0;j=0.0;o=0}while(0);H=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3)*90|0;c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];$v(D,B,H);c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2];if(!(f<<24>>24))g=kz(g,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3)|0;a[e+33>>0]=g;c[e+24>>2]=d;k=+h[C>>3];h[e>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);k=+h[F>>3];h[e+8>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);h[e+16>>3]=+lz(j,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3);k=+h[C>>3];j=+h[F>>3];if(k==0.0&j==0.0)g=-128;else{u=+K(+j,+k);t=u+4.71238898038469;g=~~((!(t>=6.283185307179586)?t:u+-1.5707963267948966)*40.74366543152521)&255}a[e+32>>0]=g;a[e+29>>0]=n;a[e+28>>0]=m;a[e+30>>0]=p;a[e+31>>0]=f;l=G;return o|0}function iz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=Dn(a)|0;c[e+4>>2]=b;_l(0,91463,e)|0;l=d;return}function jz(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+128|0;g=p+112|0;j=p+48|0;k=p+16|0;m=p+32|0;n=p;o=c[b>>2]|0;i=c[(c[(ro(o)|0)+16>>2]|0)+116>>2]&3;h[k>>3]=e;h[k+8>>3]=d;f=(i|0)!=0;if(f){c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];$v(m,g,i*90|0);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2]}m=j+48|0;q=j+32|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];Fz(b,c[(c[(c[(c[o+16>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0,j,1);if(f){c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];aw(n,g,i*90|0);c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2]};c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=p;return}function kz(a,b){a=a|0;b=b|0;a:do switch(b|0){case 3:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=1;break a}case 2:{a=4;break a}default:break a}case 2:switch(a|0){case 4:{a=1;break a}case 1:{a=4;break a}default:break a}case 1:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=4;break a}case 2:{a=1;break a}default:break a}default:{}}while(0);return a|0}function lz(a,b){a=+a;b=b|0;switch(b|0){case 3:{if(!(a==3.141592653589793))if(!(a==2.356194490192345))if(!(a==1.5707963267948966))if(!(a==0.0))if(!(a==-.7853981633974483)){if(a==-1.5707963267948966)a=3.141592653589793}else a=2.356194490192345;else a=1.5707963267948966;else a=0.0;else a=-.7853981633974483;else a=-1.5707963267948966;break}case 2:{a=-a;break}case 1:{a=a+-1.5707963267948966;break}default:{}}return +a}function mz(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;e=l;l=l+32|0;k=e+16|0;i=e;a=c[a>>2]|0;j=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];aw(i,k,j);d=+h[i>>3];g=+h[i+8>>3];a=c[a+16>>2]|0;f=+h[a+80>>3]*.5;if(!(!(g>=-f)|!(g<=f))?d>=-+h[a+88>>3]:0)a=d<=+h[a+96>>3]&1;else a=0;l=e;return a|0}function nz(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+32|0;m=n;i=c[a+16>>2]|0;j=i+208|0;g=c[j>>2]|0;if(!g)k=(b[i+260>>1]&1)!=0;else k=1;e=d+16|0;d=c[e>>2]|0;f=c[d+12>>2]|0;if(f|0){if(k?(c[a+152>>2]&4|0)==0:0){wD(a,g,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);d=c[e>>2]|0}g=c[a+36>>2]|0;p=+h[d+24>>3]+ +(c[f+8>>2]|0);o=c[f>>2]|0;h[m>>3]=+h[d+16>>3]+ +(c[f+4>>2]|0);h[m+8>>3]=p;c[m+16>>2]=o;zL(g,91494,m)|0;g=c[e>>2]|0;m=(c[g+104>>2]|0)+56|0;g=g+16|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];pw(a,10,c[(c[e>>2]|0)+104>>2]|0);if(k){if(c[a+152>>2]&4|0)wD(a,c[j>>2]|0,c[i+228>>2]|0,c[i+244>>2]|0,c[i+212>>2]|0);xD(a)}}l=n;return}function oz(a){a=a|0;Ly(c[(c[a+16>>2]|0)+12>>2]|0);return}function pz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;k=m+40|0;h=m;if(!(a[f>>0]|0)){h=4144;g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}else{g=(g|0)==0?91400:g;i=c[(c[e+16>>2]|0)+12>>2]|0;j=vz(i,f)|0;if(!j){if(hz(e,i+16|0,h,f,15,0)|0)iz(e,f)}else if(hz(e,j+16|0,h,g,d[j+65>>0]|0,0)|0){c[k>>2]=Dn(e)|0;c[k+4>>2]=f;c[k+8>>2]=g;_l(0,91402,k)|0}g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}l=m;return}function qz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0.0;k=l;l=l+32|0;m=k+16|0;i=k;f=c[a+4>>2]|0;a=c[a>>2]|0;g=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];aw(i,m,g);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];if(!f){f=c[(c[a+16>>2]|0)+12>>2]|0;g=f+16|0;a=f+24|0;i=f+32|0;f=f+40|0}else{g=f;a=f+8|0;i=f+16|0;f=f+24|0}e=+h[a>>3];d=+h[f>>3];n=+h[b>>3];if((+h[g>>3]<=n?n<=+h[i>>3]:0)?(j=+h[b+8>>3],e<=j):0)a=j<=d&1;else a=0;l=k;return a|0}function rz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0;u=l;l=l+80|0;r=u+64|0;q=u+32|0;t=u;a:do if(!(a[d+28>>0]|0))e=0;else{i=+h[d>>3];p=b+16|0;m=c[(c[p>>2]|0)+12>>2]|0;k=m+48|0;m=m+56|0;d=0;while(1){if((d|0)>=(c[k>>2]|0))break a;n=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[(c[m>>2]|0)+(d<<2)>>2]|0;j=+(~~+h[(n?o+16|0:o+24|0)>>3]|0);if(i>=j?(s=+(~~+h[(n?o+32|0:o+40|0)>>3]|0),i<=s):0)break;d=d+1|0}if(!(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1)){t=c[p>>2]|0;v=+h[t+16>>3];h[f>>3]=v+j;j=+h[t+24>>3];i=+h[t+80>>3];h[f+8>>3]=j-i*.5;h[f+16>>3]=v+s}else{o=(c[(c[m>>2]|0)+(d<<2)>>2]|0)+16|0;b=(c[p>>2]|0)+16|0;c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[q+28>>2]=c[o+28>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];bw(t,q,r);c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];c[f+16>>2]=c[t+16>>2];c[f+20>>2]=c[t+20>>2];c[f+24>>2]=c[t+24>>2];c[f+28>>2]=c[t+28>>2];t=c[p>>2]|0;i=+h[t+80>>3];j=+h[t+24>>3]}h[f+24>>3]=i*.5+j;c[g>>2]=1}while(0);l=u;return e|0}function sz(d,e){d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;w=l;l=l+144|0;n=w+96|0;p=w+64|0;r=w;s=w+128|0;t=c[d+16>>2]|0;u=t+208|0;f=c[u>>2]|0;if(!f)v=(b[t+260>>1]&1)!=0;else v=1;m=e+16|0;q=c[m>>2]|0;o=c[q+12>>2]|0;j=o+16|0;c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];c[p+16>>2]=c[j+16>>2];c[p+20>>2]=c[j+20>>2];c[p+24>>2]=c[j+24>>2];c[p+28>>2]=c[j+28>>2];x=+h[q+16>>3];h[p>>3]=+h[p>>3]+x;k=+h[q+24>>3];q=p+8|0;h[q>>3]=+h[q>>3]+k;q=p+16|0;h[q>>3]=+h[q>>3]+x;j=p+24|0;h[j>>3]=+h[j>>3]+k;if(v?(c[d+152>>2]&4|0)==0:0)wD(d,f,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);f=Zy(d,e)|0;$y(d,e)|0;c[s>>2]=0;if(!(f&1))i=0;else{i=_y(e)|0;if(!((xv(i,s,n)|0)<<24>>24)){DD(d,i);i=1}else{DD(d,c[s>>2]|0);i=c[s+4>>2]|0;j=DA(e,c[42217]|0,0,0)|0;k=+g[n>>2];if(!i)ED(d,122106,j,k);else ED(d,i,j,k);i=f>>>1&1|2}}j=c[c[(c[m>>2]|0)+8>>2]>>2]|0;if((a[j>>0]|0)==77){m=(xJ(j,91271)|0)==0;f=m?f|4:f}if(!(f&2130706444)){c[n>>2]=c[p>>2];c[n+4>>2]=c[p+4>>2];c[n+8>>2]=c[p+8>>2];c[n+12>>2]=c[p+12>>2];c[n+16>>2]=c[p+16>>2];c[n+20>>2]=c[p+20>>2];c[n+24>>2]=c[p+24>>2];c[n+28>>2]=c[p+28>>2];ID(d,n,i)}else{c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=r+32|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[r+16>>3]=+h[p>>3];h[r+24>>3]=+h[r+8>>3];h[r+48>>3]=+h[r>>3];h[r+56>>3]=+h[r+40>>3];yy(d,r,4,f,i)}tz(d,e,o);_I(c[s>>2]|0);if(v){if(c[d+152>>2]&4|0)wD(d,c[u>>2]|0,c[t+228>>2]|0,c[t+244>>2]|0,c[t+212>>2]|0);xD(d)}l=w;return}function tz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+144|0;p=u+128|0;o=u+112|0;q=u+16|0;r=u;g=u+96|0;i=u+80|0;s=u+64|0;t=u+48|0;j=e+52|0;f=c[j>>2]|0;if(!f)f=d+16|0;else{n=f+56|0;m=e+16|0;f=e+32|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];uz(g,o,p);f=d+16|0;m=(c[f>>2]|0)+16|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];bz(i,o,p);c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];pw(b,10,c[j>>2]|0);$y(b,d)|0}k=(c[f>>2]|0)+16|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=e+48|0;m=e+64|0;n=q+16|0;j=e+56|0;e=q+16|0;i=0;while(1){if((i|0)>=(c[k>>2]|0))break;if((i|0)>0){f=(c[j>>2]|0)+(i<<2)|0;g=c[f>>2]|0;if(!(a[m>>0]|0)){g=g+32|0;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];h[q>>3]=+h[(c[f>>2]|0)+16>>3];f=n;g=0}else{g=g+16|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];h[e>>3]=+h[q>>3];f=(c[f>>2]|0)+32|0;g=1}h[q+(g<<4)+8>>3]=+h[f+8>>3];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];bz(s,o,p);c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];bz(t,o,p);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];KD(b,q,2)}tz(b,d,c[(c[j>>2]|0)+(i<<2)>>2]|0);i=i+1|0}l=u;return}function uz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function vz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+60>>2]|0;if(!(((e|0)!=0?(a[e>>0]|0)==(a[d>>0]|0):0)?(xJ(e,d)|0)==0:0))f=4;a:do if((f|0)==4){g=b+56|0;f=c[b+48>>2]|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break a}b=vz(c[(c[g>>2]|0)+(e<<2)>>2]|0,d)|0;if(!b)e=e+1|0;else break}}while(0);return b|0}function wz(a,b){a=a|0;b=b|0;var d=0;d=b+8|0;h[d>>3]=+h[d>>3]*1.375;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function xz(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;k=+h[b>>3];f=k*.5;m=+h[b+8>>3];i=m*.5;h[a>>3]=f;e=m*.40909090909090906;h[a+8>>3]=e;h[a+16>>3]=f;g=m*.4592530909090909;h[a+24>>3]=g;j=k*.275892;h[a+32>>3]=j;h[a+40>>3]=i;h[a+48>>3]=0.0;h[a+56>>3]=i;k=k*-.275892;h[a+64>>3]=k;h[a+72>>3]=i;l=-f;h[a+80>>3]=l;h[a+88>>3]=g;d=a+96|0;h[d>>3]=l;h[a+104>>3]=e;b=a+112|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+128|0;h[b>>3]=l;h[a+136>>3]=m*-.40909090909090906;d=a+144|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[a+160>>3]=l;g=-g;h[a+168>>3]=g;h[a+176>>3]=k;i=-i;h[a+184>>3]=i;h[a+192>>3]=0.0;h[a+200>>3]=i;h[a+208>>3]=j;h[a+216>>3]=i;h[a+224>>3]=f;h[a+232>>3]=g;d=a+240|0;h[d>>3]=f;h[a+248>>3]=-e;b=a+256|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+288|0;d=a+272|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];return}function yz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+144|0;u=x+112|0;t=x+96|0;v=x+80|0;s=x+64|0;w=x+32|0;q=x+16|0;r=x;g=x+48|0;do if(a){j=c[a+4>>2]|0;k=c[a>>2]|0;o=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&3)*90|0;c[u>>2]=c[b>>2];c[u+4>>2]=c[b+4>>2];c[u+8>>2]=c[b+8>>2];c[u+12>>2]=c[b+12>>2];aw(g,u,o);c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];if(j|0){d=+h[w>>3];if(!(+h[j>>3]<=d)){a=0;break}if(!(d<=+h[j+16>>3])){a=0;break}d=+h[w+8>>3];if(!(+h[j+8>>3]<=d)){a=0;break}a=d<=+h[j+24>>3];break}if((k|0)==(c[42336]|0)){d=+h[20903];e=+h[20904];i=+h[20905]}else{a=k+16|0;b=c[(c[a>>2]|0)+12>>2]|0;c[42337]=b;c[42338]=c[b+44>>2];c[42339]=c[b+8>>2];if(!(c[b+40>>2]&2048)){n=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[a>>2]|0;h[(n?167248:167256)>>3]=+h[o+96>>3]+ +h[o+88>>3];h[(n?167256:167248)>>3]=+h[o+80>>3];i=+h[o+32>>3]*72.0;f=+h[o+40>>3]*72.0;f=+(~~(f+(f>=0.0?.5:-.5))|0);i=+(~~(i+(i>=0.0?.5:-.5))|0)}else{aB(u,b);i=+h[u+16>>3]-+h[u>>3];f=+h[u+24>>3]-+h[u+8>>3];o=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&1|0)==0;h[(o?167248:167256)>>3]=i;h[(o?167256:167248)>>3]=f}d=+h[20906];if(d==0.0){h[20906]=1.0;d=1.0}e=+h[20907];if(e==0.0){h[20907]=1.0;e=1.0}d=i/d;h[20903]=d;e=f/e;h[20904]=e;i=i*.5;h[20905]=i;h[20908]=f*.5;o=O((c[(c[42337]|0)+4>>2]|0)+-1|0,c[42339]|0)|0;c[42340]=(o|0)>0?o:0;c[42336]=k}f=+h[w>>3]*d;h[w>>3]=f;o=w+8|0;d=+h[o>>3]*e;h[o>>3]=d;if(!(+B(+f)>i)?(e=+B(+d),p=+h[20908],!(e>p)):0){o=c[42339]|0;if((o|0)<3){a=+QJ(f/i,d/p)<1.0;break}b=(c[42341]|0)%(o|0)|0;a=(b+1|0)%(o|0)|0;k=c[42338]|0;m=c[42340]|0;n=k+(m+b<<4)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];n=k+(m+a<<4)|0;c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[41818];c[v+4>>2]=c[41819];c[v+8>>2]=c[41820];c[v+12>>2]=c[41821];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];if(gz(s,v,t,u)|0){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[q>>2];c[v+4>>2]=c[q+4>>2];c[v+8>>2]=c[q+8>>2];c[v+12>>2]=c[q+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[u>>2]=c[41818];c[u+4>>2]=c[41819];c[u+8>>2]=c[41820];c[u+12>>2]=c[41821];n=(gz(s,v,t,u)|0)!=0;if(n?(c[s>>2]=c[w>>2],c[s+4>>2]=c[w+4>>2],c[s+8>>2]=c[w+8>>2],c[s+12>>2]=c[w+12>>2],c[v>>2]=c[r>>2],c[v+4>>2]=c[r+4>>2],c[v+8>>2]=c[r+8>>2],c[v+12>>2]=c[r+12>>2],c[t>>2]=c[41818],c[t+4>>2]=c[41819],c[t+8>>2]=c[41820],c[t+12>>2]=c[41821],c[u>>2]=c[q>>2],c[u+4>>2]=c[q+4>>2],c[u+8>>2]=c[q+8>>2],c[u+12>>2]=c[q+12>>2],(gz(s,v,t,u)|0)!=0):0){a=1;break}else{j=b;b=1}while(1){if((b|0)>=(o|0)){b=31;break}if(n){g=a;a=(a+1|0)%(o|0)|0}else{g=(j+-1+o|0)%(o|0)|0;a=j}q=k+(m+g<<4)|0;r=k+(m+a<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[v>>2]=c[41818];c[v+4>>2]=c[41819];c[v+8>>2]=c[41820];c[v+12>>2]=c[41821];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];if(!(gz(s,v,t,u)|0)){b=30;break}else{j=g;b=b+1|0}}if((b|0)==30){c[42341]=g;a=0;break}else if((b|0)==31){c[42341]=j;a=1;break}}else a=0}else a=0}else{c[42336]=0;a=0}while(0);l=x;return a&1|0}function zz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;j=l;l=l+32|0;f=j+16|0;i=j;if(a){a=c[a>>2]|0;k=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];aw(i,f,k);g=+h[i>>3];e=+h[i+8>>3];if((a|0)==(c[42344]|0))d=+h[20911];else{i=c[(c[a+16>>2]|0)+12>>2]|0;k=(c[i+4>>2]<<1)+-2|0;d=+h[(c[i+44>>2]|0)+((((k|0)>0?k:0)|1)<<4)>>3];h[20911]=d;c[42344]=a}if(+B(+g)>d|+B(+e)>d)a=0;else a=+QJ(g,e)<=d&1}else{c[42344]=0;a=0}l=j;return a|0}function Az(e,f){e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0;t=l;l=l+16|0;j=t;r=c[e+16>>2]|0;s=r+208|0;g=c[s>>2]|0;if((g|0)==0?(b[r+260>>1]&1)==0:0)q=0;else if(!(c[e+152>>2]&4)){wD(e,g,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);q=1}else q=1;n=f+16|0;k=c[(c[n>>2]|0)+12>>2]|0;o=c[k+44>>2]|0;p=c[k+8>>2]|0;k=c[k+4>>2]|0;if((c[42342]|0)<(p|0)){g=p+2|0;c[42342]=g;i=c[42343]|0;if(!i)g=ww(g<<4)|0;else g=yw(i,g<<4)|0;c[42343]=g}dz(f,j)|0;if(!(c[j>>2]&32))FD(e,21040);else FD(e,21036);g=c[42216]|0;if(g|0)OD(e,+EA(f,g,1.0,0.0));g=d[(c[n>>2]|0)+117>>0]|0;do if(!(g&1)){if(g&2|0){BD(e,GA(f,0,91300)|0);g=GA(f,0,91308)|0;DD(e,g);break}if(g&8|0){BD(e,GA(f,0,91316)|0);g=GA(f,0,91324)|0;DD(e,g);break}if(!(g&4)){g=cz(f,122106)|0;DD(e,g);$y(e,f)|0;break}else{BD(e,GA(f,0,91332)|0);g=GA(f,0,91340)|0;DD(e,g);break}}else{BD(e,GA(f,0,91284)|0);g=GA(f,0,91292)|0;DD(e,g)}while(0);if(!k)if(!(a[g>>0]|0))i=1;else{BD(e,g);i=1}else i=k;j=1;f=0;while(1){if((f|0)>=(i|0))break;k=O(f,p)|0;m=c[42343]|0;g=0;while(1){if((g|0)>=(p|0))break;w=g+k|0;u=+h[o+(w<<4)+8>>3];v=c[n>>2]|0;h[m+(g<<4)>>3]=+h[v+16>>3]+ +h[o+(w<<4)>>3];h[m+(g<<4)+8>>3]=+h[v+24>>3]+u;g=g+1|0}GD(e,m,p,j);j=0;f=f+1|0}if(q){if(c[e+152>>2]&4|0)wD(e,c[s>>2]|0,c[r+228>>2]|0,c[r+244>>2]|0,c[r+212>>2]|0);xD(e)}l=t;return}function Bz(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=l;l=l+48|0;h=g;e=Cz(b,e,f)|0;c[h+36>>2]=c[f+36>>2];hz(b,c[f+24>>2]|0,h,e,d[f+33>>0]|0,0)|0;b=h;e=a+40|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=g;return}function Cz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0;z=l;l=l+32|0;y=z;g=z+24|0;k=z+16|0;x=c[(c[(c[(ro(b)|0)+60>>2]|0)+16>>2]|0)+116>>2]&3;f=b+16|0;w=(c[f>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];Dz(g,y,x);w=(c[d+16>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];Dz(k,y,x);x=a[e+33>>0]|0;y=x&255;a:do switch(x<<24>>24){case 0:case 15:{d=0;break}default:{d=c[e+24>>2]|0;if(!d){x=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;w=c[f>>2]|0;B=+h[w+80>>3]*.5;A=-B;m=+h[w+88>>3];j=-m;n=x?j:A;i=x?m:B;m=x?B:m;j=x?A:j}else{n=+h[d>>3];i=+h[d+16>>3];m=+h[d+24>>3];j=+h[d+8>>3]}x=c[g>>2]|0;v=c[g+4>>2]|0;w=c[k>>2]|0;s=c[k+4>>2]|0;t=~~j;u=~~((i+n)*.5);r=~~i;q=~~((m+j)*.5);p=~~m;o=~~n;g=0;k=0;d=0;e=0;b=0;while(1){if((k|0)==4)break a;if(1<<k&y){switch(k|0){case 0:{e=u;b=t;break}case 1:{e=r;b=q;break}case 2:{e=u;b=p;break}case 3:{e=o;b=q;break}default:{}}e=x+e|0;b=v+b|0;f=e-w|0;C=b-s|0;f=(O(C,C)|0)+(O(f,f)|0)|0;if((d|0)==0|(f|0)<(g|0))d=c[21048+(k<<2)>>2]|0;else f=g}else f=g;g=f;k=k+1|0}}}while(0);l=z;return d|0}function Dz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;switch(d|0){case 0:{f=+h[b>>3];e=+h[b+8>>3];break}case 2:{f=+h[b>>3];e=-+h[b+8>>3];break}case 1:{f=-+h[b+8>>3];e=+h[b>>3];break}case 3:{f=+h[b+8>>3];e=+h[b>>3];break}default:{f=0.0;e=0.0}}c[a>>2]=~~(f+(f>=0.0?.5:-.5));c[a+4>>2]=~~(e+(e>=0.0?.5:-.5));return}function Ez(){var a=0,b=0,d=0;a=l;l=l+32|0;b=a+16|0;d=a;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];yz(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];zz(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];Wy(0,b)|0;l=a;return}function Fz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=l;l=l+192|0;s=z+176|0;x=z+112|0;y=z+48|0;t=z+32|0;u=z+24|0;v=z+16|0;w=z;if(!(e<<24>>24)){k=d+48|0;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];k=u;m=v;n=x;o=0}else{c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2];k=v;m=u;n=0;o=x}h[u>>3]=0.0;h[v>>3]=1.0;q=t+8|0;f=0.0;g=1.0;j=0;p=+h[t>>3];while(1){r=+h[q>>3];f=(f+g)*.5;PA(w,d,3,f,n,o);c[t>>2]=c[w>>2];c[t+4>>2]=c[w+4>>2];c[t+8>>2]=c[w+8>>2];c[t+12>>2]=c[w+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];a:do if(!((ab[b&63](a,s)|0)<<24>>24)){e=0;while(1){if((e|0)==4){e=k;j=1;break a}j=y+(e<<4)|0;A=x+(e<<4)|0;c[j>>2]=c[A>>2];c[j+4>>2]=c[A+4>>2];c[j+8>>2]=c[A+8>>2];c[j+12>>2]=c[A+12>>2];e=e+1|0}}else e=m;while(0);h[e>>3]=f;i=+h[t>>3];p=p-i;if(!((p>=0.0?p:-p)>.5)?(r=r-+h[q>>3],!((r>=0.0?r:-r)>.5)):0)break;f=+h[u>>3];g=+h[v>>3];p=i}b:do if(!(j<<24>>24)){e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;y=x+(e<<4)|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];e=e+1|0}}else{e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;x=y+(e<<4)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];e=e+1|0}}while(0);l=z;return}function Gz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;d=m+16|0;e=m;f=m+32|0;g=a+16|0;i=c[g>>2]|0;j=c[i+8>>2]|0;if(j|0?(k=j+4|0,c[(c[k>>2]|0)+12>>2]|0):0){c[f>>2]=a;c[f+4>>2]=0;n=+h[i+96>>3];h[e>>3]=+h[b>>3]-+h[i+16>>3];h[e+8>>3]=+h[b+8>>3]-+h[i+24>>3];k=c[(c[k>>2]|0)+12>>2]|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];k=ab[k&63](f,d)|0;h[(c[g>>2]|0)+96>>3]=n;Hz(f,a,b,k)}l=m;return}function Hz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+64|0;m=n;j=b+16|0;g=c[j>>2]|0;k=+h[g+96>>3];i=g+16|0;f=g+24|0;b=0;while(1){if((b|0)==4)break;h[m+(b<<4)>>3]=+h[d+(b<<4)>>3]-+h[i>>3];h[m+(b<<4)+8>>3]=+h[d+(b<<4)+8>>3]-+h[f>>3];b=b+1|0}Fz(a,c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0,m,e);b=0;while(1){if((b|0)==4)break;e=c[j>>2]|0;h[d+(b<<4)>>3]=+h[e+16>>3]+ +h[m+(b<<4)>>3];h[d+(b<<4)+8>>3]=+h[e+24>>3]+ +h[m+(b<<4)+8>>3];b=b+1|0}h[(c[j>>2]|0)+96>>3]=k;l=n;return}function Iz(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=b+16|0;b=c[f>>2]|0;if(!(a[b+112>>0]|0))break;b=c[b+116>>2]|0}b=c[b+8>>2]|0;if(!b){b=vw(40)|0;c[(c[f>>2]|0)+8>>2]=b}e=c[b>>2]|0;if(!e)b=ww(((c[b+4>>2]|0)*48|0)+48|0)|0;else b=yw(e,((c[b+4>>2]|0)*48|0)+48|0)|0;f=c[(c[f>>2]|0)+8>>2]|0;c[f>>2]=b;f=f+4|0;e=c[f>>2]|0;c[f>>2]=e+1;f=b+(e*48|0)|0;c[f>>2]=vw(d<<4)|0;c[b+(e*48|0)+4>>2]=d;b=b+(e*48|0)+8|0;e=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));return f|0}function Jz(b,e,f,g,i){b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0;D=l;l=l+96|0;A=D+16|0;u=D;x=D+92|0;y=D+88|0;v=D+80|0;m=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;z=ro(m)|0;B=Iz(b,g)|0;n=b;while(1){o=c[n+16>>2]|0;if(!(a[o+112>>0]|0))break;n=c[o+116>>2]|0}if((a[i+8>>0]|0)==0?(j=c[m+16>>2]|0,k=c[e+16>>2]|0,(c[j+232>>2]|0)==(c[k+232>>2]|0)):0){p=(c[j+236>>2]|0)>(c[k+236>>2]|0);w=p?m:e;m=p?e:m}else w=e;if((m|0)==(c[((c[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0)){j=o+80|0;k=o+40|0;p=d[o+86>>0]|0;e=d[o+46>>0]|0}else{j=o+40|0;k=o+80|0;p=d[o+46>>0]|0;e=d[o+86>>0]|0}o=c[j>>2]|0;j=c[k>>2]|0;if(((e|0)!=0?(r=m+16|0,q=c[(c[r>>2]|0)+8>>2]|0,(q|0)!=0):0)?(c[(c[q+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=m;c[v+4>>2]=j;j=g+-4|0;e=u+8|0;k=0;while(1){if((k|0)>=(j|0))break;n=k+3|0;q=c[r>>2]|0;h[u>>3]=+h[f+(n<<4)>>3]-+h[q+16>>3];h[e>>3]=+h[f+(n<<4)+8>>3]-+h[q+24>>3];q=c[(c[(c[q+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((ab[q&63](v,A)|0)<<24>>24))break;else k=n}c[x>>2]=k;Hz(v,m,f+(k<<4)|0,1)}else{c[x>>2]=0;k=0}if(((p|0)!=0?(t=w+16|0,s=c[(c[t>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[(c[s+4>>2]|0)+12>>2]|0)!=0:0){c[v>>2]=w;c[v+4>>2]=o;m=g+-4|0;e=u+8|0;j=m;while(1){if((j|0)<=0)break;g=c[t>>2]|0;h[u>>3]=+h[f+(j<<4)>>3]-+h[g+16>>3];h[e>>3]=+h[f+(j<<4)+8>>3]-+h[g+24>>3];g=c[(c[(c[g+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2];if(!((ab[g&63](v,A)|0)<<24>>24))break;j=j+-3|0}c[y>>2]=j;Hz(v,w,f+(j<<4)|0,0)}else{m=g+-4|0;c[y>>2]=m;j=m}while(1){if((k|0)>=(m|0))break;e=k+3|0;E=+h[f+(k<<4)>>3]-+h[f+(e<<4)>>3];F=+h[f+(k<<4)+8>>3]-+h[f+(e<<4)+8>>3];if(F*F+E*E<1.0e-06)k=e;else break}c[x>>2]=k;while(1){if((j|0)<=0)break;v=j+3|0;F=+h[f+(j<<4)>>3]-+h[f+(v<<4)>>3];E=+h[f+(j<<4)+8>>3]-+h[f+(v<<4)+8>>3];if(!(E*E+F*F<1.0e-06))break;j=j+-3|0}c[y>>2]=j;Kz(b,w,f,x,y,B,i);r=c[x>>2]|0;n=c[y>>2]|0;m=n+4|0;n=n+3|0;o=A+16|0;p=A+32|0;q=A+48|0;k=z+16|0;j=r;while(1){if((j|0)>=(m|0))break;z=(c[B>>2]|0)+(j-r<<4)|0;e=f+(j<<4)|0;c[z>>2]=c[e>>2];c[z+4>>2]=c[e+4>>2];c[z+8>>2]=c[e+8>>2];c[z+12>>2]=c[e+12>>2];c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];e=j+1|0;if((j|0)>=(n|0)){C=38;break}y=(c[B>>2]|0)+(e-r<<4)|0;z=f+(e<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[o>>2]=c[z>>2];c[o+4>>2]=c[z+4>>2];c[o+8>>2]=c[z+8>>2];c[o+12>>2]=c[z+12>>2];z=j+2|0;y=(c[B>>2]|0)+(z-r<<4)|0;z=f+(z<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[p>>2]=c[z>>2];c[p+4>>2]=c[z+4>>2];c[p+8>>2]=c[z+8>>2];c[p+12>>2]=c[z+12>>2];z=j+3|0;y=f+(z<<4)|0;c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];eu((c[k>>2]|0)+16|0,A);j=z}c[B+4>>2]=m-r;l=D;return}function Kz(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+4|0;n=p;o=b;while(1){j=c[(c[o+16>>2]|0)+116>>2]|0;if(!j)break;else o=j}if(!(a[i+8>>0]|0))j=($a[c[i>>2]&31](o)|0)&255;else j=0;At(o,m,n);k=i+4|0;if(($a[c[k>>2]&31](d)|0)<<24>>24)c[n>>2]=0;if(($a[c[k>>2]&31](c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)<<24>>24)c[m>>2]=0;if(j|0){d=c[m>>2]|0;c[m>>2]=c[n>>2];c[n>>2]=d}if(!(a[i+9>>0]|0)){j=c[m>>2]|0;if(j|0)c[f>>2]=Pt(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0;j=c[n>>2]|0;if(j|0)c[g>>2]=Nt(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0}else{k=c[n>>2]|0;j=c[m>>2]|0;if(j|k|0)Qt(o,e,c[f>>2]|0,c[g>>2]|0,h,j,k)}l=p;return}function Lz(a,b){a=a|0;b=b|0;var d=0,e=0;if(+h[b>>3]<+h[b+16>>3]?+h[b+8>>3]<+h[b+24>>3]:0){d=c[a+84>>2]|0;e=a+80|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d+(a<<5)|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2]}return}function Mz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;x=l;l=l+112|0;u=x+72|0;o=x+56|0;n=x+16|0;q=x;j=c[d>>2]&3;p=d+48|0;w=c[((j|0)==3?d:p)+40>>2]|0;t=d+16|0;r=c[t>>2]|0;i=r+16|0;if(a[r+47>>0]|0){Bz(n,w,c[((j|0)==2?d:d+-48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}r=w+16|0;j=c[r>>2]|0;i=c[j+8>>2]|0;if(!i)n=0;else n=c[(c[i+4>>2]|0)+16>>2]|0;i=j+16|0;j=(c[t>>2]|0)+16|0;c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];Nz(q,o,u);c[b>>2]=c[q>>2];c[b+4>>2]=c[q+4>>2];c[b+8>>2]=c[q+8>>2];c[b+12>>2]=c[q+12>>2];if(!(g<<24>>24)){i=c[t>>2]|0;if(!(a[i+45>>0]|0))i=0;else{k=+h[i+32>>3];v=9}}else{k=+Oz(c[((c[d>>2]&3|0)==3?d:p)+40>>2]|0);v=9}if((v|0)==9){h[b+16>>3]=k;i=1}a[b+29>>0]=i;c[b+80>>2]=0;c[b+88>>2]=d;q=f+32|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];switch(e|0){case 1:{j=c[r>>2]|0;if((a[j+156>>0]|0)==0?(q=a[(c[t>>2]|0)+49>>0]|0,s=q&255,q<<24>>24!=0):0){c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(s&4)){if(s&1|0){c[f+48>>2]=1;i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}i=f+48|0;if(!(s&8)){c[i>>2]=2;h[u>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{c[i>>2]=8;h[u+16>>3]=+h[b>>3];h[u+8>>3]=+h[j+24>>3]-+h[j+80>>3]*.5;h[u+24>>3]=+h[b+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{c[f+48>>2]=4;k=+h[u>>3];if(+h[b>>3]<+h[j+16>>3]){z=k+-1.0;y=+h[b+8>>3];b=u+16|0;k=+h[b>>3];m=+h[j+80>>3]*.5+ +h[j+24>>3];m=m+ +((c[(c[(ro(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[r>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[u+24>>3]=y;h[u+8>>3]=+h[i+24>>3]-+h[i+80>>3]*.5;h[u>>3]=z;h[f+56>>3]=z;h[f+64>>3]=y;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{m=+h[b+8>>3];i=u+16|0;y=+h[i>>3]+1.0;z=+h[j+80>>3]*.5+ +h[j+24>>3];z=z+ +((c[(c[(ro(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+24>>3]=m;h[u+8>>3]=+h[b+24>>3]-+h[b+80>>3]*.5;h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0}else{j=1;v=47}break}case 2:{s=a[(c[t>>2]|0)+49>>0]|0;j=s&255;if(!(s<<24>>24))v=46;else{c[u>>2]=c[f>>2];c[u+4>>2]=c[f+4>>2];c[u+8>>2]=c[f+8>>2];c[u+12>>2]=c[f+12>>2];c[u+16>>2]=c[f+16>>2];c[u+20>>2]=c[f+20>>2];c[u+24>>2]=c[f+24>>2];c[u+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){i=c[r>>2]|0;z=+h[i+24>>3]-+h[i+80>>3]*.5;i=u+16|0;y=+h[i>>3]+1.0;k=+h[b>>3];m=z-+((c[(c[(ro(w)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[r>>2]|0;h[u>>3]=+h[b+96>>3]+ +h[b+16>>3];h[u+8>>3]=z;h[u+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=y;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=y;h[f+80>>3]=z;i=f+88|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=2;break}else{i=u+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?u+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}k=+h[b>>3];if(!(j&8)){h[u>>3]=k;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3];i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0;i=u+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}else{i=u+16|0;h[i>>3]=k+1.0;e=c[r>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[u+24>>3]=m+k;k=+h[b+8>>3]+-1.0;i=u}else{h[u+8>>3]=k-m;k=+h[b+8>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1;break}}else{i=u+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+8>>3]?u:b)+8>>3];i=f+56|0;c[i>>2]=c[u>>2];c[i+4>>2]=c[u+4>>2];c[i+8>>2]=c[u+8>>2];c[i+12>>2]=c[u+12>>2];c[i+16>>2]=c[u+16>>2];c[i+20>>2]=c[u+20>>2];c[i+24>>2]=c[u+24>>2];c[i+28>>2]=c[u+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((w|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0;c[f+48>>2]=j}break}default:v=46}if((v|0)==46){j=c[f+48>>2]|0;v=47}a:do if((v|0)==47){if(n){d=f+56|0;i=f+52|0;j=db[n&3](w,(c[t>>2]|0)+16|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{ma(123205,91558,569,91568);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+8>>3];break a}case 1:{h[f+80>>3]=+h[b+8>>3];c[f+48>>2]=1;break a}default:break a}}while(0);l=x;return}function Nz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function Oz(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,l=0.0;i=c[a+16>>2]|0;j=c[i+172>>2]|0;f=0.0;g=0;while(1){a=c[j+(g<<2)>>2]|0;if(!a)break;f=+h[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16>>3]+f;g=g+1|0}e=c[i+180>>2]|0;b=0.0;a=0;while(1){d=c[e+(a<<2)>>2]|0;if(!d)break;b=+h[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+16>>3]+b;a=a+1|0}k=+h[i+16>>3];l=+h[i+24>>3];j=c[j>>2]|0;f=+K(+(l-+h[(c[(c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+24>>3]),+(k-f/+(g|0)));j=c[e>>2]|0;return +((+K(+(+h[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+24>>3]-l),+(b/+(a|0)-k))+f)*.5)}function Pz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+112|0;w=z+72|0;p=z+56|0;n=z+16|0;t=z;j=c[d>>2]&3;r=d+-48|0;y=c[((j|0)==2?d:r)+40>>2]|0;u=d+16|0;s=c[u>>2]|0;i=s+56|0;if(a[s+87>>0]|0){Bz(n,y,c[((j|0)==3?d:d+48|0)+40>>2]|0,i);j=n;n=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(n|0))}s=y+16|0;j=c[s>>2]|0;i=c[j+8>>2]|0;if(!i)o=0;else o=c[(c[i+4>>2]|0)+16>>2]|0;n=b+40|0;i=j+16|0;j=(c[u>>2]|0)+56|0;c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];c[w>>2]=c[j>>2];c[w+4>>2]=c[j+4>>2];c[w+8>>2]=c[j+8>>2];c[w+12>>2]=c[j+12>>2];Nz(t,p,w);c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];if(!(g<<24>>24)){i=c[u>>2]|0;if(!(a[i+85>>0]|0))q=0;else{h[b+56>>3]=+h[i+72>>3];q=1}}else{m=+Oz(c[((c[d>>2]&3|0)==2?d:r)+40>>2]|0)+3.141592653589793;h[b+56>>3]=m;if(m<6.283185307179586)q=1;else ma(91578,91558,606,91602)}a[b+69>>0]=q;t=f+32|0;c[t>>2]=c[n>>2];c[t+4>>2]=c[n+4>>2];c[t+8>>2]=c[n+8>>2];c[t+12>>2]=c[n+12>>2];switch(e|0){case 1:{j=c[s>>2]|0;if((a[j+156>>0]|0)==0?(t=a[(c[u>>2]|0)+89>>0]|0,v=t&255,t<<24>>24!=0):0){c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(v&4))if(!(v&1)){i=f+48|0;if(!(v&8)){c[i>>2]=2;h[w>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{c[i>>2]=8;h[w+16>>3]=+h[n>>3];h[w+24>>3]=+h[j+80>>3]*.5+ +h[j+24>>3];h[w+8>>3]=+h[b+48>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{c[f+48>>2]=1;k=+h[w>>3];if(+h[n>>3]<+h[j+16>>3]){B=k+-1.0;m=+h[b+48>>3];b=w+16|0;k=+h[b>>3];A=+h[j+80>>3]*-.5+ +h[j+24>>3];A=A-+((c[(c[(ro(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[b>>3]=+h[i+16>>3]-+h[i+88>>3];h[w+8>>3]=m;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=B;h[f+56>>3]=B;h[f+64>>3]=A;h[f+72>>3]=k;h[f+80>>3]=m;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{B=+h[b+48>>3];i=w+16|0;A=+h[i>>3]+1.0;m=+h[j+80>>3]*-.5+ +h[j+24>>3];m=m-+((c[(c[(ro(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[s>>2]|0;h[w>>3]=+h[b+96>>3]+ +h[b+16>>3];h[w+8>>3]=B;h[w+24>>3]=+h[b+80>>3]*.5+ +h[b+24>>3];h[i>>3]=A;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}}else{c[f+48>>2]=4;i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=v}else{j=4;x=47}break}case 2:{v=a[(c[u>>2]|0)+89>>0]|0;j=v&255;if(!(v<<24>>24))x=46;else{c[w>>2]=c[f>>2];c[w+4>>2]=c[f+4>>2];c[w+8>>2]=c[f+8>>2];c[w+12>>2]=c[f+12>>2];c[w+16>>2]=c[f+16>>2];c[w+20>>2]=c[f+20>>2];c[w+24>>2]=c[f+24>>2];c[w+28>>2]=c[f+28>>2];do if(!(j&4)){if(j&1|0)if((c[f+48>>2]|0)==4){k=+h[w>>3]+-1.0;i=c[s>>2]|0;B=+h[i+24>>3]-+h[i+80>>3]*.5;A=+h[n>>3];m=B-+((c[(c[(ro(y)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[s>>2]|0;h[w+16>>3]=+h[i+16>>3]+-2.0-+h[i+88>>3];h[w+8>>3]=B;h[w+24>>3]=+h[i+80>>3]*.5+ +h[i+24>>3];h[w>>3]=k;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=A;h[f+80>>3]=B;i=f+88|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=2;break}else{i=w+24|0;h[i>>3]=+h[(+h[i>>3]>+h[b+8>>3]?w+16|0:b)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}k=+h[n>>3];if(!(j&8)){h[w>>3]=k+-1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3];i=w+16|0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}else{i=w+16|0;h[i>>3]=k+1.0;e=c[s>>2]|0;k=+h[e+24>>3];m=+h[e+80>>3]*.5;if((c[f+48>>2]|0)==4){h[w+24>>3]=m+k;k=+h[b+48>>3]+-1.0;i=w}else{h[w+8>>3]=k-m;k=+h[b+48>>3]+1.0}h[i+8>>3]=k;i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1;break}}else{i=w+8|0;h[i>>3]=+h[(+h[i>>3]<+h[b+48>>3]?w:n)+8>>3];i=f+56|0;c[i>>2]=c[w>>2];c[i+4>>2]=c[w+4>>2];c[i+8>>2]=c[w+8>>2];c[i+12>>2]=c[w+12>>2];c[i+16>>2]=c[w+16>>2];c[i+20>>2]=c[w+20>>2];c[i+24>>2]=c[w+24>>2];c[i+28>>2]=c[w+28>>2];i=1}while(0);c[f+52>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((y|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[f+48>>2]=j}break}default:x=46}if((x|0)==46){j=c[f+48>>2]|0;x=47}a:do if((x|0)==47){if(o){d=f+56|0;i=f+52|0;j=db[o&3](y,(c[u>>2]|0)+56|0,j,d,i)|0;if(j){c[f+48>>2]=j;break}}else{i=f+52|0;d=f+56|0};c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];c[d+16>>2]=c[f+16>>2];c[d+20>>2]=c[f+20>>2];c[d+24>>2]=c[f+24>>2];c[d+28>>2]=c[f+28>>2];c[i>>2]=1;switch(e|0){case 8:{ma(123205,91558,765,91602);break}case 2:{h[((c[f+48>>2]|0)==4?f+56|0:f+72|0)+8>>3]=+h[b+48>>3];break a}case 1:{h[f+64>>3]=+h[b+48>>3];c[f+48>>2]=4;break a}default:break a}}while(0);l=z;return}function Qz(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;g=c[b+16>>2]|0;i=c[g+96>>2]|0;if((a[g+44>>0]|0)==0?(a[g+84>>0]|0)==0:0)j=6;else{d=a[g+49>>0]|0;e=d&255;if(((e&8|0)==0?(f=a[g+89>>0]|0,(f&8)==0):0)?((e&5|0)==0?1:d<<24>>24!=f<<24>>24):0)j=6;else b=0}if((j|0)==6)if(!i)b=18;else{b=(c[(c[(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=~~(+h[(b?i+32|0:i+24|0)>>3]+18.0)}return b|0}function Rz(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=i|0;var j=0,k=0,l=0,m=0;b=c[(c[d+(e<<2)>>2]|0)+16>>2]|0;if((a[b+44>>0]|0)==0?(a[b+84>>0]|0)==0:0)l=6;else l=3;do if((l|0)==3){j=a[b+49>>0]|0;k=j&255;if(!(k&8)){m=a[b+89>>0]|0;if((m&8)==0?((k&5|0)==0?1:j<<24>>24!=m<<24>>24):0){l=6;break}if(!(a[b+89>>0]&8)){if(k&4|0){Tz(d,e,f,g,h,i);break}if(!(k&1))ma(123205,91558,1231,91610);else{Vz(d,e,f,g,h,i);break}}}if((j&2)==0?(a[b+89>>0]&2)==0:0){Uz(d,e,f,g,h,i);break}Tz(d,e,f,g,h,i)}while(0);if((l|0)==6)Sz(d,e,f,g,h,i);return}function Sz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+96>>3];switch(Wz(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 65:case 32:{if(F==H)k=0-k|0;break}default:{}}Q=(p-m)*3.0;m=(p-i)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p<Q?p:Q;m=p<m?p:m;while(1){if((r|0)>=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;Xz(M,n*.3333333333333333+E,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=p+C;Xz(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];Xz(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;Xz(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];Xz(K,m*.3333333333333333+G,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*.5+p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;Jz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function Tz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0.0,S=0;Q=l;l=l+16080|0;M=Q+80|0;N=Q+64|0;O=Q+48|0;P=Q+32|0;K=Q+16|0;L=Q;C=c[b+(e<<2)>>2]|0;q=g*.5/+(f|0);q=q>2.0?q:2.0;E=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;m=c[E>>2]|0;H=+h[m+16>>3];D=+h[m+24>>3];C=c[C+16>>2]|0;k=+h[C+16>>3];p=+h[C+24>>3];F=k+H;G=p+D;g=+h[C+56>>3];o=+h[C+64>>3];H=g+H;I=o+D;n=!(F>=H)?-1.0:1.0;s=+h[m+80>>3]*.5;switch(Wz(d[C+49>>0]|0,d[C+89>>0]|0)|0){case 15:{k=(q-g+ +h[m+96>>3])*n;break}case 38:{k=(g+q+ +h[m+88>>3])*n;break}case 41:{k=(q-k+ +h[m+96>>3])*n;break}case 48:{k=(q-k+ +h[m+96>>3])*n;break}case 58:case 57:case 51:case 47:case 37:case 14:{k=n*.3333333333333333*(k-g+ +h[m+88>>3]+ +h[m+96>>3]);break}case 73:{k=(k+q+ +h[m+88>>3])*n;break}case 83:{k=(+h[m+88>>3]+k)*n;break}case 84:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q)*n;break}case 85:case 75:case 74:{k=((k-g+ +h[m+88>>3]+ +h[m+96>>3])*.5+q*2.0)*n;break}default:k=0.0}p=(s-p)*3.0;o=(s-o)*3.0;q=n*q;w=M+8|0;x=M+16|0;y=M+32|0;z=M+48|0;A=(H+F)*.5;B=M+64|0;C=M+80|0;u=M+96|0;v=M+104|0;t=0;g=s;p=s<p?s:p;n=s<o?s:o;while(1){if((t|0)>=(f|0))break;r=e+1|0;e=c[b+(e<<2)>>2]|0;o=g+i;p=p+i;n=n+i;k=k+q;h[M>>3]=F;h[w>>3]=G;s=k+F;Xz(N,s,p*.3333333333333333+G);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];R=o+D;Xz(O,s,R);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Xz(P,A,R);c[z>>2]=c[P>>2];c[z+4>>2]=c[P+4>>2];c[z+8>>2]=c[P+8>>2];c[z+12>>2]=c[P+12>>2];s=H-k;Xz(K,s,R);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];Xz(L,s,n*.3333333333333333+I);c[C>>2]=c[L>>2];c[C+4>>2]=c[L+4>>2];c[C+8>>2]=c[L+8>>2];c[C+12>>2]=c[L+12>>2];h[u>>3]=H;h[v>>3]=I;m=e+16|0;if((c[(c[m>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,m=c[(c[m>>2]|0)+96>>2]|0,J=+h[(S?m+32|0:m+24|0)>>3],S=c[E>>2]|0,h[m+64>>3]=J*.5+o+ +h[S+24>>3],h[m+56>>3]=+h[S+16>>3],a[m+81>>0]=1,J>i):0)g=J+g;else g=o;Jz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,M,7,j);e=r;t=t+1|0}l=Q;return}function Uz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;n=i*.5/+(f|0);n=n>2.0?n:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;A=c[D>>2]|0;C=+h[A+16>>3];H=+h[A+24>>3];B=c[B+16>>2]|0;m=+h[B+16>>3];E=m+C;F=+h[B+24>>3]+H;i=+h[B+56>>3];G=i+C;H=+h[B+64>>3]+H;k=!(F>=H)?-1:1;p=+h[A+88>>3];switch(Wz(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 67:case 12:{if(F==H)k=0-k|0;break}default:{}}Q=(m+p)*3.0;m=(i+p)*3.0;v=n*+(k|0);u=L+8|0;w=L+16|0;x=L+32|0;y=L+48|0;z=(H+F)*.5;A=L+64|0;B=L+80|0;s=L+96|0;t=L+104|0;r=0;o=0.0;i=p;n=p<Q?p:Q;m=p<m?p:m;while(1){if((r|0)>=(f|0))break;q=e+1|0;e=c[b+(e<<2)>>2]|0;p=i+g;n=n+g;m=m+g;o=o+v;h[L>>3]=E;h[u>>3]=F;Q=o+F;Xz(M,E-n*.3333333333333333,Q);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];R=C-p;Xz(N,R,Q);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];Xz(O,R,z);c[y>>2]=c[O>>2];c[y+4>>2]=c[O+4>>2];c[y+8>>2]=c[O+8>>2];c[y+12>>2]=c[O+12>>2];Q=H-o;Xz(J,R,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];Xz(K,G-m*.3333333333333333,Q);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[s>>3]=G;h[t>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(S?k+24|0:k+32|0)>>3],S=c[D>>2]|0,h[k+56>>3]=I*-.5-p+ +h[S+16>>3],h[k+64>>3]=+h[S+24>>3],a[k+81>>0]=1,I>g):0)i=I+i;else i=p;Jz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=q;r=r+1|0}l=P;return}function Vz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;C=c[b+(e<<2)>>2]|0;B=g*.5/+(f|0);w=(c[((c[C>>2]&3|0)==3?C:C+48|0)+40>>2]|0)+16|0;D=c[w>>2]|0;z=+h[D+16>>3];v=+h[D+24>>3];C=c[C+16>>2]|0;m=+h[C+24>>3];x=+h[C+16>>3]+z;y=m+v;n=+h[C+64>>3];z=+h[C+56>>3]+z;A=n+v;u=!(x>=z)?-1:1;o=+h[D+80>>3]*.5;C=(Wz(d[C+49>>0]|0,d[C+89>>0]|0)|0)==67;m=(m+o)*3.0;n=(n+o)*3.0;B=(B>2.0?B:2.0)*+((C?0-u|0:u)|0);u=L+8|0;C=L+16|0;D=L+32|0;E=L+48|0;F=(z+x)*.5;G=L+64|0;H=L+80|0;s=L+96|0;t=L+104|0;g=o;k=0.0;m=o<m?o:m;n=o<n?o:n;q=0;while(1){if((q|0)>=(f|0))break;r=e+1|0;p=c[b+(e<<2)>>2]|0;o=g+i;m=m+i;n=n+i;k=k+B;h[L>>3]=x;h[u>>3]=y;Q=k+x;Xz(M,Q,y-m*.3333333333333333);c[C>>2]=c[M>>2];c[C+4>>2]=c[M+4>>2];c[C+8>>2]=c[M+8>>2];c[C+12>>2]=c[M+12>>2];R=v-o;Xz(N,Q,R);c[D>>2]=c[N>>2];c[D+4>>2]=c[N+4>>2];c[D+8>>2]=c[N+8>>2];c[D+12>>2]=c[N+12>>2];Xz(O,F,R);c[E>>2]=c[O>>2];c[E+4>>2]=c[O+4>>2];c[E+8>>2]=c[O+8>>2];c[E+12>>2]=c[O+12>>2];Q=z-k;Xz(J,Q,R);c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];Xz(K,Q,A-n*.3333333333333333);c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];h[s>>3]=z;h[t>>3]=A;e=p+16|0;if((c[(c[e>>2]|0)+96>>2]|0)!=0?(S=(c[(c[(ro(c[((c[p>>2]&3|0)==3?p:p+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,e=c[(c[e>>2]|0)+96>>2]|0,I=+h[(S?e+32|0:e+24|0)>>3],S=c[w>>2]|0,h[e+64>>3]=I*-.5-o+ +h[S+24>>3],h[e+56>>3]=+h[S+16>>3],a[e+81>>0]=1,I>i):0)g=I+g;else g=o;Jz(p,c[((c[p>>2]&3|0)==2?p:p+-48|0)+40>>2]|0,L,7,j);e=r;q=q+1|0}l=P;return}function Wz(a,b){a=a|0;b=b|0;var d=0;d=0;while(1){if((d|0)>=8){b=-1;break}if((c[21064+(d<<2)>>2]|0)==(b|0)){b=d;break}d=d+1|0}d=0;while(1){if((d|0)>=8){d=-1;break}if((c[21064+(d<<2)>>2]|0)==(a|0))break;d=d+1|0}if((d|b|0)<0)d=0;else d=c[21096+(d<<5)+(b<<2)>>2]|0;return d|0}function Xz(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Yz(b){b=b|0;var d=0,e=0;if((c[42247]|0)!=0|(c[42246]|0)!=0){d=b+16|0;e=c[(c[d>>2]|0)+100>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?Zz(b,1)|0:0){e=ro(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;bB(e,c[(c[d>>2]|0)+100>>2]|0)}e=c[(c[d>>2]|0)+104>>2]|0;if((e|0?(a[e+81>>0]|0)==0:0)?Zz(b,0)|0:0){e=ro(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;bB(e,c[(c[d>>2]|0)+104>>2]|0)}}return}function Zz(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+96|0;o=q+32|0;m=q+16|0;n=q;i=b+16|0;do if((a[(c[i>>2]|0)+112>>0]|0)!=6){e=c[42247]|0;if(!((e|0)!=0?(a[(Jm(b,e)|0)>>0]|0)!=0:0)){e=c[42246]|0;if(!e){e=0;break}if(!(a[(Jm(b,e)|0)>>0]|0)){e=0;break}}d=d<<24>>24==0;p=c[i>>2]|0;p=c[(d?p+104|0:p+100|0)>>2]|0;e=_z(b)|0;if(e){k=c[e>>2]|0;do if(d){if(c[k+8>>2]|0){e=c[k>>2]|0;j=+h[e>>3];g=+h[k+16>>3];e=e+8|0;f=+h[k+24>>3];break}e=c[k>>2]|0;g=+h[e>>3];f=+h[e+8>>3];e=0;while(1){if((e|0)==4)break;n=o+(e<<4)|0;i=(c[k>>2]|0)+(e<<4)|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];e=e+1|0}PA(m,o,3,.1,0,0);j=+h[m>>3];e=m+8|0}else{d=(c[e+4>>2]|0)+-1|0;i=k+(d*48|0)|0;if(c[k+(d*48|0)+12>>2]|0){o=c[i>>2]|0;e=(c[k+(d*48|0)+4>>2]|0)+-1|0;j=+h[o+(e<<4)>>3];g=+h[k+(d*48|0)+32>>3];e=o+(e<<4)+8|0;f=+h[k+(d*48|0)+40>>3];break}m=c[i>>2]|0;d=k+(d*48|0)+4|0;e=(c[d>>2]|0)+-1|0;g=+h[m+(e<<4)>>3];f=+h[m+(e<<4)+8>>3];e=0;while(1){if((e|0)==4)break;m=o+(e<<4)|0;k=(c[i>>2]|0)+(e+-4+(c[d>>2]|0)<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];e=e+1|0}PA(n,o,3,.9,0,0);j=+h[n>>3];e=n+8|0}while(0);r=+K(+(+h[e>>3]-f),+(j-g));r=+EA(b,c[42247]|0,-25.0,-180.0)*.017453292519943295+r;j=+EA(b,c[42246]|0,1.0,0.0)*10.0;h[p+56>>3]=j*+E(+r)+g;h[p+64>>3]=+F(+r)*j+f;a[p+81>>0]=1;e=1}else e=0}else e=0;while(0);l=q;return e|0}function _z(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b;while(1){e=c[d+16>>2]|0;d=c[e+8>>2]|0;if(d|0)break;if(!(a[e+112>>0]|0)){g=5;break}d=c[e+116>>2]|0}if((g|0)==5){g=Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;d=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=d;_l(1,91623,f)|0;d=0}l=h;return d|0}function $z(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+96|0;m=s+80|0;n=s+64|0;o=s+48|0;p=s+32|0;q=s+16|0;r=s;k=b[(c[d+16>>2]|0)+136>>1]|0;d=e+16|0;aA(c[(c[d>>2]|0)+8>>2]|0,p,q);f=+h[p>>3];g=+h[q>>3];t=f-g;i=+h[p+8>>3];j=+h[q+8>>3];u=i-j;a:do if(u*u+t*t<1.0e-06){c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2]}else switch(k&14){case 4:case 10:{h[n>>3]=(g+f)*.5;h[n+8>>3]=(j+i)*.5;q=c[(c[d>>2]|0)+8>>2]|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];VA(r,q,m);c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];break a}default:{bA(o,c[(c[d>>2]|0)+8>>2]|0,p,q);break a}}while(0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];l=s;return}function aA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;g=h+16|0;f=h;j=c[a>>2]|0;e=c[j>>2]|0;i=c[j+8>>2]|0;k=j+16|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];j=j+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!i){c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}else{c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2]}i=c[a>>2]|0;j=(c[a+4>>2]|0)+-1|0;e=c[i+(j*48|0)>>2]|0;a=c[i+(j*48|0)+4>>2]|0;k=c[i+(j*48|0)+12>>2]|0;b=i+(j*48|0)+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];j=i+(j*48|0)+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!k){k=e+(a+-1<<4)|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2]}else{c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2]}l=h;return}function bA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0;r=c[b+4>>2]|0;g=0.0;f=0;while(1){if((f|0)>=(r|0))break;l=c[b>>2]|0;k=c[l+(f*48|0)>>2]|0;l=c[l+(f*48|0)+4>>2]|0;i=3;j=0;while(1){if((i|0)>=(l|0))break;q=+h[k+(j<<4)>>3]-+h[k+(i<<4)>>3];p=+h[k+(j<<4)+8>>3]-+h[k+(i<<4)+8>>3];i=i+3|0;j=j+3|0;g=+C(+(p*p+q*q))+g}f=f+1|0}l=0;g=g*.5;a:while(1){if((l|0)>=(r|0)){f=15;break}k=c[b>>2]|0;j=c[k+(l*48|0)>>2]|0;k=c[k+(l*48|0)+4>>2]|0;f=3;i=0;while(1){if((f|0)>=(k|0))break;m=+h[j+(i<<4)>>3];p=+h[j+(i<<4)+8>>3];n=+h[j+(f<<4)>>3];o=+h[j+(f<<4)+8>>3];q=m-n;s=p-o;q=+C(+(s*s+q*q));if(q>=g){f=12;break a}f=f+3|0;i=i+3|0;g=g-q}l=l+1|0}if((f|0)==12){h[d>>3]=m;h[d+8>>3]=p;h[e>>3]=n;h[e+8>>3]=o;s=q-g;h[a>>3]=(s*m+n*g)/q;h[a+8>>3]=(s*p+o*g)/q;return}else if((f|0)==15)ma(123523,91558,1316,91685)}function cA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Yz(b);return}function dA(b,d,e,f,g){b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0,G=0,H=0,I=0,J=0,K=0,L=0;J=eA(b)|0;I=c[J+4>>2]|0;K=c[J>>2]|0;H=I+-1|0;B=+h[K+(H<<6)+16>>3];C=+(I|0);D=(g|0)==2;G=(f|0)!=0;n=0;j=0.0;i=0.0;l=0.0;m=0.0;while(1){if((n|0)>=(I|0))break;b=~~+fA(+(n+-1|0),C);A=n+1|0;L=~~+fA(+(A|0),C);o=K+(n<<6)|0;m=+h[o>>3];z=K+(n<<6)+8|0;l=+h[z>>3];s=K+(n<<6)+16|0;t=+h[s>>3];u=K+(n<<6)+24|0;v=K+(n<<6)+32|0;w=K+(n<<6)+40|0;x=K+(n<<6)+48|0;y=K+(n<<6)+56|0;k=+gA(+h[K+(L<<6)+8>>3]-l,+h[K+(L<<6)>>3]-m);q=+gA(+h[K+(b<<6)+8>>3]-l,+h[K+(b<<6)>>3]-m);r=+Za[d&7](t,B,e);b=(n|0)==0;do if(b|(n|0)==(H|0))if(b){i=k+1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+k)*r;m=m-+E(+k)*r;break}else{i=q+-1.5707963267948966;if(!D){b=0;p=i;j=r;break}b=0;p=i;j=r;l=l-+F(+q)*r;m=m-+E(+q)*r;break}else{p=k-q;p=1.5707963267948966-(p<0.0?p+6.283185307179586:p)*.5;j=+E(+p);j=j==0.0?0.0:r/j;i=k+1.5707963267948966;k=p+i;if(G|j>r*10.0){q=+fA(q+-1.5707963267948966,6.283185307179586);b=1;p=+fA(i,6.283185307179586);j=r;i=q}else{b=0;p=k;i=k}}while(0);h[o>>3]=m;h[z>>3]=l;h[s>>3]=t;a[u>>0]=108;h[v>>3]=i;h[w>>3]=j;c[x>>2]=b;h[y>>3]=p;n=A}o=vw(12)|0;b=0;while(1){if((b|0)>=(I|0))break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];i=+h[K+(b<<6)+32>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;k=+h[K+(b<<6)+56>>3];hA(o,+E(+i)*j+m,+F(+i)*j+l);if(L|0)iA(m,l,j,1,i,k,f,o);b=b+1|0}n=(g|0)==1;k=i+3.141592653589793;if(n)jA(o,m,l,j,i,k);else{hA(o,+E(+k)*j+m,+F(+k)*j+l);i=k}b=I+-2|0;k=m;while(1){if((b|0)<=-1)break;m=+h[K+(b<<6)>>3];l=+h[K+(b<<6)+8>>3];j=+h[K+(b<<6)+40>>3];L=c[K+(b<<6)+48>>2]|0;i=+h[K+(b<<6)+32>>3]+3.141592653589793;k=+h[K+(b<<6)+56>>3]+3.141592653589793;hA(o,+E(+k)*j+m,+F(+k)*j+l);if(L|0)iA(m,l,j,0,i,k,f,o);b=b+-1|0;k=m}if(n)jA(o,k,l,j,i,i+3.141592653589793);kA(J);return o|0}function eA(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;q=l;l=l+144|0;i=q+128|0;h=q+112|0;j=q+96|0;k=q+64|0;m=q;n=q+80|0;o=lA()|0;p=c[a+4>>2]|0;f=c[a>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];mA(o,i,0.0);g=m+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];d=0;b=0.0;a:while(1){e=d+3|0;if((e|0)>=(p|0))break;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];a=1;while(1){if((a|0)==4)break;r=m+(a<<4)|0;s=f+(a+d<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];a=a+1|0}c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];a=1;while(1){if((a|0)==21){d=e;continue a}PA(n,m,3,+(a|0)*.05,0,0);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];t=+nA(h,i)+b;c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];mA(o,i,t);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];a=a+1|0;b=t}}oA(o);l=q;return o|0}function fA(a,b){a=+a;b=+b;var c=0.0;c=a-+A(+(a/b))*b;return +(!(a<0.0)&!(a>=b)?a:c)}function gA(a,b){a=+a;b=+b;if(!(a==0.0&b==0.0)){a=+K(+a,+b);if(!(a>=0.0))a=a+6.283185307179586}else a=0.0;return +a}function hA(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=c[a>>2]|0;f=a+4|0;if((e|0)<(c[f>>2]|0))f=c[a+8>>2]|0;else{c[f>>2]=2e3;e=a+8|0;f=yw(c[e>>2]|0,32e3)|0;c[e>>2]=f;e=c[a>>2]|0}c[a>>2]=e+1;h[f+(e<<4)>>3]=b;h[f+(e<<4)+8>>3]=d;return}function iA(a,b,c,d,e,f,g,h){a=+a;b=+b;c=+c;d=d|0;e=+e;f=+f;g=g|0;h=h|0;var i=0.0;d=(d|0)==0;i=d?e:f;do if((g|0)==1){e=(d?f:e)-i;e=!(e<=1.7453292519943296e-03)?e:e+6.283185307179586;if(e<3.141592653589793){jA(h,a,b,c,e+i,i);break}else{hA(h,+E(+i)*c+a,+F(+i)*c+a);break}}else hA(h,+E(+i)*c+a,+F(+i)*c+a);while(0);return}function jA(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0.0;hA(a,+E(+e)*d+b,+F(+e)*d+c);a:do if(!(d==0.0)){while(1){if(!(f>e))break;f=f+-6.283185307179586}f=e-f;while(1){if(!(f>6.283185307179586))break;f=f+-6.283185307179586}f=f*.05263157894736842;g=1;while(1){if((g|0)==20)break a;h=e-f*+(g|0);hA(a,+E(+h)*d+b,+F(+h)*d+c);g=g+1|0}}while(0);return}function kA(a){a=a|0;_I(c[a>>2]|0);_I(a);return}function lA(){var a=0;a=vw(12)|0;c[a+4>>2]=0;c[a+8>>2]=2e3;c[a>>2]=vw(128e3)|0;return a|0}function mA(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=a+4|0;e=c[i>>2]|0;f=a+8|0;g=c[f>>2]|0;if((e|0)<(g|0))a=c[a>>2]|0;else{c[f>>2]=g<<1;e=yw(c[a>>2]|0,g<<7)|0;c[a>>2]=e;a=e;e=c[i>>2]|0}h[a+(e<<6)>>3]=+h[b>>3];h[a+(e<<6)+8>>3]=+h[b+8>>3];c[i>>2]=e+1;h[a+(e<<6)+16>>3]=d;return}function nA(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+8>>3]-+h[b+8>>3];return +(+C(+(d*d+c*c)))}function oA(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[a+8>>2]|0)>(b|0))c[a>>2]=yw(c[a>>2]|0,b<<6)|0;return}function pA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;g=k+12|0;c[g>>2]=0;h=c[d+4>>2]|0;if(!h)ma(91702,91713,203,91724);e=c[h>>2]|0;if(!e)ma(91738,91713,206,91724);f=h+8|0;if(!(c[f>>2]|0))c[f>>2]=qA(e)|0;if(!0)e=0;else{e=(Dv(c[h>>2]|0)|0)==0;e=e?0:g}if(!((vE(b,d,e)|0)<<24>>24))rA(d,e);do if(e|0){f=c[g>>2]|0;b=c[13918]|0;e=c[h>>2]|0;if(!f){c[j>>2]=e;zL(b,91781,j)|0;break}else{c[i>>2]=e;c[i+4>>2]=f;zL(b,91749,i)|0;break}}while(0);j=d+32|0;c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=k;return}function qA(a){a=a|0;var b=0;b=c[42345]|0;if((b|0)!=0?(iK(b,a)|0)==0:0)a=c[42354]|0;else{_I(b);c[42345]=GL(a)|0;a=vM(169380,21352,35,36,29)|0;c[42354]=a}return a|0}function rA(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0.0;j=c[b+4>>2]|0;e=c[j>>2]|0;i=+h[j+16>>3];j=b+32|0;h[j>>3]=0.0;h[b+40>>3]=i*1.2;h[b+16>>3]=0.0;h[b+24>>3]=i*.1;c[b+8>>2]=0;c[b+12>>2]=0;if(pK(e,91815,4)|0)if((pK(e,91820,5)|0)!=0?(pK(e,91826,9)|0)!=0:0){g=4184;e=91836}else{g=8280;e=91872}else{g=6232;e=91853}if(d|0)c[d>>2]=e;e=c[b>>2]|0;if(e|0){f=0.0;while(1){b=a[e>>0]|0;if(!(b<<24>>24))break;k=f+ +h[g+((b&255)<<3)>>3];h[j>>3]=k;e=e+1|0;f=k}h[j>>3]=f*i}return}function sA(a,b){a=a|0;b=b|0;return iK(c[a>>2]|0,c[b>>2]|0)|0}function tA(a){a=a|0;var b=0;b=a+108|0;c[b>>2]=0;c[a+112>>2]=32;c[a+116>>2]=-1;c[a+120>>2]=14;c[a+124>>2]=58;c[a+128>>2]=20;c[a+132>>2]=0;c[a+136>>2]=0;c[a+140>>2]=0;b=Ql(b,c[4345]|0)|0;c[a+144>>2]=b;return b|0}function uA(a,b,d){a=a|0;b=b|0;d=d|0;d=$I(1,32)|0;a=c[b>>2]|0;if(a|0)c[d>>2]=GL(a)|0;a=c[b+4>>2]|0;if(a|0)c[d+4>>2]=GL(a)|0;c[d+24>>2]=c[b+24>>2]&127;h[d+16>>3]=+h[b+16>>3];c[d+8>>2]=c[b+8>>2];return d|0}function vA(a,b,d){a=a|0;b=b|0;d=d|0;_I(c[b>>2]|0);_I(c[b+4>>2]|0);_I(b);return}function wA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;a=c[b>>2]|0;e=c[d>>2]|0;i=(e|0)==0;if(!a)if(i)j=5;else a=-1;else if(!i){a=xJ(a,e)|0;if(!a)j=5}else a=1;do if((j|0)==5){a=c[b+4>>2]|0;e=c[d+4>>2]|0;i=(e|0)==0;if(!a){if(!i){a=-1;break}}else{if(i){a=1;break}a=xJ(a,e)|0;if(a|0)break}a=(c[b+24>>2]&127)-(c[d+24>>2]&127)|0;if(!a){g=+h[b+16>>3];f=+h[d+16>>3];if(g<f)a=-1;else a=g>f&1}}while(0);return a|0}function xA(){Wa(169420)|0;return}function yA(){var a=0,b=0;b=l;l=l+16|0;a=b;Wa(a|0)|0;l=b;return +(+((c[a+4>>2]|0)+(c[a>>2]|0)-(c[42355]|0)-(c[42356]|0)|0)*.016666666666666666)}function zA(a){a=a|0;var b=0,d=0;b=vw(16)|0;a=(a|0)>2?a:2;d=vw(a<<2)|0;c[b>>2]=d;c[b+12>>2]=d;c[b+8>>2]=d;c[b+4>>2]=d+(a<<2);return b|0}function AA(a){a=a|0;_I(c[a>>2]|0);_I(a);return}function BA(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;c[d>>2]=e+4;c[e>>2]=b;if((c[d>>2]|0)>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2];return}function CA(a){a=a|0;var b=0,d=0,e=0;d=a+8|0;b=c[d>>2]|0;if((b|0)!=(c[a+12>>2]|0)){e=b+4|0;c[d>>2]=e;b=c[b>>2]|0;if(e>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2]}else b=0;return b|0}function DA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;if(((d|0)!=0?(h=Jm(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){d=BL(h,g,10)|0;e=(h|0)==(c[g>>2]|0)?e:(d|0)<(f|0)?f:d}l=i;return e|0}function EA(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;g=i;if(((b|0)!=0&(d|0)!=0?(h=Jm(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){j=+tM(h,g);e=(h|0)==(c[g>>2]|0)?e:j<f?f:j}l=i;return +e}function FA(a,b,c){a=a|0;b=b|0;c=c|0;if((a|0)!=0&(b|0)!=0)c=Jm(a,b)|0;return c|0}function GA(b,c,d){b=b|0;c=c|0;d=d|0;b=FA(b,c,d)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)d=b;return d|0}function HA(a,b,c){a=a|0;b=b|0;c=c|0;if(!b)a=c&255;else a=IA(Jm(a,b)|0)|0;return a|0}function IA(a){a=a|0;return JA(a,0)|0}function JA(b,c){b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=a[b>>0]|0,d<<24>>24!=0):0)if((iK(b,122100)|0)!=0?(iK(b,92682)|0)!=0:0)if((iK(b,92685)|0)!=0?(iK(b,92690)|0)!=0:0){if(((d<<24>>24)+-48|0)>>>0<10)c=(rM(b)|0)&255}else c=1;else c=0;return c|0}function KA(a){a=a|0;var b=0,d=0;while(1){b=(c[a+16>>2]|0)+220|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[(c[d+16>>2]|0)+220>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function LA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=(b|0)){d=c[a+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=a;c[d+216>>2]=1}else a=KA(a)|0;d=c[b+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=b;c[d+216>>2]=1}else{d=KA(b)|0;b=d;d=c[d+16>>2]|0}g=a+16|0;e=c[g>>2]|0;f=b+16|0;h=(c[e+120>>2]|0)>(c[d+120>>2]|0);a=h?b:a;c[(h?e:d)+220>>2]=a;e=(c[(h?f:g)>>2]|0)+216|0;c[e>>2]=(c[e>>2]|0)+(c[(c[(h?g:f)>>2]|0)+216>>2]|0)}return a|0}function MA(b){b=b|0;b=c[b+16>>2]|0;c[b+216>>2]=1;c[b+220>>2]=0;a[b+159>>0]=0;return}function NA(a,b){a=a|0;b=b|0;if((KA(a)|0)==(a|0)){a=c[a+16>>2]|0;c[a+220>>2]=b;b=(c[b+16>>2]|0)+216|0;c[b>>2]=(c[b>>2]|0)+(c[a+216>>2]|0);return}else ma(92702,92694,194,92718)}function OA(a,b){a=a|0;b=b|0;var d=0.0;b=c[(c[b+16>>2]|0)+132>>2]|0;d=+h[b+8>>3]*72.0;h[a>>3]=+h[b>>3]*72.0;h[a+8>>3]=d;return}function PA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;o=l;l=l+576|0;n=o;i=0;while(1){if((i|0)>(d|0))break;k=n+(i<<4)|0;j=b+(i<<4)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];i=i+1|0}m=1.0-e;i=1;while(1){if((i|0)>(d|0))break;j=d-i|0;k=i+-1|0;b=0;while(1){if((b|0)>(j|0))break;p=b+1|0;h[n+(i*96|0)+(b<<4)>>3]=+h[n+(k*96|0)+(p<<4)>>3]*e+ +h[n+(k*96|0)+(b<<4)>>3]*m;h[n+(i*96|0)+(b<<4)+8>>3]=+h[n+(k*96|0)+(p<<4)+8>>3]*e+ +h[n+(k*96|0)+(b<<4)+8>>3]*m;b=p}i=i+1|0}a:do if(f|0){i=0;while(1){if((i|0)>(d|0))break a;p=f+(i<<4)|0;k=n+(i*96|0)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];c[p+12>>2]=c[k+12>>2];i=i+1|0}}while(0);b:do if(g|0){i=0;while(1){if((i|0)>(d|0))break b;p=g+(i<<4)|0;f=n+((d-i|0)*96|0)+(i<<4)|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];i=i+1|0}}while(0);p=n+(d*96|0)|0;c[a>>2]=c[p>>2];c[a+4>>2]=c[p+4>>2];c[a+8>>2]=c[p+8>>2];c[a+12>>2]=c[p+12>>2];l=o;return}function QA(b){b=b|0;var d=0,e=0,f=0,g=0;e=0;do{d=c[42359]|0;f=d+1024|0;if((d-e|0)<1024){c[42359]=f;f=yw(c[42360]|0,f)|0;c[42360]=f;d=c[42359]|0}else f=c[42360]|0;d=gL(f+e|0,d-e|0,b)|0;if(!d){g=6;break}e=(rJ(d)|0)+e|0;d=c[42360]|0}while((a[d+(e+-1)>>0]|0)!=10);if((g|0)==6)d=c[42360]|0;return ((e|0)>0?d:0)|0}function RA(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;do if((b|0)!=0?(a[b>>0]|0)!=0:0)if(!0){d=c[42178]|0;e=c[42362]|0;if((c[42361]|0)==(d|0))d=e;else{if(e){_I(c[e>>2]|0);_I(c[42362]|0);c[42362]=0;d=c[42178]|0}c[42361]=d;if(!d)break;if(!(a[d>>0]|0))break;d=SA(d)|0;c[42362]=d}if(!((a[b>>0]|0)!=47&(d|0)!=0))break;b=TA(d,c[42363]|0,b)|0;break}else S();else b=0;while(0);l=f;return b|0}function SA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=0;f=0;g=0;b=GL(a)|0;d=0;while(1){b=DL(b,93017)|0;if(!b)break;a=(g<<2)+8|0;if(!f)a=ww(a)|0;else a=yw(d,a)|0;c[a+(g<<2)>>2]=b;f=rJ(b)|0;e=e>>>0>f>>>0?e:f;f=a;g=g+1|0;b=0;d=a}c[f+(g<<2)>>2]=0;c[42363]=e;return f|0}function TA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;h=c[42364]|0;c[42364]=aJ(h,b+2+(rJ(d)|0)|0)|0;while(1){b=c[a>>2]|0;if(!b){a=0;break}h=c[42364]|0;c[e>>2]=b;c[e+4>>2]=93015;c[e+8>>2]=d;pL(h,93008,e)|0;if(!($L(c[42364]|0,4)|0)){f=4;break}else a=a+4|0}if((f|0)==4)a=c[42364]|0;l=g;return a|0}function UA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=0;while(1){h=c[d+(f<<2)>>2]|0;if(!h)break;if((!g?(a[b>>0]|0)==(a[h>>0]|0):0)?(xJ(b,h)|0)==0:0)break;f=f+1|0}return c[e+(f<<2)>>2]|0}function VA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0;z=l;l=l+80|0;x=z+16|0;y=z;u=c[b+4>>2]|0;v=c[b>>2]|0;w=d+8|0;f=0;e=-1;g=1.e+38;b=-1;while(1){if((f|0)>=(u|0))break;s=c[v+(f*48|0)>>2]|0;t=c[v+(f*48|0)+4>>2]|0;r=0;while(1){if((r|0)>=(t|0))break;q=+h[s+(r<<4)>>3]-+h[d>>3];p=+h[s+(r<<4)+8>>3]-+h[w>>3];q=p*p+q*q;A=(e|0)==-1|q<g;C=A?r:e;r=r+1|0;b=A?f:b;e=C;g=A?q:g}f=f+1|0}f=c[v+(b*48|0)>>2]|0;e=e+(((e|0)==((c[v+(b*48|0)+4>>2]|0)+-1|0))<<31>>31)|0;e=e-((e|0)%3|0)|0;b=0;while(1){if((b|0)==4)break;C=b+e|0;h[x+(b<<4)>>3]=+h[f+(C<<4)>>3];h[x+(b<<4)+8>>3]=+h[f+(C<<4)+8>>3];b=b+1|0}q=+h[d>>3];k=+h[x>>3]-q;o=+h[w>>3];p=+h[x+8>>3]-o;j=+h[x+48>>3]-q;n=+h[x+56>>3]-o;b=y+8|0;g=1.0;i=0.0;j=n*n+j*j;k=p*p+k*k;while(1){p=(g+i)*.5;PA(y,x,3,p,0,0);m=+h[y>>3];n=+h[b>>3];if(+B(+(k-j))<1.0)break;if(+B(+(g-i))<1.0e-05)break;C=k<j;m=m-q;n=n-o;n=n*n+m*m;g=C?p:g;i=C?i:p;j=C?n:j;k=C?k:n}h[a>>3]=m;h[a+8>>3]=n;l=z;return}function WA(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;d=+EA(b,c[42190]|0,.75,.01);g=b+16|0;h[(c[g>>2]|0)+32>>3]=d;d=+EA(b,c[42189]|0,.5,.02);h[(c[g>>2]|0)+40>>3]=d;l=Qy(GA(b,c[42191]|0,93019)|0,b)|0;c[(c[g>>2]|0)+8>>2]=l;l=Jm(b,c[42198]|0)|0;d=+EA(b,c[42194]|0,14.0,1.0);e=GA(b,c[42195]|0,93027)|0;f=GA(b,c[42196]|0,122106)|0;i=(cp(l)|0)!=0;k=(By(b)|0)==2;i=lw(b,l,(k?4:0)|(i?2:0),d,e,f)|0;c[(c[g>>2]|0)+104>>2]=i;i=c[42199]|0;if((i|0?(j=Jm(b,i)|0,j|0):0)?a[j>>0]|0:0){l=(cp(j)|0)!=0;l=lw(b,j,l?2:0,d,e,f)|0;c[(c[g>>2]|0)+108>>2]=l;l=(c[(ro(b)|0)+16>>2]|0)+113|0;a[l>>0]=a[l>>0]|16}k=(DA(b,c[42202]|0,0,0)|0)&255;l=c[g>>2]|0;a[l+144>>0]=k;gb[c[c[(c[l+8>>2]|0)+4>>2]>>2]&127](b);return}function XA(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+112|0;m=v+96|0;n=v+80|0;s=v+40|0;u=v;r=b+48|0;p=ro(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)|0;g=m+8|0;c[g>>2]=0;o=n+8|0;c[o>>2]=0;d=c[42226]|0;if(((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0){YA(b,m);t=(cp(e)|0)!=0;i=+h[m>>3];f=c[g>>2]|0;d=c[m+12>>2]|0;e=lw(b,e,t?2:0,i,f,d)|0;t=b+16|0;c[(c[t>>2]|0)+96>>2]=e;e=(c[p+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|1;e=IA(FA(b,c[42236]|0,122100)|0)|0;a[(c[t>>2]|0)+114>>0]=e;t=1;e=f}else{t=0;d=0;i=0.0;e=0}f=c[42227]|0;if((f|0?(j=Jm(b,f)|0,j|0):0)?a[j>>0]|0:0){if(!e){YA(b,m);i=+h[m>>3];e=c[g>>2]|0;d=c[m+12>>2]|0}g=(cp(j)|0)!=0;j=lw(b,j,g?2:0,i,e,d)|0;c[(c[b+16>>2]|0)+108>>2]=j;j=(c[p+16>>2]|0)+113|0;a[j>>0]=a[j>>0]|32}d=c[42241]|0;if(((d|0)!=0?(k=Jm(b,d)|0,(k|0)!=0):0)?(a[k>>0]|0)!=0:0){ZA(b,m,n);j=(cp(k)|0)!=0;i=+h[n>>3];d=c[o>>2]|0;e=c[n+12>>2]|0;k=lw(b,k,j?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+100>>2]=k;k=(c[p+16>>2]|0)+113|0;a[k>>0]=a[k>>0]|2}else{e=0;i=0.0;d=0}f=c[42242]|0;if((f|0?(q=Jm(b,f)|0,q|0):0)?a[q>>0]|0:0){if(!d){ZA(b,m,n);e=c[n+12>>2]|0;i=+h[n>>3];d=c[o>>2]|0}o=(cp(q)|0)!=0;q=lw(b,q,o?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+104>>2]=q;q=(c[p+16>>2]|0)+113|0;a[q>>0]=a[q>>0]|4}d=Im(b,96242)|0;d=d|0?d:174181;if(a[d>>0]|0)a[(c[(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)+16>>2]|0)+145>>0]=1;g=b+16|0;f=(c[g>>2]|0)+16|0;e=c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0;_A(s,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=s;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if(($A(b,c[42248]|0)|0)<<24>>24)a[(c[g>>2]|0)+46>>0]=0;d=Im(b,96251)|0;d=d|0?d:174181;if(!(a[d>>0]|0))e=b+-48|0;else{e=b+-48|0;a[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+145>>0]=1}f=(c[g>>2]|0)+56|0;e=c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0;_A(u,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=u;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if(($A(b,c[42249]|0)|0)<<24>>24)a[(c[g>>2]|0)+86>>0]=0;l=v;return t|0}function YA(a,b){a=a|0;b=b|0;h[b>>3]=+EA(a,c[42223]|0,14.0,1.0);c[b+8>>2]=GA(a,c[42224]|0,93027)|0;c[b+12>>2]=GA(a,c[42225]|0,122106)|0;return}function ZA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+8|0;if(!(c[e>>2]|0))YA(a,b);h[d>>3]=+EA(a,c[42243]|0,+h[b>>3],1.0);c[d+8>>2]=GA(a,c[42244]|0,c[e>>2]|0)|0;c[d+12>>2]=GA(a,c[42245]|0,c[b+12>>2]|0)|0;return}function _A(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+128|0;k=m+80|0;h=m+40|0;g=m;if((f|0)!=0?(j=WJ(f,58)|0,(j|0)!=0):0){a[j>>0]=0;i=j+1|0;kb[d&31](h,e,f,i);e=k;g=h;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));a[j>>0]=58;f=i}else{kb[d&31](g,e,f,0);e=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0))}e=b;g=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[b+36>>2]=f;l=m;return}function $A(b,c){b=b|0;c=c|0;var d=0;if(((c|0)!=0?(d=Jm(b,c)|0,(d|0)!=0):0)?(a[d>>0]|0)!=0:0)b=(IA(d)|0)<<24>>24==0&1;else b=0;return b|0}function aB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;k=l;l=l+32|0;i=k;j=c[b+8>>2]|0;d=c[b+4>>2]|0;d=(c[b+44>>2]|0)+((O((d|0)>1?d+-1|0:0,j)|0)<<4)|0;e=i+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];f=i+8|0;g=i+24|0;b=1;while(1){if((b|0)>=(j|0))break;m=d+(b<<4)|0;o=+h[m>>3];h[i>>3]=+h[(+h[i>>3]<o?i:m)>>3];n=+h[m+8>>3];h[f>>3]=+h[(+h[f>>3]<n?i:m)+8>>3];h[e>>3]=+h[(+h[e>>3]>o?e:m)>>3];h[g>>3]=+h[(+h[g>>3]>n?e:m)+8>>3];b=b+1|0}c[a>>2]=c[i>>2];c[a+4>>2]=c[i+4>>2];c[a+8>>2]=c[i+8>>2];c[a+12>>2]=c[i+12>>2];c[a+16>>2]=c[i+16>>2];c[a+20>>2]=c[i+20>>2];c[a+24>>2]=c[i+24>>2];c[a+28>>2]=c[i+28>>2];l=k;return}function bB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+64|0;g=d+32|0;e=d;f=c[a+16>>2]|0;a=f+16|0;f=c[f+116>>2]&1;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];cB(e,g,b,f);c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];c[a+24>>2]=c[e+24>>2];c[a+28>>2]=c[e+28>>2];l=d;return}function cB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;g=+h[d+56>>3];l=+h[d+64>>3];j=e<<24>>24==0;k=+h[d+24>>3];i=+h[d+32>>3];m=(j?k:i)*.5;f=g-m;g=m+g;if(f<+h[b>>3])h[b>>3]=f;e=b+16|0;if(g>+h[e>>3])h[e>>3]=g;g=(j?i:k)*.5;f=l-g;g=g+l;e=b+8|0;if(f<+h[e>>3])h[e>>3]=f;e=b+24|0;if(g>+h[e>>3])h[e>>3]=g;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function dB(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0.0,P=0.0;L=l;l=l+448|0;H=L+416|0;t=L+384|0;u=L+304|0;K=L+256|0;G=L+192|0;B=L+144|0;C=L+96|0;d=L+400|0;e=L+368|0;f=L+352|0;g=L+336|0;v=L+288|0;w=L+224|0;x=L+160|0;y=L+112|0;z=L+64|0;A=L+32|0;I=L;J=b+16|0;if((mn(b)|0)==0?(c[(c[J>>2]|0)+180>>2]|0)==0:0){eB(d,0.0,0.0);c[K>>2]=c[d>>2];c[K+4>>2]=c[d+4>>2];c[K+8>>2]=c[d+8>>2];c[K+12>>2]=c[d+12>>2];K=K+16|0;eB(e,0.0,0.0);c[K>>2]=c[e>>2];c[K+4>>2]=c[e+4>>2];c[K+8>>2]=c[e+8>>2];c[K+12>>2]=c[e+12>>2]}else{eB(f,2147483647.0,2147483647.0);c[K>>2]=c[f>>2];c[K+4>>2]=c[f+4>>2];c[K+8>>2]=c[f+8>>2];c[K+12>>2]=c[f+12>>2];F=K+16|0;eB(g,-2147483647.0,-2147483647.0);c[F>>2]=c[g>>2];c[F+4>>2]=c[g+4>>2];c[F+8>>2]=c[g+8>>2];c[F+12>>2]=c[g+12>>2];o=C+8|0;p=u+16|0;D=K+8|0;q=u+8|0;E=K+24|0;r=u+24|0;s=B+8|0;n=co(b)|0;while(1){if(!n)break;OA(B,n);d=n+16|0;m=c[d>>2]|0;h[C>>3]=(+h[m+96>>3]+ +h[m+88>>3])*.5;h[o>>3]=+h[m+80>>3]*.5;c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];fB(u,t,H);c[t>>2]=c[B>>2];c[t+4>>2]=c[B+4>>2];c[t+8>>2]=c[B+8>>2];c[t+12>>2]=c[B+12>>2];c[H>>2]=c[C>>2];c[H+4>>2]=c[C+4>>2];c[H+8>>2]=c[C+8>>2];c[H+12>>2]=c[C+12>>2];gB(v,t,H);c[p>>2]=c[v>>2];c[p+4>>2]=c[v+4>>2];c[p+8>>2]=c[v+8>>2];c[p+12>>2]=c[v+12>>2];h[K>>3]=+h[(+h[K>>3]<+h[u>>3]?K:u)>>3];h[D>>3]=+h[(+h[D>>3]<+h[q>>3]?K:u)+8>>3];h[F>>3]=+h[(+h[F>>3]>+h[p>>3]?K:u)+16>>3];h[E>>3]=+h[(+h[E>>3]>+h[r>>3]?K:u)+24>>3];d=c[(c[d>>2]|0)+108>>2]|0;if(d|0?a[d+81>>0]|0:0){m=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(w,H,d,m);c[K>>2]=c[w>>2];c[K+4>>2]=c[w+4>>2];c[K+8>>2]=c[w+8>>2];c[K+12>>2]=c[w+12>>2];c[K+16>>2]=c[w+16>>2];c[K+20>>2]=c[w+20>>2];c[K+24>>2]=c[w+24>>2];c[K+28>>2]=c[w+28>>2]}m=Pm(b,n)|0;while(1){if(!m)break;k=m+16|0;d=c[k>>2]|0;j=d+8|0;e=c[j>>2]|0;if(e|0){i=0;while(1){if((i|0)<(c[e+4>>2]|0))g=0;else break;while(1){f=c[e>>2]|0;if((g|0)>=(c[f+(i*48|0)+4>>2]|0))break;e=(c[f+(i*48|0)>>2]|0)+(g<<4)|0;c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];N=+h[B>>3];h[K>>3]=+h[(+h[K>>3]<N?K:B)>>3];M=+h[s>>3];h[D>>3]=+h[(+h[D>>3]<M?K:B)+8>>3];h[F>>3]=+h[(+h[F>>3]>N?F:B)>>3];h[E>>3]=+h[(+h[E>>3]>M?F:B)+8>>3];g=g+1|0;e=c[j>>2]|0}i=i+1|0}e=c[d+96>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(x,H,e,d);c[K>>2]=c[x>>2];c[K+4>>2]=c[x+4>>2];c[K+8>>2]=c[x+8>>2];c[K+12>>2]=c[x+12>>2];c[K+16>>2]=c[x+16>>2];c[K+20>>2]=c[x+20>>2];c[K+24>>2]=c[x+24>>2];c[K+28>>2]=c[x+28>>2];d=c[k>>2]|0}e=c[d+100>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(y,H,e,d);c[K>>2]=c[y>>2];c[K+4>>2]=c[y+4>>2];c[K+8>>2]=c[y+8>>2];c[K+12>>2]=c[y+12>>2];c[K+16>>2]=c[y+16>>2];c[K+20>>2]=c[y+20>>2];c[K+24>>2]=c[y+24>>2];c[K+28>>2]=c[y+28>>2];d=c[k>>2]|0}e=c[d+104>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(z,H,e,d);c[K>>2]=c[z>>2];c[K+4>>2]=c[z+4>>2];c[K+8>>2]=c[z+8>>2];c[K+12>>2]=c[z+12>>2];c[K+16>>2]=c[z+16>>2];c[K+20>>2]=c[z+20>>2];c[K+24>>2]=c[z+24>>2];c[K+28>>2]=c[z+28>>2];d=c[k>>2]|0}d=c[d+108>>2]|0;if(d|0?a[d+81>>0]|0:0){k=c[(c[J>>2]|0)+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(A,H,d,k);c[K>>2]=c[A>>2];c[K+4>>2]=c[A+4>>2];c[K+8>>2]=c[A+8>>2];c[K+12>>2]=c[A+12>>2];c[K+16>>2]=c[A+16>>2];c[K+20>>2]=c[A+20>>2];c[K+24>>2]=c[A+24>>2];c[K+28>>2]=c[A+28>>2]}}m=Rm(b,m)|0}n=eo(b,n)|0}d=c[J>>2]|0;f=c[d+180>>2]|0;g=d+184|0;i=G+8|0;j=G+16|0;k=G+24|0;e=1;while(1){if((e|0)>(f|0))break;P=+h[(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+16>>3];h[G>>3]=P;C=c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0;O=+h[C+24>>3];h[i>>3]=O;M=+h[C+32>>3];h[j>>3]=M;N=+h[C+40>>3];h[k>>3]=N;h[K>>3]=+h[(+h[K>>3]<P?K:G)>>3];h[D>>3]=+h[(+h[D>>3]<O?K:G)+8>>3];h[F>>3]=+h[(+h[F>>3]>M?K:G)+16>>3];h[E>>3]=+h[(+h[E>>3]>N?K:G)+24>>3];e=e+1|0}e=c[d+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[d+116>>2]&1;c[H>>2]=c[K>>2];c[H+4>>2]=c[K+4>>2];c[H+8>>2]=c[K+8>>2];c[H+12>>2]=c[K+12>>2];c[H+16>>2]=c[K+16>>2];c[H+20>>2]=c[K+20>>2];c[H+24>>2]=c[K+24>>2];c[H+28>>2]=c[K+28>>2];cB(I,H,e,d);c[K>>2]=c[I>>2];c[K+4>>2]=c[I+4>>2];c[K+8>>2]=c[I+8>>2];c[K+12>>2]=c[I+12>>2];c[K+16>>2]=c[I+16>>2];c[K+20>>2]=c[I+20>>2];c[K+24>>2]=c[I+24>>2];c[K+28>>2]=c[I+28>>2];d=c[J>>2]|0}J=d+16|0;c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];c[J+16>>2]=c[K+16>>2];c[J+20>>2]=c[K+20>>2];c[J+24>>2]=c[K+24>>2];c[J+28>>2]=c[K+28>>2]}l=L;return}function eB(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function fB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function gB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3]=d;return}function hB(a){a=a|0;if((c[a+60>>2]|0)==(a|0))a=1;else a=(pK(Dn(a)|0,93039,7)|0)==0&1;return a|0}function iB(a){a=a|0;var b=0;b=Ql(22612,c[4345]|0)|0;lB(a,b);return b|0}function jB(a,b){a=a|0;b=b|0;a=bb[c[a>>2]&31](a,b,512)|0;if(!a)a=0;else a=c[a+12>>2]|0;return a|0}function kB(a,b,c){a=a|0;b=b|0;c=c|0;c=an(ro(b)|0,b,c,0,1)|0;No(c,122254,176,1)|0;Mm(a,c)|0;return c|0}function lB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;f=a+16|0;e=1;while(1){a=c[f>>2]|0;if((e|0)>(c[a+180>>2]|0))break;a=c[(c[a+184>>2]|0)+(e<<2)>>2]|0;d=Dn(a)|0;if(!(bb[c[b>>2]&31](b,d,512)|0)){i=vw(16)|0;c[i+8>>2]=d;c[i+12>>2]=a;bb[c[b>>2]&31](b,i,1)|0}else{c[g>>2]=d;_l(0,93062,g)|0}lB(a,b);e=e+1|0}l=h;return}function mB(a,b,c){a=a|0;b=b|0;c=c|0;_I(b);return}function nB(a){a=a|0;var b=0,c=0,d=0;d=Ip(a,93047,1)|0;No(d,122277,280,1)|0;b=co(a)|0;while(1){if(!b)break;c=Pm(a,b)|0;while(1){if(!c)break;oB(c,d);c=Rm(a,c)|0}b=eo(a,b)|0}b=co(d)|0;while(1){if(!b)break;c=eo(d,b)|0;pB(b);qo(a,b)|0;b=c}ln(d)|0;return}function oB(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b>>2]&3;f=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;if(!((a[(c[f+16>>2]|0)+118>>0]|0)==0?!(a[(c[e+16>>2]|0)+118>>0]|0):0)){f=qB(f,d)|0;e=kB(b,f,qB(e,d)|0)|0;f=c[b+16>>2]|0;d=f+8|0;e=c[e+16>>2]|0;c[e+8>>2]=c[d>>2];c[d>>2]=0;d=f+96|0;c[e+96>>2]=c[d>>2];c[d>>2]=0;d=f+108|0;c[e+108>>2]=c[d>>2];c[d>>2]=0;d=f+100|0;c[e+100>>2]=c[d>>2];c[d>>2]=0;f=f+104|0;c[e+104>>2]=c[f>>2];c[f>>2]=0;rB(b)}return}function pB(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+132>>2]|0;if(d){_I(d);b=c[e>>2]|0}d=c[b+8>>2]|0;if(d){gb[c[(c[d+4>>2]|0)+4>>2]&127](a);b=c[e>>2]|0}ow(c[b+104>>2]|0);ow(c[(c[e>>2]|0)+108>>2]|0);Po(a,122241)|0;return}function qB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=ro(b)|0;a:do if(a[(c[b+16>>2]|0)+118>>0]|0){io(d,b,1)|0;b=WJ(Dn(b)|0,58)|0;if(!b)ma(96030,92694,1225,93114);d=b+1|0;b=no(f,d,0)|0;if(!b){b=no(f,d,1)|0;No(b,122241,304,1)|0;d=Dm(f,1,0)|0;while(1){if(!d)break a;g=Jm(b,d)|0;e=c[d+12>>2]|0;if((g|0)!=(e|0))Cm(b,d,e)|0;d=Dm(f,1,d)|0}}}while(0);return b|0}function rB(a){a=a|0;var b=0;b=a+16|0;_I(c[(c[b>>2]|0)+144>>2]|0);sB(a);ow(c[(c[b>>2]|0)+96>>2]|0);ow(c[(c[b>>2]|0)+108>>2]|0);ow(c[(c[b>>2]|0)+100>>2]|0);ow(c[(c[b>>2]|0)+104>>2]|0);Po(a,122254)|0;return}function sB(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;a=c[e>>2]|0;b=c[a+8>>2]|0;if(b){d=0;while(1){a=c[b>>2]|0;if((d|0)>=(c[b+4>>2]|0))break;_I(c[a+(d*48|0)>>2]|0);d=d+1|0;b=c[(c[e>>2]|0)+8>>2]|0}_I(a);_I(c[(c[e>>2]|0)+8>>2]|0);a=c[e>>2]|0}c[a+8>>2]=0;return}function tB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=ym(a,b,c,0)|0;if(!e)e=ym(a,b,c,d)|0;return e|0}function uB(a,b){a=a|0;b=b|0;return xJ(c[a>>2]|0,c[b>>2]|0)|0}function vB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+1072|0;k=q+8|0;j=q;i=q+16|0;o=q+24|0;c[i>>2]=b;if((c[42365]|0)!=(d|0)){c[42365]=d;a[174080]=0}cm(o,1024,q+40|0);p=o+4|0;n=o+8|0;while(1){f=b+1|0;c[i>>2]=f;e=a[b>>0]|0;if(!(e<<24>>24))break;do if((e&255)<192)if(e<<24>>24==38){f=xB(i)|0;if(!f)e=38;else{if(f>>>0<127){e=f&255;break}b=c[p>>2]|0;e=b>>>0>=(c[n>>2]|0)>>>0;if(f>>>0<2047){if(e){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6|192;e=(f&63|128)&255;break}if(e){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>12|224;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=f>>>6&63|128;e=(f&63|128)&255}}else{h=0;m=9}else if((e&255)>=224)if((e&255)>=240)if((e&255)<248){h=3;m=9}else{if(!(a[174080]|0)){c[j>>2]=Dn(d)|0;_l(0,94529,j)|0;a[174080]=1}h=-1;e=wB(e,o)|0;m=9}else{h=2;m=9}else{h=1;m=9}while(0);do if((m|0)==9){m=0;g=0;while(1){if((g|0)>=(h|0)){m=34;break}if((a[f>>0]&-64)<<24>>24!=-128)break;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;g=g+1|0;e=a[f>>0]|0;f=f+1|0}if((m|0)==34){m=0;c[i>>2]=f;break}c[i>>2]=f;if(!(a[174080]|0)){g=Dn(d)|0;c[k>>2]=h+1;c[k+4>>2]=g;_l(0,94650,k)|0;a[174080]=1}e=wB(e,o)|0}while(0);b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;b=c[i>>2]|0}b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}a[b>>0]=0;n=c[o>>2]|0;c[p>>2]=n;p=GL(n)|0;gm(o);l=q;return p|0}function wB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+16|0;g=j;a[g>>0]=b;a[g+1>>0]=0;g=yB(g)|0;h=d+4|0;i=d+8|0;e=rJ(g)|0;f=g;while(1){if((e|0)<=1)break;b=c[h>>2]|0;if(b>>>0>=(c[i>>2]|0)>>>0){dm(d,1)|0;b=c[h>>2]|0}k=a[f>>0]|0;c[h>>2]=b+1;a[b>>0]=k;e=e+-1|0;f=f+1|0}k=a[f>>0]|0;_I(g);l=j;return k|0}function xB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;d=i+8|0;e=c[b>>2]|0;a:do if((a[e>>0]|0)!=35){c[h>>2]=d;g=0;b:while(1){if((g|0)>=8){d=0;break a}f=a[e+g>>0]|0;switch(f<<24>>24){case 0:{d=0;break a}case 59:break b;default:{}}a[d>>0]=f;d=d+1|0;g=g+1|0}a[d>>0]=0;d=vM(h,22648,252,8,30)|0;if(!d)d=0;else{e=e+(g+1)|0;d=c[d+4>>2]|0}}else{h=a[e+1>>0]|0;d=h&255;c:do if((h|32)<<24>>24==120){h=0;g=2;while(1){if((g|0)>=8){f=h;break c}f=a[e+g>>0]|0;d=f&255;if((f+-65&255)>=6)if((f+-97&255)>=6)if((f+-48&255)<10)f=-48;else{f=h;break c}else f=-87;else f=-55;d=f+d|0;h=d+(h<<4)|0;g=g+1|0}}else{f=0;g=1;while(1){if((g|0)>=8)break c;h=a[e+g>>0]|0;d=h&255;if((h+-48&255)>=10)break c;f=(f*10|0)+-48+d|0;g=g+1|0}}while(0);d=(d|0)==59;e=d?e+(g+1)|0:e;d=d?f:0}while(0);c[b>>2]=e;l=i;return d|0}function yB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+1056|0;g=k;i=k+8|0;c[g>>2]=b;cm(i,1024,k+24|0);j=i+4|0;h=i+8|0;while(1){c[g>>2]=b+1;d=a[b>>0]|0;if(!(d<<24>>24))break;b=d&255;if(d<<24>>24==38){b=xB(g)|0;if(!b){b=38;f=6}else f=5}else f=5;do if((f|0)==5){f=0;if(b>>>0<127)f=6;else{d=c[j>>2]|0;e=d>>>0>=(c[h>>2]|0)>>>0;if(b>>>0<2047){if(e){dm(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6|192;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;d=c[j>>2]|0}b=b&63|128;break}if(e){dm(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>12|224;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=b>>>6&63|128;d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;d=c[j>>2]|0}b=b&63|128}}while(0);if((f|0)==6){d=c[j>>2]|0;if(d>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;d=c[j>>2]|0}}c[j>>2]=d+1;a[d>>0]=b;b=c[g>>2]|0}b=c[j>>2]|0;if(b>>>0>=(c[h>>2]|0)>>>0){dm(i,1)|0;b=c[j>>2]|0}a[b>>0]=0;h=c[i>>2]|0;c[j>>2]=h;j=GL(h)|0;gm(i);l=k;return j|0}function zB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+1040|0;g=i;cm(g,1024,i+16|0);h=g+4|0;f=g+8|0;while(1){d=b+1|0;e=a[b>>0]|0;if(!(e<<24>>24))break;if((e&255)<127){b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){dm(g,1)|0;b=c[h>>2]|0}c[h>>2]=b+1;a[b>>0]=e;b=d;continue}else{e=a[d>>0]&63|e<<6&255;d=c[h>>2]|0;if(d>>>0>=(c[f>>2]|0)>>>0){dm(g,1)|0;d=c[h>>2]|0}c[h>>2]=d+1;a[d>>0]=e;b=b+2|0;continue}}b=c[h>>2]|0;if(b>>>0>=(c[f>>2]|0)>>>0){dm(g,1)|0;b=c[h>>2]|0}a[b>>0]=0;f=c[g>>2]|0;c[h>>2]=f;h=GL(f)|0;gm(g);l=i;return h|0}function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;e=n+48|0;d=n+32|0;f=n+64|0;g=n+16|0;i=n;j=b+16|0;k=a+16|0;m=c[k>>2]|0;if(((+h[j>>3]>=+h[m+48>>3]?+h[m+64>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=+h[m+56>>3]:0)?+h[m+72>>3]>=+h[b+8>>3]:0){m=m+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];BB(g,d,e);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];fB(i,d,e);c[f>>2]=a;c[f+4>>2]=0;d=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];d=ab[d&63](f,e)|0}else d=0;l=n;return d|0}function BB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function CB(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;e=l;l=l+80|0;j=e+64|0;k=e+48|0;m=e;n=e+32|0;g=e+16|0;h[m>>3]=+h[a+24>>3]*.5;h[m+8>>3]=+h[a+32>>3]*.5;a=a+56|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];fB(n,k,j);i=+h[n>>3];f=+h[n+8>>3];c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];gB(g,k,j);d=+h[g+8>>3];if((+h[b+16>>3]>=i?+h[g>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=f:0)a=d>=+h[b+8>>3]&1;else a=0;l=e;return a|0}function DB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;k=n+48|0;j=n;h=a+16|0;a=c[h>>2]|0;i=c[a+8>>2]|0;a:do if((i|0)!=0?(g=i+8|0,c[j>>2]=c[g>>2],c[j+4>>2]=c[g+4>>2],c[j+8>>2]=c[g+8>>2],c[j+12>>2]=c[g+12>>2],c[j+16>>2]=c[g+16>>2],c[j+20>>2]=c[g+20>>2],c[j+24>>2]=c[g+24>>2],c[j+28>>2]=c[g+28>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(EB(j,k)|0)!=0):0){d=i+4|0;a=0;while(1){if((a|0)>=(c[d>>2]|0))break;e=j;f=(c[i>>2]|0)+(a*48|0)|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if(!((FB(j,k)|0)<<24>>24))a=a+1|0;else{a=1;break a}}a=c[h>>2]|0;m=7}else m=7;while(0);do if((m|0)==7){a=c[a+96>>2]|0;if(a|0?(c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(CB(a,k)|0)<<24>>24):0){a=1;break}a=0}while(0);l=n;return a|0}\nfunction si(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;i=vw((b[(c[h>>2]|0)+238>>1]<<2)+8|0)|0;g=co(a)|0;while(1){if(!g)break;f=i+(c[(c[g+16>>2]|0)+232>>2]<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=Pm(a,g)|0;while(1){if(!f)break;j=c[f>>2]&3;d=c[(c[(c[((j|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;j=c[(c[(c[((j|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;k=(d|0)>(j|0);e=k?d:j;d=k?j:d;while(1){d=d+1|0;if((d|0)>=(e|0))break;k=i+(d<<2)|0;c[k>>2]=(c[k>>2]|0)+1}f=Rm(a,f)|0}g=eo(a,g)|0}f=vw((b[(c[h>>2]|0)+238>>1]<<6)+128|0)|0;e=c[h>>2]|0;c[e+196>>2]=f;d=b[e+236>>1]|0;while(1){if((d|0)>(b[e+238>>1]|0))break;j=i+(d<<2)|0;e=c[j>>2]|0;c[f+(d<<6)>>2]=e;c[f+(d<<6)+8>>2]=e;j=vw((c[j>>2]<<2)+4|0)|0;e=c[h>>2]|0;k=c[e+196>>2]|0;c[k+(d<<6)+4>>2]=j;c[k+(d<<6)+12>>2]=j;d=d+1|0;f=k}_I(i);return}function ti(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;i=1;while(1){g=c[m>>2]|0;if((i|0)>(c[g+180>>2]|0))break;l=ti(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,d,e,f)|0;i=i+1|0;f=l}a:do if((Vf(a)|0)!=(a|0)){VN(d|0,0,e<<2|0)|0;g=co(a)|0;while(1){if(!g)break;k=g+16|0;c[d+(c[(c[k>>2]|0)+232>>2]<<2)>>2]=1;i=Pm(a,g)|0;while(1){if(!i)break;l=i+-48|0;j=c[(c[k>>2]|0)+232>>2]|0;while(1){e=j+1|0;if((j|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:l)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;c[d+(e<<2)>>2]=1;j=e}i=Rm(a,i)|0}g=eo(a,g)|0}g=c[m>>2]|0;i=b[g+236>>1]|0;while(1){if((i|0)>(b[g+238>>1]|0))break a;if(!(c[d+(i<<2)>>2]|0)){if(!f)f=Ip(Vf(a)|0,79522,1)|0;g=no(f,0,1)|0;No(g,122241,304,1)|0;l=g+16|0;j=c[l>>2]|0;c[j+232>>2]=i;h[j+96>>3]=.5;h[j+88>>3]=.5;h[j+80>>3]=1.0;c[j+216>>2]=1;c[j+176>>2]=0;j=vw(20)|0;k=c[l>>2]|0;c[k+172>>2]=j;c[k+184>>2]=0;k=vw(20)|0;c[(c[l>>2]|0)+180>>2]=k;io(a,g,1)|0;g=c[m>>2]|0}i=i+1|0}}while(0);return f|0}function ui(a){a=a|0;var b=0,d=0;Kh(a);b=a+16|0;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;ui(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function vi(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=wi(c[((b|0)==3?a:a+48|0)+40>>2]|0)|0;b=c[17236+(d*12|0)+((wi(c[((b|0)==2?a:a+-48|0)+40>>2]|0)|0)<<2)>>2]|0;a=(c[a+16>>2]|0)+156|0;c[a>>2]=O(c[a>>2]|0,b)|0;return}function wi(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)b=2;else b=(a[b+160>>0]|0)<2&1;return b|0}function xi(b,d){b=b|0;d=d|0;if(c[(c[b+16>>2]|0)+192>>2]|0){Yk(b);yi(b);if(a[174076]|0)kl(b);zi(b);if(Cl(b)|0)yi(b);Ai(b);if(gx(b,2,Bi(b)|0)|0?(Ci(b),gx(b,2,Bi(b)|0)|0):0)ma(79540,79568,134,79579);Di(b);Ei(b,d);Fi(b)}return}function yi(d){d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;v=d+16|0;e=c[v>>2]|0;w=c[e+196>>2]|0;t=b[e+236>>1]|0;while(1){if((t|0)>(b[e+238>>1]|0))break;n=w+(t<<6)|0;o=w+(t<<6)+4|0;p=w+(t<<6)+40|0;q=w+(t<<6)+24|0;r=w+(t<<6)+32|0;s=w+(t<<6)+16|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break;l=(c[(c[o>>2]|0)+(m<<2)>>2]|0)+16|0;e=c[l>>2]|0;j=+h[e+80>>3]*.5;i=c[e+204>>2]|0;a:do if(i){g=0;while(1){f=c[i+(g<<2)>>2]|0;if(!f)break a;x=c[f>>2]&3;if((c[((x|0)==3?f:f+48|0)+40>>2]|0)==(c[((x|0)==2?f:f+-48|0)+40>>2]|0)?(u=c[(c[f+16>>2]|0)+96>>2]|0,(u|0)!=0):0){k=+h[u+32>>3]*.5;j=j>k?j:k}g=g+1|0}}while(0);if(+h[p>>3]<j){h[q>>3]=j;h[p>>3]=j}if(+h[r>>3]<j){h[s>>3]=j;h[r>>3]=j}f=c[e+212>>2]|0;if(f|0){if((f|0)==(d|0))g=0;else{g=DA(f,c[42188]|0,8,0)|0;e=c[l>>2]|0}i=c[e+232>>2]|0;f=c[f+16>>2]|0;e=f+128|0;j=j+ +(g|0);if((i|0)==(b[f+236>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}e=f+120|0;if((i|0)==(b[f+238>>1]|0)){k=+h[e>>3];h[e>>3]=k>j?k:j}}m=m+1|0}t=t+1|0;e=c[v>>2]|0}m=ej(d)|0;g=c[v>>2]|0;e=b[g+238>>1]|0;h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[w+(e<<6)+16>>3];f=b[g+236>>1]|0;i=g+252|0;k=0.0;while(1){l=e+-1|0;if((e|0)<=(f|0))break;y=+h[w+(l<<6)+32>>3]+ +h[w+(e<<6)+40>>3]+ +(c[i>>2]|0);j=+h[w+(e<<6)+24>>3]+8.0+ +h[w+(l<<6)+16>>3];j=y>j?y:j;if((c[w+(l<<6)>>2]|0)>0)h[(c[(c[c[w+(l<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+j;k=k>j?k:j;e=l}b:do if((m|0)!=0?(c[g+116>>2]&1|0)!=0:0){fj(d,0);g=c[v>>2]|0;if(a[g+276>>0]|0){e=b[g+238>>1]|0;f=b[g+236>>1]|0;j=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];k=0.0;while(1){i=e+-1|0;if((e|0)<=(f|0))break b;z=+h[(c[(c[c[w+(i<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];y=z-j;j=z;k=k>y?k:y;e=i}}}while(0);c:do if(a[g+276>>0]|0){i=b[g+236>>1]|0;f=b[g+238>>1]|0;while(1){e=f+-1|0;if((f|0)<=(i|0))break c;if((c[w+(e<<6)>>2]|0)<=0){f=e;continue}h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[(c[(c[c[w+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+k;f=e}}while(0);e=g+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;h[e+24>>3]=+h[(c[(c[c[w+(c[e+232>>2]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];e=e+164|0}return}function zi(a){a=a|0;var b=0,d=0,e=0;aj(a);b=(c[a+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+224>>2]|0;if(d){bj(a,d);b=c[e>>2]|0}d=c[b+228>>2]|0;if(!d)d=b;else{bj(a,d);d=c[e>>2]|0}e=c[d+204>>2]|0;if(e|0){b=0;while(1)if(!(c[e+(b<<2)>>2]|0))break;else b=b+1|0}b=d+164|0}return}function Ai(a){a=a|0;Oi(a);Pi(a);Qi(a);Ri(a);Si(a);return}function Bi(a){a=a|0;var b=0,c=0.0;b=Im(a,79768)|0;if(!b)a=2147483647;else{c=+sM(b);a=~~(c*+(mn(a)|0))}return a|0}function Ci(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+16|0;e=c[r>>2]|0;q=b[e+236>>1]|0;while(1){p=b[e+238>>1]|0;if((q|0)>(p|0)){s=19;break}n=c[e+196>>2]|0;o=n+(q<<6)|0;m=c[o>>2]|0;n=n+(q<<6)+4|0;l=0;f=0;a:while(1){if((l|0)>=(m|0)){s=14;break}f=c[(c[n>>2]|0)+(l<<2)>>2]|0;h=c[f+16>>2]|0;i=c[h+256>>2]|0;b:do if(i|0){g=0;while(1){j=c[i+(g<<2)>>2]|0;if(!j)break b;k=c[j>>2]&3;if((c[(c[(c[((k|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((k|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);h=c[h+248>>2]|0;c:do if(h|0){g=0;while(1){i=c[h+(g<<2)>>2]|0;if(!i)break c;j=c[i>>2]&3;if((c[(c[(c[((j|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((j|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);l=l+1|0}if((s|0)==14){s=0;if(f){f=c[c[n>>2]>>2]|0;e=c[c[o+(((q|0)<(p|0)?1:-1)<<6)+4>>2]>>2]|0;if(!e){s=16;break}o=fh(d)|0;p=o+16|0;a[(c[p>>2]|0)+156>>0]=2;Mi(o,f,0.0,0)|0;Mi(o,e,0.0,0)|0;c[(c[p>>2]|0)+232>>2]=c[(c[((c[(c[f+16>>2]|0)+232>>2]|0)<(c[(c[e+16>>2]|0)+232>>2]|0)?f:e)+16>>2]|0)+232>>2];e=c[r>>2]|0}}q=q+1|0}if((s|0)==16)ma(79676,79568,111,79679);else if((s|0)==19)return}function Di(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;a=c[a+16>>2]|0;i=c[a+196>>2]|0;e=b[a+238>>1]|0;a=b[a+236>>1]|0;while(1){if((a|0)>(e|0))break;f=c[i+(a<<6)>>2]|0;g=i+(a<<6)+4|0;d=0;while(1){if((d|0)>=(f|0))break;k=c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;j=k+232|0;h[k+16>>3]=+(c[j>>2]|0);c[j>>2]=a;d=d+1|0}a=a+1|0}return}function Ei(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0;Gi(a,a);g=a+16|0;k=c[g>>2]|0;a:do if((b[k+238>>1]|0)>0?(j=c[k+8>>2]|0,e=c[j+84>>2]|0,e|0):0){o=~~(+h[k+32>>3]-+h[k+16>>3]);m=~~(+h[k+40>>3]-+h[k+24>>3]);p=(c[k+116>>2]&1|0)==0;n=p?m:o;m=p?o:m;if((e|0)==4){e=Hi(a)|0;k=c[g>>2]|0;j=c[k+8>>2]|0}else e=(e|0)==2&1;b:do if(!(e<<24>>24)){switch(c[j+84>>2]|0){case 5:{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+h[k+32>>3];l=+h[j+72>>3]/+h[k+40>>3];f=i<l?i:l;if(i>1.0&l>1.0){l=f;break b}else break a}case 1:break;default:break a}i=+h[j+16>>3];f=+(n|0)/+(m|0);if(f<i){l=1.0;f=i/f;break}else{l=f/i;f=1.0;break}}else{f=+h[j+64>>3];if(f<=0.0)break a;i=f/+(m|0);f=+h[j+72>>3]/+(n|0);if(i<1.0|f<1.0)if(i<f){l=1.0;f=f/i;break}else{l=i/f;f=1.0;break}else l=i}while(0);e=(c[k+116>>2]&1|0)==0;i=e?f:l;f=e?l:f;e=k+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;p=e+16|0;l=+h[p>>3]*f;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);p=e+24|0;l=+h[p>>3]*i;h[p>>3]=+(~~(l+(l>=0.0?.5:-.5))|0);e=e+164|0}Ii(a,f,i)}while(0);if(d|0)Ji(a,d);return}function Fi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+16|0;b=(c[h>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;g=b+16|0;d=0;while(1){b=c[g>>2]|0;f=c[b+180>>2]|0;e=c[f+(d<<2)>>2]|0;if(!e)break;_I(c[e+16>>2]|0);_I(e);d=d+1|0}if(f){_I(f);b=c[g>>2]|0}d=c[b+172>>2]|0;if(d){_I(d);b=c[g>>2]|0}f=b+256|0;e=c[f+4>>2]|0;b=b+180|0;c[b>>2]=c[f>>2];c[b+4>>2]=e;b=c[g>>2]|0;e=b+248|0;f=c[e+4>>2]|0;b=b+172|0;c[b>>2]=c[e>>2];c[b+4>>2]=f;b=(c[g>>2]|0)+164|0}b=0;d=c[(c[h>>2]|0)+192>>2]|0;a:while(1){g=(b|0)==0;f=b+16|0;b=d;while(1){if(!b)break a;e=c[b+16>>2]|0;d=c[e+164>>2]|0;if((a[e+156>>0]|0)!=2)continue a;if(g)c[(c[h>>2]|0)+192>>2]=d;else c[(c[f>>2]|0)+164>>2]=d;_I(e);_I(b);b=d}}c[(c[(c[(c[h>>2]|0)+192>>2]|0)+16>>2]|0)+168>>2]=0;return}function Gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Gi(c[(c[f+184>>2]|0)+(d<<2)>>2]|0,b);d=d+1|0}Li(a,b);return}function Hi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;s=l;l=l+80|0;e=s+64|0;d=s+48|0;f=s+16|0;m=s;r=s+32|0;a=a+16|0;b=c[(c[a>>2]|0)+8>>2]|0;t=b+48|0;c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];if((!(+h[f>>3]<.001)?(g=f+8|0,!(+h[g>>3]<.001)):0)?(i=b+32|0,c[m>>2]=c[i>>2],c[m+4>>2]=c[i+4>>2],c[m+8>>2]=c[i+8>>2],c[m+12>>2]=c[i+12>>2],c[d>>2]=c[f>>2],c[d+4>>2]=c[f+4>>2],c[d+8>>2]=c[f+8>>2],c[d+12>>2]=c[f+12>>2],c[e>>2]=c[i>>2],c[e+4>>2]=c[i+4>>2],c[e+8>>2]=c[i+8>>2],c[e+12>>2]=c[i+12>>2],Ki(r,d,e),c[f>>2]=c[r>>2],c[f+4>>2]=c[r+4>>2],c[f+8>>2]=c[r+8>>2],c[f+12>>2]=c[r+12>>2],c[d>>2]=c[r>>2],c[d+4>>2]=c[r+4>>2],c[d+8>>2]=c[r+8>>2],c[d+12>>2]=c[r+12>>2],c[e>>2]=c[m>>2],c[e+4>>2]=c[m+4>>2],c[e+8>>2]=c[m+8>>2],c[e+12>>2]=c[m+12>>2],Ki(f,d,e),i=c[a>>2]|0,j=+h[i+32>>3],k=+h[i+40>>3],n=+h[f>>3],o=n/j,p=+h[g>>3],q=p/k,!(o>=1.0&q>=1.0)):0){o=o<q?o:q;o=o>.5?o:.5;q=+N(+(o*k/p))*p/k;p=+N(+(o*j/n))*n/j*j;a=c[i+8>>2]|0;h[a+64>>3]=p;h[a+72>>3]=q*k;a=1}else a=0;l=s;return a|0}function Ii(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=a+16|0;a=1;while(1){f=c[e>>2]|0;if((a|0)>(c[f+180>>2]|0))break;Ii(c[(c[f+184>>2]|0)+(a<<2)>>2]|0,b,d);a=a+1|0}e=f+16|0;h[e>>3]=+h[e>>3]*b;e=f+24|0;h[e>>3]=+h[e>>3]*d;e=f+32|0;h[e>>3]=+h[e>>3]*b;f=f+40|0;h[f>>3]=+h[f>>3]*d;return}function Ji(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+24|0;g=m+16|0;f=m;n=c[a+16>>2]|0;e=+h[n+32>>3]-+h[n+16>>3];d=+h[n+40>>3]-+h[n+24>>3];i=e/d;if(0){n=c[13918]|0;h[f>>3]=i;h[f+8>>3]=e*.0001*d;zL(n,79592,f)|0;c[g>>2]=kk(a)|0;zL(n,79617,g)|0}d=+h[b>>3];do if(!(i>d*1.1)){a=b+24|0;if(!(i<=d*.8)){c[a>>2]=0;k=9;break}c[a>>2]=-1;if(0){XL(79627,34,1,c[13918]|0)|0;k=9}}else{c[b+24>>2]=~~(d*+((c[b+20>>2]|0)-(c[b+16>>2]|0)|0)/i);k=9}while(0);if((k|0)==9?0:0){n=c[13918]|0;c[j>>2]=c[b+24>>2];zL(n,79662,j)|0}l=m;return}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function Li(d,e){d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;s=(Vf(d)|0)==(d|0);v=d+16|0;w=c[v>>2]|0;a:do if(s){f=b[w+236>>1]|0;d=b[w+238>>1]|0;q=d<<16>>16;r=w+196|0;s=w+196|0;p=f<<16>>16;i=-2147483647.0;g=2147483647.0;while(1){if((p|0)>(q|0))break;j=c[r>>2]|0;o=c[j+(p<<6)>>2]|0;if((o|0)!=0?(t=c[j+(p<<6)+4>>2]|0,u=c[t>>2]|0,(u|0)!=0):0){l=1;j=u;while(1){j=c[j+16>>2]|0;k=a[j+156>>0]|0;if(!((l|0)<(o|0)&k<<24>>24!=0))break;j=c[t+(l<<2)>>2]|0;l=l+1|0}if(!(k<<24>>24)){m=+h[j+16>>3]-+h[j+88>>3];n=g<m;l=c[(c[s>>2]|0)+(p<<6)+4>>2]|0;k=o+-2|0;j=o+-1|0;while(1){j=c[(c[l+(j<<2)>>2]|0)+16>>2]|0;if(!(a[j+156>>0]|0))break;else{j=k;k=k+-1|0}}x=+h[j+96>>3]+ +h[j+16>>3];i=i>x?i:x;g=n?g:m}}p=p+1|0}k=c[w+180>>2]|0;l=w+184|0;j=1;while(1){if((j|0)>(k|0))break a;u=c[(c[(c[l>>2]|0)+(j<<2)>>2]|0)+16>>2]|0;x=+h[u+16>>3]+-8.0;m=+h[u+32>>3]+8.0;j=j+1|0;i=i>m?i:m;g=g<x?g:x}}else{i=+(c[(c[(c[w+260>>2]|0)+16>>2]|0)+232>>2]|0);g=+(c[(c[(c[w+256>>2]|0)+16>>2]|0)+232>>2]|0);f=b[w+236>>1]|0;d=b[w+238>>1]|0}while(0);e=c[(c[e+16>>2]|0)+196>>2]|0;m=+h[(c[(c[c[e+(d<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[w+120>>3];x=+h[w+128>>3]+ +h[(c[(c[c[e+(f<<16>>16<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];h[w+16>>3]=g;h[w+24>>3]=m;e=c[v>>2]|0;h[e+32>>3]=i;h[e+40>>3]=x;return}function Mi(a,d,e,f){a=a|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;i=vw(96)|0;j=i+48|0;c[j>>2]=c[j>>2]|3;c[i>>2]=c[i>>2]&-4|2;g=vw(176)|0;h=i+16|0;c[h>>2]=g;c[((c[i>>2]&3|0)==3?i:j)+40>>2]=a;c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]=d;if(e>65535.0){Ni(e);e=65535.0;g=c[h>>2]|0}b[g+170>>1]=~~(e+(e>=0.0?.5:-.5));c[g+156>>2]=f;Vg(i)|0;return i|0}function Ni(a){a=+a;var b=0,d=0;b=l;l=l+16|0;d=b;h[d>>3]=a;c[d+8>>2]=65535;_l(1,79692,d)|0;l=b;return}function Oi(a){a=a|0;var b=0,d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;f=a+16|0;e=c[f>>2]|0;a=e+172|0;d=c[a+4>>2]|0;e=e+248|0;c[e>>2]=c[a>>2];c[e+4>>2]=d;e=c[f>>2]|0;d=e+180|0;a=c[d+4>>2]|0;e=e+256|0;c[e>>2]=c[d>>2];c[e+4>>2]=a;e=c[f>>2]|0;a=c[e+180>>2]|0;d=0;while(1)if(!(c[a+(d<<2)>>2]|0))break;else d=d+1|0;b=c[e+172>>2]|0;a=0;while(1)if(!(c[b+(a<<2)>>2]|0))break;else a=a+1|0;c[e+176>>2]=0;a=vw((a+d<<2)+16|0)|0;e=c[f>>2]|0;c[e+172>>2]=a;c[e+184>>2]=0;e=vw(16)|0;a=c[f>>2]|0;c[a+180>>2]=e;a=a+164|0}return}function Pi(d){d=d|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+16|0;w=z;x=d+16|0;u=c[x>>2]|0;y=c[u+196>>2]|0;d=(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)!=0;v=c[u+248>>2]|0;c[w>>2]=v;c[w+4>>2]=d?5:v;v=b[u+236>>1]|0;d=u;while(1){if((v|0)>(b[d+238>>1]|0))break;r=y+(v<<6)+4|0;c[(c[(c[c[r>>2]>>2]|0)+16>>2]|0)+232>>2]=0;s=y+(v<<6)|0;t=+(c[w+((v&1)<<2)>>2]|0);p=0.0;k=0;a:while(1){if((k|0)>=(c[s>>2]|0))break;f=c[r>>2]|0;m=c[f+(k<<2)>>2]|0;u=m+16|0;d=c[u>>2]|0;i=+h[d+96>>3];h[d+240>>3]=i;if((c[d+208>>2]|0)>0){j=0;f=0;while(1){g=c[(c[d+204>>2]|0)+(j<<2)>>2]|0;if(!g)break;q=c[g>>2]&3;if((c[((q|0)==3?g:g+48|0)+40>>2]|0)==(c[((q|0)==2?g:g+-48|0)+40>>2]|0)){f=(Qz(g)|0)+f|0;d=c[u>>2]|0}j=j+1|0}q=d+96|0;i=+h[q>>3]+ +(f|0);h[q>>3]=i;f=c[r>>2]|0}q=k+1|0;f=c[f+(q<<2)>>2]|0;if(f){o=f+16|0;i=i+t+ +h[(c[o>>2]|0)+88>>3];Mi(m,f,i,0)|0;d=~~(i+p);c[(c[o>>2]|0)+232>>2]=d;p=+(d|0);d=c[u>>2]|0}f=c[d+112>>2]|0;if(f){j=c[d+256>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;d=(c[(c[(c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0);g=d?j:k;j=d?k:j;k=f+16|0;d=c[k>>2]|0;i=+((O(c[(c[x>>2]|0)+248>>2]|0,e[d+170>>1]|0)|0)/2|0|0);o=c[g>>2]&3;f=c[((o|0)==2?g:g+-48|0)+40>>2]|0;g=c[((o|0)==3?g:g+48|0)+40>>2]|0;if(!(_i(g,f)|0))Mi(f,g,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[g+16>>2]|0)+88>>3])|0),c[d+156>>2]|0)|0;d=c[j>>2]&3;f=c[((d|0)==3?j:j+48|0)+40>>2]|0;d=c[((d|0)==2?j:j+-48|0)+40>>2]|0;if(!(_i(d,f)|0)){Mi(f,d,+(~~(+h[(c[f+16>>2]|0)+96>>3]+i+ +h[(c[d+16>>2]|0)+88>>3])|0),c[(c[k>>2]|0)+156>>2]|0)|0;o=0}else o=0}else o=0;while(1){d=c[u>>2]|0;if((o|0)>=(c[d+192>>2]|0)){k=q;continue a}m=c[(c[d+188>>2]|0)+(o<<2)>>2]|0;k=c[m>>2]&3;g=c[((k|0)==3?m:m+48|0)+40>>2]|0;k=c[((k|0)==2?m:m+-48|0)+40>>2]|0;j=(c[(c[g+16>>2]|0)+236>>2]|0)<(c[(c[k+16>>2]|0)+236>>2]|0);f=j?g:k;g=j?k:g;i=+h[(c[g+16>>2]|0)+88>>3]+ +h[(c[f+16>>2]|0)+96>>3];k=m+16|0;j=~~(i+ +(O(c[(c[x>>2]|0)+248>>2]|0,e[(c[k>>2]|0)+170>>1]|0)|0));n=Sg(f,g)|0;if(!n){d=c[k>>2]|0;if(!(c[d+96>>2]|0))Mi(f,g,+(j|0),c[d+156>>2]|0)|0}else{A=+(j|0);d=c[k>>2]|0;B=+h[d+136>>3];i=i+ +(c[(c[x>>2]|0)+248>>2]|0)+ +(~~(B+(B>=0.0?.5:-.5))|0);f=~~(i<A?A:i);if((f|0)>65535){Ni(+(f|0));f=65535;d=c[k>>2]|0}k=c[n+16>>2]|0;j=k+170|0;g=e[j>>1]|0;b[j>>1]=(f|0)<(g|0)?g:f;k=k+156|0;c[k>>2]=c[(c[((c[k>>2]|0)>(c[d+156>>2]|0)?n:m)+16>>2]|0)+156>>2]}o=o+1|0}}v=v+1|0;d=c[x>>2]|0}l=z;return}function Qi(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+256>>2]|0;a:do if(e){f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e)break a;n=fh(b)|0;d=n+16|0;a[(c[d>>2]|0)+156>>0]=2;l=e+16|0;k=c[l>>2]|0;i=~~(+h[k+56>>3]-+h[k+16>>3]);m=(i|0)>0;j=m?0:0-i|0;i=m?i:0;m=e+48|0;Mi(n,c[((c[e>>2]&3|0)==3?e:m)+40>>2]|0,+(i+1|0),c[k+156>>2]|0)|0;k=e+-48|0;Mi(n,c[((c[e>>2]&3|0)==2?e:k)+40>>2]|0,+(j+1|0),c[(c[l>>2]|0)+156>>2]|0)|0;l=c[e>>2]&3;i=(c[(c[(c[((l|0)==3?e:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-i|0;e=(c[(c[(c[((l|0)==2?e:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)-j|0;c[(c[d>>2]|0)+232>>2]=((i|0)<(e|0)?i:e)+-1;d=c[g>>2]|0;f=f+1|0;e=c[d+256>>2]|0}}while(0);d=d+164|0}return}function Ri(a){a=a|0;if((c[(c[a+16>>2]|0)+180>>2]|0)>0){Vi(a);Wi(a);Xi(a);Yi(a)}return}function Si(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;e=a+16|0;f=c[(c[e>>2]|0)+8>>2]|0;if((c[f+84>>2]|0)==3?(b=+h[f+64>>3],d=+h[f+72>>3],!(d*b<=1.0)):0){Ti(a);f=c[e>>2]|0;d=(c[f+116>>2]&1|0)==0?b:d;Mi(c[f+256>>2]|0,c[f+260>>2]|0,d<65535.0?d:65535.0,1e3)|0}return}function Ti(a){a=a|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;e=DA(a,c[42188]|0,8,0)|0;Ui(a);i=a+16|0;g=c[i>>2]|0;j=c[g+256>>2]|0;k=c[g+260>>2]|0;f=+(e|0);e=b[g+236>>1]|0;while(1){if((e|0)>(b[g+238>>1]|0))break;d=c[g+196>>2]|0;do if(c[d+(e<<6)>>2]|0){d=c[c[d+(e<<6)+4>>2]>>2]|0;if(!d){c[m>>2]=Dn(a)|0;c[m+4>>2]=e;_l(1,79776,m)|0;break}else{Mi(j,d,+h[(c[d+16>>2]|0)+88>>3]+f+ +h[g+96>>3],0)|0;g=c[i>>2]|0;d=c[g+196>>2]|0;d=c[(c[d+(e<<6)+4>>2]|0)+((c[d+(e<<6)>>2]|0)+-1<<2)>>2]|0;Mi(d,k,+h[(c[d+16>>2]|0)+96>>3]+f+ +h[g+64>>3],0)|0;break}}while(0);e=e+1|0;g=c[i>>2]|0}l=n;return}function Ui(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;if(!(c[(c[d>>2]|0)+256>>2]|0)){f=fh(Vf(b)|0)|0;a[(c[f+16>>2]|0)+156>>0]=2;e=fh(Vf(b)|0)|0;a[(c[e+16>>2]|0)+156>>0]=2;if((c[(c[d>>2]|0)+12>>2]|0?(Vf(b)|0)!=(b|0):0)?(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0:0){b=c[d>>2]|0;Mi(f,e,+(~~+h[b+48+((+h[b+48>>3]>+h[b+80>>3]?0:2)<<4)>>3]|0),0)|0}d=c[d>>2]|0;c[d+256>>2]=f;c[d+260>>2]=e}return}function Vi(a){a=a|0;var b=0,d=0;do if((Vf(a)|0)!=(a|0)){Ti(a);a=a+16|0;b=c[a>>2]|0;b=Sg(c[b+256>>2]|0,c[b+260>>2]|0)|0;if(!b){d=c[a>>2]|0;Mi(c[d+256>>2]|0,c[d+260>>2]|0,1.0,128)|0;break}else{d=(c[b+16>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+128;break}}else a=a+16|0;while(0);b=1;while(1){d=c[a>>2]|0;if((b|0)>(c[d+180>>2]|0))break;Vi(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function Wi(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;k=DA(d,c[42188]|0,8,0)|0;o=d+16|0;e=c[o>>2]|0;m=+(k|0);k=b[e+236>>1]|0;while(1){if((k|0)>(b[e+238>>1]|0)){f=1;break}e=c[e+196>>2]|0;a:do if(c[e+(k<<6)>>2]|0?(l=c[c[e+(k<<6)+4>>2]>>2]|0,l|0):0){i=l+16|0;f=c[(c[i>>2]|0)+236>>2]|0;while(1){if((f|0)<=0)break;f=f+-1|0;j=c[(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=j+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0)){n=10;break}if(Zi(d,j)|0){n=9;break}}if((n|0)==9){e=c[g>>2]|0;n=10}if((n|0)==10){n=0;Mi(j,c[(c[o>>2]|0)+256>>2]|0,+h[e+96>>3]+m,0)|0}f=(c[(c[(c[o>>2]|0)+196>>2]|0)+(k<<6)>>2]|0)+(c[(c[i>>2]|0)+236>>2]|0)|0;while(1){if((f|0)>=(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)>>2]|0))break a;i=c[(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=i+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0))break;if(!(Zi(d,i)|0))f=f+1|0;else{n=15;break}}if((n|0)==15){n=0;e=c[g>>2]|0}Mi(c[(c[o>>2]|0)+260>>2]|0,i,+h[e+88>>3]+m,0)|0}while(0);k=k+1|0;e=c[o>>2]|0}while(1){if((f|0)>(c[e+180>>2]|0))break;Wi(c[(c[e+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0;e=c[o>>2]|0}return}function Xi(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0;e=DA(a,c[42188]|0,8,0)|0;Ui(a);b=a+16|0;d=+(e|0);a=1;while(1){e=c[b>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;Ui(e);f=c[b>>2]|0;g=e+16|0;Mi(c[f+256>>2]|0,c[(c[g>>2]|0)+256>>2]|0,+h[f+96>>3]+d,0)|0;f=c[b>>2]|0;Mi(c[(c[g>>2]|0)+260>>2]|0,c[f+260>>2]|0,+h[f+64>>3]+d,0)|0;Xi(e);a=a+1|0}return}function Yi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;d=DA(a,c[42188]|0,8,0)|0;n=a+16|0;a=1;while(1){f=c[n>>2]|0;e=c[f+180>>2]|0;if((a|0)>(e|0))break;Ui(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}m=+(d|0);l=1;a=e;d=f;while(1){if((l|0)>(a|0))break;k=l+1|0;j=k;while(1){e=c[d+184>>2]|0;f=c[e+(l<<2)>>2]|0;if((j|0)>(a|0))break;e=c[e+(j<<2)>>2]|0;g=(b[(c[f+16>>2]|0)+236>>1]|0)>(b[(c[e+16>>2]|0)+236>>1]|0);i=g?e:f;e=g?f:e;f=c[i+16>>2]|0;g=c[e+16>>2]|0;o=b[g+236>>1]|0;h=o<<16>>16;if((b[f+238>>1]|0)>=o<<16>>16){a=(c[(c[(c[c[(c[f+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[c[(c[g+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0);Mi(c[(c[(a?i:e)+16>>2]|0)+260>>2]|0,c[(c[(a?e:i)+16>>2]|0)+256>>2]|0,m,0)|0;a=c[n>>2]|0;d=a;a=c[a+180>>2]|0}j=j+1|0}Yi(f);d=c[n>>2]|0;l=k;a=c[d+180>>2]|0}return}function Zi(b,d){b=b|0;d=d|0;var e=0;d=c[d+16>>2]|0;if((a[d+156>>0]|0)==1){d=c[c[d+256>>2]>>2]|0;while(1){e=c[(c[d+16>>2]|0)+116>>2]|0;if(!e)break;else d=e}if(!(Bo(b,c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0))d=(Bo(b,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0)==0&1;else d=0}else d=0;return d|0}function _i(a,b){a=a|0;b=b|0;return $i(a,b)|0}function $i(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)==(b|0))a=1;else{d=c[(c[a+16>>2]|0)+180>>2]|0;a=0;while(1){e=c[d+(a<<2)>>2]|0;if(!e){a=0;break a}if(!($i(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,b)|0))a=a+1|0;else{a=1;break}}}while(0);return a|0}function aj(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;d=c[k>>2]|0;j=b[d+236>>1]|0;while(1){if((j|0)>(b[d+238>>1]|0))break;h=c[d+196>>2]|0;g=c[h+(j<<6)>>2]|0;h=h+(j<<6)+4|0;i=0;f=0;while(1){if((f|0)>=(g|0))break;e=c[(c[(c[h>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;c[e+236>>2]=i;if((a[e+159>>0]|0)==6)e=c[e+216>>2]|0;else e=1;i=e+i|0;f=f+1|0}if((i|0)>(g|0)){d=c[h>>2]|0;if(!d)d=ww((i<<2)+4|0)|0;else d=yw(d,(i<<2)+4|0)|0;f=c[(c[k>>2]|0)+196>>2]|0;c[f+(j<<6)+4>>2]=d;e=c[f+(j<<6)>>2]|0;while(1){d=e+-1|0;if((e|0)<=0)break;h=c[f+(j<<6)+4>>2]|0;e=c[h+(d<<2)>>2]|0;c[h+(c[(c[e+16>>2]|0)+236>>2]<<2)>>2]=e;e=d;f=c[(c[k>>2]|0)+196>>2]|0}c[f+(j<<6)>>2]=i;c[(c[f+(j<<6)+4>>2]|0)+(i<<2)>>2]=0;d=c[k>>2]|0}j=j+1|0}return}function bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+48|0;n=o+32|0;m=o+8|0;d=o+24|0;k=o+16|0;j=o;e=b+16|0;f=c[e>>2]|0;a:do if((c[f+216>>2]|0)>=2){c[m>>2]=~~(+h[f+16>>3]-+h[f+88>>3]);c[m+4>>2]=~~+h[f+24>>3];c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];cj(d,b,n);g=d;i=c[g+4>>2]|0;d=m;c[d>>2]=c[g>>2];c[d+4>>2]=i;d=c[e>>2]|0;if((c[d+184>>2]|0)>0){j=c[c[d+180>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;j=Sm(a,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0;while(1){if(!j)break a;i=(c[j>>2]&3|0)==2?j:j+-48|0;e=i+48|0;f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;if((f|0)!=(b|0)?(KA(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];dj(k,a,f,n,d);f=k;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;kh(i);g=i+-48|0;e=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;f=c[e+172>>2]|0;if(!f)e=ww((c[e+176>>2]<<2)+8|0)|0;else e=yw(f,(c[e+176>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0)+172>>2]=e;p=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;e=c[p+172>>2]|0;p=p+176|0;f=c[p>>2]|0;c[p>>2]=f+1;c[e+(f<<2)>>2]=i;i=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0;d=d+1|0}j=Tm(a,j)|0}}else{i=c[c[d+172>>2]>>2]|0;d=(c[d+236>>2]|0)+1|0;i=Pm(a,c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)|0;while(1){if(!i)break a;e=i+-48|0;f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;if((f|0)!=(b|0)?(KA(f)|0)==(b|0):0){f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];dj(j,a,f,n,d);f=j;e=c[f+4>>2]|0;g=m;c[g>>2]=c[f>>2];c[g+4>>2]=e;kh(i);g=i+48|0;e=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;f=c[e+180>>2]|0;if(!f)e=ww((c[e+184>>2]<<2)+8|0)|0;else e=yw(f,(c[e+184>>2]<<2)+8|0)|0;c[(c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0)+180>>2]=e;f=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;k=c[f+180>>2]|0;f=f+184|0;p=c[f>>2]|0;c[f>>2]=p+1;c[k+(p<<2)>>2]=i;p=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;c[(c[p+180>>2]|0)+(c[p+184>>2]<<2)>>2]=0;d=d+1|0}i=Rm(a,i)|0}}}while(0);l=o;return}function cj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;KB(b,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1);e=c[b+16>>2]|0;h[e+24>>3]=+(c[d+4>>2]|0);f=+h[e+88>>3]+ +(c[d>>2]|0);h[e+16>>3]=f;f=f+ +h[e+96>>3];c[d>>2]=~~(f+ +(c[(c[(ro(b)|0)+16>>2]|0)+248>>2]|0));e=d;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function dj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;b=Vf(b)|0;g=KA(d)|0;if((g|0)!=(d|0))ch(g,d);j=c[d+16>>2]|0;c[j+236>>2]=f;g=c[(c[g+16>>2]|0)+232>>2]|0;c[j+232>>2]=g;c[(c[(c[(c[b+16>>2]|0)+196>>2]|0)+(g<<6)+4>>2]|0)+(f<<2)>>2]=d;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];cj(a,d,h);l=i;return}function ej(a){a=a|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0;m=c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0;if((Vf(a)|0)==(a|0))j=8.0;else j=+(DA(a,c[42188]|0,8,0)|0);l=a+16|0;g=c[l>>2]|0;f=0;k=1;e=+h[g+120>>3];d=+h[g+128>>3];while(1){if((k|0)>(c[g+180>>2]|0))break;i=c[(c[g+184>>2]|0)+(k<<2)>>2]|0;f=ej(i)|0|f;i=c[i+16>>2]|0;g=c[l>>2]|0;if((b[i+238>>1]|0)==(b[g+238>>1]|0)){n=+h[i+120>>3]+j;e=e>n?e:n}if((b[i+236>>1]|0)==(b[g+236>>1]|0)){n=+h[i+128>>3]+j;d=d>n?d:n}k=k+1|0}if((Vf(a)|0)!=(a|0)?(c[(c[l>>2]|0)+12>>2]|0)!=0:0)if(!(c[(c[(so(a)|0)+16>>2]|0)+116>>2]&1)){k=c[l>>2]|0;f=1;e=+h[k+56>>3]+e;d=+h[k+88>>3]+d}else f=1;k=c[l>>2]|0;h[k+120>>3]=e;h[k+128>>3]=d;if((Vf(a)|0)!=(a|0)){l=c[l>>2]|0;a=m+(b[l+236>>1]<<6)+24|0;n=+h[a>>3];h[a>>3]=n>d?n:d;m=m+(b[l+238>>1]<<6)+16|0;n=+h[m>>3];h[m>>3]=n>e?n:e}return f|0}function fj(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0;if((Vf(a)|0)==(a|0))e=0;else e=DA(a,c[42188]|0,8,0)|0;l=a+16|0;i=c[l>>2]|0;m=e+d|0;k=+(e|0);j=1;f=+h[i+128>>3];g=+h[i+120>>3];e=i;while(1){if((j|0)>(c[e+180>>2]|0))break;i=c[(c[e+184>>2]|0)+(j<<2)>>2]|0;fj(i,m);i=c[i+16>>2]|0;e=c[l>>2]|0;if((b[i+238>>1]|0)==(b[e+238>>1]|0)){q=+h[i+120>>3]+k;g=g>q?g:q}if((b[i+236>>1]|0)==(b[e+236>>1]|0)){q=+h[i+128>>3]+k;f=f>q?f:q}j=j+1|0}h[e+120>>3]=g;h[e+128>>3]=f;if(((Vf(a)|0)!=(a|0)?(n=c[l>>2]|0,c[n+12>>2]|0):0)?(p=-g-f+ +h[n+48+((+h[n+104>>3]>+h[n+72>>3]?3:1)<<4)+8>>3]-+h[(c[(c[c[o+(b[n+236>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[(c[(c[c[o+(b[n+238>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3],p>0.0):0)gj(a,~~p,d);if((Vf(a)|0)!=(a|0)){n=c[l>>2]|0;m=o+(b[n+236>>1]<<6)+24|0;q=+h[m>>3];p=+h[n+128>>3];h[m>>3]=q>p?q:p;o=o+(b[n+238>>1]<<6)+16|0;p=+h[o>>3];q=+h[n+120>>3];h[o>>3]=p>q?p:q}return}function gj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;k=c[(Vf(a)|0)+16>>2]|0;q=c[k+196>>2]|0;p=c[a+16>>2]|0;a=b[p+238>>1]|0;f=b[p+236>>1]|0;l=(d+1|0)/2|0;m=p+120|0;n=+h[m>>3];o=+(l|0);i=+(e|0);e=~~(o+i+n-+h[q+(a<<6)+16>>3]);if((e|0)>0){g=+(e|0);while(1){if((a|0)<(f|0))break;if((c[q+(a<<6)>>2]|0)>0){r=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[r>>3]=+h[r>>3]+g}a=a+-1|0}j=+h[p+128>>3];a=e;g=j+ +(d-l|0)}else{j=+h[p+128>>3];a=d-l|0;g=j}a=~~(+(a|0)+i+g-+h[q+(f<<6)+24>>3]);a:do if((a|0)>0){e=b[k+236>>1]|0;g=+(a|0);while(1){a=f+-1|0;if((f|0)<=(e|0))break a;if((c[q+(a<<6)>>2]|0)<=0){f=a;continue}f=(c[(c[c[q+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[f>>3]=+h[f>>3]+g;f=a}}while(0);h[p+128>>3]=j+ +(d-l|0);h[m>>3]=n+o;return}function hj(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+16>>2]|0;f=a[e+84>>0]|0;b=c[d+16>>2]|0;do if(f<<24>>24==(a[b+84>>0]|0)){if(+h[e+56>>3]==+h[b+56>>3]){if(!(f<<24>>24==0?1:+h[e+64>>3]==+h[b+64>>3])){b=0;break}}else if(f<<24>>24){b=0;break}if(+h[e+16>>3]==+h[b+16>>3]?+h[e+24>>3]==+h[b+24>>3]:0){b=1;break}b=(a[e+44>>0]|0)==0&1}else b=0;while(0);return b|0}function ij(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;b[d+236>>1]=32767;b[d+238>>1]=-1;d=0;h=co(a)|0;while(1){e=c[i>>2]|0;if(!h)break;f=e+238|0;g=c[(c[h+16>>2]|0)+232>>2]|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;e=e+236|0;if((g|0)<(b[e>>1]|0))b[e>>1]=g;if(!d)d=h;else d=(g|0)<(c[(c[d+16>>2]|0)+232>>2]|0)?h:d;h=eo(a,h)|0}c[e+264>>2]=d;return}function jj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;b=Im(a,79821)|0;if(!b)b=2147483647;else{g=+sM(b);b=~~(g*+(mn(a)|0))}e=a+16|0;d=0;while(1){f=c[e>>2]|0;if((d|0)>=(c[f+220>>2]|0))break;c[f+192>>2]=c[(c[f+216>>2]|0)+(d<<2)>>2];gx(a,(c[f+180>>2]|0)==0&1,b)|0;d=d+1|0}return}function kj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+16|0;e=f;if(!(Im(a,79830)|0))mj(a,d);else{g=(c[a+16>>2]|0)+136|0;b[g>>1]=b[g>>1]|16;lj(a,d)}if(0){g=c[13918]|0;a=c[a+16>>2]|0;d=b[a+236>>1]|0;c[e>>2]=b[a+238>>1];c[e+4>>2]=d;zL(g,79838,e)|0}l=f;return}function lj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;h=i;c[41933]=0;a[h>>0]=a[17644]|0;a[h+1>>0]=a[17645]|0;a[h+2>>0]=a[17646]|0;a[h+3>>0]=a[17647]|0;h=gn(80048,h,0)|0;No(h,80077,280,1)|0;zo(h,17332,17272);nj(b);e=Im(b,79821)|0;if(!e)f=2147483647;else{j=+sM(e);f=~~(j*+(mn(b)|0))}Dj(b,0);Ej(b,h);Fj(b,h);Gj(b,h,0,0);Hj(h);g=Ij(h)|0;Jj(h);if(d|0){xk(h);lk(h)}e=Im(b,87620)|0;if(!e)e=-1;else e=rM(e)|0;zw(h,1,f,e)|0;Kj(b,h,g);ln(h)|0;l=i;return}function mj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g;nj(a);do if(!b){oj(a,a);Ak(a);pj(d,a);h=d;d=c[h+4>>2]|0;b=e;c[b>>2]=c[h>>2];c[b+4>>2]=d;tl(a,0);b=0}else{xk(a);lk(a);oj(a,a);Ak(a);pj(d,a);i=d;d=c[i+4>>2]|0;h=e;c[h>>2]=c[i>>2];c[h+4>>2]=d;tl(a,0);h=c[a+16>>2]|0;if((c[h+220>>2]|0)<=1?(c[h+180>>2]|0)<=0:0)break;c[b+32>>2]=1;b=0}while(0);ik(a);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];if(qj(a,f)|0)tl(a,0);if(!b)jj(a);else mk(a,b);rj(a,b);sj(a);l=g;return}function nj(d){d=d|0;var f=0,g=0,h=0;if(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1){g=co(d)|0;while(1){if(!g)break;f=Pm(d,g)|0;while(1){if(!f)break;h=(c[f+16>>2]|0)+170|0;b[h>>1]=(e[h>>1]|0)<<1;f=Rm(d,f)|0}g=eo(d,g)|0}h=(c[d+16>>2]|0)+252|0;c[h>>2]=((c[h>>2]|0)+1|0)/2|0}return}function oj(a,b){a=a|0;b=b|0;var d=0;b=Jp(b)|0;while(1){if(!b)break;d=Aj(b)|0;do if(d)if((d|0)==7&(c[42179]|0)==100){wj(a,b);break}else{Bj(a,b,d);break}else oj(a,b);while(0);b=Kp(b)|0}return}function pj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=d+16|0;e=c[i>>2]|0;d=c[e+228>>2]|0;e=c[e+224>>2]|0;f=(e|0)==0;if(!d)if(f){j=0;k=0}else g=4;else if(f)g=5;else g=4;if((g|0)==4){d=KA(e)|0;e=c[i>>2]|0;c[e+224>>2]=d;d=c[e+228>>2]|0;if(!d){h=0;d=e;g=12}else g=5}do if((g|0)==5){d=KA(d)|0;e=c[i>>2]|0;c[e+228>>2]=d;if(d){e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==5&1;while(1){d=c[c[d+180>>2]>>2]|0;if(!d){g=11;break}h=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((h|0)!=(KA(h)|0)){g=9;break}hk(d);d=c[e>>2]|0}if((g|0)==9)ma(79941,79881,346,79973);else if((g|0)==11){h=f;d=c[i>>2]|0;g=12;break}}else{h=0;d=e;g=12}}while(0);a:do if((g|0)==12){d=c[d+224>>2]|0;if(!d){j=0;k=h}else{e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==3&1;while(1){d=c[c[d+172>>2]>>2]|0;if(!d){j=f;k=h;break a}i=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((i|0)!=(KA(i)|0))break;hk(d);d=c[e>>2]|0}ma(79986,79881,353,79973)}}while(0);c[b>>2]=j;c[b+4>>2]=k;return}function qj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+16|0;i=c[j>>2]|0;if((c[i+228>>2]|0)==0?(c[i+224>>2]|0)==0:0)d=0;else e=3;a:do if((e|0)==3){g=co(a)|0;i=d+4|0;h=c[d>>2]&65535;d=0;while(1){if(!g)break a;if((g|0)==(KA(g)|0)){f=g+16|0;e=c[f>>2]|0;if((c[e+184>>2]|0)==0?(k=c[(c[j>>2]|0)+228>>2]|0,!((k|0)==0|(g|0)==(k|0))):0){d=ah(g,k,0)|0;e=c[d+16>>2]|0;b[e+170>>1]=c[i>>2];c[e+156>>2]=0;e=c[f>>2]|0}if((c[e+176>>2]|0)==0?(l=c[(c[j>>2]|0)+224>>2]|0,!((l|0)==0|(g|0)==(l|0))):0){d=ah(l,g,0)|0;f=c[d+16>>2]|0;b[f+170>>1]=h;c[f+156>>2]=0}}g=eo(a,g)|0}}while(0);return (d|0)!=0|0}function rj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;g=co(d)|0;k=d+16|0;f=c[k>>2]|0;a:do if(g){b[f+236>>1]=32767;b[f+238>>1]=-1;j=(e|0)==0;while(1){if(!g)break;f=KA(g)|0;i=c[g+16>>2]|0;e=c[i+232>>2]|0;do if((f|0)!=(g|0)){if(!j)if(!e)e=0;else break;e=e+(c[(c[f+16>>2]|0)+232>>2]|0)|0;c[i+232>>2]=e}while(0);f=c[k>>2]|0;h=f+238|0;if((e|0)>(b[h>>1]|0))b[h>>1]=e;f=f+236|0;if((e|0)<(b[f>>1]|0))b[f>>1]=e;switch(a[i+159>>0]|0){case 6:case 0:break;default:MA(g)}g=eo(d,g)|0}if((Vf(d)|0)==(d|0)){if((c[42179]|0)==100)e=1;else{vj(d);break}while(1){f=c[k>>2]|0;if((e|0)>(c[f+180>>2]|0))break a;uj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}}}else{b[f+238>>1]=0;b[f+236>>1]=0}while(0);return}function sj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=b+16|0;e=0;while(1){d=c[j>>2]|0;if((e|0)>=(c[d+220>>2]|0))break;i=c[(c[d+216>>2]|0)+(e<<2)>>2]|0;c[d+192>>2]=i;d=i;while(1){if(!d)break;i=d+16|0;tj((c[i>>2]|0)+172|0);tj((c[i>>2]|0)+180|0);i=c[i>>2]|0;a[i+157>>0]=0;d=c[i+164>>2]|0}e=e+1|0}i=co(b)|0;while(1){if(!i)break;h=Pm(b,i)|0;while(1){if(!h)break;f=h+16|0;d=c[f>>2]|0;g=c[d+172>>2]|0;if((g|0)!=0?(k=g+16|0,(h|0)==(c[(c[k>>2]|0)+116>>2]|0)):0){d=co(b)|0;while(1){if(!d)break;e=Pm(b,d)|0;while(1){if(!e)break;if((h|0)!=(e|0)?(l=(c[e+16>>2]|0)+172|0,m=c[l>>2]|0,(m|0)!=0&(g|0)==(m|0)):0)c[l>>2]=0;e=Rm(b,e)|0}d=eo(b,d)|0}_I(c[k>>2]|0);_I(g);d=c[f>>2]|0}c[d+172>>2]=0;h=Rm(b,h)|0}i=eo(b,i)|0}_I(c[(c[j>>2]|0)+216>>2]|0);m=c[j>>2]|0;c[m+216>>2]=0;c[m+220>>2]=0;return}function tj(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;while(1){if((b|0)<=-1)break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+-1|0}c[d>>2]=0;return}function uj(a){a=a|0;var d=0,f=0,g=0;d=a+16|0;f=c[d>>2]|0;g=c[(c[(c[f+264>>2]|0)+16>>2]|0)+232>>2]|0;a=f+236|0;b[a>>1]=g+(e[a>>1]|0);a=f+238|0;b[a>>1]=g+(e[a>>1]|0);a=1;while(1){if((a|0)>(c[f+180>>2]|0))break;uj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0;f=c[d>>2]|0}return}function vj(b){b=b|0;var d=0;d=Jp(Vf(b)|0)|0;while(1){if(!d)break;if((a[(c[d+16>>2]|0)+274>>0]|0)==7)wj(b,d);d=Kp(d)|0}return}function wj(a,b){a=a|0;b=b|0;var d=0;d=(c[b+16>>2]|0)+200|0;do if((c[d>>2]|0)==0?(c[d>>2]=a,xj(a,b),co(b)|0):0){yj(a,b);if((c[42179]|0)==100){mj(b,0);zj(b);break}else{ij(b);break}}while(0);return}function xj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=b+16|0;g=co(d)|0;while(1){if(!g)break;i=eo(d,g)|0;j=g+16|0;if(!(a[(c[j>>2]|0)+159>>0]|0))f=1;else{qo(d,g)|0;g=i;continue}while(1){e=c[h>>2]|0;b=c[e+180>>2]|0;if((f|0)>=(b|0))break;if(Bo(c[(c[e+184>>2]|0)+(f<<2)>>2]|0,g)|0){k=7;break}f=f+1|0}if((k|0)==7){k=0;b=c[(c[h>>2]|0)+180>>2]|0}if((f|0)<(b|0))qo(d,g)|0;c[(c[j>>2]|0)+212>>2]=0;g=i}e=co(d)|0;while(1){if(!e)break;b=Pm(Vf(d)|0,e)|0;while(1){if(!b)break;if(Bo(d,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)en(d,b,1)|0;b=Rm(Vf(d)|0,b)|0}e=eo(d,e)|0}return}function yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;if(!d)a=vw((a<<2)+8|0)|0;else a=xw(d,a+2|0,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;hw(b);return}function zj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[b+16>>2]|0;d=g+192|0;h=0;while(1){d=c[d>>2]|0;if(!d)break;f=c[d+16>>2]|0;if(!(c[f+232>>2]|0))e=(a[f+156>>0]|0)==0?d:h;else e=h;d=f+164|0;h=e}if(!h)ma(79866,79881,238,79888);c[g+264>>2]=h;d=co(b)|0;while(1){if(!d){d=13;break}e=d+16|0;if(!((d|0)==(h|0)?1:(c[(c[e>>2]|0)+216>>2]|0)<2)){d=11;break}LA(d,h)|0;a[(c[e>>2]|0)+159>>0]=7;d=eo(b,d)|0}if((d|0)==11)ma(79903,79881,242,79888);else if((d|0)==13)return}function Aj(b){b=b|0;var d=0;if(!(Cj(b)|0)){d=UA(Im(b,80018)|0,17284,17308)|0;a[(c[b+16>>2]|0)+274>>0]=d;b=d}else b=7;return b|0}function Bj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=co(d)|0;a:do if(g|0){j=e&255;i=g+16|0;f=g;h=j;while(1){a[(c[f+16>>2]|0)+159>>0]=h;f=eo(d,f)|0;if(!f)break;LA(g,f)|0;h=a[(c[i>>2]|0)+159>>0]|0}switch(e|0){case 3:case 2:{b=b+16|0;f=c[b>>2]|0;h=c[f+224>>2]|0;if(h){g=LA(h,g)|0;f=c[b>>2]|0}c[f+224>>2]=g;break}case 5:case 4:{b=b+16|0;f=c[b>>2]|0;h=c[f+228>>2]|0;if(h){g=LA(h,g)|0;f=c[b>>2]|0}c[f+228>>2]=g;break}default:break a}switch(e|0){case 3:{f=f+224|0;break}case 5:{f=f+228|0;break}default:break a}a[(c[(c[f>>2]|0)+16>>2]|0)+159>>0]=j}while(0);return}function Cj(a){a=a|0;return (VJ(Dn(a)|0,93039,7)|0)==0|0}function Dj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;g=m;if(!(Yj(b)|0)){do if(hB(b)|0)if(!d){c[(c[b+16>>2]|0)+204>>2]=0;d=b;break}else{c[(c[b+16>>2]|0)+204>>2]=(c[(c[d+16>>2]|0)+204>>2]|0)+1;Zj(b,d);d=b;break}while(0);e=Jp(b)|0;while(1){if(!e)break;Dj(e,d);e=Kp(e)|0}a:do if(hB(b)|0){e=co(b)|0;while(1){if(!e)break a;f=(c[e+16>>2]|0)+212|0;if(!(c[f>>2]|0))c[f>>2]=b;e=eo(b,e)|0}}while(0);switch(_j(b)|0){case 3:{d=d+16|0;a[(c[d>>2]|0)+241>>0]=1;k=19;break}case 2:{d=d+16|0;k=19;break}case 5:{d=d+16|0;a[(c[d>>2]|0)+242>>0]=1;k=21;break}case 4:{d=d+16|0;k=21;break}case 1:{$j(b)|0;break}case 6:break;default:{e=Dn(b)|0;f=Im(b,80018)|0;c[g>>2]=e;c[g+4>>2]=f;_l(0,80201,g)|0}}if((k|0)==19){k=$j(b)|0;k=ak(k,c[(c[d>>2]|0)+208>>2]|0)|0;c[(c[d>>2]|0)+208>>2]=k}else if((k|0)==21){k=$j(b)|0;k=ak(k,c[(c[d>>2]|0)+212>>2]|0)|0;c[(c[d>>2]|0)+212>>2]=k}if((hB(b)|0?(h=b+16|0,i=c[h>>2]|0,j=c[i+208>>2]|0,j|0):0)?(j|0)==(c[i+212>>2]|0):0){j=$j(b)|0;k=c[h>>2]|0;c[k+208>>2]=j;c[k+212>>2]=j}}l=m;return}function Ej(a,b){a=a|0;b=b|0;var d=0,e=0;c[41933]=0;d=co(a)|0;while(1){if(!d)break;if((Lj(d)|0)==(d|0)){e=Oj(b,Dn(d)|0)|0;c[(c[d+16>>2]|0)+148>>2]=e}d=eo(a,d)|0}d=co(a)|0;while(1){if(!d)break;b=d+16|0;if(!(c[(c[b>>2]|0)+148>>2]|0)){e=c[(c[(Lj(d)|0)+16>>2]|0)+148>>2]|0;c[(c[b>>2]|0)+148>>2]=e}d=eo(a,d)|0}return}function Fj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=co(a)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+148>>2]|0;i=Pm(a,h)|0;while(1){if(!i)break;do if((Tj(i)|0)==0?(j=i+-48|0,k=c[(c[(Lj(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)|0)+16>>2]|0)+148>>2]|0,(d|0)!=(k|0)):0){f=c[i>>2]&3;g=i+48|0;e=((f|0)==3?i:g)+40|0;f=c[(c[(c[((f|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0;if(!(Uj(i)|0)){if((Sj(c[(c[(c[e>>2]|0)+16>>2]|0)+212>>2]|0)|0)==0?(Sj(f)|0)==0:0){Vj(b,d,k,i);break}Wj(b,d,k,i);break}else{f=Lj(c[e>>2]|0)|0;e=c[i>>2]&3;if((f|0)!=(c[(c[(c[(c[(c[((e|0)==3?i:g)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+212>>2]|0)?(g=Lj(c[((e|0)==2?i:j)+40>>2]|0)|0,(g|0)!=(c[(c[(c[(c[(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+208>>2]|0)):0)e=k;else{e=d;d=k}Vj(b,d,e,i);break}}while(0);i=Rm(a,i)|0}h=eo(a,h)|0}return}function Gj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if((hB(a)|0)!=0?(Sj(a)|0)!=0:0){g=co(a)|0;while(1){if(!g)break;if(!(Sm(a,g)|0)){f=c[(c[(Lj(g)|0)+16>>2]|0)+148>>2]|0;if(!d)d=Oj(b,80099)|0;an(b,d,f,0,1)|0}if(!(Pm(a,g)|0)){f=c[(c[(Lj(g)|0)+16>>2]|0)+148>>2]|0;if(!e)e=Oj(b,80104)|0;an(b,f,e,0,1)|0}g=eo(a,g)|0}if((e|0)!=0&(d|0)!=0){Rj(an(b,d,e,0,1)|0,0,1e3);f=d}else f=d}else f=d;d=Jp(a)|0;while(1){if(!d)break;Gj(d,b,f,e);d=Kp(d)|0}return}function Hj(b){b=b|0;var d=0,e=0;d=co(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;a[e+158>>0]=0;a[e+157>>0]=0;d=eo(b,d)|0}d=co(b)|0;while(1){if(!d)break;Pj(b,d);d=eo(b,d)|0}return}function Ij(a){a=a|0;var b=0,d=0,e=0,f=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+128>>2]=0;b=eo(a,b)|0}b=0;e=co(a)|0;while(1){if(!e)break;d=b+1|0;if(!(c[(c[e+16>>2]|0)+128>>2]|0)){Nj(a,e,d);b=d}e=eo(a,e)|0}a:do if((b|0)>1){f=Oj(a,80093)|0;d=1;e=co(a)|0;while(1){if(!e)break a;if((c[(c[e+16>>2]|0)+128>>2]|0)==(d|0)){an(a,f,e,0,1)|0;d=d+1|0}e=eo(a,e)|0}}while(0);return b|0}function Jj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=co(a)|0;while(1){if(!g)break;h=g+16|0;f=Pm(a,g)|0;while(1){if(!f)break;b=c[h>>2]|0;d=c[b+180>>2]|0;if(!d)b=ww((c[b+184>>2]<<2)+8|0)|0;else b=yw(d,(c[b+184>>2]<<2)+8|0)|0;d=c[h>>2]|0;c[d+180>>2]=b;d=d+184|0;e=c[d>>2]|0;c[d>>2]=e+1;c[b+(e<<2)>>2]=f;e=c[h>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=f+-48|0;b=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;if(!d)b=ww((c[b+176>>2]<<2)+8|0)|0;else b=yw(d,(c[b+176>>2]<<2)+8|0)|0;c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;i=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;b=c[i+172>>2]|0;i=i+176|0;d=c[i>>2]|0;c[i>>2]=d+1;c[b+(d<<2)>>2]=f;e=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;c[(c[e+172>>2]|0)+(c[e+176>>2]<<2)>>2]=0;f=Rm(a,f)|0}g=eo(a,g)|0}return}function Kj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=a+16|0;o=c[n>>2]|0;b[o+236>>1]=32767;b[o+238>>1]=-1;a:do if((f|0)>1){h=vw((f<<2)+4|0)|0;g=f+1|0;f=1;while(1){if((f|0)==(g|0)){m=h;o=h;break a}c[h+(f<<2)>>2]=32767;f=f+1|0}}else{m=0;o=0}while(0);i=(m|0)==0;h=co(a)|0;while(1){if(!h)break;j=c[(c[(c[(Lj(h)|0)+16>>2]|0)+148>>2]|0)+16>>2]|0;k=c[j+232>>2]|0;l=c[h+16>>2]|0;c[l+232>>2]=k;f=c[n>>2]|0;g=f+238|0;if((k|0)>(b[g>>1]|0))b[g>>1]=k;f=f+236|0;if((k|0)<(b[f>>1]|0))b[f>>1]=k;if(!i){j=c[j+128>>2]|0;c[l+128>>2]=j;l=m+(j<<2)|0;j=c[l>>2]|0;c[l>>2]=(j|0)<(k|0)?j:k}h=eo(a,h)|0}j=(m|0)!=0;b:do if(!j){m=b[(c[n>>2]|0)+236>>1]|0;g=m<<16>>16;if(m<<16>>16>0){f=co(a)|0;while(1){if(!f)break;m=(c[f+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-g;f=eo(a,f)|0}f=c[n>>2]|0;n=f+236|0;b[n>>1]=(e[n>>1]|0)-g;f=f+238|0;b[f>>1]=(e[f>>1]|0)-g;f=0}else f=0}else{f=co(a)|0;while(1){if(!f){f=1;break b}l=c[f+16>>2]|0;n=l+232|0;c[n>>2]=(c[n>>2]|0)-(c[m+(c[l+128>>2]<<2)>>2]|0);f=eo(a,f)|0}}while(0);Mj(a,f);i=co(d)|0;while(1){if(!i)break;g=i+16|0;f=c[g>>2]|0;h=c[f+172>>2]|0;if(h){_I(h);f=c[g>>2]|0}f=c[f+180>>2]|0;if(f|0)_I(f);i=eo(d,i)|0}_I(c[(c[(co(a)|0)+16>>2]|0)+112>>2]|0);f=co(a)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+112>>2]=0;f=eo(a,f)|0}if(j)_I(o);return}function Lj(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;d=(c[b>>2]|0)+152|0;e=c[d>>2]|0;if(e){if((e|0)!=(a|0)){e=Lj(e)|0;c[(c[b>>2]|0)+152>>2]=e;return e|0}}else c[d>>2]=a;return a|0}function Mj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=a+16|0;e=1;while(1){f=c[i>>2]|0;if((e|0)>(c[f+180>>2]|0))break;Mj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0,0);e=e+1|0}if((d|0)!=0|(c[f+200>>2]|0)!=0){b[f+236>>1]=32767;b[f+238>>1]=-1;e=0;h=co(a)|0;while(1){if(!h)break;g=c[(c[h+16>>2]|0)+232>>2]|0;d=c[i>>2]|0;f=d+238|0;if((g|0)>(b[f>>1]|0))b[f>>1]=g;d=d+236|0;if((g|0)<(b[d>>1]|0)){b[d>>1]=g;e=h}h=eo(a,h)|0}c[(c[i>>2]|0)+264>>2]=e}return}function Nj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+16>>2]|0)+128|0;a:do if(!(c[e>>2]|0)){c[e>>2]=d;e=Pm(a,b)|0;while(1){if(!e)break;Nj(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,d);e=Rm(a,e)|0}e=Sm(a,b)|0;while(1){if(!e)break a;Nj(a,c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,d);e=Tm(a,e)|0}}while(0);return}function Oj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=no(a,b,1)|0;b=f+16|0;c[(c[b>>2]|0)+176>>2]=0;e=vw(20)|0;d=c[b>>2]|0;c[d+172>>2]=e;c[d+184>>2]=0;d=vw(20)|0;b=c[b>>2]|0;c[b+180>>2]=d;d=c[41933]|0;e=b+168|0;if(!d){c[e>>2]=0;c[(c[a+16>>2]|0)+192>>2]=f}else{c[e>>2]=d;c[(c[d+16>>2]|0)+164>>2]=f}c[41933]=f;c[b+164>>2]=0;return f|0}function Pj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=d+16|0;e=c[h>>2]|0;f=e+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;a[e+158>>0]=1;d=Pm(b,d)|0;while(1){if(!d)break;e=Rm(b,d)|0;f=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;g=c[f+16>>2]|0;if(a[g+158>>0]|0){Qj(b,d);d=e;continue}if(a[g+157>>0]|0){d=e;continue}Pj(b,f);d=e}a[(c[h>>2]|0)+158>>0]=0}return}function Qj(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=c[b>>2]&3;g=b+-48|0;f=b+48|0;d=an(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,0)|0;if(!d){d=c[b>>2]&3;d=an(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,1)|0}g=c[b+16>>2]|0;Rj(d,e[g+170>>1]|0,c[g+156>>2]|0);qo(a,b)|0;return}function Rj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;a=c[a+16>>2]|0;g=a+170|0;h=e[g>>1]|0;b[g>>1]=(h|0)>(d|0)?h:d;d=a+156|0;c[d>>2]=(c[d>>2]|0)+f;return}function Sj(a){a=a|0;return (JA(Im(a,80109)|0,0)|0)&255|0}function Tj(b){b=b|0;var d=0,e=0;d=c[42233]|0;if((((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(IA(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Uj(a){a=a|0;var b=0,d=0;d=c[a>>2]&3;b=c[(c[(c[((d|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;a=c[(c[(c[((d|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;if((b|0)==(a|0))return 1;else{d=Xj(b,a)|0;return ((d|0)==(b|0)|(d|0)==(a|0))&1|0}return 0}function Vj(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;g=an(a,b,d,0,0)|0;if(!g){g=an(a,d,b,0,0)|0;if(!g){g=an(a,b,d,0,1)|0;if(!g){b=Dn(b)|0;f=Dn(d)|0;c[h>>2]=b;c[h+4>>2]=f;_l(1,80126,h)|0}else i=4}else i=4}else i=4;if((i|0)==4){i=c[f+16>>2]|0;Rj(g,e[i+170>>1]|0,c[i+156>>2]|0)}l=j;return}function Wj(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+112|0;j=m;i=m+4|0;h=Sm(a,d)|0;while(1){if(!h){k=6;break}n=Pm(a,c[((c[h>>2]&3|0)==3?h:h+48|0)+40>>2]|0)|0;if(n|0?(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)==(f|0):0)break;h=Tm(a,h)|0}if((k|0)==6){n=c[41934]|0;c[41934]=n+1;c[j>>2]=n;pL(i,80117,j)|0;i=Oj(a,i)|0;n=an(a,i,d,0,1)|0;i=an(a,i,f,0,1)|0;f=c[g+16>>2]|0;k=f+156|0;n=(c[n+16>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+((c[k>>2]|0)*1e3|0);n=c[i+16>>2]|0;j=n+170|0;b[j>>1]=b[(c[((e[j>>1]|0)>(e[f+170>>1]|0)?i:g)+16>>2]|0)+170>>1]|0;n=n+156|0;c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}l=m;return}function Xj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:while(1){e=a+16|0;while(1){if((a|0)==(b|0))break a;f=c[e>>2]|0;d=c[b+16>>2]|0;if((c[f+204>>2]|0)>=(c[d+204>>2]|0))break;b=c[d+200>>2]|0}a=c[f+200>>2]|0}return a|0}function Yj(a){a=a|0;return (co(a)|0)==0|0}function Zj(a,b){a=a|0;b=b|0;c[(c[a+16>>2]|0)+200>>2]=b;yj(b,a);xj(b,a);return}function _j(b){b=b|0;var c=0;b=Im(b,80018)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)if(xJ(b,80028)|0)if(xJ(b,80032)|0)if(xJ(b,80039)|0)if(xJ(b,80043)|0)if(!(xJ(b,80023)|0))b=1;else c=8;else b=5;else b=4;else b=3;else b=2;else c=8;if((c|0)==8)b=6;return b|0}function $j(a){a=a|0;var b=0,c=0;c=co(a)|0;a:do if(!c)b=0;else{b=Lj(c)|0;while(1){c=eo(a,c)|0;if(!c)break a;ak(b,c)|0}}while(0);return b|0}function ak(a,b){a=a|0;b=b|0;if(b){a=Lj(a)|0;c[(c[(Lj(b)|0)+16>>2]|0)+152>>2]=a}return a|0}function bk(a,b,d){a=a|0;b=b|0;d=d|0;No(b,80077,c[d>>2]|0,1)|0;return}function ck(a,b,d){a=a|0;b=b|0;d=d|0;No(b,80244,c[d+4>>2]|0,1)|0;return}function dk(a,b,d){a=a|0;b=b|0;d=d|0;No(b,80229,c[d+8>>2]|0,1)|0;return}function ek(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+240|0;m=p+120|0;n=p;c[42237]=ym(b,2,80259,0)|0;k=ym(b,2,80268,0)|0;c[42238]=k;a:do if((k|0)!=0|(c[42237]|0)!=0){k=co(b)|0;while(1){if(!k)break a;j=0;d=0;i=Um(b,k)|0;while(1){if(!i){f=0;break}e=c[i>>2]|0;g=e&3;f=c[((g|0)==2?i:i+-48|0)+40>>2]|0;h=i+48|0;b:do if((f|0)!=(c[((g|0)==3?i:h)+40>>2]|0)){g=c[42237]|0;do if((f|0)==(k|0)&(g|0)!=0){f=Jm(i,g)|0;if(!(a[f>>0]|0)){e=c[i>>2]|0;break}else{e=j;d=fk(m,d,k,i,f)|0;break b}}while(0);f=c[42238]|0;if((f|0?(c[((e&3|0)==3?i:h)+40>>2]|0)==(k|0):0)?(o=Jm(i,f)|0,(a[o>>0]|0)!=0):0)e=fk(n,j,k,i,o)|0;else e=j}else e=j;while(0);j=e;i=Vm(b,i,k)|0}while(1){if((f|0)>=(d|0)){e=0;break}e=m+(f*24|0)+4|0;if((c[m+(f*24|0)+8>>2]|0)>1)gk(k,e);e=c[e>>2]|0;if(e|0)_I(e);f=f+1|0}while(1){if((e|0)>=(j|0))break;d=n+(e*24|0)+4|0;if((c[n+(e*24|0)+8>>2]|0)>1)gk(k,d);d=c[d>>2]|0;if(d|0)_I(d);e=e+1|0}k=eo(b,k)|0}}while(0);l=p;return}function fk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+16|0;k=p;m=p+12|0;n=p+8|0;o=0;while(1){if((o|0)>=(d|0)){j=10;break}j=c[b+(o*24|0)>>2]|0;if((a[j>>0]|0)==(a[g>>0]|0)?(xJ(j,g)|0)==0:0){j=5;break}o=o+1|0}do if((j|0)==5){k=b+(o*24|0)+4|0;j=c[k>>2]|0;if(!j){j=b+(o*24|0)+8|0;g=j;j=ww((c[j>>2]<<2)+8|0)|0}else{q=b+(o*24|0)+8|0;g=q;j=yw(j,(c[q>>2]<<2)+8|0)|0}c[k>>2]=j;r=c[g>>2]|0;q=r+1|0;c[g>>2]=q;c[j+(r<<2)>>2]=f;c[(c[k>>2]|0)+(q<<2)>>2]=0;j=13}else if((j|0)==10)if((d|0)>4){r=Dn(e)|0;c[k>>2]=5;c[k+4>>2]=r;_l(1,80277,k)|0;break}else{s=b+(o*24|0)+8|0;c[s>>2]=0;k=vw(8)|0;r=b+(o*24|0)+4|0;c[r>>2]=k;q=c[s>>2]|0;j=q+1|0;c[s>>2]=j;c[k+(q<<2)>>2]=f;c[(c[r>>2]|0)+(j<<2)>>2]=0;c[b+(o*24|0)>>2]=g;c[b+(o*24|0)+12>>2]=0;h[b+(o*24|0)+16>>3]=0.0;d=d+1|0;j=13;break}while(0);if((j|0)==13){At(f,m,n);j=(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)==(e|0)?c[n>>2]|0:c[m>>2]|0;if(j){r=b+(o*24|0)+12|0;s=c[r>>2]|0;c[r>>2]=s+1;if(!s)i=+Et(f,j);else i=0.0;h[b+(o*24|0)+16>>3]=i}}l=p;return d|0}function gk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+80|0;t=x+68|0;u=x+64|0;r=x;v=d+4|0;n=c[v>>2]|0;w=b+16|0;i=0;p=0.0;q=0.0;while(1){if((i|0)>=(n|0))break;f=c[(c[d>>2]|0)+(i<<2)>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;g=c[e+16>>2]|0;s=c[w>>2]|0;k=+h[g+16>>3]-+h[s+16>>3];m=+h[g+24>>3]-+h[s+24>>3];o=+QJ(k,m);i=i+1|0;p=k/o+p;q=m/o+q}j=+QJ(p,q);s=c[w>>2]|0;k=+h[s+16>>3];m=+h[s+24>>3];y=+h[s+96>>3]+ +h[s+88>>3];o=+h[s+80>>3];s=y>o+ +(c[(c[(ro(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0;if(s)o=+h[e+96>>3]+ +h[e+88>>3];else{o=+h[e+80>>3];o=o+ +(c[(c[(ro(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0}y=+h[e+16>>3]+o*(p/j);j=+h[e+24>>3]+o*(q/j);h[r>>3]=k;n=r+8|0;h[n>>3]=m;h[r+16>>3]=(y+k*2.0)*.3333333333333333;h[r+24>>3]=(j+m*2.0)*.3333333333333333;h[r+32>>3]=(y*2.0+k)*.3333333333333333;h[r+40>>3]=(j*2.0+m)*.3333333333333333;h[r+48>>3]=y;h[r+56>>3]=j;Gz(b,r);s=c[w>>2]|0;j=+h[r>>3]-+h[s+16>>3];k=+h[n>>3]-+h[s+24>>3];j=+(~~(j+(j>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);y=+h[s+88>>3];s=~~((y+j)*256.0/(+h[s+96>>3]+y))&255;r=0;while(1){if((r|0)>=(c[v>>2]|0))break;n=c[(c[d>>2]|0)+(r<<2)>>2]|0;At(n,t,u);while(1){if(!n)break;else g=n;while(1){if(!g){i=n;break}e=c[g>>2]|0;i=g+-48|0;if((c[((e&3|0)==2?g:i)+40>>2]|0)==(b|0)){e=c[g+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[g>>2]|0}f=g+16|0;if((c[((e&3|0)==3?g:g+48|0)+40>>2]|0)==(b|0)){e=c[f>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[f>>2]|0)+112>>0]|0)!=1){g=0;continue}e=c[(c[((c[g>>2]&3|0)==2?g:i)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){g=0;continue}if((c[e+184>>2]|0)!=1){g=0;continue}g=c[c[e+180>>2]>>2]|0}while(1){if(!i)break;e=c[i>>2]|0;if((c[((e&3|0)==2?i:i+-48|0)+40>>2]|0)==(b|0)){e=c[i+16>>2]|0;h[e+56>>3]=j;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[i>>2]|0}f=i+48|0;g=i+16|0;if((c[((e&3|0)==3?i:f)+40>>2]|0)==(b|0)){e=c[g>>2]|0;h[e+16>>3]=j;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[g>>2]|0)+112>>0]|0)!=1){i=0;continue}e=c[(c[((c[i>>2]&3|0)==3?i:f)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){i=0;continue}if((c[e+176>>2]|0)!=1){i=0;continue}i=c[c[e+172>>2]>>2]|0}n=c[(c[n+16>>2]|0)+172>>2]|0}r=r+1|0}a[(c[w>>2]|0)+145>>0]=1;l=x;return}function hk(a){a=a|0;var b=0,d=0,e=0;Xg(a);b=c[a>>2]&3;d=a+-48|0;e=a+48|0;b=Sg(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0)|0;if(!b){b=c[a>>2]&3;ah(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0,a)|0}else ih(a,b);return}function ik(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+16|0;e=0;while(1){b=c[f>>2]|0;if((e|0)>=(c[b+220>>2]|0))break;d=c[(c[b+216>>2]|0)+(e<<2)>>2]|0;c[b+192>>2]=d;b=d;d=b;while(1){if(!d)break;g=c[d+16>>2]|0;a[g+157>>0]=0;d=c[g+164>>2]|0}while(1){if(!b)break;jk(b);b=c[(c[b+16>>2]|0)+164>>2]|0}e=e+1|0}return}function jk(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+16|0;d=c[g>>2]|0;b=d+157|0;if(!(a[b>>0]|0)){a[b>>0]=1;a[d+158>>0]=1;b=0;while(1){f=c[(c[d+180>>2]|0)+(b<<2)>>2]|0;if(!f)break;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;e=c[d+16>>2]|0;if(!(a[e+158>>0]|0)){if(!(a[e+157>>0]|0))jk(d)}else{hk(f);b=b+-1|0}b=b+1|0;d=c[g>>2]|0}a[d+158>>0]=0}return}function kk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=co(a)|0;b=0;while(1){if(!e)break;d=Pm(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;h=c[(c[(c[((g|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;g=c[(c[(c[((g|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;f=h-g|0;d=Rm(a,d)|0;b=((h|0)==(g|0)?0:((f|0)>-1?f:0-f|0)+-1|0)+b|0}e=eo(a,e)|0}return b|0}function lk(b){b=b|0;var d=0,e=0,f=0,g=0;e=co(b)|0;while(1){if(!e)break;g=c[e+16>>2]|0;f=c[g+176>>2]|0;g=g+172|0;d=0;while(1){if((d|0)>=(f|0))break;a[(c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+112>>0]=0;d=d+1|0}e=eo(b,e)|0}return}function mk(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;o=q;j=c[b+24>>2]|0;nk(a);k=(j|0)==-1;m=b+8|0;i=k^1;n=c[13918]|0;f=1797693134862315708145274.0e284;g=0;while(1){if(!(k|(g|0)<(j|0)))break;d=co(a)|0;while(1){if(!d)break;c[(c[d+16>>2]|0)+232>>2]=0;d=eo(a,d)|0}jj(a);e=+ok(a);h[m>>3]=e;if(0){h[o>>3]=e;zL(n,80329,o)|0;e=+h[m>>3]}if(!(!(e<=+h[b>>3])&(!(f<=e)|i))){p=9;break}pk(a);f=e;g=g+1|0}if((p|0)==9){p=b+20|0;c[b+16>>2]=c[p>>2];c[p>>2]=g}jj(a);qk(a);rk();h[m>>3]=+ok(a);l=q;return}function nk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0;c[41938]=ww((mn(a)|0)*24|0)|0;c[41937]=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+120>>2]=-1;b=eo(a,b)|0}i=co(a)|0;while(1){if(!i)break;j=i+16|0;do if(!(c[(c[j>>2]|0)+216>>2]|0)){f=vw(4)|0;g=c[41938]|0;k=c[41937]|0;c[g+(k*24|0)>>2]=f;c[f>>2]=i;c[g+(k*24|0)+4>>2]=1;j=c[j>>2]|0;h[g+(k*24|0)+8>>3]=+h[j+32>>3];h[g+(k*24|0)+16>>3]=+h[j+40>>3];c[j+120>>2]=k;c[41937]=k+1}else{g=KA(i)|0;k=g+16|0;b=c[k>>2]|0;d=c[b+120>>2]|0;if((d|0)>-1){g=c[41938]|0;f=c[g+(d*24|0)>>2]|0;e=g+(d*24|0)+4|0;k=c[e>>2]|0;c[e>>2]=k+1;c[f+(k<<2)>>2]=i;k=c[j>>2]|0;j=g+(d*24|0)+8|0;h[j>>3]=+h[j>>3]+ +h[k+32>>3];j=g+(d*24|0)+16|0;l=+h[j>>3];m=+h[k+40>>3];h[j>>3]=l<m?m:l;c[k+120>>2]=d;break}d=vw(c[b+216>>2]<<2)|0;e=c[41938]|0;f=c[41937]|0;b=e+(f*24|0)|0;c[b>>2]=d;c[d>>2]=g;if((g|0)==(i|0)){h[e+(f*24|0)+8>>3]=+h[(c[k>>2]|0)+32>>3];d=1;b=i}else{c[(c[b>>2]|0)+4>>2]=i;n=c[k>>2]|0;b=c[j>>2]|0;h[e+(f*24|0)+8>>3]=+h[b+32>>3]+ +h[n+32>>3];d=2;b=+h[n+40>>3]<+h[b+40>>3]?i:g}c[e+(f*24|0)+4>>2]=d;h[e+(f*24|0)+16>>3]=+h[(c[b+16>>2]|0)+40>>3];c[(c[k>>2]|0)+120>>2]=f;c[(c[j>>2]|0)+120>>2]=f;c[41937]=f+1}while(0);i=eo(a,i)|0}return}function ok(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0;qk(a);g=c[41935]|0;e=c[a+16>>2]|0;b=+(O(c[e+252>>2]|0,g+-1|0)|0);f=c[41936]|0;e=e+248|0;a=0;d=0.0;while(1){if((a|0)>=(g|0))break;i=+h[f+(a*40|0)+24>>3]+ +(O(c[e>>2]|0,c[f+(a*40|0)+16>>2]|0)|0);j=+h[f+(a*40|0)+32>>3]+b;a=a+1|0;b=j;d=d<i?i:d}return +(d/b)}function pk(a){a=a|0;var b=0;c[41939]=vw((mn(a)|0)<<2)|0;b=0;while(1){if((b|0)>=(mn(a)|0))break;c[(c[41939]|0)+(b<<2)>>2]=b;b=b+1|0}qk(a);sk(a);tk(a);return}function qk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0,l=0;c[41935]=0;b=c[41936]|0;if(b|0){e=0;while(1){if((e|0)>=(c[41937]|0))break;d=c[b+(e*40|0)+4>>2]|0;if(d){_I(d);b=c[41936]|0}d=c[b+(e*40|0)+8>>2]|0;if(d){_I(d);b=c[41936]|0}e=e+1|0}_I(b)}c[41936]=vw((c[41937]|0)*40|0)|0;b=0;while(1){d=c[41937]|0;if((b|0)>=(d|0))break;k=vw(d<<2)|0;c[(c[41936]|0)+(b*40|0)+4>>2]=k;k=vw(c[41937]<<2)|0;l=c[41936]|0;c[l+(b*40|0)+8>>2]=k;c[l+(b*40|0)>>2]=b;c[l+(b*40|0)+12>>2]=0;c[l+(b*40|0)+16>>2]=0;l=l+(b*40|0)+24|0;c[l>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;b=b+1|0}e=co(a)|0;while(1){if(!e)break;d=Pm(a,e)|0;while(1){if(!d)break;i=c[d>>2]|0;f=d+-48|0;g=c[41936]|0;b=c[(c[(c[((i&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){b=b+1|0;if((b|0)>=(c[(c[(c[((i&3|0)==2?d:f)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=g+(b*40|0)+16|0;c[i>>2]=(c[i>>2]|0)+1;i=c[d>>2]|0}d=Rm(a,d)|0}e=eo(a,e)|0}i=c[41937]|0;k=c[41938]|0;l=c[41936]|0;d=a+16|0;b=0;while(1){if((b|0)>=(i|0))break;e=(c[c[k+(b*24|0)>>2]>>2]|0)+16|0;f=c[(c[e>>2]|0)+232>>2]|0;if((f|0)>=(c[41935]|0))c[41935]=f+1;g=l+(f*40|0)+24|0;j=+h[g>>3];h[g>>3]=j+ +h[k+(b*24|0)+8>>3]*72.0+(j>0.0?+(c[(c[d>>2]|0)+248>>2]|0):0.0);g=l+(f*40|0)+32|0;j=+h[k+(b*24|0)+16>>3]*72.0;if(+h[g>>3]<j)h[g>>3]=j;c[(c[l+(f*40|0)+4>>2]|0)+(c[l+(f*40|0)+12>>2]<<2)>>2]=k+(b*24|0);a=l+((c[(c[e>>2]|0)+232>>2]|0)*40|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;b=b+1|0}return}function rk(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c[41935]|0;l=c[41936]|0;j=0;b=0;a=0;while(1){if((j|0)>=(k|0))break;d=l+(j*40|0)|0;i=c[l+(j*40|0)+12>>2]|0;e=(b|0)==0;a:do if(i)if(!e){if((c[d>>2]|0)>(a|0)){f=l+(j*40|0)+4|0;d=0;while(1){if((d|0)>=(i|0))break a;g=c[(c[f>>2]|0)+(d<<2)>>2]|0;h=c[g+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;m=(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-b;e=e+1|0}d=d+1|0}}}else b=0;else{if(e)a=c[d>>2]|0;b=b+1|0}while(0);j=j+1|0}return}function sk(a){a=a|0;var b=0;b=c[41939]|0;rL(b,mn(a)|0,4,15);return}function tk(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;j=c[41935]|0;k=c[41936]|0;g=c[41939]|0;i=0;while(1){if((i|0)>=(j|0)){e=0;d=0.0;break}e=c[g+(i<<2)>>2]|0;f=i+1|0;if((c[k+(e*40|0)+12>>2]|0)<2)i=f;else{l=4;break}}if((l|0)==4)if((j|0)>(f|0))d=+h[k+((c[g+(f<<2)>>2]|0)*40|0)+24>>3];else d=0.0;a:do if((i|0)!=(j|0)){rL(c[k+(e*40|0)+4>>2]|0,c[k+(e*40|0)+12>>2]|0,4,16);g=c[41936]|0;r=+h[g+(e*40|0)+24>>3];r=!(d<=r*.25)&!(d>=r*.75)?d:r*.5;s=c[g+(e*40|0)+12>>2]|0;q=b+16|0;n=0;o=0;d=0.0;f=0;p=0;while(1){if((p|0)>=(f+s|0))break a;do if(!(c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]|0)){l=c[(c[g+(e*40|0)+4>>2]|0)+(p<<2)>>2]|0;b=l+8|0;m=+h[b>>3]*72.0+d+(d>0.0?+(c[(c[q>>2]|0)+248>>2]|0):0.0);i=(o|0)!=0;if(!(i&!(m<=r))){j=i?n:l;i=i?o:1;d=m;break}j=n+4|0;k=l+4|0;i=0;while(1){if((i|0)<(c[j>>2]|0))g=0;else break;while(1){if((g|0)>=(c[k>>2]|0))break;a[(c[(ah(c[(c[n>>2]|0)+(i<<2)>>2]|0,c[(c[l>>2]|0)+(g<<2)>>2]|0,0)|0)+16>>2]|0)+112>>0]=1;g=g+1|0}i=i+1|0}g=c[41936]|0;c[(c[g+(e*40|0)+8>>2]|0)+(p<<2)>>2]=1;j=g+(e*40|0)+12|0;c[j>>2]=(c[j>>2]|0)+-1;j=g+(e*40|0)+16|0;c[j>>2]=(c[j>>2]|0)+1;j=g+(e*40|0)+24|0;h[j>>3]=+h[b>>3]*-72.0-+(c[(c[q>>2]|0)+248>>2]|0)+ +h[j>>3];j=n;i=o}else{j=n;i=o;f=f+1|0}while(0);n=j;o=i;p=p+1|0}}while(0);return}function uk(a,b){a=a|0;b=b|0;a=vk(c[a>>2]|0)|0;b=vk(c[b>>2]|0)|0;return ((b|0)<(a|0)&1)-((b|0)>(a|0)&1)|0}function vk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[f>>2]|0))break;e=c[(c[a>>2]|0)+(d<<2)>>2]|0;g=ro(e)|0;e=Pm(g,e)|0;while(1){if(!e)break;e=Rm(g,e)|0;b=b+1|0}d=d+1|0}return b|0}function wk(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[41936]|0;e=+h[f+((c[b>>2]|0)*40|0)+24>>3];d=+h[f+((c[a>>2]|0)*40|0)+24>>3];return (e>d&1)-(e<d&1)|0}function xk(a){a=a|0;var b=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+216>>2]=0;b=eo(a,b)|0}return}function yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g+20|0;c[d>>2]=5;a=Im(a,84624)|0;if(a|0?(c[e>>2]=g,c[e+4>>2]=d,(cM(a,80344,e)|0)>=1):0)_l(0,80351,f)|0;c[b+24>>2]=0;c[b+32>>2]=0;l=g;return 0}function zk(b){b=b|0;var d=0,e=0;d=c[42233]|0;if((((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(IA(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Ak(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;Vk(a);b=co(a)|0;while(1){if(!b)break;d=Pm(a,b)|0;while(1){if(!d)break;do if(((c[(c[d+16>>2]|0)+172>>2]|0)==0?(zk(d)|0)==0:0)?(e=d+48|0,f=KA(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)|0,g=d+-48|0,h=KA(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)|0,(f|0)!=(h|0)):0){if((c[(c[f+16>>2]|0)+212>>2]|0)==0?(c[(c[h+16>>2]|0)+212>>2]|0)==0:0){i=Sg(f,h)|0;if(!i){ah(f,h,d)|0;break}else{ih(d,i);break}}i=c[d>>2]&3;Bk(a,c[((i|0)==3?d:e)+40>>2]|0,c[((i|0)==2?d:g)+40>>2]|0,d)}while(0);d=Rm(a,d)|0}b=eo(a,b)|0}return}function Bk(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[g>>2]&3;h=c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)k=0;else k=(c[h+232>>2]|0)-(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;h=c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)h=0;else h=(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)-(c[h+232>>2]|0)|0;j=g+16|0;k=h+k+(e[(c[j>>2]|0)+170>>1]|0)|0;b=fh(b)|0;a[(c[b+16>>2]|0)+156>>0]=2;i=KA(d)|0;d=KA(f)|0;f=Mi(b,i,(k|0)>0?0.0:+(0-k|0),(c[(c[j>>2]|0)+156>>2]|0)*10|0)|0;c[(c[(Mi(b,d,+(((k|0)>0?k:0)|0),c[(c[j>>2]|0)+156>>2]|0)|0)+16>>2]|0)+116>>2]=g;c[(c[f+16>>2]|0)+116>>2]=g;return}function Ck(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[d>>2]&3;i=(j|0)==3?d:d+48|0;j=(j|0)==2?d:d+-48|0;j=c[(c[(c[((c[(c[(c[i+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[(c[j+40>>2]|0)+16>>2]|0)+232>>2]|0)?i:j)+40>>2]|0)+16>>2]|0)+232>>2]|0;i=d+16|0;d=(c[i>>2]|0)+172|0;if(c[d>>2]|0)ma(80440,80462,148,80471);c[d>>2]=f;h=(g|0)==0;do{d=c[i>>2]|0;if(h)g=c[f+16>>2]|0;else{g=c[f+16>>2]|0;k=g+168|0;b[k>>1]=(e[k>>1]|0)+(e[d+168>>1]|0)}k=g+154|0;b[k>>1]=(e[k>>1]|0)+(e[d+154>>1]|0);g=g+156|0;c[g>>2]=(c[g>>2]|0)+(c[d+156>>2]|0);d=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)==(j|0))break;Dk(a,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((f|0)!=0);return}function Dk(a,b){a=a|0;b=b|0;var d=0.0;d=+((c[(c[a+16>>2]|0)+248>>2]|0)/2|0|0);b=c[b+16>>2]|0;a=b+88|0;h[a>>3]=+h[a>>3]+d;b=b+96|0;h[b>>3]=+h[b>>3]+d;return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0;if(((((a|0)!=0&(b|0)!=0?(e=c[a>>2]&3,d=c[b>>2]&3,(c[((e|0)==3?a:a+48|0)+40>>2]|0)==(c[((d|0)==3?b:b+48|0)+40>>2]|0)):0)?(c[((e|0)==2?a:a+-48|0)+40>>2]|0)==(c[((d|0)==2?b:b+-48|0)+40>>2]|0):0)?(c[(c[a+16>>2]|0)+96>>2]|0)==(c[(c[b+16>>2]|0)+96>>2]|0):0)?(hj(a,b)|0)!=0:0)a=1;else a=0;return a|0}function Fk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=b+16|0;d=c[r>>2]|0;c[d+192>>2]=0;c[d+232>>2]=0;Vk(b);d=1;while(1){e=c[r>>2]|0;if((d|0)>(c[e+180>>2]|0))break;Wk(b,c[(c[e+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}h=co(b)|0;while(1){if(!h)break;g=Pm(b,h)|0;while(1){if(!g)break;d=c[g>>2]|0;e=(c[(c[((d&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+160|0;f=a[e>>0]|0;if(f<<24>>24<3){a[e>>0]=f+1<<24>>24;d=c[g>>2]|0}d=(c[(c[((d&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+160|0;e=a[d>>0]|0;if(e<<24>>24<3)a[d>>0]=e+1<<24>>24;g=Rm(b,g)|0}h=eo(b,h)|0}m=co(b)|0;while(1){if(!m)break;if((c[(c[m+16>>2]|0)+212>>2]|0)==0?(m|0)==(KA(m)|0):0){bh(b,m);l=(c[r>>2]|0)+232|0;c[l>>2]=(c[l>>2]|0)+1}d=0;l=Pm(b,m)|0;while(1){if(!l)break;k=l+16|0;h=c[k>>2]|0;a:do if(!(c[h+172>>2]|0)){if(Gk(l)|0){if(!(Ek(d,l)|0)){Hk(b,l);d=l;break}e=c[(c[d+16>>2]|0)+172>>2]|0;if(e|0){Ck(b,l,e,0);Yg(l);break}k=c[l>>2]&3;if((c[(c[(c[((k|0)==3?l:l+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)!=(c[(c[(c[((k|0)==2?l:l+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;ih(l,d);Yg(l);break}if(d){i=c[l>>2]&3;e=l+48|0;f=c[((i|0)==3?l:e)+40>>2]|0;g=c[d>>2]&3;if((f|0)==(c[((g|0)==3?d:d+48|0)+40>>2]|0)?(n=c[((i|0)==2?l:l+-48|0)+40>>2]|0,(n|0)==(c[((g|0)==2?d:d+-48|0)+40>>2]|0)):0){if((c[(c[f+16>>2]|0)+232>>2]|0)==(c[(c[n+16>>2]|0)+232>>2]|0)){ih(l,d);Yg(l);break}if(((c[h+96>>2]|0)==0?(o=d+16|0,(c[(c[o>>2]|0)+96>>2]|0)==0):0)?(hj(l,d)|0)!=0:0)if(!(a[174076]|0)){Ck(b,l,c[(c[o>>2]|0)+172>>2]|0,1);Yg(l);break}else{a[(c[k>>2]|0)+112>>0]=6;break}else i=e}else i=e}else i=l+48|0;h=c[l>>2]&3;e=c[((h|0)==3?l:i)+40>>2]|0;j=l+-48|0;if((e|0)==(c[((h|0)==2?l:j)+40>>2]|0)){Yg(l);d=l;break}e=KA(e)|0;f=KA(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)|0;h=c[l>>2]&3;if((c[((h|0)==3?l:i)+40>>2]|0)==(e|0)?(c[((h|0)==2?l:j)+40>>2]|0)==(f|0):0){g=c[(c[e+16>>2]|0)+232>>2]|0;h=c[(c[f+16>>2]|0)+232>>2]|0;if((g|0)==(h|0)){gh(b,l);d=l;break}if((h|0)>(g|0)){Ik(b,e,f,l);d=l;break}e=an(b,f,e,0,0)|0;do if(e|0?(p=c[e>>2]&3,q=c[((p|0)==2?e:e+-48|0)+40>>2]|0,(q|0)!=(c[((c[l>>2]&3|0)==2?l:j)+40>>2]|0)):0){f=e+16|0;if(!(c[(c[f>>2]|0)+172>>2]|0))Ik(b,c[((p|0)==3?e:e+48|0)+40>>2]|0,q,e);if((c[(c[k>>2]|0)+96>>2]|0)==0?(c[(c[f>>2]|0)+96>>2]|0)==0:0){if(!(hj(l,e)|0))break;if(!(a[174076]|0)){Yg(l);Ck(b,l,c[(c[f>>2]|0)+172>>2]|0,1);break a}else{a[(c[k>>2]|0)+112>>0]=6;a[(c[f>>2]|0)+153>>0]=1;break a}}}while(0);d=c[l>>2]&3;Ik(b,c[((d|0)==2?l:j)+40>>2]|0,c[((d|0)==3?l:i)+40>>2]|0,l);d=l}}else d=l;while(0);l=Rm(b,l)|0}m=eo(b,m)|0}if((Vf(b)|0)!=(b|0)){d=c[(c[r>>2]|0)+216>>2]|0;if(!d)d=ww(4)|0;else d=yw(d,4)|0;r=c[r>>2]|0;c[r+216>>2]=d;c[d>>2]=c[r+192>>2]}return}function Gk(b){b=b|0;var d=0;d=c[b>>2]&3;if((a[(c[(c[((d|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7)b=1;else b=(a[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7&1;return b|0}function Hk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=Lk(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;g=Lk(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;i=(c[(c[f+16>>2]|0)+232>>2]|0)>(c[(c[g+16>>2]|0)+232>>2]|0);e=i?f:g;f=i?g:f;g=f+16|0;i=e+16|0;a:do if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[i>>2]|0)+212>>2]|0)){h=Sg(f,e)|0;if(h|0){Ck(b,d,h,1);break}if((c[(c[g>>2]|0)+232>>2]|0)!=(c[(c[i>>2]|0)+232>>2]|0)){Ik(b,f,e,d);e=(c[d+16>>2]|0)+172|0;while(1){e=c[e>>2]|0;if(!e)break a;f=e+-48|0;if((c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[i>>2]|0)+232>>2]|0))break a;a[(c[e+16>>2]|0)+112>>0]=5;e=c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+180>>2]|0}}}while(0);return}function Ik(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;f=c[k>>2]|0;if(!(c[f+96>>2]|0))j=-1;else j=((c[(c[d+16>>2]|0)+232>>2]|0)+(c[(c[b+16>>2]|0)+232>>2]|0)|0)/2|0;if(c[f+172>>2]|0)ma(80483,80462,89,80508);i=d+16|0;h=c[(c[b+16>>2]|0)+232>>2]|0;while(1){g=h+1|0;f=c[(c[i>>2]|0)+232>>2]|0;if((h|0)>=(f|0))break;if((g|0)<(f|0)){if((g|0)==(j|0))f=Jk(a,e)|0;else f=Kk(a)|0;c[(c[f+16>>2]|0)+232>>2]=g}else f=d;vi(ah(b,f,e)|0);h=g;b=f}if(!(c[(c[k>>2]|0)+172>>2]|0))ma(80519,80462,103,80508);else return}function Jk(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0.0;i=d+16|0;g=c[(c[i>>2]|0)+96>>2]|0;e=+h[g+24>>3];f=+h[g+32>>3];g=fh(b)|0;d=g+16|0;c[(c[d>>2]|0)+104>>2]=c[(c[i>>2]|0)+96>>2];j=+(c[(c[(so(g)|0)+16>>2]|0)+248>>2]|0);h[(c[d>>2]|0)+88>>3]=j;if(!(a[(c[i>>2]|0)+114>>0]|0)){b=(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0;i=c[d>>2]|0;h[i+80>>3]=b?f:e;h[i+96>>3]=b?e:f}return g|0}function Kk(a){a=a|0;var b=0;b=fh(a)|0;Dk(a,b);return b|0}function Lk(b){b=b|0;var d=0;d=c[b+16>>2]|0;if((a[d+159>>0]|0)==7)b=c[(c[(c[(c[d+212>>2]|0)+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;else b=KA(b)|0;return b|0}function Mk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=Vf(a)|0;h=co(a)|0;while(1){if(!h)break;b=Um(j,h)|0;i=0;while(1){if(!b)break;l=Vm(j,b,h)|0;if(Bo(a,b)|0){k=i;b=l;i=k;continue}k=(c[b>>2]&3|0)==2?b:b+-48|0;m=(Ek(i,k)|0)==0;e=c[k>>2]&3;b=c[((e|0)==3?k:k+48|0)+40>>2]|0;d=c[(c[b+16>>2]|0)+232>>2]|0;e=c[((e|0)==2?k:k+-48|0)+40>>2]|0;f=c[(c[e+16>>2]|0)+232>>2]|0;g=(d|0)==(f|0);if(!m){c[(c[k+16>>2]|0)+172>>2]=g?i:0;b=c[(c[i+16>>2]|0)+172>>2]|0;if(!b){m=i;b=l;i=m;continue}Ck(a,k,b,0);Zg(k);m=i;b=l;i=m;continue}if(!g)if((f|0)>(d|0)){Nk(b,e,k);b=l;i=k;continue}else{Nk(e,b,k);b=l;i=k;continue}b=Ug(b,e)|0;if(!b){gh(j,k);b=l;i=k;continue}if((k|0)==(b|0)){m=i;b=l;i=m;continue}Zg(k);if(c[(c[k+16>>2]|0)+172>>2]|0){m=i;b=l;i=m;continue}ih(k,b);m=i;b=l;i=m}h=eo(a,h)|0}return}function Nk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=Ok(a)|0;e=Ok(b)|0;Pk(f,e,d,c[(c[d+16>>2]|0)+172>>2]|0,(f|0)==(a|0)&(e|0)==(b|0)?1:5);return}function Ok(b){b=b|0;var d=0,e=0,f=0;d=c[b+16>>2]|0;e=c[d+212>>2]|0;if((e|0)!=0?(f=c[e+16>>2]|0,(a[f+272>>0]|0)==0):0)b=c[(c[f+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;return b|0}function Pk(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;k=c[(c[n>>2]|0)+232>>2]|0;o=e+16|0;i=c[(c[o>>2]|0)+232>>2]|0;if((i|0)<=(k|0))ma(80544,80572,81,80582);m=c[g>>2]&3;if(!((c[((m|0)==3?g:g+48|0)+40>>2]|0)==(d|0)?(c[((m|0)==2?g:g+-48|0)+40>>2]|0)==(e|0):0))l=5;a:do if((l|0)==5){if((b[(c[g+16>>2]|0)+168>>1]|0)>1){c[(c[f+16>>2]|0)+172>>2]=0;if(((i-k|0)==1?(j=Sg(d,e)|0,j|0):0)?hj(f,j)|0:0){ih(f,j);if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;Yg(f);break}m=h&255;h=d;l=c[(c[n>>2]|0)+232>>2]|0;while(1){i=c[(c[o>>2]|0)+232>>2]|0;if((l|0)>=(i|0))break a;if((l|0)<(i+-1|0)){i=Vf(d)|0;j=g+-48|0;i=Qk(i,c[((c[g>>2]&3|0)==2?g:j)+40>>2]|0)|0;k=g}else{i=e;j=g+-48|0;k=g}a[(c[(ah(h,i,f)|0)+16>>2]|0)+112>>0]=m;n=(c[g+16>>2]|0)+168|0;b[n>>1]=(b[n>>1]|0)+-1<<16>>16;h=i;l=l+1|0;g=c[c[(c[(c[((c[k>>2]&3|0)==2?g:j)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}}do if((i-k|0)==1){g=Sg(d,e)|0;if(g|0?hj(f,g)|0:0){c[(c[f+16>>2]|0)+172>>2]=g;m=c[g+16>>2]|0;a[m+112>>0]=h;m=m+168|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16;if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;Yg(f);break}c[(c[f+16>>2]|0)+172>>2]=0;g=ah(d,e,f)|0;a[(c[g+16>>2]|0)+112>>0]=h}while(0);i=c[(c[o>>2]|0)+232>>2]|0;if((i-(c[(c[n>>2]|0)+232>>2]|0)|0)>1){if((c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)==(d|0))l=i;else{n=f+16|0;c[(c[n>>2]|0)+172>>2]=0;l=ah(d,c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0,f)|0;c[(c[n>>2]|0)+172>>2]=l;Xg(g);g=l;l=c[(c[o>>2]|0)+232>>2]|0}while(1){i=c[g>>2]&3;j=c[((i|0)==2?g:g+-48|0)+40>>2]|0;k=c[j+16>>2]|0;if((c[k+232>>2]|0)==(l|0))break;g=c[c[k+180>>2]>>2]|0}if((j|0)!=(e|0)){a[(c[(ah(c[((i|0)==3?g:g+48|0)+40>>2]|0,e,f)|0)+16>>2]|0)+112>>0]=h;Xg(g)}}}while(0);return}function Qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=b+16|0;b=c[d>>2]|0;e=c[b+232>>2]|0;Rk(a,e,c[b+236>>2]|0,2);b=fh(a)|0;d=c[d>>2]|0;f=c[b+16>>2]|0;h[f+88>>3]=+h[d+88>>3];h[f+96>>3]=+h[d+96>>3];c[f+232>>2]=c[d+232>>2];d=(c[d+236>>2]|0)+1|0;c[f+236>>2]=d;c[(c[(c[(c[a+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return b|0}function Rk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+16|0;f=c[(c[h>>2]|0)+196>>2]|0;i=c[f+(b<<6)+4>>2]|0;a:do if((e|0)<1){d=d-e|0;while(1){g=d+1|0;a=c[f+(b<<6)>>2]|0;if((g|0)>=(a|0))break;a=c[i+(g<<2)>>2]|0;f=d+e|0;c[(c[a+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=a;d=g;f=c[(c[h>>2]|0)+196>>2]|0}g=e+-1|0;d=g+a|0;while(1){if((d|0)>=(a|0))break a;c[i+(d<<2)>>2]=0;f=c[(c[h>>2]|0)+196>>2]|0;d=d+1|0;a=c[f+(b<<6)>>2]|0}}else{g=e+-1|0;a=c[f+(b<<6)>>2]|0;while(1){a=a+-1|0;if((a|0)<=(d|0))break;j=c[i+(a<<2)>>2]|0;f=g+a|0;c[(c[j+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=j}f=e+d|0;a=d;while(1){a=a+1|0;if((a|0)>=(f|0))break;c[i+(a<<2)>>2]=0}a=c[(c[h>>2]|0)+196>>2]|0;f=a;a=c[a+(b<<6)>>2]|0}while(0);c[f+(b<<6)>>2]=g+a;return}function Sk(a){a=a|0;var b=0;Fk(a);b=c[a+16>>2]|0;c[b+220>>2]=1;c[c[b+216>>2]>>2]=c[b+192>>2];si(a);Zh(a,0);Tk(a);Mk(a);Uk(a);return}function Tk(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=Vf(d)|0;l=d+16|0;f=c[l>>2]|0;j=b[f+236>>1]|0;e=j<<16>>16;m=k+16|0;if(j<<16>>16>0)a[(c[(c[m>>2]|0)+196>>2]|0)+(e+-1<<6)+49>>0]=0;j=e;while(1){if((j|0)>(b[f+238>>1]|0))break;i=c[(c[(c[(c[f+268>>2]|0)+(j<<2)>>2]|0)+16>>2]|0)+236>>2]|0;Rk(k,j,i,c[(c[f+196>>2]|0)+(j<<6)>>2]|0);g=0;h=i;while(1){f=c[l>>2]|0;e=c[f+196>>2]|0;if((g|0)>=(c[e+(j<<6)>>2]|0))break;e=c[(c[e+(j<<6)+4>>2]|0)+(g<<2)>>2]|0;c[(c[(c[(c[m>>2]|0)+196>>2]|0)+(j<<6)+4>>2]|0)+(h<<2)>>2]=e;f=c[e+16>>2]|0;c[f+236>>2]=h;if((a[f+156>>0]|0)==1)c[e+24>>2]=so(k)|0;dh(d,e);bh(k,e);f=(c[m>>2]|0)+232|0;c[f>>2]=(c[f>>2]|0)+1;g=g+1|0;h=h+1|0}h=c[(c[m>>2]|0)+196>>2]|0;c[e+(j<<6)+4>>2]=(c[h+(j<<6)+4>>2]|0)+(i<<2);a[h+(j<<6)+49>>0]=0;j=j+1|0}e=c[m>>2]|0;if((j|0)<(b[e+238>>1]|0))a[(c[e+196>>2]|0)+(j<<6)+49>>0]=0;a[f+272>>0]=1;return}function Uk(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;h=b[d+236>>1]|0;while(1){if((h|0)>(b[d+238>>1]|0))break;f=c[(c[d+268>>2]|0)+(h<<2)>>2]|0;g=f+16|0;while(1){d=c[g>>2]|0;e=c[c[d+180>>2]>>2]|0;if(!e)break;Xg(e)}while(1){d=c[c[d+172>>2]>>2]|0;if(!d)break;Xg(d);d=c[g>>2]|0}dh(Vf(a)|0,f);c[(c[(c[i>>2]|0)+268>>2]|0)+(h<<2)>>2]=0;h=h+1|0;d=c[i>>2]|0}return}function Vk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=co(b)|0;while(1){if(!f)break;e=f+16|0;d=c[e>>2]|0;if((a[d+159>>0]|0)==7){MA(f);d=c[e>>2]|0}c[d+212>>2]=0;f=eo(b,f)|0}m=b+16|0;k=1;while(1){d=c[m>>2]|0;if((k|0)>(c[d+180>>2]|0))break;h=c[(c[d+184>>2]|0)+(k<<2)>>2]|0;i=h+16|0;d=co(h)|0;a:while(1){if(!d)break;j=eo(h,d)|0;e=d+16|0;if(a[(c[e>>2]|0)+159>>0]|0){f=Dn(d)|0;g=Dn(b)|0;c[n>>2]=f;c[n+4>>2]=g;_l(0,80591,n)|0;qo(h,d)|0;d=j;continue}NA(d,c[(c[i>>2]|0)+264>>2]|0);g=c[e>>2]|0;c[g+212>>2]=h;a[g+159>>0]=7;g=Pm(h,d)|0;while(1){if(!g){d=j;continue a}d=c[(c[g+16>>2]|0)+172>>2]|0;b:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break b;c[f+212>>2]=h;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Rm(h,g)|0}}k=k+1|0}l=o;return}function Wk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;g=vw((b[(c[k>>2]|0)+238>>1]<<2)+8|0)|0;f=c[k>>2]|0;c[f+268>>2]=g;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>(b[f+238>>1]|0))break;f=fh(d)|0;c[(c[(c[k>>2]|0)+268>>2]|0)+(h<<2)>>2]=f;j=c[f+16>>2]|0;c[j+232>>2]=h;a[j+159>>0]=7;c[j+212>>2]=e;if(g|0){j=(c[(ah(g,f,0)|0)+16>>2]|0)+154|0;b[j>>1]=(b[j>>1]|0)*1e3}g=f;h=h+1|0;f=c[k>>2]|0}j=co(e)|0;while(1){f=c[k>>2]|0;if(!j)break;h=(c[(c[f+268>>2]|0)+(c[(c[j+16>>2]|0)+232>>2]<<2)>>2]|0)+16|0;f=(c[h>>2]|0)+216|0;c[f>>2]=(c[f>>2]|0)+1;f=Pm(e,j)|0;while(1){if(!f)break;i=c[f>>2]|0;d=f+-48|0;g=c[(c[(c[((i&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){if((g|0)>=(c[(c[(c[((i&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=(c[(c[c[(c[h>>2]|0)+180>>2]>>2]|0)+16>>2]|0)+168|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;g=g+1|0;i=c[f>>2]|0}f=Rm(e,f)|0}j=eo(e,j)|0}d=b[f+238>>1]|0;i=f+268|0;f=b[f+236>>1]|0;while(1){if((f|0)>(d|0))break;g=(c[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+16>>2]|0)+216|0;h=c[g>>2]|0;if((h|0)>1)c[g>>2]=h+-1;f=f+1|0}return}function Xk(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[(c[e+16>>2]|0)+212>>2]|0)+16|0;e=c[k>>2]|0;j=f+1|0;if((j|0)!=(a[e+273>>0]|0)){i=b[e+236>>1]|0;while(1){h=b[e+238>>1]|0;if((i|0)>(h<<16>>16|0))break;mi(d,c[(c[e+268>>2]|0)+(i<<2)>>2]|0);i=i+1|0;e=c[k>>2]|0}i=b[e+236>>1]|0;while(1){if((i|0)>(h<<16>>16|0))break;ni(g,c[(c[e+268>>2]|0)+(i<<2)>>2]|0,f);d=c[k>>2]|0;i=i+1|0;h=b[d+238>>1]|0;e=d}a[e+273>>0]=j}return}function Yk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=co(b)|0;while(1){if(!h)break;c[(c[h+16>>2]|0)+212>>2]=0;g=Pm(b,h)|0;while(1){if(!g)break;d=c[(c[g+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;c[f+212>>2]=0;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Rm(b,g)|0}h=eo(b,h)|0}Zk(b);return}function Zk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Zk(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}i=co(b)|0;while(1){if(!i)break;d=(c[i+16>>2]|0)+212|0;if(!(c[d>>2]|0))c[d>>2]=b;h=Pm(b,i)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=c[d>>2]|0;g=d+-48|0;f=c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;f=f+212|0;if(!(c[f>>2]|0)){c[f>>2]=b;e=c[d>>2]|0}d=c[c[(c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);h=Rm(b,h)|0}i=eo(b,i)|0}return}function _k(a){a=a|0;var b=0,c=0,d=0;d=iB(a)|0;c=co(a)|0;while(1){if(!c)break;b=Pm(a,c)|0;while(1){if(!b)break;$k(b,d);b=Rm(a,b)|0}c=eo(a,c)|0}Kl(d)|0;return}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+320|0;H=M+296|0;G=M+280|0;x=M+136|0;w=M+120|0;n=M+104|0;i=M+88|0;f=M+80|0;E=M+16|0;z=M;j=M+264|0;k=M+248|0;m=M+232|0;o=M+216|0;A=M+200|0;B=M+184|0;y=M+168|0;D=M+152|0;g=al(Im(a,80645)|0,b)|0;q=al(Im(a,80651)|0,b)|0;r=(q|0)!=0;b=(g|0)!=0;do if(b|r?(L=a+16|0,e=c[(c[L>>2]|0)+8>>2]|0,e|0):0){if((c[e+4>>2]|0)>1){K=Dn(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)|0;L=Dn(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)|0;c[f>>2]=K;c[f+4>>2]=L;_l(0,80657,f)|0;break}I=c[e>>2]|0;e=c[I+4>>2]|0;p=c[a>>2]&3;s=a+-48|0;t=c[((p|0)==2?a:s)+40>>2]|0;u=a+48|0;p=c[((p|0)==3?a:u)+40>>2]|0;J=ww(48)|0;v=I+12|0;c[J+12>>2]=c[v>>2];C=I+8|0;c[J+8>>2]=c[C>>2];do if(b){h=(c[g+16>>2]|0)+16|0;g=(c[t+16>>2]|0)+16|0;c[H>>2]=c[g>>2];c[H+4>>2]=c[g+4>>2];c[H+8>>2]=c[g+8>>2];c[H+12>>2]=c[g+12>>2];if(!(bl(H,h)|0)){o=Dn(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=Dn(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=Im(a,80645)|0;c[i>>2]=o;c[i+4>>2]=F;c[i+8>>2]=K;_l(0,80698,i)|0;K=26;break}b=c[I>>2]|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(bl(H,h)|0){F=(c[p+16>>2]|0)+16|0;c[H>>2]=c[F>>2];c[H+4>>2]=c[F+4>>2];c[H+8>>2]=c[F+8>>2];c[H+12>>2]=c[F+12>>2];if(bl(H,h)|0){o=Dn(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;F=Dn(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=Im(a,80645)|0;c[n>>2]=o;c[n+4>>2]=F;c[n+8>>2]=K;_l(0,80741,n)|0;K=26;break}if(!(c[C>>2]|0))ma(80783,80794,369,80805);o=I+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];cl(z,G,H,h);F=(c[I>>2]|0)+48|0;c[F>>2]=c[z>>2];c[F+4>>2]=c[z+4>>2];c[F+8>>2]=c[z+8>>2];c[F+12>>2]=c[z+12>>2];F=(c[I>>2]|0)+16|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];dl(j,G,H);c[F>>2]=c[j>>2];c[F+4>>2]=c[j+4>>2];c[F+8>>2]=c[j+8>>2];c[F+12>>2]=c[j+12>>2];F=c[I>>2]|0;b=F+16|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[o>>2];c[H+4>>2]=c[o+4>>2];c[H+8>>2]=c[o+8>>2];c[H+12>>2]=c[o+12>>2];dl(k,G,H);c[F>>2]=c[k>>2];c[F+4>>2]=c[k+4>>2];c[F+8>>2]=c[k+8>>2];c[F+12>>2]=c[k+12>>2];F=c[I>>2]|0;b=F+32|0;F=F+16|0;c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];dl(m,G,H);c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];b=c[v>>2]|0;if(!b){F=3;break}F=(Nt(a,c[I>>2]|0,0,0,J,b)|0)+3|0;break}g=e+-1|0;b=0;while(1){if((b|0)>=(g|0))break;if(el((c[I>>2]|0)+(b<<4)|0,h)|0)break;b=b+3|0}e=c[v>>2]|0;f=(e|0)!=0;if((b|0)==(g|0))if(f){F=J+32|0;m=I+32|0;n=(c[I>>2]|0)+(g<<4)|0;c[G>>2]=c[m>>2];c[G+4>>2]=c[m+4>>2];c[G+8>>2]=c[m+8>>2];c[G+12>>2]=c[m+12>>2];c[H>>2]=c[n>>2];c[H+4>>2]=c[n+4>>2];c[H+8>>2]=c[n+8>>2];c[H+12>>2]=c[n+12>>2];cl(o,G,H,h);c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=g;break}else ma(80822,80794,387,80805);else{if(f)b=Nt(a,c[I>>2]|0,0,b,J,e)|0;F=b+3|0;break}}else K=26;while(0);if((K|0)==26){b=e+-1|0;if(!(c[v>>2]|0))F=b;else{F=J+32|0;o=I+32|0;c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];F=b}}do if(r){f=(c[q+16>>2]|0)+16|0;r=(c[p+16>>2]|0)+16|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];if(!(bl(H,f)|0)){G=Dn(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=Dn(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=Im(a,80651)|0;c[w>>2]=G;c[w+4>>2]=H;c[w+8>>2]=K;_l(0,80833,w)|0;K=52;break}b=(c[I>>2]|0)+(F<<4)|0;c[H>>2]=c[b>>2];c[H+4>>2]=c[b+4>>2];c[H+8>>2]=c[b+8>>2];c[H+12>>2]=c[b+12>>2];if(bl(H,f)|0){E=(c[t+16>>2]|0)+16|0;c[H>>2]=c[E>>2];c[H+4>>2]=c[E+4>>2];c[H+8>>2]=c[E+8>>2];c[H+12>>2]=c[E+12>>2];if(bl(H,f)|0){G=Dn(c[((c[a>>2]&3|0)==3?a:u)+40>>2]|0)|0;H=Dn(c[((c[a>>2]&3|0)==2?a:s)+40>>2]|0)|0;K=Im(a,80651)|0;c[x>>2]=G;c[x+4>>2]=H;c[x+8>>2]=K;_l(0,80876,x)|0;K=52;break}if(!(c[v>>2]|0))ma(80822,80794,429,80805);x=J+32|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];cl(z,G,H,f);d=F+-3|0;E=(c[I>>2]|0)+(d<<4)|0;c[E>>2]=c[z>>2];c[E+4>>2]=c[z+4>>2];c[E+8>>2]=c[z+8>>2];c[E+12>>2]=c[z+12>>2];E=F+-1|0;b=(c[I>>2]|0)+(E<<4)|0;c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];dl(A,G,H);c[b>>2]=c[A>>2];c[b+4>>2]=c[A+4>>2];c[b+8>>2]=c[A+8>>2];c[b+12>>2]=c[A+12>>2];b=c[I>>2]|0;D=b+(F<<4)|0;b=b+(E<<4)|0;c[G>>2]=c[b>>2];c[G+4>>2]=c[b+4>>2];c[G+8>>2]=c[b+8>>2];c[G+12>>2]=c[b+12>>2];c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];dl(B,G,H);c[D>>2]=c[B>>2];c[D+4>>2]=c[B+4>>2];c[D+8>>2]=c[B+8>>2];c[D+12>>2]=c[B+12>>2];D=c[I>>2]|0;b=D+(F+-2<<4)|0;E=D+(E<<4)|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[z>>2];c[H+4>>2]=c[z+4>>2];c[H+8>>2]=c[z+8>>2];c[H+12>>2]=c[z+12>>2];dl(y,G,H);c[b>>2]=c[y>>2];c[b+4>>2]=c[y+4>>2];c[b+8>>2]=c[y+8>>2];c[b+12>>2]=c[y+12>>2];b=c[C>>2]|0;if(!b)break;d=Pt(a,c[I>>2]|0,d,d,J,b)|0;break}e=F;while(1){if((e|0)>0)b=0;else break;while(1){if((b|0)==4)break;B=E+(b<<4)|0;A=(c[I>>2]|0)+(e-b<<4)|0;c[B>>2]=c[A>>2];c[B+4>>2]=c[A+4>>2];c[B+8>>2]=c[A+8>>2];c[B+12>>2]=c[A+12>>2];b=b+1|0}if(el(E,f)|0){b=0;K=43;break}e=e+-3|0}a:do if((K|0)==43)while(1){K=0;if((b|0)==4)break a;K=(c[I>>2]|0)+(e-b<<4)|0;B=E+(b<<4)|0;c[K>>2]=c[B>>2];c[K+4>>2]=c[B+4>>2];c[K+8>>2]=c[B+8>>2];c[K+12>>2]=c[B+12>>2];b=b+1|0;K=43}while(0);if(e|0){d=e+-3|0;b=c[C>>2]|0;if(!b)break;d=Pt(a,c[I>>2]|0,d,F+-3|0,J,b)|0;break}if(!(c[C>>2]|0))ma(80783,80794,452,80805);else{d=J+16|0;E=I+16|0;a=c[I>>2]|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];c[H>>2]=c[a>>2];c[H+4>>2]=c[a+4>>2];c[H+8>>2]=c[a+8>>2];c[H+12>>2]=c[a+12>>2];cl(D,G,H,f);c[d>>2]=c[D>>2];c[d+4>>2]=c[D+4>>2];c[d+8>>2]=c[D+8>>2];c[d+12>>2]=c[D+12>>2];d=0;break}}else K=52;while(0);if((K|0)==52)if(!(c[C>>2]|0))d=0;else{d=J+16|0;K=I+16|0;c[d>>2]=c[K>>2];c[d+4>>2]=c[K+4>>2];c[d+8>>2]=c[K+8>>2];c[d+12>>2]=c[K+12>>2];d=0}b=F-d+1|0;e=J+4|0;c[e>>2]=b;c[J>>2]=ww(b<<4)|0;b=0;while(1){if((b|0)>=(c[e>>2]|0))break;K=(c[J>>2]|0)+(b<<4)|0;a=(c[I>>2]|0)+(d<<4)|0;c[K>>2]=c[a>>2];c[K+4>>2]=c[a+4>>2];c[K+8>>2]=c[a+8>>2];c[K+12>>2]=c[a+12>>2];d=d+1|0;b=b+1|0}_I(c[I>>2]|0);_I(I);c[c[(c[L>>2]|0)+8>>2]>>2]=J}while(0);l=M;return}function al(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((b|0)!=0?(a[b>>0]|0)!=0:0){d=jB(d,b)|0;if(!d){c[e>>2]=b;_l(0,80996,e)|0;d=0}}else d=0;l=f;return d|0}function bl(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3];if((+h[b>>3]<=d?d<=+h[b+16>>3]:0)?(c=+h[a+8>>3],+h[b+8>>3]<=c):0)a=c<=+h[b+24>>3]&1;else a=0;return a|0}function cl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0;C=l;l=l+464|0;n=C+48|0;B=C+32|0;u=C+16|0;v=C;w=C+364|0;x=C+264|0;z=C+164|0;A=C+64|0;q=+h[b>>3];r=+h[b+8>>3];s=+h[d>>3];t=+h[d+8>>3];c[u>>2]=c[e>>2];c[u+4>>2]=c[e+4>>2];c[u+8>>2]=c[e+8>>2];c[u+12>>2]=c[e+12>>2];e=e+16|0;c[v>>2]=c[e>>2];c[v+4>>2]=c[e+4>>2];c[v+8>>2]=c[e+8>>2];c[v+12>>2]=c[e+12>>2];k=+h[u>>3];if((s<k?(f=r+ +(~~((k-q)*(r-t)/(q-s))|0),f>=+h[u+8>>3]):0)?f<=+h[v+8>>3]:0){o=f;p=k}else i=4;do if((i|0)==4){j=+h[v>>3];if(s>j){g=r+ +(~~((j-q)*(r-t)/(q-s))|0);f=+h[u+8>>3];if(g>=f?g<=+h[v+8>>3]:0){o=g;p=j;break}}else f=+h[u+8>>3];if(t<f?(m=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(m>=k)|!(m<=j))):0){o=f;p=m;break}f=+h[v+8>>3];if(t>f?(y=q+ +(~~((f-r)*(q-s)/(r-t))|0),!(!(y>=k)|!(y<=j))):0){o=f;p=y;break};c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];w=jl(n,w)|0;c[n>>2]=c[d>>2];c[n+4>>2]=c[d+4>>2];c[n+8>>2]=c[d+8>>2];c[n+12>>2]=c[d+12>>2];x=jl(n,x)|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];z=jl(n,z)|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];A=jl(n,A)|0;c[B>>2]=w;c[B+4>>2]=x;c[B+8>>2]=z;c[B+12>>2]=A;_l(1,80918,B)|0;ma(123205,80794,78,80970)}while(0);h[a>>3]=p;h[a+8>>3]=o;l=C;return}function dl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3])*.5;h[a>>3]=(+h[c>>3]+ +h[b>>3])*.5;h[a+8>>3]=d;return}function el(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+80|0;j=m+16|0;k=m;e=0;while(1){if((e|0)==4)break;i=j+(e<<4)|0;g=a+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];e=e+1|0}e=b+8|0;i=b+24|0;d=+fl(a,0.0,1.0,+h[b>>3],+h[e>>3],+h[i>>3]);if(d>=0.0&d<2.0)PA(k,j,3,d,a,0);else d=2.0;g=b+16|0;f=+fl(a,0.0,d>1.0?1.0:d,+h[g>>3],+h[e>>3],+h[i>>3]);if(f>=0.0&f<d){PA(k,j,3,f,a,0);d=f}f=+gl(a,0.0,d>1.0?1.0:d,+h[e>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){PA(k,j,3,f,a,0);d=f}f=+gl(a,0.0,d>1.0?1.0:d,+h[i>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){PA(k,j,3,f,a,0);d=f}l=m;return d<2.0|0}function fl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(il(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+48>>3]-d))<=.005){b=+h[a+56>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}PA(i,a,3,.5,j,k);g=(c+b)*.5;b=+fl(j,b,g,d,e,f);if(!(b>=0.0))b=+fl(k,g,c,d,e,f)}while(0);l=m;return +b}function gl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(hl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+B(+(+h[a+56>>3]-d))<=.005){b=+h[a+48>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}PA(i,a,3,.5,j,k);g=(c+b)*.5;b=+gl(j,b,g,d,e,f);if(!(b>=0.0))b=+gl(k,g,c,d,e,f)}while(0);l=m;return +b}function hl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a+8>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)+8>>3];i=f<b?-1:f>b&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function il(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)>>3];i=f<b?-1:f>b&1;g=e+((d|0)!=0&(i|0)!=(d|0)&1)|0;c=c+1|0;d=i;e=g}return e|0}function jl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=l;l=l+16|0;d=c;e=+h[a+8>>3];h[d>>3]=+h[a>>3];h[d+8>>3]=e;pL(b,80984,d)|0;l=c;return b|0}function kl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;s=v;u=4;t=ZI(40)|0;c[t>>2]=0;r=a+16|0;e=c[r>>2]|0;a:do if(((b[e+238>>1]|0)-(b[e+236>>1]|0)|0)>=2){m=1;d=e;e=c[e+196>>2]|0;b:while(1){n=m+1|0;if(!(c[e+(n<<6)>>2]|0)){q=15;break}else k=0;while(1){h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0)){m=n;continue b}j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=_(18,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,u|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break b}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=$(17,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,t|0,u|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break b}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;ka(6,a|0,m|0,k|0,i|0,1);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break b}}}e=c[r>>2]|0;k=k+1|0;d=e;e=c[e+196>>2]|0}}c:do if((q|0)==15){while(1){if((m|0)>0)k=0;else break;while(1){e=c[d+196>>2]|0;h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0))break;j=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;d=_(19,j|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,t|0,u|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){d=z;break c}if(d<<24>>24){i=k;d=h;while(1){g=i+1|0;if((g|0)>=(d|0))break;o=0;d=$(18,j|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,t|0,u|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){d=z;break c}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;i=g;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;ka(6,a|0,m|0,k|0,i|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;break c}}}k=k+1|0;d=c[r>>2]|0}m=m+-1|0;q=15}t=RN(167760,1,t|0,u|0)|0;u=z;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1)d=z;else d=0}while(0);d:while(1){if(d){o=0;aa(11,3,81024,s|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue}else break}else f=1;while(1){d=c[r>>2]|0;if((f|0)>(c[d+180>>2]|0))break a;o=0;fa(85,c[(c[d+184>>2]|0)+(f<<2)>>2]|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=SN(c[d>>2]|0,t|0,u|0)|0;if(!e)Ua(d|0,p|0);z=p}else e=-1;if((e|0)==1){d=z;continue d}f=f+1|0}}}while(0);_I(t|0);l=v;return}function ll(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+176>>2]|0)==1:0)?(c[b+184>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function ml(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+172>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+172>>2]>>2]|0;if(((ll(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0):0)?(sl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+16|0;f=g;a=(c[e+16>>2]|0)+16|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(Wf(g,h)|0)==0&1}else a=0;l=i;return a|0}function nl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+16|0;q=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(d<<2)>>2]|0;p=d+1|0;m=(f|0)==1;n=q+16|0;l=p;while(1){if((l|0)>(e|0)){g=e;s=p;break}o=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(l<<2)>>2]|0;k=o+16|0;a:do if(m)while(1){d=c[k>>2]|0;j=c[c[d+180>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+180>>2]|0;i=j+-48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=8;break}if((c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==8){r=0;d=ah(q,c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0,j)|0}while(1){f=c[c[(c[k>>2]|0)+172>>2]>>2]|0;if(!f)break;ih(f,d);Xg(f)}Xg(j)}else while(1){d=c[k>>2]|0;j=c[c[d+172>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+172>>2]|0;i=j+48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=17;break}if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==17){r=0;d=ah(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0,q,j)|0}while(1){f=c[c[(c[k>>2]|0)+180>>2]>>2]|0;if(!f)break;ih(f,d);Xg(f)}Xg(j)}while(0);if((c[d+176>>2]|0)!=(0-(c[d+184>>2]|0)|0)){r=23;break}dh(a,o);l=l+1|0}if((r|0)==23)ma(81160,81204,115,81211);while(1){g=g+1|0;d=c[(c[t>>2]|0)+196>>2]|0;f=d+(b<<6)|0;if((g|0)>=(c[f>>2]|0))break;e=c[d+(b<<6)+4>>2]|0;r=c[e+(g<<2)>>2]|0;c[e+(s<<2)>>2]=r;c[(c[r+16>>2]|0)+236>>2]=s;s=s+1|0}c[f>>2]=s;c[(c[d+(b<<6)+4>>2]|0)+(s<<2)>>2]=0;return}function ol(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+184>>2]|0)==1:0)?(c[b+176>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+180>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+180>>2]>>2]|0;if(((ol(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0):0)?(sl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+56|0;f=g;a=(c[e+16>>2]|0)+56|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(Wf(g,h)|0)==0&1}else a=0;l=i;return a|0}function ql(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;p=r+16|0;o=r;m=d+16|0;f=c[m>>2]|0;e=b[f+236>>1]|0;while(1){if((e|0)>(b[f+238>>1]|0))break;c[(c[f+268>>2]|0)+(e<<2)>>2]=0;e=e+1|0;f=c[m>>2]|0}ij(d);j=co(d)|0;while(1){if(!j)break;rl(d,j);i=Pm(d,j)|0;while(1){if(!i)break;else f=i;while(1){e=c[(c[f+16>>2]|0)+172>>2]|0;if(!e)break;else f=e}h=i+-48|0;while(1){e=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:h)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;rl(d,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}i=Rm(d,i)|0}j=eo(d,j)|0}e=c[m>>2]|0;i=b[e+236>>1]|0;while(1){if((i|0)>(b[e+238>>1]|0)){k=1;n=e;break}e=c[(c[e+268>>2]|0)+(i<<2)>>2]|0;j=c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;f=e+16|0;if((c[j+(c[(c[f>>2]|0)+236>>2]<<2)>>2]|0)!=(e|0)){q=17;break}h=c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;e=c[m>>2]|0;f=c[e+196>>2]|0;c[f+(i<<6)+4>>2]=h+(c[(c[(c[(c[e+268>>2]|0)+(i<<2)>>2]|0)+16>>2]|0)+236>>2]<<2);e=-1;h=0;a:while(1){if((h|0)>=(c[f+(i<<6)>>2]|0))break;f=c[(c[f+(i<<6)+4>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;b:do if(!(a[g+156>>0]|0))if(!(Bo(d,f)|0))break a;else e=h;else{f=c[c[g+172>>2]>>2]|0;while(1){if(!f)break b;g=c[(c[f+16>>2]|0)+116>>2]|0;if(!g)break;else f=g}if(Bo(d,c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)|0){j=(Bo(d,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)|0)==0;e=j?e:h}}while(0);h=h+1|0;f=c[(c[m>>2]|0)+196>>2]|0}if((e|0)==-1){c[p>>2]=Dn(d)|0;c[p+4>>2]=i;_l(0,81124,p)|0}j=c[m>>2]|0;c[(c[j+196>>2]|0)+(i<<6)>>2]=e+1;i=i+1|0;e=j}if((q|0)==17){p=Dn(e)|0;q=c[(c[f>>2]|0)+236>>2]|0;c[o>>2]=p;c[o+4>>2]=q;c[o+8>>2]=i;_l(1,81066,o)|0;Ua(167760,1)}while(1){if((k|0)>(c[n+180>>2]|0))break;ql(c[(c[n+184>>2]|0)+(k<<2)>>2]|0);k=k+1|0;n=c[m>>2]|0}l=r;return}function rl(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+16>>2]|0;a=(c[(c[a+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)|0;e=c[a>>2]|0;if(!((e|0)!=0?(c[(c[e+16>>2]|0)+236>>2]|0)<=(c[d+236>>2]|0):0))c[a>>2]=b;return}function sl(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=c[b+16>>2]|0;if(!(a[f+112>>0]|0))break;b=c[f+116>>2]|0}while(1){e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;d=c[e+116>>2]|0}if((a[f+153>>0]|0)==0?(a[e+153>>0]|0)==0:0){f=c[d>>2]&3;e=c[b>>2]&3;b=(O((c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0,(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)|0)>0&1}else b=0;return b|0}function tl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+544|0;j=k+528|0;ul(j,k+512|0,k);e=(a[173894]|0)+1<<24>>24;a[173894]=e<<24>>24==0?1:e;e=c[b+16>>2]|0;c[e+220>>2]=0;c[e+232>>2]=0;e=(d|0)>0;d=co(b)|0;while(1){if(!d)break;if(e?(h=c[d+16>>2]|0,i=c[h+212>>2]|0,(i|0)!=0):0){g=c[(c[(c[i+16>>2]|0)+268>>2]|0)+(c[h+232>>2]<<2)>>2]|0;f=7}else f=6;if((f|0)==6?(f=0,(d|0)==(KA(d)|0)):0){g=d;f=7}if((f|0)==7?(0,(a[(c[g+16>>2]|0)+157>>0]|0)!=(a[173894]|0)):0){vl(b);wl(j,b,g);xl(b)}d=eo(b,d)|0}yl(j);l=k;return}function ul(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=d;c[b+4>>2]=d+512;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;return}function vl(a){a=a|0;c[(c[a+16>>2]|0)+192>>2]=0;c[41979]=0;return}function wl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q;zl(b,e);k=p+8|0;m=p+16|0;n=p+24|0;a:while(1){o=Al(b)|0;if(!o)break;e=o+16|0;if((a[(c[e>>2]|0)+157>>0]|0)==(a[173894]|0))continue;Bl(d,o);h=c[e>>2]|0;g=h+180|0;j=c[g+4>>2]|0;i=p;c[i>>2]=c[g>>2];c[i+4>>2]=j;i=h+172|0;j=c[i+4>>2]|0;g=k;c[g>>2]=c[i>>2];c[g+4>>2]=j;g=h+188|0;j=c[g+4>>2]|0;i=m;c[i>>2]=c[g>>2];c[i+4>>2]=j;h=h+196|0;i=c[h+4>>2]|0;j=n;c[j>>2]=c[h>>2];c[j+4>>2]=i;j=3;while(1){if((j|0)<=-1)continue a;e=c[p+(j<<3)>>2]|0;b:do if(e|0){i=(c[p+(j<<3)+4>>2]|0)+-1|0;h=e+(i<<2)|0;while(1){if((i|0)<=-1)break b;f=c[h>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(o|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;if((a[(c[e+16>>2]|0)+157>>0]|0)!=(a[173894]|0)?(e|0)==(KA(e)|0):0)zl(b,e);h=h+-4|0;i=i+-1|0}}while(0);j=j+-1|0}}l=q;return}function xl(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+16|0;b=c[d>>2]|0;f=b+220|0;e=c[f>>2]|0;a=e+1|0;c[f>>2]=a;b=c[b+216>>2]|0;if(!b)a=ww(a<<2)|0;else a=yw(b,a<<2)|0;f=c[d>>2]|0;c[f+216>>2]=a;c[a+(e<<2)>>2]=c[f+192>>2];return}function yl(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;_I(c[a>>2]|0);_I(a);a=b}return}function zl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k+8|0;g=k;j=b+8|0;f=c[j>>2]|0;i=b+4|0;b=c[i>>2]|0;if((f|0)==(c[b+4>>2]|0)){f=c[b+12>>2]|0;if(!f){f=vw(16)|0;if(!f)_l(1,83988,g)|0;c[f+8>>2]=c[i>>2];c[f+12>>2]=0;b=vw(4e6)|0;c[f>>2]=b;if(!b){_l(1,81224,h)|0;b=c[f>>2]|0}c[f+4>>2]=b+4e6;c[(c[i>>2]|0)+12>>2]=f}c[i>>2]=f;f=c[f>>2]|0;c[j>>2]=f}a[(c[e+16>>2]|0)+157>>0]=(d[173894]|0)+1;c[j>>2]=f+4;c[f>>2]=e;l=k;return}function Al(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function Bl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=f+232|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+16>>2]|0;a[g+157>>0]=a[173894]|0;b=c[41979]|0;e=g+168|0;if(!b){c[e>>2]=0;c[f+192>>2]=d}else{c[e>>2]=b;c[(c[b+16>>2]|0)+164>>2]=d}c[41979]=d;c[g+164>>2]=0;return}function Cl(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;m=b+16|0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+188>>2]|0;a:do if(!e)f=0;else{f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e){f=0;break a}Dl(e);d=c[g>>2]|0;f=f+1|0;e=c[d+188>>2]|0}}while(0);while(1){if((f|0)>=(c[d+208>>2]|0))break;e=c[(c[d+204>>2]|0)+(f<<2)>>2]|0;l=c[e>>2]&3;if((c[(c[(c[((l|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)==(c[(c[(c[((l|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)){Dl(e);d=c[g>>2]|0}f=f+1|0}d=d+164|0}l=c[m>>2]|0;d=c[l+196>>2]|0;if(!((c[d+56>>2]|0)==0?(c[l+180>>2]|0)<=0:0))i=13;b:do if((i|0)==13){i=c[d+4>>2]|0;g=0;c:while(1){d=c[i+(g<<2)>>2]|0;if(!d)break b;e=c[(c[d+16>>2]|0)+196>>2]|0;d=0;while(1){f=c[e+(d<<2)>>2]|0;if(!f)break;l=c[f+16>>2]|0;if(c[l+96>>2]|0?(a[l+113>>0]|0)==0:0)break c;d=d+1|0}g=g+1|0}El(b)}while(0);ui(b);e=0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;l=d+16|0;d=c[l>>2]|0;f=c[d+188>>2]|0;d:do if(f){k=0;while(1){g=c[f+(k<<2)>>2]|0;if(!g){k=0;break}i=c[g+16>>2]|0;j=c[i+96>>2]|0;do if(j)if(!(a[i+113>>0]|0)){Fl(g);f=c[l>>2]|0;e=1;d=f;f=c[f+188>>2]|0;break}else{h[i+136>>3]=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?j+24|0:j+32|0)>>3];break}while(0);k=k+1|0}while(1){if((k|0)>=(c[d+208>>2]|0))break d;i=c[(c[d+204>>2]|0)+(k<<2)>>2]|0;j=c[i>>2]&3;g=c[((j|0)==3?i:i+48|0)+40>>2]|0;j=c[((j|0)==2?i:i+-48|0)+40>>2]|0;do if(!((g|0)==(j|0)?1:(c[(c[g+16>>2]|0)+232>>2]|0)!=(c[(c[j+16>>2]|0)+232>>2]|0))){f=i;do{j=c[f+16>>2]|0;f=c[j+172>>2]|0}while((f|0)!=0);f=a[j+113>>0]|0;g=c[i+16>>2]|0;a[g+113>>0]=f;g=c[g+96>>2]|0;if(g)if(!(f<<24>>24)){Fl(i);e=1;d=c[l>>2]|0;break}else{o=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?g+24|0:g+32|0)>>3];j=j+136|0;n=+h[j>>3];h[j>>3]=o>n?o:n;break}}while(0);k=k+1|0}}while(0);d=d+164|0}if(e|0){nh(b);Bh(b)}return e|0}function Dl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]&3;i=c[((d|0)==3?b:b+48|0)+40>>2]|0;f=i+16|0;g=c[(c[f>>2]|0)+236>>2]|0;d=c[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;h=(g|0)<(d|0);e=h?d:g;i=c[(c[(Vf(i)|0)+16>>2]|0)+196>>2]|0;f=i+(c[(c[f>>2]|0)+232>>2]<<6)+4|0;d=h?g:d;a:while(1){d=d+1|0;if((d|0)>=(e|0))break;g=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;switch(a[g+156>>0]|0){case 0:break a;case 1:break;default:continue a}if(c[g+104>>2]|0)break}if((d|0)==(e|0))do{i=c[b+16>>2]|0;a[i+113>>0]=1;b=c[i+172>>2]|0}while((b|0)!=0);return}function El(a){a=a|0;var d=0,e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;if(b[a+236>>1]|0)ma(81281,81264,190,81300);d=(b[a+238>>1]|0)+3|0;a=c[a+196>>2]|0;if(!a)a=ww(d<<6)|0;else a=yw(a,d<<6)|0;d=a+64|0;a=c[g>>2]|0;c[a+196>>2]=d;a=b[a+238>>1]|0;while(1){if((a|0)<=-1)break;f=a+-1|0;e=d+(a<<6)|0;a=d+(f<<6)|0;d=e+64|0;do{c[e>>2]=c[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(d|0));a=f;d=c[(c[g>>2]|0)+196>>2]|0}c[d+(a<<6)+8>>2]=0;c[d+(a<<6)>>2]=0;e=vw(8)|0;g=c[g>>2]|0;f=c[g+196>>2]|0;c[f+(a<<6)+12>>2]=e;c[f+(a<<6)+4>>2]=e;c[f+(a<<6)+56>>2]=0;h[f+(a<<6)+24>>3]=1.0;h[f+(a<<6)+16>>3]=1.0;h[f+(a<<6)+40>>3]=1.0;h[f+(a<<6)+32>>3]=1.0;g=g+236|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;return}function Fl(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0;j=b+16|0;if(c[(c[j>>2]|0)+96>>2]|0){m=b+48|0;k=Vf(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)|0;d=c[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0;l=Gl(k,b)|0;n=k+16|0;e=c[n>>2]|0;g=c[e+196>>2]|0;o=d+-1|0;i=c[c[g+(o<<6)+4>>2]>>2]|0;if(!i)f=+h[g+(d<<6)+24>>3]+ +h[(c[(c[c[g+(d<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +(c[e+252>>2]|0);else f=+h[(c[i+16>>2]|0)+24>>3]-+h[g+(o<<6)+16>>3];d=Hl(k,o,l)|0;k=c[(c[j>>2]|0)+96>>2]|0;q=+h[k+24>>3];p=+h[k+32>>3];j=(c[(c[n>>2]|0)+116>>2]&1|0)==0;r=j?p:q;g=d+16|0;e=c[g>>2]|0;h[e+80>>3]=r;l=~~(r*.5);p=(j?q:p)*.5;h[e+96>>3]=p;h[e+88>>3]=p;c[e+104>>2]=k;h[e+24>>3]=+(l+~~f|0);e=ah(d,c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0,b)|0;e=c[e+16>>2]|0;h[e+16>>3]=-+h[(c[g>>2]|0)+88>>3];h[e+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+96>>3];a[e+112>>0]=4;e=b+-48|0;d=ah(d,c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0,b)|0;g=c[g>>2]|0;d=c[d+16>>2]|0;h[d+16>>3]=+h[g+96>>3];h[d+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+88>>3];a[d+112>>0]=4;d=c[(c[n>>2]|0)+196>>2]|0;e=d+(o<<6)+16|0;f=+(l|0);if(+h[e>>3]<f)h[e>>3]=f;d=d+(o<<6)+24|0;if(+h[d>>3]<f)h[d>>3]=f;c[g+112>>2]=b}return}function Gl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n+8|0;f=n+4|0;g=n;d=c[b>>2]&3;e=c[((d|0)==3?b:b+48|0)+40>>2]|0;k=(c[(c[e+16>>2]|0)+232>>2]|0)+-1|0;a=c[(c[a+16>>2]|0)+196>>2]|0;h=c[a+(k<<6)+4>>2]|0;a=c[a+(k<<6)>>2]|0;k=j+8|0;c[k>>2]=-1;c[j>>2]=-1;m=j+12|0;c[m>>2]=a;i=j+4|0;c[i>>2]=a;Il(e,c[((d|0)==2?b:b+-48|0)+40>>2]|0,f,g);f=c[f>>2]|0;g=c[g>>2]|0;d=0;e=a;b=-1;while(1){if((d|0)>=(e|0))break;e=e+-1|0;Jl(c[h+(d<<2)>>2]|0,j,f,g);if((d|0)!=(e|0))Jl(c[h+(e<<2)>>2]|0,j,f,g);a=c[i>>2]|0;b=c[j>>2]|0;if((a-b|0)<2)break;else d=d+1|0}if((b|0)>(a|0))a=(c[m>>2]|0)+(c[k>>2]|0)|0;else a=a+b|0;l=n;return (a+1|0)/2|0|0}function Hl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=a+16|0;f=c[(c[g>>2]|0)+196>>2]|0;e=f+(b<<6)|0;f=c[f+(b<<6)+4>>2]|0;if(!f)f=ww((c[e>>2]<<2)+8|0)|0;else f=yw(f,(c[e>>2]<<2)+8|0)|0;e=c[(c[g>>2]|0)+196>>2]|0;c[e+(b<<6)+4>>2]=f;e=c[e+(b<<6)>>2]|0;while(1){if((e|0)<=(d|0))break;h=e+-1|0;i=c[f+(h<<2)>>2]|0;c[f+(e<<2)>>2]=i;i=(c[i+16>>2]|0)+236|0;c[i>>2]=(c[i>>2]|0)+1;e=h}h=fh(a)|0;i=f+(d<<2)|0;c[i>>2]=h;h=c[h+16>>2]|0;c[h+236>>2]=d;c[h+232>>2]=b;g=(c[(c[g>>2]|0)+196>>2]|0)+(b<<6)|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;c[f+(h<<2)>>2]=0;return c[i>>2]|0}function Il(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a=c[(c[a+16>>2]|0)+236>>2]|0;b=c[(c[b+16>>2]|0)+236>>2]|0;f=(a|0)>(b|0);c[d>>2]=f?b:a;c[e>>2]=f?a:b;return}function Jl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;h=m+4|0;g=m;b=c[b+16>>2]|0;do if((a[b+156>>0]|0)==1){k=c[b+236>>2]|0;if(c[b+176>>2]|0){i=c[b+180>>2]|0;b=0;g=0;h=0;while(1){j=c[i+(h<<2)>>2]|0;if(!j)break;n=c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=(n|0)>(e|0);b=j?((n|0)<(f|0)?b:1):b;g=j?g:1;h=h+1|0}if(g<<24>>24!=0&b<<24>>24==0){c[d>>2]=k+1;break}if(!(g<<24>>24==0&b<<24>>24!=0))break;c[d+4>>2]=k+-1;break}if((c[b+184>>2]|0)!=2)ma(81244,81264,63,81271);i=c[b+180>>2]|0;n=c[i>>2]|0;i=c[i+4>>2]|0;Il(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0,c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,h,g);i=c[g>>2]|0;if((i|0)<=(e|0)){c[d>>2]=k;c[d+8>>2]=k;break}b=c[h>>2]|0;if((b|0)>=(f|0)){c[d+4>>2]=k;c[d+12>>2]=k;break}g=(b|0)<(e|0);h=(i|0)>(f|0);if(!(h&g)){if(!(!g?!((i|0)<(f|0)&(b|0)==(e|0)):0))c[d+8>>2]=k;if(!h?!((i|0)==(f|0)&(b|0)>(e|0)):0)break;c[d+12>>2]=k}}while(0);l=m;return}function Kl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=0?(c[a+24>>2]|0)<=0:0){h=c[a+4>>2]|0;g=h+32|0;b=c[g>>2]|0;if(b){b=cb[b&31](a,2,0,h)|0;if((b|0)<0){b=-1;break}}else b=0;if(c[a+28>>2]|0)Wl(a,0)|0;f=(b|0)==0;if(f){bb[c[c[a+16>>2]>>2]&31](a,0,64)|0;if((Sl(a)|0)>0){b=-1;break}d=a+8|0;b=c[d>>2]|0;if((c[b+12>>2]|0)>0){e=a+12|0;cb[c[e>>2]&31](a,c[b+8>>2]|0,0,h)|0;b=c[d>>2]|0}else e=a+12|0;cb[c[e>>2]&31](a,b,0,h)|0}b=c[a+20>>2]|0;if(b){if(f&(b|0)==1)cb[c[a+12>>2]&31](a,a,0,h)|0}else _I(a);b=c[g>>2]|0;if(!b)b=0;else{cb[b&31](a,6,0,h)|0;b=0}}else b=-1;while(0);return b|0}function Ll(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=a+4|0;n=c[f>>2]|0;a:do if(n)if(b){m=c[c[a+16>>2]>>2]|0;g=a+8|0;if(c[c[g>>2]>>2]&4096|0)Rl(a,0)|0;e=c[n+32>>2]|0;if(e|0?(cb[e&31](a,3,b,n)|0)<0:0){b=0;break}c[f>>2]=b;e=c[b+28>>2]|0;c[a+12>>2]=(e|0)==0?19:e;e=c[c[g>>2]>>2]|0;if(!(e&112)){do if(!(e&2))if(!(e&3))if(!(d&1))break;else{b=n;break a}else if((d&3|0)==3){b=n;break a}else break;else if(d&2|0){b=n;break a}while(0);h=Ol(a)|0;e=c[g>>2]|0;l=c[e>>2]|0;c[e>>2]=l&-4097;c[e+4>>2]=0;c[e+16>>2]=0;b:do if(l&3|0){l=c[e+8>>2]|0;f=l+(c[e+12>>2]<<2)|0;e=l;while(1){if(e>>>0>=f>>>0)break b;c[e>>2]=0;e=e+4|0}}while(0);i=(d&2|0)==0;j=b+8|0;k=b+4|0;l=b+24|0;while(1){if(!h){b=n;break a}d=c[h>>2]|0;if(i){e=c[j>>2]|0;if((e|0)<0)e=c[h+8>>2]|0;else e=h+(0-e)|0;g=c[k>>2]|0;e=e+(c[b>>2]|0)|0;if((g|0)<0)e=c[e>>2]|0;f=c[l>>2]|0;if(!f)e=Ul(0,e,g)|0;else e=bb[f&31](a,e,b)|0;c[h+4>>2]=e}bb[m&31](a,h,32)|0;h=d}}else b=n}else b=n;else{c[f>>2]=b;n=c[b+28>>2]|0;c[a+12>>2]=(n|0)==0?19:n}while(0);return b|0}function Ml(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=(c|0)==0;do if(!b)if(a)a=0;else a=ZI(c)|0;else if(a){_I(b);a=0;break}else{a=aJ(b,c)|0;break}while(0);return a|0}function Nl(a){a=a|0;var b=0,d=0,e=0;e=a+8|0;b=c[e>>2]|0;d=c[b>>2]|0;a:do if(!(d&12)){if(!(d&3)){d=b+8|0;a=c[d>>2]|0;c[d>>2]=0;break}a=Ol(a)|0;d=c[e>>2]|0;b=c[d+8>>2]|0;d=b+(c[d+12>>2]<<2)|0;while(1){if(b>>>0>=d>>>0)break a;c[b>>2]=0;b=b+4|0}}else a=c[b+4>>2]|0;while(0);e=c[e>>2]|0;c[e>>2]=c[e>>2]&-4097;c[e+16>>2]=0;c[e+4>>2]=0;return a|0}function Ol(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+8|0;a=c[g>>2]|0;b=c[a>>2]|0;if(!(b&4096)){a:do if(!(b&3)){if(b&112|0){a=c[a+8>>2]|0;break}a=c[a+4>>2]|0;if(!a)a=0;else{while(1){b=a+4|0;d=c[b>>2]|0;if(!d){e=a;break}c[b>>2]=c[d>>2];c[d>>2]=a;a=d}while(1){b=c[e>>2]|0;if(!b)break a;d=c[b+4>>2]|0;if(!d){e=b;continue}while(1){c[b+4>>2]=c[d>>2];c[d>>2]=b;b=c[d+4>>2]|0;if(!b)break;else{f=d;d=b;b=f}}c[e>>2]=d;e=d}}}else{e=c[a+8>>2]|0;f=e+(c[a+12>>2]<<2)|0;b=0;a=0;while(1){if(e>>>0>=f>>>0)break a;d=c[e>>2]|0;if(d){if(!b){b=d;a=d}else c[b>>2]=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}c[e>>2]=b}e=e+4|0}}while(0);g=c[g>>2]|0;c[g+4>>2]=a;c[g>>2]=c[g>>2]|4096}else a=c[a+4>>2]|0;return a|0}function Pl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=a+8|0;if(c[c[s>>2]>>2]&4096|0)Rl(a,0)|0;r=c[a+4>>2]|0;m=c[r>>2]|0;n=c[r+4>>2]|0;q=r+8|0;u=c[q>>2]|0;o=c[r+20>>2]|0;p=a+20|0;f=c[p>>2]&-32769;c[p>>2]=f;a:do if(!b){if(d&384|0){f=c[s>>2]|0;e=c[f+8>>2]|0;if(!e){e=0;break}if(d&256){e=c[e+4>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}else c[f+4>>2]=e;if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}if(d&4098|0){e=c[s>>2]|0;if(c[e>>2]&144|0){e=0;break}e=c[e+8>>2]|0;if(!e){e=0;break}else{h=e;t=84;break}}if(!(d&64))e=0;else{i=r+16|0;b:do if((c[i>>2]|0)!=0|(u|0)<0){j=a+12|0;k=(u|0)<0;f=0-u|0;e=c[(c[s>>2]|0)+8>>2]|0;while(1){if(!e)break b;g=c[e>>2]|0;h=c[i>>2]|0;if(h|0){if(k)b=c[e+8>>2]|0;else b=e+f|0;ib[h&127](a,b,r)}if((c[q>>2]|0)>=0){e=g;continue}cb[c[j>>2]&31](a,e,0,r)|0;e=g}}while(0);e=c[s>>2]|0;c[e+4>>2]=0;c[e+8>>2]=0;c[(c[s>>2]|0)+16>>2]=0;e=0}}else{if(d&2049|0){g=r+12|0;e=c[g>>2]|0;h=(d&1|0)==0;if(!(h|(e|0)==0)){e=bb[e&31](a,b,r)|0;if(!e){e=0;break}else f=e}else f=b;do if((u|0)>-1)h=f+u|0;else{e=cb[c[a+12>>2]&31](a,0,12,r)|0;if(e|0){c[e+8>>2]=f;h=e;break}if(!(c[g>>2]|0)){e=0;break a}e=c[r+16>>2]|0;if(h|(e|0)==0){e=0;break a}ib[e&127](a,f,r);e=0;break a}while(0);g=c[s>>2]|0;e=c[g>>2]|0;do if(!(e&128)){if(!(e&16))if(!(e&32)){t=51;break}else{t=48;break}f=c[g+4>>2]|0;e=(f|0)!=0;if(!(d&8192)){if(!e){t=48;break}if((f|0)==(c[g+8>>2]|0)){t=48;break}r=f+4|0;a=c[r>>2]|0;c[h+4>>2]=a;c[a>>2]=h;c[h>>2]=f;c[r>>2]=h;break}else{if(!e){t=51;break}e=c[f>>2]|0;if(!e){t=51;break}c[h>>2]=e;c[e+4>>2]=h;c[h+4>>2]=f;c[f>>2]=h;break}}else if(!(d&8192))t=48;else t=51;while(0);if((t|0)==48){e=c[g+8>>2]|0;c[h>>2]=e;if(!e)e=h;else c[h+4>>2]=c[e+4>>2];c[e+4>>2]=h;c[(c[s>>2]|0)+8>>2]=h}else if((t|0)==51){f=g+8|0;e=c[f>>2]|0;if(!e){c[f>>2]=h;e=h}else{r=e+4|0;c[c[r>>2]>>2]=h;c[h+4>>2]=c[r>>2]}c[e+4>>2]=h;c[h>>2]=0}e=c[s>>2]|0;f=e+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1;c[e+4>>2]=h;if((u|0)<0){e=c[h+8>>2]|0;break}else{e=h+(0-u)|0;break}}h=c[s>>2]|0;do if(!(d&512)){e=c[h+4>>2]|0;if(e|0){if((u|0)<0)g=c[e+8>>2]|0;else g=e+(0-u)|0;if((g|0)==(b|0))break}e=b+m|0;if((n|0)<0){b=c[e>>2]|0;t=68}else{b=e;t=68}}else t=68;while(0);if((t|0)==68){g=(u|0)<0;i=(n|0)<0;j=(o|0)==0;k=(n|0)<1;l=0-u|0;e=h+8|0;do{e=c[e>>2]|0;if(!e){e=0;break a}if(g)f=c[e+8>>2]|0;else f=e+l|0;f=f+m|0;if(i)f=c[f>>2]|0;do if(j)if(k){f=xJ(b,f)|0;break}else{f=dL(b,f,n)|0;break}else f=cb[o&31](a,b,f,r)|0;while(0)}while((f|0)!=0);f=c[p>>2]|0}c[p>>2]=f|32768;if(!(d&4098)){do if(!(d&8)){f=c[s>>2]|0;if(!(d&16)){c[f+4>>2]=e;break}if((e|0)==(c[f+8>>2]|0)){c[f+4>>2]=0;e=0;break a}else{e=e+4|0;t=108;break}}else{f=c[s>>2]|0;t=108}while(0);if((t|0)==108){e=c[e>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}if((u|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-u)|0;break}}else{h=e;t=84}}while(0);if((t|0)==84){e=c[h>>2]|0;if(e){c[e+4>>2]=c[h+4>>2];e=c[h>>2]|0}f=(c[s>>2]|0)+8|0;g=c[f>>2]|0;if((h|0)==(g|0)){c[f>>2]=e;e=c[(c[s>>2]|0)+8>>2]|0;if(e|0)c[e+4>>2]=c[h+4>>2]}else{f=h+4|0;c[c[f>>2]>>2]=e;e=g+4|0;if((h|0)==(c[e>>2]|0))c[e>>2]=c[f>>2]}e=c[s>>2]|0;f=e+4|0;if((h|0)==(c[f>>2]|0))g=c[h>>2]|0;else g=0;c[f>>2]=g;t=e+16|0;c[t>>2]=(c[t>>2]|0)+-1;if((u|0)<0)e=c[h+8>>2]|0;else e=h+(0-u)|0;f=c[r+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))ib[f&127](a,e,r);if((c[q>>2]|0)<0)cb[c[a+12>>2]&31](a,h,0,r)|0}return e|0}function Ql(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if((a|0)!=0&(b|0)!=0?(f=ZI(40)|0,(f|0)!=0):0){c[f>>2]=0;c[f+16>>2]=0;c[f+4>>2]=0;Ll(f,a,0)|0;d=f+20|0;i=a+32|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;d=c[i>>2]|0;do if(d){c[g>>2]=0;d=cb[d&31](f,1,g,a)|0;if((d|0)>=0)if(d){e=c[g>>2]|0;if(e|0)if(!(c[b+4>>2]&c[e>>2])){d=f;h=12;break}else{d=f;break}d=a+28|0;if(!(c[d>>2]|0)){d=f;h=12}else{_I(f);e=cb[c[d>>2]&31](0,0,40,a)|0;if(!e){d=0;break a}c[e>>2]=0;c[e+16>>2]=0;c[e+4>>2]=0;Ll(e,a,0)|0;c[e+20>>2]=1;c[e+24>>2]=0;c[e+32>>2]=0;c[e+28>>2]=0;d=e;f=e;h=11}}else{d=f;h=11}else{d=f;h=12}}else{d=f;h=11}while(0);if((h|0)==11){e=cb[c[d+12>>2]&31](d,0,28,a)|0;c[g>>2]=e;if(!e){d=f;h=12}else{c[e>>2]=c[b+4>>2];g=e+4|0;c[g>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0}}if((h|0)==12){_I(d);d=0;break}c[d+8>>2]=e;c[d>>2]=c[b>>2];c[d+16>>2]=b;e=c[i>>2]|0;if(e)cb[e&31](d,5,f,a)|0}else d=0;while(0);l=j;return d|0}function Rl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[c[a+16>>2]>>2]|0;j=a+8|0;g=c[j>>2]|0;h=c[g>>2]|0;d=h&4096;if(!b)if(!d)b=-1;else{e=d;b=c[g+4>>2]|0;i=5}else if(!(c[g+16>>2]|0)){e=0;i=5}else b=-1;a:do if((i|0)==5){c[g>>2]=h&-4097;if(!(h&3)){d=g+4|0;if(!(h&12)){c[d>>2]=0;d=g+8|0}c[d>>2]=b;if(e|0){b=0;break}c[(c[j>>2]|0)+16>>2]=-1;b=0;break}c[g+4>>2]=0;if(!e){c[g+16>>2]=0;while(1){if(!b){b=0;break a}j=c[b>>2]|0;bb[f&31](a,b,32)|0;b=j}}e=c[g+8>>2]|0;a=e+(c[g+12>>2]<<2)|0;while(1){if(e>>>0>=a>>>0){b=0;break a}d=c[e>>2]|0;if(d){c[e>>2]=b;b=c[d>>2]|0;c[d>>2]=0}e=e+4|0}}while(0);return b|0}function Sl(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(c[d>>2]&4096){Rl(a,0)|0;d=c[b>>2]|0}e=d+16|0;a=c[e>>2]|0;do if((a|0)<0){b=c[d>>2]|0;if(b&12|0){a=Tl(c[d+4>>2]|0)|0;c[e>>2]=a;break}if(b&112){a=0;b=d+8|0;while(1){b=c[b>>2]|0;if(!b)break;a=a+1|0}c[e>>2]=a}}while(0);return a|0}function Tl(a){a=a|0;var b=0;if(!a)return 0;else{b=Tl(c[a+4>>2]|0)|0;return b+1+(Tl(c[a>>2]|0)|0)|0}return 0}function Ul(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=c;if((e|0)>=1){h=c+e+-1|0;g=(h>>>0<c>>>0?c:h)+(1-g)&-2;f=c;while(1){if(f>>>0>=h>>>0)break;b=O(((d[f>>0]|0)<<8)+b+(d[f+1>>0]|0)|0,17109811)|0;f=f+2|0}f=c+g|0;if(f>>>0>h>>>0)c=e;else{c=e;b=O(((d[f>>0]|0)<<8)+b|0,17109811)|0}}else{while(1){f=a[c>>0]|0;if(!(f<<24>>24))break;h=a[c+1>>0]|0;e=O(((f&255)<<8)+b+(h&255)|0,17109811)|0;b=e;c=c+(h<<24>>24?2:1)|0}c=c-g|0}return O(b+c|0,17109811)|0}function Vl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=l;l=l+128|0;z=G+120|0;r=G;F=a+8|0;e=c[F>>2]|0;if(c[e>>2]&4096){Rl(a,0)|0;e=c[F>>2]|0}E=c[a+4>>2]|0;A=c[E>>2]|0;B=c[E+4>>2]|0;x=E+8|0;D=c[x>>2]|0;C=c[E+20>>2]|0;t=a+20|0;c[t>>2]=c[t>>2]&-32769;h=c[e+4>>2]|0;a:do if(!b)if((d&448|0)==0|(h|0)==0)e=0;else{if(!(d&64)){b:do if(!(d&256)){e=h;while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break b;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}}else{e=h;while(1){f=c[e>>2]|0;if(!f)break b;a=f+4|0;c[e>>2]=c[a>>2];c[a>>2]=e;e=f}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break}else{e=e+(0-D)|0;break}}b=E+16|0;if((c[b>>2]|0)!=0|(D|0)<0){j=a+12|0;k=(D|0)<0;i=0-D|0;e=h;do{h=e;while(1){e=h+4|0;f=c[e>>2]|0;if(!f)break;c[e>>2]=c[f>>2];c[f>>2]=h;h=f}e=c[h>>2]|0;f=c[b>>2]|0;if(f|0){if(k)g=c[h+8>>2]|0;else g=h+i|0;ib[f&127](a,g,E)}if((c[x>>2]|0)<0)cb[c[j>>2]&31](a,h,0,E)|0}while((e|0)!=0);e=c[F>>2]|0}c[e+16>>2]=0;c[e+4>>2]=0;e=0}else{y=a+16|0;u=(d&4098|0)==0;c:do if(u|(c[(c[y>>2]|0)+4>>2]|0)!=8)v=45;else{k=(B|0)<0;e=b+A|0;if(k)e=c[e>>2]|0;i=(C|0)==0;j=(B|0)<1;g=bb[c[a>>2]&31](a,b,4)|0;while(1){if(!g){v=45;break c}f=g+A|0;if(k)f=c[f>>2]|0;do if(i)if(j){f=xJ(e,f)|0;break}else{f=dL(e,f,B)|0;break}else f=cb[C&31](a,e,f,E)|0;while(0);if(f|0){v=45;break c}if((g|0)==(b|0))break;g=bb[c[a>>2]&31](a,g,8)|0}h=c[(c[F>>2]|0)+4>>2]|0;c[z>>2]=c[h+4>>2];c[z+4>>2]=c[h>>2];e=z;v=180}while(0);d:do if((v|0)==45){do if(!(d&2565)){if(d&32|0){if((D|0)<0)g=c[b+8>>2]|0;else g=b+(0-D)|0;e=g+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e;if(!h){e=b;f=z;h=z;v=198;break}else{e=b;s=f;j=b;v=64;break}}if(h){if((D|0)<0)e=c[h+8>>2]|0;else e=h+(0-D)|0;if((e|0)!=(b|0)){f=b+A|0;if((B|0)<0){g=b;e=0;s=c[f>>2]|0;j=0;v=64}else{g=b;e=0;s=f;j=0;v=64}}else{e=0;g=b;f=z;k=z;j=0;v=141}}else{e=0;g=b;f=z;h=z;v=198}}else{if(!(d&512)){e=b+A|0;if((B|0)<0)f=c[e>>2]|0;else f=e}else f=b;if(!h){e=0;g=b;f=z;h=z;v=198}else{g=b;e=0;s=f;j=0;v=64}}while(0);e:do if((v|0)==64){f:do if((c[(c[y>>2]|0)+4>>2]|0)==4?(q=c[(c[F>>2]|0)+24>>2]|0,!((d&516|0)==0|(q|0)==0)):0){b=(D|0)<0;m=(B|0)<0;n=(C|0)==0;o=(B|0)<1;p=0-D|0;k=0;f=h;while(1){if((k|0)>=(q|0)){f=z;k=z;m=0;break}if(b)i=c[f+8>>2]|0;else i=f+p|0;i=i+A|0;if(m)i=c[i>>2]|0;do if(n)if(o){i=xJ(s,i)|0;break}else{i=dL(s,i,B)|0;break}else i=cb[C&31](a,s,i,E)|0;while(0);if(!i){v=80;break}c[r+(k<<2)>>2]=i;f=c[((i|0)<0?f+4|0:f)>>2]|0;if(!f){e=0;break a}else k=k+1|0}if((v|0)==80)if(b){e=c[f+8>>2]|0;break a}else{e=f+p|0;break a}while(1){if((m|0)>=(q|0))break f;do if((c[r+(m<<2)>>2]|0)<0){i=h+4|0;b=c[i>>2]|0;if((c[r+((m|1)<<2)>>2]|0)<0){c[i>>2]=c[b>>2];c[b>>2]=h;c[f+4>>2]=b;f=b;h=k;i=b+4|0;break}else{c[k>>2]=b;c[f+4>>2]=h;f=h;h=b;i=b;break}}else{i=c[h>>2]|0;if((c[r+((m|1)<<2)>>2]|0)>0){p=i+4|0;c[h>>2]=c[p>>2];c[p>>2]=h;c[k>>2]=i;h=i;break}else{c[f+4>>2]=i;c[k>>2]=h;f=i;i=i+4|0;break}}while(0);k=h;m=m+2|0;h=c[i>>2]|0}}else{f=z;k=z}while(0);n=(D|0)<0;o=(B|0)<0;p=(C|0)!=0;q=(B|0)<1;r=0-D|0;i=h;g:while(1){h=i;while(1){if(n)i=c[h+8>>2]|0;else i=h+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=xJ(s,i)|0;break}else{i=dL(s,i,B)|0;break}else i=cb[C&31](a,s,i,E)|0;while(0);if(!i){v=140;break g}if((i|0)>=0)break;b=h+4|0;m=c[b>>2]|0;if(!m){v=121;break g}if(n)i=c[m+8>>2]|0;else i=m+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=xJ(s,i)|0;break}else{i=dL(s,i,B)|0;break}else i=cb[C&31](a,s,i,E)|0;while(0);if((i|0)>=0){v=118;break}c[b>>2]=c[m>>2];c[m>>2]=h;c[f+4>>2]=m;h=c[m+4>>2]|0;if(!h){f=m;h=k;v=198;break e}else f=m}if((v|0)==118){v=0;if(!i){v=119;break}c[k>>2]=m;c[f+4>>2]=h;i=c[m>>2]|0;if(!i){f=h;h=m;v=198;break e}else{f=h;k=m;continue}}b=c[h>>2]|0;if(!b){v=139;break}if(n)i=c[b+8>>2]|0;else i=b+r|0;i=i+A|0;if(o)i=c[i>>2]|0;do if(!p)if(q){i=xJ(s,i)|0;break}else{i=dL(s,i,B)|0;break}else i=cb[C&31](a,s,i,E)|0;while(0);if((i|0)>0){i=b+4|0;c[h>>2]=c[i>>2];c[i>>2]=h;c[k>>2]=b;i=c[b>>2]|0;if(!i){h=b;v=198;break e}else{k=b;continue}}if(!i){v=137;break}c[f+4>>2]=b;c[k>>2]=h;i=c[b+4>>2]|0;if(!i){f=b;v=198;break e}else{f=b;k=h}}if((v|0)==119){c[f+4>>2]=h;f=h;h=m;v=141;break}else if((v|0)==121){c[f+4>>2]=h;f=h;h=k;v=198;break}else if((v|0)==137){c[k>>2]=h;k=h;h=b;v=141;break}else if((v|0)==139){c[k>>2]=h;v=198;break}else if((v|0)==140)if(!h){h=k;v=198;break}else{v=141;break}}while(0);do if((v|0)==141){c[t>>2]=c[t>>2]|32768;i=h+4|0;c[k>>2]=c[i>>2];c[f+4>>2]=c[h>>2];if(!(d&516)){if(d&8|0){c[i>>2]=c[z>>2];c[h>>2]=0;c[z>>2]=h;v=169;break}if(d&16|0){v=z+4|0;c[h>>2]=c[v>>2];c[i>>2]=0;c[v>>2]=h;v=175;break}if(!u){e=f;v=180;break d}if(d&2049|0){if(c[(c[y>>2]|0)+4>>2]&4|0){e=h;break}c[i>>2]=0;e=z+4|0;c[h>>2]=c[e>>2];c[e>>2]=h;e=h;v=205;break}if(!(d&32)){e=0;break a}if(!(c[(c[y>>2]|0)+4>>2]&4)){c[e+4>>2]=0;x=z+4|0;c[e>>2]=c[x>>2];c[x>>2]=j;e=(c[F>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;e=h;break}e=c[E+16>>2]|0;if(e|0)ib[e&127](a,g,E);if((c[x>>2]|0)<0){cb[c[a+12>>2]&31](a,j,0,E)|0;e=h}else e=h}else e=h}else if((v|0)==198){c[f+4>>2]=0;c[h>>2]=0;if(!(d&8))if(!(d&16)){if(d&516|0){e=f;break d}if(!(d&2049)){if(!(d&32)){g=0;e=f;break d}x=(c[F>>2]|0)+16|0;c[x>>2]=(c[x>>2]|0)+1}else{e=0;v=205}}else v=175;else v=169}while(0);if((v|0)==169){h=z+4|0;e=c[h>>2]|0;if(!e){e=f;break}while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}c[h>>2]=c[e>>2]}else if((v|0)==175){e=c[z>>2]|0;if(!e){e=f;break}while(1){f=c[e>>2]|0;if(!f)break;x=f+4|0;c[e>>2]=c[x>>2];c[x>>2]=e;e=f}c[z>>2]=c[e+4>>2]}else if((v|0)==205){i=E+12|0;h=c[i>>2]|0;j=(d&1|0)==0;if(!(j|(h|0)==0))g=bb[h&31](a,g,E)|0;do if(g){if((D|0)>-1){e=g+D|0;v=215;break}e=cb[c[a+12>>2]&31](a,0,12,E)|0;if(e|0){c[e+8>>2]=g;break}if((c[i>>2]|0)!=0?(w=c[E+16>>2]|0,!(j|(w|0)==0)):0){ib[w&127](a,g,E);v=215}else v=215}else v=215;while(0);if((v|0)==215)if(!e){e=f;break}f=(c[F>>2]|0)+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1}c[e+4>>2]=c[z>>2];c[e>>2]=c[z+4>>2];h:do if(!((d&516|0)==0?1:(c[(c[y>>2]|0)+4>>2]&8|0)==0)){m=(D|0)<0;if(m)f=c[e+8>>2]|0;else f=e+(0-D)|0;n=(B|0)<0;f=f+A|0;if(n)f=c[f>>2]|0;j=(C|0)==0;k=(B|0)<1;b=0-D|0;while(1){i=e+4|0;g=c[i>>2]|0;if(!g)break h;while(1){h=c[g>>2]|0;if(!h)break;z=h+4|0;c[g>>2]=c[z>>2];c[z>>2]=g;g=h}c[i>>2]=g;if(m)h=c[g+8>>2]|0;else h=g+b|0;h=h+A|0;if(n)h=c[h>>2]|0;do if(j)if(k){h=xJ(f,h)|0;break}else{h=dL(f,h,B)|0;break}else h=cb[C&31](a,f,h,E)|0;while(0);if(h|0)break h;c[i>>2]=c[g>>2];c[g>>2]=e;e=g}}while(0);c[(c[F>>2]|0)+4>>2]=e;if((D|0)<0){e=c[e+8>>2]|0;break a}else{e=e+(0-D)|0;break a}}while(0);if((v|0)==180){if((D|0)<0)g=c[h+8>>2]|0;else g=h+(0-D)|0;f=c[E+16>>2]|0;if(!((d&2|0)==0|(f|0)==0))ib[f&127](a,g,E);if((c[x>>2]|0)<0)cb[c[a+12>>2]&31](a,h,0,E)|0;a=(c[F>>2]|0)+16|0;E=c[a>>2]|0;c[a>>2]=(E|0)<1?-1:E+-1|0}do{f=e+4|0;e=c[f>>2]|0}while((e|0)!=0);c[f>>2]=c[z>>2];c[(c[F>>2]|0)+4>>2]=c[z+4>>2];e=d&2|0?g:0}while(0);l=G;return e|0}function Wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[c[a+8>>2]>>2]&4096|0)Rl(a,0)|0;f=(b|0)!=0;if(f){if(c[c[b+8>>2]>>2]&4096|0)Rl(b,0)|0;if((c[b+16>>2]|0)==(c[a+16>>2]|0)){d=b;e=7}else b=0}else{d=0;e=7}a:do if((e|0)==7){while(1){if(!d)break;if((d|0)==(a|0)){b=0;break a}d=c[d+28>>2]|0;e=7}d=a+28|0;e=c[d>>2]|0;if(e|0){g=e+24|0;c[g>>2]=(c[g>>2]|0)+-1}c[a+32>>2]=0;c[d>>2]=0;if(f){c[d>>2]=b;c[a>>2]=12;g=b+24|0;c[g>>2]=(c[g>>2]|0)+1;break}else{c[a>>2]=c[c[a+16>>2]>>2];b=e;break}}while(0);return b|0}function Xl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do if(!(d&99)){if((d&516|0)==0?(e=c[(c[a+16>>2]|0)+4>>2]|0,!((d&384|0)!=0&(e&12|0)==0)):0){if(e&12|0){if(!(d&408)){e=0;break}o=(d&136|0)!=0;p=(d&272|0)!=0;l=0;f=0;e=0;n=a;while(1){if(!n)break;m=bb[c[c[n+16>>2]>>2]&31](n,b,d)|0;do if(!m)g=l;else{h=c[n+4>>2]|0;i=c[h+4>>2]|0;j=c[h+20>>2]|0;g=m+(c[h>>2]|0)|0;if((i|0)<0)k=c[g>>2]|0;else k=g;if(e|0){do if(!j)if((i|0)<1){g=xJ(k,f)|0;break}else{g=dL(k,f,i)|0;break}else g=cb[j&31](n,k,f,h)|0;while(0);if(!(o&(g|0)<0|p&(g|0)>0)){g=l;break}}g=n;f=k;e=m}while(0);l=g;n=c[n+28>>2]|0}c[a+32>>2]=l;break}if(!(d&24)){e=0;break}j=a+32|0;f=c[j>>2]|0;if(f){e=c[(c[f+4>>2]|0)+8>>2]|0;g=c[(c[f+8>>2]|0)+4>>2]|0;if((e|0)<0)e=c[g+8>>2]|0;else e=g+(0-e)|0;if((e|0)==(b|0))e=b;else{f=a;h=32}}else{f=a;h=32}do if((h|0)==32){while(1){if(!f){h=33;break}e=bb[c[c[f+16>>2]>>2]&31](f,b,4)|0;if(e|0){h=36;break}f=c[f+28>>2]|0;h=32}if((h|0)==33){c[j>>2]=0;e=0;break a}else if((h|0)==36){c[j>>2]=f;break}}while(0);i=(d<<4&128^128)+128|0;e=bb[c[c[f+16>>2]>>2]&31](f,e,d)|0;while(1){h=f+16|0;while(1){if(!e)break;else g=a;while(1){if((g|0)==(f|0))break a;if(bb[c[c[g+16>>2]>>2]&31](g,e,4)|0)break;g=c[g+28>>2]|0}e=bb[c[c[h>>2]>>2]&31](f,e,d)|0}f=c[f+28>>2]|0;c[j>>2]=f;if(!f){e=0;break a}e=bb[c[c[f+16>>2]>>2]&31](f,0,i)|0}}else f=a;while(1){if(!f){f=0;e=0;break}e=bb[c[c[f+16>>2]>>2]&31](f,b,d)|0;if(e|0)break;f=c[f+28>>2]|0}c[a+32>>2]=f}else e=bb[c[c[a+16>>2]>>2]&31](a,b,d)|0;while(0);return e|0}function Yl(a){a=a|0;var b=0;b=c[41980]|0;c[41980]=a;return b|0}function Zl(a){a=a|0;var b=0;b=c[41981]|0;c[41981]=a;return b|0}function _l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=$l(a,b,f)|0;l=e;return d|0}function $l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|0;e=g;f=(a|0)==3;h=f?c[41983]|0:(a|0)==2?1:a;c[41983]=h;i=c[41984]|0;c[41984]=i>>>0>h>>>0?i:h;do if(h>>>0<(c[41981]|0)>>>0){a=c[41982]|0;if(!a){a=AN()|0;c[41982]=a;if(!a){a=1;break}}if(!f){DN(a)|0;a=c[41982]|0}MK(a,b,d)|0;a=0}else{if(c[41980]|0){am(a,b,d);a=0;break}if(f)a=c[13918]|0;else{i=c[13918]|0;c[e>>2]=(a|0)==1?81312:81318;zL(i,81326,e)|0;a=i}MK(a,b,d)|0;a=0}while(0);l=g;return a|0}function am(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((c[41985]|0)==0?(f=ZI(c[4354]|0)|0,c[41985]=f,(f|0)==0):0)WL(81331,c[13918]|0)|0;else e=4;do if((e|0)==4){if((a|0)!=3){$a[c[41980]&31]((a|0)==1?81312:81318)|0;$a[c[41980]&31](81990)|0}while(1){a=LK(c[41985]|0,c[4354]|0,b,d)|0;e=c[4354]|0;if((a|0)>-1&(a|0)<(e|0)){e=7;break}e=e<<1;f=a+1|0;f=(e|0)>(f|0)?e:f;c[4354]=f;if(!(aJ(c[41985]|0,f)|0)){e=9;break}}if((e|0)==7){$a[c[41980]&31](c[41985]|0)|0;break}else if((e|0)==9){WL(81331,c[13918]|0)|0;break}}while(0);return}function bm(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;$l(1,a,e)|0;l=d;return}function cm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!e){e=(d|0)==0?1024:d;d=e;e=ZI(e)|0;f=1}else f=0;c[b+12>>2]=f;c[b>>2]=e;c[b+8>>2]=e+d;c[b+4>>2]=e;a[e>>0]=0;return}function dm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;f=c[a>>2]|0;g=(c[h>>2]|0)-f|0;e=g<<1;g=g+b|0;e=g>>>0>e>>>0?g:e;g=a+4|0;b=f;f=(c[g>>2]|0)-f|0;d=a+12|0;if(!(c[d>>2]|0)){i=ZI(e)|0;TN(i|0,b|0,f|0)|0;c[d>>2]=1;b=i}else b=aJ(b,e)|0;c[a>>2]=b;c[g>>2]=b+f;c[h>>2]=b+e;return 0}function em(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+4|0;e=c[f>>2]|0;if((e+d|0)>>>0>(c[a+8>>2]|0)>>>0){dm(a,d)|0;e=c[f>>2]|0}TN(e|0,b|0,d|0)|0;c[f>>2]=(c[f>>2]|0)+d;return d|0}function fm(a,b){a=a|0;b=b|0;return em(a,b,rJ(b)|0)|0}function gm(a){a=a|0;if(c[a+12>>2]|0)_I(c[a>>2]|0);return}function hm(a){a=a|0;var b=0,e=0;b=a+4|0;e=c[b>>2]|0;if(e>>>0>(c[a>>2]|0)>>>0){c[b>>2]=e+-1;a=d[e>>0]|0}else a=-1;return a|0}function im(a,b,d){a=a|0;b=b|0;d=d|0;bp(c[41987]|0,c[b+8>>2]|0)|0;bp(c[41987]|0,c[b+12>>2]|0)|0;Zn(c[41987]|0,b);return}function jm(a,b){a=a|0;b=b|0;var c=0;c=Lo(a,81379,0)|0;if((b|0)!=0&(c|0)==0){km(a);c=Lo(a,81379,0)|0}return c|0}function km(a){a=a|0;var b=0,c=0,d=0;d=so(a)|0;wq(d,d,86,0,1)|0;c=co(d)|0;while(1){if(!c)break;mm(a,c);b=Pm(d,c)|0;while(1){if(!b)break;nm(a,b);b=Rm(d,b)|0}c=eo(d,c)|0}return}function lm(b){b=b|0;var c=0;c=b+24|0;a[c>>0]=a[c>>0]|64;sm(b);c=Lp(b)|0;pm((c|0)==0?b:c,b);return}function mm(a,b){a=a|0;b=b|0;var d=0;d=om(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))pm(a,b);return}function nm(a,b){a=a|0;b=b|0;var d=0;d=om(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))pm(a,b);return}function om(a){a=a|0;return Lo(a,81367,0)|0}function pm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=No(b,81367,16,0)|0;f=qm(a,c[b>>2]&3)|0;e=d+8|0;a:do if(!(c[e>>2]|0)){a=so(a)|0;c[e>>2]=qm(a,c[b>>2]&3)|0;a=rm(b)|0;d=d+12|0;c[d>>2]=Yn(ro(b)|0,((a|0)>4?a:4)<<2)|0;a=bb[c[f>>2]&31](f,0,128)|0;while(1){if(!a)break a;e=ro(b)|0;e=$o(e,c[a+12>>2]|0)|0;c[(c[d>>2]|0)+(c[a+16>>2]<<2)>>2]=e;a=bb[c[f>>2]&31](f,a,8)|0}}while(0);return}function qm(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;a=jm(a,0)|0;a:do if(!a)a=0;else switch(b|0){case 0:{a=c[a+16>>2]|0;break a}case 1:{a=c[a+8>>2]|0;break a}case 2:case 3:{a=c[a+12>>2]|0;break a}default:{c[d>>2]=b;_l(1,81392,d)|0;a=0;break a}}while(0);l=e;return a|0}function rm(a){a=a|0;var b=0;b=so(ro(a)|0)|0;a=qm(b,c[a>>2]&3)|0;if(!a)a=0;else a=Sl(a)|0;return a|0}function sm(a){a=a|0;var b=0,d=0,e=0,f=0;d=No(a,81379,20,0)|0;e=d+8|0;c[e>>2]=Pp(a,17420,c[4353]|0)|0;f=d+12|0;c[f>>2]=Pp(a,17420,c[4353]|0)|0;d=d+16|0;c[d>>2]=Pp(a,17420,c[4353]|0)|0;b=Lp(a)|0;if(!b){b=c[41986]|0;if(!((b|0)==0|(b|0)==(a|0))){b=jm(b,0)|0;tm(c[b+8>>2]|0,c[e>>2]|0,a,1);tm(c[b+12>>2]|0,c[f>>2]|0,a,2);tm(c[b+16>>2]|0,c[d>>2]|0,a,0)}}else{a=jm(b,0)|0;Wl(c[e>>2]|0,c[a+8>>2]|0)|0;Wl(c[f>>2]|0,c[a+12>>2]|0)|0;Wl(c[d>>2]|0,c[a+16>>2]|0)|0}return}function tm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=bb[c[b>>2]&31](b,0,128)|0;while(1){if(!g)break;h=um(e,c[g+8>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,f)|0;a[h+22>>0]=a[g+22>>0]|0;a[h+21>>0]=a[g+21>>0]|0;bb[c[d>>2]&31](d,h,1)|0;g=bb[c[b>>2]&31](b,g,8)|0}return}function um(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Yn(b,24)|0;a[h+20>>0]=g;c[h+8>>2]=$o(b,d)|0;c[h+12>>2]=$o(b,e)|0;c[h+16>>2]=f;return h|0}function vm(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+8>>2]=b;b=bb[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function wm(a,b){a=a|0;b=b|0;var c=0;c=Wl(a,0)|0;b=vm(a,b)|0;Wl(a,c)|0;return b|0}function xm(a,b){a=a|0;b=b|0;a=om(a)|0;if(!a)a=0;else a=vm(c[a+8>>2]|0,b)|0;return a|0}function ym(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=h;if(!b){b=c[41986]|0;if(!b){a[g>>0]=a[17456]|0;a[g+1>>0]=a[17457]|0;a[g+2>>0]=a[17458]|0;a[g+3>>0]=a[17459]|0;b=gn(0,g,0)|0;c[41986]=b}}if(!f)b=Am(b,d,e)|0;else b=zm(b,d,e,f)|0;l=h;return b|0}function zm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=so(a)|0;jm(a,1)|0;g=qm(a,b)|0;f=wm(g,d)|0;a:do if(!f){f=vm(g,d)|0;if(f|0){f=um(a,d,e,c[f+16>>2]|0,b)|0;bb[c[g>>2]&31](g,f,1)|0;h=16;break}g=qm(i,b)|0;f=um(a,d,e,Sl(g)|0,b)|0;bb[c[g>>2]&31](g,f,1)|0;switch(b|0){case 0:{wq(i,i,52,f,1)|0;h=16;break a}case 1:{d=co(i)|0;while(1){if(!d){h=16;break a}Bm(a,d,f);d=eo(i,d)|0}}case 2:case 3:{g=co(i)|0;while(1){if(!g){h=16;break a}d=Pm(i,g)|0;while(1){if(!d)break;Bm(a,d,f);d=Rm(i,d)|0}g=eo(i,g)|0}}default:break a}}else{h=f+12|0;bp(a,c[h>>2]|0)|0;c[h>>2]=$o(a,e)|0;h=16}while(0);if((h|0)==16)if((b|0)==0&(f|0)!=0)Cm(a,f,e)|0;vo(a,a,f);return f|0}function Am(a,b,c){a=a|0;b=b|0;c=c|0;a=qm(a,b)|0;if(!a)a=0;else a=vm(a,c)|0;return a|0}function Bm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;b=om(b)|0;f=d+16|0;e=c[f>>2]|0;if((e|0)>3){g=c[a+64>>2]|0;b=b+12|0;e=e<<2;c[b>>2]=cb[c[(c[g>>2]|0)+8>>2]&31](c[g+12>>2]|0,c[b>>2]|0,e,e+4|0)|0}else b=b+12|0;g=$o(a,c[d+12>>2]|0)|0;c[(c[b>>2]|0)+(c[f>>2]<<2)>>2]=g;return}function Cm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=ro(a)|0;g=(om(a)|0)+12|0;i=b+16|0;bp(h,c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]|0)|0;f=$o(h,d)|0;c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]=f;do if(!(c[a>>2]&3)){e=c[(jm(h,0)|0)+16>>2]|0;f=b+8|0;g=wm(e,c[f>>2]|0)|0;if(!g){i=um(h,c[f>>2]|0,d,c[i>>2]|0,c[a>>2]&3)|0;bb[c[e>>2]&31](e,i,1)|0;break}else{i=g+12|0;bp(h,c[i>>2]|0)|0;c[i>>2]=$o(h,d)|0;break}}while(0);vo(h,a,b);return 0}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;a=qm(a,b)|0;do if(a){b=c[a>>2]|0;if(!d){a=bb[b&31](a,0,128)|0;break}else{a=bb[b&31](a,d,8)|0;break}}else a=0;while(0);return a|0}function Em(a){a=a|0;var b=0;c[41987]=a;b=om(a)|0;if(b|0){Fm(a,b);Po(a,c[b>>2]|0)|0}b=jm(a,0)|0;if(b)if(((Rp(a,c[b+8>>2]|0)|0)==0?(Rp(a,c[b+12>>2]|0)|0)==0:0)?(Rp(a,c[b+16>>2]|0)|0)==0:0){Po(a,c[b>>2]|0)|0;b=0}else b=1;else b=0;return b|0}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=ro(a)|0;e=rm(a)|0;b=b+12|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(e|0))break;bp(f,c[d+(a<<2)>>2]|0)|0;a=a+1|0}Zn(f,d);return}function Gm(a){a=a|0;var b=0;b=om(a)|0;if(b|0){Fm(a,b);Po(a,81367)|0}return}function Hm(a){a=a|0;var b=0;b=om(a)|0;if(b|0){Fm(a,b);Po(a,81367)|0}return}function Im(a,b){a=a|0;b=b|0;b=xm(a,b)|0;if(!b)b=0;else{a=c[(om(a)|0)+12>>2]|0;b=c[a+(c[b+16>>2]<<2)>>2]|0}return b|0}function Jm(a,b){a=a|0;b=b|0;a=c[(om(a)|0)+12>>2]|0;return c[a+(c[b+16>>2]<<2)>>2]|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;b=xm(a,b)|0;if(!b)b=-1;else{Cm(a,b,c)|0;b=0}return b|0}function Lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=ro(a)|0;f=ym(f,c[a>>2]&3,b,0)|0;if(!f){f=ro(a)|0;f=ym(f,c[a>>2]&3,b,e)|0}Cm(a,f,d)|0;return 0}function Mm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=ro(a)|0;f=c[a>>2]|0;a:do if(!((c[b>>2]^f)&3)){d=1;e=0;while(1){e=Dm(g,f&3,e)|0;if(!e)break a;d=xm(b,c[e+8>>2]|0)|0;if(!d){d=1;break a}f=Jm(a,e)|0;Cm(b,d,f)|0;if(cp(f)|0)dp(Jm(b,d)|0);d=0;f=c[a>>2]|0}}else d=1;while(0);return d|0}function Nm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b+40>>2]|0;f=c[d+40>>2]|0;if((a|0)==(f|0)){e=(c[b>>2]|0)>>>4;a=(c[d>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}else{e=(c[a>>2]|0)>>>4;a=(c[f>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}if((g|0)==6)a=0;return a|0}function Om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=(c[b+40>>2]|0)+8|0;g=c[a>>2]|0;a=c[a+4>>2]|0;f=(c[d+40>>2]|0)+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;do if(!(a>>>0<f>>>0|(a|0)==(f|0)&g>>>0<e>>>0))if(a>>>0>f>>>0|(a|0)==(f|0)&g>>>0>e>>>0)a=1;else{e=b+8|0;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!((a|0)==0&(e|0)==0)?(i=d+8|0,h=c[i>>2]|0,i=c[i+4>>2]|0,!((h|0)==0&(i|0)==0)):0){if(e>>>0<i>>>0|(e|0)==(i|0)&a>>>0<h>>>0){a=-1;break}if(e>>>0>i>>>0|(e|0)==(i|0)&a>>>0>h>>>0){a=1;break}}a=0}else a=-1;while(0);return a|0}function Pm(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+32|0;Rl(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=bb[c[b>>2]&31](b,0,128)|0;c[a>>2]=Nl(c[d>>2]|0)|0}return b|0}function Qm(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e;if((c[b+24>>2]|0)==(a|0))a=b+28|0;else{c[d+16>>2]=b;a=c[a+40>>2]|0;a=bb[c[a>>2]&31](a,d,4)|0}l=e;return a|0}function Rm(a,b){a=a|0;b=b|0;var d=0,e=0;d=Qm(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+32|0;Rl(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=bb[c[a>>2]&31](a,b,8)|0;c[d>>2]=Nl(c[e>>2]|0)|0}return a|0}function Sm(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+28|0;Rl(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=bb[c[b>>2]&31](b,0,128)|0;c[a>>2]=Nl(c[d>>2]|0)|0}return b|0}function Tm(a,b){a=a|0;b=b|0;var d=0,e=0;d=Qm(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+28|0;Rl(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=bb[c[a>>2]&31](a,b,8)|0;c[d>>2]=Nl(c[e>>2]|0)|0}return a|0}function Um(a,b){a=a|0;b=b|0;var c=0;c=Pm(a,b)|0;if(!c)c=Sm(a,b)|0;return c|0}function Vm(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((c[b>>2]&3|0)==2){b=Rm(a,b)|0;if(!b){b=0;do{if(!b)b=Sm(a,d)|0;else b=Tm(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0))}}else do{b=Tm(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0));while(0);return b|0}function Wm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+32|0;f=h+16|0;g=h;if((sn(a)|0)!=0?(c[g>>2]=0,c[g+4>>2]=0,c[g+8>>2]=0,c[g+12>>2]=0,c[f>>2]=c[g>>2],c[f+4>>2]=c[g+4>>2],c[f+8>>2]=c[g+8>>2],c[f+12>>2]=c[g+12>>2],(_m(a,b,e,f)|0)!=0):0)f=0;else f=((d[a+24>>0]|0)>>>2&1^1)&255|(b|0)!=(e|0);l=h;return f|0}function Xm(a,b){a=a|0;b=b|0;Zm(a,b);return}function Ym(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;io(b,d,1)|0;io(b,e,1)|0;h=Yn(b,96)|0;i=h+48|0;l=kn(b,2)|0;j=c[i>>2]|0;k=c[h>>2]|0;m=h+8|0;c[m>>2]=f;c[m+4>>2]=g;m=h+56|0;c[m>>2]=f;c[m+4>>2]=g;g=l<<4;c[h>>2]=k&12|g|2;c[i>>2]=j&12|g|3;c[h+88>>2]=d;c[h+40>>2]=e;Zm(b,h);if(a[b+24>>0]&64){No(h,81367,16,0)|0;nm(b,h)}to(b,h);return h|0}function Zm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+16|0;d=i;h=c[b>>2]&3;g=(h|0)==2?b:b+-48|0;h=(h|0)==3?b:b+48|0;e=c[h+40>>2]|0;f=c[g+40>>2]|0;while(1){if(!a)break;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];if(_m(a,e,f,d)|0)break;j=Qm(a,e)|0;m=a+44|0;$m(c[m>>2]|0,j+32|0,g);k=a+48|0;$m(c[k>>2]|0,j+24|0,g);j=Qm(a,f)|0;$m(c[m>>2]|0,j+28|0,h);$m(c[k>>2]|0,j+20|0,h);a=Lp(a)|0}l=i;return}function _m(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+48|0;f=h;if(!((b|0)==0|(d|0)==0)?(c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+40>>2]=b,g=Qm(a,d)|0,(g|0)!=0):0){e=a+48|0;g=g+20|0;Rl(c[e>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;a=bb[c[a>>2]&31](a,f,4)|0;c[g>>2]=Nl(c[e>>2]|0)|0}else a=0;l=h;return a|0}function $m(a,b,d){a=a|0;b=b|0;d=d|0;Rl(a,c[b>>2]|0)|0;bb[c[a>>2]&31](a,d,1)|0;c[b>>2]=Nl(a)|0;return}function an(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+48|0;i=n+24|0;k=n+16|0;j=n;do if(!(An(a,2,e,k,0)|0))if(!e){if(f|0?(sn(a)|0)==0:0){m=18;break};c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;m=7}else m=17;else{o=j;c[o>>2]=0;c[o+4>>2]=0;o=k;g=c[o+4>>2]|0;m=j+8|0;c[m>>2]=c[o>>2];c[m+4>>2]=g;c[j>>2]=2;m=7}while(0);a:do if((m|0)==7){c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=_m(a,b,d,i)|0;b:do if(!g){if(rn(a)|0?(c[i>>2]=c[j>>2],c[i+4>>2]=c[j+4>>2],c[i+8>>2]=c[j+8>>2],c[i+12>>2]=c[j+12>>2],h=_m(a,d,b,i)|0,h|0):0){g=h;break}do if(f|0){g=so(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=_m(g,b,d,i)|0;if(!g){if(!(rn(a)|0))break;g=so(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];g=_m(g,d,b,i)|0;if(!g)break}Xm(a,g);break b}while(0);m=17;break a}while(0)}while(0);if((m|0)==17)if(!f)g=0;else m=18;if((m|0)==18)if((Wm(a,b,d)|0)!=0?(An(a,2,e,k,1)|0)!=0:0){g=k;g=Ym(a,b,d,c[g>>2]|0,c[g+4>>2]|0)|0;En(a,2,g)}else g=0;l=n;return g|0}function bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=(c[b>>2]&3|0)==3;g=d?b+-48|0:b;d=d?b:b+48|0;b=c[g+40>>2]|0;h=Qm(a,c[d+40>>2]|0)|0;f=a+44|0;cn(c[f>>2]|0,h+32|0,g);e=a+48|0;cn(c[e>>2]|0,h+24|0,g);b=Qm(a,b)|0;cn(c[f>>2]|0,b+28|0,d);cn(c[e>>2]|0,b+20|0,d);return}function cn(a,b,d){a=a|0;b=b|0;d=d|0;Rl(a,c[b>>2]|0)|0;bb[c[a>>2]&31](a,d,2)|0;c[b>>2]=Nl(a)|0;return}function dn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;d=(c[d>>2]&3|0)==2?d:d+-48|0;g=c[d>>2]&3;h=c[((g|0)==3?d:d+48|0)+40>>2]|0;g=c[((g|0)==2?d:d+-48|0)+40>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];if(_m(b,h,g,f)|0){if((so(b)|0)==(b|0)){if(a[b+24>>0]&64)Hm(d);xo(b,d);Vo(d);h=d+8|0;Cn(b,2,c[h>>2]|0,c[h+4>>2]|0)}if(!(wq(b,d,53,0,0)|0))if((so(b)|0)==(b|0)){Zn(b,d);d=0}else d=0;else d=-1}else d=-1;l=e;return d|0}function en(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;f=io(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0,d)|0;g=io(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,d)|0;do if((f|0)!=0&(g|0)!=0){c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];e=_m(a,f,g,e)|0;f=(e|0)==0;if(!((d|0)!=0&f)){if(f)break}else{Zm(a,b);e=b}d=c[e>>2]&3;l=h;return ((d|0)==(c[b>>2]&3|0)?e:e+(((d|0)==3?-1:1)*48|0)|0)|0}while(0);l=h;return 0}function fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=b+8|0;e=d+8|0;e=IN(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;return ((e|0)==0?0:e>>31|1)|0}function gn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;j=hn(e)|0;f=ab[c[(c[j>>2]|0)+4>>2]&63](c[j+12>>2]|0,72)|0;c[f>>2]=c[f>>2]&-4;i=f+64|0;c[i>>2]=j;k=f+24|0;d=c[d>>2]|0;c[k>>2]=d;a[k>>0]=d&255|8;c[f+60>>2]=f;e=ab[c[c[j+4>>2]>>2]&63](f,e)|0;c[(c[i>>2]|0)+16>>2]=e;if(An(f,0,b,g,1)|0){i=g;j=c[i+4>>2]|0;k=f+8|0;c[k>>2]=c[i>>2];c[k+4>>2]=j}k=jn(f)|0;En(k,0,f);l=h;return k|0}function hn(b){b=b|0;var d=0,e=0,f=0,g=0;d=(b|0)!=0;if(d){e=c[b>>2]|0;e=(e|0)==0?17792:e}else e=17792;g=$a[c[e>>2]&31](b)|0;f=ab[c[e+4>>2]&63](g,80)|0;c[f>>2]=e;c[f+12>>2]=g;if(d){g=c[b+4>>2]|0;c[f+4>>2]=(g|0)==0?17668:g;b=c[b+8>>2]|0;b=(b|0)==0?17768:b}else{c[f+4>>2]=17668;b=17768}c[f+8>>2]=b;a[f+52>>0]=1;return f|0}function jn(b){b=b|0;var d=0,e=0;c[b+36>>2]=Pp(b,17848,c[4353]|0)|0;c[b+40>>2]=Pp(b,17812,c[4353]|0)|0;d=(so(b)|0)==(b|0);c[b+44>>2]=Pp(b,d?17460:17496,c[4353]|0)|0;d=(so(b)|0)==(b|0);c[b+48>>2]=Pp(b,d?17532:17568,c[4353]|0)|0;c[b+52>>2]=Pp(b,17604,c[4353]|0)|0;d=Lp(b)|0;if(!((d|0)!=0?(e=kn(d,0)|0,c[b>>2]=c[b>>2]&15|e<<4,e=c[d+52>>2]|0,bb[c[e>>2]&31](e,b,1)|0,!(a[d+24>>0]&64)):0))lm(b);to(b,b);return b|0}function kn(a,b){a=a|0;b=b|0;var d=0;d=(c[a+64>>2]|0)+24+(b<<3)|0;b=d;b=HN(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;a=z;c[d>>2]=b;c[d+4>>2]=a;z=a;return b|0}function ln(b){b=b|0;var d=0,e=0,f=0,g=0;f=Lp(b)|0;g=(f|0)==0;if(g?(d=b+64|0,(c[(c[c[d>>2]>>2]|0)+16>>2]|0)!=0):0){xo(b,b);g=b+8|0;Cn(b,0,c[g>>2]|0,c[g+4>>2]|0);d=c[d>>2]|0;gb[c[(c[d>>2]|0)+16>>2]&127](c[d+12>>2]|0);d=0}else e=4;do if((e|0)==4){d=Jp(b)|0;while(1){if(!d)break;e=Kp(d)|0;ln(d)|0;d=e}d=co(b)|0;while(1){if(!d)break;e=eo(b,d)|0;po(b,d)|0;d=e}Nn(b);xo(b,b);if(((((Rp(b,c[b+40>>2]|0)|0)==0?(Rp(b,c[b+36>>2]|0)|0)==0:0)?(Rp(b,c[b+48>>2]|0)|0)==0:0)?(Rp(b,c[b+44>>2]|0)|0)==0:0)?(Rp(b,c[b+52>>2]|0)|0)==0:0){if(a[b+24>>0]&64?Em(b)|0:0){d=-1;break}Vo(b);e=b+8|0;Cn(b,0,c[e>>2]|0,c[e+4>>2]|0);if(!g){Mp(f,b)|0;Zn(f,b);d=0;break}d=b+64|0;while(1){e=c[d>>2]|0;f=c[e+48>>2]|0;if(!f)break;Ao(b,c[f>>2]|0)|0}gb[c[(c[e+4>>2]|0)+20>>2]&127](c[e+16>>2]|0);if(!(Wo(b)|0)){d=c[d>>2]|0;g=c[d+12>>2]|0;f=(c[d>>2]|0)+12|0;hb[c[f>>2]&31](g,b);hb[c[f>>2]&31](g,d);d=0}else d=-1}else d=-1}while(0);return d|0}function mn(a){a=a|0;return Sl(c[a+40>>2]|0)|0}function nn(a){a=a|0;var b=0,c=0,d=0;b=0;c=co(a)|0;while(1){if(!c)break;d=(on(a,c,0,1)|0)+b|0;b=d;c=eo(a,c)|0}return b|0}function on(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Qm(a,b)|0;if(f){if(!e)b=0;else b=pn(c[a+44>>2]|0,f+32|0)|0;if(d)b=(pn(c[a+44>>2]|0,f+28|0)|0)+b|0}else b=0;return b|0}function pn(a,b){a=a|0;b=b|0;var d=0;Rl(a,c[b>>2]|0)|0;d=Sl(a)|0;c[b>>2]=Nl(a)|0;return d|0}function qn(b){b=b|0;return a[b+24>>0]&1|0}function rn(a){a=a|0;return (qn(a)|0)==0|0}function sn(a){a=a|0;return (d[a+24>>0]|0)>>>1&1|0}function tn(a,b){a=a|0;b=b|0;return a|0}function un(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!d){f=1328;d=c[f>>2]|0;f=c[f+4>>2]|0;c[e>>2]=d;c[e+4>>2]=f;f=HN(d|0,f|0,2,0)|0;e=1328;c[e>>2]=f;c[e+4>>2]=z}else{if(!f)a=Yo(a,d)|0;else a=$o(a,d)|0;c[e>>2]=a;c[e+4>>2]=0}return 1}function vn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((c&1|0)==0&0==0)bp(a,c)|0;return}function xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ((c&1|0)==0&0==0?c:0)|0}function yn(a){a=a|0;return}function zn(a,b,c){a=a|0;b=b|0;c=c|0;return}function An(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=(e|0)!=0;do if(i){if((a[e>>0]|0)!=37?(h=c[b+64>>2]|0,h=db[c[(c[h+4>>2]|0)+4>>2]&3](c[h+16>>2]|0,d,e,f,g)|0,h|0):0)break;h=Fn(b,d,e,f)|0;if(!h)j=5}else j=5;while(0);if((j|0)==5)if(g){h=c[b+64>>2]|0;h=db[c[(c[h+4>>2]|0)+4>>2]&3](c[h+16>>2]|0,d,0,f,g)|0;if(i&(h|0)!=0){j=f;Gn(b,d,e,c[j>>2]|0,c[j+4>>2]|0)}}else h=0;return h|0}function Bn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+64>>2]|0;return cb[c[(c[a+4>>2]|0)+8>>2]&31](c[a+16>>2]|0,b,d,e)|0}function Cn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;Ln(a,b,d,e)|0;a=c[a+64>>2]|0;kb[c[(c[a+4>>2]|0)+12>>2]&31](c[a+16>>2]|0,b,d,e);return}function Dn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=ro(a)|0;f=a+8|0;b=f;b=Jn(d,c[a>>2]&3,c[b>>2]|0,c[b+4>>2]|0)|0;do if(!b){b=c[d+64>>2]|0;d=c[(c[b+4>>2]|0)+16>>2]|0;if(d|0?(e=f,e=cb[d&31](c[b+16>>2]|0,c[a>>2]&3,c[e>>2]|0,c[e+4>>2]|0)|0,e|0):0){b=e;break}if((c[a>>2]&3|0)==2)b=0;else{e=c[f>>2]|0;f=c[f+4>>2]|0;c[g>>2]=37;b=g+8|0;c[b>>2]=e;c[b+4>>2]=f;pL(173895,81419,g)|0;b=173895}}while(0);l=h;return b|0}function En(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+64>>2]|0;ib[c[(c[a+4>>2]|0)+24>>2]&127](c[a+16>>2]|0,b,d);return}function Fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;b=c[(c[a+64>>2]|0)+56+(((b|0)==3?2:b)<<2)>>2]|0;if(((b|0)!=0?(f=Yo(a,d)|0,(f|0)!=0):0)?(c[h+24>>2]=f,g=bb[c[b>>2]&31](b,h,4)|0,(g|0)!=0):0){d=g+16|0;h=c[d+4>>2]|0;b=e;c[b>>2]=c[d>>2];c[b+4>>2]=h;b=1}else b=0;l=i;return b|0}function Gn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=Yn(a,32)|0;g=h+16|0;c[g>>2]=e;c[g+4>>2]=f;c[h+24>>2]=$o(a,d)|0;e=(b|0)==3?2:b;g=a+64|0;d=c[g>>2]|0;b=c[d+56+(e<<2)>>2]|0;if(!b){f=Pp(a,17696,c[4353]|0)|0;c[(c[g>>2]|0)+56+(e<<2)>>2]=f;b=c[g>>2]|0}else{f=b;b=d}b=c[b+68+(e<<2)>>2]|0;if(!b){b=Pp(a,17732,c[4353]|0)|0;c[(c[g>>2]|0)+68+(e<<2)>>2]=b}bb[c[f>>2]&31](f,h,1)|0;bb[c[b>>2]&31](b,h,1)|0;return}function Hn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=b+16|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=d+16|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0?1:(a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0)<<31>>31)|0}function In(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b+24>>2]|0;e=c[d+24>>2]|0;return (b>>>0>e>>>0?1:(b>>>0<e>>>0)<<31>>31)|0}function Jn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=Kn(a,b,d,e)|0;if(!a)a=0;else a=c[a+24>>2]|0;return a|0}function Kn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;a=c[(c[a+64>>2]|0)+68+(((b|0)==3?2:b)<<2)>>2]|0;if(!a)a=0;else{b=f+16|0;c[b>>2]=d;c[b+4>>2]=e;a=bb[c[a>>2]&31](a,f,4)|0}l=g;return a|0}function Ln(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)==3?2:b;b=Kn(a,f,d,e)|0;if(!b)b=0;else{e=a+64|0;d=c[(c[e>>2]|0)+56+(f<<2)>>2]|0;bb[c[d>>2]&31](d,b,2)|0;e=c[(c[e>>2]|0)+68+(f<<2)>>2]|0;bb[c[e>>2]&31](e,b,2)|0;bp(a,c[b+24>>2]|0)|0;Zn(a,b);b=1}return b|0}function Mn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[41987]=b;g=c[b+64>>2]|0;f=0;while(1){if((f|0)==3)break;h=g+56+(f<<2)|0;d=c[h>>2]|0;a:do if(d|0){d=bb[c[d>>2]&31](d,0,128)|0;while(1){if(!d)break a;e=c[h>>2]|0;e=bb[c[e>>2]&31](e,d,8)|0;if((a[c[d+24>>2]>>0]|0)!=37){d=e;continue}i=d+16|0;Ln(b,f,c[i>>2]|0,c[i+4>>2]|0)|0;d=e}}while(0);f=f+1|0}return}function Nn(a){a=a|0;c[41987]=a;a=a+64|0;On((c[a>>2]|0)+56|0);On((c[a>>2]|0)+68|0);return}function On(a){a=a|0;var b=0,d=0,e=0;b=0;while(1){if((b|0)==3)break;d=a+(b<<2)|0;e=c[d>>2]|0;if(e|0){Kl(e)|0;c[d>>2]=0}b=b+1|0}return}function Pn(a,b,c){a=a|0;b=b|0;c=c|0;if(!(gL(b,c,a)|0))a=0;else a=rJ(b)|0;return a|0}function Qn(a,b){a=a|0;b=b|0;return WL(b,a)|0}function Rn(a){a=a|0;return PL(a)|0}function Sn(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+32|0;e=b+12|0;d=b;c[4446]=c[4443];c[4447]=c[4444];c[e>>2]=a;c[e+4>>2]=rJ(a)|0;c[e+8>>2]=0;c[d>>2]=17792;c[d+4>>2]=17668;c[d+8>>2]=17780;a=er(e,d)|0;fp(0);l=b;return a|0}function Tn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)!=0?(h=b+8|0,f=c[h>>2]|0,(f|0)<(c[b+4>>2]|0)):0){i=(c[b>>2]|0)+f|0;b=0;g=a[i>>0]|0;f=d;d=i;while(1){d=d+1|0;a[f>>0]=g;b=b+1|0;if(!(g<<24>>24!=10&(b|0)<(e|0)))break;g=a[d>>0]|0;if(!(g<<24>>24))break;else f=f+1|0}c[h>>2]=(c[h>>2]|0)+b}else b=0;return b|0}function Un(a){a=a|0;return 0}function Vn(a,b){a=a|0;b=b|0;a=ZI(b)|0;VN(a|0,0,b|0)|0;return a|0}function Wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=aJ(b,d)|0;if(d>>>0>c>>>0)VN(a+c|0,0,d-c|0)|0;return a|0}function Xn(a,b){a=a|0;b=b|0;_I(b);return}function Yn(a,b){a=a|0;b=b|0;var d=0;d=l;l=l+16|0;a=c[a+64>>2]|0;a=ab[c[(c[a>>2]|0)+4>>2]&63](c[a+12>>2]|0,b)|0;if(!a)_l(1,81425,d)|0;l=d;return a|0}function Zn(a,b){a=a|0;b=b|0;if(b|0){a=c[a+64>>2]|0;hb[c[(c[a>>2]|0)+12>>2]&31](c[a+12>>2]|0,b)}return}function _n(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+16>>2]|0)+8|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=(c[d+16>>2]|0)+8|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0?-1:(a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0)&1)|0}function $n(a,b,d){a=a|0;b=b|0;d=d|0;a=c[b+16>>2]|0;if((a+28|0)!=(b|0))Zn(c[a+24>>2]|0,b);return}function ao(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=(c[c[b+16>>2]>>2]|0)>>>4;e=(c[c[d+16>>2]>>2]|0)>>>4;return (b>>>0<e>>>0?-1:b>>>0>e>>>0&1)|0}function bo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=167040;c[e>>2]=b;c[e+4>>2]=d;c[41992]=167032;a=c[a+40>>2]|0;a=bb[c[a>>2]&31](a,167952,4)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function co(a){a=a|0;a=c[a+36>>2]|0;a=bb[c[a>>2]&31](a,0,128)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function eo(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=bb[c[d>>2]&31](d,b,8)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function fo(a){a=a|0;a=c[a+36>>2]|0;a=bb[c[a>>2]&31](a,0,256)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function go(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=bb[c[d>>2]&31](d,b,16)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=bo(a,b,c)|0;do if((d|0)!=0&(e|0)==0){e=so(a)|0;if((e|0)!=(a|0)?(f=bo(e,b,c)|0,f|0):0){io(a,f,1)|0;e=f;break}if(!(Bn(a,1,b,c)|0))e=0;else{e=kn(a,1)|0;e=jo(a,b,c,e,z)|0;ko(a,e);lo(a,e)}}while(0);return e|0}function io(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=so(a)|0;if((e|0)==(c[b+24>>2]|0)){e=b+8|0;e=bo(a,c[e>>2]|0,c[e+4>>2]|0)|0;if((d|0)!=0&(e|0)==0){e=Lp(a)|0;if(!e)e=0;else{d=io(e,b,d)|0;mo(a,d);return d|0}}}else e=0;return e|0}function jo(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=Yn(b,64)|0;h=c[g>>2]|0;i=g+8|0;c[i>>2]=d;c[i+4>>2]=e;c[g>>2]=h&12|f<<4|1;c[g+24>>2]=so(b)|0;if(a[(so(b)|0)+24>>0]&64)No(g,81367,16,0)|0;return g|0}function ko(a,b){a=a|0;b=b|0;do{mo(a,b);a=Lp(a)|0}while((a|0)!=0);return}function lo(b,c){b=b|0;c=c|0;if(a[(so(b)|0)+24>>0]&64)mm(b,c);to(b,c);return}function mo(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+40|0;Sl(c[e>>2]|0)|0;if((so(a)|0)==(a|0))d=b+28|0;else d=Yn(a,36)|0;c[d+16>>2]=b;e=c[e>>2]|0;bb[c[e>>2]&31](e,d,1)|0;e=c[a+36>>2]|0;bb[c[e>>2]&31](e,d,1)|0;return}function no(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;h=so(a)|0;if(An(a,1,b,g,0)|0){e=g;e=bo(a,c[e>>2]|0,c[e+4>>2]|0)|0;if(!e)if(!((d|0)==0|(h|0)==(a|0))?(f=g,f=bo(h,c[f>>2]|0,c[f+4>>2]|0)|0,(f|0)!=0):0)e=io(a,f,1)|0;else i=6}else i=6;if((i|0)==6)if((d|0)!=0?(An(a,1,b,g,1)|0)!=0:0){i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;e=kn(a,1)|0;e=jo(a,h,i,e,z)|0;ko(a,e);lo(a,e);En(a,1,e)}else e=0;l=j;return e|0}function oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[42001]=b;d=Um(a,b)|0;while(1){if(!d)break;e=Vm(a,d,b)|0;bn(a,d,0);d=e}e=c[a+40>>2]|0;bb[c[e>>2]&31](e,167988,2)|0;e=c[a+36>>2]|0;bb[c[e>>2]&31](e,167988,2)|0;return}function po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+8|0;e=f;if(bo(b,c[e>>2]|0,c[e+4>>2]|0)|0){if((so(b)|0)==(b|0)){e=Um(b,d)|0;while(1){if(!e)break;g=Vm(b,e,d)|0;dn(b,e)|0;e=g}if(a[b+24>>0]&64)Gm(d);xo(b,d);Vo(d);g=f;Cn(b,1,c[g>>2]|0,c[g+4>>2]|0)}if(!(wq(b,d,54,0,0)|0))if((so(b)|0)==(b|0)){Zn(b,d);e=0}else e=0;else e=-1}else e=-1;return e|0}function qo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;d=c[b>>2]|0;do if(!(d&3))if((Lp(b)|0)==(a|0)){d=c[b>>2]|0;g=5;break}else{_l(1,81451,e)|0;f=-1;break}else g=5;while(0);a:do if((g|0)==5)switch(d&3){case 1:{f=po(a,b)|0;break a}case 2:case 3:{f=dn(a,b)|0;break a}case 0:{f=ln(b)|0;break a}default:{}}while(0);l=h;return f|0}function ro(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=c[(c[a+40>>2]|0)+24>>2]|0;break}case 1:{b=c[a+24>>2]|0;break}case 0:{b=a;break}default:{}}return b|0}function so(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=(c[a+40>>2]|0)+24|0;break}case 1:{b=a+24|0;break}case 0:{b=a+60|0;break}default:{}}return c[b>>2]|0}function to(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))Do(b,d,100,0);else uo(b,d,c[e+48>>2]|0);return}function uo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){uo(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=c[d>>2]|0;break}case 1:{e=(c[d>>2]|0)+12|0;break}case 2:{e=(c[d>>2]|0)+24|0;break}default:break a}e=c[e>>2]|0;if(e|0)ib[e&127](a,b,c[d+4>>2]|0)}while(0);return}function vo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+64>>2]|0;if(!(a[f+52>>0]|0))Do(b,d,101,e);else wo(b,d,e,c[f+48>>2]|0);return}function wo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a:do if(e|0){wo(a,b,d,c[e+8>>2]|0);switch(c[b>>2]&3){case 0:{f=(c[e>>2]|0)+4|0;break}case 1:{f=(c[e>>2]|0)+16|0;break}case 2:{f=(c[e>>2]|0)+28|0;break}default:break a}f=c[f>>2]|0;if(f|0)kb[f&31](a,b,c[e+4>>2]|0,d)}while(0);return}function xo(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))Do(b,d,102,0);else yo(b,d,c[e+48>>2]|0);return}function yo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){yo(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=(c[d>>2]|0)+8|0;break}case 1:{e=(c[d>>2]|0)+20|0;break}case 2:{e=(c[d>>2]|0)+32|0;break}default:break a}e=c[e>>2]|0;if(e|0)ib[e&127](a,b,c[d+4>>2]|0)}while(0);return}function zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Yn(a,12)|0;c[e>>2]=b;c[e+4>>2]=d;d=(c[a+64>>2]|0)+48|0;c[e+8>>2]=c[d>>2];c[d>>2]=e;return}function Ao(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a+64>>2]|0)+48|0;d=c[e>>2]|0;a:do if(!d)d=-1;else{if((c[d>>2]|0)!=(b|0)){while(1){if(!d){d=-1;break a}e=d+8|0;f=c[e>>2]|0;if((c[f>>2]|0)==(b|0))break;else d=f}if(f)c[e>>2]=c[f+8>>2]}else c[e>>2]=c[d+8>>2];Zn(a,d);d=0}while(0);return d|0}function Bo(a,b){a=a|0;b=b|0;var d=0;d=so(a)|0;a:do if((d|0)==(so(b)|0))switch(c[b>>2]&3){case 0:{while(1){if((b|0)==(a|0)){b=1;break a}b=Lp(b)|0;if(!b){b=0;break}}break}case 1:{b=b+8|0;b=(ho(a,c[b>>2]|0,c[b+4>>2]|0,0)|0)!=0;break a}default:{b=(en(a,b,0)|0)!=0;break a}}else b=0;while(0);return b&1|0}function Co(a){a=a|0;return c[a>>2]&3|0}function Do(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=No(a,81475,44,0)|0;switch(c|0){case 100:{e=Eo(f,b,100)|0;if(!(Fo(e,b)|0))Go(e,a,b,d)|0;break}case 101:{if(((Fo(Eo(f,b,100)|0,b)|0)==0?(Fo(Eo(f,b,102)|0,b)|0)==0:0)?(e=Eo(f,b,101)|0,(Fo(e,b)|0)==0):0)Go(e,a,b,d)|0;break}case 102:{Ho(Eo(f,b,100)|0,b);Ho(Eo(f,b,101)|0,b);e=Eo(f,b,102)|0;if(!(Fo(e,b)|0))Go(e,a,b,d)|0;break}default:_l(1,81487,g)|0}l=h;return}function Eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;e=g;a:do switch(c[b>>2]&3){case 0:switch(d|0){case 100:{d=a+8|0;break a}case 101:{d=a+20|0;break a}case 102:{d=a+32|0;break a}default:{f=14;break a}}case 1:switch(d|0){case 100:{d=a+12|0;break a}case 101:{d=a+24|0;break a}case 102:{d=a+36|0;break a}default:{f=14;break a}}case 2:switch(d|0){case 100:{d=a+16|0;break a}case 101:{d=a+28|0;break a}case 102:{d=a+40|0;break a}default:{f=14;break a}}default:f=14}while(0);if((f|0)==14){_l(1,81521,e)|0;d=0}a=c[d>>2]|0;if(!a){a=ro(b)|0;a=Pp(a,17884,c[4353]|0)|0;c[d>>2]=a}l=g;return a|0}function Fo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=Io(b)|0;b=e+8|0;c[b>>2]=f;c[b+4>>2]=z;b=bb[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function Go(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Yn(ro(d)|0,32)|0;c[f+20>>2]=d;g=Io(d)|0;d=f+8|0;c[d>>2]=g;c[d+4>>2]=z;c[f+16>>2]=b;if(e|0){g=Yn(b,8)|0;c[f+24>>2]=g;c[g>>2]=e}bb[c[a>>2]&31](a,f,1)|0;return f|0}function Ho(a,b){a=a|0;b=b|0;b=Fo(a,b)|0;if(b|0)bb[c[a>>2]&31](a,b,2)|0;return}function Io(a){a=a|0;a=a+8|0;z=c[a+4>>2]|0;return c[a>>2]|0}function Jo(a,b,d){a=a|0;b=b|0;d=d|0;Ko(b);Zn(c[b+16>>2]|0,b);return}function Ko(a){a=a|0;var b=0,d=0;b=a+16|0;a=c[a+24>>2]|0;while(1){if(!a)break;d=c[a+4>>2]|0;Zn(c[b>>2]|0,a);a=d}return}function Lo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=c[b+16>>2]|0;f=h;while(1){if(!f){f=0;break}g=c[f>>2]|0;if((g|0)==(d|0)){j=7;break}if((a[d>>0]|0)==(a[g>>0]|0)?(xJ(d,g)|0)==0:0){j=7;break}f=c[f+4>>2]|0;if((f|0)==(h|0)){f=0;break}}do if((j|0)==7){if(!(c[b>>2]&4)){if((f|0)==(h|0)&(e|0)==0){f=h;break}Mo(b,f,e);break}if(e)if((h|0)==(f|0))f=h;else _l(1,81546,i)|0}while(0);l=k;return f|0}function Mo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a+16>>2]=b;e=c[a>>2]|0;d=d<<2&4;c[a>>2]=e&-5|d;if(e&2|0){e=(e&3|0)==3?-1:1;c[a+(e*48|0)+16>>2]=b;e=a+(e*48|0)|0;c[e>>2]=c[e>>2]&-5|d}return}function No(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=ro(a)|0;f=Lo(a,b,0)|0;a:do if((d|0)!=0&(f|0)==0){d=Yn(h,d)|0;c[d>>2]=$o(h,b)|0;switch(c[a>>2]&3){case 0:{Oo(a,d);g=d;break a}case 1:{Oo(a,d);g=d;break a}case 2:case 3:{Oo(a,d);g=d;break a}default:{}}}else g=f;while(0);if(e|0)Lo(a,b,1)|0;return g|0}function Oo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;do if(d){e=d+4|0;f=c[e>>2]|0;if((f|0)==(d|0)){c[e>>2]=b;e=d;d=b;break}else{c[b+4>>2]=f;e=b;break}}else{e=b;d=b}while(0);c[d+4>>2]=e;if(!(c[a>>2]&4))Mo(a,b,0);return}function Po(a,b){a=a|0;b=b|0;var d=0,e=0;e=ro(a)|0;d=Lo(a,b,0)|0;if(!d)b=-1;else{Qo(a,d);if(!(c[a>>2]&3)){Ro(e,a,d);b=d}else{wq(so(e)|0,a,55,d,0)|0;b=d}bp(e,c[d>>2]|0)|0;Zn(e,b);b=0}return b|0}function Qo(a,b){a=a|0;b=b|0;var d=0;a=c[a+16>>2]|0;do{d=a+4|0;a=c[d>>2]|0}while((a|0)!=(b|0));c[d>>2]=c[b+4>>2];return}function Ro(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+16>>2]|0)==(d|0)){a=c[d+4>>2]|0;Mo(b,(a|0)==(d|0)?0:a,0)}return}function So(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(d|0)>-1;g=f?d:0-d|0;a:do switch(b|0){case 0:{No(a,c,g,e)|0;if(!f){b=Jp(a)|0;while(1){if(!b)break a;So(b,0,c,d,e);b=Kp(b)|0}}break}case 3:case 2:case 1:{d=(b|0)==1;b=co(a)|0;while(1){if(!b)break a;b:do if(d)No(b,c,g,e)|0;else{f=Pm(a,b)|0;while(1){if(!f)break b;No(f,c,g,e)|0;f=Rm(a,f)|0}}while(0);b=eo(a,b)|0}}default:{}}while(0);return}function To(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch(b|0){case 0:{wq(a,a,56,c,1)|0;break}case 3:case 2:case 1:{e=(b|0)==1;d=co(a)|0;while(1){if(!d)break a;b:do if(e)Po(d,c)|0;else{b=Pm(a,d)|0;while(1){if(!b)break b;Po(b,c)|0;b=Rm(a,b)|0}}while(0);d=eo(a,d)|0}}default:{}}while(0);return}function Uo(a,b,c){a=a|0;b=b|0;c=c|0;Po(b,c)|0;return}function Vo(a){a=a|0;var b=0,d=0,e=0;d=ro(a)|0;b=a+16|0;a=c[b>>2]|0;if(a|0)do{e=a;a=c[a+4>>2]|0;bp(d,c[e>>2]|0)|0;Zn(d,e)}while((a|0)!=(c[b>>2]|0));c[b>>2]=0;return}function Wo(a){a=a|0;return Rp(a,Xo(a)|0)|0}function Xo(a){a=a|0;var b=0,d=0;if(!a)d=168024;else d=(c[a+64>>2]|0)+20|0;b=c[d>>2]|0;if(!b){b=Pp(a,17920,c[4353]|0)|0;c[d>>2]=b;a=167096;c[a>>2]=-2147483648;c[a+4>>2]=0;a=167104;c[a>>2]=2147483647;c[a+4>>2]=-1}return b|0}function Yo(a,b){a=a|0;b=b|0;return Zo(Xo(a)|0,b)|0}function Zo(a,b){a=a|0;b=b|0;a=_o(a,b)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function _o(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+16>>2]=b;b=bb[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function $o(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)d=0;else{e=Xo(a)|0;d=_o(e,b)|0;if(!d){d=(rJ(b)|0)+24|0;if(!a)d=ZI(d)|0;else d=Yn(a,d)|0;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;a=d+20|0;xK(a,b)|0;c[d+16>>2]=a;bb[c[e>>2]&31](e,d,1)|0}else{e=d+8|0;b=e;b=HN(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=z}d=c[d+16>>2]|0}return d|0}function ap(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b)d=0;else{e=Xo(a)|0;d=_o(e,b)|0;if(!d){d=(rJ(b)|0)+24|0;if(!a)d=ZI(d)|0;else d=Yn(a,d)|0;g=167096;f=c[g+4>>2]|0;a=d+8|0;c[a>>2]=c[g>>2]|1;c[a+4>>2]=f;a=d+20|0;xK(a,b)|0;c[d+16>>2]=a;bb[c[e>>2]&31](e,d,1)|0}else{g=d+8|0;f=g;f=HN(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[g>>2]=f;c[g+4>>2]=z}d=c[d+16>>2]|0}return d|0}function bp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)!=0?(d=Xo(a)|0,e=_o(d,b)|0,(e|0)!=0):0)if((c[e+16>>2]|0)==(b|0)?(b=e+8|0,g=b,g=HN(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0,f=z,b,c[b>>2]=g,c[b+4>>2]=f,b=167104,(g|0)==0&(f|0)==0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0):0){Qp(a,d,e)|0;a=0}else a=0;else a=-1;return a|0}function cp(a){a=a|0;var b=0;if(!a)a=0;else{a=a+-12|0;b=167096;a=c[b>>2]&c[a>>2]}return a|0}function dp(a){a=a|0;var b=0,d=0,e=0;if(a|0){d=167096;a=a+-12|0;e=a;b=c[e+4>>2]|c[d+4>>2];c[a>>2]=c[e>>2]|c[d>>2];c[a+4>>2]=b}return}function ep(a){a=a|0;c[4489]=a;return}function fp(a){a=a|0;c[42011]=a;c[4489]=1;return}function gp(a,b){a=a|0;b=b|0;c[42012]=a;c[42013]=b;c[42014]=0;return}function hp(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[42015]|0)){c[42015]=1;if(!(c[42016]|0))c[42016]=1;if(!(c[42007]|0))c[42007]=c[13853];if(!(c[42008]|0))c[42008]=c[13885];k=c[42017]|0;if(!((k|0)!=0?(c[k>>2]|0)!=0:0)){ip();k=jp(c[42007]|0,16384)|0;c[c[42017]>>2]=k}kp()}a:while(1){j=c[42018]|0;a[j>>0]=a[173927]|0;e=(c[(c[c[42017]>>2]|0)+28>>2]|0)+(c[42016]|0)|0;f=j;b:while(1){h=f;while(1){f=c[17960+(d[h>>0]<<2)>>2]|0;if(b[56680+(e<<1)>>1]|0){c[42019]=e;c[42020]=h}c:while(1){g=f&255;do{f=g+(b[56866+(e<<1)>>1]|0)|0;if((e|0)==(b[57076+(f<<1)>>1]|0))break c;k=b[57612+(e<<1)>>1]|0;e=k<<16>>16}while(k<<16>>16<=92);f=c[18984+(g<<2)>>2]|0}e=b[57822+(f<<1)>>1]|0;f=h+1|0;if((b[56866+(e<<1)>>1]|0)==219)break;else h=f}d:while(1){k=j;e:while(1){e=b[56680+(e<<1)>>1]|0;if(!(e<<16>>16)){e=b[56680+(c[42019]<<1)>>1]|0;f=c[42020]|0}else e=e<<16>>16;c[42009]=j;i=f;c[42010]=i-k;a[173927]=a[f>>0]|0;a[f>>0]=0;c[42018]=f;f:while(1){switch(e|0){case 1:{m=27;break a}case 12:{m=53;break a}case 13:{m=55;break a}case 14:{m=57;break a}case 15:{m=61;break a}case 16:{m=65;break a}case 17:{m=67;break a}case 18:{m=69;break a}case 19:{m=72;break a}case 20:{m=75;break a}case 21:{m=78;break a}case 23:{m=86;break a}case 33:{m=118;break a}case 39:case 38:case 37:case 36:{l=0;break a}case 2:{m=29;break b}case 3:{m=32;break b}case 4:{m=35;break b}case 5:{m=37;break b}case 6:{m=39;break b}case 7:{m=42;break b}case 8:{m=44;break b}case 9:{m=47;break b}case 10:{m=49;break b}case 11:{m=51;break b}case 22:{m=83;break b}case 24:{m=89;break b}case 25:{m=92;break b}case 26:{m=95;break b}case 27:{m=98;break b}case 28:{m=101;break b}case 29:{m=104;break b}case 30:{m=109;break b}case 31:{m=112;break b}case 32:{m=115;break b}case 34:{m=121;break b}case 0:break f;case 35:break;default:{m=134;break a}}h=c[42009]|0;a[f>>0]=a[173927]|0;e=c[42017]|0;g=c[e>>2]|0;if(!(c[g+44>>2]|0)){n=c[g+16>>2]|0;c[42022]=n;c[g>>2]=c[42007];g=c[e>>2]|0;c[g+44>>2]=1;e=n}else e=c[42022]|0;if((c[42018]|0)>>>0<=((c[g+4>>2]|0)+e|0)>>>0){m=128;break e}switch(tp()|0){case 0:{m=132;break d}case 2:{m=133;break e}case 1:break;default:continue a}c[42018]=c[42009];e=(((c[42016]|0)+-1|0)/2|0)+36|0}a[f>>0]=a[173927]|0;f=c[42020]|0;e=c[42019]|0}if((m|0)==128){m=0;g=i-h|0;h=c[42009]|0;f=h+(g+-1)|0;c[42018]=f;e=rp()|0;i=sp(e)|0;j=c[42009]|0;if(!i)continue;else{m=129;break}}else if((m|0)==133){m=0;f=(c[(c[c[42017]>>2]|0)+4>>2]|0)+(c[42022]|0)|0;c[42018]=f;e=rp()|0;j=c[42009]|0;continue}}if((m|0)==129){m=0;f=h+g|0;c[42018]=f;e=i;continue}else if((m|0)==132){m=0;f=(c[42009]|0)+(i-h+-1)|0;c[42018]=f;e=rp()|0;j=c[42009]|0;continue}}switch(m|0){case 29:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[4489]=(c[4489]|0)+1;continue a}case 32:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=3;continue a}case 35:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 37:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 39:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=1;continue a}case 42:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 44:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;lp();continue a}case 47:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 49:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 51:{m=0;e=c[42010]|0;if(!e)continue a;c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;continue a}case 83:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=5;np();continue a}case 89:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;pp(83714);continue a}case 92:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;pp(81579);continue a}case 95:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[4489]=(c[4489]|0)+1;continue a}case 98:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;pp(e);continue a}case 101:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=7;c[42021]=1;np();continue a}case 104:{m=0;e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;n=(c[42021]|0)+-1|0;c[42021]=n;if(!n){m=108;break a}pp(c[42009]|0);continue a}case 109:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[42021]=(c[42021]|0)+1;pp(e);continue a}case 112:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;pp(e);c[4489]=(c[4489]|0)+1;continue a}case 115:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;pp(e);continue a}case 121:{m=0;f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;XL(e,f,1,c[42008]|0)|0;continue a}}}switch(m|0){case 27:{e=c[42010]|0;if(!e)l=-1;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=-1}break}case 53:{e=c[42010]|0;if(!e)l=259;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=259}break}case 55:{e=c[42010]|0;if(!e)l=260;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=260}break}case 57:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;if(!(c[42014]|0)){c[42014]=258;l=258}else l=258;break}case 61:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;if(!(c[42014]|0)){c[42014]=261;l=261}else l=261;break}case 65:{e=c[42010]|0;if(!e)l=263;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=263}break}case 67:{e=c[42010]|0;if(!e)l=262;else{c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=262}break}case 69:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=(c[42014]|0)==261?264:45;break}case 72:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;l=(c[42014]|0)==258?264:45;break}case 75:{f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;c[42037]=$o(c[41987]|0,e)|0;l=267;break}case 78:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;if(mp()|0){m=(c[42010]|0)+-1|0;a[f>>0]=a[173927]|0;n=j+m|0;c[42018]=n;c[42009]=j;c[42010]=m;a[173927]=a[n>>0]|0;a[n>>0]=0;c[42018]=n}c[42037]=$o(c[41987]|0,c[42009]|0)|0;l=267;break}case 86:{e=c[42010]|0;if(e|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[(c[42009]|0)+(e+-1)>>0]|0)==10&1;c[42016]=1;op();l=268;break}case 108:{c[42016]=1;qp();l=268;break}case 118:{f=c[42010]|0;e=c[42009]|0;if(f|0)c[(c[c[42017]>>2]|0)+28>>2]=(a[e+(f+-1)>>0]|0)==10&1;l=a[e>>0]|0;break}case 134:{up(81582);break}}return l|0}function ip(){var a=0,b=0,d=0;b=c[42017]|0;do if(!b){a=Bp(4)|0;c[42017]=a;if(!a)up(81940);else{c[a>>2]=0;a=1;d=9;break}}else{a=c[42028]|0;if(0>=(a+-1|0)>>>0){a=a+8|0;b=vp(b,a<<2)|0;c[42017]=b;if(!b)up(81940);else{d=b+(c[42028]<<2)|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+24>>2]=0;c[d+28>>2]=0;d=9;break}}}while(0);if((d|0)==9)c[42028]=a;return}function jp(a,b){a=a|0;b=b|0;var d=0;d=Bp(48)|0;if(!d)up(81895);c[d+12>>2]=b;b=Bp(b+2|0)|0;c[d+4>>2]=b;if(!b)up(81895);else{c[d+20>>2]=1;xp(d,a);return d|0}return 0}function kp(){var b=0,d=0;d=c[42017]|0;b=c[d>>2]|0;c[42022]=c[b+16>>2];b=c[b+8>>2]|0;c[42018]=b;c[42009]=b;c[42007]=c[c[d>>2]>>2];a[173927]=a[b>>0]|0;return}function lp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;d=g+16|0;e=g+12|0;h=c[42009]|0;b=h+1|0;i=(VJ(b,81879,4)|0)==0;b=i?h+5|0:b;c[f>>2]=e;c[f+4>>2]=g+20;c[f+8>>2]=d;f=cM(b,81884,f)|0;if((f|0)>0?(c[4489]=(c[e>>2]|0)+-1,(f|0)!=1):0){d=b+(c[d>>2]|0)|0;b=d;a:while(1){e=a[b>>0]|0;switch(e<<24>>24){case 0:case 34:break a;default:{}}b=b+1|0}if((b|0)!=(d|0)&e<<24>>24==34){a[b>>0]=0;Ap(d,b-d|0)}}l=g;return}function mp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+2080|0;i=j+8|0;f=j;b=j+1056|0;d=j+32|0;h=j+16|0;k=a[(c[42009]|0)+((c[42010]|0)+-1)>>0]|0;e=k<<24>>24==46;if(e|((k&255)+-48|0)>>>0<10)if(e?(zp()|0)!=0:0)g=4;else b=0;else g=4;if((g|0)==4){k=c[42011]|0;cm(h,1024,b);fm(h,81790)|0;fm(h,c[42009]|0)|0;c[f>>2]=c[4489];pL(d,81834,f)|0;fm(h,d)|0;fm(h,(k|0)==0?81784:k)|0;fm(h,81851)|0;d=h+4|0;b=c[d>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){dm(h,1)|0;b=c[d>>2]|0}a[b>>0]=0;b=c[h>>2]|0;c[d>>2]=b;c[i>>2]=b;_l(0,81876,i)|0;gm(h);b=1}l=j;return b|0}function np(){var b=0;b=c[42023]|0;if(!b){b=ZI(1024)|0;c[42023]=b;c[42025]=b+1024}c[42024]=b;a[b>>0]=0;return}function op(){c[42037]=$o(c[41987]|0,c[42023]|0)|0;a[c[42023]>>0]=0;return}function pp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[42024]|0;d=c[42023]|0;if(e>>>0>d>>>0){e=e+-1|0;f=3}a:while(1){if((f|0)==3)c[42024]=e;f=c[42025]|0;g=f;do{h=b;b=b+1|0;h=a[h>>0]|0;i=e;e=e+1|0;a[i>>0]=h;if(!(h<<24>>24))break a}while(e>>>0<f>>>0);c[42024]=e;f=d;i=g-f<<1;d=aJ(d,i)|0;c[42023]=d;c[42025]=d+i;e=d+(e-f)|0;f=3}c[42024]=e;return}function qp(){c[42037]=ap(c[41987]|0,c[42023]|0)|0;a[c[42023]>>0]=0;return}function rp(){var d=0,e=0,f=0,g=0,h=0;h=c[42018]|0;g=c[42009]|0;e=(c[(c[c[42017]>>2]|0)+28>>2]|0)+(c[42016]|0)|0;while(1){if(g>>>0>=h>>>0)break;d=a[g>>0]|0;if(!(d<<24>>24))d=1;else d=c[17960+((d&255)<<2)>>2]|0;if(b[56680+(e<<1)>>1]|0){c[42019]=e;c[42020]=g}a:while(1){f=d&255;do{d=f+(b[56866+(e<<1)>>1]|0)|0;if((e|0)==(b[57076+(d<<1)>>1]|0))break a;d=b[57612+(e<<1)>>1]|0;e=d<<16>>16}while(d<<16>>16<=92);d=c[18984+(f<<2)>>2]|0}g=g+1|0;e=b[57822+(d<<1)>>1]|0}return e|0}function sp(a){a=a|0;var d=0;if(b[56680+(a<<1)>>1]|0){d=c[42018]|0;c[42019]=a;c[42020]=d}while(1){d=(b[56866+(a<<1)>>1]|0)+1|0;if((a|0)==(b[57076+(d<<1)>>1]|0))break;a=b[57612+(a<<1)>>1]|0}d=b[57822+(d<<1)>>1]|0;return (d<<16>>16==92?0:d<<16>>16)|0}function tp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=c[42017]|0;g=c[j>>2]|0;i=c[g+4>>2]|0;f=c[42009]|0;l=c[42018]|0;k=l;if(l>>>0>(i+((c[42022]|0)+1)|0)>>>0)up(81637);h=k-f|0;if(!(c[g+40>>2]|0))b=(h|0)==1?1:2;else{l=h+-1|0;h=i;g=0;while(1){if((g|0)>=(l|0))break;a[h>>0]=a[f>>0]|0;h=h+1|0;f=f+1|0;g=g+1|0}f=c[j>>2]|0;do if((c[f+44>>2]|0)==2){c[42022]=0;c[f+16>>2]=0;e=f;m=17}else{while(1){i=f+12|0;h=c[i>>2]|0;g=h-l+-1|0;if(g|0){m=16;break}g=f+4|0;j=c[g>>2]|0;if(!(c[f+20>>2]|0)){m=12;break}f=h<<1;f=(f|0)==0?(h>>>3)+h|0:f;c[i>>2]=f;f=vp(j,f+2|0)|0;c[g>>2]=f;if(!f)break;j=f+(k-j)|0;c[42018]=j;f=c[c[42017]>>2]|0;k=j}if((m|0)==12)c[g>>2]=0;else if((m|0)==16){d=bb[c[c[(c[42012]|0)+8>>2]>>2]&31](c[42013]|0,(c[f+4>>2]|0)+l|0,g>>>0<8192?g:8192)|0;e=c[c[42017]>>2]|0;c[42022]=d;c[e+16>>2]=d;if(!d){m=17;break}else{b=0;break}}up(81693)}while(0);do if((m|0)==17)if(!l){wp(c[42007]|0);b=1;d=c[42022]|0;e=c[c[42017]>>2]|0;break}else{c[e+44>>2]=2;b=2;d=0;break}while(0);f=d+l|0;do if(f>>>0>(c[e+12>>2]|0)>>>0){m=vp(c[e+4>>2]|0,f+(d>>>1)|0)|0;d=c[42017]|0;c[(c[d>>2]|0)+4>>2]=m;d=c[(c[d>>2]|0)+4>>2]|0;if(!d)up(81737);else{n=c[42022]|0;o=d;break}}else{n=d;o=c[e+4>>2]|0}while(0);n=n+l|0;c[42022]=n;a[o+n>>0]=0;o=c[42017]|0;a[(c[(c[o>>2]|0)+4>>2]|0)+((c[42022]|0)+1)>>0]=0;c[42009]=c[(c[o>>2]|0)+4>>2]}return b|0}function up(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=c[13918]|0;c[b>>2]=a;zL(d,81633,b)|0;Ma(2)}function vp(a,b){a=a|0;b=b|0;return aJ(a,b)|0}function wp(a){a=a|0;var b=0,d=0,e=0;d=c[42017]|0;if((d|0)!=0?(b=c[d>>2]|0,(b|0)!=0):0)e=4;else{ip();b=jp(c[42007]|0,16384)|0;d=c[42017]|0;c[d>>2]=b;if(!d)b=0;else e=4}xp(b,a);kp();return}function xp(a,b){a=a|0;b=b|0;var d=0;d=c[(jJ()|0)>>2]|0;yp(a);c[a>>2]=b;c[a+40>>2]=1;b=c[42017]|0;if(!b)b=0;else b=c[b>>2]|0;if((b|0)!=(a|0)){c[a+32>>2]=1;c[a+36>>2]=0}c[a+24>>2]=0;c[(jJ()|0)>>2]=d;return}function yp(b){b=b|0;var d=0;if(b|0){c[b+16>>2]=0;d=b+4|0;a[c[d>>2]>>0]=0;a[(c[d>>2]|0)+1>>0]=0;c[b+8>>2]=c[d>>2];c[b+28>>2]=1;c[b+44>>2]=0;d=c[42017]|0;if(!d)d=0;else d=c[d>>2]|0;if((d|0)==(b|0))kp()}return}function zp(){var b=0,d=0;d=c[42009]|0;b=(c[42010]|0)+-2|0;while(1){if((b|0)<=-1){b=0;break}if((a[d+b>>0]|0)==46){b=1;break}else b=b+-1|0}return b|0}function Ap(a,b){a=a|0;b=b|0;var d=0;d=c[42026]|0;if((d|0)<(b|0)){if(!d)d=ZI(b+1|0)|0;else d=aJ(c[42027]|0,b+1|0)|0;c[42027]=d;c[42026]=b}else d=c[42027]|0;xK(d,a)|0;c[42011]=c[42027];return}function Bp(a){a=a|0;return ZI(a)|0}function Cp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+2112|0;k=m+32|0;i=m+24|0;h=m+16|0;g=m+8|0;f=m;d=m+56|0;j=m+40|0;cm(j,1024,m+1080|0);e=c[42011]|0;if(e|0){fm(j,e)|0;fm(j,81990)|0}fm(j,b)|0;c[f>>2]=c[4489];pL(d,81993,f)|0;fm(j,d)|0;a:do if(!(a[c[42009]>>0]|0))switch(((c[42016]|0)+-1|0)/2|0|0){case 2:{c[g>>2]=16384;pL(d,82013,g)|0;fm(j,d)|0;b=c[42023]|0;if(!(a[b>>0]|0))break a;i=rJ(b)|0;fm(j,82075)|0;b=c[42023]|0;if((i|0)>80)a[b+80>>0]=0;fm(j,b)|0;break a}case 3:{c[h>>2]=16384;pL(d,82094,h)|0;fm(j,d)|0;b=c[42023]|0;if(!(a[b>>0]|0))break a;i=rJ(b)|0;fm(j,82162)|0;b=c[42023]|0;if((i|0)>80)a[b+80>>0]=0;fm(j,b)|0;break a}case 1:{c[i>>2]=16384;pL(d,82181,i)|0;fm(j,d)|0;break a}default:break a}else{fm(j,82005)|0;fm(j,c[42009]|0)|0;d=j+4|0;b=c[d>>2]|0;if(b>>>0>=(c[j+8>>2]|0)>>>0){dm(j,1)|0;b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=39}while(0);e=j+4|0;b=c[e>>2]|0;d=j+8|0;if(b>>>0>=(c[d>>2]|0)>>>0){dm(j,1)|0;b=c[e>>2]|0}c[e>>2]=b+1;a[b>>0]=10;b=c[e>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0){dm(j,1)|0;b=c[e>>2]|0}a[b>>0]=0;i=c[j>>2]|0;c[e>>2]=i;c[k>>2]=i;_l(1,81876,k)|0;gm(j);l=m;return}function Dp(){Ep(c[42009]|0);return}function Ep(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[42018]|0;a[j>>0]=a[173927]|0;i=c[42017]|0;e=c[i>>2]|0;d=c[e+4>>2]|0;if(j>>>0<(d+2|0)>>>0){f=d+((c[42022]|0)+2)|0;g=d+((c[e+12>>2]|0)+2)|0;k=d;h=e;while(1){if(f>>>0<=k>>>0)break;e=f+-1|0;k=g+-1|0;a[k>>0]=a[e>>0]|0;h=c[i>>2]|0;f=e;g=k;k=c[h+4>>2]|0}e=g-f|0;d=j+e|0;j=c[h+12>>2]|0;c[42022]=j;c[h+16>>2]=j;if(d>>>0<(k+2|0)>>>0)up(82240);else{l=b+e|0;m=d}}else{l=b;m=j}b=m+-1|0;a[b>>0]=64;c[42009]=l;a[173927]=a[b>>0]|0;c[42018]=b;return}function Fp(){var a=0;a=c[42017]|0;if(!a)a=0;else a=c[a>>2]|0;yp(a);return}function Gp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+80|0;f=e;g=a+52|0;Sp(a,c[g>>2]|0,17604);a=f+8|0;c[a>>2]=b;c[a+4>>2]=d;d=c[g>>2]|0;d=bb[c[d>>2]&31](d,f,4)|0;l=e;return d|0}function Hp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=Gp(b,d,e)|0;if(!f){f=Yn(b,72)|0;c[f+64>>2]=c[b+64>>2];g=f+24|0;h=c[b+24>>2]|0;c[g>>2]=h;a[g>>0]=h&255&-9;c[f+56>>2]=b;c[f+60>>2]=c[b+60>>2];b=f+8|0;c[b>>2]=d;c[b+4>>2]=e;jn(f)|0}return f|0}function Ip(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;if(!(((b|0)!=0?(An(a,0,b,f,0)|0)!=0:0)?(e=f,e=Gp(a,c[e>>2]|0,c[e+4>>2]|0)|0,(e|0)!=0):0))if((d|0)!=0?(An(a,0,b,f,1)|0)!=0:0){e=f;e=Hp(a,c[e>>2]|0,c[e+4>>2]|0)|0;En(a,0,e)}else e=0;l=g;return e|0}function Jp(a){a=a|0;a=c[a+52>>2]|0;return bb[c[a>>2]&31](a,0,128)|0}function Kp(a){a=a|0;var b=0;b=Lp(a)|0;if(!b)a=0;else{b=c[b+52>>2]|0;a=bb[c[b>>2]&31](b,a,8)|0}return a|0}function Lp(a){a=a|0;return c[a+56>>2]|0}function Mp(a,b){a=a|0;b=b|0;a=c[a+52>>2]|0;return bb[c[a>>2]&31](a,b,2)|0}function Np(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[42029]|0;e=(b|0)!=0;do if(!a)if(e){_I(b);a=0;break}else{a=ZI(d)|0;break}else if(e){Zn(a,b);a=0;break}else{a=Yn(a,d)|0;break}while(0);return a|0}function Op(a,b,d){a=a|0;b=b|0;d=d|0;a=c[42029]|0;if(!a)_I(b);else Zn(a,b);return}function Pp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=b+28|0;f=c[e>>2]|0;c[e>>2]=2;c[42029]=a;d=Ql(b,d)|0;c[e>>2]=f;c[42029]=0;return d|0}function Qp(a,b,d){a=a|0;b=b|0;d=d|0;c[42029]=a;return bb[c[b>>2]&31](b,d,2)|0}function Rp(a,b){a=a|0;b=b|0;var d=0,e=0;d=(Ll(b,0,0)|0)+28|0;e=c[d>>2]|0;c[d>>2]=2;c[42029]=a;if(!(Kl(b)|0)){c[d>>2]=e;c[42029]=0;a=0}else a=1;return a|0}function Sp(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0?(Ll(b,0,0)|0)!=(c|0):0)Ll(b,c,0)|0;return}function Tp(a,b){a=a|0;b=b|0;if(!(cp(a)|0))b=Vp(a,b)|0;else Up(a,b)|0;return b|0}function Up(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a[c>>0]=60;e=c;while(1){d=e+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;a[d>>0]=f;b=b+1|0;e=d}a[d>>0]=62;a[e+2>>0]=0;return c|0}function Vp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){a[d>>0]=34;l=a[b>>0]|0;q=0;g=((l+-45&255)<2|((l&255)+-48|0)>>>0<10)&1;h=0;i=0;j=0;e=d+1|0;f=b+1|0;b:while(1){k=e;while(1){if(!(l<<24>>24))break b;e=l&255;c:do if(l<<24>>24==34){a[k>>0]=92;m=g;n=1;k=k+1|0}else{if(!g){n=l<<24>>24>-1&(l<<24>>24!=95&(gK(e)|0)==0);m=0;n=n?1:h;break}switch(l<<24>>24){case 45:{n=(j|0)==0;m=n?g:0;n=n?h:1;break c}case 46:{n=(i|0)==0;m=n?g:0;n=n?h:1;i=i+1|0;break c}default:{n=(e+-48|0)>>>0<10;m=n?g:0;n=n?h:1;break c}}}while(0);e=k+1|0;a[k>>0]=l;p=f+1|0;o=a[f>>0]|0;j=j+1|0;f=c[4795]|0;if(!f){g=m;h=n;k=e;f=p;l=o;continue}g=o&255;h=o<<24>>24!=0;if((q&h?!(l<<24>>24==92|l<<24>>24>-1&((l+-45&255)>1&(gK(l<<24>>24)|0)==0)^1):0)?!(o<<24>>24>-1&((o+-45&255)>1&(gK(g)|0)==0)):0)break;if((j|0)<(f|0)|h^1){g=m;h=n;k=e;f=p;l=o;continue}if(l<<24>>24==92|l<<24>>24>-1&((gK(l<<24>>24)|0)==0&(l+-45&255)>1)^1){q=1;g=m;h=n;l=o;f=p;continue b}if(o<<24>>24>-1&((o+-45&255)>1&(gK(g)|0)==0)){q=1;g=m;h=n;l=o;f=p;continue b}a[e>>0]=92;a[k+2>>0]=10;g=m;h=1;j=0;k=k+3|0;f=p;l=o}a[e>>0]=92;a[k+2>>0]=10;q=0;g=m;h=1;j=0;l=o;e=k+3|0;f=p}a[k>>0]=34;a[k+1>>0]=0;if(!h){if((j|0)==1?((a[b>>0]|0)+-45&255)<2:0){b=d;break}else e=19184;while(1){f=c[e>>2]|0;if(!f)break a;if(!(iK(f,b)|0)){b=d;break}else e=e+4|0}}else b=d}else b=82272;while(0);return b|0}function Wp(a){a=a|0;return Tp(a,Xp(a)|0)|0}function Xp(a){a=a|0;var b=0;b=((rJ(a)|0)<<1)+2|0;b=b>>>0>1024?b:1024;a=c[42031]|0;if(b>>>0>(c[42030]|0)>>>0){if(!a)a=ZI(b)|0;else a=aJ(a,b)|0;c[42031]=a;c[42030]=b}return a|0}function Yp(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=0;break}if((Zp(a)|0)==0?io(a,b,0)|0:0){a=1;break}a=Kp(a)|0}return a|0}function Zp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=Dn(b)|0;if((h|0)!=0?(a[h>>0]|0)!=37:0)d=0;else e=3;a:do if((e|0)==3){d=om(b)|0;b:do if(d|0?(f=om(Lp(b)|0)|0,f|0):0){h=Sl(c[(om(so(b)|0)|0)+8>>2]|0)|0;g=d+12|0;e=f+12|0;d=0;while(1){if((d|0)>=(h|0))break b;f=c[(c[g>>2]|0)+(d<<2)>>2]|0;if((f|0?(i=c[(c[e>>2]|0)+(d<<2)>>2]|0,i|0):0)?xJ(f,i)|0:0){d=0;break a}d=d+1|0}}while(0);d=jm(b,0)|0;if(d)if((Sl(c[d+8>>2]|0)|0)>0)d=0;else return (Sl(c[d+12>>2]|0)|0)<1|0;else d=1}while(0);return d|0}function _p(b,d){b=b|0;d=d|0;var e=0,f=0;c[42032]=0;e=Im(b,82282)|0;if((e|0?((a[e>>0]|0)+-48|0)>>>0<10:0)?(f=BL(e,0,10)|0,(f|0)==0|(f|0)>59):0)c[4795]=f;$p(b,1);if(((aq(b,d,1)|0)!=-1?(bq(b,d)|0)!=-1:0)?(cq(b,d)|0)!=-1:0){c[4795]=128;b=$a[c[(c[(c[b+64>>2]|0)+8>>2]|0)+8>>2]&31](d)|0}else b=-1;return b|0}function $p(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=Jp(a)|0;while(1){if(!d)break;$p(d,0);d=Kp(d)|0}a:do if(b|0){b=co(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Pm(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Rm(a,d)|0}b=eo(a,b)|0}}while(0);return}function aq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if((e|0)==0?(Lp(b)|0)!=0:0){i=0;g=174181;k=94336}else{k=(a[b+24>>0]&1)==0?174181:82326;g=(sn(b)|0)==0;c[42033]=ym(b,2,96242,0)|0;c[42034]=ym(b,2,96251,0)|0;i=1;g=g?174181:82329}f=Dn(b)|0;if((f|0)!=0?(a[f>>0]|0)!=37:0){h=1;j=87638}else{h=0;j=174181;f=174181}do if((dq(b,d)|0)!=-1?(eq(b,d,g)|0)!=-1:0){g=(h|0)==0;if(h|i|0){if((eq(b,d,k)|0)==-1){f=-1;break}if((eq(b,d,87631)|0)==-1){f=-1;break}}if(!g?(pq(b,d,f)|0)==-1:0){f=-1;break}if(((eq(b,d,j)|0)!=-1?(eq(b,d,82337)|0)!=-1:0)?(c[42032]=(c[42032]|0)+1,(uq(b,d,e)|0)!=-1):0){c[b>>2]=c[b>>2]|8;f=0}else f=-1}else f=-1;while(0);return f|0}function bq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if((fq(a,b)|0)==-1)d=-1;else{k=jm(so(a)|0,0)|0;i=(k|0)==0;j=k+12|0;k=k+8|0;h=co(a)|0;while(1){if(!h){d=0;break a}if(gq(a,h,(c[h>>2]|0)>>>4,0)|0){if(i)d=0;else d=c[k>>2]|0;if((hq(h,b,d)|0)==-1){d=-1;break a}}g=Pm(a,h)|0;d=h;while(1){if(!g)break;f=g+-48|0;e=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0;if((d|0)!=(e|0)?(gq(a,e,(c[h>>2]|0)>>>4,0)|0)!=0:0){if(i)d=0;else d=c[k>>2]|0;if((hq(c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0,b,d)|0)==-1){d=-1;break a}d=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0}if(iq(a,g)|0){if(i)e=0;else e=c[j>>2]|0;if((jq(g,b,e)|0)==-1){d=-1;break a}}g=Rm(a,g)|0}h=eo(a,h)|0}}while(0);return d|0}function cq(a,b){a=a|0;b=b|0;c[42032]=(c[42032]|0)+-1;if((dq(a,b)|0)==-1)a=-1;else a=((eq(a,b,95830)|0)==-1)<<31>>31;return a|0}function dq(a,b){a=a|0;b=b|0;var d=0;d=c[42032]|0;while(1){if((d|0)<=0){d=0;break}if((eq(a,b,134899)|0)==-1){d=-1;break}else d=d+-1|0}return d|0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;return ab[c[(c[(c[a+64>>2]|0)+8>>2]|0)+4>>2]&63](b,d)|0}function fq(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=0;break}if(!(Zp(a)|0)){if((aq(a,b,0)|0)==-1){a=-1;break}if((bq(a,b)|0)==-1){a=-1;break}if((cq(a,b)|0)==-1){a=-1;break}}else fq(a,b)|0;a=Kp(a)|0}return a|0}function gq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((Yp(a,b)|0)==0?(rq(a,b,c,d)|0)!=0:0)if((sq(a,b)|0)==0?(tq(b)|0)==0:0)e=5;else a=1;else e=5;if((e|0)==5)a=0;return a|0}function hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ro(a)|0;do if((dq(d,b)|0)!=-1?(kq(a,b)|0)!=-1:0){if((mq(a)|0)==0?(nq(a,b,c)|0)==-1:0){a=-1;break}a=eq(d,b,82293)|0}else a=-1;while(0);return a|0}function iq(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=1;break}if((Zp(a)|0)==0?en(a,b,0)|0:0){a=0;break}a=Kp(a)|0}return a|0}function jq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]&3;g=c[((e|0)==3?a:a+48|0)+40>>2]|0;e=c[((e|0)==2?a:a+-48|0)+40>>2]|0;f=ro(g)|0;do if((((((dq(f,b)|0)!=-1?(kq(g,b)|0)!=-1:0)?(lq(a,b,c[42033]|0)|0)!=-1:0)?(g=(qn(ro(g)|0)|0)!=0,(eq(f,b,g?85095:85100)|0)!=-1):0)?(kq(e,b)|0)!=-1:0)?(lq(a,b,c[42034]|0)|0)!=-1:0){if(!(mq(a)|0)){if((nq(a,b,d)|0)==-1){a=-1;break}}else if((oq(a,b,1)|0)==-1){a=-1;break}a=eq(f,b,82293)|0}else a=-1;while(0);return a|0}function kq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+32|0;g=i;d=i+8|0;e=Dn(a)|0;f=ro(a)|0;if(!e){j=a+8|0;a=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=a;pL(d,82313,g)|0;if((eq(f,b,d)|0)==-1)a=-1;else h=4}else if((pq(f,b,e)|0)==-1)a=-1;else h=4;if((h|0)==4)a=0;l=i;return a|0}function lq(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((d|0)!=0?(e=ro(b)|0,f=Jm(b,d)|0,(a[f>>0]|0)!=0):0)if((eq(e,c,93017)|0)==-1)b=-1;else{do if(cp(f)|0){if((pq(e,c,f)|0)==-1){b=-1;break a}}else{b=WJ(f,58)|0;if(!b)if((qq(e,c,f,0)|0)==-1){b=-1;break a}else break;a[b>>0]=0;if((qq(e,c,f,0)|0)==-1){b=-1;break a}if((eq(e,c,93017)|0)==-1){b=-1;break a}if((qq(e,c,b+1|0,0)|0)==-1){b=-1;break a}a[b>>0]=58}while(0);b=0}else b=0;while(0);return b|0}function mq(a){a=a|0;return (c[a>>2]|0)>>>3&1|0}function nq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!(c[a>>2]&2)){e=0;k=4}else{switch(oq(a,b,0)|0){case -1:{e=-1;break a}case 0:{e=0;k=4;break a}default:{}}e=1;k=4}while(0);b:do if((k|0)==4){f=om(a)|0;j=ro(a)|0;c:do if(f){i=f+12|0;h=bb[c[d>>2]&31](d,0,128)|0;while(1){if(!h)break c;do if(c[a>>2]&2){g=c[42033]|0;if(g|0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0)break;g=c[42034]|0;if(!((g|0)!=0?(c[h+16>>2]|0)==(c[g+16>>2]|0):0))k=12}else k=12;while(0);if((k|0)==12){k=0;f=h+16|0;if((c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)!=(c[h+12>>2]|0)){g=e+1|0;if(e){if((eq(j,b,82308)|0)==-1){e=-1;break b}if((dq(j,b)|0)==-1){e=-1;break b}}else{if((dq(j,b)|0)==-1){e=-1;break b}if((eq(j,b,82305)|0)==-1){e=-1;break b}c[42032]=(c[42032]|0)+1}if((pq(j,b,c[h+8>>2]|0)|0)==-1){e=-1;break b}if((eq(j,b,82311)|0)==-1){e=-1;break b}if((pq(j,b,c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)|0)==-1){e=-1;break b}else e=g}}h=bb[c[d>>2]&31](d,h,8)|0}}while(0);if((e|0)>0){if((eq(j,b,82303)|0)==-1){e=-1;break}c[42032]=(c[42032]|0)+-1}c[a>>2]=c[a>>2]|8;e=0}while(0);return e|0}function oq(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Dn(b)|0;b=ro(b)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)if((eq(b,c,82296)|0)!=-1?(pq(b,c,e)|0)!=-1:0)if((d|0)!=0?(eq(b,c,82303)|0)==-1:0)b=-1;else{b=1;f=7}else b=-1;else{b=0;f=7}return b|0}function pq(a,b,c){a=a|0;b=b|0;c=c|0;return qq(a,b,c,1)|0}function qq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d)c=Vp(c,Xp(c)|0)|0;else c=Wp(c)|0;return eq(a,b,c)|0}function rq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a:do if(0<e>>>0|(0==(e|0)?(c[b>>2]|0)>>>4>>>0<d>>>0:0))b=0;else{b=Sm(a,b)|0;while(1){if(!b){b=1;break a}if(0<e>>>0|(0==(e|0)?(c[c[b+40>>2]>>2]|0)>>>4>>>0<d>>>0:0)){b=0;break a}b=Tm(a,b)|0}}while(0);return b|0}function sq(a,b){a=a|0;b=b|0;if(!(Sm(a,b)|0))a=(Pm(a,b)|0)==0&1;else a=0;return a|0}function tq(a){a=a|0;var b=0,d=0,e=0;a=om(a)|0;a:do if(!a)a=0;else{d=a+8|0;e=c[d>>2]|0;b=a+12|0;a=bb[c[e>>2]&31](e,0,128)|0;while(1){if(!a){a=0;break a}if((c[(c[b>>2]|0)+(c[a+16>>2]<<2)>>2]|0)!=(c[a+12>>2]|0)){a=1;break a}e=c[d>>2]|0;a=bb[c[e>>2]&31](e,a,8)|0}}while(0);return a|0}function uq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=jm(a,0)|0;if(e)if(((vq(a,b,96286,c[e+16>>2]|0,d)|0)!=-1?(vq(a,b,96273,c[e+8>>2]|0,d)|0)!=-1:0)?(vq(a,b,96237,c[e+12>>2]|0,d)|0)!=-1:0)f=5;else a=-1;else f=5;if((f|0)==5)a=0;return a|0}function vq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=(g|0)!=0;if(m)l=0;else l=Wl(f,0)|0;k=(l|0)==0;j=bb[c[f>>2]&31](f,0,128)|0;g=0;while(1){if(!j){n=23;break}i=j+12|0;n=c[i>>2]|0;if((n|0)!=0?(a[n>>0]|0)!=0:0)n=12;else n=7;do if((n|0)==7){n=0;if(!(a[j+22>>0]|0)){if(!k){h=bb[c[l>>2]&31](l,j,4)|0;o=c[h+12>>2]|0;if(o|0?a[o>>0]|0:0){n=12;break}if(!(a[h+22>>0]|0))n=12}}else n=12}while(0);if((n|0)==12){n=0;h=g+1|0;if(g){if((eq(b,d,82308)|0)==-1){g=-1;break}if((dq(b,d)|0)==-1){g=-1;break}}else{if((dq(b,d)|0)==-1){g=-1;break}if((eq(b,d,e)|0)==-1){g=-1;break}if((eq(b,d,82305)|0)==-1){g=-1;break}c[42032]=(c[42032]|0)+1}if((pq(b,d,c[j+8>>2]|0)|0)==-1){g=-1;break}if((eq(b,d,82311)|0)==-1){g=-1;break}if((pq(b,d,c[i>>2]|0)|0)==-1){g=-1;break}else g=h}j=bb[c[f>>2]&31](f,j,8)|0}do if((n|0)==23){if((g|0)>0){c[42032]=(c[42032]|0)+-1;if((g|0)!=1){if((eq(b,d,134901)|0)==-1){g=-1;break}if((dq(b,d)|0)==-1){g=-1;break}}g=(eq(b,d,82340)|0)==-1;if(m|g){g=g<<31>>31;break}}else if(m){g=0;break}Wl(f,l)|0;g=0}while(0);return g|0}function wq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(c[b>>2]&3){case 0:{g=19;break}case 1:{g=20;break}case 3:case 2:{g=21;break}default:{}}b=ab[g&63](a,b)|0;if(!b)b=-1;else{Aq(a,b,d,e,g,f);b=0}return b|0}function xq(a,b){a=a|0;b=b|0;if((ro(b)|0)!=(a|0))b=en(a,b,0)|0;return b|0}function yq(a,b){a=a|0;b=b|0;if((ro(b)|0)!=(a|0))b=io(a,b,0)|0;return b|0}function zq(a,b){a=a|0;b=b|0;return a|0}function Aq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=(f|0)!=0;if(h)ib[c&127](a,b,d);g=Jp(a)|0;while(1){if(!g)break;i=ab[e&63](g,b)|0;if(i|0)Aq(g,i,c,d,e,f);g=Kp(g)|0}if(!h)ib[c&127](a,b,d);return}function Bq(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1200|0;r=t+800|0;g=t;c[42035]=0;c[42036]=-2;f=r;i=200;n=g;p=0;q=0;o=r;a:while(1){b[o>>1]=p;if((f+(i<<1)+-2|0)>>>0>o>>>0)k=i;else{m=o-f>>1;e=m+1|0;if(i>>>0>9999){s=75;break}k=i<<1;k=k>>>0<1e4?k:1e4;h=ZI(k*6|3)|0;if(h){TN(h|0,f|0,e<<1|0)|0;i=h+(k>>>1<<2)|0;TN(i|0,n|0,e<<2|0)|0;if((f|0)==(r|0)){e=0;f=h}else{_I(f);e=0;f=h}}else{e=4;i=n}j=(e|0)==0;h=f+(m<<1)|0;switch((j?((f+(k<<1)+-2|0)>>>0>h>>>0?0:9):e)&15){case 9:{e=1;s=76;break a}case 4:{s=75;break a}case 0:{g=j?i+(m<<2)|0:g;n=i;o=j?h:o;break}default:{e=0;break a}}}if((p|0)==6){e=0;s=76;break}e=a[82344+p>>0]|0;j=e<<24>>24;do if(e<<24>>24!=-18){h=c[42036]|0;if((h|0)==-2){h=hp()|0;c[42036]=h}if((h|0)>=1)if(h>>>0<269)i=d[82424+h>>0]|0;else i=2;else{c[42036]=0;i=0}h=i+j|0;if(h>>>0<=59?(i|0)==(d[82693+h>>0]|0):0){p=a[82753+h>>0]|0;e=p<<24>>24;if(p<<24>>24<1){h=0-e|0;s=23;break}else{c[42036]=-2;g=g+4|0;c[g>>2]=c[42037];j=(q|0)==0?0:q+-1|0;h=o;break}}else s=22}else s=22;while(0);if((s|0)==22){s=0;p=a[82813+p>>0]|0;h=p&255;if(!(p<<24>>24)){h=c[42036]|0;b:do switch(q|0){case 0:{c[42035]=(c[42035]|0)+1;Cp(125369);h=o;break}case 3:if((h|0)<1)if(!h){e=1;s=76;break a}else{h=o;break b}else{c[42036]=-2;h=o;break b}default:h=o}while(0);while(1){if(e<<24>>24==18)break;if((h|0)==(f|0)){e=1;s=76;break a}e=h+-2|0;g=g+-4|0;h=e;e=a[82344+(b[e>>1]|0)>>0]|0}g=g+4|0;c[g>>2]=c[42037];e=1;j=3}else s=23}do if((s|0)==23){s=0;i=d[82893+h>>0]|0;e=c[g+(1-i<<2)>>2]|0;c:do switch(h|0){case 2:{Cq();Dq();break}case 3:{if(c[42038]|0){Cq();Dq();ln(c[42038]|0)|0;c[41987]=0;c[42038]=0}break}case 6:{Eq(c[g>>2]|0,c[g+-4>>2]|0,c[g+-8>>2]|0);break}case 7:{e=c[g>>2]|0;break}case 8:{e=0;break}case 9:{e=1;break}case 10:{e=0;break}case 11:{e=0;break}case 12:{e=1;break}case 21:if(!(c[g+-4>>2]|0)){Gq();break c}else{Fq();break c}case 24:{Hq();break}case 25:{Hq();break}case 26:{e=1;break}case 27:{e=0;break}case 30:{Iq(c[g>>2]|0,0,0);break}case 31:{Iq(c[g+-8>>2]|0,c[g>>2]|0,0);break}case 32:{Iq(c[g+-16>>2]|0,c[g+-8>>2]|0,c[g>>2]|0);break}case 33:{Jq(c[g+-8>>2]|0,c[g+-4>>2]|0);break}case 34:{Jq(258,0);break}case 35:{e=258;break}case 36:{e=259;break}case 37:{e=260;break}case 38:{e=c[g+-4>>2]|0;break}case 39:{e=0;break}case 48:{Kq(c[g+-8>>2]|0,c[g>>2]|0);break}case 49:{Kq(c[g>>2]|0,0);break}case 51:{Lq(c[g>>2]|0);break}case 52:{Mq();break}case 53:{e=c[g>>2]|0;break}case 54:{e=0;break}case 55:{e=0;break}case 59:{e=c[g>>2]|0;break}case 60:{e=c[g>>2]|0;break}case 61:{e=c[g>>2]|0;break}case 62:{e=Nq(c[g+-8>>2]|0,c[g>>2]|0)|0;break}default:{}}while(0);i=0-i|0;p=g+(i<<2)|0;i=o+(i<<1)|0;g=p+4|0;c[p+4>>2]=e;e=(d[82956+h>>0]|0)+-24|0;p=b[i>>1]|0;h=p+(a[83019+e>>0]|0)|0;if(h>>>0<60?(d[82693+h>>0]|0)==(p|0):0){e=a[82753+h>>0]|0;j=q;h=i;break}e=a[83054+e>>0]|0;j=q;h=i}while(0);i=k;p=e;q=j;o=h+2|0}if((s|0)==75){Cp(125382);e=2;s=76}if((s|0)==76)if((f|0)!=(r|0))_I(f);l=t;return e|0}function Cq(){var a=0,b=0;a=c[42039]|0;while(1){if(!a)break;Vq(a+8|0);Vq((c[42039]|0)+24|0);Vq((c[42039]|0)+16|0);b=Oq(c[42039]|0)|0;c[42039]=b;a=b}return}function Dq(){Dp();Mn(c[42038]|0);return}function Eq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[42038]|0;if(!f){a[168160]=d&1|(e&255)<<1&2|a[168160]&-12|8;f=c[42041]|0;a[g>>0]=a[168160]|0;a[g+1>>0]=a[168161]|0;a[g+2>>0]=a[168162]|0;a[g+3>>0]=a[168163]|0;f=gn(b,g,f)|0;c[42038]=f}c[41987]=f;c[42039]=Pq(c[42039]|0,f)|0;bp(0,b)|0;l=h;return}function Fq(){var b=0,d=0,e=0,f=0,g=0,h=0;Uq(2);e=c[42039]|0;f=a[83089]|0;h=0;b=e+24|0;while(1){d=c[b>>2]|0;if(!d)break;if(((c[d>>2]|0)==267?(g=c[d+4>>2]|0,(a[g>>0]|0)==f<<24>>24):0)?(xJ(g,83089)|0)==0:0)b=c[d+8>>2]|0;else b=h;h=b;b=d+12|0}b=e+16|0;a:while(1){e=c[b>>2]|0;b=e+12|0;if(!(c[b>>2]|0))break;d=e+4|0;if((c[e>>2]|0)==262){e=c[d>>2]|0;d=co(e)|0;while(1){if(!d)continue a;g=io(c[c[42039]>>2]|0,d,0)|0;ar(g,0,c[b>>2]|0,h);d=eo(e,d)|0}}else while(1){d=c[d>>2]|0;if(!d)continue a;ar(c[d+4>>2]|0,c[d+8>>2]|0,c[b>>2]|0,h);d=d+12|0}}Vq((c[42039]|0)+8|0);Vq((c[42039]|0)+16|0);Vq((c[42039]|0)+24|0);c[(c[42039]|0)+4>>2]=0;return}function Gq(){var a=0;Uq(1);a=(c[42039]|0)+8|0;while(1){a=c[a>>2]|0;if(!a)break;$q(c[a+4>>2]|0);a=a+12|0}Vq((c[42039]|0)+8|0);Vq((c[42039]|0)+24|0);Vq((c[42039]|0)+16|0);c[(c[42039]|0)+4>>2]=0;return}function Hq(){var a=0,b=0;a=c[42039]|0;b=c[a+8>>2]|0;if(!b){b=c[a+4>>2]|0;if(!b)b=0;else{b=_q(b)|0;a=c[42039]|0}c[a+4>>2]=0}else{b=Zq(b)|0;a=c[42039]|0;c[a+12>>2]=0;c[a+8>>2]=0}if(b|0)Rq(a+16|0,b);return}function Iq(a,b,d){a=a|0;b=b|0;d=d|0;if(d)b=Xq(b,d)|0;d=Yq(no(c[c[42039]>>2]|0,a,1)|0,b)|0;Rq((c[42039]|0)+8|0,d);bp(c[42038]|0,a)|0;return}function Jq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(d|0)Tq();d=(c[42039]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;if(!(c[d+8>>2]|0))Tq();d=d+12|0}g=(b|0)==260?2:(b|0)==259&1;Uq(g);b=c[42039]|0;d=b+24|0;while(1){f=c[d>>2]|0;if(!f)break;do if((c[f>>2]|0)!=267){d=c[f+4>>2]|0;e=c[b>>2]|0;if(!((a[d+21>>0]|0)!=0&(e|0)==(c[42038]|0))){d=ym(e,g,c[d+8>>2]|0,c[f+8>>2]|0)|0;b=c[42039]|0;if((c[b>>2]|0)!=(c[42038]|0))break}a[d+22>>0]=1}while(0);d=f+12|0}Vq(b+24|0);return}function Kq(a,b){a=a|0;b=b|0;b=Qq(a,b)|0;Rq((c[42039]|0)+24|0,b);return}function Lq(a){a=a|0;var b=0;b=c[42039]|0;c[42039]=Pq(b,Ip(c[b>>2]|0,a,1)|0)|0;bp(c[42038]|0,a)|0;return}function Mq(){var a=0,b=0;a=c[42039]|0;b=c[a>>2]|0;a=Oq(a)|0;c[42039]=a;c[a+4>>2]=b;return}function Nq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+1024|0;f=g;d=rJ(a)|0;d=d+1+(rJ(b)|0)|0;if(d>>>0<1025)d=f;else d=ZI(d)|0;xK(d,a)|0;IL(d,b)|0;e=$o(c[42038]|0,d)|0;bp(c[42038]|0,a)|0;bp(c[42038]|0,b)|0;if((d|0)!=(f|0))_I(d);l=g;return e|0}function Oq(a){a=a|0;var b=0;b=c[(c[42039]|0)+32>>2]|0;Zn(c[42038]|0,a);return b|0}function Pq(a,b){a=a|0;b=b|0;var d=0;d=Yn(c[42038]|0,36)|0;c[d+32>>2]=a;c[d>>2]=b;return d|0}function Qq(a,b){a=a|0;b=b|0;return Sq(267,a,b)|0}function Rq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=c[d>>2]|0;if(e|0)c[e+12>>2]=b;c[d>>2]=b;if(!(c[a>>2]|0))c[a>>2]=b;return}function Sq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Yn(c[42038]|0,16)|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;return e|0}function Tq(){var a=0;a=l;l=l+16|0;_l(0,83093,a)|0;l=a;return}\nfunction DI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+112|0;E=H+80|0;D=H+64|0;C=H+48|0;G=4;F=ZI(40)|0;c[F>>2]=0;w=H+32|0;x=H+16|0;y=H;A=H+96|0;G=RN(169980,1,F|0,G|0)|0;F=z;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1)e=z;else e=0;a:while(1){if(e|0){e=-2;break}g=a+4|0;o=0;fa(94,c[g>>2]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}c[42534]=0;c[42535]=0;o=0;fa(95,c[g>>2]<<1|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}m=(c[42537]|0)/2|0;c[42538]=m;c[42539]=m+-1;m=c[g>>2]|0;g=c[a>>2]|0;e=0;f=-1;i=t;while(1){if((e|0)>=(m|0))break;I=+h[g+(e<<4)>>3];v=i>I;u=v?e:f;e=e+1|0;f=u;i=v?I:i}v=g+(f<<4)|0;c[x>>2]=c[v>>2];c[x+4>>2]=c[v+4>>2];c[x+8>>2]=c[v+8>>2];c[x+12>>2]=c[v+12>>2];v=g+(((f|0)==0?m:f)+-1<<4)|0;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=g+(((f|0)==(m+-1|0)?0:f+1|0)<<4)|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];I=+h[x>>3];if((+h[w>>3]==I?I==+h[y>>3]:0)?+h[y+8>>3]>+h[x+8>>3]:0)v=15;else v=12;b:do if((v|0)==12){v=0;o=0;e=aa(17,w|0,x|0,y|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,G|0,F|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((e|0)==1){g=c[42541]|0;e=c[42542]|0;f=0;while(1){if((f|0)>=(m|0))break b;j=c[a>>2]|0;if(!(((f|0)>0?(B=f+-1|0,+h[j+(f<<4)>>3]==+h[j+(B<<4)>>3]):0)?+h[j+(f<<4)+8>>3]==+h[j+(B<<4)+8>>3]:0)){u=c[42534]|0;c[g+(u<<3)>>2]=j+(f<<4);c[g+(u<<3)+4>>2]=g+(((u|0)%(m|0)|0)<<3);c[e+(u<<2)>>2]=g+(u<<3);c[42534]=u+1}f=f+1|0}}else v=15}while(0);c:do if((v|0)==15){v=0;j=c[42541]|0;e=c[42542]|0;g=m;while(1){f=g+-1|0;if((g|0)<=0)break c;k=c[a>>2]|0;if(((g|0)<(m|0)?+h[k+(f<<4)>>3]==+h[k+(g<<4)>>3]:0)?+h[k+(f<<4)+8>>3]==+h[k+(g<<4)+8>>3]:0){g=f;continue}g=c[42534]|0;c[j+(g<<3)>>2]=k+(f<<4);c[j+(g<<3)+4>>2]=j+(((g|0)%(m|0)|0)<<3);c[e+(g<<2)>>2]=j+(g<<3);c[42534]=g+1;g=f}}while(0);o=0;ga(27,e|0,c[42534]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}j=0;e=c[42535]|0;d:while(1){if((j|0)>=(e|0)){s=0;break}k=j+1|0;g=k;while(1){if((g|0)>=(e|0)){j=k;continue d}o=0;ga(28,j|0,g|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue a}g=g+1|0;e=c[42535]|0}}while(1){if((s|0)>=(e|0))break;o=0;f=$(39,s|0,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;s=s+1|0}if((s|0)==(e|0)){e=c[13918]|0;o=0;c[C>>2]=125503;c[C+4>>2]=192;c[C+8>>2]=125514;aa(13,e|0,125484,C|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=41;break}}u=b+16|0;k=0;while(1){if((k|0)>=(e|0))break;o=0;f=$(39,k|0,u|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}if(f|0)break;k=k+1|0}if((k|0)==(e|0)){e=c[13918]|0;o=0;c[D>>2]=125503;c[D+4>>2]=200;c[D+8>>2]=125547;aa(13,e|0,125484,D|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=48;break}}o=0;e=$(40,s|0,k|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=SN(c[f>>2]|0,G|0,F|0)|0;if(!g)Ua(f|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}if(!e){e=c[13918]|0;o=0;c[E>>2]=125503;c[E+4>>2]=207;c[E+8>>2]=125585;aa(13,e|0,125484,E|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}o=0;fa(96,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=53;break}}if((s|0)==(k|0)){o=0;fa(96,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=SN(c[e>>2]|0,G|0,F|0)|0;if(!f)Ua(e|0,p|0);z=p}else f=-1;if((f|0)==1){e=z;continue}else{v=56;break}}c[A>>2]=b;c[A+4>>2]=0;f=A+8|0;c[f>>2]=u;c[A+12>>2]=0;o=0;ga(29,1,A|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue}c[42540]=c[42538];q=s;e:while(1){if((q|0)==-1){g=f;e=0;break}r=c[42544]|0;c[r+(q*52|0)>>2]=2;e=0;while(1){if((e|0)>=3){v=65;break}v=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(v|0?(c[v>>2]|0)==1:0){v=68;break}e=e+1|0}if((v|0)==65){v=0;if((e|0)==3){e=c[42536]|0;k=c[e+(c[42539]<<2)>>2]|0;o=0;e=aa(17,u|0,c[c[e+(c[42538]<<2)>>2]>>2]|0,c[k>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?f:k;j=j?k:f}else v=68}if((v|0)==68){v=0;k=c[r+(q*52|0)+4+(e<<4)>>2]|0;m=c[r+(q*52|0)+4+(e<<4)+4>>2]|0;o=0;e=aa(17,c[k>>2]|0,c[c[r+(q*52|0)+4+(((e+1|0)%3|0)<<4)+4>>2]>>2]|0,c[m>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1){e=z;continue a}j=(e|0)==1;n=j?k:m;j=j?m:k}do if((q|0)==(s|0)){o=0;ga(29,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(29,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}e=0}else{m=c[42536]|0;if((c[m+(c[42538]<<2)>>2]|0)!=(n|0)?(c[m+(c[42539]<<2)>>2]|0)!=(n|0):0){o=0;j=_(29,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(30,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(29,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((j|0)<=(c[42540]|0)){e=0;break}c[42540]=j;e=0;break}o=0;k=_(29,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(30,1,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}o=0;ga(29,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=SN(c[e>>2]|0,G|0,F|0)|0;if(!g)Ua(e|0,p|0);z=p}else g=-1;if((g|0)==1){e=z;continue a}if((k|0)>=(c[42540]|0)){e=0;break}c[42540]=k;e=0}while(0);while(1){if((e|0)>=3){q=-1;continue e}g=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(g|0?(c[g>>2]|0)==1:0)break;e=e+1|0}q=(g-(c[42544]|0)|0)/52|0}while(1){if(!g)break;g=c[g+4>>2]|0;e=e+1|0}o=0;fa(96,e|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){j=SN(c[g>>2]|0,G|0,F|0)|0;if(!j)Ua(g|0,p|0);z=p}else j=-1;if((j|0)==1)e=z;else{v=94;break}}if((v|0)==41)e=-1;else if((v|0)==48)e=-1;else if((v|0)==53){c[d+4>>2]=2;e=c[42543]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==56){c[d+4>>2]=2;e=c[42543]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];F=e+16|0;c[F>>2]=c[u>>2];c[F+4>>2]=c[u+4>>2];c[F+8>>2]=c[u+8>>2];c[F+12>>2]=c[u+12>>2];c[d>>2]=e;e=0}else if((v|0)==94){c[d+4>>2]=e;g=c[42543]|0;while(1){e=e+-1|0;if(!f)break;F=g+(e<<4)|0;E=c[f>>2]|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];f=c[f+4>>2]|0}c[d>>2]=g;e=0}_I(G|0);l=H;return e|0}function EI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+64|0;e=h+48|0;g=h+32|0;f=h+16|0;d=h;if((c[42547]|0)<(a|0)){b=c[42541]|0;if(!b){g=ZI(a<<3)|0;c[42541]=g;if(!g){g=c[13918]|0;c[d>>2]=125503;c[d+4>>2]=523;c[d+8>>2]=125753;zL(g,125484,d)|0;Ua(169980,1)}g=ZI(a<<2)|0;c[42542]=g;if(!g){g=c[13918]|0;c[f>>2]=125503;c[f+4>>2]=527;c[f+8>>2]=125772;zL(g,125484,f)|0;Ua(169980,1)}}else{f=aJ(b,a<<3)|0;c[42541]=f;if(!f){f=c[13918]|0;c[g>>2]=125503;c[g+4>>2]=533;c[g+8>>2]=125792;zL(f,125484,g)|0;Ua(169980,1)}g=aJ(c[42542]|0,a<<2)|0;c[42542]=g;if(!g){g=c[13918]|0;c[e>>2]=125503;c[e+4>>2]=539;c[e+8>>2]=125812;zL(g,125484,e)|0;Ua(169980,1)}}c[42547]=a}l=h;return}function FI(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[42537]|0)<(a|0)){b=c[42536]|0;if(!b){e=ZI(a<<2)|0;c[42536]=e;if(!e){e=c[13918]|0;c[d>>2]=125503;c[d+4>>2]=573;c[d+8>>2]=125708;zL(e,125484,d)|0;Ua(169980,1)}}else{d=aJ(b,a<<2)|0;c[42536]=d;if(!d){d=c[13918]|0;c[e>>2]=125503;c[e+4>>2]=580;c[e+8>>2]=125730;zL(d,125484,e)|0;Ua(169980,1)}}c[42537]=a}l=f;return}function GI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b>>3];d=(+h[c>>3]-e)*(+h[a+8>>3]-d)-(+h[a>>3]-e)*(+h[c+8>>3]-d);return (d>0.0?1:d<0.0?2:3)|0}function HI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a:while(1){if((b|0)>3)e=0;else{b=9;break}while(1){if((e|0)>=(b|0)){b=8;break a}f=e+1|0;d=(f|0)%(b|0)|0;g=(e+2|0)%(b|0)|0;if(!(PI(e,g,a,b)|0))e=f;else break}QI(c[a+(e<<2)>>2]|0,c[a+(d<<2)>>2]|0,c[a+(g<<2)>>2]|0);b=b+-1|0;while(1){if((d|0)>=(b|0))continue a;g=d+1|0;c[a+(d<<2)>>2]=c[a+(g<<2)>>2];d=g}}if((b|0)==8){a=c[13918]|0;c[h>>2]=125503;c[h+4>>2]=324;c[h+8>>2]=125648;zL(a,125484,h)|0}else if((b|0)==9)QI(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0);l=i;return}function II(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=c[42544]|0;j=i+(a*52|0)|0;k=i+(b*52|0)|0;g=0;while(1){if((g|0)==3)break;l=i+(a*52|0)+4+(g<<4)|0;m=i+(a*52|0)+4+(g<<4)+4|0;n=i+(a*52|0)+4+(g<<4)+12|0;f=0;while(1){if((f|0)==3)break;o=c[c[l>>2]>>2]|0;h=c[c[i+(b*52|0)+4+(f<<4)>>2]>>2]|0;if((o|0)==(h|0)){d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;if((c[c[m>>2]>>2]|0)==(d|0))e=10;else e=8}else{d=c[c[i+(b*52|0)+4+(f<<4)+4>>2]>>2]|0;e=8}if(((e|0)==8?(e=0,(o|0)==(d|0)):0)?(c[c[m>>2]>>2]|0)==(h|0):0)e=10;if((e|0)==10){c[n>>2]=k;c[i+(b*52|0)+4+(f<<4)+12>>2]=j}f=f+1|0}g=g+1|0}return}function JI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[42544]|0;d=0;e=0;while(1){if((e|0)==3)break;d=d+((GI(c[c[f+(a*52|0)+4+(e<<4)>>2]>>2]|0,c[c[f+(a*52|0)+4+(e<<4)+4>>2]>>2]|0,b)|0)!=2&1)|0;e=e+1|0}return ((d|0)==3|(d|0)==0)&1|0}function KI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[42544]|0;e=d+(a*52|0)|0;a:do if(!(c[e>>2]|0)){c[e>>2]=1;if((a|0)==(b|0))d=1;else{f=0;while(1){if((f|0)>=3)break;e=c[d+(a*52|0)+4+(f<<4)+12>>2]|0;if(e){if(KI((e-d|0)/52|0,b)|0){d=1;break a}d=c[42544]|0}f=f+1|0}c[d+(a*52|0)>>2]=0;d=0}}else d=0;while(0);return d|0}function LI(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[42545]|0)<(a|0)){b=c[42543]|0;if(!b){e=ZI(a<<4)|0;c[42543]=e;if(!e){e=c[13918]|0;c[d>>2]=125503;c[d+4>>2]=593;c[d+8>>2]=125611;zL(e,125484,d)|0;Ua(169980,1)}}else{d=aJ(b,a<<4)|0;c[42543]=d;if(!d){d=c[13918]|0;c[e>>2]=125503;c[e+4>>2]=599;c[e+8>>2]=125629;zL(d,125484,e)|0;Ua(169980,1)}}c[42545]=a}l=f;return}function MI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[42539]|0;e=c[42538]|0;f=(d|0)>=(e|0);if((a|0)==1)if(f){c[b+4>>2]=c[(c[42536]|0)+(e<<2)>>2];a=170152;d=-1}else{a=170152;d=-1}else if(f){c[b+4>>2]=c[(c[42536]|0)+(d<<2)>>2];a=170156;d=1}else{a=170156;d=1}f=(c[a>>2]|0)+d|0;c[a>>2]=f;c[(c[42536]|0)+(f<<2)>>2]=b;return}function NI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[42540]|0;g=c[42536]|0;b=c[42538]|0;while(1){if((b|0)>=(f|0)){e=4;break}d=b+1|0;if((GI(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==1)break;else b=d}a:do if((e|0)==4){b=c[42539]|0;while(1){if((b|0)<=(f|0)){b=f;break a}d=b+-1|0;if((GI(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==2)break;else b=d}}while(0);return b|0}function OI(a,b){a=a|0;b=b|0;c[((a|0)==1?170156:170152)>>2]=b;return}function PI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[c[d+(((a+-1+e|0)%(e|0)|0)<<2)>>2]>>2]|0;i=c[c[d+(a<<2)>>2]>>2]|0;g=c[c[d+(((a+1|0)%(e|0)|0)<<2)>>2]>>2]|0;k=(GI(f,i,g)|0)==1;j=c[c[d+(b<<2)>>2]>>2]|0;if(k)if((GI(i,j,f)|0)==1){f=GI(j,i,g)|0;g=1;h=5}else f=0;else{f=GI(i,j,g)|0;g=2;h=5}a:do if((h|0)==5)if((f|0)==(g|0)){f=0;while(1){if((f|0)>=(e|0)){f=1;break a}g=f;f=f+1|0;h=(f|0)%(e|0)|0;if((h|0)==(b|0)|((g|0)==(b|0)|((g|0)==(a|0)|(h|0)==(a|0))))continue;if(SI(i,j,c[c[d+(g<<2)>>2]>>2]|0,c[c[d+(h<<2)>>2]>>2]|0)|0){f=0;break}}}else f=0;while(0);return f|0}function QI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[42535]|0;f=c[42546]|0;if((e|0)<(f|0))h=e;else{RI(f+20|0);h=c[42535]|0}g=c[42544]|0;c[42535]=h+1;f=g+(h*52|0)|0;c[f>>2]=0;c[g+(h*52|0)+4>>2]=a;c[g+(h*52|0)+8>>2]=b;c[g+(h*52|0)+16>>2]=0;c[g+(h*52|0)+20>>2]=b;c[g+(h*52|0)+24>>2]=d;c[g+(h*52|0)+32>>2]=0;c[g+(h*52|0)+36>>2]=d;c[g+(h*52|0)+40>>2]=a;c[g+(h*52|0)+48>>2]=0;e=0;while(1){if((e|0)==3)break;c[g+(h*52|0)+4+(e<<4)+8>>2]=f;e=e+1|0}return}function RI(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c[42546]|0)<(a|0)){b=c[42544]|0;if(!b){e=ZI(a*52|0)|0;c[42544]=e;if(!e){e=c[13918]|0;c[d>>2]=125503;c[d+4>>2]=552;c[d+8>>2]=125669;zL(e,125484,d)|0;Ua(169980,1)}}else{d=aJ(b,a*52|0)|0;c[42544]=d;if(!d){d=c[13918]|0;c[e>>2]=125503;c[e+4>>2]=558;c[e+8>>2]=125688;zL(d,125484,e)|0;Ua(169980,1)}}c[42546]=a}l=f;return}function SI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=GI(a,b,c)|0;if((((f|0)!=3?(g=GI(a,b,d)|0,(g|0)!=3):0)?(h=GI(c,d,a)|0,(h|0)!=3):0)?(e=GI(c,d,b)|0,(e|0)!=3):0)return ((f|0)==1^(g|0)==1)&((h|0)==1^(e|0)==1)&1|0;if(((TI(a,b,c)|0)==0?(TI(a,b,d)|0)==0:0)?(TI(c,d,a)|0)==0:0)return (TI(c,d,b)|0)!=0|0;return 1}function TI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;e=+h[a>>3];g=+h[b>>3]-e;f=+h[a+8>>3];d=+h[b+8>>3]-f;e=+h[c>>3]-e;f=+h[c+8>>3]-f;if((GI(a,b,c)|0)==3?f*d+e*g>=0.0:0)a=f*f+e*e<=d*d+g*g&1;else a=0;return a|0}function UI(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;d=+h[a+24>>3];a:do if(d<1.0e-07&d>-1.0e-07)a=VI(a,b)|0;else{g=+h[a+16>>3]/(d*3.0);f=+h[a+8>>3]/d;e=g*g;d=g*2.0*e-g*f+ +h[a>>3]/d;e=f*.3333333333333333-e;e=e*e*4.0*e;f=d*d+e;if(!(f<0.0)){i=(+C(+f)-d)*.5;e=+JJ(i);d=+JJ(-d-i)+e;h[b>>3]=d;if(f>0.0)a=1;else{d=d*-.5;h[b+16>>3]=d;a=1;c=7}}else{i=+K(+(+C(+-f)),+-d);d=+JJ(+C(+-e)*.5)*2.0;h[b>>3]=d*+E(+(i*.3333333333333333));h[b+8>>3]=+E(+((i+6.283185307179586)*.3333333333333333))*d;d=+E(+((i+-6.283185307179586)*.3333333333333333))*d;a=2;c=7}if((c|0)==7){h[b+(a<<3)>>3]=d;a=3}c=0;while(1){if((c|0)>=(a|0))break a;j=b+(c<<3)|0;h[j>>3]=+h[j>>3]-g;c=c+1|0}}while(0);return a|0}function VI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+16>>3];do if(!(c<1.0e-07&c>-1.0e-07)){d=+h[a+8>>3]/(c*2.0);c=d*d-+h[a>>3]/c;if(!(c<0.0))if(c==0.0){h[b>>3]=-d;a=1;break}else{c=+C(+c)-d;h[b>>3]=c;h[b+8>>3]=d*-2.0-c;a=2;break}else a=0}else a=WI(a,b)|0;while(0);return a|0}function WI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a+8>>3];c=+h[a>>3];if(d<1.0e-07&d>-1.0e-07)a=c<1.0e-07&c>-1.0e-07?4:0;else{h[b>>3]=-c/d;a=1}return a|0}function XI(a){a=a|0;_I(c[a>>2]|0);_I(a);return}function YI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[a+4>>2]|0;i=(e*3|0)+-2|0;d=c[42549]|0;if((i|0)>(c[42548]|0)){if(!d)d=ZI(i<<4)|0;else d=aJ(d,i<<4)|0;c[42549]=d;c[42548]=i;h=d;g=d}else{h=d;g=d}f=c[a>>2]|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];UN(h+16|0,f|0,16)|0;e=e+-1|0;d=1;a=2;while(1){if((d|0)>=(e|0))break;j=h+(a+2<<4)|0;k=h+(a+1<<4)|0;m=h+(a<<4)|0;l=f+(d<<4)|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];UN(k|0,l|0,16)|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];d=d+1|0;a=a+3|0}l=h+(a<<4)|0;m=f+(d<<4)|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];UN(h+(a+1<<4)|0,m|0,16)|0;c[b+4>>2]=i;c[b>>2]=g;return}function ZI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+16|0;p=x;do if(a>>>0<245){m=a>>>0<11?16:a+11&-8;a=m>>>3;o=c[42550]|0;d=o>>>a;if(d&3|0){b=(d&1^1)+a|0;a=170240+(b<<1<<2)|0;d=a+8|0;e=c[d>>2]|0;f=e+8|0;g=c[f>>2]|0;if((g|0)==(a|0))c[42550]=o&~(1<<b);else{c[g+12>>2]=a;c[d>>2]=g}w=b<<3;c[e+4>>2]=w|3;w=e+w+4|0;c[w>>2]=c[w>>2]|1;w=f;l=x;return w|0}n=c[42552]|0;if(m>>>0>n>>>0){if(d|0){b=2<<a;b=d<<a&(b|0-b);b=(b&0-b)+-1|0;i=b>>>12&16;b=b>>>i;d=b>>>5&8;b=b>>>d;g=b>>>2&4;b=b>>>g;a=b>>>1&2;b=b>>>a;e=b>>>1&1;e=(d|i|g|a|e)+(b>>>e)|0;b=170240+(e<<1<<2)|0;a=b+8|0;g=c[a>>2]|0;i=g+8|0;d=c[i>>2]|0;if((d|0)==(b|0)){a=o&~(1<<e);c[42550]=a}else{c[d+12>>2]=b;c[a>>2]=d;a=o}w=e<<3;h=w-m|0;c[g+4>>2]=m|3;f=g+m|0;c[f+4>>2]=h|1;c[g+w>>2]=h;if(n|0){e=c[42555]|0;b=n>>>3;d=170240+(b<<1<<2)|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[42552]=h;c[42555]=f;w=i;l=x;return w|0}j=c[42551]|0;if(j){d=(j&0-j)+-1|0;i=d>>>12&16;d=d>>>i;h=d>>>5&8;d=d>>>h;k=d>>>2&4;d=d>>>k;e=d>>>1&2;d=d>>>e;a=d>>>1&1;a=c[170504+((h|i|k|e|a)+(d>>>a)<<2)>>2]|0;d=(c[a+4>>2]&-8)-m|0;e=c[a+16+(((c[a+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){k=a;h=d}else{do{i=(c[e+4>>2]&-8)-m|0;k=i>>>0<d>>>0;d=k?i:d;a=k?e:a;e=c[e+16+(((c[e+16>>2]|0)==0&1)<<2)>>2]|0}while((e|0)!=0);k=a;h=d}i=k+m|0;if(i>>>0>k>>>0){f=c[k+24>>2]|0;b=c[k+12>>2]|0;do if((b|0)==(k|0)){a=k+20|0;b=c[a>>2]|0;if(!b){a=k+16|0;b=c[a>>2]|0;if(!b){d=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[k+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);do if(f|0){b=c[k+28>>2]|0;a=170504+(b<<2)|0;if((k|0)==(c[a>>2]|0)){c[a>>2]=d;if(!d){c[42551]=j&~(1<<b);break}}else{c[f+16+(((c[f+16>>2]|0)!=(k|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=f;b=c[k+16>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}b=c[k+20>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}while(0);if(h>>>0<16){w=h+m|0;c[k+4>>2]=w|3;w=k+w+4|0;c[w>>2]=c[w>>2]|1}else{c[k+4>>2]=m|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(n|0){e=c[42555]|0;b=n>>>3;d=170240+(b<<1<<2)|0;b=1<<b;if(!(o&b)){c[42550]=o|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=e;c[b+12>>2]=e;c[e+8>>2]=b;c[e+12>>2]=d}c[42552]=h;c[42555]=i}w=k+8|0;l=x;return w|0}else n=m}else n=m}else n=m}else if(a>>>0<=4294967231){a=a+11|0;m=a&-8;k=c[42551]|0;if(k){e=0-m|0;a=a>>>8;if(a)if(m>>>0>16777215)j=31;else{o=(a+1048320|0)>>>16&8;v=a<<o;n=(v+520192|0)>>>16&4;v=v<<n;j=(v+245760|0)>>>16&2;j=14-(n|o|j)+(v<<j>>>15)|0;j=m>>>(j+7|0)&1|j<<1}else j=0;d=c[170504+(j<<2)>>2]|0;a:do if(!d){d=0;a=0;v=57}else{a=0;i=d;h=m<<((j|0)==31?0:25-(j>>>1)|0);d=0;while(1){f=(c[i+4>>2]&-8)-m|0;if(f>>>0<e>>>0)if(!f){e=0;d=i;a=i;v=61;break a}else{a=i;e=f}f=c[i+20>>2]|0;i=c[i+16+(h>>>31<<2)>>2]|0;d=(f|0)==0|(f|0)==(i|0)?d:f;f=(i|0)==0;if(f){v=57;break}else h=h<<((f^1)&1)}}while(0);if((v|0)==57){if((d|0)==0&(a|0)==0){a=2<<j;a=k&(a|0-a);if(!a){n=m;break}o=(a&0-a)+-1|0;i=o>>>12&16;o=o>>>i;h=o>>>5&8;o=o>>>h;j=o>>>2&4;o=o>>>j;n=o>>>1&2;o=o>>>n;d=o>>>1&1;a=0;d=c[170504+((h|i|j|n|d)+(o>>>d)<<2)>>2]|0}if(!d){i=a;h=e}else v=61}if((v|0)==61)while(1){v=0;n=(c[d+4>>2]&-8)-m|0;o=n>>>0<e>>>0;e=o?n:e;a=o?d:a;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){i=a;h=e;break}else v=61}if((i|0)!=0?h>>>0<((c[42552]|0)-m|0)>>>0:0){g=i+m|0;if(g>>>0<=i>>>0){w=0;l=x;return w|0}f=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){a=i+20|0;b=c[a>>2]|0;if(!b){a=i+16|0;b=c[a>>2]|0;if(!b){b=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0}else{w=c[i+8>>2]|0;c[w+12>>2]=b;c[b+8>>2]=w}while(0);do if(f){a=c[i+28>>2]|0;d=170504+(a<<2)|0;if((i|0)==(c[d>>2]|0)){c[d>>2]=b;if(!b){e=k&~(1<<a);c[42551]=e;break}}else{c[f+16+(((c[f+16>>2]|0)!=(i|0)&1)<<2)>>2]=b;if(!b){e=k;break}}c[b+24>>2]=f;a=c[i+16>>2]|0;if(a|0){c[b+16>>2]=a;c[a+24>>2]=b}a=c[i+20>>2]|0;if(a){c[b+20>>2]=a;c[a+24>>2]=b;e=k}else e=k}else e=k;while(0);do if(h>>>0>=16){c[i+4>>2]=m|3;c[g+4>>2]=h|1;c[g+h>>2]=h;b=h>>>3;if(h>>>0<256){d=170240+(b<<1<<2)|0;a=c[42550]|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=g;c[b+12>>2]=g;c[g+8>>2]=b;c[g+12>>2]=d;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;d=170504+(b<<2)|0;c[g+28>>2]=b;a=g+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<<b;if(!(e&a)){c[42551]=e|a;c[d>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=c[d>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(h|0)){v=97;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=96;break}else{a=a<<1;d=b}}if((v|0)==96){c[e>>2]=g;c[g+24>>2]=d;c[g+12>>2]=g;c[g+8>>2]=g;break}else if((v|0)==97){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=g;c[v>>2]=g;c[g+8>>2]=w;c[g+12>>2]=d;c[g+24>>2]=0;break}}else{w=h+m|0;c[i+4>>2]=w|3;w=i+w+4|0;c[w>>2]=c[w>>2]|1}while(0);w=i+8|0;l=x;return w|0}else n=m}else n=m}else n=-1;while(0);d=c[42552]|0;if(d>>>0>=n>>>0){b=d-n|0;a=c[42555]|0;if(b>>>0>15){w=a+n|0;c[42555]=w;c[42552]=b;c[w+4>>2]=b|1;c[a+d>>2]=b;c[a+4>>2]=n|3}else{c[42552]=0;c[42555]=0;c[a+4>>2]=d|3;w=a+d+4|0;c[w>>2]=c[w>>2]|1}w=a+8|0;l=x;return w|0}i=c[42553]|0;if(i>>>0>n>>>0){u=i-n|0;c[42553]=u;w=c[42556]|0;v=w+n|0;c[42556]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}if(!(c[42668]|0)){c[42670]=4096;c[42669]=4096;c[42671]=-1;c[42672]=-1;c[42673]=0;c[42661]=0;c[42668]=p&-16^1431655768;a=4096}else a=c[42670]|0;j=n+48|0;k=n+47|0;h=a+k|0;f=0-a|0;m=h&f;if(m>>>0<=n>>>0){w=0;l=x;return w|0}a=c[42660]|0;if(a|0?(o=c[42658]|0,p=o+m|0,p>>>0<=o>>>0|p>>>0>a>>>0):0){w=0;l=x;return w|0}b:do if(!(c[42661]&4)){d=c[42556]|0;c:do if(d){e=170648;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(s=e+4|0,(a+(c[s>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=h-i&f;if(b>>>0<2147483647){a=WN(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[s>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;v=135;break b}}else{e=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){d=WN(0)|0;if((d|0)!=(-1|0)?(b=d,q=c[42669]|0,r=q+-1|0,b=((r&b|0)==0?0:(r+b&0-q)-b|0)+m|0,q=c[42658]|0,r=b+q|0,b>>>0>n>>>0&b>>>0<2147483647):0){s=c[42660]|0;if(s|0?r>>>0<=q>>>0|r>>>0>s>>>0:0){b=0;break}a=WN(b|0)|0;if((a|0)==(d|0)){h=b;g=d;v=135;break b}else{e=a;v=126}}else b=0}while(0);do if((v|0)==126){d=0-b|0;if(!(j>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;v=135;break b}a=c[42670]|0;a=k-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;v=135;break b}if((WN(a|0)|0)==(-1|0)){WN(d|0)|0;b=0;break}else{h=a+b|0;g=e;v=135;break b}}while(0);c[42661]=c[42661]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?m>>>0<2147483647:0)?(g=WN(m|0)|0,s=WN(0)|0,t=s-g|0,u=t>>>0>(n+40|0)>>>0,!((g|0)==(-1|0)|u^1|g>>>0<s>>>0&((g|0)!=(-1|0)&(s|0)!=(-1|0))^1)):0){h=u?t:b;v=135}if((v|0)==135){b=(c[42658]|0)+h|0;c[42658]=b;if(b>>>0>(c[42659]|0)>>>0)c[42659]=b;j=c[42556]|0;do if(j){b=170648;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){v=143;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((v|0)==143?(c[b+12>>2]&8|0)==0:0)?g>>>0>j>>>0&a>>>0<=j>>>0:0){c[d>>2]=e+h;w=(c[42553]|0)+h|0;u=j+8|0;u=(u&7|0)==0?0:0-u&7;v=j+u|0;u=w-u|0;c[42556]=v;c[42553]=u;c[v+4>>2]=u|1;c[j+w+4>>2]=40;c[42557]=c[42672];break}if(g>>>0<(c[42554]|0)>>>0)c[42554]=g;a=g+h|0;b=170648;while(1){if((c[b>>2]|0)==(a|0)){v=151;break}b=c[b+8>>2]|0;if(!b){a=170648;break}}if((v|0)==151)if(!(c[b+12>>2]&8)){c[b>>2]=g;m=b+4|0;c[m>>2]=(c[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;k=m+n|0;i=b-m-n|0;c[m+4>>2]=n|3;do if((j|0)!=(b|0)){if((c[42555]|0)==(b|0)){w=(c[42552]|0)+i|0;c[42552]=w;c[42555]=k;c[k+4>>2]=w|1;c[k+w>>2]=w;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;d:do if(a>>>0<256){a=c[b+8>>2]|0;d=c[b+12>>2]|0;if((d|0)==(a|0)){c[42550]=c[42550]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}else{g=c[b+24>>2]|0;a=c[b+12>>2]|0;do if((a|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{w=c[b+8>>2]|0;c[w+12>>2]=a;c[a+8>>2]=w}while(0);if(!g)break;d=c[b+28>>2]|0;e=170504+(d<<2)|0;do if((c[e>>2]|0)!=(b|0)){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{c[e>>2]=a;if(a|0)break;c[42551]=c[42551]&~(1<<d);break d}while(0);c[a+24>>2]=g;d=b+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(!d)break;c[a+20>>2]=d;c[d+24>>2]=a}while(0);b=b+h|0;f=h+i|0}else f=i;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[k+4>>2]=f|1;c[k+f>>2]=f;b=f>>>3;if(f>>>0<256){d=170240+(b<<1<<2)|0;a=c[42550]|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=k;c[b+12>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;b=(w+245760|0)>>>16&2;b=14-(u|v|b)+(w<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=170504+(b<<2)|0;c[k+28>>2]=b;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[42551]|0;d=1<<b;if(!(a&d)){c[42551]=a|d;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){v=192;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=191;break}else{a=a<<1;d=b}}if((v|0)==191){c[e>>2]=k;c[k+24>>2]=d;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((v|0)==192){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=k;c[v>>2]=k;c[k+8>>2]=w;c[k+12>>2]=d;c[k+24>>2]=0;break}}else{w=(c[42553]|0)+i|0;c[42553]=w;c[42556]=k;c[k+4>>2]=w|1}while(0);w=m+8|0;l=x;return w|0}else a=170648;while(1){b=c[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(c[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=c[a+8>>2]|0}f=w+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=j+16|0;a=a>>>0<f>>>0?j:a;b=a+8|0;d=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=d-u|0;c[42556]=v;c[42553]=u;c[v+4>>2]=u|1;c[g+d+4>>2]=40;c[42557]=c[42672];d=a+4|0;c[d>>2]=27;c[b>>2]=c[42662];c[b+4>>2]=c[42663];c[b+8>>2]=c[42664];c[b+12>>2]=c[42665];c[42662]=g;c[42663]=h;c[42665]=0;c[42664]=b;b=a+24|0;do{v=b;b=b+4|0;c[b>>2]=7}while((v+8|0)>>>0<w>>>0);if((a|0)!=(j|0)){g=a-j|0;c[d>>2]=c[d>>2]&-2;c[j+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=170240+(b<<1<<2)|0;a=c[42550]|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=j;c[b+12>>2]=j;c[j+8>>2]=b;c[j+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{v=(b+1048320|0)>>>16&8;w=b<<v;u=(w+520192|0)>>>16&4;w=w<<u;d=(w+245760|0)>>>16&2;d=14-(u|v|d)+(w<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=170504+(d<<2)|0;c[j+28>>2]=d;c[j+20>>2]=0;c[f>>2]=0;b=c[42551]|0;a=1<<d;if(!(b&a)){c[42551]=b|a;c[e>>2]=j;c[j+24>>2]=e;c[j+12>>2]=j;c[j+8>>2]=j;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(g|0)){v=213;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){v=212;break}else{a=a<<1;d=b}}if((v|0)==212){c[e>>2]=j;c[j+24>>2]=d;c[j+12>>2]=j;c[j+8>>2]=j;break}else if((v|0)==213){v=d+8|0;w=c[v>>2]|0;c[w+12>>2]=j;c[v>>2]=j;c[j+8>>2]=w;c[j+12>>2]=d;c[j+24>>2]=0;break}}}else{w=c[42554]|0;if((w|0)==0|g>>>0<w>>>0)c[42554]=g;c[42662]=g;c[42663]=h;c[42665]=0;c[42559]=c[42668];c[42558]=-1;c[42563]=170240;c[42562]=170240;c[42565]=170248;c[42564]=170248;c[42567]=170256;c[42566]=170256;c[42569]=170264;c[42568]=170264;c[42571]=170272;c[42570]=170272;c[42573]=170280;c[42572]=170280;c[42575]=170288;c[42574]=170288;c[42577]=170296;c[42576]=170296;c[42579]=170304;c[42578]=170304;c[42581]=170312;c[42580]=170312;c[42583]=170320;c[42582]=170320;c[42585]=170328;c[42584]=170328;c[42587]=170336;c[42586]=170336;c[42589]=170344;c[42588]=170344;c[42591]=170352;c[42590]=170352;c[42593]=170360;c[42592]=170360;c[42595]=170368;c[42594]=170368;c[42597]=170376;c[42596]=170376;c[42599]=170384;c[42598]=170384;c[42601]=170392;c[42600]=170392;c[42603]=170400;c[42602]=170400;c[42605]=170408;c[42604]=170408;c[42607]=170416;c[42606]=170416;c[42609]=170424;c[42608]=170424;c[42611]=170432;c[42610]=170432;c[42613]=170440;c[42612]=170440;c[42615]=170448;c[42614]=170448;c[42617]=170456;c[42616]=170456;c[42619]=170464;c[42618]=170464;c[42621]=170472;c[42620]=170472;c[42623]=170480;c[42622]=170480;c[42625]=170488;c[42624]=170488;w=h+-40|0;u=g+8|0;u=(u&7|0)==0?0:0-u&7;v=g+u|0;u=w-u|0;c[42556]=v;c[42553]=u;c[v+4>>2]=u|1;c[g+w+4>>2]=40;c[42557]=c[42672]}while(0);b=c[42553]|0;if(b>>>0>n>>>0){u=b-n|0;c[42553]=u;w=c[42556]|0;v=w+n|0;c[42556]=v;c[v+4>>2]=u|1;c[w+4>>2]=n|3;w=w+8|0;l=x;return w|0}}c[(jJ()|0)>>2]=12;w=0;l=x;return w|0}function _I(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=a+-8|0;f=c[42554]|0;a=c[a+-4>>2]|0;b=a&-8;j=d+b|0;do if(!(a&1)){e=c[d>>2]|0;if(!(a&3))return;h=d+(0-e)|0;g=e+b|0;if(h>>>0<f>>>0)return;if((c[42555]|0)==(h|0)){a=j+4|0;b=c[a>>2]|0;if((b&3|0)!=3){i=h;b=g;break}c[42552]=g;c[a>>2]=b&-2;c[h+4>>2]=g|1;c[h+g>>2]=g;return}d=e>>>3;if(e>>>0<256){a=c[h+8>>2]|0;b=c[h+12>>2]|0;if((b|0)==(a|0)){c[42550]=c[42550]&~(1<<d);i=h;b=g;break}else{c[a+12>>2]=b;c[b+8>>2]=a;i=h;b=g;break}}f=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){d=h+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){a=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0}else{i=c[h+8>>2]|0;c[i+12>>2]=a;c[a+8>>2]=i}while(0);if(f){b=c[h+28>>2]|0;d=170504+(b<<2)|0;if((c[d>>2]|0)==(h|0)){c[d>>2]=a;if(!a){c[42551]=c[42551]&~(1<<b);i=h;b=g;break}}else{c[f+16+(((c[f+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a){i=h;b=g;break}}c[a+24>>2]=f;b=h+16|0;d=c[b>>2]|0;if(d|0){c[a+16>>2]=d;c[d+24>>2]=a}b=c[b+4>>2]|0;if(b){c[a+20>>2]=b;c[b+24>>2]=a;i=h;b=g}else{i=h;b=g}}else{i=h;b=g}}else{i=d;h=d}while(0);if(h>>>0>=j>>>0)return;a=j+4|0;e=c[a>>2]|0;if(!(e&1))return;if(!(e&2)){if((c[42556]|0)==(j|0)){j=(c[42553]|0)+b|0;c[42553]=j;c[42556]=i;c[i+4>>2]=j|1;if((i|0)!=(c[42555]|0))return;c[42555]=0;c[42552]=0;return}if((c[42555]|0)==(j|0)){j=(c[42552]|0)+b|0;c[42552]=j;c[42555]=h;c[i+4>>2]=j|1;c[h+j>>2]=j;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){b=c[j+8>>2]|0;a=c[j+12>>2]|0;if((a|0)==(b|0)){c[42550]=c[42550]&~(1<<d);break}else{c[b+12>>2]=a;c[a+8>>2]=b;break}}else{g=c[j+24>>2]|0;a=c[j+12>>2]|0;do if((a|0)==(j|0)){d=j+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){d=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}c[b>>2]=0;d=a}else{d=c[j+8>>2]|0;c[d+12>>2]=a;c[a+8>>2]=d;d=a}while(0);if(g|0){a=c[j+28>>2]|0;b=170504+(a<<2)|0;if((c[b>>2]|0)==(j|0)){c[b>>2]=d;if(!d){c[42551]=c[42551]&~(1<<a);break}}else{c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;a=j+16|0;b=c[a>>2]|0;if(b|0){c[d+16>>2]=b;c[b+24>>2]=d}a=c[a+4>>2]|0;if(a|0){c[d+20>>2]=a;c[a+24>>2]=d}}}while(0);c[i+4>>2]=f|1;c[h+f>>2]=f;if((i|0)==(c[42555]|0)){c[42552]=f;return}}else{c[a>>2]=e&-2;c[i+4>>2]=b|1;c[h+b>>2]=b;f=b}a=f>>>3;if(f>>>0<256){d=170240+(a<<1<<2)|0;b=c[42550]|0;a=1<<a;if(!(b&a)){c[42550]=b|a;a=d;b=d+8|0}else{b=d+8|0;a=c[b>>2]|0}c[b>>2]=i;c[a+12>>2]=i;c[i+8>>2]=a;c[i+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{h=(a+1048320|0)>>>16&8;j=a<<h;g=(j+520192|0)>>>16&4;j=j<<g;a=(j+245760|0)>>>16&2;a=14-(g|h|a)+(j<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=170504+(a<<2)|0;c[i+28>>2]=a;c[i+20>>2]=0;c[i+16>>2]=0;b=c[42551]|0;d=1<<a;do if(b&d){b=f<<((a|0)==31?0:25-(a>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){a=73;break}e=d+16+(b>>>31<<2)|0;a=c[e>>2]|0;if(!a){a=72;break}else{b=b<<1;d=a}}if((a|0)==72){c[e>>2]=i;c[i+24>>2]=d;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((a|0)==73){h=d+8|0;j=c[h>>2]|0;c[j+12>>2]=i;c[h>>2]=i;c[i+8>>2]=j;c[i+12>>2]=d;c[i+24>>2]=0;break}}else{c[42551]=b|d;c[e>>2]=i;c[i+24>>2]=e;c[i+12>>2]=i;c[i+8>>2]=i}while(0);j=(c[42558]|0)+-1|0;c[42558]=j;if(!j)a=170656;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[42558]=-1;return}function $I(a,b){a=a|0;b=b|0;var d=0;if(a){d=O(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=ZI(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;VN(a|0,0,d|0)|0;return a|0}function aJ(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=ZI(b)|0;return b|0}if(b>>>0>4294967231){c[(jJ()|0)>>2]=12;b=0;return b|0}d=bJ(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=ZI(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;TN(d|0,a|0,(e>>>0<b>>>0?e:b)|0)|0;_I(a);b=d;return b|0}function bJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+4|0;m=c[l>>2]|0;d=m&-8;i=a+d|0;if(!(m&3)){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[42670]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;k=a+b|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|3;m=i+4|0;c[m>>2]=c[m>>2]|1;cJ(k,d);return a|0}if((c[42556]|0)==(i|0)){k=(c[42553]|0)+d|0;d=k-b|0;e=a+b|0;if(k>>>0<=b>>>0){a=0;return a|0}c[l>>2]=m&1|b|2;c[e+4>>2]=d|1;c[42556]=e;c[42553]=d;return a|0}if((c[42555]|0)==(i|0)){e=(c[42552]|0)+d|0;if(e>>>0<b>>>0){a=0;return a|0}d=e-b|0;if(d>>>0>15){k=a+b|0;e=a+e|0;c[l>>2]=m&1|b|2;c[k+4>>2]=d|1;c[e>>2]=d;e=e+4|0;c[e>>2]=c[e>>2]&-2;e=k}else{c[l>>2]=m&1|e|2;e=a+e+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[42552]=d;c[42555]=e;return a|0}e=c[i+4>>2]|0;if(e&2|0){a=0;return a|0}j=(e&-8)+d|0;if(j>>>0<b>>>0){a=0;return a|0}k=j-b|0;f=e>>>3;do if(e>>>0<256){e=c[i+8>>2]|0;d=c[i+12>>2]|0;if((d|0)==(e|0)){c[42550]=c[42550]&~(1<<f);break}else{c[e+12>>2]=d;c[d+8>>2]=e;break}}else{h=c[i+24>>2]|0;d=c[i+12>>2]|0;do if((d|0)==(i|0)){f=i+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){f=0;break}else g=f}else g=e;while(1){f=d+20|0;e=c[f>>2]|0;if(e|0){d=e;g=f;continue}e=d+16|0;f=c[e>>2]|0;if(!f)break;else{d=f;g=e}}c[g>>2]=0;f=d}else{f=c[i+8>>2]|0;c[f+12>>2]=d;c[d+8>>2]=f;f=d}while(0);if(h|0){d=c[i+28>>2]|0;e=170504+(d<<2)|0;if((c[e>>2]|0)==(i|0)){c[e>>2]=f;if(!f){c[42551]=c[42551]&~(1<<d);break}}else{c[h+16+(((c[h+16>>2]|0)!=(i|0)&1)<<2)>>2]=f;if(!f)break}c[f+24>>2]=h;d=i+16|0;e=c[d>>2]|0;if(e|0){c[f+16>>2]=e;c[e+24>>2]=f}d=c[d+4>>2]|0;if(d|0){c[f+20>>2]=d;c[d+24>>2]=f}}}while(0);if(k>>>0<16){c[l>>2]=j|m&1|2;m=a+j+4|0;c[m>>2]=c[m>>2]|1;return a|0}else{i=a+b|0;c[l>>2]=m&1|b|2;c[i+4>>2]=k|3;m=a+j+4|0;c[m>>2]=c[m>>2]|1;cJ(i,k);return a|0}return 0}function cJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+b|0;d=c[a+4>>2]|0;do if(!(d&1)){f=c[a>>2]|0;if(!(d&3))return;h=a+(0-f)|0;b=f+b|0;if((c[42555]|0)==(h|0)){a=i+4|0;d=c[a>>2]|0;if((d&3|0)!=3)break;c[42552]=b;c[a>>2]=d&-2;c[h+4>>2]=b|1;c[i>>2]=b;return}e=f>>>3;if(f>>>0<256){a=c[h+8>>2]|0;d=c[h+12>>2]|0;if((d|0)==(a|0)){c[42550]=c[42550]&~(1<<e);break}else{c[a+12>>2]=d;c[d+8>>2]=a;break}}g=c[h+24>>2]|0;a=c[h+12>>2]|0;do if((a|0)==(h|0)){e=h+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){a=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}c[d>>2]=0}else{f=c[h+8>>2]|0;c[f+12>>2]=a;c[a+8>>2]=f}while(0);if(g){d=c[h+28>>2]|0;e=170504+(d<<2)|0;if((c[e>>2]|0)==(h|0)){c[e>>2]=a;if(!a){c[42551]=c[42551]&~(1<<d);break}}else{c[g+16+(((c[g+16>>2]|0)!=(h|0)&1)<<2)>>2]=a;if(!a)break}c[a+24>>2]=g;d=h+16|0;e=c[d>>2]|0;if(e|0){c[a+16>>2]=e;c[e+24>>2]=a}d=c[d+4>>2]|0;if(d){c[a+20>>2]=d;c[d+24>>2]=a}}}else h=a;while(0);a=i+4|0;e=c[a>>2]|0;if(!(e&2)){if((c[42556]|0)==(i|0)){i=(c[42553]|0)+b|0;c[42553]=i;c[42556]=h;c[h+4>>2]=i|1;if((h|0)!=(c[42555]|0))return;c[42555]=0;c[42552]=0;return}if((c[42555]|0)==(i|0)){i=(c[42552]|0)+b|0;c[42552]=i;c[42555]=h;c[h+4>>2]=i|1;c[h+i>>2]=i;return}f=(e&-8)+b|0;d=e>>>3;do if(e>>>0<256){a=c[i+8>>2]|0;b=c[i+12>>2]|0;if((b|0)==(a|0)){c[42550]=c[42550]&~(1<<d);break}else{c[a+12>>2]=b;c[b+8>>2]=a;break}}else{g=c[i+24>>2]|0;b=c[i+12>>2]|0;do if((b|0)==(i|0)){d=i+16|0;a=d+4|0;b=c[a>>2]|0;if(!b){b=c[d>>2]|0;if(!b){d=0;break}else a=d}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}c[a>>2]=0;d=b}else{d=c[i+8>>2]|0;c[d+12>>2]=b;c[b+8>>2]=d;d=b}while(0);if(g|0){b=c[i+28>>2]|0;a=170504+(b<<2)|0;if((c[a>>2]|0)==(i|0)){c[a>>2]=d;if(!d){c[42551]=c[42551]&~(1<<b);break}}else{c[g+16+(((c[g+16>>2]|0)!=(i|0)&1)<<2)>>2]=d;if(!d)break}c[d+24>>2]=g;b=i+16|0;a=c[b>>2]|0;if(a|0){c[d+16>>2]=a;c[a+24>>2]=d}b=c[b+4>>2]|0;if(b|0){c[d+20>>2]=b;c[b+24>>2]=d}}}while(0);c[h+4>>2]=f|1;c[h+f>>2]=f;if((h|0)==(c[42555]|0)){c[42552]=f;return}}else{c[a>>2]=e&-2;c[h+4>>2]=b|1;c[h+b>>2]=b;f=b}b=f>>>3;if(f>>>0<256){d=170240+(b<<1<<2)|0;a=c[42550]|0;b=1<<b;if(!(a&b)){c[42550]=a|b;b=d;a=d+8|0}else{a=d+8|0;b=c[a>>2]|0}c[a>>2]=h;c[b+12>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;return}b=f>>>8;if(b)if(f>>>0>16777215)b=31;else{g=(b+1048320|0)>>>16&8;i=b<<g;e=(i+520192|0)>>>16&4;i=i<<e;b=(i+245760|0)>>>16&2;b=14-(e|g|b)+(i<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}else b=0;e=170504+(b<<2)|0;c[h+28>>2]=b;c[h+20>>2]=0;c[h+16>>2]=0;a=c[42551]|0;d=1<<b;if(!(a&d)){c[42551]=a|d;c[e>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;return}a=f<<((b|0)==31?0:25-(b>>>1)|0);d=c[e>>2]|0;while(1){if((c[d+4>>2]&-8|0)==(f|0)){b=69;break}e=d+16+(a>>>31<<2)|0;b=c[e>>2]|0;if(!b){b=68;break}else{a=a<<1;d=b}}if((b|0)==68){c[e>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;return}else if((b|0)==69){g=d+8|0;i=c[g>>2]|0;c[i+12>>2]=h;c[g>>2]=h;c[h+8>>2]=i;c[h+12>>2]=d;c[h+24>>2]=0;return}}function dJ(a,b){a=a|0;b=b|0;if(a>>>0<9){b=ZI(b)|0;return b|0}else{b=eJ(a,b)|0;return b|0}return 0}function eJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){d=16;while(1)if(d>>>0<a>>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(jJ()|0)>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=ZI(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(a+-1&d){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;cJ(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;f=b+g|0;c[a>>2]=g|d&1|2;c[f+4>>2]=i|3;h=b+h+4|0;c[h>>2]=c[h>>2]|1;cJ(f,i)}i=b+8|0;return i|0}function fJ(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=kJ(c[a+60>>2]|0)|0;a=iJ(Da(6,d|0)|0)|0;l=b;return a|0}function gJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+32|0;f=k;i=k+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;c[f>>2]=c[b+60>>2];c[f+4>>2]=i;c[f+8>>2]=2;f=iJ(ua(145,f|0)|0)|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else c[b>>2]=c[b>>2]|f&48^16;l=k;return f|0}function hJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((iJ(ta(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function iJ(a){a=a|0;if(a>>>0>4294963200){c[(jJ()|0)>>2]=0-a;a=-1}return a|0}function jJ(){return 170696}function kJ(a){a=a|0;return a|0}function lJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=9;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,Ca(54,f|0)|0):0)a[b+75>>0]=-1;f=mJ(b,d,e)|0;l=g;return f|0}function mJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=iJ(va(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=b+(o<<31>>31)|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=iJ(va(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function nJ(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=iJ(Ea(91,e|0)|0)|0;l=d;return b|0}function oJ(){return}function pJ(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=l;l=l+32|0;h=i;do if((g&4095|0)==0&(((g|0)<0)<<31>>31&-4096|0)==0){if(b>>>0>2147483646){c[(jJ()|0)>>2]=12;a=-1;break}c[h>>2]=a;c[h+4>>2]=b;c[h+8>>2]=d;c[h+12>>2]=e;c[h+16>>2]=f;c[h+20>>2]=g>>12;a=iJ(wa(192,h|0)|0)|0}else{c[(jJ()|0)>>2]=22;a=-1}while(0);l=i;return a|0}function qJ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(rJ(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=O(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function rJ(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function sJ(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[125833+g>>0]|0)==(b|0)){b=2;break}f=g+1|0;if((f|0)==87){f=125921;g=87;b=5;break}else g=f}if((b|0)==2)if(!g)f=125921;else{f=125921;b=5}if((b|0)==5)while(1){do{b=f;f=f+1|0}while((a[b>>0]|0)!=0);g=g+-1|0;if(!g)break;else b=5}return tJ(f,c[e+20>>2]|0)|0}function tJ(a,b){a=a|0;b=b|0;return uJ(a,b)|0}function uJ(a,b){a=a|0;b=b|0;if(!b)b=0;else b=vJ(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function vJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=wJ(c[b+8>>2]|0,o)|0;f=wJ(c[b+12>>2]|0,o)|0;g=wJ(c[b+16>>2]|0,o)|0;a:do if((h>>>0<d>>>2>>>0?(n=d-(h<<2)|0,f>>>0<n>>>0&g>>>0<n>>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=wJ(c[b+(g<<2)>>2]|0,o)|0;g=wJ(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0<d>>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=xJ(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:k;h=f?j:h-j|0}}f=i+m|0;g=wJ(c[b+(f<<2)>>2]|0,o)|0;f=wJ(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0<d>>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function wJ(a,b){a=a|0;b=b|0;var c=0;c=QN(a|0)|0;return ((b|0)==0?a:c)|0}function xJ(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function yJ(a){a=a|0;return sJ(a,c[(zJ()|0)+188>>2]|0)|0}function zJ(){return AJ()|0}function AJ(){return 55800}function BJ(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0;f=a*a;d=f*(f*f)*(f*1.58969099521155e-10+-2.5050760253406863e-08)+(f*(f*2.7557313707070068e-06+-1.984126982985795e-04)+.00833333333332249);e=f*a;if(!c)a=e*(f*d+-.16666666666666632)+a;else a=a-(e*.16666666666666632+(f*(b*.5-e*d)-b));return +a}function CJ(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;m=+h[j>>3]+-1.0;k=m*(m*.5);i=m/(m+2.0);l=i*i;g=l*l;h[j>>3]=m-k;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=m-a-k+i*(k+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));l=a*1.4426950407214463;k=+(e+(f>>>20)|0);i=l+k;a=i+(l+(k-i)+(g*1.4426950407214463+(g+a)*1.6751713164886512e-10))}return +a}function DJ(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=NN(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){a=+DJ(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;a=+h[j>>3]}}return +a}function EJ(a,b){a=+a;b=+b;var c=0.0,d=0.0,e=0.0,f=0.0;c=a*a;d=c*c;e=c*.5;f=1.0-e;return +(f+(1.0-f-e+(c*(c*(c*(c*2.480158728947673e-05+-.001388888888887411)+.0416666666666666)+d*d*(c*(2.087572321298175e-09-c*1.1359647557788195e-11)+-2.7557314351390663e-07))-a*b)))}function FJ(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;k=+h[j>>3]+-1.0;i=k*(k*.5);l=k/(k+2.0);m=l*l;g=m*m;h[j>>3]=k-i;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;a=+h[j>>3];g=k-a-i+l*(i+(g*(g*(g*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(g*(g*(g*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=a*.4342944818781689;i=+(e+(f>>>20)|0);l=i*.30102999566361177;k=l+m;a=k+(m+(l-k)+(g*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function GJ(a,b){a=+a;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+48|0;m=r+16|0;n=r;h[j>>3]=a;d=c[j>>2]|0;i=c[j+4>>2]|0;o=NN(d|0,i|0,63)|0;q=i&2147483647;do if(q>>>0<1074752123)if((i&1048575|0)!=598523){d=(o|0)!=0;if(q>>>0<1073928573)if(d){g=a+1.5707963267341256;k=g+6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+6.077100506506192e-11;d=-1;break}else{g=a+-1.5707963267341256;k=g+-6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+-6.077100506506192e-11;d=1;break}else if(d){g=a+3.1415926534682512;k=g+1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.2154201013012384e-10;d=-2;break}else{g=a+-3.1415926534682512;k=g+-1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.2154201013012384e-10;d=2;break}}else p=21;else{if(q>>>0<1075594812)if(q>>>0<1075183037){if((q|0)==1074977148){p=21;break}if(!o){g=a+-4.712388980202377;k=g+-1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.8231301519518578e-10;d=3;break}else{g=a+4.712388980202377;k=g+1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.8231301519518578e-10;d=-3;break}}else{if((q|0)==1075388923){p=21;break}if(!o){g=a+-6.2831853069365025;k=g+-2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+-2.430840202602477e-10;d=4;break}else{g=a+6.2831853069365025;k=g+2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+2.430840202602477e-10;d=-4;break}}if(q>>>0>=1094263291){if(q>>>0>2146435071){k=a-a;h[b+8>>3]=k;h[b>>3]=k;d=0;break}c[j>>2]=d;c[j+4>>2]=i&1048575|1096810496;a=+h[j>>3];d=0;do{k=+(~~a|0);h[m+(d<<3)>>3]=k;a=(a-k)*16777216.0;d=d+1|0}while((d|0)!=2);h[m+16>>3]=a;if(a==0.0){d=1;while(1)if(+h[m+(d<<3)>>3]==0.0)d=d+-1|0;else break}else d=2;d=HJ(m,n,(q>>>20)+-1046|0,d+1|0,1)|0;a=+h[n>>3];if(!o){h[b>>3]=a;h[b+8>>3]=+h[n+8>>3];break}else{h[b>>3]=-a;h[b+8>>3]=-+h[n+8>>3];d=0-d|0;break}}else p=21}while(0);if((p|0)==21){g=a*.6366197723675814+6755399441055744.0+-6755399441055744.0;d=~~g;e=a-g*1.5707963267341256;f=g*6.077100506506192e-11;a=e-f;h[b>>3]=a;h[j>>3]=a;p=NN(c[j>>2]|0,c[j+4>>2]|0,52)|0;i=q>>>20;if((i-(p&2047)|0)>16){f=g*6.077100506303966e-11;k=e-f;f=g*2.0222662487959506e-21-(e-k-f);a=k-f;h[b>>3]=a;h[j>>3]=a;q=NN(c[j>>2]|0,c[j+4>>2]|0,52)|0;s=g*2.0222662487111665e-21;e=k-s;g=g*8.4784276603689e-32-(k-e-s);if((i-(q&2047)|0)>49){a=e-g;h[b>>3]=a;f=g}else e=k}h[b+8>>3]=e-a-f}l=r;return d|0}function HJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0;H=l;l=l+560|0;C=H+480|0;z=H+320|0;G=H+160|0;E=H;D=c[56044+(f<<2)>>2]|0;p=e+-1|0;y=(d+-3|0)/24|0;y=(y|0)>0?y:0;B=O(y,-24)|0;j=d+-24+B|0;if((D+p|0)>=0){n=D+e|0;k=y-p|0;m=0;while(1){if((k|0)<0)g=0.0;else g=+(c[56060+(k<<2)>>2]|0);h[z+(m<<3)>>3]=g;m=m+1|0;if((m|0)==(n|0))break;else k=k+1|0}}o=(e|0)>0;n=0;while(1){if(o){m=n+p|0;g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(D|0))n=n+1|0;else break}t=(j|0)>0;u=24-j|0;v=23-j|0;w=(e|0)>0;x=(j|0)==0;k=D;a:while(1){g=+h[E+(k<<3)>>3];o=(k|0)>0;if(o){m=k;n=0;while(1){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(n<<2)>>2]=~~(g-i*16777216.0);s=m;m=m+-1|0;g=+h[E+(m<<3)>>3]+i;if((s|0)<=1)break;else n=n+1|0}}g=+IJ(g,j);g=g-+A(+(g*.125))*8.0;m=~~g;g=g-+(m|0);do if(!t)if(!x)if(!(g>=.5)){p=0;s=m;break}else{n=2;F=20;break}else{n=c[C+(k+-1<<2)>>2]>>23;F=19;break}else{s=C+(k+-1<<2)|0;n=c[s>>2]|0;F=n>>u;n=n-(F<<u)|0;c[s>>2]=n;n=n>>v;m=F+m|0;F=19}while(0);if((F|0)==19){F=0;if((n|0)>0)F=20;else{p=n;s=m}}if((F|0)==20){F=0;s=m+1|0;if(o){m=0;r=0;do{p=C+(r<<2)|0;q=c[p>>2]|0;if(!m)if(!q)m=0;else{m=1;o=16777216;F=23}else{o=16777215;F=23}if((F|0)==23){F=0;c[p>>2]=o-q}r=r+1|0}while((r|0)!=(k|0))}else m=0;b:do if(t){switch(j|0){case 1:{o=8388607;break}case 2:{o=4194303;break}default:break b}r=C+(k+-1<<2)|0;c[r>>2]=c[r>>2]&o}while(0);if((n|0)==2){g=1.0-g;if(!m)p=2;else{p=2;g=g-+IJ(1.0,j)}}else p=n}if(!(g==0.0)){F=42;break}if((k|0)>(D|0)){m=0;n=k;do{n=n+-1|0;m=c[C+(n<<2)>>2]|m}while((n|0)>(D|0));if(m){F=41;break}else m=1}else m=1;while(1)if(!(c[C+(D-m<<2)>>2]|0))m=m+1|0;else break;o=m+k|0;if((m|0)<=0){k=o;continue}while(1){n=k+1|0;m=k+e|0;h[z+(m<<3)>>3]=+(c[56060+(n+y<<2)>>2]|0);if(w){g=0.0;k=0;do{g=g+ +h[a+(k<<3)>>3]*+h[z+(m-k<<3)>>3];k=k+1|0}while((k|0)!=(e|0))}else g=0.0;h[E+(n<<3)>>3]=g;if((n|0)<(o|0))k=n;else{k=o;continue a}}}if((F|0)==41)while(1){F=0;j=j+-24|0;k=k+-1|0;if(!(c[C+(k<<2)>>2]|0))F=41;else{o=k;break}}else if((F|0)==42){g=+IJ(g,0-j|0);if(g>=16777216.0){i=+(~~(g*5.9604644775390625e-08)|0);c[C+(k<<2)>>2]=~~(g-i*16777216.0);j=B+d|0;k=k+1|0;g=i}c[C+(k<<2)>>2]=~~g;o=k}g=+IJ(1.0,j);n=(o|0)>-1;if(n){j=o;while(1){h[E+(j<<3)>>3]=g*+(c[C+(j<<2)>>2]|0);if((j|0)>0){g=g*5.9604644775390625e-08;j=j+-1|0}else break}if(n){k=o;while(1){m=o-k|0;j=0;g=0.0;while(1){g=g+ +h[10840+(j<<3)>>3]*+h[E+(j+k<<3)>>3];if((j|0)>=(D|0)|(j|0)>=(m|0))break;else j=j+1|0}h[G+(m<<3)>>3]=g;if((k|0)>0)k=k+-1|0;else break}}}switch(f|0){case 0:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;i=(p|0)==0?g:-g;F=72;break}case 2:case 1:{if(n){g=0.0;j=o;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;k=(p|0)==0;h[b>>3]=k?g:-g;g=+h[G>>3]-g;if((o|0)>=1){j=1;while(1){g=g+ +h[G+(j<<3)>>3];if((j|0)==(o|0))break;else j=j+1|0}}i=k?g:-g;b=b+8|0;F=72;break}case 3:{if((o|0)>0){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;i=+h[E>>3];I=g;g=i+g;h[G+(F<<3)>>3]=I+(i-g);h[E>>3]=g}while((F|0)>1);k=(o|0)>1;if(k){j=o;g=+h[G+(o<<3)>>3];do{F=j;j=j+-1|0;E=G+(j<<3)|0;I=+h[E>>3];i=g;g=I+g;h[G+(F<<3)>>3]=i+(I-g);h[E>>3]=g}while((F|0)>2);if(k){j=o;i=0.0;while(1){i=i+ +h[G+(j<<3)>>3];if((j|0)>2)j=j+-1|0;else break}}else i=0.0}else i=0.0}else i=0.0;g=+h[G>>3];if(!p){h[b>>3]=g;g=+h[G+8>>3]}else{h[b>>3]=-g;i=-i;g=-+h[G+8>>3]}h[b+8>>3]=g;b=b+16|0;F=72;break}default:{}}if((F|0)==72)h[b>>3]=i;l=H;return s&7|0}function IJ(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;e=(b|0)<-2044;d=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((d|0)>-1022?d:-1022):b+1022|0}}else{a=a*8988465674311579538646525.0e283;d=(b|0)>2046;e=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((e|0)<1023?e:1023):b+-1023|0}d=ON(b+1023|0,0,52)|0;e=z;c[j>>2]=d;c[j+4>>2]=e;return +(a*+h[j>>3])}function JJ(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0.0;h[j>>3]=a;d=c[j+4>>2]|0;b=d&2147483647;do if(b>>>0>2146435071)a=a+a;else{if(b>>>0<1048576){h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;b=d&2147483647;if(!b)break;else e=696219795}else e=715094163;c[j>>2]=0;c[j+4>>2]=((b>>>0)/3|0)+e|d&-2147483648;f=+h[j>>3];g=f*f*(f/a);h[j>>3]=(g*(g*g)*(g*.14599619288661245+-.758397934778766)+(g*(g*1.6214297201053545+-1.8849797954337717)+1.87595182427177))*f;d=HN(c[j>>2]|0,c[j+4>>2]|0,-2147483648,0)|0;e=z;c[j>>2]=d&-1073741824;c[j+4>>2]=e;f=+h[j>>3];a=a/(f*f);a=(a-f)/(f+f+a)*f+f}while(0);return +a}function KJ(a,b){a=+a;b=+b;var d=0,e=0;h[j>>3]=a;e=c[j>>2]|0;d=c[j+4>>2]|0;h[j>>3]=b;d=c[j+4>>2]&-2147483648|d&2147483647;c[j>>2]=e;c[j+4>>2]=d;return +(+h[j>>3])}function LJ(a,b){a=+a;b=+b;return +(+KJ(a,b))}function MJ(a,b){a=+a;b=b|0;return +(+IJ(a,b))}function NJ(a,b){a=+a;b=+b;return +(+OJ(a,b))}function OJ(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h[j>>3]=a;i=c[j>>2]|0;l=c[j+4>>2]|0;h[j>>3]=b;n=c[j>>2]|0;o=c[j+4>>2]|0;e=NN(i|0,l|0,52)|0;e=e&2047;m=NN(n|0,o|0,52)|0;m=m&2047;p=l&-2147483648;g=ON(n|0,o|0,1)|0;k=z;a:do if(!((g|0)==0&(k|0)==0)?(f=PJ(b)|0,d=z&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=ON(i|0,l|0,1)|0;f=z;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>g>>>0))return +((d|0)==(g|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=ON(i|0,l|0,12)|0;f=z;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=ON(d|0,f|0,1)|0;f=z}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;i=ON(i|0,l|0,1-e|0)|0;g=z}else g=l&1048575|1048576;if(!m){f=ON(n|0,o|0,12)|0;k=z;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=ON(f|0,k|0,1)|0;k=z}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=ON(n|0,o|0,1-d|0)|0;m=d;l=z}else l=o&1048575|1048576;f=IN(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=i;d=g}i=ON(f|0,d|0,1)|0;g=z;e=e+-1|0;f=IN(i|0,g|0,n|0,l|0)|0;d=z;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=g;f=i}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=ON(f|0,d|0,1)|0;d=z;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=HN(f|0,d|0,0,-1048576)|0;d=z;e=ON(e|0,0,52)|0;d=d|z;e=o|e}else{e=NN(f|0,d|0,1-e|0)|0;d=z}c[j>>2]=e;c[j+4>>2]=d|p;b=+h[j>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function PJ(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function QJ(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,g=0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=l;l=l+32|0;m=q+24|0;n=q+16|0;o=q+8|0;p=q;h[j>>3]=a;t=c[j>>2]|0;g=c[j+4>>2]|0;h[j>>3]=b;e=c[j>>2]|0;g=g&2147483647;f=c[j+4>>2]&2147483647;i=g>>>0<f>>>0|(g|0)==(f|0)&t>>>0<e>>>0;s=i?e:t;r=i?f:g;e=i?t:e;f=i?g:f;g=NN(s|0,r|0,52)|0;i=NN(e|0,f|0,52)|0;c[j>>2]=s;c[j+4>>2]=r;a=+h[j>>3];c[j>>2]=e;c[j+4>>2]=f;k=+h[j>>3];do if((i|0)!=2047){if(!((e|0)==0&(f|0)==0|(g|0)==2047)){if((g-i|0)>64){a=a+k;break}if((g|0)>1533){d=5260135901548373507240989.0e186;b=a*1.90109156629516e-211;a=k*1.90109156629516e-211}else{t=(i|0)<573;d=t?1.90109156629516e-211:1.0;b=t?a*5260135901548373507240989.0e186:a;a=t?k*5260135901548373507240989.0e186:k}RJ(m,n,b);RJ(o,p,a);a=d*+C(+(+h[p>>3]+ +h[n>>3]+ +h[o>>3]+ +h[m>>3]))}}else a=k;while(0);l=q;return +a}function RJ(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=c*134217729.0;e=e+(c-e);d=c-e;c=c*c;h[a>>3]=c;h[b>>3]=d*d+(e*e-c+e*2.0*d);return}function SJ(a,b,d){a=+a;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,k=0,m=0;k=l;l=l+16|0;g=k;h[j>>3]=a;f=c[j+4>>2]&2147483647;do if(f>>>0<1072243196)if(f>>>0<1044816030){h[b>>3]=a;h[d>>3]=1.0;break}else{h[b>>3]=+BJ(a,0.0,0);h[d>>3]=+EJ(a,0.0);break}else{if(f>>>0>2146435071){i=a-a;h[d>>3]=i;h[b>>3]=i;break}f=GJ(a,g)|0;m=g+8|0;e=+BJ(+h[g>>3],+h[m>>3],1);a=+EJ(+h[g>>3],+h[m>>3]);switch(f&3){case 0:{h[b>>3]=e;i=a;break}case 1:{h[b>>3]=a;i=-e;break}case 2:{h[b>>3]=-e;i=-a;break}case 3:{h[b>>3]=-a;i=e;break}default:{}}h[d>>3]=i}while(0);l=k;return}function TJ(a,b){a=+a;b=b|0;return +(+DJ(a,b))}function UJ(a){a=a|0;if(a>>>0<131072)a=(d[127725+((d[127725+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=0;return a|0}function VJ(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0;if(!e)f=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))f=0;else while(1){e=e+-1|0;g=a[c>>0]|0;if(!(f<<24>>24==g<<24>>24&((e|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){f=0;break}}while(0);f=(f&255)-(d[c>>0]|0)|0}return f|0}function WJ(b,c){b=b|0;c=c|0;b=qJ(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function XJ(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function YJ(a,b,c){a=a|0;b=b|0;c=c|0;c=$J(a,b,c,-1,0)|0;return c|0}function ZJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=O(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function _J(a){a=a|0;return (a+-48|0)>>>0<10|0}function $J(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+128|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;aK(h,0);d=bK(h,d,1,e,f)|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));l=j;return d|0}function aK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;c[a+100>>2]=(b|0)!=0&(f|0)>(b|0)?e+b|0:d;return}function bK(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(jJ()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0}while((XJ(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=cK(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0;if((d[130894+i>>0]|0)>15){g=(c[q>>2]|0)==0;if(!g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){aK(b,0);h=0;g=0;break a}if(g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if(e>>>0>(d[130894+i>>0]|0)>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;aK(b,0);c[(jJ()|0)>>2]=22;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;j=e;do{i=(i*10|0)+j|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;e=d[e>>0]|0}else e=cK(b)|0;j=e+-48|0}while(j>>>0<10&i>>>0<429496729);f=0}else{e=i;i=0;f=0}k=e+-48|0;if(k>>>0<10){j=e;do{e=GN(i|0,f|0,10,0)|0;l=z;m=((k|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&e>>>0>~k>>>0){e=10;n=72;break c}i=HN(e|0,l|0,k|0,m|0)|0;f=z;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=cK(b)|0;k=j+-48|0}while(k>>>0<10&(f>>>0<429496729|(f|0)==429496729&i>>>0<2576980378));if(k>>>0>9){j=p;e=f}else{e=10;n=72}}else{j=p;e=f}}else n=46;while(0);d:do if((n|0)==46){if(!(e+-1&e)){n=a[131150+((e*23|0)>>>5&7)>>0]|0;f=a[130894+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k|i<<n;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=cK(b)|0;f=a[130894+j>>0]|0;k=f&255}while(i>>>0<134217728&e>>>0>k>>>0);k=0}else{j=i;k=0;i=0}l=NN(-1,-1,n|0)|0;m=z;if(e>>>0<=(f&255)>>>0|(m>>>0<k>>>0|(m|0)==(k|0)&l>>>0<i>>>0)){f=k;n=72;break}else j=k;while(1){i=ON(i|0,j|0,n|0)|0;k=z;i=i|f&255;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=cK(b)|0;f=a[130894+j>>0]|0;if(e>>>0<=(f&255)>>>0|(k>>>0>m>>>0|(k|0)==(m|0)&i>>>0>l>>>0)){f=k;n=72;break d}else j=k}}f=a[130894+i>>0]|0;j=f&255;if(e>>>0>j>>>0){i=0;k=j;do{i=k+(O(i,e)|0)|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=cK(b)|0;f=a[130894+j>>0]|0;k=f&255}while(i>>>0<119304647&e>>>0>k>>>0);k=0}else{j=i;i=0;k=0}if(e>>>0>(f&255)>>>0){n=LN(-1,-1,e|0,0)|0;o=z;m=k;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&i>>>0>n>>>0){f=m;n=72;break d}k=GN(i|0,m|0,e|0,0)|0;l=z;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=m;n=72;break d}i=HN(k|0,l|0,f|0,0)|0;k=z;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=cK(b)|0;f=a[130894+j>>0]|0;if(e>>>0<=(f&255)>>>0){f=k;n=72;break}else m=k}}else{f=k;n=72}}while(0);if((n|0)==72)if(e>>>0>(d[130894+j>>0]|0)>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0}while(e>>>0>(d[130894+i>>0]|0)>>>0);c[(jJ()|0)>>2]=34;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else{j=p;e=f}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0<h>>>0|(e|0)==(h|0)&i>>>0<g>>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){c[(jJ()|0)>>2]=34;g=HN(g|0,h|0,-1,-1)|0;h=z;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){c[(jJ()|0)>>2]=34;break}}g=((j|0)<0)<<31>>31;g=IN(i^j|0,e^g|0,j|0,g|0)|0;h=z}while(0);z=h;return g|0}function cK(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=b+104|0;h=c[f>>2]|0;if((h|0)!=0?(c[b+108>>2]|0)>=(h|0):0)i=4;else{e=dK(b)|0;if((e|0)>=0){g=c[f>>2]|0;f=b+8|0;if(g){j=c[f>>2]|0;h=c[b+4>>2]|0;f=g-(c[b+108>>2]|0)|0;g=j;if((j-h|0)<(f|0))f=g;else f=h+(f+-1)|0}else{g=c[f>>2]|0;f=g}c[b+100>>2]=f;f=b+4|0;if(!g)f=c[f>>2]|0;else{f=c[f>>2]|0;j=b+108|0;c[j>>2]=g+1-f+(c[j>>2]|0)}f=f+-1|0;if((e|0)!=(d[f>>0]|0|0))a[f>>0]=e}else i=4}if((i|0)==4){c[b+100>>2]=0;e=-1}return e|0}function dK(a){a=a|0;var b=0,e=0;e=l;l=l+16|0;b=e;if((eK(a)|0)==0?(bb[c[a+32>>2]&31](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;l=e;return a|0}function eK(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)bb[c[b+36>>2]&31](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function fK(a){a=a|0;return (a+-48|0)>>>0<10|0}function gK(a){a=a|0;if(!(hK(a)|0))a=(_J(a)|0)!=0&1;else a=1;return a|0}function hK(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function iK(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;e=a[b>>0]|0;a:do if(!(e<<24>>24))b=0;else{g=b;b=e;f=e&255;while(1){e=a[c>>0]|0;if(!(e<<24>>24))break a;if(b<<24>>24!=e<<24>>24?(f=jK(f)|0,(f|0)!=(jK(d[c>>0]|0)|0)):0)break;b=g+1|0;c=c+1|0;e=a[b>>0]|0;if(!(e<<24>>24)){b=0;break a}else{g=b;b=e;f=e&255}}b=a[g>>0]|0}while(0);g=jK(b&255)|0;return g-(jK(d[c>>0]|0)|0)|0}function jK(a){a=a|0;var b=0;b=(kK(a)|0)==0;return (b?a:a|32)|0}function kK(a){a=a|0;return (a+-65|0)>>>0<26|0}function lK(a){a=a|0;return mK(a,0)|0}function mK(c,f){c=c|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=(f<<1)+-1|0;l=f+-1|0;a:do if(!((c+-43008|0)>>>0<22272|((c+-11776|0)>>>0<30784|((c+-1536|0)>>>0<2560|(nK(c)|0)==0)))){g=(f|0)!=0;if(g&(c+-4256|0)>>>0<46){if((c|0)>4293)switch(c|0){case 4295:case 4301:break;default:break a}c=c+7264|0;break}if((c+-11520|0)>>>0<38&(g^1)){c=c+-7264|0;break}else g=0;do{i=a[59170+(g<<2)+2>>0]|0;j=i<<24>>24;h=c-(e[59170+(g<<2)>>1]|0)|0;if((h-(l&j)|0)>>>0<(d[59170+(g<<2)+3>>0]|0)>>>0){m=11;break}g=g+1|0}while((g|0)!=61);if((m|0)==11)if(i<<24>>24==1){c=f+c-(h&1)|0;break}else{c=(O(k,j)|0)+c|0;break}i=1-f|0;g=b[58682+(i<<1)>>1]|0;b:do if(g<<16>>16){h=0;while(1){if((g&65535|0)==(c|0))break;h=h+1|0;g=b[58682+(h<<2)+(i<<1)>>1]|0;if(!(g<<16>>16))break b}c=e[58682+(h<<2)+(f<<1)>>1]|0;break a}while(0);return ((c+-66600+(f*40|0)|0)>>>0<40?c+-40+(f*80|0)|0:c)|0}while(0);return c|0}function nK(a){a=a|0;if(a>>>0<131072)a=(d[131159+((d[131159+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=a>>>0<196606&1;return a|0}function oK(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function pK(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;if(!e)b=0;else{f=a[b>>0]|0;a:do if(!(f<<24>>24))b=0;else{h=b;b=f;f=f&255;while(1){e=e+-1|0;g=a[c>>0]|0;if(!((e|0)!=0&g<<24>>24!=0))break a;if(b<<24>>24!=g<<24>>24?(g=jK(f)|0,(g|0)!=(jK(d[c>>0]|0)|0)):0)break;b=h+1|0;c=c+1|0;f=a[b>>0]|0;if(!(f<<24>>24)){b=0;break a}else{h=b;b=f;f=f&255}}b=a[h>>0]|0}while(0);b=jK(b&255)|0;b=b-(jK(d[c>>0]|0)|0)|0}return b|0}function qK(a){a=a|0;if(a>>>0>=255)if((a+-57344|0)>>>0<8185|(a>>>0<8232|(a+-8234|0)>>>0<47062))a=1;else return (a&65534|0)!=65534&(a+-65532|0)>>>0<1048580&1|0;else a=(a+1&127)>>>0>32&1;return a|0}function rK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;g=k;i=(f|0)==0?170764:f;f=c[i>>2]|0;a:do if(!d)if(!f)f=0;else j=17;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;if(f<<24>>24>-1){c[h>>2]=f&255;f=f<<24>>24!=0&1;break}g=(c[c[(vK()|0)+188>>2]>>2]|0)==0;f=a[d>>0]|0;if(g){c[h>>2]=f<<24>>24&57343;f=1;break}f=(f&255)+-194|0;if(f>>>0>50){j=17;break}f=c[55208+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;j=11}}else{g=e;j=11}b:do if((j|0)==11){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){j=17;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){j=17;break a}}c[i>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[i>>2]=f;f=-2}}while(0);if((j|0)==17){c[i>>2]=0;c[(jJ()|0)>>2]=84;f=-1}l=k;return f|0}function sK(a,b){a=a|0;b=b|0;if(!a)a=0;else a=tK(a,b,0)|0;return a|0}function tK(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(!(c[c[(uK()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{c[(jJ()|0)>>2]=84;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(jJ()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function uK(){return AJ()|0}function vK(){return AJ()|0}function wK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+272|0;n=p+8|0;o=p;do if(!(a[d>>0]|0)){d=Na(134135)|0;if(d|0?a[d>>0]|0:0)break;d=Na(134142+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Na(134214)|0;if(d|0?a[d>>0]|0:0)break;d=134219}while(0);e=0;a:do{switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0}while(e>>>0<15);f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)m=15;else{k=d;m=16}else{d=134219;m=15}if((m|0)==15)if(!(a[d+1>>0]|0))m=18;else{k=d;m=16}b:do if((m|0)==16)if((xJ(k,134219)|0)!=0?(xJ(k,134227)|0)!=0:0){d=c[42692]|0;if(d|0)do{if(!(xJ(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);pa(170772);d=c[42692]|0;c:do if(d|0){while(1){if(!(xJ(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}Fa(170772);break b}while(0);d:do if(((c[42677]|0)==0?(g=Na(134233)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=qJ(f,58)|0;d=a[h>>0]|0;g=h-f+((d<<24>>24!=0)<<31>>31)|0;if(g>>>0<i>>>0){TN(n|0,f|0,g|0)|0;f=n+g|0;a[f>>0]=47;TN(f+1|0,k|0,e|0)|0;a[n+(j+g)>>0]=0;f=qa(n|0,o|0)|0;if(f|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){m=41;break d}}d=ZI(28)|0;if(!d){nJ(f,c[o>>2]|0)|0;m=41;break}else{c[d>>2]=f;c[d+4>>2]=c[o>>2];o=d+8|0;TN(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[42692];c[42692]=d;break}}else m=41;while(0);if((m|0)==41){d=ZI(28)|0;if(d){c[d>>2]=c[13790];c[d+4>>2]=c[13791];o=d+8|0;TN(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[42692];c[42692]=d}}Fa(170772);d=(b|0)==0&(d|0)==0?55160:d}else{d=k;m=18}while(0);do if((m|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=55160;break}d=0}while(0);l=p;return d|0}function xK(a,b){a=a|0;b=b|0;yK(a,b)|0;return a|0}function yK(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function zK(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function AK(a){a=a|0;if(!a)a=0;else a=(BK(56324,a)|0)!=0&1;return a|0}function BK(a,b){a=a|0;b=b|0;var d=0;if(!b)a=a+((oK(a)|0)<<2)|0;else{while(1){d=c[a>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else a=a+4|0}a=d|0?a:0}return a|0}function CK(a,b){a=a|0;b=b|0;do switch(b|0){case 1:{a=DK(a)|0;break}case 2:{a=nK(a)|0;break}case 3:{a=EK(a)|0;break}case 4:{a=FK(a)|0;break}case 5:{a=fK(a)|0;break}case 6:{a=GK(a)|0;break}case 7:{a=HK(a)|0;break}case 8:{a=qK(a)|0;break}case 9:{a=UJ(a)|0;break}case 10:{a=AK(a)|0;break}case 11:{a=IK(a)|0;break}case 12:{a=JK(a)|0;break}default:a=0}while(0);return a|0}function DK(a){a=a|0;if(!(fK(a)|0))a=(nK(a)|0)!=0&1;else a=1;return a|0}function EK(a){a=a|0;return zK(a)|0}function FK(a){a=a|0;return ((a+-65529|0)>>>0<3|((a&-2|0)==8232|(a>>>0<32|(a+-127|0)>>>0<33)))&1|0}function GK(a){a=a|0;if(!(AK(a)|0))a=(qK(a)|0)!=0&1;else a=0;return a|0}function HK(a){a=a|0;return (lK(a)|0)!=(a|0)|0}function IK(a){a=a|0;return (KK(a)|0)!=(a|0)|0}function JK(a){a=a|0;return ((a+-48|0)>>>0<10|((a|32)+-97|0)>>>0<6)&1|0}function KK(a){a=a|0;return mK(a,1)|0}function LK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;g=n+124|0;m=n;h=m;i=56412;j=h+124|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;k=4}else{c[(jJ()|0)>>2]=75;d=-1}else k=4;if((k|0)==4){k=-2-b|0;k=d>>>0>k>>>0?k:d;c[m+48>>2]=k;g=m+20|0;c[g>>2]=b;c[m+44>>2]=b;d=b+k|0;b=m+16|0;c[b>>2]=d;c[m+28>>2]=d;d=MK(m,e,f)|0;if(k){m=c[g>>2]|0;a[m+(((m|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}l=n;return d|0}function MK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+224|0;n=s+120|0;p=s+80|0;q=s;r=s+136|0;f=p;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[n>>2]=c[e>>2];if((NK(0,d,n,q,p)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)o=OK(b)|0;else o=0;e=c[b>>2]|0;m=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;f=b+48|0;if(!(c[f>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=r;i=b+28|0;c[i>>2]=r;j=b+20|0;c[j>>2]=r;c[f>>2]=80;k=b+16|0;c[k>>2]=r+80;e=NK(b,d,n,q,p)|0;if(h){bb[c[b+36>>2]&31](b,0,0)|0;e=(c[j>>2]|0)==0?-1:e;c[g>>2]=h;c[f>>2]=0;c[k>>2]=0;c[i>>2]=0;c[j>>2]=0}}else e=NK(b,d,n,q,p)|0;f=c[b>>2]|0;c[b>>2]=f|m;if(o|0)PK(b);e=(f&32|0)==0?e:-1}l=s;return e|0}function NK(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=l;l=l+64|0;D=I+16|0;E=I;A=I+24|0;G=I+8|0;H=I+20|0;c[D>>2]=e;w=(d|0)!=0;x=A+40|0;y=x;A=A+39|0;B=G+4|0;j=0;e=0;m=0;a:while(1){do if((e|0)>-1)if((j|0)>(2147483647-e|0)){c[(jJ()|0)>>2]=75;e=-1;break}else{e=j+e|0;break}while(0);r=c[D>>2]|0;j=a[r>>0]|0;if(!(j<<24>>24)){v=88;break}else k=r;b:while(1){switch(j<<24>>24){case 37:{j=k;v=9;break b}case 0:{j=k;break b}default:{}}u=k+1|0;c[D>>2]=u;j=a[u>>0]|0;k=u}c:do if((v|0)==9)while(1){v=0;if((a[k+1>>0]|0)!=37)break c;j=j+1|0;k=k+2|0;c[D>>2]=k;if((a[k>>0]|0)!=37)break;else v=9}while(0);j=j-r|0;if(w)QK(d,r,j);if(j|0)continue;u=(_J(a[(c[D>>2]|0)+1>>0]|0)|0)==0;k=c[D>>2]|0;if(!u?(a[k+2>>0]|0)==36:0){s=(a[k+1>>0]|0)+-48|0;n=1;j=3}else{s=-1;n=m;j=1}j=k+j|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0;if(u>>>0>31|(1<<u&75913|0)==0)m=0;else{m=0;do{m=1<<(k<<24>>24)+-32|m;j=j+1|0;c[D>>2]=j;k=a[j>>0]|0;u=(k<<24>>24)+-32|0}while(!(u>>>0>31|(1<<u&75913|0)==0))}if(k<<24>>24==42){if((_J(a[j+1>>0]|0)|0)!=0?(F=c[D>>2]|0,(a[F+2>>0]|0)==36):0){j=F+1|0;c[i+((a[j>>0]|0)+-48<<2)>>2]=10;j=c[g+((a[j>>0]|0)+-48<<3)>>2]|0;k=1;n=F+3|0}else{if(n|0){e=-1;break}if(w){u=(c[f>>2]|0)+(4-1)&~(4-1);j=c[u>>2]|0;c[f>>2]=u+4}else j=0;k=0;n=(c[D>>2]|0)+1|0}c[D>>2]=n;t=(j|0)<0;u=t?0-j|0:j;m=t?m|8192:m;t=k;j=n}else{j=RK(D)|0;if((j|0)<0){e=-1;break}u=j;t=n;j=c[D>>2]|0}do if((a[j>>0]|0)==46){if((a[j+1>>0]|0)!=42){c[D>>2]=j+1;p=RK(D)|0;j=c[D>>2]|0;break}if(_J(a[j+2>>0]|0)|0?(C=c[D>>2]|0,(a[C+3>>0]|0)==36):0){p=C+2|0;c[i+((a[p>>0]|0)+-48<<2)>>2]=10;p=c[g+((a[p>>0]|0)+-48<<3)>>2]|0;j=C+4|0;c[D>>2]=j;break}if(t|0){e=-1;break a}if(w){q=(c[f>>2]|0)+(4-1)&~(4-1);j=c[q>>2]|0;c[f>>2]=q+4}else j=0;q=(c[D>>2]|0)+2|0;c[D>>2]=q;p=j;j=q}else p=-1;while(0);q=0;while(1){if(((a[j>>0]|0)+-65|0)>>>0>57){e=-1;break a}k=j;j=j+1|0;c[D>>2]=j;k=a[(a[k>>0]|0)+-65+(134246+(q*58|0))>>0]|0;n=k&255;if((n+-1|0)>>>0>=8)break;else q=n}if(!(k<<24>>24)){e=-1;break}o=(s|0)>-1;do if(k<<24>>24==19)if(o){e=-1;break a}else v=50;else{if(o){c[i+(s<<2)>>2]=n;o=g+(s<<3)|0;s=c[o+4>>2]|0;v=E;c[v>>2]=c[o>>2];c[v+4>>2]=s;v=50;break}if(!w){e=0;break a}SK(E,n,f);j=c[D>>2]|0}while(0);if((v|0)==50){v=0;if(!w){j=0;m=t;continue}}k=a[j+-1>>0]|0;k=(q|0)!=0&(k&15|0)==3?k&-33:k;j=m&-65537;s=(m&8192|0)==0?m:j;d:do switch(k|0){case 110:switch((q&255)<<24>>24){case 0:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 1:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 2:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}case 3:{b[c[E>>2]>>1]=e;j=0;m=t;continue a}case 4:{a[c[E>>2]>>0]=e;j=0;m=t;continue a}case 6:{c[c[E>>2]>>2]=e;j=0;m=t;continue a}case 7:{j=c[E>>2]|0;c[j>>2]=e;c[j+4>>2]=((e|0)<0)<<31>>31;j=0;m=t;continue a}default:{j=0;m=t;continue a}}case 112:{k=120;j=p>>>0>8?p:8;m=s|8;v=62;break}case 88:case 120:{j=p;m=s;v=62;break}case 111:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;o=UK(j,k,x)|0;m=y-o|0;q=0;n=134710;p=(s&8|0)==0|(p|0)>(m|0)?p:m+1|0;m=s;v=68;break}case 105:case 100:{k=E;j=c[k>>2]|0;k=c[k+4>>2]|0;if((k|0)<0){j=IN(0,0,j|0,k|0)|0;k=z;m=E;c[m>>2]=j;c[m+4>>2]=k;m=1;n=134710;v=67;break d}else{m=(s&2049|0)!=0&1;n=(s&2048|0)==0?((s&1|0)==0?134710:134712):134711;v=67;break d}}case 117:{k=E;m=0;n=134710;j=c[k>>2]|0;k=c[k+4>>2]|0;v=67;break}case 99:{a[A>>0]=c[E>>2];r=A;q=0;n=134710;o=x;k=1;break}case 109:{k=yJ(c[(jJ()|0)>>2]|0)|0;v=72;break}case 115:{k=c[E>>2]|0;k=k|0?k:134720;v=72;break}case 67:{c[G>>2]=c[E>>2];c[B>>2]=0;c[E>>2]=G;p=-1;m=G;v=76;break}case 83:{j=c[E>>2]|0;if(!p){WK(d,32,u,0,s);j=0;v=85}else{m=j;v=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{j=XK(d,+h[E>>3],u,p,s,k)|0;m=t;continue a}default:{q=0;n=134710;o=x;k=p;j=s}}while(0);e:do if((v|0)==62){s=E;r=c[s>>2]|0;s=c[s+4>>2]|0;o=TK(r,s,x,k&32)|0;n=(m&8|0)==0|(r|0)==0&(s|0)==0;q=n?0:2;n=n?134710:134710+(k>>4)|0;p=j;j=r;k=s;v=68}else if((v|0)==67){o=VK(j,k,x)|0;q=m;m=s;v=68}else if((v|0)==72){v=0;s=ZJ(k,0,p)|0;m=(s|0)==0;r=k;q=0;n=134710;o=m?k+p|0:s;k=m?p:s-k|0}else if((v|0)==76){v=0;o=m;j=0;k=0;while(1){n=c[o>>2]|0;if(!n)break;k=sK(H,n)|0;if((k|0)<0|k>>>0>(p-j|0)>>>0)break;j=k+j|0;if(p>>>0>j>>>0)o=o+4|0;else break}if((k|0)<0){e=-1;break a}WK(d,32,u,j,s);if(!j){j=0;v=85}else{n=0;while(1){k=c[m>>2]|0;if(!k){v=85;break e}k=sK(H,k)|0;n=k+n|0;if((n|0)>(j|0)){v=85;break e}QK(d,H,k);if(n>>>0>=j>>>0){v=85;break}else m=m+4|0}}}while(0);if((v|0)==68){v=0;k=(j|0)!=0|(k|0)!=0;j=(p|0)!=0|k;k=y-o+((k^1)&1)|0;r=j?o:x;o=x;k=j?((p|0)>(k|0)?p:k):p;j=(p|0)>-1?m&-65537:m}else if((v|0)==85){v=0;WK(d,32,u,j,s^8192);j=(u|0)>(j|0)?u:j;m=t;continue}p=o-r|0;o=(k|0)<(p|0)?p:k;s=o+q|0;m=(u|0)<(s|0)?s:u;WK(d,32,m,s,j);QK(d,n,q);WK(d,48,m,s,j^65536);WK(d,48,o,p,0);QK(d,r,p);WK(d,32,m,s,j^8192);j=m;m=t}f:do if((v|0)==88)if(!d)if(m){e=1;while(1){j=c[i+(e<<2)>>2]|0;if(!j)break;SK(g+(e<<3)|0,j,f);j=e+1|0;if((e|0)<9)e=j;else{e=j;break}}if((e|0)<10)while(1){if(c[i+(e<<2)>>2]|0){e=-1;break f}if((e|0)<9)e=e+1|0;else{e=1;break}}else e=1}else e=0;while(0);l=I;return e|0}function OK(a){a=a|0;return 0}function PK(a){a=a|0;return}function QK(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))ZK(b,d,a)|0;return}function RK(b){b=b|0;var d=0,e=0;if(!(_J(a[c[b>>2]>>0]|0)|0))d=0;else{d=0;do{e=c[b>>2]|0;d=(d*10|0)+-48+(a[e>>0]|0)|0;e=e+1|0;c[b>>2]=e}while((_J(a[e>>0]|0)|0)!=0)}return d|0}function SK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function TK(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[134758+(b&15)>>0]|0|f;b=NN(b|0,c|0,4)|0;c=z}while(!((b|0)==0&(c|0)==0));return e|0}function UK(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=NN(b|0,c|0,3)|0;c=z}while(!((b|0)==0&(c|0)==0));return d|0}function VK(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){while(1){e=MN(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e&255|48;e=b;b=LN(b|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=z}c=b}else c=b;if(c)while(1){d=d+-1|0;a[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function WK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;VN(f|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{QK(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}QK(a,f,e)}l=g;return}function XK(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+560|0;m=H+8|0;u=H;G=H+524|0;F=G;n=H+512|0;c[u>>2]=0;E=n+12|0;YK(e)|0;if((z|0)<0){e=-e;C=1;B=134727}else{C=(h&2049|0)!=0&1;B=(h&2048|0)==0?((h&1|0)==0?134728:134733):134730}YK(e)|0;do if(0==0&(z&2146435072|0)==2146435072){G=(i&32|0)!=0;j=C+3|0;WK(b,32,f,j,h&-65537);QK(b,B,C);QK(b,e!=e|0.0!=0.0?(G?134895:134754):G?134746:134750,3);WK(b,32,f,j,h^8192)}else{r=+TJ(e,u)*2.0;j=r!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;w=i|32;if((w|0)==97){p=i&32;s=(p|0)==0?B:B+9|0;q=C|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[s>>0]|0)==45){e=-(e+(-r-e));break}else{e=r+e-e;break}}else e=r;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=VK(j,((j|0)<0)<<31>>31,E)|0;if((j|0)==(E|0)){j=n+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;o=j+-2|0;a[o>>0]=i+15;m=(g|0)<1;n=(h&8|0)==0;j=G;do{D=~~e;k=j+1|0;a[j>>0]=p|d[134758+D>>0];e=(e-+(D|0))*16.0;if((k-F|0)==1?!(n&(m&e==0.0)):0){a[k>>0]=46;j=j+2|0}else j=k}while(e!=0.0);if((g|0)!=0?(-2-F+j|0)<(g|0):0){k=j-F|0;j=g+2|0}else{j=j-F|0;k=j}E=E-o|0;F=E+q+j|0;WK(b,32,f,F,h);QK(b,s,q);WK(b,48,f,F,h^65536);QK(b,G,k);WK(b,48,j-k|0,0,0);QK(b,o,E);WK(b,32,f,F,h^8192);j=F;break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=r*268435456.0}else{e=r;j=c[u>>2]|0}D=(j|0)<0?m:m+288|0;m=D;do{y=~~e>>>0;c[m>>2]=y;m=m+4|0;e=(e-+(y>>>0))*1.0e9}while(e!=0.0);if((j|0)>0){n=D;p=m;while(1){o=(j|0)<29?j:29;j=p+-4|0;if(j>>>0>=n>>>0){m=0;do{x=ON(c[j>>2]|0,0,o|0)|0;x=HN(x|0,z|0,m|0,0)|0;y=z;v=MN(x|0,y|0,1e9,0)|0;c[j>>2]=v;m=LN(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=n>>>0);if(m){n=n+-4|0;c[n>>2]=m}}m=p;while(1){if(m>>>0<=n>>>0)break;j=m+-4|0;if(!(c[j>>2]|0))m=j;else break}j=(c[u>>2]|0)-o|0;c[u>>2]=j;if((j|0)>0)p=m;else break}}else n=D;if((j|0)<0){g=((k+25|0)/9|0)+1|0;t=(w|0)==102;do{s=0-j|0;s=(s|0)<9?s:9;if(n>>>0<m>>>0){o=(1<<s)+-1|0;p=1e9>>>s;q=0;j=n;do{y=c[j>>2]|0;c[j>>2]=(y>>>s)+q;q=O(y&o,p)|0;j=j+4|0}while(j>>>0<m>>>0);j=(c[n>>2]|0)==0?n+4|0:n;if(!q){n=j;j=m}else{c[m>>2]=q;n=j;j=m+4|0}}else{n=(c[n>>2]|0)==0?n+4|0:n;j=m}m=t?D:n;m=(j-m>>2|0)>(g|0)?m+(g<<2)|0:j;j=(c[u>>2]|0)+s|0;c[u>>2]=j}while((j|0)<0);j=n;g=m}else{j=n;g=m}y=D;if(j>>>0<g>>>0){m=(y-j>>2)*9|0;o=c[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;m=m+1|0}while(o>>>0>=n>>>0)}}else m=0;t=(w|0)==103;v=(k|0)!=0;n=k-((w|0)!=102?m:0)+((v&t)<<31>>31)|0;if((n|0)<(((g-y>>2)*9|0)+-9|0)){n=n+9216|0;s=D+4+(((n|0)/9|0)+-1024<<2)|0;n=(n|0)%9|0;if((n|0)<8){o=10;while(1){o=o*10|0;if((n|0)<7)n=n+1|0;else break}}else o=10;p=c[s>>2]|0;q=(p>>>0)%(o>>>0)|0;n=(s+4|0)==(g|0);if(!(n&(q|0)==0)){r=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;e=q>>>0<x>>>0?.5:n&(q|0)==(x|0)?1.0:1.5;if(C){x=(a[B>>0]|0)==45;e=x?-e:e;r=x?-r:r}n=p-q|0;c[s>>2]=n;if(r+e!=r){x=n+o|0;c[s>>2]=x;if(x>>>0>999999999){m=s;while(1){n=m+-4|0;c[m>>2]=0;if(n>>>0<j>>>0){j=j+-4|0;c[j>>2]=0}x=(c[n>>2]|0)+1|0;c[n>>2]=x;if(x>>>0>999999999)m=n;else break}}else n=s;m=(y-j>>2)*9|0;p=c[j>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;m=m+1|0}while(p>>>0>=o>>>0)}}else n=s}else n=s;n=n+4|0;n=g>>>0>n>>>0?n:g;x=j}else{n=g;x=j}w=n;while(1){if(w>>>0<=x>>>0){u=0;break}j=w+-4|0;if(!(c[j>>2]|0))w=j;else{u=1;break}}g=0-m|0;do if(t){j=k+((v^1)&1)|0;if((j|0)>(m|0)&(m|0)>-5){o=i+-1|0;k=j+-1-m|0}else{o=i+-2|0;k=j+-1|0}j=h&8;if(!j){if(u?(A=c[w+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){n=0;j=10;do{j=j*10|0;n=n+1|0}while(!((A>>>0)%(j>>>0)|0|0))}else n=0;else n=9;j=((w-y>>2)*9|0)+-9|0;if((o|32|0)==102){s=j-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}else{s=j+m-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}}else s=j}else{o=i;s=h&8}while(0);t=k|s;p=(t|0)!=0&1;q=(o|32|0)==102;if(q){v=0;j=(m|0)>0?m:0}else{j=(m|0)<0?g:m;j=VK(j,((j|0)<0)<<31>>31,E)|0;n=E;if((n-j|0)<2)do{j=j+-1|0;a[j>>0]=48}while((n-j|0)<2);a[j+-1>>0]=(m>>31&2)+43;j=j+-2|0;a[j>>0]=o;v=j;j=n-j|0}j=C+1+k+p+j|0;WK(b,32,f,j,h);QK(b,B,C);WK(b,48,f,j,h^65536);if(q){o=x>>>0>D>>>0?D:x;s=G+9|0;p=s;q=G+8|0;n=o;do{m=VK(c[n>>2]|0,0,s)|0;if((n|0)==(o|0)){if((m|0)==(s|0)){a[q>>0]=48;m=q}}else if(m>>>0>G>>>0){VN(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}QK(b,m,p-m|0);n=n+4|0}while(n>>>0<=D>>>0);if(t|0)QK(b,134774,1);if(n>>>0<w>>>0&(k|0)>0)while(1){m=VK(c[n>>2]|0,0,s)|0;if(m>>>0>G>>>0){VN(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}QK(b,m,(k|0)<9?k:9);n=n+4|0;m=k+-9|0;if(!(n>>>0<w>>>0&(k|0)>9)){k=m;break}else k=m}WK(b,48,k+9|0,9,0)}else{t=u?w:x+4|0;if((k|0)>-1){u=G+9|0;s=(s|0)==0;g=u;p=0-F|0;q=G+8|0;o=x;do{m=VK(c[o>>2]|0,0,u)|0;if((m|0)==(u|0)){a[q>>0]=48;m=q}do if((o|0)==(x|0)){n=m+1|0;QK(b,m,1);if(s&(k|0)<1){m=n;break}QK(b,134774,1);m=n}else{if(m>>>0<=G>>>0)break;VN(G|0,48,m+p|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}while(0);F=g-m|0;QK(b,m,(k|0)>(F|0)?F:k);k=k-F|0;o=o+4|0}while(o>>>0<t>>>0&(k|0)>-1)}WK(b,48,k+18|0,18,0);QK(b,v,E-v|0)}WK(b,32,f,j,h^8192)}while(0);l=H;return ((j|0)<(f|0)?f:j)|0}function YK(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;z=c[j+4>>2]|0;return b|0}function ZK(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(_K(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0<d>>>0){f=bb[c[e+36>>2]&31](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){i=d;while(1){if(!i){h=0;g=b;break b}g=i+-1|0;if((a[b+g>>0]|0)==10)break;else i=g}f=bb[c[e+36>>2]&31](e,b,i)|0;if(f>>>0<i>>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}else{h=0;g=b}while(0);TN(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function _K(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function $K(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;TN(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function aL(b){b=b|0;var c=0,d=0,e=0,f=0;e=a[b>>0]|0;c=1;d=134776;f=97;while(1){if(e<<24>>24==f<<24>>24?(xJ(b,d)|0)==0:0)break;d=d+6|0;f=a[d>>0]|0;if(!(f<<24>>24)){c=0;break}else c=c+1|0}return c|0}function bL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;do if(b>>>0>6)d=0;else{pa(170780);if((b|0)!=6){d=cL(b,d)|0;Fa(170780);break}if(!d){d=176254;b=0}else{b=g;e=134849;f=b+16|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));f=0;do{b=qJ(d,59)|0;e=b-d|0;if((e|0)<16){TN(g|0,d|0,e|0)|0;a[g+e>>0]=0;d=(a[b>>0]|0)==0?d:b+1|0}cL(f,g)|0;f=f+1|0}while((f|0)!=6);d=176254;b=0}while(1){f=c[170740+(b<<2)>>2]|0;f=f|0?f+8|0:134865;e=rJ(f)|0;TN(d|0,f|0,e|0)|0;f=d+e|0;a[f>>0]=59;b=b+1|0;if((b|0)==6)break;else d=d+(e+1)|0}a[f>>0]=0;Fa(170780);d=176254}while(0);l=h;return d|0}function cL(a,b){a=a|0;b=b|0;if(!b)a=c[170740+(a<<2)>>2]|0;else{b=wK(a,b)|0;c[170740+(a<<2)>>2]=b;a=b}return (a|0?a+8|0:134865)|0}function dL(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function eL(a){a=a|0;return fL(a)|0}function fL(a){a=a|0;return PN(a|0)|0}function gL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)m=OK(f)|0;else m=0;g=e+-1|0;if((e|0)<2){n=f+74|0;l=a[n>>0]|0;a[n>>0]=l+255|l;if(m|0)PK(f);if(!g)a[b>>0]=0;else b=0}else{a:do if(g){k=f+4|0;l=f+8|0;e=b;while(1){h=c[k>>2]|0;o=h;p=(c[l>>2]|0)-o|0;i=ZJ(h,10,p)|0;j=(i|0)==0;i=j?p:1-o+i|0;i=i>>>0<g>>>0?i:g;TN(e|0,h|0,i|0)|0;h=(c[k>>2]|0)+i|0;c[k>>2]=h;e=e+i|0;i=g-i|0;if(!(j&(i|0)!=0)){n=17;break a}if(h>>>0>=(c[l>>2]|0)>>>0){g=dK(f)|0;if((g|0)<0)break;else j=g}else{c[k>>2]=h+1;j=d[h>>0]|0}g=i+-1|0;h=e+1|0;a[e>>0]=j;if(!((g|0)!=0&(j&255|0)!=10)){e=h;n=17;break a}else e=h}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)n=17;else b=0}else{e=b;n=17}while(0);if((n|0)==17)if(!b)b=0;else a[e>>0]=0;if(m)PK(f)}return b|0}function hL(b,c){b=b|0;c=c|0;var d=0;d=a[c>>0]|0;do if(d<<24>>24){b=WJ(b,d<<24>>24)|0;if(b){if(a[c+1>>0]|0)if(a[b+1>>0]|0){if(!(a[c+2>>0]|0)){b=iL(b,c)|0;break}if(a[b+2>>0]|0){if(!(a[c+3>>0]|0)){b=jL(b,c)|0;break}if(a[b+3>>0]|0)if(!(a[c+4>>0]|0)){b=kL(b,c)|0;break}else{b=lL(b,c)|0;break}else b=0}else b=0}else b=0}else b=0}while(0);return b|0}function iL(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=(d[c>>0]|0)<<8|(d[c+1>>0]|0);f=d[b>>0]|0;while(1){c=b+1|0;e=a[c>>0]|0;if(!(e<<24>>24))break;f=f<<8&65280|e&255;if((f|0)==(g|0))break;else b=c}return (e<<24>>24?b:0)|0}function jL(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8;e=b+2|0;c=a[e>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(c&255)<<8;if(!((b|0)==(f|0)|c<<24>>24==0))do{e=e+1|0;c=a[e>>0]|0;b=(b|c&255)<<8}while(!((b|0)==(f|0)|c<<24>>24==0));return (c<<24>>24?e+-2|0:0)|0}function kL(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8|(d[c+3>>0]|0);c=b+3|0;e=a[c>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8|e&255;if(!(e<<24>>24==0|(b|0)==(f|0)))do{c=c+1|0;e=a[c>>0]|0;b=b<<8|e&255}while(!(e<<24>>24==0|(b|0)==(f|0)));return (e<<24>>24?c+-3|0:0)|0}function lL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+1056|0;t=v+1024|0;u=v;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;e=a[d>>0]|0;a:do if(e<<24>>24){s=0;do{if(!(a[b+s>>0]|0)){e=0;break a}r=t+(((e&255)>>>5&255)<<2)|0;c[r>>2]=c[r>>2]|1<<(e&31);s=s+1|0;c[u+((e&255)<<2)>>2]=s;e=a[d+s>>0]|0}while(e<<24>>24!=0);m=s>>>0>1;if(m){f=0;k=-1;g=1;b:while(1){h=1;e=f;while(1){f=g;c:while(1){j=1;while(1){g=a[d+(j+k)>>0]|0;i=a[d+f>>0]|0;if(g<<24>>24!=i<<24>>24)break c;if((j|0)==(h|0))break;j=j+1|0;f=j+e|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}e=h+e|0;f=e+1|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}h=f-k|0;if((g&255)<=(i&255))break;g=f+1|0;if(g>>>0>=s>>>0){n=h;e=k;break b}else e=f}g=e+2|0;if(g>>>0>=s>>>0){n=1;break}else{f=e+1|0;k=e}}if(m){h=0;m=-1;i=1;while(1){f=1;g=h;while(1){h=i;d:while(1){k=1;while(1){i=a[d+(k+m)>>0]|0;j=a[d+h>>0]|0;if(i<<24>>24!=j<<24>>24)break d;if((k|0)==(f|0))break;k=k+1|0;h=k+g|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}g=f+g|0;h=g+1|0;if(h>>>0>=s>>>0){i=n;g=m;h=26;break a}}f=h-m|0;if((i&255)>=(j&255))break;i=h+1|0;if(i>>>0>=s>>>0){i=n;g=m;h=26;break a}else g=h}i=g+2|0;if(i>>>0>=s>>>0){i=n;f=1;h=26;break}else{h=g+1|0;m=g}}}else{i=n;f=1;g=-1;h=26}}else{i=1;e=-1;f=1;g=-1;h=26}}else{i=1;e=-1;s=0;f=1;g=-1;h=26}while(0);e:do if((h|0)==26){q=(g+1|0)>>>0>(e+1|0)>>>0;f=q?f:i;q=q?g:e;r=q+1|0;if(!(dL(d,d+f|0,r)|0))p=s-f|0;else{f=s-q+-1|0;p=0;f=(q>>>0>f>>>0?q:f)+1|0}k=s|63;m=s+-1|0;n=(p|0)!=0;o=s-f|0;e=b;j=0;g=b;while(1){h=e;do if((g-h|0)>>>0<s>>>0){i=ZJ(g,0,k)|0;if(i)if((i-h|0)>>>0<s>>>0){e=0;break e}else break;else{i=g+k|0;break}}else i=g;while(0);g=a[e+m>>0]|0;f:do if(!(1<<(g&31)&c[t+(((g&255)>>>5&255)<<2)>>2])){h=0;g=s}else{g=s-(c[u+((g&255)<<2)>>2]|0)|0;if(g|0){h=0;g=n&(j|0)!=0&g>>>0<f>>>0?o:g;break}g=r>>>0>j>>>0?r:j;h=a[d+g>>0]|0;g:do if(!(h<<24>>24))g=r;else{while(1){if(h<<24>>24!=(a[e+g>>0]|0))break;g=g+1|0;h=a[d+g>>0]|0;if(!(h<<24>>24)){g=r;break g}}h=0;g=g-q|0;break f}while(0);while(1){if(g>>>0<=j>>>0)break e;g=g+-1|0;if((a[d+g>>0]|0)!=(a[e+g>>0]|0)){h=p;g=f;break}}}while(0);e=e+g|0;j=h;g=i}}while(0);l=v;return e|0}function mL(a,b,c){a=a|0;b=b|0;c=c|0;nL(a,b,c)|0;return a|0}function nL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;a:do if(!((g^b)&3)){f=(e|0)!=0;if(f&(g&3|0)!=0)do{g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0}while(f&(d&3|0)!=0);if(f){if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=11}}else e=0}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);VN(b|0,0,e|0)|0;return b|0}function oL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[f+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);l=g;return d|0}function pL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=qL(a,b,f)|0;l=e;return d|0}function qL(a,b,c){a=a|0;b=b|0;c=c|0;return LK(a,2147483647,b,c)|0}function rL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+208|0;j=m+8|0;k=m;h=O(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0<h>>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)sL(a,d,e,f,j);else uL(a,d,e,k,f,0,j);if((f|0)==1){vL(k,1);f=0;break}else{vL(k,b);f=1;break}}else{sL(a,d,e,f,j);tL(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0<g>>>0)}else{f=1;b=1}uL(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1){if(!(c[g>>2]|0))break a}else if((f|0)>=2){vL(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;tL(k,1);uL(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);vL(k,1);b=c[k>>2]|1;c[k>>2]=b;h=a+i|0;uL(h,d,e,k,n,1,j);a=h;f=n;continue}b=wL(k)|0;tL(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}while(0);l=m;return}function sL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+240|0;m=n;c[m>>2]=a;a:do if((e|0)>1){k=0-b|0;g=a;j=e;e=1;while(1){h=g+k|0;i=j+-2|0;g=h+(0-(c[f+(i<<2)>>2]|0))|0;if((ab[d&63](a,g)|0)>-1?(ab[d&63](a,h)|0)>-1:0)break a;a=e+1|0;e=m+(e<<2)|0;if((ab[d&63](g,h)|0)>-1){c[e>>2]=g;e=j+-1|0}else{c[e>>2]=h;g=h;e=i}if((e|0)<=1){e=a;break a}j=e;e=a;a=c[m>>2]|0}}else e=1;while(0);yL(b,m,e);l=n;return}function tL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function uL(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+240|0;n=p+232|0;o=p;q=c[e>>2]|0;c[n>>2]=q;j=c[e+4>>2]|0;k=n+4|0;c[k>>2]=j;c[o>>2]=a;a:do if((q|0)!=1|(j|0)!=0?(m=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(ab[d&63](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+m|0;i=c[h+(f+-2<<2)>>2]|0;if((ab[d&63](g,j)|0)>-1){i=10;break a}if((ab[d&63](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[o+(e<<2)>>2]=j;q=wL(n)|0;tL(n,q);f=q+f|0;if(!((c[n>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((ab[d&63](a,c[o>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{q=j;e=g;g=1;j=a;a=q}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){yL(b,o,e);sL(a,b,d,f,h)}l=p;return}function vL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<<b;c[a>>2]=d<<b;return}function wL(a){a=a|0;var b=0;b=xL((c[a>>2]|0)+-1|0)|0;if(!b){b=xL(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function xL(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;do{a=a+1|0;b=b>>>1}while(!(b&1|0))}else a=0;else a=32;return a|0}function yL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;TN(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;TN(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);l=h;return}function zL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=MK(a,b,f)|0;l=e;return d|0}function AL(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;oa(0,e|0)|0;d=0;e=(c[e+4>>2]|0)*65537^(e>>>4)+b;while(1){a[b+d>>0]=(e&15)+65|e<<1&32;d=d+1|0;if((d|0)==6)break;else e=e>>>5}l=f;return b|0}function BL(a,b,c){a=a|0;b=b|0;c=c|0;c=$J(a,b,c,-2147483648,0)|0;return c|0}function CL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){VN(f|0,0,32)|0;e=a[d>>0]|0;if(e<<24>>24)do{i=f+(((e&255)>>>5&255)<<2)|0;c[i>>2]=c[i>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);d=a[b>>0]|0;if(!(d<<24>>24))e=b;else{e=b;do{if(c[f+(((d&255)>>>5&255)<<2)>>2]&1<<(d&31)|0)break a;e=e+1|0;d=a[e>>0]|0}while(d<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)e=qJ(b,e<<24>>24)|0;l=h;return e-b|0}function DL(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[42697]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(oL(b,d)|0)|0;if(!(a[b>>0]|0)){c[42697]=0;b=0;break}d=b+(CL(b,d)|0)|0;c[42697]=d;if(!(a[d>>0]|0)){c[42697]=0;break}else{c[42697]=d+1;a[d>>0]=0;break}}while(0);return b|0}function EL(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function FL(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!b){b=c[e>>2]|0;if(!b)b=0;else f=3}else f=3;do if((f|0)==3){b=b+(oL(b,d)|0)|0;if(!(a[b>>0]|0)){c[e>>2]=0;b=0;break}d=b+(CL(b,d)|0)|0;c[e>>2]=d;if(!(a[d>>0]|0)){c[e>>2]=0;break}else{c[e>>2]=d+1;a[d>>0]=0;break}}while(0);return b|0}function GL(a){a=a|0;var b=0,c=0;b=(rJ(a)|0)+1|0;c=ZI(b)|0;if(!c)a=0;else a=TN(c|0,a|0,b|0)|0;return a|0}function HL(a,b){a=a|0;b=b|0;return EL(a,b,(rJ(a)|0)+1|0)|0}function IL(a,b){a=a|0;b=b|0;xK(a+(rJ(a)|0)|0,b)|0;return a|0}function JL(b,c){b=b|0;c=c|0;c=b+(CL(b,c)|0)|0;return (a[c>>0]|0?c:0)|0}function KL(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(OK(a)|0)==0;a=(c[a>>2]|0)>>>4&1}else a=(c[a>>2]|0)>>>4&1;return a|0}function LL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=OK(a)|0;else f=0;ML(a);g=(c[a>>2]&1|0)!=0;if(!g){e=NL()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;OL()}b=PL(a)|0;b=$a[c[a+12>>2]&31](a)|0|b;d=c[a+92>>2]|0;if(d|0)_I(d);if(g){if(f|0)PK(a)}else _I(a);return b|0}function ML(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;a=a+112|0;if(b|0)c[b+112>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(RL()|0)+232|0;else a=a+116|0;c[a>>2]=b}return}function NL(){pa(170792);return 170800}function OL(){Fa(170792);return}function PL(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=QL(a)|0;break}d=(OK(a)|0)==0;b=QL(a)|0;if(!d)PK(a)}else{if(!(c[13917]|0))b=0;else b=PL(c[13917]|0)|0;a=c[(NL()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=OK(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=QL(a)|0|b;if(d|0)PK(a);a=c[a+56>>2]|0}while((a|0)!=0);OL()}while(0);return b|0}function QL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(bb[c[a+36>>2]&31](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0<g>>>0)bb[c[a+40>>2]&31](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function RL(){return AJ()|0}function SL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+64|0;j=k+40|0;h=k+24|0;g=k+16|0;f=k;i=k+56|0;if(WJ(134882,a[d>>0]|0)|0){e=ZI(1156)|0;if(!e)e=0;else{VN(e|0,0,124)|0;if(!(WJ(d,43)|0))c[e>>2]=(a[d>>0]|0)==114?8:4;if(WJ(d,101)|0){c[f>>2]=b;c[f+4>>2]=2;c[f+8>>2]=1;za(221,f|0)|0}if((a[d>>0]|0)==97){c[g>>2]=b;c[g+4>>2]=3;d=za(221,g|0)|0;if(!(d&1024)){c[h>>2]=b;c[h+4>>2]=4;c[h+8>>2]=d|1024;za(221,h|0)|0}f=c[e>>2]|128;c[e>>2]=f}else f=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+132;c[e+48>>2]=1024;d=e+75|0;a[d>>0]=-1;if((f&8|0)==0?(c[j>>2]=b,c[j+4>>2]=21523,c[j+8>>2]=i,(Ca(54,j|0)|0)==0):0)a[d>>0]=10;c[e+32>>2]=6;c[e+36>>2]=9;c[e+40>>2]=7;c[e+12>>2]=15;if(!(c[42676]|0))c[e+76>>2]=-1;TL(e)|0}}else{c[(jJ()|0)>>2]=22;e=0}l=k;return e|0}function TL(a){a=a|0;var b=0,d=0;b=NL()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;OL();return a|0}function UL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(c[c[(VL()|0)+188>>2]>>2]|0)==0;b=a[e>>0]|0;if(h){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[55208+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);c[(jJ()|0)>>2]=84;b=-1}while(0);l=j;return b|0}function VL(){return AJ()|0}function WL(a,b){a=a|0;b=b|0;var c=0;c=rJ(a)|0;return ((XL(a,1,c,b)|0)!=(c|0))<<31>>31|0}function XL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=O(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(OK(e)|0)==0;a=ZK(a,f,e)|0;if(!g)PK(e)}else a=ZK(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function YL(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(_K(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0<h>>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((bb[c[b+36>>2]&31](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);l=m;return f|0}function ZL(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=134867;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function _L(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g+40|0;e=g+8|0;d=g;c[d>>2]=a;c[d+4>>2]=b;d=ya(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(za(221,e|0)|0)>=0):0){ZL(e,a);c[f>>2]=e;c[f+4>>2]=b;b=iJ(xa(195,f|0)|0)|0}else b=iJ(d)|0;l=g;return b|0}function $L(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=iJ(Aa(33,e|0)|0)|0;l=d;return b|0}function aM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;h=i+32|0;g=i+16|0;e=i;if(WJ(134882,a[d>>0]|0)|0){f=bM(d)|0;c[e>>2]=b;c[e+4>>2]=f|32768;c[e+8>>2]=438;e=iJ(Ba(5,e|0)|0)|0;if((e|0)>=0){if(f&524288|0){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;za(221,g|0)|0}b=SL(e,d)|0;if(!b){c[h>>2]=e;Da(6,h|0)|0;b=0}}else b=0}else{c[(jJ()|0)>>2]=22;b=0}l=i;return b|0}function bM(b){b=b|0;var c=0,d=0,e=0;d=(WJ(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(WJ(b,120)|0)==0;d=e?d:d|128;b=(WJ(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function cM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=dM(a,b,f)|0;l=e;return d|0}function dM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+128|0;e=g;f=e;h=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=18;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=fM(e,b,d)|0;l=g;return h|0}function eM(a,b,c){a=a|0;b=b|0;c=c|0;return nM(a,b,c)|0}function fM(b,e,f){b=b|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=l;l=l+288|0;F=L+8|0;G=L+17|0;H=L;I=L+16|0;if((c[b+76>>2]|0)>-1)K=OK(b)|0;else K=0;i=a[e>>0]|0;a:do if(i<<24>>24){y=b+4|0;A=b+100|0;B=b+108|0;C=b+8|0;D=G+10|0;E=G+33|0;x=F+4|0;p=e;u=0;e=0;j=0;k=i;i=0;b:while(1){c:do if(!(XJ(k&255)|0)){k=(a[p>>0]|0)==37;d:do if(k){m=p+1|0;n=a[m>>0]|0;e:do switch(n<<24>>24){case 37:break d;case 42:{w=0;m=p+2|0;break}default:{if(_J(n&255)|0?(a[p+2>>0]|0)==36:0){w=gM(f,(d[m>>0]|0)+-48|0)|0;m=p+3|0;break e}v=(c[f>>2]|0)+(4-1)&~(4-1);w=c[v>>2]|0;c[f>>2]=v+4}}while(0);if(!(_J(d[m>>0]|0)|0))s=0;else{k=0;do{k=(k*10|0)+-48+(d[m>>0]|0)|0;m=m+1|0}while((_J(d[m>>0]|0)|0)!=0);s=k}p=a[m>>0]|0;n=m+1|0;if(p<<24>>24==109){k=(w|0)!=0&1;j=0;m=n;p=a[n>>0]|0;i=0}else k=0;n=m+1|0;switch(p<<24>>24){case 104:{v=(a[n>>0]|0)==104;p=v?-2:-1;m=v?m+2|0:n;break}case 108:{v=(a[n>>0]|0)==108;p=v?3:1;m=v?m+2|0:n;break}case 106:{p=3;m=n;break}case 116:case 122:{p=1;m=n;break}case 76:{p=2;m=n;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{p=0;break}default:{J=136;break b}}r=d[m>>0]|0;t=(r&47|0)==3;r=t?r|32:r;t=t?1:p;q=r&255;switch(q<<24>>24){case 99:{s=(s|0)>1?s:1;break}case 91:break;case 110:{hM(w,t,u,((u|0)<0)<<31>>31);n=u;break c}default:{aK(b,0);do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=cK(b)|0}while((XJ(n)|0)!=0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}u=(c[B>>2]|0)+u+n-(c[C>>2]|0)|0}}aK(b,s);p=c[y>>2]|0;n=c[A>>2]|0;if(p>>>0<n>>>0)c[y>>2]=p+1;else{if((cK(b)|0)<0){J=136;break b}n=c[A>>2]|0}if(n|0)c[y>>2]=(c[y>>2]|0)+-1;f:do switch(q<<24>>24){case 91:case 99:case 115:{v=(r|0)==99;g:do if((r|16|0)==115){VN(G|0,-1,257)|0;a[G>>0]=0;if((r|0)==115){a[E>>0]=0;a[D>>0]=0;a[D+1>>0]=0;a[D+2>>0]=0;a[D+3>>0]=0;a[D+4>>0]=0}}else{n=m+1|0;q=(a[n>>0]|0)==94;r=q&1;m=q?m+2|0:n;VN(G|0,r|0,257)|0;a[G>>0]=0;n=a[m>>0]|0;switch(n<<24>>24){case 45:{n=46;J=65;break}case 93:{n=94;J=65;break}default:{}}while(1){if((J|0)==65){J=0;a[G+n>>0]=r^1;n=m+1|0;m=n;n=a[n>>0]|0}h:do switch(n<<24>>24){case 0:{J=136;break b}case 93:break g;case 45:{q=m+1|0;n=a[q>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){p=(r^1)&255;m=m&255;do{m=m+1|0;a[G+m>>0]=p;n=a[q>>0]|0}while((m|0)<(n&255|0));m=q}else m=q;break}default:{}}while(0);n=(n&255)+1|0;J=65}}while(0);n=v?s+1|0:31;r=(t|0)==1;t=(k|0)!=0;i:do if(r){if(t){i=ZI(n<<2)|0;if(!i){j=0;i=0;J=136;break b}}else i=w;c[F>>2]=0;c[x>>2]=0;q=n;j=0;j:while(1){p=(i|0)==0;do{k:while(1){n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=cK(b)|0;if(!(a[G+(n+1)>>0]|0))break j;a[I>>0]=n;switch(rK(H,I,1,F)|0){case -1:{j=0;J=136;break b}case -2:break;default:break k}}if(!p){c[i+(j<<2)>>2]=c[H>>2];j=j+1|0}}while(!(t&(j|0)==(q|0)));j=q<<1|1;n=aJ(i,j<<2)|0;if(!n){j=0;J=136;break b}else{p=q;q=j;i=n;j=p}}if(!(iM(F)|0)){j=0;J=136;break b}else{q=j;j=0;p=i}}else{if(t){j=ZI(n)|0;if(!j){j=0;i=0;J=136;break b}else{p=n;i=0}while(1){do{n=c[y>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[y>>2]=n+1;n=d[n>>0]|0}else n=cK(b)|0;if(!(a[G+(n+1)>>0]|0)){q=i;p=0;i=0;break i}a[j+i>>0]=n;i=i+1|0}while((i|0)!=(p|0));i=p<<1|1;n=aJ(j,i)|0;if(!n){i=0;J=136;break b}else{q=p;p=i;j=n;i=q}}}if(!w)while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0;if(!(a[G+(i+1)>>0]|0)){q=0;j=0;p=0;i=0;break i}}else j=0;while(1){i=c[y>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[y>>2]=i+1;i=d[i>>0]|0}else i=cK(b)|0;if(!(a[G+(i+1)>>0]|0)){q=j;j=w;p=0;i=0;break i}a[w+j>>0]=i;j=j+1|0}}while(0);if(!(c[A>>2]|0))n=c[y>>2]|0;else{n=(c[y>>2]|0)+-1|0;c[y>>2]=n}n=n-(c[C>>2]|0)+(c[B>>2]|0)|0;if(!n)break b;if(!((n|0)==(s|0)|v^1))break b;do if(t)if(r){c[w>>2]=p;break}else{c[w>>2]=j;break}while(0);if(!v){if(p|0)c[p+(q<<2)>>2]=0;if(!j){j=0;break f}a[j+q>>0]=0}break}case 120:case 88:case 112:{n=16;J=124;break}case 111:{n=8;J=124;break}case 117:case 100:{n=10;J=124;break}case 105:{n=0;J=124;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{o=+jM(b,t,0);if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if(w)switch(t|0){case 0:{g[w>>2]=o;break f}case 1:{h[w>>3]=o;break f}case 2:{h[w>>3]=o;break f}default:break f}break}default:{}}while(0);do if((J|0)==124){J=0;n=bK(b,n,0,-1,-1)|0;if((c[B>>2]|0)==((c[C>>2]|0)-(c[y>>2]|0)|0))break b;if((w|0)!=0&(r|0)==112){c[w>>2]=n;break}else{hM(w,t,n,z);break}}while(0);e=e+((w|0)!=0&1)|0;n=(c[B>>2]|0)+u+(c[y>>2]|0)-(c[C>>2]|0)|0;break c}while(0);m=p+(k&1)|0;aK(b,0);k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=cK(b)|0;if((k|0)!=(d[m>>0]|0)){J=22;break b}n=u+1|0}else{m=p;while(1){k=m+1|0;if(!(XJ(d[k>>0]|0)|0))break;else m=k}aK(b,0);do{k=c[y>>2]|0;if(k>>>0<(c[A>>2]|0)>>>0){c[y>>2]=k+1;k=d[k>>0]|0}else k=cK(b)|0}while((XJ(k)|0)!=0);if(!(c[A>>2]|0))k=c[y>>2]|0;else{k=(c[y>>2]|0)+-1|0;c[y>>2]=k}n=(c[B>>2]|0)+u+k-(c[C>>2]|0)|0}while(0);p=m+1|0;k=a[p>>0]|0;if(!(k<<24>>24))break a;else u=n}if((J|0)==22){if(c[A>>2]|0)c[y>>2]=(c[y>>2]|0)+-1;if((e|0)!=0|(k|0)>-1)break;else{e=0;J=137}}else if((J|0)==136)if(!e){e=k;J=137}if((J|0)==137){k=e;e=-1}if(k){_I(j);_I(i)}}else e=0;while(0);if(K|0)PK(b);l=L;return e|0}function gM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}l=e;return a|0}function hM(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function iM(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0&1;return a|0}function jM(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+100|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=cK(b)|0}while((XJ(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=cK(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;do{if((h|32|0)!=(a[134886+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=cK(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[134895+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=cK(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=cK(b)|0;if((e|0)==40)e=1;else{if(!(c[n>>2]|0)){g=s;break a}c[o>>2]=(c[o>>2]|0)+-1;g=s;break a}while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=cK(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){c[(jJ()|0)>>2]=22;aK(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=cK(b)|0;if((e|32|0)==120){g=+kM(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+lM(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;c[(jJ()|0)>>2]=22;aK(b,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*t}while(0);return +g}function kM(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=a+4|0;i=c[y>>2]|0;x=a+100|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=0}else{j=cK(a)|0;l=0}a:while(1){switch(j|0){case 46:{w=8;break a}case 48:break;default:{s=0;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0;break a}}i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0;l=1;continue}else{j=cK(a)|0;l=1;continue}}if((w|0)==8){i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;j=d[i>>0]|0}else j=cK(a)|0;if((j|0)==48){l=0;j=0;do{i=c[y>>2]|0;if(i>>>0<(c[x>>2]|0)>>>0){c[y>>2]=i+1;m=d[i>>0]|0}else m=cK(a)|0;l=HN(l|0,j|0,-1,-1)|0;j=z}while((m|0)==48);s=1;n=0;o=1.0;h=0.0;i=0;t=1;v=0;u=0}else{s=1;n=0;o=1.0;h=0.0;i=0;m=j;t=l;v=0;u=0;l=0;j=0}}while(1){q=m+-48|0;p=m|32;if(q>>>0>=10){r=(m|0)==46;if(!(r|(p+-97|0)>>>0<6))break;if(r)if(!s){s=1;k=o;r=t;l=u;j=v;q=u;p=v}else{m=46;break}else w=20}else w=20;if((w|0)==20){w=0;m=(m|0)>57?p+-87|0:q;do if(!((v|0)<0|(v|0)==0&u>>>0<8))if((v|0)<0|(v|0)==0&u>>>0<14){o=o*.0625;k=o;h=h+o*+(m|0);break}else{t=(n|0)!=0|(m|0)==0;n=t?n:1;k=o;h=t?h:h+o*.5;break}else{k=o;i=m+(i<<4)|0}while(0);q=HN(u|0,v|0,1,0)|0;r=1;p=z}m=c[y>>2]|0;if(m>>>0<(c[x>>2]|0)>>>0){c[y>>2]=m+1;o=k;m=d[m>>0]|0;t=r;v=p;u=q;continue}else{o=k;m=cK(a)|0;t=r;v=p;u=q;continue}}do if(!t){i=(c[x>>2]|0)==0;if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(g){if(!i)c[y>>2]=(c[y>>2]|0)+-1;if(!((s|0)==0|i))c[y>>2]=(c[y>>2]|0)+-1}else aK(a,0);h=+(f|0)*0.0}else{p=(s|0)==0;q=p?u:l;p=p?v:j;if((v|0)<0|(v|0)==0&u>>>0<8){l=u;j=v;while(1){i=i<<4;w=l;l=HN(l|0,j|0,1,0)|0;if(!((j|0)<0|(j|0)==0&w>>>0<7)){n=i;break}else j=z}}else n=i;if((m|32|0)==112){j=mM(a,g)|0;i=z;if((j|0)==0&(i|0)==-2147483648){if(!g){aK(a,0);h=0.0;break}if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}}}else if(!(c[x>>2]|0)){j=0;i=0}else{c[y>>2]=(c[y>>2]|0)+-1;j=0;i=0}l=ON(q|0,p|0,2)|0;l=HN(l|0,z|0,-32,-1)|0;l=HN(l|0,z|0,j|0,i|0)|0;i=z;if(!n){h=+(f|0)*0.0;break}y=0-e|0;g=((y|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>y>>>0){c[(jJ()|0)>>2]=34;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}y=e+-106|0;g=((y|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0<y>>>0){c[(jJ()|0)>>2]=34;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((n|0)>-1){j=n;do{y=!(h>=.5);j=j<<1|(y^1)&1;h=h+(y?h:h+-1.0);l=HN(l|0,i|0,-1,-1)|0;i=z}while((j|0)>-1);o=h;m=j}else{o=h;m=n}y=((b|0)<0)<<31>>31;e=IN(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=HN(e|0,z|0,l|0,i|0)|0;e=z;if((e|0)<(y|0)|(e|0)==(y|0)&i>>>0<b>>>0)if((i|0)>0)w=59;else{j=0;i=84;w=61}else{i=b;w=59}if((w|0)==59)if((i|0)<53){j=i;i=84-i|0;w=61}else{k=0.0;h=+(f|0)}if((w|0)==61){h=+(f|0);k=+LJ(+IJ(1.0,i),h);i=j}f=(m&1|0)==0&(o!=0.0&(i|0)<32);h=(f?0.0:o)*h+(k+h*+((m+(f&1)|0)>>>0))-k;if(!(h!=0.0))c[(jJ()|0)>>2]=34;h=+MJ(h,l)}while(0);return +h}function lM(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+512|0;G=J;H=f+e|0;I=0-H|0;D=a+4|0;E=a+100|0;k=0;a:while(1){switch(b|0){case 46:{A=6;break a}case 48:break;default:{v=0;p=k;q=0;o=0;break a}}b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0;k=1;continue}else{b=cK(a)|0;k=1;continue}}if((A|0)==6){b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=cK(a)|0;if((b|0)==48){k=0;b=0;while(1){k=HN(k|0,b|0,-1,-1)|0;o=z;b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=cK(a)|0;if((b|0)==48)b=o;else{v=1;p=1;q=k;break}}}else{v=1;p=k;q=0;o=0}}c[G>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){C=G+496|0;w=0;k=0;u=0;x=v;y=p;A=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;q=p;o=n}else break c;else{p=HN(p|0,n|0,1,0)|0;n=z;v=(b|0)!=48;if((k|0)>=125){if(!v)break;c[C>>2]=c[C>>2]|1;break}m=G+(k<<2)|0;if(!w)b=A;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;k=k+(y&1)|0;u=v?p:u;y=1}while(0);b=c[D>>2]|0;if(b>>>0<(c[E>>2]|0)>>>0){c[D>>2]=b+1;b=d[b>>0]|0}else b=cK(a)|0;A=b+-48|0;m=(b|0)==46;if(!(m|A>>>0<10)){v=x;m=y;A=29;break b}}b=w;m=(y|0)!=0;A=37}else{w=0;k=0;u=0;m=p;p=0;n=0;A=29}while(0);do if((A|0)==29){C=(v|0)==0;q=C?p:q;o=C?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;A=37;break}else{b=w;A=39;break}m=mM(a,h)|0;b=z;if((m|0)==0&(b|0)==-2147483648){if(!h){aK(a,0);i=0.0;break}if(!(c[E>>2]|0)){m=0;b=0}else{c[D>>2]=(c[D>>2]|0)+-1;m=0;b=0}}y=HN(m|0,b|0,q|0,o|0)|0;b=w;o=z;A=41}while(0);if((A|0)==37)if(c[E>>2]|0){c[D>>2]=(c[D>>2]|0)+-1;if(m){y=q;A=41}else A=40}else A=39;if((A|0)==39)if(m){y=q;A=41}else A=40;do if((A|0)==40){c[(jJ()|0)>>2]=22;aK(a,0);i=0.0}else if((A|0)==41){m=c[G>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((y|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;E=((a|0)<0)<<31>>31;if((o|0)>(E|0)|(o|0)==(E|0)&y>>>0>a>>>0){c[(jJ()|0)>>2]=34;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;E=((a|0)<0)<<31>>31;if((o|0)<(E|0)|(o|0)==(E|0)&y>>>0<a>>>0){c[(jJ()|0)>>2]=34;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=G+(k<<2)|0;m=c[n>>2]|0;while(1){m=m*10|0;if((b|0)>=8)break;else b=b+1|0}c[n>>2]=m}k=k+1|0}if((u|0)<9?(u|0)<=(y|0)&(y|0)<18:0){if((y|0)==9){i=+(g|0)*+((c[G>>2]|0)>>>0);break}if((y|0)<9){i=+(g|0)*+((c[G>>2]|0)>>>0)/+(c[56536+(8-y<<2)>>2]|0);break}a=e+27+(O(y,-3)|0)|0;b=c[G>>2]|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[56536+(y+-10<<2)>>2]|0);break}}b=(y|0)%9|0;if(!b){b=0;n=0}else{u=(y|0)>-1?b:b+9|0;p=c[56536+(8-u<<2)>>2]|0;if(k){q=1e9/(p|0)|0;n=0;o=0;m=y;b=0;do{D=G+(b<<2)|0;E=c[D>>2]|0;a=((E>>>0)/(p>>>0)|0)+n|0;c[D>>2]=a;n=O(q,(E>>>0)%(p>>>0)|0)|0;a=(b|0)==(o|0)&(a|0)==0;m=a?m+-9|0:m;o=a?o+1&127:o;b=b+1|0}while((b|0)!=(k|0));if(!n)n=o;else{c[G+(k<<2)>>2]=n;n=o;k=k+1|0}}else{n=0;k=0;m=y}b=0;y=9-u+m|0}d:while(1){u=(y|0)<18;v=(y|0)==18;w=G+(n<<2)|0;while(1){if(!u){if(!v){m=y;break d}if((c[w>>2]|0)>>>0>=9007199){m=18;break d}}m=0;x=k;k=k+127|0;while(1){o=k&127;p=G+(o<<2)|0;k=ON(c[p>>2]|0,0,29)|0;k=HN(k|0,z|0,m|0,0)|0;m=z;if(m>>>0>0|(m|0)==0&k>>>0>1e9){q=LN(k|0,m|0,1e9,0)|0;k=MN(k|0,m|0,1e9,0)|0}else q=0;c[p>>2]=k;a=(o|0)==(n|0);x=(k|0)==0&(((o|0)!=(x+127&127|0)|a)^1)?o:x;if(a)break;else{m=q;k=o+-1|0}}b=b+-29|0;if(q|0)break;else k=x}n=n+127&127;k=x+127&127;m=G+((x+126&127)<<2)|0;if((n|0)==(x|0))c[m>>2]=c[m>>2]|c[G+(k<<2)>>2];else k=x;c[G+(n<<2)>>2]=q;y=y+9|0}e:while(1){w=k+1&127;x=G+((k+127&127)<<2)|0;while(1){q=(m|0)==18;v=(m|0)>27?9:1;y=n;while(1){p=0;while(1){n=p+y&127;if((n|0)==(k|0)){F=2;A=88;break}n=c[G+(n<<2)>>2]|0;o=c[56568+(p<<2)>>2]|0;if(n>>>0<o>>>0){F=2;A=88;break}if(n>>>0>o>>>0)break;n=p+1|0;if((p|0)<1)p=n;else{F=n;A=88;break}}if((A|0)==88?(A=0,q&(F|0)==2):0){i=0.0;o=0;break e}b=v+b|0;if((y|0)==(k|0))y=k;else break}q=(1<<v)+-1|0;u=1e9>>>v;p=0;n=y;o=y;do{D=G+(o<<2)|0;E=c[D>>2]|0;a=(E>>>v)+p|0;c[D>>2]=a;p=O(E&q,u)|0;a=(o|0)==(n|0)&(a|0)==0;m=a?m+-9|0:m;n=a?n+1&127:n;o=o+1&127}while((o|0)!=(k|0));if(!p)continue;if((w|0)!=(n|0))break;c[x>>2]=c[x>>2]|1}c[G+(k<<2)>>2]=p;k=w}do{n=o+y&127;m=k+1&127;if((n|0)==(k|0)){c[G+(m+-1<<2)>>2]=0;k=m}i=i*1.0e9+ +((c[G+(n<<2)>>2]|0)>>>0);o=o+1|0}while((o|0)!=2);t=+(g|0);j=i*t;o=b+53|0;p=o-f|0;q=(p|0)<(e|0);n=q?((p|0)>0?p:0):e;if((n|0)<53){K=+LJ(+IJ(1.0,105-n|0),j);r=+NJ(j,+IJ(1.0,53-n|0));s=K;i=r;r=K+(j-r)}else{s=0.0;i=0.0;r=j}m=y+2&127;if((m|0)!=(k|0)){m=c[G+(m<<2)>>2]|0;do if(m>>>0>=5e8){if((m|0)!=5e8){i=t*.75+i;break}if((y+3&127|0)==(k|0)){i=t*.5+i;break}else{i=t*.75+i;break}}else{if((m|0)==0?(y+3&127|0)==(k|0):0)break;i=t*.25+i}while(0);if((53-n|0)>1?!(+NJ(i,1.0)!=0.0):0)j=i+1.0;else j=i}else j=i;i=r+j-s;do if((o&2147483647|0)>(-2-H|0)){H=!(+B(+i)>=9007199254740992.0);b=b+((H^1)&1)|0;i=H?i:i*.5;if((b+50|0)<=(I|0)?!(j!=0.0&(q&((n|0)!=(p|0)|H))):0)break;c[(jJ()|0)>>2]=34}while(0);i=+MJ(i,b)}while(0);l=J;return +i}function mM(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;h=a+4|0;e=c[h>>2]|0;i=a+100|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[i>>2]|0)!=0:0)c[h>>2]=(c[h>>2]|0)+-1;break}default:f=0}if((e+-48|0)>>>0>9)if(!(c[i>>2]|0)){f=-2147483648;e=0}else{c[h>>2]=(c[h>>2]|0)+-1;f=-2147483648;e=0}else{g=0;do{g=e+-48+(g*10|0)|0;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0}while((e+-48|0)>>>0<10&(g|0)<214748364);b=((g|0)<0)<<31>>31;if((e+-48|0)>>>0<10)do{b=GN(g|0,b|0,10,0)|0;g=z;e=HN(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;g=HN(e|0,z|0,b|0,g|0)|0;b=z;e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&g>>>0<2061584302));if((e+-48|0)>>>0<10)do{e=c[h>>2]|0;if(e>>>0<(c[i>>2]|0)>>>0){c[h>>2]=e+1;e=d[e>>0]|0}else e=cK(a)|0}while((e+-48|0)>>>0<10);if(c[i>>2]|0)c[h>>2]=(c[h>>2]|0)+-1;i=(f|0)!=0;e=IN(0,0,g|0,b|0)|0;f=i?z:b;e=i?e:g}z=f;return e|0}function nM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=ZJ(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0<d>>>0?f:d;TN(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function oM(a,b,c){a=a|0;b=b|0;c=c|0;return pM(a,b,c)|0}function pM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(OK(a)|0)==0;b=qM(a,b,d)|0;if(!e)PK(a)}else b=qM(a,b,d)|0;return b|0}function qM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;e=a+20|0;f=a+28|0;if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0?(bb[c[a+36>>2]&31](a,0,0)|0,(c[e>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[f>>2]=0;c[e>>2]=0;if((bb[c[a+40>>2]&31](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function rM(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;while(1){e=b+1|0;if(!(XJ(a[b>>0]|0)|0))break;else b=e}d=a[b>>0]|0;switch(d<<24>>24|0){case 45:{b=1;f=5;break}case 43:{b=0;f=5;break}default:{g=0;c=b;b=d}}if((f|0)==5){g=b;c=e;b=a[e>>0]|0}if(!(_J(b<<24>>24)|0))b=0;else{b=0;do{b=(b*10|0)+48-(a[c>>0]|0)|0;c=c+1|0}while((_J(a[c>>0]|0)|0)!=0)}return (g|0?b:0-b|0)|0}function sM(a){a=a|0;return +(+tM(a,0))}function tM(a,b){a=a|0;b=b|0;return +(+uM(a,b,1))}function uM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;i=l;l=l+128|0;h=i;f=h;g=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=h+4|0;c[f>>2]=a;g=h+8|0;c[g>>2]=-1;c[h+44>>2]=a;c[h+76>>2]=-1;aK(h,0);e=+jM(h,d,1);d=(c[f>>2]|0)-(c[g>>2]|0)+(c[h+108>>2]|0)|0;if(b|0)c[b>>2]=d|0?a+d|0:a;l=i;return +e}function vM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!c)b=0;else{h=b;while(1){g=c>>>1;b=h+(O(g,d)|0)|0;f=ab[e&63](a,b)|0;if(!f)break a;if((c|0)==1){b=0;break a}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;break}else h=f?h:b}}while(0);return b|0}function wM(a,c){a=a|0;c=c|0;var d=0,f=0,g=0;g=a+2|0;f=a+4|0;d=GN((e[c+2>>1]|0)<<16|(e[c>>1]|0)|0,e[c+4>>1]|0|0,(e[g>>1]|0)<<16|(e[a>>1]|0)|0,e[f>>1]|0|0)|0;c=HN(d|0,z|0,e[c+6>>1]|0|0,0)|0;d=z;b[a>>1]=c;a=NN(c|0,d|0,16)|0;b[g>>1]=a;b[f>>1]=d;z=d&65535;return c|0}function xM(a){a=a|0;TN(173876,58668,6)|0;TN(58668,a|0,6)|0;return 173876}function yM(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=13070;b[d+2>>1]=a;b[d+4>>1]=a>>>16;xM(d)|0;l=c;return}function zM(a){a=a|0;var b=0;b=wM(a,58674)|0;b=ON(b|0,z|0,4)|0;a=z|1072693248;c[j>>2]=b;c[j+4>>2]=a;return +(+h[j>>3]+-1.0)}function AM(){return +(+zM(58668))}function BM(a,b){a=a|0;b=b|0;if(!a)b=$I(1,24)|0;else VN(b|0,0,24)|0;return b|0}function CM(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{_I(c[b>>2]|0);d=b;b=c[b+4>>2]|0;_I(d)}while((b|0)!=0);_I(a);return}function DM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;h=a+16|0;a:do if(!(c[h>>2]|0)){k=a+12|0;g=c[k>>2]|0;if(g>>>0<f>>>0){do if(b)if(!d){c[h>>2]=1;b=0;break a}else{h=a+8|0;c[h>>2]=d;g=1024;b=d;break}else{g=f<<3;g=g>>>0>1024?g:1024;j=ZI(8)|0;if(!j){c[h>>2]=1;b=0;break a}b=ZI(g)|0;c[j>>2]=b;d=b;if(!b){_I(j);c[h>>2]=1;b=0;break a}c[j+4>>2]=0;h=a+4|0;i=c[h>>2]|0;if(i|0)c[i+4>>2]=j;if(!(c[a>>2]|0))c[a>>2]=j;c[h>>2]=j;h=a+8|0;c[h>>2]=d}while(0);c[k>>2]=g}else{h=a+8|0;b=c[h>>2]|0;d=b}d=d+f&3;d=((d|0)==0?0:4-d|0)+f|0;c[h>>2]=b+d;c[k>>2]=g-d;if(e)VN(b|0,0,d|0)|0}else b=0;while(0);return b|0}function EM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=l;l=l+48|0;h=v;t=FM()|0;a:do if(!t)b=12;else{u=BM(0,0)|0;if(!u){GM(t);b=12;break}VN(h|0,0,36)|0;c[h>>2]=u;c[h+4>>2]=t;c[h+16>>2]=b;c[h+32>>2]=d;e=h+28|0;c[e>>2]=-1;b=HM(h)|0;b:do if(!b){g=h+20|0;r=c[g>>2]|0;c[a>>2]=r+-1;i=c[h+8>>2]|0;if((c[e>>2]|0)<(r|0)){r=$I(1,68)|0;if(r){q=(c[e>>2]|0)>>>31^1;c[r+60>>2]=q;c[r+64>>2]=0;c[r+28>>2]=c[g>>2];if((d&8|0)==0|(q|0)!=0){b=IM(0,t,i,r)|0;if(b|0){g=r;h=0;i=0;f=0;e=0;break}e=r+40|0;b=c[e>>2]|0;if((b|0)>0){b=ZI((b<<2)+4|0)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+32>>2]=b;VN(b|0,-1,(c[e>>2]<<2)+4|0)|0;f=b;b=c[e>>2]|0}else f=0;q=$I(b<<1|1,4)|0;c[r+36>>2]=q;if(!q){g=r;h=0;i=0;b=12;f=0;e=0;break}b=$I(c[g>>2]|0,12)|0;if(!b){g=r;h=0;i=0;b=12;f=0;e=0;break}c[r+16>>2]=b;b=IM(u,t,i,r)|0;if(!b)b=f;else{g=r;h=0;i=0;f=0;e=0;break}}else b=0;p=h+24|0;b=JM(u,t,i,p,b)|0;if(!b){b=c[p>>2]|0;c[p>>2]=b+1;b=KM(u,0,0,b)|0;if((b|0)!=0?(s=LM(u,i,b)|0,(s|0)!=0):0){b=MM(u,t,s)|0;if(!b){o=ZI(c[p>>2]<<2)|0;if(o){q=ZI(c[p>>2]<<2)|0;if(q){b=c[p>>2]|0;if((b|0)>0)VN(o|0,0,b<<2|0)|0;NM(s,0,o,0)|0;f=c[p>>2]|0;if((f|0)>0){b=0;e=0;do{c[q+(e<<2)>>2]=b;n=o+(e<<2)|0;b=b+1+(c[n>>2]|0)|0;c[n>>2]=0;e=e+1|0}while((e|0)<(f|0));k=b}else k=0;m=$I(k+1|0,32)|0;if(m){c[r>>2]=m;n=r+4|0;c[n>>2]=k;b=NM(s,m,o,q)|0;if(!b){c[r+20>>2]=0;f=s+24|0;b=c[f>>2]|0;e=0;while(1){e=e+1|0;if((c[b>>2]|0)<=-1)break;else b=b+32|0}j=$I(e,32)|0;if(!j){g=r;h=o;i=q;b=12;f=o;e=q}else{c[r+8>>2]=j;f=c[f>>2]|0;e=c[f>>2]|0;if((e|0)>-1){b=0;do{c[j+(b<<5)+8>>2]=m+(c[q+(e<<2)>>2]<<5);c[j+(b<<5)+12>>2]=e;h=j+(b<<5)+16|0;c[h>>2]=0;i=f+12|0;g=c[i>>2]|0;if(g|0){e=0;do{w=e;e=e+1|0}while((c[g+(w<<2)>>2]|0)>-1);e=e<<2;g=ZI(e)|0;c[h>>2]=g;if(!g){g=r;h=o;i=q;b=12;f=o;e=q;break b}TN(g|0,c[i>>2]|0,e|0)|0}c[j+(b<<5)+20>>2]=c[f+16>>2];b=b+1|0;f=f+32|0;e=c[f>>2]|0}while((e|0)>-1)}else b=0;c[j+(b<<5)+8>>2]=0;c[n>>2]=k;c[r+12>>2]=m+(c[q+(c[c[s+28>>2]>>2]<<2)>>2]<<5);c[r+52>>2]=c[p>>2];c[r+56>>2]=d;CM(u);GM(t);_I(o);_I(q);c[a+4>>2]=r;b=0;break a}}else{g=r;h=o;i=q;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=q}}else{g=r;h=o;i=q;b=12;f=o;e=0}}else{g=r;h=o;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=r;h=0;i=0;f=0;e=0}}else{g=r;h=0;i=0;b=12;f=0;e=0}}else{g=0;h=0;i=0;b=6;f=0;e=0}}else{g=0;h=0;i=0;f=0;e=0}while(0);CM(u);GM(t);if(h|0)_I(f);if(i|0)_I(e);c[a+4>>2]=g;OM(a)}while(0);l=v;return b|0}function FM(){var a=0,b=0;a=ZI(20)|0;do if(a){b=ZI(2048)|0;c[a+16>>2]=b;if(!b){_I(a);a=0;break}else{c[a>>2]=512;c[a+4>>2]=1024e3;c[a+8>>2]=128;c[a+12>>2]=0;break}}while(0);return a|0}function GM(a){a=a|0;_I(c[a+16>>2]|0);_I(a);return}function HM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;p=u+4|0;q=u;r=c[b+32>>2]&1;s=b+16|0;e=c[s>>2]|0;t=c[b+4>>2]|0;d=SM(t,0)|0;a:do if(!d){m=(r|0)!=0;n=b+8|0;o=b+12|0;d=0;k=1;b:while(1){g=0;h=d;f=0;c:while(1){d=a[e>>0]|0;if(m){if(d<<24>>24==40)break;if((h|0)!=0&d<<24>>24==41)j=13;else j=14}else if(d<<24>>24==92)switch(a[e+1>>0]|0){case 40:break c;case 41:{j=13;break}default:j=14}else j=14;if((j|0)==13){j=0;i=KM(c[b>>2]|0,-1,-1,-1)|0;c[n>>2]=i;if(!i){d=12;break a}else i=f}else if((j|0)==14){j=0;d=fN(b,e)|0;if(d|0)break a;i=f;e=c[o>>2]|0}d:while(1){e:while(1){d=a[e>>0]|0;switch(d<<24>>24){case 42:case 92:break;default:{if(!m)break e;switch(d<<24>>24){case 123:case 63:case 43:break;default:break e}}}d=d<<24>>24==92;if(m&d)break;f=e+1|0;if(d)switch(a[f>>0]|0){case 123:case 63:case 43:break;default:break e}e=d?f:e;if((!m?(e|0)==((c[s>>2]|0)+1|0):0)?(a[e+-1>>0]|0)==94:0)break;if((a[e>>0]|0)==123){e=gN(e+1|0,r,p,q)|0;if(!e){j=28;break b}d=c[q>>2]|0;f=c[b>>2]|0;if(!d)d=KM(f,-1,-1,-1)|0;else j=36}else{c[p>>2]=0;c[q>>2]=-1;d=a[e>>0]|0;if(d<<24>>24==43){c[p>>2]=1;d=a[e>>0]|0}if(d<<24>>24==63){c[q>>2]=1;d=1}else d=-1;e=e+1|0;f=c[b>>2]|0;j=36}if((j|0)==36){j=0;d=aN(f,c[n>>2]|0,c[p>>2]|0,d,0)|0}c[n>>2]=d;if(!d){d=12;break a}}d=LM(c[b>>2]|0,g,c[n>>2]|0)|0;f=a[e>>0]|0;f:do if(m){if(f<<24>>24==124){j=40;break d}if((h|0)!=0&f<<24>>24==41|f<<24>>24==0)j=47;else{g=d;f=i;continue c}}else{switch(f<<24>>24){case 0:{j=47;break f}case 92:break;default:{g=d;f=i;continue c}}switch(a[e+1>>0]|0){case 124:case 41:break;default:{g=d;f=i;continue c}}d=bN(c[b>>2]|0,i,d)|0;if((a[e+1>>0]|0)==124){f=2;break d}if(!h){d=8;break a}e=e+2|0;f=92}while(0);if((j|0)==47){j=0;d=bN(c[b>>2]|0,i,d)|0;e=f<<24>>24==41?e+1|0:e}d=hN(b,d,TM(t)|0)|0;if(d|0)break a;d=f<<24>>24==0;f=(h|0)<1;if(f&d){j=50;break b}if(f|d){d=8;break a}g=UM(t)|0;h=h+-1|0;i=UM(t)|0}if((j|0)==40){f=1;d=bN(c[b>>2]|0,i,d)|0}g=0;e=e+f|0;f=d}d=RM(t,f)|0;if(d|0)break a;d=RM(t,g)|0;if(d|0)break a;d=SM(t,k)|0;if(d|0)break a;d=h+1|0;k=k+1|0;e=m?e+1|0:e+2|0}if((j|0)==28){d=10;break}else if((j|0)==50){c[b+20>>2]=k;d=0;break}}while(0);l=u;return d|0}function IM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=QM(d)|0;y=(b|0)==0|(f|0)==0;if(!y){c[f+48>>2]=0;c[c[f+36>>2]>>2]=-1}g=f+28|0;z=ZI((c[g>>2]<<3)+8|0)|0;do if(!z)g=12;else{c[z>>2]=-1;A=ZI((c[g>>2]<<2)+4|0)|0;if(!A){_I(z);g=12;break}c[A>>2]=-1;B=ZI((c[g>>2]<<3)+8|0)|0;if(!B){_I(z);_I(A);g=12;break}h=c[g>>2]|0;g=0;do{c[B+(g<<3)>>2]=-1;g=g+1|0}while(g>>>0<=h>>>0);RM(d,e)|0;g=SM(d,0)|0;a:do if((g|0)!=0|(QM(d)|0)<=(x|0)){e=z;n=0;h=0;m=0;l=-1}else{u=f+32|0;v=f+36|0;w=f+16|0;e=z;n=0;h=0;m=0;t=1;l=-1;s=0;while(1){b:do switch(TM(d)|0){case 6:{i=TM(d)|0;g=0;do{j=e+(g<<2)|0;g=g+1|0}while((c[j>>2]|0)>-1);c[j>>2]=i<<1|1;c[e+(g<<2)>>2]=-1;g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[A+(g+-1<<2)>>2]=-1;g=0;j=t;i=s;break}case 0:{q=UM(d)|0;r=q+12|0;j=c[r>>2]|0;if((j|0)>-1){g=0;do{i=e+(g<<2)|0;g=g+1|0}while((c[i>>2]|0)>-1);c[i>>2]=j<<1;c[e+(g<<2)>>2]=-1;if(!y){g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[(c[w>>2]|0)+(j*12|0)+8>>2]=0;if((g|0)>0){g=ZI((g<<2)+4|0)|0;if(!g){g=12;j=t;i=s;break b}c[(c[w>>2]|0)+(j*12|0)+8>>2]=g;i=c[A>>2]|0;if((i|0)>-1){k=0;j=g;do{c[j>>2]=i;k=k+1|0;i=c[A+(k<<2)>>2]|0;j=g+(k<<2)|0}while((i|0)>-1);g=j}c[g>>2]=-1}}g=SM(d,c[r>>2]|0)|0;if(g|0){j=t;i=s;break b}g=SM(d,6)|0;if(g|0){j=t;i=s;break b}}c:do switch(c[q>>2]|0){case 0:{p=c[c[q+4>>2]>>2]|0;if((p|0)>-1|(p|0)==-4?(c[e>>2]|0)>-1:0){if(y){c[q+20>>2]=1;g=0}else{g=cN(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}dN(e,f,m)}c[e>>2]=-1;p=t+1|0;o=s;n=n+1|0;m=t}else{p=t;g=0;o=s}break}case 1:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;g=RM(d,q)|0;if(!g){g=SM(d,5)|0;if(!g){g=RM(d,j)|0;if(!g){g=SM(d,0)|0;if(!g){i=k+20|0;g=SM(d,(c[i>>2]|0)+t|0)|0;if(!g){if((c[i>>2]|0)>0){i=(c[j+20>>2]|0)>0;g=i?t:-1;i=t+(i&1)|0}else{g=-1;i=t}g=SM(d,g)|0;if(!g){g=SM(d,4)|0;if(!g){g=RM(d,k)|0;if(!g){p=i;g=SM(d,0)|0;o=s}else{p=i;o=s}}else{p=i;o=s}}else{p=i;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 2:{i=c[q+4>>2]|0;if(y){if((c[e>>2]|0)>-1)g=1;else g=(a[i+12>>0]&1)!=0;g=SM(d,g&1)|0;if(g|0){p=t;o=s;break c}}else{g=SM(d,m)|0;if(g|0){p=t;o=s;break c}g=SM(d,a[i+12>>0]&1)|0;if(g|0){p=t;o=s;break c}}g=RM(d,q)|0;if(!g){g=SM(d,1)|0;if(!g){g=RM(d,c[i>>2]|0)|0;if(!g){g=SM(d,0)|0;if(!g){if((c[e>>2]|0)<=-1?(a[i+12>>0]&1)==0:0){p=t;g=0;o=0;break c}if(y)g=0;else{g=cN(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=(a[i+12>>0]&1)==0?s:1;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}dN(e,f,m)}c[e>>2]=-1;p=t+1|0;o=0;n=n+1|0;m=t}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 3:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;i=(c[e>>2]|0)>-1;p=t+1|0;g=SM(d,i?p:t)|0;if(!g){g=SM(d,i?t:m)|0;if(!g){g=RM(d,e)|0;if(!g){g=SM(d,(c[e>>2]|0)>>>31^1)|0;if(!g){g=RM(d,q)|0;if(!g){g=RM(d,j)|0;if(!g){g=RM(d,k)|0;if(!g){g=SM(d,3)|0;if(!g){g=RM(d,j)|0;if(!g){g=SM(d,0)|0;if(g|0){p=t;o=s;break c}g=SM(d,2)|0;if(g|0){p=t;o=s;break c}g=RM(d,k)|0;if(g|0){p=t;o=s;break c}g=SM(d,0)|0;if(g|0){p=t;o=s;break c}if((c[e>>2]|0)>-1){if(y)g=0;else{g=cN(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}dN(e,f,m)}c[e>>2]=-1;n=n+1|0;m=t;i=p}else{g=0;i=t}t=(c[q+16>>2]|0)>0;p=t?i+2|0:i;o=s;m=t?i+1|0:m}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}default:{p=t;g=0;o=s}}while(0);j=c[r>>2]|0;if((j|0)>-1){i=0;do{k=A+(i<<2)|0;i=i+1|0}while((c[k>>2]|0)>-1);c[k>>2]=j;c[A+(i<<2)>>2]=-1;j=p;i=o}else{j=p;i=o}break}case 1:{g=UM(d)|0;if(y){i=c[(c[c[g+4>>2]>>2]|0)+20>>2]|0;c[g+20>>2]=(TM(d)|0)+i;i=0;l=-1}else{q=TM(d)|0;r=TM(d)|0;i=q;l=(q|0)==0?l:r}g=0;j=t;i=y?s:(i|0)==0&1;break}case 4:{i=TM(d)|0;j=TM(d)|0;g=0;m=(i|0)>-1?i:m;i=s;break}case 5:{g=UM(d)|0;if(y){j=c[g+4>>2]|0;c[g+20>>2]=(c[(c[j+4>>2]|0)+20>>2]|0)+(c[(c[j>>2]|0)+20>>2]|0);g=0;j=t;i=s}else{g=0;j=t;i=s}break}case 2:{while(1)if((c[e>>2]|0)>-1)e=e+4|0;else{g=0;j=t;i=s;break}break}case 3:{j=UM(d)|0;o=UM(d)|0;g=UM(d)|0;e=TM(d)|0;if(y){r=c[g+4>>2]|0;s=g+16|0;c[g+20>>2]=(c[(c[r>>2]|0)+20>>2]|0)+e+(c[(c[r+4>>2]|0)+20>>2]|0)+((c[s>>2]|0)>0?2:0);g=s}else g=g+16|0;e=UM(d)|0;i=TM(d)|0;k=TM(d)|0;if((c[g>>2]|0)>0){if(y)g=0;else{g=eN(b,j,i)|0;c[(c[u>>2]|0)+(i<<2)>>2]=1;if(!g)g=eN(b,o,k)|0;c[(c[u>>2]|0)+(k<<2)>>2]=1}n=n+2|0;j=t;i=1}else{g=0;j=t;i=1}break}default:{g=0;j=t;i=s}}while(0);if((g|0)!=0|(QM(d)|0)<=(x|0))break a;else{t=j;s=i}}}while(0);if(!y?(dN(e,f,m),(l|0)>-1):0){i=c[f+36>>2]|0;e=0;while(1){j=i+(e<<2)|0;k=e+1|0;if((c[j>>2]|0)>-1)e=k;else break}c[j>>2]=m;c[i+(k<<2)>>2]=l;c[i+(e+2<<2)>>2]=-1;h=h+1|0}c[f+48>>2]=n;c[f+40>>2]=n;c[f+44>>2]=h;_I(z);_I(A);_I(B)}while(0);return g|0}function JM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;t=y+12|0;x=y+8|0;u=y+4|0;v=y;w=QM(b)|0;c[t>>2]=0;c[x>>2]=0;d=RM(b,d)|0;a:do if(!d){d=SM(b,0)|0;if(!d){b:do if((QM(b)|0)>(w|0)){g=0;i=0;j=0;c:while(1){q=TM(b)|0;r=UM(b)|0;d:do switch(q|0){case 0:{switch(c[r>>2]|0){case 0:{d=c[r+4>>2]|0;r=c[d>>2]|0;if(!((r|0)>-1|(r|0)==-4)){d=j;break d}r=d+8|0;d=(c[r>>2]|0)+j|0;c[r>>2]=d;if((d|0)<=(c[x>>2]|0)){d=j;break d}c[x>>2]=d;d=j;break d}case 3:{h=c[r+4>>2]|0;d=RM(b,c[h+4>>2]|0)|0;if(d|0)break b;d=SM(b,0)|0;if(d|0)break b;d=RM(b,c[h>>2]|0)|0;if(d|0)break b;break}case 1:{h=c[r+4>>2]|0;d=RM(b,c[h+4>>2]|0)|0;if(d|0)break b;d=SM(b,0)|0;if(d|0)break b;d=RM(b,c[h>>2]|0)|0;if(d|0)break b;break}case 2:{h=c[r+4>>2]|0;d=SM(b,j)|0;if(d|0)break b;d=RM(b,r)|0;if(d|0)break b;d=SM(b,1)|0;if(d|0)break b;d=RM(b,c[h>>2]|0)|0;if(d|0)break b;d=SM(b,0)|0;if(d|0)break b;if((c[h+4>>2]|0)<=1?(c[h+8>>2]|0)<=1:0)d=j;else{c[t>>2]=0;d=0}i=i+1|0;break d}default:{d=j;break d}}d=SM(b,0)|0;if(!d)d=j;else break b;break}case 1:{p=r+4|0;o=c[p>>2]|0;q=TM(b)|0;c[t>>2]=q;n=o+4|0;j=c[n>>2]|0;if((j|0)<=1)if((c[o+8>>2]|0)>1){c[u>>2]=0;if((j|0)>0)s=30;else{d=q;h=0;s=37}}else d=q;else{c[u>>2]=0;s=30}e:do if((s|0)==30){d=$M(a,b,c[o>>2]|0,(j|0)>1?1:2,t,f,v,x)|0;if(!d){h=0;k=q;m=1}else{s=34;break c}while(1){d=c[v>>2]|0;if(!h)h=d;else h=LM(a,h,d)|0;if(!h){d=12;s=34;break c}j=c[n>>2]|0;if((m|0)>=(j|0)){d=k;s=37;break e}k=c[t>>2]|0;m=m+1|0;d=$M(a,b,c[o>>2]|0,(m|0)<(j|0)?1:2,t,f,v,x)|0;if(d|0){s=34;break c}}}while(0);if((s|0)==37){s=0;n=o+8|0;k=c[n>>2]|0;if((k|0)==-1){k=c[t>>2]|0;d=$M(a,b,c[o>>2]|0,0,t,0,u,x)|0;if(d|0)break c;j=aN(a,c[u>>2]|0,0,-1,0)|0;c[u>>2]=j;if(!j){d=12;break c}else d=k}else if((j|0)<(k|0)){k=j;j=0;while(1){m=c[t>>2]|0;d=$M(a,b,c[o>>2]|0,0,t,0,v,x)|0;if(d|0){s=49;break c}if(!j){d=c[v>>2]|0;c[u>>2]=d}else{d=LM(a,c[v>>2]|0,j)|0;c[u>>2]=d}if(!d){d=12;s=49;break c}j=KM(a,-1,-1,-1)|0;if(!j){d=12;s=49;break c}j=bN(a,j,d)|0;c[u>>2]=j;if(!j){d=12;s=49;break c}k=k+1|0;if((k|0)>=(c[n>>2]|0)){d=m;break}}}else j=0;c[t>>2]=d;if(h){if(j){h=LM(a,h,j)|0;s=54}}else{h=j;s=54}if((s|0)==54){s=0;if(!h){d=12;break c}}c[p>>2]=c[h+4>>2];c[r>>2]=c[h>>2]}i=i+-1|0;h=d-q+g|0;if(!i){c[t>>2]=h;g=h;i=0;d=h}else g=h;break}default:d=j}while(0);if((QM(b)|0)>(w|0))j=d;else{d=0;break b}}break a}else{d=0;g=0}while(0);w=(c[e>>2]|0)+g|0;x=c[x>>2]|0;c[e>>2]=(x|0)>(w|0)?x:w}}while(0);l=y;return d|0}function KM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=DM(a,0,0,1,20)|0;a=_M(a,0,f)|0;if(!a)a=0;else{c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=e}return a|0}function LM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=DM(a,0,0,1,8)|0;a=_M(a,1,e)|0;if(!a)d=0;else{c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}}return d|0}function MM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;j=o+4|0;k=o;m=QM(b)|0;d=RM(b,d)|0;a:do if(!d){d=SM(b,0)|0;if(!d)if((QM(b)|0)>(m|0)){b:while(1){h=TM(b)|0;i=UM(b)|0;c:do switch(h|0){case 0:switch(c[i>>2]|0){case 0:{g=c[i+4>>2]|0;f=c[g>>2]|0;if((f|0)==-4){c[i+8>>2]=0;d=g+8|0;h=VM(a,c[d>>2]|0,0,1114111,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=VM(a,c[d>>2]|0,0,1114111,0,0,c[g+4>>2]|0)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}d=i+8|0;if((f|0)<0){c[d>>2]=1;h=WM(a)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=WM(a)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}else{c[d>>2]=0;d=g+8|0;e=g+4|0;h=VM(a,c[d>>2]|0,f,c[e>>2]|0,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=VM(a,c[d>>2]|0,c[g>>2]|0,c[e>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,-1)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}}case 3:{d=RM(b,i)|0;if(d|0)break a;d=SM(b,1)|0;if(d|0)break a;e=i+4|0;d=RM(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(d|0)break a;d=RM(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(!d)break c;else break a}case 1:{d=RM(b,i)|0;if(d|0)break a;d=SM(b,2)|0;if(d|0)break a;e=i+4|0;d=RM(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(d|0)break a;d=RM(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(!d)break c;else break a}case 2:{d=RM(b,i)|0;if(d|0)break a;d=SM(b,3)|0;if(d|0)break a;d=RM(b,c[c[i+4>>2]>>2]|0)|0;if(d|0)break a;d=SM(b,0)|0;if(!d)break c;else break a}default:break c}case 1:{d=c[i+4>>2]|0;e=c[d>>2]|0;f=d+4|0;g=c[f>>2]|0;if(!(c[e+8>>2]|0))h=(c[g+8>>2]|0)!=0;else h=1;c[i+8>>2]=h&1;h=XM(a,c[e+24>>2]|0,c[g+24>>2]|0,0,0)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=XM(a,c[(c[d>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,0,0)|0;c[i+28>>2]=h;if(!h){d=12;break a}break}case 3:{h=c[i+4>>2]|0;d=c[h>>2]|0;if(!(c[h+4>>2]|0))e=1;else e=(c[d+8>>2]|0)!=0&1;c[i+8>>2]=e;c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];break}case 2:{g=c[i+4>>2]|0;d=c[g>>2]|0;e=d+8|0;if(!(c[e>>2]|0))f=0;else f=(c[(c[g+4>>2]|0)+8>>2]|0)!=0;c[i+8>>2]=f&1;if(c[e>>2]|0){d=YM(b,d,0,0,j)|0;if(d|0)break b;e=ZI((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=YM(b,c[g>>2]|0,e,k,0)|0;if(d|0){n=45;break b}d=g+4|0;h=i+24|0;c[h>>2]=XM(a,c[(c[d>>2]|0)+24>>2]|0,c[(c[g>>2]|0)+24>>2]|0,e,c[k>>2]|0)|0;_I(e);if(!(c[h>>2]|0)){d=12;break b}else f=d}else{c[i+24>>2]=c[d+24>>2];f=g+4|0}d=c[f>>2]|0;if(c[d+8>>2]|0){d=YM(b,d,0,0,j)|0;if(d|0)break b;e=ZI((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=YM(b,c[f>>2]|0,e,k,0)|0;if(d|0){n=52;break b}i=i+28|0;c[i>>2]=XM(a,c[(c[g>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,e,c[k>>2]|0)|0;_I(e);if(!(c[i>>2]|0)){d=12;break b}}else c[i+28>>2]=c[d+28>>2];break}default:{}}while(0);if((QM(b)|0)<=(m|0)){d=0;break a}}if((n|0)==45)_I(e);else if((n|0)==52)_I(e)}else d=0}while(0);l=o;return d|0}function NM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){switch(c[a>>2]|0){case 2:{a=c[a+4>>2]|0;if((c[a+8>>2]|0)==-1?(h=c[a>>2]|0,h=PM(c[h+28>>2]|0,c[h+24>>2]|0,b,d,e)|0,(h|0)!=0):0){a=h;break a}break}case 3:{f=c[a+4>>2]|0;a=NM(c[f>>2]|0,b,d,e)|0;if(a|0)break a;a=f+4|0;break}case 1:{f=c[a+4>>2]|0;g=f+4|0;a=PM(c[(c[f>>2]|0)+28>>2]|0,c[(c[g>>2]|0)+24>>2]|0,b,d,e)|0;if(a|0)break a;a=NM(c[f>>2]|0,b,d,e)|0;if(!a)a=g;else break a;break}default:{a=0;break a}}a=c[a>>2]|0}return a|0}function OM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=c[a+4>>2]|0;if(h|0){e=h+4|0;a=c[h>>2]|0;if(c[e>>2]|0){d=0;do{if(c[a+(d<<5)+8>>2]|0){b=c[a+(d<<5)+16>>2]|0;if(b){_I(b);a=c[h>>2]|0}b=c[a+(d<<5)+28>>2]|0;if(b){_I(b);a=c[h>>2]|0}}d=d+1|0}while(d>>>0<(c[e>>2]|0)>>>0)}if(a|0)_I(a);d=h+8|0;a=c[d>>2]|0;if(a|0){if(c[a+8>>2]|0){while(1){b=c[a+16>>2]|0;if(b|0)_I(b);if(!(c[a+40>>2]|0))break;else a=a+32|0}a=c[d>>2]|0}_I(a)}f=h+16|0;a=c[f>>2]|0;if(a|0){g=h+28|0;b=c[g>>2]|0;if(b){e=0;do{d=c[a+(e*12|0)+8>>2]|0;if(d){_I(d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0<b>>>0)}_I(a)}a=c[h+32>>2]|0;if(a|0)_I(a);a=c[h+20>>2]|0;if(a|0)_I(a);a=c[h+36>>2]|0;if(a|0)_I(a);_I(h)}return}function PM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=c[a>>2]|0;h=(g|0)>-1;a:do if(!d)if(h){h=b+32|0;do{if((c[b>>2]|0)>-1?(y=e+(g<<2)|0,c[y>>2]=(c[y>>2]|0)+1,(c[h>>2]|0)>-1):0){g=h;do{y=e+(c[a>>2]<<2)|0;c[y>>2]=(c[y>>2]|0)+1;g=g+32|0}while((c[g>>2]|0)>-1)}a=a+32|0;g=c[a>>2]|0}while((g|0)>-1);g=0}else g=0;else if(h)while(1){h=c[b>>2]|0;b:do if((h|0)>-1){p=a+4|0;q=a+8|0;r=a+16|0;s=a+20|0;t=a+24|0;u=a+28|0;v=a+12|0;e=-1;g=b;while(1){o=h;while(1){if((o|0)!=(e|0))break;g=g+32|0;h=c[g>>2]|0;if((h|0)>-1)o=h;else break b}l=d+(c[f+(c[a>>2]<<2)>>2]<<5)|0;while(1){h=l+8|0;if(!(c[h>>2]|0))break;else l=l+32|0}c[l+40>>2]=0;c[l>>2]=c[p>>2];c[l+4>>2]=c[q>>2];c[h>>2]=d+(c[f+(o<<2)>>2]<<5);c[l+12>>2]=o;h=c[s>>2]|0;e=c[g+16>>2]|c[r>>2]|(h|0?4:0)|(c[t>>2]|0?8:0);i=l+20|0;c[i>>2]=e;j=c[u>>2]|0;if((j|0)>-1){c[i>>2]=e|256;h=j}c[l+24>>2]=h;e=c[t>>2]|0;if(!e)c[l+28>>2]=0;else{h=0;do{n=h;h=h+1|0}while((c[e+(n<<2)>>2]|0)!=0);h=ZI(h<<2)|0;c[l+28>>2]=h;if(!h){g=12;break a}k=c[t>>2]|0;e=c[k>>2]|0;if(e){j=0;i=h;do{c[i>>2]=e;j=j+1|0;e=c[k+(j<<2)>>2]|0;i=h+(j<<2)|0}while((e|0)!=0);h=i}c[h>>2]=0}e=c[v>>2]|0;if(!e)h=0;else{h=0;while(1)if((c[e+(h<<2)>>2]|0)>-1)h=h+1|0;else break}k=g+12|0;i=c[k>>2]|0;if(!i)e=0;else{e=0;while(1)if((c[i+(e<<2)>>2]|0)>-1)e=e+1|0;else break}j=l+16|0;i=c[j>>2]|0;if(i|0)_I(i);c[j>>2]=0;h=e+h|0;if((h|0)>0){n=ZI((h<<2)+4|0)|0;c[j>>2]=n;if(!n){g=12;break a}e=c[v>>2]|0;if((e|0)!=0?(w=c[e>>2]|0,(w|0)>-1):0){h=0;i=w;do{c[n+(h<<2)>>2]=i;h=h+1|0;i=c[e+(h<<2)>>2]|0}while((i|0)>-1);m=h}else m=0;j=c[k>>2]|0;if((j|0)!=0?(x=c[j>>2]|0,(x|0)>-1):0){k=(m|0)>0;h=m;i=0;l=x;do{c:do if(k){e=0;while(1){if((c[n+(e<<2)>>2]|0)==(l|0))break c;e=e+1|0;if((e|0)>=(m|0)){y=39;break}}}else y=39;while(0);if((y|0)==39){y=0;c[n+(h<<2)>>2]=l;h=h+1|0}i=i+1|0;l=c[j+(i<<2)>>2]|0}while((l|0)>-1)}else h=m;c[n+(h<<2)>>2]=-1}g=g+32|0;h=c[g>>2]|0;if((h|0)<=-1)break;else e=o}}while(0);a=a+32|0;if((c[a>>2]|0)<=-1){g=0;break}}else g=0;while(0);return g|0}function QM(a){a=a|0;return c[a+12>>2]|0}function RM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=ZM(a,e)|0;l=d;return b|0}function SM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=ZM(a,e)|0;l=d;return b|0}function TM(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function UM(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function VM(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=DM(a,0,0,1,64)|0;if(!a)a=0;else{c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+20>>2]=f;c[a+24>>2]=g;c[a+28>>2]=h;c[a+32>>2]=-1;c[a+36>>2]=-1;c[a+40>>2]=-1}return a|0}function WM(a){a=a|0;a=DM(a,0,0,1,32)|0;if(!a)a=0;else{c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=-1}return a|0}function XM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(e|0)==0;if(o)n=0;else{g=0;while(1)if((c[e+(g<<2)>>2]|0)>-1)g=g+1|0;else{n=g;break}}h=0;while(1)if((c[b+(h<<5)>>2]|0)>-1)h=h+1|0;else{g=0;break}while(1)if((c[d+(g<<5)>>2]|0)>-1)g=g+1|0;else break;g=DM(a,0,0,1,(g+h<<5)+32|0)|0;a:do if(!g)g=0;else{h=c[b>>2]|0;if((h|0)>-1){m=(n|0)>0;i=0;while(1){c[g+(i<<5)>>2]=h;c[g+(i<<5)+4>>2]=c[b+(i<<5)+4>>2];c[g+(i<<5)+8>>2]=c[b+(i<<5)+8>>2];c[g+(i<<5)+16>>2]=c[b+(i<<5)+16>>2]|f;c[g+(i<<5)+20>>2]=c[b+(i<<5)+20>>2];c[g+(i<<5)+24>>2]=c[b+(i<<5)+24>>2];c[g+(i<<5)+28>>2]=c[b+(i<<5)+28>>2];l=b+(i<<5)+12|0;j=c[l>>2]|0;h=(j|0)==0;if(o&h)h=0;else{if(h)k=0;else{h=0;while(1)if((c[j+(h<<2)>>2]|0)>-1)h=h+1|0;else{k=h;break}}h=DM(a,0,0,0,(k+n<<2)+4|0)|0;if(!h){g=0;break a}if((k|0)>0){l=c[l>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[l+(j<<2)>>2];j=j+1|0}while((j|0)!=(k|0))}else k=0;if(m){j=0;do{c[h+(j+k<<2)>>2]=c[e+(j<<2)>>2];j=j+1|0}while((j|0)!=(n|0));j=n}else j=0;c[h+(j+k<<2)>>2]=-1}c[g+(i<<5)+12>>2]=h;i=i+1|0;h=c[b+(i<<5)>>2]|0;if((h|0)<=-1){n=i;break}}}else n=0;i=c[d>>2]|0;h=g+(n<<5)|0;if((i|0)>-1){m=0;l=n;do{c[h>>2]=i;c[g+(l<<5)+4>>2]=c[d+(m<<5)+4>>2];c[g+(l<<5)+8>>2]=c[d+(m<<5)+8>>2];c[g+(l<<5)+16>>2]=c[d+(m<<5)+16>>2];c[g+(l<<5)+20>>2]=c[d+(m<<5)+20>>2];c[g+(l<<5)+24>>2]=c[d+(m<<5)+24>>2];c[g+(l<<5)+28>>2]=c[d+(m<<5)+28>>2];j=d+(m<<5)+12|0;h=c[j>>2]|0;if(!h)h=0;else{i=0;while(1)if((c[h+(i<<2)>>2]|0)>-1)i=i+1|0;else break;h=DM(a,0,0,0,(i<<2)+4|0)|0;if(!h){g=0;break a}if((i|0)>0){k=c[j>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[k+(j<<2)>>2];j=j+1|0}while((j|0)!=(i|0))}else i=0;c[h+(i<<2)>>2]=-1}c[g+(l<<5)+12>>2]=h;m=m+1|0;i=c[d+(m<<5)>>2]|0;l=m+n|0;h=g+(l<<5)|0}while((i|0)>-1)}c[h>>2]=-1}while(0);return g|0}function YM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=QM(a)|0;p=(f|0)!=0;if(p)c[f>>2]=0;b=RM(a,b)|0;a:do if(!b){m=(d|0)==0;l=(e|0)==0;if((QM(a)|0)>(o|0))while(1){b=UM(a)|0;b:do switch(c[b>>2]|0){case 0:{b=c[b+4>>2]|0;switch(c[b>>2]|0){case -3:break;case -2:{if(l)break b;c[e>>2]=c[e>>2]|c[b+4>>2];break b}default:break b}h=c[b+4>>2]|0;if((h|0)>-1){c:do if(!m){b=0;while(1){i=d+(b<<2)|0;j=c[i>>2]|0;if((j|0)<=-1)break;if((j|0)==(h|0))break c;else b=b+1|0}c[i>>2]=h;c[d+(b+1<<2)>>2]=-1}while(0);if(p)c[f>>2]=(c[f>>2]|0)+1}break}case 3:{b=c[b+4>>2]|0;h=c[b>>2]|0;if(c[h+8>>2]|0){k=h;n=6;break b}b=c[b+4>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}case 1:{b=c[b+4>>2]|0;h=RM(a,c[b>>2]|0)|0;if(h|0){g=h;break a}k=c[b+4>>2]|0;n=6;break}case 2:{b=c[c[b+4>>2]>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}default:{}}while(0);if((n|0)==6?(n=0,g=RM(a,k)|0,g|0):0)break a;if((QM(a)|0)<=(o|0)){g=0;break a}}else g=0}else g=b;while(0);return g|0}function ZM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;d=a+12|0;e=c[d>>2]|0;j=c[a>>2]|0;if((e|0)>=(j|0)){d=c[a+4>>2]|0;if((j|0)<(d|0)?(f=(c[a+8>>2]|0)+j|0,f=(f|0)>(d|0)?d:f,h=a+16|0,i=aJ(c[h>>2]|0,f<<2)|0,(i|0)!=0):0){c[a>>2]=f;c[h>>2]=i;c[g>>2]=c[b>>2];ZM(a,g)|0;d=0}else d=12}else{c[(c[a+16>>2]|0)+(e<<2)>>2]=c[b>>2];c[d>>2]=(c[d>>2]|0)+1;d=0}l=k;return d|0}function _M(a,b,d){a=a|0;b=b|0;d=d|0;a=DM(a,0,0,1,32)|0;if((d|0)!=0&(a|0)!=0){c[a+4>>2]=d;c[a>>2]=b;c[a+8>>2]=-1;c[a+12>>2]=-1}else a=0;return a|0}function $M(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=QM(d)|0;RM(d,e)|0;e=SM(d,0)|0;a:do if(!e){q=(f&1|0)==0;p=(f&2|0)!=0;o=0;l=1;e=i;while(1){if((QM(d)|0)>(r|0))n=e;else{f=o;e=0;break a}b:while(1){c:while(1){switch(TM(d)|0){case 1:{i=7;break c}case 0:{e=UM(d)|0;switch(c[e>>2]|0){case 0:{i=9;break b}case 3:{i=19;break b}case 1:{i=26;break b}case 2:{i=33;break c}default:{}}break}default:{}}if((QM(d)|0)<=(r|0)){f=o;e=0;break a}}if((i|0)==7)e=UM(d)|0;else if((i|0)==33){f=c[e+4>>2]|0;e=RM(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=SM(d,0)|0;if(e|0){f=o;break a}e=aN(b,c[f>>2]|0,c[f+4>>2]|0,c[f+8>>2]|0,a[f+12>>0]&1)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}e=c[e+4>>2]|0}if((QM(d)|0)>(r|0))n=e;else{f=o;e=0;break a}}if((i|0)==9){m=c[e+4>>2]|0;i=c[m+8>>2]|0;f=c[m>>2]|0;e=c[m+4>>2]|0;if(!((f|0)>-1|(f|0)==-4))if(q|(f|0)!=-3)if((f|0)==-3)if(p&(l|0)!=0){c[h+(e<<2)>>2]=1;f=-3;k=o;l=0}else{f=-3;k=o}else k=o;else{e=-1;f=-1;i=-1;k=o}else{i=(c[g>>2]|0)+i|0;k=o+1|0}e=KM(b,f,e,i)|0;c[n>>2]=e;if(!e)e=12;else{e=c[e+4>>2]|0;c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];e=0}if((i|0)>(c[j>>2]|0)){c[j>>2]=i;f=n}else f=n}else if((i|0)==19){i=c[e+4>>2]|0;f=i+4|0;e=bN(b,c[i>>2]|0,c[f>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}m=c[e+4>>2]|0;e=RM(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=SM(d,0)|0;if(e|0){f=o;break a}e=RM(d,m+4|0)|0;if(e|0){f=o;break a}e=SM(d,1)|0;if(e|0){f=o;break a}e=RM(d,c[i>>2]|0)|0;if(e|0){f=o;break a}k=o;f=m;e=SM(d,0)|0}else if((i|0)==26){m=c[e+4>>2]|0;i=m+4|0;e=LM(b,c[m>>2]|0,c[i>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}f=c[e+4>>2]|0;c[f>>2]=0;k=f+4|0;c[k>>2]=0;e=RM(d,c[i>>2]|0)|0;if(e|0){f=o;break a}e=SM(d,0)|0;if(e|0){f=o;break a}e=RM(d,k)|0;if(e|0){f=o;break a}e=SM(d,1)|0;if(e|0){f=o;break a}e=RM(d,c[m>>2]|0)|0;if(e|0){f=o;break a}k=o;e=SM(d,0)|0}if(!e){o=k;e=f}else{f=k;break}}}else f=0;while(0);c[g>>2]=(c[g>>2]|0)+f;return e|0}function aN(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=DM(b,0,0,1,16)|0;b=_M(b,2,h)|0;if(!b)b=0;else{c[h>>2]=d;c[h+4>>2]=e;c[h+8>>2]=f;h=h+12|0;a[h>>0]=a[h>>0]&-2|g&1;c[b+16>>2]=c[d+16>>2]}return b|0}function bN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=DM(a,0,0,1,8)|0;a=_M(a,3,e)|0;if((d|0)!=0&(a|0)!=0){c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}else d=0}return d|0}function cN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=DM(a,0,0,0,8)|0;if(((e|0)!=0?(d=KM(a,-3,d,-1)|0,c[e>>2]=d,(d|0)!=0):0)?(f=DM(a,0,0,0,32)|0,c[e+4>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function dN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=c[a>>2]|0;if((f|0)>-1){g=c[b+16>>2]|0;e=0;b=f;do{f=b>>>1;c[((b&1|0)==0?g+(f*12|0)|0:g+(f*12|0)+4|0)>>2]=d;e=e+1|0;b=c[a+(e<<2)>>2]|0}while((b|0)>-1)}c[a>>2]=-1;return}function eN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=DM(a,0,0,0,8)|0;if(((e|0)!=0?(d=KM(a,-3,d,-1)|0,c[e+4>>2]=d,(d|0)!=0):0)?(f=DM(a,0,0,0,32)|0,c[e>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function fN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;i=b+32|0;h=c[i>>2]|0;g=h&1;a:do switch(a[d>>0]|0){case 91:{e=jN(b,d+1|0)|0;break}case 92:{e=d+1|0;f=kN(e)|0;if(f|0){e=fN(b,f)|0;c[b+12>>2]=d+2;break a}f=a[e>>0]|0;switch(f|0){case 0:{e=5;break a}case 98:{f=KM(c[b>>2]|0,-2,64,-1)|0;break}case 66:{f=KM(c[b>>2]|0,-2,128,-1)|0;break}case 60:{f=KM(c[b>>2]|0,-2,16,-1)|0;break}case 62:{f=KM(c[b>>2]|0,-2,32,-1)|0;break}case 120:{h=d+2|0;i=(a[h>>0]|0)==123;g=i?8:2;h=i?d+3|0:h;e=0;f=0;do{d=lN(a[h+e>>0]|0)|0;if((d|0)<0)break;f=d+(f<<4)|0;e=e+1|0}while((f|0)<1114112&(e|0)<(g|0));e=h+e|0;if(i){if((a[e>>0]|0)!=125){e=9;break a}e=e+1|0}j=c[b>>2]|0;i=b+24|0;k=c[i>>2]|0;c[i>>2]=k+1;f=KM(j,f,f,k)|0;e=e+-1|0;break}case 63:case 43:case 123:if(!g){e=13;break a}else{k=37;break a}case 124:{if(g|0){k=37;break a}e=KM(c[b>>2]|0,-1,-1,-1)|0;k=45;break a}default:{if(!((g|0)==0&(f+-49|0)>>>0<9)){k=37;break a}j=f+-48|0;k=c[b>>2]|0;i=b+24|0;f=c[i>>2]|0;c[i>>2]=f+1;f=KM(k,-4,j,f)|0;k=b+28|0;i=c[k>>2]|0;c[k>>2]=(j|0)<(i|0)?i:j}}d=e+1|0;e=f;k=45;break}case 46:{e=c[b>>2]|0;g=b+24|0;f=c[g>>2]|0;c[g>>2]=f+1;if(h&4){f=KM(e,0,9,f)|0;k=c[b>>2]|0;e=c[g>>2]|0;c[g>>2]=e+1;e=KM(k,11,1114111,e)|0;if((f|0)!=0&(e|0)!=0)e=bN(c[b>>2]|0,f,e)|0;else e=0}else e=KM(e,0,1114111,f)|0;d=d+1|0;k=45;break}case 94:{if((g|0)==0?(c[b+16>>2]|0)!=(d|0):0){e=d;k=37;break a}d=d+1|0;e=KM(c[b>>2]|0,-2,1,-1)|0;k=45;break}case 36:{e=d+1|0;if((g|0)==0?a[e>>0]|0:0){e=d;k=37;break a}d=e;e=KM(c[b>>2]|0,-2,2,-1)|0;k=45;break}case 63:case 43:case 123:case 42:{if(!g){e=d;k=37}else e=13;break}case 124:{if(!g){e=d;k=37}else k=36;break}case 0:{k=36;break}default:{e=d;k=37}}while(0);if((k|0)==36){e=KM(c[b>>2]|0,-1,-1,-1)|0;k=45}else if((k|0)==37){h=UL(j,e,-1)|0;if((h|0)<0)e=2;else{do if(c[i>>2]&2){if((IK(c[j>>2]|0)|0)==0?(HK(c[j>>2]|0)|0)==0:0){k=43;break}i=c[b>>2]|0;n=lK(c[j>>2]|0)|0;g=lK(c[j>>2]|0)|0;f=b+24|0;g=KM(i,n,g,c[f>>2]|0)|0;n=c[b>>2]|0;i=KK(c[j>>2]|0)|0;d=KK(c[j>>2]|0)|0;d=KM(n,i,d,c[f>>2]|0)|0;if((g|0)!=0&(d|0)!=0)g=bN(c[b>>2]|0,g,d)|0;else g=0}else k=43;while(0);if((k|0)==43){g=c[j>>2]|0;f=b+24|0;g=KM(c[b>>2]|0,g,g,c[f>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1;d=e+h|0;e=g;k=45}}if((k|0)==45)if(!e)e=12;else{c[b+8>>2]=e;c[b+12>>2]=d;e=0}l=m;return e|0}function gN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+4|0;g=j;b=iN(b,i)|0;if((a[b>>0]|0)==44){b=iN(b+1|0,g)|0;h=c[g>>2]|0;g=c[i>>2]|0}else{i=c[i>>2]|0;c[g>>2]=i;h=i;g=i}do if(!(g>>>0>255|((h|0)>255|(h|0)>-1&(h|0)<(g|0)))){if(!d)if((a[b>>0]|0)==92)b=b+1|0;else{b=0;break}if((a[b>>0]|0)==125){c[e>>2]=g;c[f>>2]=h;b=b+1|0}else b=0}else b=0;while(0);l=j;return b|0}function hN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((c[b+12>>2]|0)>-1){e=KM(c[a>>2]|0,-1,-1,-1)|0;if((e|0)!=0?(f=LM(c[a>>2]|0,e,b)|0,(f|0)!=0):0){e=c[b+16>>2]|0;c[f+16>>2]=e;g=6}else e=12}else{f=b;e=c[b+16>>2]|0;g=6}if((g|0)==6){c[f+12>>2]=d;c[f+16>>2]=e+1;c[a+8>>2]=f;e=0}return e|0}function iN(b,d){b=b|0;d=d|0;var e=0;c[d>>2]=-1;a:do if(_J(a[b>>0]|0)|0){c[d>>2]=0;e=0;do{c[d>>2]=(e*10|0)+-48+(a[b>>0]|0);b=b+1|0;if(!(_J(a[b>>0]|0)|0))break a;e=c[d>>2]|0}while((e|0)<=255)}while(0);return b|0}function jN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+288|0;e=s+264|0;g=s;c[e>>2]=c[b>>2];h=e+8|0;c[h>>2]=0;c[e+12>>2]=32;p=ZI(128)|0;r=e+4|0;c[r>>2]=p;if(!p)d=12;else{f=g+4|0;c[f>>2]=0;p=(a[d>>0]|0)==94;c[g>>2]=p&1;d=mN(b,p?d+1|0:d,e,g)|0;a:do if(!d){p=(c[g>>2]|0)==0;if(!p){rL(c[r>>2]|0,c[h>>2]|0,4,41);d=oN(e)|0;if(!d){d=12;e=0;break}c[d>>2]=1114112;c[d+4>>2]=1114112;c[d+8>>2]=-1;d=c[f>>2]|0;if(d){e=d<<2;f=DM(c[b>>2]|0,0,0,0,e+4|0)|0;if(!f){d=12;e=0;break}TN(f|0,g+8|0,e|0)|0;c[f+(d<<2)>>2]=0}else f=0}else f=0;m=c[h>>2]|0;if((m|0)>0){n=c[r>>2]|0;o=b+24|0;e=0;d=0;k=0;while(1){j=c[n+(k<<2)>>2]|0;g=c[j>>2]|0;h=j+4|0;i=c[h>>2]|0;do if(!p)if((g|0)>(d|0)){c[j>>2]=d;c[h>>2]=g+-1;d=i+1|0;q=14;break}else{j=i+1|0;d=(j|0)>=(d|0)?j:d;break}else q=14;while(0);if((q|0)==14){q=0;c[j+8>>2]=c[o>>2];c[j+16>>2]=f;j=_M(c[b>>2]|0,0,j)|0;e=bN(c[b>>2]|0,e,j)|0;if(!e){d=12;e=0;break a}}k=k+1|0;if((k|0)>=(m|0)){d=0;break}}}else{d=0;e=0}}else e=0;while(0);_I(c[r>>2]|0);r=b+24|0;c[r>>2]=(c[r>>2]|0)+1;c[b+8>>2]=e}l=s;return d|0}function kN(b){b=b|0;var d=0;d=a[b>>0]|0;b=0;while(1){if((a[56576+(b<<3)>>0]|0)==d<<24>>24)break;b=b+1|0;if((b|0)==12){b=12;break}}return c[56576+(b<<3)+4>>2]|0}function lN(a){a=a|0;var b=0;b=a+-48|0;if(b>>>0<10)return b|0;else{b=a|32;return ((b+-97|0)>>>0<6?b+-87|0:-1)|0}return 0}function mN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+32|0;o=t;q=t+4|0;i=UL(o,d,-1)|0;g=a[d>>0]|0;a:do if((i|0)>=1){r=f+4|0;n=b+32|0;h=d;j=i;b:while(1){i=(h|0)==(d|0);if(!(i|g<<24>>24!=93)){s=5;break}c:do if(!(i|g<<24>>24!=45)){switch(a[h+1>>0]|0){case 93:break c;case 45:break;default:{g=11;break a}}if((a[h+2>>0]|0)==93){g=11;break a}}while(0);d:do if(g<<24>>24==91){switch(a[h+1>>0]|0){case 61:case 46:{g=3;break a}case 58:break;default:{s=17;break d}}i=h+2|0;g=0;e:while(1){switch(a[i+g>>0]|0){case 0:{s=16;break b}case 58:break e;default:{}}if((g|0)<13)g=g+1|0;else{s=16;break b}}TN(q|0,i|0,g|0)|0;a[q+g>>0]=0;j=aL(q)|0;if(!j){s=16;break b}h=i+(g+2)|0;if((a[i+(g+1)>>0]|0)!=93){s=16;break b}if(!(c[f>>2]|0)){g=1114111;m=0;k=1;s=25}else{g=c[r>>2]|0;if((g|0)>63){g=12;break a}c[r>>2]=g+1;c[f+8+(g<<2)>>2]=j}}else s=17;while(0);if((s|0)==17){s=0;i=c[o>>2]|0;h=h+j|0;if((a[h>>0]|0)==45?(p=h+1|0,(a[p>>0]|0)!=93):0){h=UL(o,p,-1)|0;g=c[o>>2]|0;if((h|0)<1|(i|0)>(g|0)){g=11;break a}j=0;m=i;h=p+h|0;k=0;s=25}else{j=0;g=i;m=i;k=0;s=25}}if((s|0)==25){s=0;i=oN(e)|0;if(!i){g=12;break a}c[i>>2]=m;c[i+4>>2]=g;c[i+12>>2]=j;c[i+8>>2]=-1;if(!(k|(c[n>>2]&2|0)==0)?(pN(e,m,g)|0)!=0:0){g=12;break a}}j=UL(o,h,-1)|0;g=a[h>>0]|0;if((j|0)<1){s=3;break a}}if((s|0)==5){c[b+12>>2]=h+1;g=0;break}else if((s|0)==16){g=4;break}}else s=3;while(0);if((s|0)==3)g=g<<24>>24?2:7;l=t;return g|0}function nN(a,b){a=a|0;b=b|0;return (c[c[a>>2]>>2]|0)-(c[c[b>>2]>>2]|0)|0}function oN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=c[h>>2]|0;e=a+12|0;f=c[e>>2]|0;if((d|0)>=(f|0))if((f|0)<=32767?(c[e>>2]=f<<1,g=a+4|0,b=aJ(c[g>>2]|0,f<<3)|0,(b|0)!=0):0){c[g>>2]=b;d=c[h>>2]|0;i=6}else b=0;else{b=c[a+4>>2]|0;i=6}if((i|0)==6){c[h>>2]=d+1;i=DM(c[a>>2]|0,0,0,1,20)|0;c[b+(d<<2)>>2]=i;b=i}return b|0}function pN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if((b|0)>(d|0))b=0;else while(1){b:do if(!(HK(b)|0)){if(!(IK(b)|0)){b=b+1|0;break}f=KK(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((KK(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}else{f=lK(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((lK(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}while(0);if((g|0)==12){g=0;f=oN(a)|0;if(!f){b=-1;break a}c[f>>2]=h;c[f+4>>2]=e+-1;c[f+8>>2]=-1}if((b|0)>(d|0)){b=0;break}}while(0);return b|0}function qN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;i=c[a+4>>2]|0;j=i+56|0;h=(c[j>>2]&8|0)==0?d:0;a=c[i+40>>2]|0;if((a|0)>0&(h|0)!=0){a=ZI(a<<2)|0;if(!a)a=12;else{g=a;d=a;m=3}}else{g=0;d=0;m=3}if((m|0)==3){if(!(c[i+60>>2]|0))a=sN(i,b,g,f,k)|0;else a=rN(i,b,g,f,k)|0;if(!a)tN(h,e,c[j>>2]|0,i,g,c[k>>2]|0);if(g)_I(d)}l=n;return a|0}function rN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;V=l;l=l+16|0;T=V;c[T>>2]=0;o=e&1;R=e&2;S=a+56|0;n=c[S>>2]&4;U=BM(0,0)|0;a:do if(U){p=DM(U,0,0,0,32)|0;if(!p){CM(U);e=12;break}c[p+24>>2]=0;c[p+28>>2]=0;Q=a+40|0;e=c[Q>>2]|0;if(e){e=ZI(e<<2)|0;if(!e){m=0;k=0;j=e;e=12;i=0;h=0;g=0}else{j=e;i=e;C=6}}else{j=0;i=0;C=6}b:do if((C|0)==6){e=c[a+28>>2]|0;if(e){e=ZI(e<<3)|0;if(!e){m=e;k=0;e=12;h=0;g=0;break}else{m=e;h=e}}else{m=0;h=0}P=a+52|0;e=c[P>>2]|0;if(e){e=ZI(e<<2)|0;if(!e){k=e;e=12;g=0;break}else{k=e;g=e}}else{k=0;g=0}K=a+8|0;L=a+12|0;M=(d|0)==0;N=(d|0)!=0;O=a+32|0;J=(n|0)!=0;I=(o|0)==0;r=b;e=1;q=-1;v=-1;B=0;c:while(1){n=c[Q>>2]|0;if((n|0)>0){o=0;do{c[j+(o<<2)>>2]=-1;if(!M){c[d+(o<<2)>>2]=-1;n=c[Q>>2]|0}o=o+1|0}while((o|0)<(n|0))}n=c[P>>2]|0;if((n|0)>0)VN(g|0,0,n<<2|0)|0;G=e+q|0;e=UL(T,r,4)|0;if((e|0)<1)if((e|0)<0){e=1;break b}else e=1;F=r+e|0;H=c[T>>2]|0;n=c[K>>2]|0;o=n+8|0;if(c[o>>2]|0){w=(G|0)!=0;x=(B|0)==95;y=(G|0)==0;A=J&(B|0)==10;z=(G|0)<1&I;u=n;n=0;t=0;s=o;while(1){r=u+20|0;o=c[r>>2]|0;d:do if(o)if((o&1|0)==0|z|A){if(o&2|0?(E=c[T>>2]|0,!((E|R|0)==0|J&(E|0)==10)):0){q=t;break}do if(o&16|0){if(x){q=t;break d}if(DK(B)|0){q=t;break d}o=c[T>>2]|0;if((o|0)==95)break;if(!(DK(o)|0)){q=t;break d}}while(0);o=c[r>>2]|0;if(o&32){if(x){o=c[T>>2]|0;if((o|0)==95){q=t;break}}else{E=(DK(B)|0)==0;o=c[T>>2]|0;if(E|(o|0)==95){q=t;break}}if(DK(o)|0){q=t;break}o=c[r>>2]|0}q=c[T>>2]|0;do if((q|0)!=0&(w&(o&64|0)!=0)){if(x)o=1;else{o=(DK(B)|0)!=0;q=c[T>>2]|0}if((q|0)==95)if(o){q=t;break d}else break;else if(o^(DK(q)|0)!=0)break;else{q=t;break d}}while(0);if(!(c[r>>2]&128)){C=49;break}o=c[T>>2]|0;if(y|(o|0)==0){q=t;break}if(x)q=1;else{q=(DK(B)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(q){C=49;break}else{q=t;break}else if(q^(DK(o)|0)!=0){q=t;break}else{C=49;break}}else q=t;else C=49;while(0);do if((C|0)==49){C=0;if(!t){n=c[u+16>>2]|0;q=c[s>>2]|0;break}q=p+28|0;o=c[q>>2]|0;if(!o){o=DM(U,0,0,0,32)|0;if(!o){C=53;break c}c[o+24>>2]=p;c[o+28>>2]=0;E=DM(U,0,0,0,c[Q>>2]<<2)|0;c[o+20>>2]=E;if(!E){C=60;break c}c[q>>2]=o;p=o}else p=o;c[p>>2]=G;c[p+4>>2]=F;c[p+8>>2]=c[s>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){q=c[p+20>>2]|0;o=0;do{c[q+(o<<2)>>2]=c[j+(o<<2)>>2];o=o+1|0}while((o|0)<(c[Q>>2]|0))}o=c[u+16>>2]|0;if(!o)q=t;else{q=c[o>>2]|0;if((q|0)<=-1){q=t;break}r=c[p+20>>2]|0;do{o=o+4|0;c[r+(q<<2)>>2]=G;q=c[o>>2]|0}while((q|0)>-1);q=t}}while(0);s=u+40|0;if(!(c[s>>2]|0))break;else{u=u+32|0;t=q}}if(n){o=c[n>>2]|0;if((o|0)>-1)do{c[j+(o<<2)>>2]=G;n=n+4|0;o=c[n>>2]|0}while((o|0)>-1)}else n=0;if(!q)C=171;else{s=G;r=F;w=q;x=n;C=79}}else{n=0;C=171}e:while(1){if((C|0)==79){if((w|0)==(c[L>>2]|0)){if((v|0)>=(s|0)){if(!(N&(v|0)==(s|0))){n=x;C=171;continue}n=c[Q>>2]|0;if(!(vN(n,c[O>>2]|0,j,d)|0)){n=x;C=171;continue}}else{if(M){v=s;n=x;C=171;continue}n=c[Q>>2]|0}if((n|0)>0)n=0;else{v=s;n=x;C=171;continue}while(1){c[d+(n<<2)>>2]=c[j+(n<<2)>>2];n=n+1|0;if((n|0)>=(c[Q>>2]|0)){v=s;n=x;C=171;continue e}}}u=w+8|0;if((c[u>>2]|0)!=0?(c[w+20>>2]&256|0)!=0:0){o=c[w+24>>2]|0;tN(o+1|0,m,c[S>>2]&-9,a,j,s);E=c[m+(o<<3)>>2]|0;o=(c[m+(o<<3)+4>>2]|0)-E|0;if(VJ(b+E|0,r+-1|0,o)|0){n=x;C=171;continue}E=(o|0)==0;n=E&1;q=c[w+12>>2]|0;if(E?c[k+(q<<2)>>2]|0:0){n=x;C=171;continue}c[k+(q<<2)>>2]=n;o=o+-1|0;r=r+o|0;o=o+s|0;q=c[T>>2]|0;n=UL(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;D=r+n|0;E=n}else{q=c[T>>2]|0;if(!q){n=x;C=171;continue}n=UL(T,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;o=s;D=r+n|0;E=n}s=o+e|0;if(!(c[u>>2]|0)){e=E;n=x;C=171;continue}y=(s|0)!=0;z=(q|0)==95;A=(s|0)==0;C=J&(q|0)==10;B=(s|0)<1&I;t=0;n=x;while(1){f:do if((c[w>>2]|0)>>>0<=q>>>0){if((c[w+4>>2]|0)>>>0<q>>>0)break;r=w+20|0;e=c[r>>2]|0;do if(e|0){if(!((e&1|0)==0|B|C))break f;if(e&2|0?(x=c[T>>2]|0,!((x|R|0)==0|J&(x|0)==10)):0)break f;do if(e&16|0){if(z)break f;if(DK(q)|0)break f;e=c[T>>2]|0;if((e|0)==95)break;if(!(DK(e)|0))break f}while(0);e=c[r>>2]|0;if(e&32){if(z){e=c[T>>2]|0;if((e|0)==95)break f}else{x=(DK(q)|0)==0;e=c[T>>2]|0;if(x|(e|0)==95)break f}if(DK(e)|0)break f;e=c[r>>2]|0}o=c[T>>2]|0;do if((o|0)!=0&(y&(e&64|0)!=0)){if(z)e=1;else{e=(DK(q)|0)!=0;o=c[T>>2]|0}if((o|0)==95)if(e)break f;else break;else if(e^(DK(o)|0)!=0)break;else break f}while(0);do if(c[r>>2]&128|0){e=c[T>>2]|0;if(A|(e|0)==0)break f;if(z)o=1;else{o=(DK(q)|0)!=0;e=c[T>>2]|0}if((e|0)==95)if(o)break;else break f;else if(o^(DK(e)|0)!=0)break f;else break}while(0);e=c[r>>2]|0;do if(e&4){if(c[S>>2]&2|0)break;if(!(CK(q,c[w+24>>2]|0)|0))break f;e=c[r>>2]|0}while(0);do if(e&4|0){if(!(c[S>>2]&2))break;x=KK(q)|0;e=w+24|0;if(CK(x,c[e>>2]|0)|0)break;x=lK(q)|0;if(!(CK(x,c[e>>2]|0)|0))break f}while(0);if(!(c[r>>2]&8))break;if(uN(c[w+28>>2]|0,q,c[S>>2]&2)|0)break f}while(0);if(!t){t=c[u>>2]|0;n=c[w+16>>2]|0;break}o=p+28|0;e=c[o>>2]|0;if(!e){e=DM(U,0,0,0,32)|0;if(!e){C=145;break c}c[e+24>>2]=p;c[e+28>>2]=0;x=DM(U,0,0,0,c[Q>>2]<<2)|0;c[e+20>>2]=x;if(!x){C=152;break c}c[o>>2]=e;p=e}else p=e;c[p>>2]=s;c[p+4>>2]=D;c[p+8>>2]=c[u>>2];c[p+12>>2]=c[w+12>>2];c[p+16>>2]=c[T>>2];if((c[Q>>2]|0)>0){o=c[p+20>>2]|0;e=0;do{c[o+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)<(c[Q>>2]|0))}e=c[w+16>>2]|0;if(!e)break;o=c[e>>2]|0;if((o|0)<=-1)break;r=c[p+20>>2]|0;do{c[r+(o<<2)>>2]=s;e=e+4|0;o=c[e>>2]|0}while((o|0)>-1)}while(0);u=w+40|0;if(!(c[u>>2]|0))break;else w=w+32|0}if(!t){e=E;C=171;continue}if(n){e=c[n>>2]|0;if((e|0)>-1){do{n=n+4|0;c[j+(e<<2)>>2]=s;e=c[n>>2]|0}while((e|0)>-1);q=v;o=D;e=E}else{q=v;o=D;e=E}}else{q=v;o=D;e=E;n=0}}else if((C|0)==171){C=0;r=c[p+24>>2]|0;if(!r)break;t=c[p+8>>2]|0;if(c[t+20>>2]&256|0)c[k+(c[p+12>>2]<<2)>>2]=0;s=c[p>>2]|0;u=c[p+4>>2]|0;c[T>>2]=c[p+16>>2];q=c[Q>>2]|0;if((q|0)>0){p=c[p+20>>2]|0;o=0;do{c[j+(o<<2)>>2]=c[p+(o<<2)>>2];o=o+1|0}while((o|0)<(q|0));p=r;q=v;o=u}else{p=r;q=v;o=u}}r=o;v=q;w=t;x=n;C=79}n=(v|0)>-1;if(n|(c[T>>2]|0)==0){C=180;break}c[T>>2]=H;r=F;q=G;B=H}if((C|0)==53){CM(U);if(j|0)_I(i);if(m|0)_I(h);if(!k){e=12;break a}_I(g);e=12;break a}else if((C|0)==60){CM(U);if(j|0)_I(i);if(m|0)_I(h);if(!k){e=12;break a}_I(g);e=12;break a}else if((C|0)==145){CM(U);if(j|0)_I(i);if(m|0)_I(h);if(!k){e=12;break a}_I(g);e=12;break a}else if((C|0)==152){CM(U);if(j|0)_I(i);if(m|0)_I(h);if(!k){e=12;break a}_I(g);e=12;break a}else if((C|0)==180){c[f>>2]=v;e=(n^1)&1;break}}while(0);CM(U);if(j|0)_I(i);if(m|0)_I(h);if(k)_I(g)}else e=12;while(0);l=V;return e|0}\nfunction sN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+16|0;T=W;c[T>>2]=0;k=e&1;Q=e&2;R=a+56|0;j=c[R>>2]&4;if(!d)N=0;else N=c[a+40>>2]|0;P=N<<2;i=a+52|0;e=c[i>>2]|0;h=e<<3;g=h+8|0;e=P+12+h+(g+(O(P,e)|0)<<1)|0;U=ZI(e)|0;if(!U)e=12;else{VN(U|0,0,e|0)|0;e=U+P|0;m=e&3;m=e+((m|0)==0?0:4-m|0)|0;e=m+g|0;n=e&3;n=e+((n|0)==0?0:4-n|0)|0;e=n+g|0;M=e&3;M=e+((M|0)==0?0:4-M|0)|0;e=M+h|0;g=e&3;i=c[i>>2]|0;h=(i|0)>0;if(h){e=e+((g|0)==0?0:4-g|0)|0;g=0;while(1){c[n+(g<<3)+4>>2]=e;e=e+P|0;c[m+(g<<3)+4>>2]=e;g=g+1|0;if((g|0)>=(i|0))break;else e=e+P|0}if(h){e=0;do{c[M+(e<<3)>>2]=-1;e=e+1|0}while((e|0)<(i|0))}}e=UL(T,b,4)|0;if((e|0)<1)if((e|0)<0)e=1;else{i=1;V=11}else{i=e;V=11}a:do if((V|0)==11){L=a+8|0;K=(j|0)!=0;E=(k|0)==0;F=(N|0)>0;G=a+12|0;H=(N|0)<1;I=a+44|0;J=a+32|0;C=a+36|0;D=(N|0)==0;h=0;v=b+i|0;u=0;j=0;e=-1;g=m;A=U;x=m;w=n;while(1){if((e|0)<0){a=c[L>>2]|0;k=a+8|0;b:do if(c[k>>2]|0){p=(u|0)!=0;q=(h|0)==95;r=(u|0)==0;t=K&(h|0)==10;s=(u|0)<1&E;while(1){c:while(1){o=a+12|0;if((c[M+(c[o>>2]<<3)>>2]|0)>=(u|0))break;n=a+20|0;b=c[n>>2]|0;if(!b){V=46;break}d:do if((b&1|0)==0|s|t){if(b&2|0?(B=c[T>>2]|0,!((B|Q|0)==0|K&(B|0)==10)):0)break;do if(b&16|0){if(q)break d;if(DK(h)|0)break d;b=c[T>>2]|0;if((b|0)==95)break;if(!(DK(b)|0))break d}while(0);b=c[n>>2]|0;if(b&32){if(q){b=c[T>>2]|0;if((b|0)==95)break}else{B=(DK(h)|0)==0;b=c[T>>2]|0;if(B|(b|0)==95)break}if(DK(b)|0)break;b=c[n>>2]|0}m=c[T>>2]|0;do if((m|0)!=0&(p&(b&64|0)!=0)){if(q)b=1;else{b=(DK(h)|0)!=0;m=c[T>>2]|0}if((m|0)==95)if(b)break d;else break;else if(b^(DK(m)|0)!=0)break;else break d}while(0);if(!(c[n>>2]&128)){V=46;break c}b=c[T>>2]|0;if(r|(b|0)==0)break;if(q)m=1;else{m=(DK(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(m){V=46;break c}else break;else if(m^(DK(b)|0)!=0)break;else{V=46;break c}}while(0);k=a+40|0;if(!(c[k>>2]|0))break b;else a=a+32|0}if((V|0)==46){V=0;c[g>>2]=c[k>>2];if(F)VN(c[g+4>>2]|0,-1,P|0)|0;k=c[a+16>>2]|0;if(k|0?(S=c[k>>2]|0,(S|0)>-1):0){m=g+4|0;b=S;do{if((b|0)<(N|0))c[(c[m>>2]|0)+(b<<2)>>2]=u;k=k+4|0;b=c[k>>2]|0}while((b|0)>-1)}k=(c[g>>2]|0)!=(c[G>>2]|0);if(k|H){j=k?j:1;e=k?e:u;k=g+4|0}else{k=g+4|0;j=c[k>>2]|0;e=0;do{c[d+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)!=(N|0));j=1;e=u}B=c[o>>2]|0;c[M+(B<<3)>>2]=u;c[M+(B<<3)+4>>2]=k;g=g+8|0}k=a+40|0;if(!(c[k>>2]|0))break;else a=a+32|0}}while(0);c[g>>2]=0;g=c[T>>2]|0;if(!g)break;else h=g}else{if(D)break;h=c[T>>2]|0;if(!((g|0)!=(x|0)&(h|0)!=0))break}B=u+i|0;g=UL(T,v,4)|0;if((g|0)<1)if((g|0)<0){e=1;break a}else i=1;else i=g;z=v+i|0;if((j|0)!=0&(c[I>>2]|0)!=0){if(!(c[x>>2]|0))g=w;else{o=c[C>>2]|0;p=c[o>>2]|0;q=(p|0)>-1;n=x;g=w;do{m=n+4|0;e:do if(q){k=0;b=p;do{a=c[o+((k|1)<<2)>>2]|0;if((b|0)>=(N|0))break e;j=c[m>>2]|0;if((c[j+(a<<2)>>2]|0)==(c[d+(a<<2)>>2]|0)?(c[j+(b<<2)>>2]|0)<(c[d+(b<<2)>>2]|0):0)break e;k=k+2|0;b=c[o+(k<<2)>>2]|0}while((b|0)>-1);k=m;V=75}else{k=m;j=c[m>>2]|0;V=75}while(0);if((V|0)==75){V=0;c[g>>2]=c[n>>2];v=g+4|0;y=c[v>>2]|0;c[v>>2]=j;c[k>>2]=y;g=g+8|0}n=n+8|0}while((c[n>>2]|0)!=0)}c[g>>2]=0;y=x;j=0}else{y=w;w=x}k=c[w>>2]|0;if(!k){k=A;g=y}else{r=(B|0)!=0;s=(h|0)==95;t=(B|0)==0;v=K&(h|0)==10;u=(B|0)<1&E;q=w;a=A;g=y;while(1){b=k+8|0;if(c[b>>2]|0){p=q+4|0;o=a;n=b;while(1){f:do if((c[k>>2]|0)>>>0<=h>>>0?(c[k+4>>2]|0)>>>0>=h>>>0:0){m=k+20|0;a=c[m>>2]|0;do if(a|0){if(!((a&1|0)==0|u|v)){a=o;break f}if(a&2|0?(A=c[T>>2]|0,!((A|Q|0)==0|K&(A|0)==10)):0){a=o;break f}do if(a&16|0){if(s){a=o;break f}if(DK(h)|0){a=o;break f}a=c[T>>2]|0;if((a|0)==95)break;if(!(DK(a)|0)){a=o;break f}}while(0);a=c[m>>2]|0;if(a&32){if(s){a=c[T>>2]|0;if((a|0)==95){a=o;break f}}else{A=(DK(h)|0)==0;a=c[T>>2]|0;if(A|(a|0)==95){a=o;break f}}if(DK(a)|0){a=o;break f}a=c[m>>2]|0}b=c[T>>2]|0;do if((b|0)!=0&(r&(a&64|0)!=0)){if(s)a=1;else{a=(DK(h)|0)!=0;b=c[T>>2]|0}if((b|0)==95)if(a){a=o;break f}else break;else if(a^(DK(b)|0)!=0)break;else{a=o;break f}}while(0);do if(c[m>>2]&128|0){a=c[T>>2]|0;if(t|(a|0)==0){a=o;break f}if(s)b=1;else{b=(DK(h)|0)!=0;a=c[T>>2]|0}if((a|0)==95)if(b)break;else{a=o;break f}else if(b^(DK(a)|0)!=0){a=o;break f}else break}while(0);a=c[m>>2]|0;do if(a&4){if(c[R>>2]&2|0)break;if(!(CK(h,c[k+24>>2]|0)|0)){a=o;break f}a=c[m>>2]|0}while(0);do if(a&4|0){if(!(c[R>>2]&2))break;A=KK(h)|0;a=k+24|0;if(CK(A,c[a>>2]|0)|0)break;A=lK(h)|0;if(!(CK(A,c[a>>2]|0)|0)){a=o;break f}}while(0);if(!(c[m>>2]&8))break;if(uN(c[k+28>>2]|0,h,c[R>>2]&2)|0){a=o;break f}}while(0);if(F){b=c[p>>2]|0;a=0;do{c[o+(a<<2)>>2]=c[b+(a<<2)>>2];a=a+1|0}while((a|0)!=(N|0))}a=c[k+16>>2]|0;do if(a|0){b=c[a>>2]|0;if((b|0)<=-1)break;do{if((b|0)<(N|0))c[o+(b<<2)>>2]=B;a=a+4|0;b=c[a>>2]|0}while((b|0)>-1)}while(0);a=c[k+12>>2]|0;b=M+(a<<3)|0;if((c[b>>2]|0)>=(B|0)){a=c[M+(a<<3)+4>>2]|0;b=c[a>>2]|0;if(!(vN(N,c[J>>2]|0,o,b)|0)){a=o;break}c[a>>2]=o;if((c[n>>2]|0)!=(c[G>>2]|0)){a=b;break}if(F)e=0;else{j=1;a=b;e=B;break}while(1){c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0;if((e|0)==(N|0)){j=1;a=b;e=B;break f}}}A=c[n>>2]|0;c[g>>2]=A;x=g+4|0;m=c[x>>2]|0;c[x>>2]=o;c[b>>2]=B;c[M+(a<<3)+4>>2]=x;do if((c[G>>2]|0)==(A|0)){if((e|0)==-1)if(F)e=0;else{e=B;j=1;break}else{if(!F)break;if((c[o>>2]|0)>(c[d>>2]|0))break;else e=0}do{c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0}while((e|0)<(N|0));e=B;j=1}while(0);a=m;g=g+8|0}else a=o;while(0);n=k+40|0;if(!(c[n>>2]|0))break;else{k=k+32|0;o=a}}}q=q+8|0;k=c[q>>2]|0;if(!k){k=a;break}}}c[g>>2]=0;v=z;u=B;A=k;x=y}c[f>>2]=e;e=e>>>31}while(0);_I(U)}l=W;return e|0}function tN(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((d&8|0)==0&(g|0)>-1?(m=c[e+16>>2]|0,n=c[e+28>>2]|0,l=(a|0)!=0&(n|0)!=0,l):0){k=c[e+48>>2]|0;j=0;do{d=c[m+(j*12|0)>>2]|0;if((d|0)==(k|0))i=g;else i=c[f+(d<<2)>>2]|0;h=b+(j<<3)|0;c[h>>2]=i;d=c[m+(j*12|0)+4>>2]|0;if((d|0)==(k|0))d=g;else d=c[f+(d<<2)>>2]|0;e=b+(j<<3)+4|0;c[e>>2]=d;if((d|0)==-1|(i|0)==-1){c[e>>2]=-1;c[h>>2]=-1}j=j+1|0}while(j>>>0<a>>>0&j>>>0<n>>>0);if(l){d=0;do{i=b+(d<<3)+4|0;j=c[m+(d*12|0)+8>>2]|0;if(j|0?(o=c[j>>2]|0,(o|0)>-1):0){k=b+(d<<3)|0;h=0;f=o;e=c[k>>2]|0;do{if(!((e|0)>=(c[b+(f<<3)>>2]|0)?(c[i>>2]|0)<=(c[b+(f<<3)+4>>2]|0):0)){c[i>>2]=-1;c[k>>2]=-1;e=-1}h=h+1|0;f=c[j+(h<<2)>>2]|0}while((f|0)>-1)}d=d+1|0}while(d>>>0<a>>>0&d>>>0<n>>>0)}else d=0}else d=0;if(d>>>0<a>>>0)VN(b+(d<<3)|0,-1,a-d<<3|0)|0;return}function uN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;a:do if(!e)d=0;else{f=(d|0)==0;d=e;while(1){if(f){if(CK(b,d)|0){d=1;break a}}else{e=lK(b)|0;if(CK(e,c[a>>2]|0)|0){d=1;break a}e=KK(b)|0;if(CK(e,c[a>>2]|0)|0){d=1;break a}}a=a+4|0;d=c[a>>2]|0;if(!d){d=0;break}}}while(0);return d|0}function vN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if((a|0)>0){f=0;while(1){h=c[d+(f<<2)>>2]|0;g=c[e+(f<<2)>>2]|0;if(!(c[b+(f<<2)>>2]|0)){if((h|0)<(g|0)){f=1;break a}if((h|0)>(g|0)){f=0;break a}}else{if((h|0)>(g|0)){f=1;break a}if((h|0)<(g|0)){f=0;break a}}f=f+1|0;if((f|0)>=(a|0)){f=0;break}}}else f=0;while(0);return f|0}function wN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;k=O(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=OK(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;i=(c[f+8>>2]|0)-h|0;if((i|0)>0){i=i>>>0<k>>>0?i:k;TN(b|0,h|0,i|0)|0;c[g>>2]=(c[g>>2]|0)+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(eK(f)|0)break;h=bb[c[i>>2]&31](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)PK(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)PK(f);return e|0}function xN(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(OK(a)|0)==0;a=yN(a)|0}else a=yN(a)|0;return a|0}function yN(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=bb[c[a+40>>2]&31](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function zN(a){a=a|0;(c[a+76>>2]|0)>-1?OK(a)|0:0;return c[a+60>>2]|0}function AN(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+48|0;i=k+24|0;h=k+16|0;g=k;d=k+28|0;b=d;e=134988;f=b+20|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));e=d+13|0;b=0;while(1){AL(e)|0;c[g>>2]=d;c[g+4>>2]=32962;c[g+8>>2]=384;f=iJ(Ba(5,g|0)|0)|0;if((f|0)>-1){j=4;break}if((b|0)<99)b=b+1|0;else{b=0;break}}if((j|0)==4){c[h>>2]=d;sa(10,h|0)|0;b=SL(f,135008)|0;if(!b){c[i>>2]=f;Da(6,i|0)|0;b=0}}l=k;return b|0}function BN(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(OK(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=dK(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=dK(a)|0;break}}while(0);return b|0}function CN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((c[d+76>>2]|0)>=0?(OK(d)|0)!=0:0){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(i=d+20|0,j=c[i>>2]|0,j>>>0<(c[d+16>>2]|0)>>>0):0){c[i>>2]=j+1;a[j>>0]=f}else e=YL(d,b)|0;PK(d)}else k=3;do if((k|0)==3){f=b&255;e=b&255;if((e|0)!=(a[d+75>>0]|0)?(g=d+20|0,h=c[g>>2]|0,h>>>0<(c[d+16>>2]|0)>>>0):0){c[g>>2]=h+1;a[h>>0]=f;break}e=YL(d,b)|0}while(0);return e|0}function DN(a){a=a|0;return xN(a)|0}function EN(){}function FN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=O(e,f)|0;d=a>>>16;a=(c>>>16)+(O(e,d)|0)|0;e=b>>>16;b=O(e,f)|0;return (z=(a>>>16)+(O(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function GN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=FN(e,f)|0;a=z;return (z=(O(b,f)|0)+(O(d,e)|0)+a|a&0,c|0|0)|0}function HN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (z=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function IN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (z=d,a-c>>>0|0)|0}function JN(b){b=b|0;var c=0;c=a[n+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b>>>24)>>0]|0)+24|0}function KN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (z=n,f)|0}else{if(!g){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (z=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<<i;b=k>>>(m>>>0)&b;g=0;i=l<<i;break}if(!f){n=0;f=0;return (z=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (z=n,f)|0}g=h-1|0;if(g&h|0){i=(R(h|0)|0)+33-(R(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<<m|l>>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<<p&j;i=(k<<p|l>>>(o>>>0))&j|l<<m&i-33>>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (z=o,p)|0}else{p=JN(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (z=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (z=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (z=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((JN(i|0)|0)>>>0);return (z=o,p)|0}g=(R(i|0)|0)-(R(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<<i|l>>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<<i;break}if(!f){o=0;p=0;return (z=o,p)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (z=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=HN(m|0,l|0,-1,-1)|0;d=z;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;IN(k|0,d|0,e|0,n|0)|0;p=z;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=IN(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=z;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (z=o,p)|0}function LN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return KN(a,b,c,d,0)|0}function MN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g|0;KN(a,b,d,e,f)|0;l=g;return (z=c[f+4>>2]|0,c[f>>2]|0)|0}function NN(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}z=0;return b>>>c-32|0}function ON(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){z=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}z=a<<c-32;return 0}function PN(a){a=a|0;return (a&255)<<8|a>>8&255|0}function QN(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function RN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;q=q+1|0;c[a>>2]=q;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=q;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;z=e;return d|0}f=f+1|0}e=e*2|0;d=aJ(d|0,8*(e+1|0)|0)|0;d=RN(a|0,b|0,d|0,e|0)|0;z=e;return d|0}function SN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function TN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return La(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function UN(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else TN(b,c,d)|0;return b|0}function VN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function WN(a){a=a|0;var b=0,d=0;d=c[i>>2]|0;b=d+a|0;if((a|0)>0&(b|0)<(d|0)|(b|0)<0){W()|0;ra(12);return -1}c[i>>2]=b;if((b|0)>(V()|0)?(U()|0)==0:0){c[i>>2]=d;ra(12);return -1}return d|0}function XN(a){a=a|0;return +Ya[a&1]()}function YN(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return +Za[a&7](+b,+c,+d)}function ZN(a){a=a|0;return _a[a&3]()|0}function _N(a,b){a=a|0;b=b|0;return $a[a&31](b|0)|0}function $N(a,b,c){a=a|0;b=b|0;c=c|0;return ab[a&63](b|0,c|0)|0}function aO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return bb[a&31](b|0,c|0,d|0)|0}function bO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return cb[a&31](b|0,c|0,d|0,e|0)|0}function cO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return db[a&3](b|0,c|0,d|0,e|0,f|0)|0}function dO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return eb[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function eO(a){a=a|0;fb[a&15]()}function fO(a,b){a=a|0;b=b|0;gb[a&127](b|0)}function gO(a,b,c){a=a|0;b=b|0;c=c|0;hb[a&31](b|0,c|0)}function hO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ib[a&127](b|0,c|0,d|0)}function iO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;jb[a&15](b|0,c|0,d|0,+e,+f,g|0)}function jO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;kb[a&31](b|0,c|0,d|0,e|0)}function kO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;lb[a&7](b|0,c|0,d|0,e|0,f|0)}function lO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;mb[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function mO(){S(0);return 0.0}function nO(a,b,c){a=+a;b=+b;c=+c;S(1);return 0.0}function oO(){S(2);return 0}function pO(a){a=a|0;S(3);return 0}function qO(a,b){a=a|0;b=b|0;S(4);return 0}function rO(a,b,c){a=a|0;b=b|0;c=c|0;S(5);return 0}function sO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(6);return 0}function tO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(7);return 0}function uO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(8);return 0}function vO(){S(9)}function wO(a){a=a|0;S(10)}function xO(a,b){a=a|0;b=b|0;S(11)}function yO(a,b,c){a=a|0;b=b|0;c=c|0;S(12)}function zO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;S(13)}function AO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;S(14)}function BO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;S(15)}function CO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;S(16)}\n\n// EMSCRIPTEN_END_FUNCS\nvar Ya=[mO,yA];var Za=[nO,Uu,Tu,Vu,Wu,nO,nO,nO];var _a=[oO,Fw,wx,oO];var $a=[pO,Rg,kg,Rn,Un,$B,aC,RD,SD,TD,UD,VD,WD,XD,YD,fJ,ub,or,ll,ol,Bw,Gw,nn,ww,co,NB,vw,SB,TB,NI,pO,pO];var ab=[qO,tn,Qn,Vn,yz,zz,qz,mz,Wy,mr,ag,Qg,rh,Vh,li,wk,uk,ml,pl,zq,yq,xq,Ds,Ts,Os,Ps,Ot,WL,CN,sA,uB,Im,wG,Pm,Rm,eo,OB,xJ,XE,JI,KI,nN,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO];var bb=[rO,Pl,Vl,Pn,Tn,gG,gJ,hJ,lJ,mJ,$K,_l,Xl,zL,uA,Ex,$C,GI,eM,rO,rO,rO,rO,rO,rO,rO,rO,rO,rO,rO,rO,rO];var cb=[sO,Nm,Np,Om,fn,vn,xn,In,Hn,Wn,_n,ao,yx,CC,AC,wE,iG,EG,DG,Ml,wA,sO,sO,sO,sO,sO,sO,sO,sO,sO,sO,sO];var db=[tO,un,Xy,rz];var eb=[uO,kI];var fb=[vO,xA,Cw,Dw,Ew,Iw,Jw,Kw,mG,vO,vO,vO,vO,vO,vO,vO];var gb=[wO,zb,Ab,Eb,Fb,Gb,_b,$b,xc,yc,zc,Ac,Bc,Cc,Dc,Pc,Qc,Tc,Uc,Vc,Wc,Xc,Yc,Zc,jd,kd,ld,nd,od,pd,qd,rd,sd,td,ud,Fd,Gd,Hd,Jd,Kd,Ld,Md,Nd,Od,Pd,Qd,Rd,Td,ee,fe,ge,he,se,te,ue,we,Je,Ke,Le,Ne,Oe,Pe,Qe,Re,Se,Te,Ue,Ve,cf,df,ef,ff,Jf,Ef,yn,Cy,Uy,Ey,Dy,oz,ay,dy,ZD,cE,xf,ql,lm,lG,UC,VB,zx,_I,FG,jI,EI,FI,LI,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO];var hb=[xO,Fc,Kc,$c,ed,Bd,Zd,ne,Ce,$e,mf,Xn,Yy,Az,sz,nz,Sy,Ty,wz,xz,aE,eE,bm,rs,Hw,MB,iI,HI,II,MI,OI,xO];var ib=[yO,Hb,Ib,Lb,wc,Ec,Gc,Jc,_c,ad,dd,wd,xd,Ad,Ud,Vd,Yd,ie,je,me,xe,ye,Be,We,Xe,_e,gf,hf,lf,bk,ck,dk,im,zn,$n,Jo,Op,js,Ev,xx,cy,mB,BC,zC,_D,$D,bE,dE,fE,hG,WH,VH,Bm,bn,oo,Ro,Uo,Aw,vA,Cx,QB,UB,XH,ZH,_H,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO];var jb=[zO,Ft,Gt,Ht,It,Jt,Kt,Lt,Mt,zO,zO,zO,zO,zO,zO,zO];var kb=[AO,Jb,Hc,bd,md,yd,Id,Wd,ke,ze,Me,Ye,jf,Af,zf,yf,wf,vf,uf,Zb,tf,sf,wn,Vy,pz,rL,PB,RB,AO,AO,AO,AO];var lb=[BO,Rc,vd,Cd,Sd,ve,nl,WB];var mb=[CO,Kb,Ic,cd,zd,Xd,le,Ae,Ze,kf,XB,CO,CO,CO,CO,CO];return{___errno_location:jJ,___muldi3:GN,___udivdi3:LN,___uremdi3:MN,_bitshift64Lshr:NN,_bitshift64Shl:ON,_dtdisc:Ll,_dtextract:Nl,_dtopen:Ql,_free:_I,_htons:eL,_i64Add:HN,_i64Subtract:IN,_llvm_bswap_i16:PN,_llvm_bswap_i32:QN,_malloc:ZI,_memalign:dJ,_memcpy:TN,_memmove:UN,_memset:VN,_realloc:aJ,_saveSetjmp:RN,_sbrk:WN,_testSetjmp:SN,_vizCreateFile:wb,_vizLastErrorMessage:vb,_vizRenderFromString:yb,_vizSetY_invert:xb,dynCall_d:XN,dynCall_dddd:YN,dynCall_i:ZN,dynCall_ii:_N,dynCall_iii:$N,dynCall_iiii:aO,dynCall_iiiii:bO,dynCall_iiiiii:cO,dynCall_iiiiiii:dO,dynCall_v:eO,dynCall_vi:fO,dynCall_vii:gO,dynCall_viii:hO,dynCall_viiiddi:iO,dynCall_viiii:jO,dynCall_viiiii:kO,dynCall_viiiiii:lO,establishStackSpace:qb,getTempRet0:tb,runPostSets:EN,setTempRet0:sb,setThrew:rb,stackAlloc:nb,stackRestore:pb,stackSave:ob}})\n\n\n// EMSCRIPTEN_END_ASM\n(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___errno_location=Module[\"___errno_location\"]=asm[\"___errno_location\"];var ___muldi3=Module[\"___muldi3\"]=asm[\"___muldi3\"];var ___udivdi3=Module[\"___udivdi3\"]=asm[\"___udivdi3\"];var ___uremdi3=Module[\"___uremdi3\"]=asm[\"___uremdi3\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _dtdisc=Module[\"_dtdisc\"]=asm[\"_dtdisc\"];var _dtextract=Module[\"_dtextract\"]=asm[\"_dtextract\"];var _dtopen=Module[\"_dtopen\"]=asm[\"_dtopen\"];var _free=Module[\"_free\"]=asm[\"_free\"];var _htons=Module[\"_htons\"]=asm[\"_htons\"];var _i64Add=Module[\"_i64Add\"]=asm[\"_i64Add\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var _llvm_bswap_i16=Module[\"_llvm_bswap_i16\"]=asm[\"_llvm_bswap_i16\"];var _llvm_bswap_i32=Module[\"_llvm_bswap_i32\"]=asm[\"_llvm_bswap_i32\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var _memalign=Module[\"_memalign\"]=asm[\"_memalign\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var _memmove=Module[\"_memmove\"]=asm[\"_memmove\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _realloc=Module[\"_realloc\"]=asm[\"_realloc\"];var _saveSetjmp=Module[\"_saveSetjmp\"]=asm[\"_saveSetjmp\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var _testSetjmp=Module[\"_testSetjmp\"]=asm[\"_testSetjmp\"];var _vizCreateFile=Module[\"_vizCreateFile\"]=asm[\"_vizCreateFile\"];var _vizLastErrorMessage=Module[\"_vizLastErrorMessage\"]=asm[\"_vizLastErrorMessage\"];var _vizRenderFromString=Module[\"_vizRenderFromString\"]=asm[\"_vizRenderFromString\"];var _vizSetY_invert=Module[\"_vizSetY_invert\"]=asm[\"_vizSetY_invert\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var getTempRet0=Module[\"getTempRet0\"]=asm[\"getTempRet0\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var setTempRet0=Module[\"setTempRet0\"]=asm[\"setTempRet0\"];var setThrew=Module[\"setThrew\"]=asm[\"setThrew\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];var dynCall_d=Module[\"dynCall_d\"]=asm[\"dynCall_d\"];var dynCall_dddd=Module[\"dynCall_dddd\"]=asm[\"dynCall_dddd\"];var dynCall_i=Module[\"dynCall_i\"]=asm[\"dynCall_i\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_iii=Module[\"dynCall_iii\"]=asm[\"dynCall_iii\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_iiiii=Module[\"dynCall_iiiii\"]=asm[\"dynCall_iiiii\"];var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=asm[\"dynCall_iiiiii\"];var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=asm[\"dynCall_iiiiiii\"];var dynCall_v=Module[\"dynCall_v\"]=asm[\"dynCall_v\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_viii=Module[\"dynCall_viii\"]=asm[\"dynCall_viii\"];var dynCall_viiiddi=Module[\"dynCall_viiiddi\"]=asm[\"dynCall_viiiddi\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];var dynCall_viiiii=Module[\"dynCall_viiiii\"]=asm[\"dynCall_viiiii\"];var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=asm[\"dynCall_viiiiii\"];Module[\"asm\"]=asm;Module[\"ccall\"]=ccall;Module[\"Pointer_stringify\"]=Pointer_stringify;Module[\"UTF8ToString\"]=UTF8ToString;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module[\"locateFile\"]===\"function\"){memoryInitializer=Module[\"locateFile\"](memoryInitializer)}else if(Module[\"memoryInitializerPrefixURL\"]){memoryInitializer=Module[\"memoryInitializerPrefixURL\"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module[\"readBinary\"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency(\"memory initializer\");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module[\"memoryInitializerRequest\"])delete Module[\"memoryInitializerRequest\"].response;removeRunDependency(\"memory initializer\")});function doBrowserLoad(){Module[\"readAsync\"](memoryInitializer,applyMemoryInitializer,(function(){throw\"could not load memory initializer \"+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module[\"memoryInitializerRequest\"]){function useRequest(){var request=Module[\"memoryInitializerRequest\"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module[\"memoryInitializerRequestURL\"]);if(data){response=data.buffer}else{console.warn(\"a problem seems to have happened with Module.memoryInitializerRequest, status: \"+request.status+\", retrying \"+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module[\"memoryInitializerRequest\"].response){setTimeout(useRequest,0)}else{Module[\"memoryInitializerRequest\"].addEventListener(\"load\",useRequest)}}else{doBrowserLoad()}}}function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};function run(args){args=args||Module[\"arguments\"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]&&status===0){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"exit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}Module[\"exit\"]=exit;function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;throw\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\"}Module[\"abort\"]=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}Module[\"noExitRuntime\"]=true;run()\n\n\n\n\n return Module;\n};\n\nfunction render(instance, src, options) {\n var i;\n for (i = 0; i < options.files.length; i++) {\n instance['ccall']('vizCreateFile', 'number', ['string', 'string'], [options.files[i].path, options.files[i].data]);\n }\n\n instance['ccall']('vizSetY_invert', 'number', ['number'], [options.yInvert ? 1 : 0]);\n \n var resultPointer = instance['ccall']('vizRenderFromString', 'number', ['string', 'string', 'string'], [src, options.format, options.engine]);\n var resultString = instance['Pointer_stringify'](resultPointer);\n instance['ccall']('free', 'number', ['number'], [resultPointer]);\n\n var errorMessagePointer = instance['ccall']('vizLastErrorMessage', 'number', [], []);\n var errorMessageString = instance['Pointer_stringify'](errorMessagePointer);\n instance['ccall']('free', 'number', ['number'], [errorMessagePointer]);\n\n if (errorMessageString != '') {\n throw new Error(errorMessageString);\n }\n \n return resultString;\n}\n\nif (typeof importScripts === \"function\") {\n var instance = Module();\n \n onmessage = function(event) {\n var id = event.data.id;\n var src = event.data.src;\n var options = event.data.options;\n \n try {\n var result = render(instance, src, options);\n postMessage({ id: id, result: result });\n } catch (error) {\n postMessage({ id: id, error: { message: error.message, fileName: error.fileName, lineNumber: error.lineNumber } });\n }\n }\n}\n\nif (typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = { render: render, Module: Module };\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return { render: render, Module: Module }; });\n}\n\nif (typeof global.Viz !== 'undefined') {\n global.Viz.render = render;\n global.Viz.Module = Module;\n}\n\n})(typeof self !== 'undefined' ? self : this);\n",
"type": "application/javascript",
"title": "$:/plugins/chanilino/viz/lite.render.js",
"module-type": "library",
"modifier": "chan",
"modified": "20180705095419090",
"creator": "chan",
"created": "20180705095327496"
}
}
}
.matched {background-color:#ffc;}
.tw-context {
border:0px solid #eee;background-color:#eee;
word-break: break-all; word-wrap: break-word;}
{
"tiddlers": {
"$:/plugins/danielo515/ContextPlugin/widgets/context.js": {
"created": "20140418153435777",
"creator": "danielo",
"modified": "20140530231943517",
"modifier": "danielo",
"module-type": "widget",
"title": "$:/plugins/danielo515/ContextPlugin/widgets/context.js",
"type": "application/javascript",
"text": "/*\\\\\ntitle: $:/core/modules/widgets/danielo/context-widget.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar contextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\ncontextWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\ncontextWidget.prototype.render = function(parent,nextSibling) {\n // Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n \n if(this.term && this.term.length>3){\n \n this.createRegexp();\n var matches = this.executeRegexp();\n\t if(matches.length > 0){ \n this.domNode = this.document.createElement(this.element);\n this.domNode.className=\"tw-context\";\n this.composeResults( matches ); //this appends to domNode \n \t// Insert element\n \tparent.insertBefore(this.domNode,nextSibling);\n \tthis.renderChildren(this.domNode,null);\n\t \tthis.domNodes.push(this.domNode);\n }\n }\n\t\n};\n\n/*\nCompute the internal state of the widget\n*/\ncontextWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n this.matchedClass = this.getAttribute(\"matchClass\",\"matched\");\n\tthis.tiddler = this.getAttribute( \"tiddler\",this.getVariable(\"currentTiddler\") );\n this.term = this.getAttribute(\"term\",this.getAttribute(\"searchTerm\"));\n\tthis.contextLength = this.getAttribute(\"length\",50);\n this.before = this.getAttribute(\"before\",this.contextLength);\n this.after = this.getAttribute(\"after\",this.contextLength);\n this.maxMatches = this.getAttribute(\"maxMatches\",10);\n this.element = this.getAttribute(\"element\",\"pre\");\n\tthis.makeChildWidgets();\n};\n\n /*Create the regular expression*/\ncontextWidget.prototype.createRegexp = function()\n{\n var regString = \"(\\\\w+[\\\\s\\\\S]{0,#before#})?(#term#)([\\\\s\\\\S]{0,#after#}\\\\w+)?\";\n\n var regString = regString.replace(\"#before#\",this.before).replace(\"#term#\", $tw.utils.escapeRegExp(this.term) ) .replace(\"#after#\",this.after);\n this.regexp = new RegExp(regString,\"ig\");\n //console.log(regString);\n};\n/*\nexecute the regular expresion\n*/\ncontextWidget.prototype.executeRegexp = function()\n{\n var text = this.wiki.getTiddlerText(this.tiddler), match,results = new Array();\n while( (match = this.regexp.exec( text ) ) && (results.length < this.maxMatches) )\n { results.push(match) }\n //console.log(\"matches\",results);\n return results;\n};\n\n/*\ncompose the results\nmatches : array of match objects from regular expression execute\n*/\ncontextWidget.prototype.composeResults = function(matches){\n var result=[], self=this, node = this.domNode,\n dots = textNode(\"...\\n\"),\n span = matchedNode( this.term );\n\n for(var i=0; i < matches.length; i++){\n processMatch( matches[i] );\n }\n \n function processMatch(match){\n if( match.index !== 0) node.appendChild( dots.cloneNode(true) );\n for( var i=1;i<match.length;i++ ) {//match[0] full matched text (all groups together)\n if( match[i] ) {\n if ( match[i].toLowerCase() == self.term.toLowerCase() ) \n node.appendChild( match[i] == self.term ? span.cloneNode(true) : matchedNode( match[i] ) )\n else\n node.appendChild( textNode( match[i]) )\n }\n }\n if( match.index + match[0].length < match.input.length) node.appendChild( dots.cloneNode(true) );\n }\n \n function textNode(text){ return self.document.createTextNode(text) }\n function matchedNode(text) { \n var node = self.document.createElement(\"span\"); node.appendChild( textNode(text) ); node.className = self.matchedClass;\n return node }\n \n};\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\ncontextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.term || changedAttributes.length || changedAttributes.matchedClass) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n return this.refreshChildren(changedTiddlers);\n};\n\nexports.context = contextWidget;\n\n})();"
},
"$:/plugins/danielo515/ContextPlugin/visualizer": {
"title": "$:/plugins/danielo515/ContextPlugin/visualizer",
"tags": "$:/tags/SearchResults",
"caption": "Context",
"text": "<$list filter=\"[!is[system]search{$:/temp/search}sort[title]limit[250]]\">\r\n {{!!title||$:/core/ui/ListItemTemplate}}\r\n <$context term={{$:/temp/search}} />\r\n</$list>\r\n"
},
"$:/plugins/danielo515/ContextPlugin/Stylesheet/results": {
"created": "20140529162823729",
"tags": "$:/tags/Stylesheet contextPlugin",
"title": "$:/plugins/danielo515/ContextPlugin/Stylesheet/results",
"type": "text/css",
"text": ".matched{background-color:yellow}\n.tw-context {/*border:1px solid;\n /*word-break: break-all; word-wrap: break-word*/}"
},
"$:/plugins/danielo515/ContextPlugin/Caption": {
"created": "20140530174219263",
"tags": "contextPlugin",
"title": "$:/plugins/danielo515/ContextPlugin/Caption",
"type": "text/vnd.tiddlywiki",
"text": "Context search"
},
"Context Search": {
"caption": "{{$:/plugins/danielo515/ContextPlugin/Caption}}",
"created": "20140530173407542",
"tags": "$:/tags/AdvancedSearch",
"title": "Context Search",
"type": "text/vnd.tiddlywiki",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tw-search\"><$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/><$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\"> <$link to=\"\" class=\"btn-invisible\">{{$:/core/images/close-button}}</$link></$reveal></div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<div class=\"tw-search-results\">\n\n<<lingo Standard/Matches>>\n\n<$list filter=\"[!is[system]search{$:/temp/advancedsearch}sort[title]limit[250]]\">\n{{!!title||$:/core/ui/ListItemTemplate}}\n<$context term={{$:/temp/advancedsearch}}/>\n</$list>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/plugins/danielo515/ContextPlugin/readme": {
"title": "$:/plugins/danielo515/ContextPlugin/readme",
"text": "!Usage\n\nAfter installing the plugin you will have a new tab in [[$:/AdvancedSearch]] called [[Context Search]]. If you want this functionality in other places you will have to edit the desired tiddler yourself adding the ''context widget''. For more details about using the widget see the section below.\n\n!!Using the widget\n\nThe very basic usage of the widget is the following:\n\n```\r\n<$context term=\"lorem\"/>\r\n```\r\nWhich will render as:\r\n<$context term=\"lorem\"/>\n\nThe widgets will search inside the current tiddler by default. Because that you see the same content twice here. This example is not very useful. Other more meaningful would be:\n\n```\r\n<$list filter=\"[search{$:/temp/advancedsearch}sort[title]limit[250]]\">\r\n{{!!title||$:/core/ui/ListItemTemplate}}\r\n<$context term={{$:/temp/advancedsearch}}/>\r\n</$list>\r\n```\n\nThat will search for tiddlers containing the text specified in [[$:/temp/advancedsearch]] and will display a link to the matching tiddlers plus a preview of the matching content. Something very similar is used in [[Context Search]]. Below you can find a complete list of parameters and their default values.\n\n|! parameter |! description | !default |\r\n| term | The term you want to search ||\r\n| searchTerm | An alias for the previous one ||\r\n| tiddler | The tiddler's name to look into | current tiddler |\r\n| length | Number of context characters to show | 50 |\r\n| before | Number of characters before the matched term to show | the value of the length parameter |\r\n| after | Number of characters after the matched term to show | the value of the length parameter |\r\n| maxMatches | maximun number of matched elements to show. Incrementing this can cause several performance issues | 10 |\r\n| element | Node element to create. This element will contain the results of the search. If you want to style it its class is `tw-context` | `<pre>` |\r\n| matchClass | The css class to assign to the matched terms in the results. This is used to highlight the results | matched |\n\n!Customizing the output\r\nThere are not many ways to customize the output of this widget. You can specify ''what type of node you want to create'' to wrap the results (div,span...). The default is `<pre>`. This container is created with the class `tw-context` so you can easily apply styles to it. Something similar happens to the ''highlighted'' words. You can specify the name of the class to assign to it and also you can apply styles to that class.\n\nA very basic example of customization could be:\n\n# Create a tiddler, for example [[$/plugins/danielo515/context/css]]\r\n# Paste the following text or any css rule you want: \"\"\"\n\n<pre>\r\n.matched{background-color:yellow}\r\n.tw-context {\r\n border:1px solid blue;\r\n word-break: break-all; word-wrap: break-word;}\r\n</pre>\r\n\"\"\"\r\n# Tag it with `$:/tags/stylesheet`\r\n# Save the tiddler"
}
}
}
/*\\
title: $:/core/modules/widgets/danielo/context-widget.js
type: application/javascript
module-type: widget
Edit-text widget
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tc: false */
"use strict";
var Widget = require("$:/core/modules/widgets/widget.js").widget;
var contextWidget = function(parseTreeNode,options) {
this.initialise(parseTreeNode,options);
};
/*
Inherit from the base widget class
*/
contextWidget.prototype = new Widget();
/*
Render this widget into the DOM
*/
contextWidget.prototype.render = function(parent,nextSibling) {
// Save the parent dom node
this.parentDomNode = parent;
// Compute our attributes
this.computeAttributes();
// Execute our logic
this.execute();
if(this.term && this.term.length>3){
this.createRegexp();
var matches = this.executeRegexp();
if(matches.length > 0){
this.domNode = this.document.createElement(this.element);
this.domNode.className="tw-context";
this.composeResults( matches ); //this appends to domNode
// Insert element
parent.insertBefore(this.domNode,nextSibling);
this.renderChildren(this.domNode,null);
this.domNodes.push(this.domNode);
}
}
};
/*
Compute the internal state of the widget
*/
contextWidget.prototype.execute = function() {
// Get the parameters from the attributes
this.matchedClass = this.getAttribute("matchClass","matched");
this.tiddler = this.getAttribute( "tiddler",this.getVariable("currentTiddler") );
this.term = this.getAttribute("term",this.getAttribute("searchTerm"));
this.contextLength = this.getAttribute("length",50);
this.before = this.getAttribute("before",this.contextLength);
this.after = this.getAttribute("after",this.contextLength);
this.maxMatches = this.getAttribute("maxMatches",10);
this.element = this.getAttribute("element","pre");
this.makeChildWidgets();
};
/*Create the regular expression*/
contextWidget.prototype.createRegexp = function()
{
var regString = "(\\w+[\\s\\S]{0,#before#})?(#term#)([\\s\\S]{0,#after#}\\w+)?";
var regString = regString.replace("#before#",this.before).replace("#term#", $tw.utils.escapeRegExp(this.term) ) .replace("#after#",this.after);
this.regexp = new RegExp(regString,"ig");
//console.log(regString);
};
/*
execute the regular expresion
*/
contextWidget.prototype.executeRegexp = function()
{
var text = this.wiki.getTiddlerText(this.tiddler), match,results = new Array();
while( (match = this.regexp.exec( text ) ) && (results.length < this.maxMatches) )
{ results.push(match) }
//console.log("matches",results);
return results;
};
/*
compose the results
matches : array of match objects from regular expression execute
*/
contextWidget.prototype.composeResults = function(matches){
var result=[], self=this, node = this.domNode,
dots = textNode("...\n"),
span = matchedNode( this.term );
for(var i=0; i < matches.length; i++){
processMatch( matches[i] );
}
function processMatch(match){
if( match.index !== 0) node.appendChild( dots.cloneNode(true) );
for( var i=1;i<match.length;i++ ) {//match[0] full matched text (all groups together)
if( match[i] ) {
if ( match[i].toLowerCase() == self.term.toLowerCase() )
node.appendChild( match[i] == self.term ? span.cloneNode(true) : matchedNode( match[i] ) )
else
node.appendChild( textNode( match[i]) )
}
}
if( match.index + match[0].length < match.input.length) node.appendChild( dots.cloneNode(true) );
}
function textNode(text){ return self.document.createTextNode(text) }
function matchedNode(text) {
var node = self.document.createElement("span"); node.appendChild( textNode(text) ); node.className = self.matchedClass;
return node }
};
/*
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
*/
contextWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
if(changedAttributes.tiddler || changedAttributes.term || changedAttributes.length || changedAttributes.matchedClass) {
this.refreshSelf();
return true;
}
return this.refreshChildren(changedTiddlers);
};
exports.context = contextWidget;
})();
{
"tiddlers": {
"$:/plugins/felixhayashi/hotzone/config.js": {
"title": "$:/plugins/felixhayashi/hotzone/config.js",
"text": "/*\\\n\ntitle: $:/plugins/felixhayashi/hotzone/config.js\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n(function(){\"use strict\";exports.config={classNames:{storyRiver:\"tc-story-river\",tiddlerFrame:\"tc-tiddler-frame\",tiddlerTitle:\"tc-title\"},references:{userConfig:\"$:/config/hotzone/focusOffset\",focussedTiddlerStore:\"$:/temp/focussedTiddler\"},checkbackTime:$tw.utils.getAnimationDuration()}})();",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/hotzone/hotzone.js": {
"title": "$:/plugins/felixhayashi/hotzone/hotzone.js",
"text": "/*\\\n\ntitle: $:/plugins/felixhayashi/hotzone/hotzone.js\ntype: application/javascript\nmodule-type: startup\n\n@preserve\n\n\\*/\n(function(){\"use strict\";exports.name=\"hotzone\";exports.platforms=[\"browser\"];exports.after=[\"story\"];exports.synchronous=true;exports.startup=function(){var t=require(\"$:/plugins/felixhayashi/hotzone/config.js\").config;var e=null;var i=false;var r=document.getElementsByClassName(t.classNames.storyRiver)[0];var s=$tw.wiki.getTiddlerData(t.references.userConfig,{});var a=isNaN(parseInt(s.focusOffset))?150:parseInt(s.focusOffset);var n=function(e,i,r){if(!(e instanceof Element))return;if(!$tw.utils.hasClass(e,t.classNames.tiddlerFrame))return;var s=e.getElementsByClassName(t.classNames.tiddlerTitle)[0];if(s){var a=s.innerText||s.textContent;return a.trim()}};var o=function(t){if(!i){i=true;window.setTimeout(f,t||0)}};var l=function(e,i){$tw.wiki.addTiddler(new $tw.Tiddler({title:t.references.focussedTiddlerStore,text:e},$tw.wiki.getModificationFields()));if(i){var r=document.getElementsByClassName(\"hzone-focus\")[0];if(r){$tw.utils.removeClass(r,\"hzone-focus\")}$tw.utils.addClass(i,\"hzone-focus\")}};var f=function(){i=false;var s=$tw.wiki.getTiddler(\"$:/StoryList\");if(s&&s.fields.list.length){var o=null;var f=Number.MAX_VALUE;var d=r.children;var u=t.classNames.tiddlerFrame;for(var c=d.length;c--;){if($tw.utils.hasClass(d[c],u)){var v=d[c].getBoundingClientRect();var w=Math.min(Math.abs(a-v.top),Math.abs(a-v.bottom));if(w<f){o=d[c];f=w}}}var m=n(o);if(m!==e&&$tw.wiki.getTiddler(m)){e=m;l(e,o);return}}else if(e){e=\"\";l(e)}};var d=function(t){if(t[\"$:/HistoryList\"]){if(!$tw.wiki.tiddlerExists(\"$:/HistoryList\"))return;var e=$tw.wiki.getTiddler(\"$:/HistoryList\").fields[\"current-tiddler\"];var i=$tw.wiki.getTiddlerList(\"$:/StoryList\");var r=i.indexOf(e)>=0;if(!r)return;o($tw.utils.getAnimationDuration()+100)}else if(t[\"$:/StoryList\"]){o($tw.utils.getAnimationDuration()+100)}};var u=function(t){o(250)};$tw.wiki.addEventListener(\"change\",d);window.addEventListener(\"scroll\",u,false);u()}})();",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/felixhayashi/hotzone/Configuration": {
"title": "$:/plugins/felixhayashi/hotzone/Configuration",
"text": "Please see the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Focus offset:</th>\n <td><$edit-text tiddler=\"$:/config/hotzone/focusOffset\" tag=\"input\" default=\"71px\" /></td>\n </tr>\n</table>"
},
"$:/temp/focussedTiddler": {
"title": "$:/temp/focussedTiddler"
},
"$:/plugins/felixhayashi/hotzone/License": {
"title": "$:/plugins/felixhayashi/hotzone/License",
"text": "This code is released under the BSD license. For the exact terms visit:\n\nhttps://github.com/felixhayashi/TW5-HotZone/blob/master/LICENSE"
},
"$:/plugins/felixhayashi/hotzone/Readme": {
"title": "$:/plugins/felixhayashi/hotzone/Readme",
"text": "Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-HotZone]] for more information."
}
}
}
{
"tiddlers": {
"$:/plugins/felixhayashi/tiddlymap/layout": {
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline \n\nbody .tc-page-container-wrapper.tc-modal-displayed{-webkit-filter:inherit;-moz-filter:inherit;filter:inherit}body .tc-modal-wrapper{z-index:1010}body .tc-modal-wrapper .tc-modal-header svg{vertical-align:sub}body .tc-modal-wrapper .tc-modal-header h3{line-height:10px}body .tc-modal-wrapper .tc-modal-body{min-height:250px;max-height:70vh;padding-top:0px;padding-bottom:0px;overflow:auto}body .tc-modal-wrapper .tc-modal-footer{padding:8px}body .tc-modal-wrapper .tc-modal-footer .tmap-dialog-button{font-weight:bold}body .tc-modal-wrapper .tc-modal-footer .tmap-hidden-close-button{display:none}table.tmap-table tr:nth-child(odd),.tc-modal-body table.tmap-config-table tr:nth-child(odd){background-color:#F0F0F0}table.tmap-table tr:nth-child(even),.tc-modal-body table.tmap-config-table tr:nth-child(even){background-color:#FFFFFF}.tmap-save-canvas-preview{text-align:center}.tmap-save-canvas-preview img{background-color:white;border:1px solid lightgray;max-width:100%;max-height:100px}.tmap-list-separator{display:block;background-color:#efefef;margin:10px 0 5px 0;cursor:default;border-bottom:1px dotted gray;font-weight:bold;font-size:0.8em}.tmap-unicode-icon{width:1em;display:inline-block;text-align:center;color:black}html .tmap-link{color:#5778D8}html .tmap-link:hover{color:white;background:#5778D8}html .tmap-small-list,html .tmap-smaller-list,html .tmap-very-small-list{overflow:auto;min-height:2em;max-height:9em;display:block}html .tmap-smaller-list{max-height:7em}html .tmap-very-small-list{max-height:5empx}html .tc-tiddler-controls button.tmap-active-button svg{fill:#888888}html #tmap-node-filter-dialog #tmap-filter-tips{font-size:0.8em}html #tmap-node-filter-dialog textarea{height:100px;max-height:300px;overflow:auto;width:100%;font-size:11px;font-family:\"Courier New\", Courier, monospace}@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}){.tc-sidebar-scrollable .tmap-desktop-editor .tmap-widget:not(.tmap-fullscreen){display:none}}@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}){.tc-sidebar-scrollable .tmap-mobile-editor{display:none}.tc-modal-wrapper{z-index:1010}.tc-modal-wrapper .tc-modal{boder:1px solid #999999;left:calc(50% - 400px);width:802px}.tc-modal-wrapper .tc-modal-body{left:calc(50% - 400px);width:800px}}@-o-keyframes fadein-keyframes{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadein-keyframes{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadein-keyframes{0%{opacity:0}100%{opacity:1}}@keyframes flash fadein-keyframes{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeout-keyframes{0%{opacity:1}100%{opacity:0}}@-moz-keyframes fadeout-keyframes{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeout-keyframes{0%{opacity:1}100%{opacity:0}}@keyframes flash fadeout-keyframes{0%{opacity:1}100%{opacity:0}}.tmap-config-widget{background:#F0F0F0;padding:5px;margin:5px 0;box-sizing:border-box;display:block}.tmap-config-widget .vis-network{display:none}.tmap-config-widget .vis-configuration-wrapper{width:100%}.tmap-config-widget .vis-configuration-wrapper .vis-config-rangeinput{height:inherit;margin-left:4px}.tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item{width:100%;height:inherit;background:none;padding-left:0px;left:0}.tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item.tmap-vis-config-item-active .vis-config-label::after{content:\"(inherited)\";position:absolute;display:inline-block;margin-left:10px;-o-animation:fadein-keyframes 1s;-moz-animation:fadein-keyframes 1s;-webkit-animation:fadein-keyframes 1s;animation:fadein-keyframes 1s;content:\"✔\";color:green;font-weight:bold;font-size:15px}.tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item button.tmap-config-item-reset{vertical-align:top;margin-left:5px}.tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item .vis-config-range{width:150px}.tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item .vis-config-range::-moz-range-track{width:150px !important}.tmap-config-widget .vis-configuration-wrapper .vis-configuration.vis-config-item .vis-config-label{width:150px}.tmap-config-widget::after{clear:both;content:\"\";display:block}.tmap-flash-message{border:1px solid lightgray;padding:5px;margin:6px 0;display:block;color:#333333}.tmap-flash-message.tmap-info,.tmap-flash-message.tmap-plain,.tmap-flash-message.tmap-neutral{background:#F0F0F0}.tmap-flash-message.tmap-info::before,.tmap-flash-message.tmap-plain::before,.tmap-flash-message.tmap-neutral::before{content:\"i\";display:inline-block;border-radius:50%;width:0.8em;border:2px solid;font-family:serif;text-align:center;height:0.8em;font-weight:bold;line-height:0.8em;vertical-align:text-top;margin-right:2px}.tmap-flash-message.tmap-valid,.tmap-flash-message.tmap-success{background:#D1EED4}.tmap-flash-message.tmap-valid::before,.tmap-flash-message.tmap-success::before{content:\"i\";display:inline-block;border-radius:50%;width:0.8em;border:2px solid;font-family:serif;text-align:center;height:0.8em;font-weight:bold;line-height:0.8em;vertical-align:text-top;margin-right:2px}.tmap-flash-message.tmap-warning{background:#FFF6D1}.tmap-flash-message.tmap-warning::before{content:\"\";display:inline-block;background:url(<<tmap \"datauri\" \"$:/core/images/warning\" \"\">>);display:inline-block;width:1em;height:1em;background-size:100% 100%;vertical-align:text-top;margin-right:2px}.tmap-flash-message.tmap-malformed,.tmap-flash-message.tmap-invalid,.tmap-flash-message.tmap-danger{background:#EED5D1}.tmap-flash-message.tmap-malformed::before,.tmap-flash-message.tmap-invalid::before,.tmap-flash-message.tmap-danger::before{content:\"\";display:inline-block;background:url(<<tmap \"datauri\" \"$:/core/images/warning\" \"\">>);display:inline-block;width:1em;height:1em;background-size:100% 100%;vertical-align:text-top;margin-right:2px}.tmap-widget{background:#FFFFFF;width:auto;position:relative;border:1px dotted lightgray;padding:2px;color:#666;display:block}.tmap-widget.tmap-click-to-use:not(.tmap-fullscreen) .vis-network:not(.vis-active){cursor:pointer}.tmap-widget.tmap-click-to-use:not(.tmap-fullscreen) .vis-network:not(.vis-active) .vis-navigation{display:none}.tmap-widget.tmap-click-to-use:not(.tmap-fullscreen) .vis-network:not(.vis-active):hover:before{color:gray;background:white;content:\"Click to use\";font-size:14px;font-weight:bold;right:calc(50% - 65px - 5px);position:absolute;text-align:center;top:calc(50% - 14px - 5px);width:130px;z-index:2000;padding:5px;pointer-events:none;background-color:rgba(255,255,255,0.3)}.tmap-widget .tmap-loading-bar{display:none;position:absolute;text-align:center;font-size:2em;padding:10px;top:50%;background:rgba(245,245,245,0.5);z-index:1;width:250px;margin:auto;left:0px;right:0px}.tmap-widget .tmap-vis-graph{height:calc(100% - 35px)}.tmap-widget.tmap-no-buttons .vis-navigation{display:none}.tmap-widget.tmap-advanced-editor .tmap-topbar{background:#d6d9d8}.tmap-widget.tmap-advanced-editor .tmap-topbar .tmap-active-button{color:#488DCD}.tmap-widget.tmap-advanced-editor .tmap-topbar .tmap-active-button svg{fill:#488DCD}.tmap-widget.tmap-advanced-editor .tmap-topbar .tmap-unicode-button{font-size:1.5em;vertical-align:bottom;height:28px;fill:#555555}.tmap-widget.tmap-advanced-editor .tmap-topbar .tmap-unicode-button svg{vertical-align:baseline}.tmap-widget .tmap-menu-bar{width:100%}.tmap-widget .tmap-topbar{background:#F5F5F5;border-bottom:1px solid lightgray;padding:3px 5px;height:35px;position:relative}.tmap-widget .tmap-topbar .tmap-view-label{width:100%;text-align:center;font-weight:bold;padding-top:3px}.tmap-widget .tmap-topbar .tmap-focus-button{position:absolute;right:10px;top:6px}.tmap-widget .tmap-topbar .tmap-focus-button input{width:140px}.tmap-widget .tmap-topbar .tmap-search-dropdown{position:relative}.tmap-widget .tmap-topbar .tmap-search-dropdown .tc-drop-down{position:absolute;z-index:999;right:0px}.tmap-widget .tmap-topbar [hidden]{display:none}.tmap-widget .tmap-topbar select{width:30%;max-width:200px;word-wrap:initial;padding:0px;height:28px}.tmap-widget .tmap-topbar button{line-height:inherit;color:#666}.tmap-widget .tmap-topbar>*{display:inline-block}.tmap-widget .tmap-topbar .tmap-separator:after{color:#bdbdbd;margin:3px;content:\" | \"}.tmap-widget .tmap-topbar .tc-edit-add-tag .tc-add-tag-name input{width:70%}.tmap-widget .tmap-topbar .tc-sidebar-header{text-shadow:none}.tmap-widget .tmap-topbar .tc-edit-tags{border:none;padding:inherit;box-shadow:none}.tmap-widget.tmap-static-mode .tmap-topbar{height:initial}.tmap-widget.tmap-static-mode .tmap-vis-graph{text-align:center;cursor:not-allowed}.tmap-widget.tmap-static-mode .tmap-vis-graph:not(.tmap-graph-placeholder):hover::before{box-shadow:10px 10px 5px lightgray;color:gray;background:white;content:\"Static\";font-size:18px;font-weight:bold;left:50%;margin-left:-100px;position:absolute;text-align:center;top:50px;width:200px;z-index:2000;padding:5px;pointer-events:none}.tmap-widget.tmap-static-mode .tmap-vis-graph.tmap-graph-placeholder::before{content:\"No Preview\";display:block;text-align:center;padding:20px}.tmap-widget .tc-drop-down{min-width:170px;padding:5px;margin:5px 0}.tmap-widget .tc-drop-down button,.tmap-widget .tc-drop-down a{padding:0 2px;text-decoration:none}.tmap-widget .tc-drop-down button:hover,.tmap-widget .tc-drop-down a:hover{color:#ffffff}.tmap-widget .tc-drop-down button svg,.tmap-widget .tc-drop-down a svg{vertical-align:middle}.tmap-widget .tc-block-dropdown{width:370px;min-width:370px;padding:5px;margin:15px 0 0 -370px}.tmap-widget .tc-block-dropdown a{display:inline;padding:0px}.tmap-widget.tmap-plain-design{border:none;padding:0px}.tmap-widget.tmap-plain-design .tmap-topbar{display:none}.tc-sidebar-scrollable .tmap-widget{position:absolute;min-height:350px}.tmap-widget div.vis-network .vis-edit-mode{height:26px}.tmap-widget div.vis-network .vis-manipulation{height:34px;border-top:1px solid #d6d9d8;background:rgba(245,245,245,0.7)}.tmap-widget div.vis-network .vis-navigation .vis-button.tmap-button-enabled{right:15px}.tmap-widget div.vis-network .vis-navigation .vis-button.tmap-button-enabled.tmap-fullscreen-button{bottom:90px;background-image:url(<<tmap \"datauri\" \"$:/plugins/felixhayashi/tiddlymap/media/fullscreen.png\" \"\">>)}.tmap-widget div.vis-network .vis-navigation .vis-button.tmap-button-enabled.tmap-halfscreen-button{bottom:130px;background-image:url(<<tmap \"datauri\" \"$:/plugins/felixhayashi/tiddlymap/media/halfscreen.png\" \"\">>)}.tmap-widget div.vis-network .vis-navigation .vis-button:hover{box-shadow:0 0 3px 3px rgba(75,75,75,0.3)}.tmap-widget div.vis-network .vis-navigation .vis-button:hover:before{background:beige;display:block;color:black;padding:3px;position:relative;border:1px solid lightgray;width:80px;left:-100px;top:-50px;z-index:1000;text-align:center}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-up:before{left:30px;content:\"Scroll up\"}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-down:before{left:30px;content:\"Scroll down\"}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-right:before{left:30px;content:\"Scroll right\"}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-left:before{left:30px;content:\"Scroll left\"}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-zoomOut:before{content:\"Zoom out\"}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-zoomIn:before{content:\"Zoom in\"}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.vis-zoomExtends:before{content:\"Fit whole graph\"}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.tmap-fullscreen-button:before{content:\"Toggle Fullscreen\"}.tmap-widget div.vis-network .vis-navigation .vis-button:hover.tmap-halfscreen-button:before{content:\"Toggle Halfscreen\"}.tc-dropzone>.tc-story-river .tmap-widget .vis-navigation .tmap-halfscreen-button{display:none}.tc-dropzone>.tc-story-river .tmap-widget:not(.tmap-fullscreen) .vis-navigation .vis-button{display:none}.tc-dropzone>.tc-story-river .tmap-widget:hover .vis-navigation .vis-button.tmap-fullscreen-button{display:block}.tc-dropzone>.tc-story-river .tmap-widget:hover .vis-navigation .vis-button.vis-zoomExtends{display:block}body.tmap-has-fullscreen-widget{overflow:hidden}body.tmap-has-fullscreen-widget .tmap-widget.tmap-fullscreen{background:white !important;height:100% !important;width:100% !important;position:fixed !important;top:0 !important;right:0 !important;bottom:0 !important;left:0 !important;z-index:999 !important;border:none !important;margin:0 !important}body.tmap-has-fullscreen-widget .tc-dropzone>*.tmap-has-fullscreen-widget{background:white !important;height:100% !important;width:100% !important;position:fixed !important;top:0 !important;right:0 !important;bottom:0 !important;left:0 !important;z-index:999 !important;border:none !important;margin:0 !important}body.tmap-has-fullscreen-widget .tc-dropzone>*:not(.tmap-has-fullscreen-widget){display:none}body.tmap-has-halfscreen-widget .tmap-widget.tmap-halfscreen{background:white !important;height:100% !important;width:100% !important;position:fixed !important;top:0 !important;right:0 !important;bottom:0 !important;left:0 !important;z-index:999 !important;border:none !important;margin:0 !important;position:absolute !important;border-left:1px solid lightgray !important}.tc-modal-footer .tmap-hidden-close-button{display:none}.tmap-modal-content{position:relative;padding:1em 0;padding-top:0}.tmap-modal-content table tr td{vertical-align:top}.tmap-modal-content :not(pre)>code{padding:1px;font-size:0.9em;position:relative;top:-1px}.tmap-modal-content :not(pre)>code{color:#666}.tmap-modal-content .tc-tab-set .tc-tab-content{margin-top:0.5em}.tmap-modal-content .tc-image-button{font-size:14px}.tmap-modal-content fieldset{margin:0px}.tmap-modal-content fieldset legend{font-weight:bold}.tc-modal-body .tmap-modal-editor>p{margin:0px}.tc-modal-body .tmap-modal-editor .tmap-template-select select{width:50%}.tc-modal-body .tmap-modal-editor .tc-tiddler-frame{margin:auto;width:auto}.tc-modal-body .tmap-modal-editor .tc-tiddler-frame .tc-tiddler-controls{display:none}.tc-modal-body .tmap-modal-editor .tc-tiddler-frame .tc-tiddler-title{display:none}.tc-modal-body table{margin:6px 0;border:none;width:100%}.tc-modal-body table td,.tc-modal-body table th{border:1px solid lightgray}.tc-modal-body table.tmap-key-value-table th{width:30%;background-color:#F0F0F0}.tc-modal-body table.tmap-config-table.tmap-large-input tr td:last-child{width:20%}.tc-modal-body table.tmap-config-table.tmap-small-input tr td:last-child{width:60%}.tc-modal-body table.tmap-config-table tr td{border:none;vertical-align:top;padding:5px}.tc-modal-body table.tmap-config-table tr td:first-child{width:15%}.tc-modal-body table.tmap-config-table tr td:last-child{width:40%}.tc-modal-body table.tmap-config-table tr td input:not([type=radio]),.tc-modal-body table.tmap-config-table tr td textarea,.tc-modal-body table.tmap-config-table tr td select{width:100%;word-wrap:normal}.tc-modal-body table.tmap-config-table tr td textarea{height:100%}.tc-modal-body table.tmap-config-table tr td .tmap-no-stretch input,.tc-modal-body table.tmap-config-table tr td .tmap-no-stretch textarea,.tc-modal-body table.tmap-config-table tr td .tmap-no-stretch select{width:auto}.tc-modal-body table.tmap-config-table tr td div.tmap-button-wrapper{text-align:center}.tc-modal-body table.tmap-config-table tr td .tmap-note{margin-top:0.5em}.tc-modal-body table.tmap-config-table tr td .tmap-description{font-style:italic}#tmap-element-type-manager>div:first-child{height:50vh;float:left;width:21%;background:linear-gradient(90deg, #f5f5f5 0%, #fff 50%)}#tmap-element-type-manager>div:first-child .tmap-searchbar{padding:1em 0 0 0}#tmap-element-type-manager>div:first-child .tmap-searchbar input{width:calc(100% - 36px)}#tmap-element-type-manager>div:first-child .tmap-searchbar button{width:30px;float:right}#tmap-element-type-manager>div:first-child ul{height:calc(100% - 65px);overflow:auto;margin-top:1em;padding:0}#tmap-element-type-manager>div:first-child ul.no-bullets li{list-style:none}#tmap-element-type-manager>div:first-child ul li{white-space:nowrap}#tmap-element-type-manager>div:first-child ul li .tmap-ranking{width:30px;display:inline-block}#tmap-element-type-manager>div:last-child{height:100%;width:calc(79% - 15px);float:right}#tmap-element-type-manager>div:last-child .tc-tab-set .tc-tab-content{overflow:auto;height:50vh}.tmap-manage-node-types .tmap-edge-type-specific{display:none !important}.tmap-manage-edge-types .tmap-node-type-specific{display:none !important}.tmap-modal-fullscreen-editor .tc-tab-content p{margin:1em 0}.tmap-has-pending-template{background-color:#C1EDC4}#tmap-search-table td{border:none;padding-left:0px}#tmap-search-table td:first-child{width:30px}#tmap-search-table b{display:inline-block;width:40px;text-align:right}#tmap-search-table ul{padding-left:20px;margin:1em 0 0 0}#tmap-search-table ul li{list-style:inherit}#tmap-search-table ul button{text-align:left}button.tmap-go-back{margin-bottom:1em;font-weight:bold}.tmap-badges>span,.tmap-badge{background:gray;font-size:11px;color:white;padding:3px 4px;display:inline-block;font-weight:bold;border-radius:2px;line-height:1em;cursor:help}.tmap-badges>span.tmap-red-flag,.tmap-badge.tmap-red-flag{background:red}.tmap-popup{display:none;position:absolute;opacity:0;transition:opacity 0.3s ease}.tmap-popup.tmap-popup-active{opacity:1}.tmap-tooltip{box-shadow:3px 3px 10px rgba(0,0,0,0.2);min-width:100px;min-height:50px;max-width:<<tmap option config.sys.popups.width>>;max-height:<<tmap option config.sys.popups.height>>;padding:5px;resize:both;overflow:auto;cursor:auto;font-family:verdana;font-size:14px;background-color:#f5f4ed;border:1px solid #808074;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.tmap-tooltip[style*=\"height\"]{max-height:none !important}.tmap-tooltip[style*=\"width\"]{max-width:none !important}.tmap-quick-connect{font-size:0.7em}.tmap-quick-connect p{padding-left:0;padding-right:0}.tmap-quick-connect .tc-drop-down{padding:5px;width:250px;white-space:normal;line-height:1em;position:absolute;z-index:1000;right:50px;background:linear-gradient(45deg, #f5f5f5 0%, #fff 50%, #f5f5f5 100%)}.tmap-quick-connect .tc-drop-down:first-child{padding-top:0;margin-top:0}.tmap-quick-connect .tc-drop-down .title{margin:1.5em 0 0.5em 0;font-weight:bold;color:gray}.tmap-quick-connect .tc-drop-down select{width:80px;word-wrap:initial}.tmap-quick-connect .tc-drop-down table{width:100%;border:none;margin:0.5em 0}.tmap-quick-connect .tc-drop-down table td,.tmap-quick-connect .tc-drop-down table th{padding:3px 3px 3px 0;vertical-align:middle;font-weight:normal;border:none}.tmap-quick-connect .tc-drop-down table td table,.tmap-quick-connect .tc-drop-down table th table{margin:0}.tmap-quick-connect .tc-drop-down .tmap-quick-connect-search-bar,.tmap-quick-connect .tc-drop-down .tmap-quick-connect-existing-bar{background:#F1F1F1;margin-top:0;border-bottom:1px solid #D5D5D5;border-top:1px solid #D5D5D5}.tmap-quick-connect .tc-drop-down table.tmap-quick-connect-search-bar td,.tmap-quick-connect .tc-drop-down th{padding:5px}.tmap-quick-connect .tc-drop-down .tmap-quick-connect-existing-bar{padding:5px}.tmap-quick-connect .tc-drop-down .tmap-connection-table th,.tmap-quick-connect .tc-drop-down .tmap-connection-table td{text-align:left;padding:1px 1px 1px 0}.tmap-quick-connect .tc-drop-down .tmap-connection-table button{width:20px;padding:0px}.tmap-quick-connect .tc-drop-down .tmap-scroll-table{height:120px;overflow:auto;display:block}.tmap-quick-connect .tc-drop-down hr{border:0;height:0;border-top:1px solid rgba(0,0,0,0.1);border-bottom:1px solid rgba(255,255,255,0.3)}.tmap-quick-connect .tc-drop-down a{display:inline;padding:0;color:#5778d8;background:transparent}.tmap-quick-connect .tc-drop-down a:hover{background:transparent;color:#5778d8;text-decoration:underline}.tmap-quick-connect .tc-drop-down button{display:inline-block;padding:0px 3px;text-align:center;color:#333333;line-height:1.0}.tmap-quick-connect .tc-drop-down button:hover{color:#ffffff}.tmap-quick-connect .tc-drop-down button svg{fill:inherit}.tmap-quick-connect .tc-drop-down button svg:hover{fill:#ffffff}\n",
"title": "$:/plugins/felixhayashi/tiddlymap/layout",
"type": "text/vnd.tiddlywiki",
"tags": [
"$:/tags/Stylesheet"
]
},
"$:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function e(e,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(r,t,i){if(t)e(r.prototype,t);if(i)e(r,i);return r}}();/* @preserve TW-Guard */ /* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */\n/* @preserve TW-Guard */var _EdgeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeType\");var _EdgeType2=_interopRequireDefault(_EdgeType);var _exception=require(\"$:/plugins/felixhayashi/tiddlymap/js/exception\");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,r){if(!(e instanceof r)){throw new TypeError(\"Cannot call a class as a function\")}}var AbstractEdgeTypeSubscriber=function(){function e(r){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},i=t.priority,n=i===undefined?0:i,a=t.skipOthers,s=a===undefined?true:a,u=t.ignore,l=u===undefined?false:u;_classCallCheck(this,e);this.allEdgeTypes=r;this.priority=n;this.skipOthers=s;this.ignore=l}_createClass(e,[{key:\"setTracker\",value:function e(r){this.tracker=r}},{key:\"loadEdges\",value:function e(r,t,i){throw new _exception.MissingOverrideError(this,\"loadEdges\")}},{key:\"canHandle\",value:function e(r){throw new _exception.MissingOverrideError(this,\"canHandle\")}},{key:\"insertEdge\",value:function e(r,t,i){}},{key:\"deleteEdge\",value:function e(r,t,i){}}]);return e}();exports.default=AbstractEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/AbstractEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function e(e,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(r,t,i){if(t)e(r.prototype,t);if(i)e(r,i);return r}}();var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _Edge=require(\"$:/plugins/felixhayashi/tiddlymap/js/Edge\");var _Edge2=_interopRequireDefault(_Edge);var _exception=require(\"$:/plugins/felixhayashi/tiddlymap/js/exception\");var _AbstractRefEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber\");var _AbstractRefEdgeTypeSubscriber2=_interopRequireDefault(_AbstractRefEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,r){if(!(e instanceof r)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,r){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return r&&(typeof r===\"object\"||typeof r===\"function\")?r:e}function _inherits(e,r){if(typeof r!==\"function\"&&r!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof r)}e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(r)Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var AbstractMagicEdgeTypeSubscriber=function(e){_inherits(r,e);function r(e,t){_classCallCheck(this,r);var i=_possibleConstructorReturn(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,t));i.edgeTypesByFieldName=_utils2.default.makeHashMap();for(var a in e){var n=e[a];if(i.canHandle(n)){i.edgeTypesByFieldName[n.name]=n}}return i}_createClass(r,[{key:\"getReferencesFromField\",value:function e(r,t,i){throw new _exception.MissingOverrideError(this,\"getReferencesFromField\")}},{key:\"getReferences\",value:function e(r,t,i){var a=_utils2.default.makeHashMap();var n=r.fields;for(var s in n){var u=this.edgeTypesByFieldName[s];if(!u||i&&!i[u.id])continue;var o=this.getReferencesFromField(r,s,t);if(o&&o.length){a[u.id]=o}}return a}}]);return r}(_AbstractRefEdgeTypeSubscriber2.default);exports.default=AbstractMagicEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/AbstractMagicEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(t,r,i){if(r)e(t.prototype,r);if(i)e(t,i);return t}}();var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _Edge=require(\"$:/plugins/felixhayashi/tiddlymap/js/Edge\");var _Edge2=_interopRequireDefault(_Edge);var _exception=require(\"$:/plugins/felixhayashi/tiddlymap/js/exception\");var _AbstractEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber\");var _AbstractEdgeTypeSubscriber2=_interopRequireDefault(_AbstractEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var AbstractRefEdgeTypeSubscriber=function(e){_inherits(t,e);function t(){_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}_createClass(t,[{key:\"loadEdges\",value:function e(t,r,i){var a=this.getReferences(t,r,i);if(!a||!_utils2.default.hasElements(a))return;var s=t.fields[\"tmap.id\"];var n=$tm.tracker.getIdsByTiddlers();var u=this.allEdgeTypes;var l=_utils2.default.getTiddlerRef(t);var o=_utils2.default.makeHashMap();for(var f in a){var c=a[f];if(!c){continue}var p=u[f];for(var d=c.length;d--;){var _=c[d];if(!_||!$tw.wiki.tiddlerExists(_)||_utils2.default.isSystemOrDraft(_)||r&&!r[_]){continue}var b=p.id+$tw.utils.hashString(l+_);o[b]=new _Edge2.default(s,n[_],p.id,b)}}return o}},{key:\"getReferences\",value:function e(t,r,i){throw new _exception.MissingOverrideError(this,\"getReferences\")}}]);return t}(_AbstractEdgeTypeSubscriber2.default);exports.default=AbstractRefEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/AbstractRefEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/EdgeTypeSubscriberRegistry": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/EdgeTypeSubscriberRegistry",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function e(e,r){for(var t=0;t<r.length;t++){var s=r[t];s.enumerable=s.enumerable||false;s.configurable=true;if(\"value\"in s)s.writable=true;Object.defineProperty(e,s.key,s)}}return function(r,t,s){if(t)e(r.prototype,t);if(s)e(r,s);return r}}();function _classCallCheck(e,r){if(!(e instanceof r)){throw new TypeError(\"Cannot call a class as a function\")}}\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/EdgeTypeSubscriberRegistry\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var EdgeTypeSubscriberRegistry=function(){function e(r,t,s){_classCallCheck(this,e);this.subscriberClasses=r;this.tracker=s;this.updateIndex(t)}_createClass(e,[{key:\"getAllForType\",value:function e(r){var t=this.allSubscribers;var s=[];for(var i=0,a=t.length;i<a;i++){if(t[i].canHandle(r)){s.push(t[i]);if(t[i].skipOthers){break}}}return s}},{key:\"getAll\",value:function e(){return this.allSubscribers}},{key:\"updateIndex\",value:function e(r){var t=[];var s=this.subscriberClasses;for(var i in s){var a=new s[i](r);a.setTracker(this.tracker);if(a.ignore===true){continue}t.push(a)}t.sort(function(e,r){return r.priority-e.priority});this.allSubscribers=t}}]);return e}();exports.default=EdgeTypeSubscriberRegistry;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/EdgeTypeSubscriberRegistry.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/tmap": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/tmap",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.TmapEdgeTypeSubscriber=undefined;var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r){if(Object.prototype.hasOwnProperty.call(r,i)){e[i]=r[i]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(t,r,i){if(r)e(t.prototype,r);if(i)e(t,i);return t}}();var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _Edge=require(\"$:/plugins/felixhayashi/tiddlymap/js/Edge\");var _Edge2=_interopRequireDefault(_Edge);var _AbstractEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractEdgeTypeSubscriber\");var _AbstractEdgeTypeSubscriber2=_interopRequireDefault(_AbstractEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/tmap\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var TmapEdgeTypeSubscriber=function(e){_inherits(t,e);function t(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,_extends({priority:0},r)))}_createClass(t,[{key:\"loadEdges\",value:function e(t,r,i){var a=_utils2.default.parseFieldData(t,\"tmap.edges\");if(!a){return}var n=this.tracker.getTiddlersByIds();var u=t.fields[\"tmap.id\"];var s=_utils2.default.makeHashMap();for(var l in a){var o=a[l];var d=n[o.to];if(d&&(!r||r[d])&&(!i||i[o.type])){s[l]=new _Edge2.default(u,o.to,o.type,l)}}return s}},{key:\"insertEdge\",value:function e(t,r,i){var a=_utils2.default.parseFieldData(t,\"tmap.edges\",{});r.id=r.id||_utils2.default.genUUID();a[r.id]={to:r.to,type:i.id};_utils2.default.writeFieldData(t,\"tmap.edges\",a,$tm.config.sys.jsonIndentation);return r}},{key:\"deleteEdge\",value:function e(t,r,i){if(!r.id)return;var a=_utils2.default.parseFieldData(t,\"tmap.edges\",{});delete a[r.id];_utils2.default.writeFieldData(t,\"tmap.edges\",a,$tm.config.sys.jsonIndentation);return r}},{key:\"canHandle\",value:function e(t){return true}}]);return t}(_AbstractEdgeTypeSubscriber2.default);exports.TmapEdgeTypeSubscriber=TmapEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/TmapEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/field": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/field",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.FieldEdgeTypeSubscriber=undefined;var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r){if(Object.prototype.hasOwnProperty.call(r,i)){e[i]=r[i]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(t,r,i){if(r)e(t.prototype,r);if(i)e(t,i);return t}}();var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _AbstractMagicEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber\");var _AbstractMagicEdgeTypeSubscriber2=_interopRequireDefault(_AbstractMagicEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/field\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var FieldEdgeTypeSubscriber=function(e){_inherits(t,e);function t(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,_extends({priority:10},r)))}_createClass(t,[{key:\"canHandle\",value:function e(t){return t.namespace===\"tw-field\"}},{key:\"getReferencesFromField\",value:function e(t,r,i){return[t.fields[r]]}},{key:\"insertEdge\",value:function e(t,r,i){var n=this.tracker.getTiddlerById(r.to);if(n==null){return}_utils2.default.setField(t,i.name,n);return r}},{key:\"deleteEdge\",value:function e(t,r,i){var n=this.tracker.getTiddlerById(r.to);if(n==null){return}_utils2.default.setField(t,i.name,undefined);return r}}]);return t}(_AbstractMagicEdgeTypeSubscriber2.default);exports.FieldEdgeTypeSubscriber=FieldEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/magicEdgeTypeSubscriber/FieldEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/filter": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/filter",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.FilterEdgeTypeSubstriber=undefined;var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r){if(Object.prototype.hasOwnProperty.call(r,i)){e[i]=r[i]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(t,r,i){if(r)e(t.prototype,r);if(i)e(t,i);return t}}();var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _AbstractMagicEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber\");var _AbstractMagicEdgeTypeSubscriber2=_interopRequireDefault(_AbstractMagicEdgeTypeSubscriber);var _widget=require(\"$:/core/modules/widgets/widget.js\");var _widget2=_interopRequireDefault(_widget);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/filter\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var FilterEdgeTypeSubstriber=function(e){_inherits(t,e);function t(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,_extends({priority:10},r)))}_createClass(t,[{key:\"canHandle\",value:function e(t){return t.namespace===\"tw-filter\"}},{key:\"getReferencesFromField\",value:function e(t,r,i){var n=t.fields[r];var a=new _widget2.default.widget({});a.setVariable(\"currentTiddler\",t.fields.title);var u=new _widget2.default.widget({},{parentWidget:a});var s=_utils2.default.getMatches(n,i,u);return s}},{key:\"insertEdge\",value:function e(t,r,i){if(!r.to){return}var n=i.name;var a=t.fields[n]||\"\";var u=this.tracker.getTiddlerById(r.to);var s=$tw.utils.stringifyList([u]);if(a.length>0){s=\" \"+s}_utils2.default.setField(t,n,a+s);return r}}]);return t}(_AbstractMagicEdgeTypeSubscriber2.default);exports.FilterEdgeTypeSubstriber=FilterEdgeTypeSubstriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/magicEdgeTypeSubscriber/FilterEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/list": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/list",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.ListEdgeTypeSubscriber=undefined;var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r){if(Object.prototype.hasOwnProperty.call(r,i)){e[i]=r[i]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(t,r,i){if(r)e(t.prototype,r);if(i)e(t,i);return t}}();var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _AbstractMagicEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractMagicEdgeTypeSubscriber\");var _AbstractMagicEdgeTypeSubscriber2=_interopRequireDefault(_AbstractMagicEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/list\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var ListEdgeTypeSubscriber=function(e){_inherits(t,e);function t(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,_extends({priority:10},r)))}_createClass(t,[{key:\"canHandle\",value:function e(t){return t.namespace===\"tw-list\"}},{key:\"getReferencesFromField\",value:function e(t,r,i){return $tw.utils.parseStringArray(t.fields[r])}},{key:\"insertEdge\",value:function e(t,r,i){if(!r.to){return}var n=i.name;var s=$tw.utils.parseStringArray(t.fields[n]);s=(s||[]).slice();var a=this.tracker.getTiddlerById(r.to);s.push(a);_utils2.default.setField(t,n,$tw.utils.stringifyList(s));return r}},{key:\"deleteEdge\",value:function e(t,r,i){var n=$tw.utils.parseStringArray(t.fields[i.name]);n=(n||[]).slice();var s=this.tracker.getTiddlerById(r.to);var a=n.indexOf(s);if(a>-1){n.splice(a,1)}var u=void 0;if(n.length>0){u=$tw.utils.stringifyList(n)}_utils2.default.setField(t,i.name,u);return r}}]);return t}(_AbstractMagicEdgeTypeSubscriber2.default);exports.ListEdgeTypeSubscriber=ListEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/magicEdgeTypeSubscriber/ListEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/link": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/link",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.LinkEdgeTypeSubscriber=undefined;var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r){if(Object.prototype.hasOwnProperty.call(r,n)){e[n]=r[n]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var _AbstractRefEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber\");var _AbstractRefEdgeTypeSubscriber2=_interopRequireDefault(_AbstractRefEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/link\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var LinkEdgeTypeSubscriber=function(e){_inherits(t,e);function t(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,_extends({priority:20},r)))}_createClass(t,[{key:\"canHandle\",value:function e(t){return t.id===\"tw-body:link\"}},{key:\"getReferences\",value:function e(t,r,n){if(n&&!n[\"tw-body:link\"]){return}var i=$tw.wiki.getTiddlerLinks(t.fields.title);if(!i||!i.length){return}return{\"tw-body:link\":i}}}]);return t}(_AbstractRefEdgeTypeSubscriber2.default);exports.LinkEdgeTypeSubscriber=LinkEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/refEdgeTypeSubscriber/LinkEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/transclude": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/transclude",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.TranscludeEdgeTypeSubscriber=undefined;var _extends=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t){if(Object.prototype.hasOwnProperty.call(t,n)){e[n]=t[n]}}}return e};var _createClass=function(){function e(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(r,t,n){if(t)e(r.prototype,t);if(n)e(r,n);return r}}();var _AbstractRefEdgeTypeSubscriber=require(\"$:/plugins/felixhayashi/tiddlymap/js/AbstractRefEdgeTypeSubscriber\");var _AbstractRefEdgeTypeSubscriber2=_interopRequireDefault(_AbstractRefEdgeTypeSubscriber);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,r){if(!(e instanceof r)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,r){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return r&&(typeof r===\"object\"||typeof r===\"function\")?r:e}function _inherits(e,r){if(typeof r!==\"function\"&&r!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof r)}e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(r)Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/modules/edge-type-handler/body/transclude\ntype: application/javascript\nmodule-type: tmap.edgetypehandler\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var TranscludeEdgeTypeSubscriber=function(e){_inherits(r,e);function r(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,r);return _possibleConstructorReturn(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,_extends({priority:20,ignore:typeof $tw.wiki.getTiddlerTranscludes!==\"function\"},t)))}_createClass(r,[{key:\"canHandle\",value:function e(r){return r.id===\"tw-body:transclude\"}},{key:\"getReferences\",value:function e(r,t,n){if(n&&!n[\"tw-body:transclude\"]){return}var i=$tw.wiki.getTiddlerTranscludes(r.fields.title);if(!i||!i.length){return}return{\"tw-body:transclude\":i}}}]);return r}(_AbstractRefEdgeTypeSubscriber2.default);exports.TranscludeEdgeTypeSubscriber=TranscludeEdgeTypeSubscriber;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/edgeTypeSubscriber/refEdgeTypeSubscriber/TranscludeEdgeTypeSubscriber.js.map\n",
"type": "application/javascript",
"module-type": "tmap.edgetypehandler"
},
"$:/plugins/felixhayashi/tiddlymap/js/Edge": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/Edge",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/Edge\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var Edge=function e(t,i,s,l){_classCallCheck(this,e);this.from=t;this.to=i;this.type=s;this.id=l||_utils2.default.genUUID()};exports.default=Edge;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/Edge.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/EdgeType": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/EdgeType",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r){if(Object.prototype.hasOwnProperty.call(r,n)){e[n]=r[n]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var _MapElementType2=require(\"$:/plugins/felixhayashi/tiddlymap/js/MapElementType\");var _MapElementType3=_interopRequireDefault(_MapElementType2);var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _environment=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/environment\");var env=_interopRequireWildcard(_environment);function _interopRequireWildcard(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/EdgeType\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var EdgeType=function(e){_inherits(t,e);function t(e,r){_classCallCheck(this,t);var n=t.getIdParts(e),o=n.marker,a=n.namespace,i=n.name;e=t.getId(o,a,i);var l=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,env.path.edgeTypes,t.fieldMeta,r));l.id=e;l.marker=o;l.name=i;l.namespace=a;var u=(l.style||{}).arrows;if(u){l.invertedArrow=isArrowEnabled(u,\"from\");l.toArrow=isArrowEnabled(u,\"to\")||isArrowEnabled(u,\"middle\");l.biArrow=l.invertedArrow===l.toArrow;if(l.biArrow){l.toArrow=true;l.invertedArrow=true}}else{l.toArrow=true}Object.freeze(l);return l}_createClass(t,[{key:\"getLabel\",value:function e(){return this.label||this.name}}],[{key:\"getIdParts\",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";t=_utils2.default.getWithoutPrefix(t,env.path.edgeTypes+\"/\");var r=t.match(edgeTypeRegex)||[];return{marker:r[1]||\"\",namespace:r[3]&&r[2]||\"\",name:r[3]||r[2]||\"\"}}},{key:\"getId\",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"\";var n=arguments[2];return n?t+(r&&r+\":\")+n:\"tmap:unknown\"}}]);return t}(_MapElementType3.default);EdgeType.getInstance=function(e){return e instanceof EdgeType?e:new EdgeType(e)};EdgeType.fieldMeta=_extends({},_MapElementType3.default.fieldMeta,{label:{},\"show-label\":{}});var isArrowEnabled=function e(t,r){var n=t[r];if(n==null&&r===\"to\"){return true}return(typeof n===\"undefined\"?\"undefined\":_typeof(n))===\"object\"?n.enabled!==false:n===true};var edgeTypeRegex=new RegExp(\"^(_?)([^:_][^:]*):?([^:]*)\");exports.default=EdgeType;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/EdgeType.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/MapElementType": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/MapElementType",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(t){return typeof t}:function(t){return t&&typeof Symbol===\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t};var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var l=e[i];l.enumerable=l.enumerable||false;l.configurable=true;if(\"value\"in l)l.writable=true;Object.defineProperty(t,l.key,l)}}return function(e,i,l){if(i)t(e.prototype,i);if(l)t(e,l);return e}}();/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/MapElementType\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _classCallCheck(t,e){if(!(t instanceof e)){throw new TypeError(\"Cannot call a class as a function\")}}var MapElementType=function(){function t(e,i,l,s){_classCallCheck(this,t);this.id=e;this.root=i;this._fieldMeta=l;this.fullPath=this.root+\"/\"+this.id;this.isShipped=$tw.wiki.getSubTiddler($tm.path.pluginRoot,this.fullPath);this._load(s||this.fullPath)}_createClass(t,[{key:\"_load\",value:function t(e){if(!e){return}if(typeof e===\"string\"){var i=_utils2.default.startsWith(e,this.root);var l=i?e:this.root+\"/\"+e;this._loadFromTiddler(l)}else if(e instanceof $tw.Tiddler){this._loadFromTiddler(e)}else if((typeof e===\"undefined\"?\"undefined\":_typeof(e))===\"object\"){for(var s in this._fieldMeta){this[s]=e[s]}}}},{key:\"_loadFromTiddler\",value:function t(e){var i=_utils2.default.getTiddler(e);if(!i){return}var l=$tw.wiki.getSubTiddler($tm.path.pluginRoot,this.fullPath)||{};var s=$tw.utils.extend({},l.fields,i.fields);for(var r in this._fieldMeta){var a=this._fieldMeta[r].parse;var f=s[r];this[r]=a?a.call(this,f):f}}},{key:\"exists\",value:function t(){return _utils2.default.tiddlerExists(this.fullPath)}},{key:\"setStyle\",value:function t(e,i){if(typeof e===\"string\"){e=_utils2.default.parseJSON(e)}if((typeof e===\"undefined\"?\"undefined\":_typeof(e))===\"object\"){if(i){_utils2.default.merge(this.style,e)}else{this.style=e}}}},{key:\"save\",value:function t(e,i){if(!e){e=this.fullPath}else if(typeof e!==\"string\"){return}var l={title:e,text:\"\"};if(!_utils2.default.startsWith(e,this.root)){l.id=this.id}for(var s in this._fieldMeta){var r=this._fieldMeta[s].stringify;l[s]=r?r.call(this,this[s]):this[s]}if(!this.exists()){Object.assign(l,$tw.wiki.getCreationFields())}if(i!==true){Object.assign(l,$tw.wiki.getModificationFields())}$tw.wiki.addTiddler(new $tw.Tiddler(l))}}]);return t}();MapElementType.fieldMeta={description:{},style:{parse:_utils2.default.parseJSON,stringify:JSON.stringify},modified:{},created:{}};exports.default=MapElementType;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/MapElementType.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/NodeType": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/NodeType",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r){if(Object.prototype.hasOwnProperty.call(r,n)){e[n]=r[n]}}}return e};var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var _MapElementType2=require(\"$:/plugins/felixhayashi/tiddlymap/js/MapElementType\");var _MapElementType3=_interopRequireDefault(_MapElementType2);var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/NodeType\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var NodeType=function(e){_inherits(t,e);function t(e,r){_classCallCheck(this,t);e=typeof e===\"string\"?_utils2.default.getWithoutPrefix(e,$tm.path.nodeTypes+\"/\"):\"tmap:unknown\";var n=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,$tm.path.nodeTypes,t.fieldMeta,r));Object.freeze(n);return n}_createClass(t,[{key:\"getInheritors\",value:function e(t){return this.scope?_utils2.default.getMatches(this.scope,t||$tw.wiki.allTitles()):[]}}]);return t}(_MapElementType3.default);NodeType.getInstance=function(e){return e instanceof NodeType?e:new NodeType(e)};NodeType.fieldMeta=_extends({},_MapElementType3.default.fieldMeta,{view:{},priority:{parse:function e(t){return isNaN(t)?1:parseInt(t)},stringify:function e(t){return _utils2.default.isInteger(t)?t.toString():\"1\"}},scope:{stringify:_utils2.default.getWithoutNewLines},\"fa-icon\":{},\"tw-icon\":{}});exports.default=NodeType;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/NodeType.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i){if(Object.prototype.hasOwnProperty.call(i,r)){e[r]=i[r]}}}return e};var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};var _createClass=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||false;r.configurable=true;if(\"value\"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}return function(t,i,r){if(i)e(t.prototype,i);if(r)e(t,r);return t}}();/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _EdgeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeType\");var _EdgeType2=_interopRequireDefault(_EdgeType);var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _environment=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/environment\");var env=_interopRequireWildcard(_environment);var _exception=require(\"$:/plugins/felixhayashi/tiddlymap/js/exception\");function _interopRequireWildcard(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var i in e){if(Object.prototype.hasOwnProperty.call(e,i))t[i]=e[i]}}t.default=e;return t}}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}var ViewAbstraction=function(){function e(t){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};_classCallCheck(this,e);if(t instanceof e){return t}this._registerPaths(t);if(i.isCreate){if(!this.configTRef){var r=_utils2.default.getRandomLabel({plural:true});this.configTRef=$tw.wiki.generateNewTitle($tm.path.views+\"/\"+r)}this._createView(i)}else if(!e.exists(this.getRoot())){throw new ResourceNotFoundException(\"ViewAbstraction\",t)}}_createClass(e,[{key:\"isLocked\",value:function e(){return $tw.wiki.isShadowTiddler(this.configTRef)}},{key:\"update\",value:function e(t){var i=t.changedTiddlers;if(t[env.path.edgeTypes]||_utils2.default.hasKeyWithPrefix(i,this.getRoot())){this._clearCaches();return true}return false}},{key:\"addPlaceholder\",value:function e(t){_utils2.default.cp(_utils2.default.getTiddlerRef(t),this.snapshotTRef,true)}},{key:\"exists\",value:function t(){return e.exists(this)}},{key:\"getRoot\",value:function e(){return this.configTRef}},{key:\"getCreationDate\",value:function e(t){var i=$tw.wiki.getTiddler(this.configTRef).fields[\"created\"];if(t){return i instanceof Date?$tw.utils.formatDateString(i,\"DDth MMM YYYY\"):\"\"}return i}},{key:\"getLabel\",value:function e(){return _utils2.default.getBasename(this.configTRef)}},{key:\"destroy\",value:function e(){_utils2.default.deleteTiddlers(_utils2.default.getMatches(\"[prefix[\"+this.configTRef+\"]]\"))}},{key:\"getOccurrences\",value:function e(){var t=\"[regexp:text[<\\\\$(tiddlymap|tmap).*?view=.\"+this.getLabel()+\"..*?>]]\";return _utils2.default.getMatches(t)}},{key:\"rename\",value:function t(i){if(typeof i!==\"string\"){return false}if(_utils2.default.inArray(\"/\",i)){$tm.notify('A view name must not contain any \"/\"');return false}var r=this.getLabel();var a=env.path.views+\"/\"+i;var n=this.getRoot();_utils2.default.mv(n,a,true);if($tm.config.sys.defaultView===r){_utils2.default.setEntry($tm.ref.sysUserConf,\"defaultView\",i)}if($tm.config.sys.liveTab.fallbackView===r){_utils2.default.setEntry($tm.ref.sysUserConf,\"liveTab.fallbackView\",i)}$tw.wiki.each(function(t,a){if(t.fields[\"tmap.open-view\"]===r){_utils2.default.setField(a,\"tmap.open-view\",i);return}if(e.exists(a)){var n=new e(a);var l=n.getNodeData();for(var s in l){if(l[s][\"open-view\"]===r){l[s][\"open-view\"]=i}}n.saveNodeData(l)}});this._clearCaches();this._registerPaths(i)}},{key:\"isEnabled\",value:function e(t){return _utils2.default.isTrue(this.getConfig(t),false)}},{key:\"getConfig\",value:function e(t){var i=this;var r=$tw.wiki.getCacheForTiddler(this.configTRef,\"tmap-config\",function(){var e=_utils2.default.getTiddler(i.configTRef).fields;return _utils2.default.getPropertiesByPrefix(e,\"config.\")});var a=t&&_utils2.default.startsWith(t,\"config.\")?t:\"config.\"+t;return t?r[a]:r}},{key:\"setConfig\",value:function e(){for(var t=arguments.length,i=Array(t),r=0;r<t;r++){i[r]=arguments[r]}if(i[0]==null){return}if(i.length===1&&_typeof(i[0])===\"object\"){for(var a in i[0]){this.setConfig(a,i[0][a])}}else if(i.length===2&&typeof i[0]===\"string\"){var n=_utils2.default.getWithoutPrefix(i[0],\"config.\");var l=i[1];if(l===undefined){return}var s=this.getConfig();if(l===null){$tm.logger(\"debug\",\"Removing config\",n);delete s[\"config.\"+n]}else{if(n===\"edge_type_namespace\"){var o=l.match(/[^:]+/);l=o?o[0]:\"\"}}$tm.logger(\"log\",\"Setting config\",n,l);s[\"config.\"+n]=l;$tw.wiki.addTiddler(new $tw.Tiddler(_utils2.default.getTiddler(this.configTRef),s))}else{throw new(Function.prototype.bind.apply(_exception.InvalidArgumentException,[null].concat(i)))}}},{key:\"isLiveView\",value:function e(){return this.getLabel()===$tm.misc.liveViewLabel}},{key:\"isNodeIncludedById\",value:function t(i){var r=$tw.utils.escapeRegExp(e._getNodeIdFilterPart(i));return this.getNodeFilter(\"raw\").match(r)}},{key:\"setNodeFilter\",value:function e(t,i){t=t.replace(/[\\n\\r]/g,\" \");if(this.getNodeFilter(\"raw\")===t){return}_utils2.default.setField(this.nodeFilterTRef,\"filter\",t);$tm.logger(\"debug\",\"Node filter set to\",t)}},{key:\"setEdgeTypeFilter\",value:function e(t){t=t.replace(/[\\n\\r]/g,\" \");if(this.getEdgeTypeFilter(\"raw\")===t){return}_utils2.default.setField(this.edgeTypeFilterTRef,\"filter\",t);$tm.logger(\"debug\",\"Edge filter set to\",t)}},{key:\"addNode\",value:function t(i){if(!this.isNodeIncludedById(i)){if(_utils2.default.isTrue($tm.config.sys.alwaysAddNodeIdToViewFilter)||!_utils2.default.isMatch(i.tRef,this.getNodeFilter(\"compiled\"))){var r=e._getNodeIdFilterPart(i);var a=\" \";this.setNodeFilter(this.getNodeFilter(\"raw\")+a+r)}this.saveNodePosition(i)}}},{key:\"removeNode\",value:function t(i){if(!this.isNodeIncludedById(i)){return false}var r=e._getNodeIdFilterPart(i);var a=this.getNodeFilter(\"raw\").replace(r,\"\");this.setNodeFilter(a);return true}},{key:\"getEdgeTypeFilter\",value:function e(t){var i=this;var r=$tw.wiki.getCacheForTiddler(this.edgeTypeFilterTRef,\"tmap-edgeTypeFilter\",function(){var e=$tm.indeces.allETy;var t=Object.keys(e);var r=$tw.wiki.getTiddler(i.edgeTypeFilterTRef);var a={};a.raw=r&&r.fields.filter||\"\";a.pretty=_utils2.default.getPrettyFilter(a.raw);a.matches=_utils2.default.getEdgeTypeMatches(a.raw,e);a.whitelist=_utils2.default.getLookupTable(a.matches);return a});return t?r[t]:r}},{key:\"isEdgeTypeVisible\",value:function e(t){return _utils2.default.isEdgeTypeMatch(_EdgeType2.default.getInstance(t).id,this.getEdgeTypeFilter(\"raw\"))}},{key:\"getNodeFilter\",value:function e(t){var i=this;var r=$tw.wiki.getCacheForTiddler(this.nodeFilterTRef,\"tmap-nodeFilter\",function(){var e=_utils2.default.makeHashMap();var t=$tw.wiki.getTiddler(i.nodeFilterTRef);e.raw=t&&t.fields.filter||\"\";e.pretty=_utils2.default.getPrettyFilter(e.raw);e.compiled=$tw.wiki.compileFilter(e.raw);return e});return t?r[t]:r}},{key:\"getNodeData\",value:function e(t){var i=this;var r=$tw.wiki.getCacheForTiddler(this.mapTRef,\"tmap-map\",function(){return _utils2.default.parseFieldData(i.mapTRef,\"text\",{})});return t?r[t]:r}},{key:\"equals\",value:function t(i){return i===this||e.exists(i)&&new e(i).getRoot()===this.getRoot()}},{key:\"saveNodeData\",value:function e(){var t=this.getNodeData();for(var i=arguments.length,r=Array(i),a=0;a<i;a++){r[a]=arguments[a]}if(r.length===2){if(_typeof(r[1])===\"object\"){if(r[1]===null){delete t[r[0]]}else{t[r[0]]=Object.assign(t[r[0]]||{},r[1])}}}else if(r.length===1&&_typeof(r[0])===\"object\"){$tm.logger(\"log\",\"Storing data in\",this.mapTRef);Object.assign(t,r[0])}else{throw new(Function.prototype.bind.apply(_exception.InvalidArgumentException,[null].concat(r)))}_utils2.default.writeFieldData(this.mapTRef,\"text\",t,$tm.config.sys.jsonIndentation)}},{key:\"saveNodePosition\",value:function e(t){if(t.id&&t.x!=null&&t.y!=null){this.saveNodeData(t.id,{x:t.x,y:t.y})}}},{key:\"saveNodePositions\",value:function e(t){var i=this.getNodeData();for(var r in t){i[r]=i[r]||{};i[r].x=t[r].x;i[r].y=t[r].y}this.saveNodeData(i)}},{key:\"setCentralTopic\",value:function e(t){this.setConfig(\"central-topic\",t)}},{key:\"saveNodeStyle\",value:function e(t,i){var r=this.getNodeData(t)||{};var a={x:r.x,y:r.y};for(var n in r){delete r[n]}this.saveNodeData(t,_extends({},i,a))}},{key:\"_registerPaths\",value:function t(i,r){this.configTRef=e._getRootPath(i);this.mapTRef=this.configTRef+\"/map\";this.nodeFilterTRef=this.configTRef+\"/filter/nodes\";this.edgeTypeFilterTRef=this.configTRef+\"/filter/edges\";this.snapshotTRef=this.getRoot()+\"/snapshot\"}},{key:\"_clearCaches\",value:function e(){_utils2.default.getMatches(\"[prefix[\"+this.getRoot()+\"]]\").forEach(function(e){$tw.wiki.clearCache(e)})}},{key:\"_createView\",value:function t(){var i=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},r=i.isForce,a=i.protoView,n=i.isHidden;if(e.exists(this)){if(!r){return}this.destroy()}if(e.exists(a)){_utils2.default.cp(new e(a).getRoot(),this.configTRef,true)}var l={title:this.configTRef,id:_utils2.default.genUUID()};if(!n){l[$tm.field.viewMarker]=true}$tw.wiki.addTiddler(new $tw.Tiddler(_utils2.default.getTiddler(this.configTRef),l));this.setEdgeTypeFilter(env.filter.defaultEdgeTypeFilter)}}],[{key:\"_getNodeIdFilterPart\",value:function e(t){var i=(typeof t===\"undefined\"?\"undefined\":_typeof(t))===\"object\"?t.id:t;return\"[field:tmap.id[\"+i+\"]]\"}},{key:\"_getRootPath\",value:function t(i){if(i instanceof e){return i.configTRef}if(i instanceof $tw.Tiddler){i=i.fields.title}if(typeof i===\"string\"){var r=_utils2.default.getWithoutPrefix(i,$tm.path.views+\"/\");if(r&&!_utils2.default.hasSubString(r,\"/\")){return $tm.path.views+\"/\"+r}}}},{key:\"exists\",value:function t(i){if(!i){return false}if(i instanceof e){i=i.configTRef}else{i=e._getRootPath(i)}return _utils2.default.tiddlerExists(i)}}]);return e}();exports.default=ViewAbstraction;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/graph/ViewAbstraction.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/Popup": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/Popup",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function Popup(e,t){t=t||{};this._parentDomNode=e;this._domNode=document.createElement(\"div\");this._domNode.style.display=\"none\";this._domNode.className=\"tmap-popup\";this._parentDomNode.appendChild(this._domNode);$tw.utils.addClass(this._domNode,t.className);this._isEnabled=true;this._isPreventShowOrHide=false;this._isHideOnClick=!!t.hideOnClick;this._timeoutShow=null;this._timeoutHide=null;this._isDisplayNoneAfterAnimation=true;var i=parseInt(t.leavingDelay);this._hideDelayLeavingPopup=_utils2.default.isInteger(i)?i:200;i=parseInt(t.hideDelay);this._hideDelay=_utils2.default.isInteger(i)?i:200;i=parseInt(t.showDelay);this._showDelay=_utils2.default.isInteger(i)?i:200;_utils2.default.bindTo(this,[\"_show\",\"_hide\",\"_handleEnter\",\"_handleLeave\",\"_handleAnimationEnd\",\"_handleClick\"]);this._listeners={mouseenter:this._handleEnter,mouseleave:this._handleLeave,click:[this._handleClick,true]};var s=this._handleAnimationEnd;this._listeners[$tw.utils.convertEventName(\"animationEnd\")]=s;this._listeners[$tw.utils.convertEventName(\"transitionEnd\")]=s;_utils2.default.setDomListeners(\"add\",this._domNode,this._listeners,false)}\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/Popup\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */Popup.prototype._handleEnter=function(e){this._isPreventShowOrHide=true};Popup.prototype._handleLeave=function(e){this._isPreventShowOrHide=false;this.hide(this._hideDelayLeavingPopup)};Popup.prototype._handleClick=function(e){if(this._isHideOnClick){this._hide(true)}};Popup.prototype._handleAnimationEnd=function(){if(this._isDisplayNoneAfterAnimation){this._domNode.style.display=\"none\"}};Popup.prototype._hide=function(e){if(!e&&this._isPreventShowOrHide)return;this._isDisplayNoneAfterAnimation=true;this._isPreventShowOrHide=false;$tw.utils.removeClass(this._domNode,\"tmap-popup-active\")};Popup.prototype._show=function(e,t){if(this._isPreventShowOrHide||$tm.mouse.ctrlKey||!this._isEnabled){return}this._domNode.style.display=\"none\";$tw.utils.removeClass(this._domNode,\"tmap-popup-active\");this._domNode.removeAttribute(\"style\");_utils2.default.removeDOMChildNodes(this._domNode);var i=this._domNode.appendChild(document.createElement(\"div\"));if(typeof t===\"function\"){t(e,i)}else{i.innerHTML=t}if(!i.childNodes.length)return;var s=this._parentDomNode.getBoundingClientRect();var o=$tm.mouse.clientX;var n=$tm.mouse.clientY;this._domNode.style.display=\"block\";var d=this._domNode.getBoundingClientRect();var l=s.right-(o+d.width);var h=o-d.width-s.left;var a=l>h;var u=s.bottom-(n+d.height);var r=n-d.height-s.top;var p=u>r;var _=a?-15:d.width+15;var m=p?-15:d.height+15;this._domNode.style.left=o-s.left-_+\"px\";this._domNode.style.top=n-s.top-m+\"px\";this._isDisplayNoneAfterAnimation=false;$tw.utils.addClass(this._domNode,\"tmap-popup-active\")};Popup.prototype.show=function(e,t,i){this._clearTimeouts();i=_utils2.default.isInteger(i)?i:this._showDelay;this._timeoutShow=setTimeout(this._show,i,e,t)};Popup.prototype.hide=function(e,t){this._clearTimeouts();e=_utils2.default.isInteger(e)?e:this._hideDelay;if(t||e===0){this._hide(t)}else{this._timeoutHide=setTimeout(this._hide,e,t)}};Popup.prototype.setEnabled=function(e){this._isEnabled=e};Popup.prototype.isShown=function(){return this._domNode.style.display===\"block\"};Popup.prototype._clearTimeouts=function(){clearTimeout(this._timeoutShow);clearTimeout(this._timeoutHide);this._timeoutShow=undefined;this._timeoutHide=undefined};exports.default=Popup;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/Popup.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/SelectionRectangle": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/SelectionRectangle",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(t,n.key,n)}}return function(e,i,n){if(i)t(e.prototype,i);if(n)t(e,n);return e}}();function _classCallCheck(t,e){if(!(t instanceof e)){throw new TypeError(\"Cannot call a class as a function\")}}\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/SelectionRectangle\ntype: application/SelectionRectangle\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var SelectionRectangle=function(){function t(e,i){_classCallCheck(this,t);this.x1=e;this.x2=e;this.y1=i;this.y2=i}_createClass(t,[{key:\"span\",value:function t(e,i){this.x2=e;this.y2=i}},{key:\"getWidth\",value:function t(){return this.x2-this.x1}},{key:\"getHeight\",value:function t(){return this.y2-this.y1}},{key:\"getRect\",value:function t(){return[this.x1,this.y1,this.getWidth(),this.getHeight()]}},{key:\"isPointWithin\",value:function t(e){var i=e.x,n=e.y;var a=this.x1,r=this.x2,s=this.y1,u=this.y2;var h=Math.min(a,r);var c=Math.max(a,r);var l=Math.min(s,u);var o=Math.max(s,u);return h<i&&i<c&&l<n&&n<o}}]);return t}();exports.default=SelectionRectangle;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/SelectionRectangle.js.map\n",
"type": "application/SelectionRectangle",
"module-type": "library"
},
"/home/felo/projects/Tiddlywiki/TiddlyWiki5/plugins/felixhayashi/tiddlymap/js/lib/TypeDefs.js": {
"title": "/home/felo/projects/Tiddlywiki/TiddlyWiki5/plugins/felixhayashi/tiddlymap/js/lib/TypeDefs.js",
"text": "\"use strict\";\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/TypeDefs.js.map\n"
},
"$:/plugins/felixhayashi/tiddlymap/js/config/vis": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/config/vis",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/config/vis\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var visConfig={locale:\"en_EN\",clickToUse:false,autoResize:false,height:\"100%\",width:\"100%\",configure:{enabled:false},interaction:{dragNodes:true,dragView:true,hideEdgesOnDrag:false,hideNodesOnDrag:false,hover:true,navigationButtons:true,multiselect:true,selectable:true,selectConnectedEdges:true,tooltipDelay:600,zoomView:false,keyboard:{enabled:false,speed:{x:10,y:10,zoom:.02},bindToWindow:false}},manipulation:{initiallyActive:true},nodes:{shape:\"box\",shadow:{enabled:false},color:{border:\"#2B7CE9\",background:\"#97C2FC\"}},edges:{smooth:{enabled:true},color:{color:\"#848484\",inherit:false},arrows:{to:{enabled:true}}},layout:{hierarchical:{enabled:false,levelSeparation:200,nodeSpacing:170,treeSpacing:230,sortMethod:\"directed\",parentCentralization:true,edgeMinimization:true,blockShifting:true,direction:\"UD\"}},physics:{forceAtlas2Based:{gravitationalConstant:-300,springLength:0,springConstant:.2,centralGravity:.015,damping:.4},hierarchicalRepulsion:{nodeDistance:120,centralGravity:0,springLength:100,springConstant:.01,damping:.09},solver:\"forceAtlas2Based\",stabilization:{enabled:true,iterations:1e3,updateInterval:10,onlyDynamicEdges:false,fit:false}}};exports.default=visConfig;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/VisConfig.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/environment": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/environment",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _extends=Object.assign||function(e){for(var i=1;i<arguments.length;i++){var a=arguments[i];for(var l in a){if(Object.prototype.hasOwnProperty.call(a,l)){e[l]=a[l]}}}return e};\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/environment\ntype: application/javascript\n module-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var path=exports.path={pluginRoot:\"$:/plugins/felixhayashi/tiddlymap\",edgeTypes:\"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes\",nodeTypes:\"$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes\",views:\"$:/plugins/felixhayashi/tiddlymap/graph/views\",options:\"$:/plugins/felixhayashi/tiddlymap/config\",dialogs:\"$:/plugins/felixhayashi/tiddlymap/dialog\",footers:\"$:/plugins/felixhayashi/tiddlymap/dialogFooter\",tempRoot:\"$:/temp/tmap\",tempStates:\"$:/temp/tmap/state\",tempPopups:\"$:/temp/tmap/state/popup\",localHolders:\"$:/temp/tmap/holders\"};var ref=exports.ref={defaultViewHolder:\"$:/plugins/felixhayashi/tiddlymap/misc/defaultViewHolder\",graphBar:\"$:/plugins/felixhayashi/tiddlymap/misc/advancedEditorBar\",sysUserConf:\"$:/plugins/felixhayashi/tiddlymap/config/sys/user\",visUserConf:\"$:/plugins/felixhayashi/tiddlymap/config/vis/user\",welcomeFlag:\"$:/plugins/felixhayashi/tiddlymap/flag/welcome\",focusButton:\"$:/plugins/felixhayashi/tiddlymap/misc/focusButton\",sysMeta:\"$:/plugins/felixhayashi/tiddlymap/misc/meta\",liveTab:\"$:/plugins/felixhayashi/tiddlymap/hook/liveTab\",mainEditor:\"$:/plugins/felixhayashi/tiddlymap/hook/editor\",sidebarBreakpoint:\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"};var misc=exports.misc={unknownEdgeLabel:\"tmap:undefined\",liveViewLabel:\"Live View\",defaultViewLabel:\"Default\",mainEditorId:\"main_editor\",arrows:{in:\"⇦\",out:\"➡\",bi:\"⇄\"}};var config=exports.config={sys:{field:{nodeLabel:\"caption\",nodeIcon:\"icon\",nodeInfo:\"description\",viewMarker:\"isview\"},liveTab:{fallbackView:misc.liveViewLabel},suppressedDialogs:{},edgeClickBehaviour:\"manager\",debug:\"false\",notifications:\"true\",popups:{enabled:\"true\",delay:\"600\",width:\"240px\",height:\"140px\"},jsonIndentation:\"1\",alwaysAddNodeIdToViewFilter:\"true\",editNodeOnCreate:\"false\",singleClickMode:\"false\",nodeFilterNeighbours:\"false\",editorMenuBar:{showNeighScopeButton:\"true\",showRasterMenuButton:\"true\",showScreenshotButton:\"true\"}}};var filter=exports.filter={nodeTypes:\"[prefix[\"+path.nodeTypes+\"]]\",edgeTypes:\"[prefix[\"+path.edgeTypes+\"]]\",views:\"[\"+config.sys.field.viewMarker+\"[true]]\",defaultEdgeTypeFilter:\"-[prefix[_]] -[[tw-body:link]] -[[tw-list:tags]] -[[tw-list:list]]\"};var allSelector=\"[all[tiddlers+shadows]!has[draft.of]]\";var s={allEdgeTypes:allSelector+\" +\"+filter.edgeTypes,allNodeTypes:allSelector+\" +\"+filter.nodeTypes,allViews:allSelector+\" +\"+filter.views,allPotentialNodes:\"[all[tiddlers]!is[system]!has[draft.of]]\"};var selector=exports.selector=_extends({},s,{allEdgeTypesById:s.allEdgeTypes+\" +[removeprefix[\"+path.edgeTypes+\"/]]\",allNodeTypesById:s.allNodeTypes+\" +[removeprefix[\"+path.nodeTypes+\"/]]\",allViewsByLabel:s.allViews+\" +[removeprefix[\"+path.views+\"/]]\"});\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/environment.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/exception": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/exception",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function r(r,t){for(var e=0;e<t.length;e++){var o=t[e];o.enumerable=o.enumerable||false;o.configurable=true;if(\"value\"in o)o.writable=true;Object.defineProperty(r,o.key,o)}}return function(t,e,o){if(e)r(t.prototype,e);if(o)r(t,o);return t}}();function _classCallCheck(r,t){if(!(r instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(r,t){if(!r){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:r}function _inherits(r,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}r.prototype=Object.create(t&&t.prototype,{constructor:{value:r,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(r,t):r.__proto__=t}\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/exception\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var TiddlyMapError=function(r){_inherits(t,r);function t(r,e){_classCallCheck(this,t);var o=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,r));o.payload=e;return o}_createClass(t,[{key:\"getPayload\",value:function r(){return this.payload}}]);return t}(Error);var EnvironmentError=exports.EnvironmentError=function(r){_inherits(t,r);function t(r){_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"Critical parts of the underlying system changed: \"+r))}return t}(TiddlyMapError);var DependencyError=exports.DependencyError=function(r){_inherits(t,r);function t(r){_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"TiddlyMap cannot run without: : \"+r))}return t}(TiddlyMapError);var MissingOverrideError=exports.MissingOverrideError=function(r){_inherits(t,r);function t(r,e){_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,r.constructor.name+' does not override method \"'+e+'\"'))}return t}(TiddlyMapError);var ResourceNotFoundException=exports.ResourceNotFoundException=function(r){_inherits(t,r);function t(r){_classCallCheck(this,t);for(var e=arguments.length,o=Array(e>1?e-1:0),n=1;n<e;n++){o[n-1]=arguments[n]}return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"Cannot resolve \"+r,o))}return t}(TiddlyMapError);var InvalidArgumentException=exports.InvalidArgumentException=function(r){_inherits(t,r);function t(){_classCallCheck(this,t);for(var r=arguments.length,e=Array(r),o=0;o<r;o++){e[o]=arguments[o]}return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"Invalid or missing argument provided\",e))}return t}(TiddlyMapError);\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/exceptions.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/URL": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/URL",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/URL\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */\n/**\n * <<<\n * Lightweight URL manipulation with JavaScript. This library is\n * independent of any other libraries and has pretty simple interface\n * and lightweight code-base. Some ideas of query string parsing\n * had been taken from Jan Wolter.\"\n *\n * @see http://unixpapa.com/js/querystring.html\n * @license MIT\n * @author Mykhailo Stadnyk <mikhus@gmail.com>\n * <<< https://github.com/Mikhus/jsurl\n *\n * @class\n * @param {string} url\n */function Url(t){this.paths=function(t){var e=\"\",r=0,o;if(t&&t.length&&t+\"\"!==t){if(this.isAbsolute()){e=\"/\"}for(o=t.length;r<o;r++){t[r]=encode(t[r])}this.path=e+t.join(\"/\")}t=(this.path.charAt(0)===\"/\"?this.path.slice(1):this.path).split(\"/\");for(r=0,o=t.length;r<o;r++){t[r]=decode(t[r])}return t};this.encode=encode;this.decode=decode;this.isAbsolute=function(){return this.protocol||this.path.charAt(0)===\"/\"};this.toString=function(){return(this.protocol&&this.protocol+\"://\")+(this.user&&encode(this.user)+(this.pass&&\":\"+encode(this.pass))+\"@\")+(this.host&&this.host)+(this.port&&\":\"+this.port)+(this.path&&this.path)+(this.query.toString()&&\"?\"+this.query)+(this.hash&&\"#\"+encode(this.hash))};parse(this,t)}var map={protocol:\"protocol\",host:\"hostname\",port:\"port\",path:\"pathname\",query:\"search\",hash:\"hash\"},defaultPorts={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443},parse=function t(e,r){var o=document,s=o.createElement(\"a\"),r=r||o.location.href,i=r.match(/\\/\\/(.*?)(?::(.*?))?@/)||[],n;s.href=r;for(n in map){e[n]=s[map[n]]||\"\"}e.protocol=e.protocol.replace(/:$/,\"\");e.query=e.query.replace(/^\\?/,\"\");e.hash=decode(e.hash.replace(/^#/,\"\"));e.user=decode(i[1]||\"\");e.pass=decode(i[2]||\"\");e.port=defaultPorts[e.protocol]==e.port||e.port==0?\"\":e.port;if(!e.protocol&&!/^([a-z]+:)?\\/\\//.test(r)){var h=new Url(o.location.href.match(/(.*\\/)/)[0]),a=h.path.split(\"/\"),p=e.path.split(\"/\"),c=[\"protocol\",\"user\",\"pass\",\"host\",\"port\"],f=c.length;a.pop();for(n=0;n<f;n++){e[c[n]]=h[c[n]]}while(p[0]==\"..\"){a.pop();p.shift()}e.path=(r.charAt(0)!=\"/\"?a.join(\"/\"):\"\")+\"/\"+p.join(\"/\")}else{e.path=e.path.replace(/^\\/?/,\"/\")}e.paths((e.path.charAt(0)==\"/\"?e.path.slice(1):e.path).split(\"/\"));parseQs(e)},encode=function t(e){return encodeURIComponent(e).replace(/'/g,\"%27\")},decode=function t(e){e=e.replace(/\\+/g,\" \");e=e.replace(/%([ef][0-9a-f])%([89ab][0-9a-f])%([89ab][0-9a-f])/gi,function(t,e,r,o){var s=parseInt(e,16)-224,i=parseInt(r,16)-128;if(s==0&&i<32){return t}var n=parseInt(o,16)-128,h=(s<<12)+(i<<6)+n;if(h>65535){return t}return String.fromCharCode(h)});e=e.replace(/%([cd][0-9a-f])%([89ab][0-9a-f])/gi,function(t,e,r){var o=parseInt(e,16)-192;if(o<2){return t}var s=parseInt(r,16)-128;return String.fromCharCode((o<<6)+s)});e=e.replace(/%([0-7][0-9a-f])/gi,function(t,e){return String.fromCharCode(parseInt(e,16))});return e},parseQs=function t(e){var r=e.query;e.query=new function(t){var e=/([^=&]+)(=([^&]*))?/g,r;while(r=e.exec(t)){var o=decodeURIComponent(r[1].replace(/\\+/g,\" \")),s=r[3]?decode(r[3]):\"\";if(this[o]!=null){if(!(this[o]instanceof Array)){this[o]=[this[o]]}this[o].push(s)}else{this[o]=s}}this.clear=function(){for(var t in this){if(!(this[t]instanceof Function)){delete this[t]}}};this.count=function(){var t=0,e;for(e in this){if(!(this[e]instanceof Function)){t++}}return t};this.isEmpty=function(){return this.count()===0};this.toString=function(){var t=\"\",e=encode,r,o;for(r in this){if(this[r]instanceof Function){continue}if(this[r]instanceof Array){var s=this[r].length;if(s){for(o=0;o<s;o++){t+=t?\"&\":\"\";t+=e(r)+\"=\"+e(this[r][o])}}else{t+=(t?\"&\":\"\")+e(r)+\"=\"}}else{t+=t?\"&\":\"\";t+=e(r)+\"=\"+e(this[r])}}return t}}(r)};exports.default=Url;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/url.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.bindTo=exports.getNearestRasterPosition=exports.mod=exports.removeDOMChildNodes=exports.setDomListeners=exports.merge=exports.getRandomLabel=exports.getFirstElementByClassName=exports.getImgFromWeb=exports.pickRandom=exports.hasKeyWithPrefix=exports.getWithoutPrefix=exports.getPropertiesByPrefix=exports.removeArrayElement=exports.isTrue=exports.replaceAll=exports.isInteger=exports.findAndRemoveClassNames=exports.getAncestorWithClass=exports.makeHashMap=exports.getWithoutNewLines=exports.joinAndWrap=exports.parseJSON=exports.hasSubString=exports.inArray=exports.getRandomInt=exports.isEqual=exports.identity=exports.base64=exports.startsWith=exports.getBasename=exports.escapeRegex=exports.hasElements=exports.ucFirst=undefined;var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _exception=require(\"$:/plugins/felixhayashi/tiddlymap/js/exception\");var ucFirst=exports.ucFirst=function e(t){return t&&t[0].toUpperCase()+t.slice(1)};var hasElements=exports.hasElements=function e(t){return Object.keys(t).length>0};var escapeRegex=exports.escapeRegex=function e(t){return t.replace(/[-$^?.+*[\\]\\\\(){}|]/g,\"\\\\$&\")};var getBasename=exports.getBasename=function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"/\";return t.substring(t.lastIndexOf(r)+1)};var startsWith=exports.startsWith=function e(t,r){return t.substring(0,r.length)===r};var base64=exports.base64=typeof window===\"undefined\"?function(e){return new Buffer(e).toString(\"base64\")}:window.btoa.bind(window);var identity=exports.identity=function e(t){return(typeof t===\"undefined\"?\"undefined\":_typeof(t))===\"object\"&&t!==null?JSON.stringify(Object.keys(t).sort().map(function(e){return[e,t[e]]})):null};var isEqual=exports.isEqual=function e(t,r){return identity(t)===identity(r)};var getRandomInt=exports.getRandomInt=function e(t,r){return Math.floor(Math.random()*(r-t)+t)};var inArray=exports.inArray=function e(t,r){return r.indexOf(t)!==-1};var hasSubString=exports.hasSubString=function e(t,r){return t.indexOf(r)!==-1};var parseJSON=exports.parseJSON=function e(t,r){try{return JSON.parse(t)}catch(e){return r}};var joinAndWrap=exports.joinAndWrap=function e(t,r,n){var o=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\" \";return r+t.join(n+o+r)+n};var getWithoutNewLines=exports.getWithoutNewLines=function e(t){return typeof t===\"string\"?t.replace(/[\\n\\r]/g,\" \"):t};var makeHashMap=exports.makeHashMap=function e(t){var r=Object.create(null);Object.defineProperty(r,\"hasOwnProperty\",{enumerable:false,configurable:false,writable:false,value:Object.prototype.hasOwnProperty.bind(r)});if(t){for(var n in t){if(t.hasOwnProperty(n)){r[n]=t[n]}}}return r};var getAncestorWithClass=exports.getAncestorWithClass=function e(t,r){if((typeof t===\"undefined\"?\"undefined\":_typeof(t))!==\"object\"||typeof r!==\"string\"){return}while(t.parentNode&&t.parentNode!==document){t=t.parentNode;if(t.classList.contains(r)){return t}}};var findAndRemoveClassNames=exports.findAndRemoveClassNames=function e(t){for(var r=t.length;r--;){var n=document.getElementsByClassName(t[r]);for(var o=n.length;o--;){n[o].classList.remove(t[r])}}};var isInteger=exports.isInteger=Number.isInteger||function(e){return typeof e===\"number\"&&isFinite(e)&&Math.floor(e)===e};var replaceAll=exports.replaceAll=function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"\";var n=arguments[2];for(var o=n.length;o--;){var s=n[o];var i=r;if(Array.isArray(s)){i=s[1];s=s[0]}t=t.replace(s,i)}return t};var isTrue=exports.isTrue=function e(t,r){if(t==null){return!!r}else if(typeof t===\"string\"){var n=parseInt(t);return isNaN(n)?t===\"true\":n!==0}else if(typeof t===\"boolean\"){return t}else if(typeof t===\"number\"){return n!==0}return false};var removeArrayElement=exports.removeArrayElement=function e(t,r){var n=t.indexOf(r);if(n>-1){return t.splice(n,1)[0]}};var getPropertiesByPrefix=exports.getPropertiesByPrefix=function e(t,r,n){var o=makeHashMap();for(var s in t){if(startsWith(s,r)){o[n?s.substr(r.length):s]=t[s]}}return o};var getWithoutPrefix=exports.getWithoutPrefix=function e(t,r){return startsWith(t,r)?t.substr(r.length):t};var hasKeyWithPrefix=exports.hasKeyWithPrefix=function e(t,r){for(var n in t){if(startsWith(n,r)){return true}}return false};var pickRandom=exports.pickRandom=function e(t){return t[getRandomInt(0,t.length-1)]};var getImgFromWeb=exports.getImgFromWeb=function e(t,r){if(!t||typeof r!==\"function\")return;var n=new XMLHttpRequest;n.open(\"GET\",t,true);n.responseType=\"blob\";n.onerror=function(e){console.log(e)};n.onload=function(e){if(this.readyState===4&&(this.status===200||this.status===0&&this.response.size>0)){var t=this.response;r(window.URL.createObjectURL(t))}};try{n.send()}catch(e){console.log(e)}};var getFirstElementByClassName=exports.getFirstElementByClassName=function e(t,r,n){var o=(r||document).getElementsByClassName(t)[0];if(!o&&(typeof n===\"boolean\"?n:true)){var s='Missing element with class \"'+t+'\" inside '+r;throw new _exception.EnvironmentError(s)}return o};var getRandomLabel=exports.getRandomLabel=function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var r=pickRandom([\"exciting\",\"notable\",\"epic\",\"new\",\"fancy\",\"great\",\"cool\",\"fresh\",\"funky\",\"clever\"]);var n=(t.object||pickRandom([\"concept\",\"idea\",\"thought\",\"topic\",\"subject\"]))+(t.plural?\"s\":\"\");return\"My \"+r+\" \"+n};var _merge=function e(t,r){if((typeof t===\"undefined\"?\"undefined\":_typeof(t))!==\"object\"){t={}}for(var n in r){if(r.hasOwnProperty(n)){if(r[n]!=null){t[n]=_typeof(r[n])===\"object\"?e(t[n],r[n]):r[n]}}}return t};var merge=exports.merge=function e(t){for(var r=arguments.length,n=Array(r>1?r-1:0),o=1;o<r;o++){n[o-1]=arguments[o]}for(var s=0,i=n.length;s<i;s++){var a=n[s];if(a!=null&&(typeof a===\"undefined\"?\"undefined\":_typeof(a))===\"object\"){t=_merge(t,a)}}return t};var setDomListeners=exports.setDomListeners=function e(t,r,n,o){o=typeof o===\"boolean\"?o:false;t=t+\"EventListener\";for(var s in n){var i=n[s];if(typeof i===\"function\"){r[t](s,i,o)}else{r[t](s,i[0],typeof i[1]===\"boolean\"?i[1]:o)}}};var removeDOMChildNodes=exports.removeDOMChildNodes=function e(t){for(var r=t.childNodes.length;r--;){t.removeChild(t.childNodes[r])}};var mod=exports.mod=function e(t,r){var n=t%r;return Math.floor(n>=0?n:n+r)};var getNearestRasterPosition=exports.getNearestRasterPosition=function e(t,r){var n=t.x,o=t.y;var s=r/2;var i=mod(n,r);var a=mod(o,r);return{x:i<s?n-i:n-i+r,y:a<s?o-a:o-a+r}};var bindTo=exports.bindTo=function e(t,r){for(var n=r.length;n--;){var o=t[r[n]];t[r[n]]=o.bind(t)}};\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/basic.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/thirdParty": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/utils/thirdParty",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/utils/thirdParty\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var generateDraftTitle=exports.generateDraftTitle=function e(n){var r=0,t=void 0;do{t=\"Draft \"+(r?r+1+\" \":\"\")+\"of '\"+n+\"'\";r++}while($tw.wiki.tiddlerExists(t));return t};var makeDraftTiddler=exports.makeDraftTiddler=function e(n){var r=$tw.wiki.findDraft(n);if(r){return $tw.wiki.getTiddler(r)}var t=$tw.wiki.getTiddler(n);r=generateDraftTitle(n);var l=new $tw.Tiddler(t,{title:r,\"draft.title\":n,\"draft.of\":n},$tw.wiki.getModificationFields());$tw.wiki.addTiddler(l);return l};var getFullScreenApis=exports.getFullScreenApis=function e(){var n=document,r=n.body,t={_requestFullscreen:r.webkitRequestFullscreen!==undefined?\"webkitRequestFullscreen\":r.mozRequestFullScreen!==undefined?\"mozRequestFullScreen\":r.msRequestFullscreen!==undefined?\"msRequestFullscreen\":r.requestFullscreen!==undefined?\"requestFullscreen\":\"\",_exitFullscreen:n.webkitExitFullscreen!==undefined?\"webkitExitFullscreen\":n.mozCancelFullScreen!==undefined?\"mozCancelFullScreen\":n.msExitFullscreen!==undefined?\"msExitFullscreen\":n.exitFullscreen!==undefined?\"exitFullscreen\":\"\",_fullscreenElement:n.webkitFullscreenElement!==undefined?\"webkitFullscreenElement\":n.mozFullScreenElement!==undefined?\"mozFullScreenElement\":n.msFullscreenElement!==undefined?\"msFullscreenElement\":n.fullscreenElement!==undefined?\"fullscreenElement\":\"\",_fullscreenChange:n.webkitFullscreenElement!==undefined?\"webkitfullscreenchange\":n.mozFullScreenElement!==undefined?\"mozfullscreenchange\":n.msFullscreenElement!==undefined?\"MSFullscreenChange\":n.fullscreenElement!==undefined?\"fullscreenchange\":\"\"};if(!t._requestFullscreen||!t._exitFullscreen||!t._fullscreenElement){return null}else{return t}};var flatten=exports.flatten=function e(n){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var t=r.delimiter||\".\";var l=r.prefix||\"\";var i={};function u(e,n){Object.keys(e).forEach(function(f){var s=e[f];var c=r.safe&&Array.isArray(s);var a=Object.prototype.toString.call(s);var d=a===\"[object Object]\"||a===\"[object Array]\";var o=n?n+t+f:l+f;if(!c&&d){return u(s,o)}i[o]=s})}u(n);return i};var unflatten=exports.unflatten=function e(n){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var t=r.delimiter||\".\";var l={};if(Object.prototype.toString.call(n)!==\"[object Object]\"){return n}function i(e){var n=Number(e);return isNaN(n)||e.indexOf(\".\")!==-1?e:n}Object.keys(n).forEach(function(u){var f=u.split(t);var s=i(f.shift());var c=i(f[0]);var a=l;while(c!==undefined){if(a[s]===undefined){a[s]=typeof c===\"number\"&&!r.object?[]:{}}a=a[s];if(f.length>0){s=i(f.shift());c=i(f[0])}}a[s]=e(n[u],r)});return l};var genUUID=exports.genUUID=function(){var e=\"0123456789abcdefghijklmnopqrstuvwxyz\".split(\"\");return function(){var n=e,r=new Array(36);var t=0,l;for(var i=0;i<36;i++){if(i==8||i==13||i==18||i==23){r[i]=\"-\"}else if(i==14){r[i]=\"4\"}else{if(t<=2)t=33554432+Math.random()*16777216|0;l=t&15;t=t>>4;r[i]=n[i==19?l&3|8:l]}}return r.join(\"\")}}();\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/thirdParty.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/tmap": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/utils/tmap",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.getSnapshotTitle=exports.getArrayValuesAsHashmapKeys=exports.getLookupTable=exports.keyOfItemWithProperty=exports.keysOfItemsWithProperty=exports.getDublicates=exports.getId=exports.refreshDataSet=exports.drawRaster=exports.getPrettyFilter=exports.groupByProperty=exports.isEdgeTypeMatch=exports.getEdgeTypeMatches=exports.getDataUri=exports.convert=exports.getValues=exports.getIterableCollection=exports.getLabel=undefined;var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/utils/tmap\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _vis=require(\"$:/plugins/felixhayashi/vis/vis.js\");var _vis2=_interopRequireDefault(_vis);var _exception=require(\"$:/plugins/felixhayashi/tiddlymap/js/exception\");var _basic=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic\");var basicUtils=_interopRequireWildcard(_basic);var _wiki=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki\");var wikiUtils=_interopRequireWildcard(_wiki);function _interopRequireWildcard(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var getLabel=exports.getLabel=function e(t,r){var i=wikiUtils.getTiddler(t);return(i&&i.fields[r]?i.fields[r]:i.fields.title).replace(\"\\\\n\",\"\\n\")};var getIterableCollection=exports.getIterableCollection=function e(t){return t instanceof _vis2.default.DataSet?t.get():t};var getValues=exports.getValues=function e(t){if(Array.isArray(t)){return t}else if(t instanceof _vis2.default.DataSet){return t.get({returnType:\"Array\"})}var r=[];var i=Object.keys(t);for(var a=i.length;a--;){r.push(t[i[a]])}return r};var convert=exports.convert=function e(t,r){if((typeof t===\"undefined\"?\"undefined\":_typeof(t))!==\"object\"){throw new _exception.InvalidArgumentException(t,r)}if(r===\"object\"){r=\"hashmap\"}var i={array:function e(t){return getValues(t)},hashmap:function e(t){return t instanceof _vis2.default.DataSet?t.get({returnType:\"Object\"}):t},dataset:function e(t){return t instanceof _vis2.default.DataSet?t:!Array.isArray(t)?getValues(t):new _vis2.default.DataSet(t)}};return i[r](t)};var getDataUri=exports.getDataUri=function e(t,r,i){var a=wikiUtils.getTiddler(t);r=r||a.fields.type||\"image/svg+xml\";var s=a.fields.text;var o=$tw.config.contentTypeInfo[r].encoding;if(r===\"image/svg+xml\"){s=s.replace(/\\r?\\n|\\r/g,\" \");if(!basicUtils.hasSubString(\"xmlns\",s)){s=s.replace(/<svg/,'<svg xmlns=\"http://www.w3.org/2000/svg\"')}}if(i&&o!==\"base64\"){o=\"base64\";s=basicUtils.base64(s)}return\"data:\"+r+\";\"+o+\",\"+s};var eTyFiltAutoPrefix=\"[all[]] \";var getEdgeTypeMatches=exports.getEdgeTypeMatches=function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";var r=arguments[1];if(!r){r=wikiUtils.getTiddlersByPrefix($tm.path.edgeTypes+\"/\",{iterator:\"eachTiddlerPlusShadows\",removePrefix:true})}if(r!=null&&!Array.isArray(r)){r=Object.keys(r)}return wikiUtils.getMatches(eTyFiltAutoPrefix+t,r)};var isEdgeTypeMatch=exports.isEdgeTypeMatch=function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"\";return wikiUtils.isMatch(t,eTyFiltAutoPrefix+r)};var groupByProperty=exports.groupByProperty=function e(t,r){t=getIterableCollection(t);var i=basicUtils.makeHashMap();var a=Object.keys(t);for(var s in a){var o=t[a[s]];var n=o[r];if(n==null){throw\"Cannot group by property \"+r}else{if(!Array.isArray(i[n])){i[n]=[]}i[n].push(o)}}return i};var getPrettyFilter=exports.getPrettyFilter=function e(t){t=t.trim().replace(\"][\",\"] [\");var r=/[+-]?\\[.+?[\\]\\}\\>]\\]/g;var i=t.match(r);t=t.replace(r,\" [] \").trim();var a=t.split(/\\s+/);var s=0;var o=[];for(var n=0,l=a.length;n<l;n++){o[n]=a[n]===\"[]\"?i[s++]:a[n]}return o.join(\"\\n\")};var drawRaster=exports.drawRaster=function e(t,r,i,a){var s=arguments.length>4&&arguments[4]!==undefined?arguments[4]:\"#D9D9D9\";var o=basicUtils.getNearestRasterPosition(i,a),n=o.x,l=o.y;var u=t.canvas.width/r;var p=t.canvas.height/r;var f=a*2;var v=Math.ceil(u/a/2)*a+f;var c=Math.ceil(p/a/2)*a+f;var y=n-v;var g=n+v;var d=l-c;var h=l+c;t.beginPath();for(var b=y;b<g;b+=a){t.moveTo(b,d);t.lineTo(b,h)}for(var x=d;x<=h;x+=a){t.moveTo(y,x);t.lineTo(g,x)}t.strokeStyle=s;t.fillStyle=s;t.stroke()};var refreshDataSet=exports.refreshDataSet=function e(t,r){var i=t.get({returnType:\"Object\"});var a=[];var s=[];var o=[];var n=[];for(var l in r){if(i[l]){if(basicUtils.isEqual(i[l],r[l])){continue}s.push(l);t.remove(l)}else{a.push(l)}if(r[l].x===undefined){o.push(l)}t.add(r[l])}for(var u in i){if(!r[u]){n.push(u);t.remove(u)}}return{withoutPosition:o,inserted:a,updated:s,removed:n}};var getId=exports.getId=function e(t){return wikiUtils.getTiddler(t).fields[\"tmap.id\"]};var getDublicates=exports.getDublicates=function e(t){var r=getId(t);if(!r){return[]}var i=wikiUtils.getTiddlersWithField(\"tmap.id\",r,{limit:2});delete i[wikiUtils.getTiddlerRef(t)];return Object.keys(i)};var keysOfItemsWithProperty=exports.keysOfItemsWithProperty=function e(t,r,i,a){t=getIterableCollection(t);var s=Object.keys(t);var o=[];a=typeof a===\"number\"?a:s.length;for(var n=0,l=s.length;n<l;n++){var u=s[n];if(_typeof(t[u])===\"object\"&&t[u][r]){if(!i||t[u][r]===i){o.push(u);if(o.length===a){break}}}}return o};var keyOfItemWithProperty=exports.keyOfItemWithProperty=function e(t,r,i){return keysOfItemsWithProperty(t,r,i,1)[0]};var getLookupTable=exports.getLookupTable=function e(t,r){t=getIterableCollection(t);var i=basicUtils.makeHashMap();var a=Object.keys(t);for(var s=0,o=a.length;s<o;s++){var n=a[s];var l=r?t[n][r]:t[n];var u=typeof l===\"undefined\"?\"undefined\":_typeof(l);if(u===\"string\"&&l!==\"\"||u===\"number\"){if(!i[l]){i[l]=r?t[n]:true;continue}}if(r){throw new Error('Cannot use \"'+l+'\" as lookup table index')}}return i};var getArrayValuesAsHashmapKeys=exports.getArrayValuesAsHashmapKeys=getLookupTable;var getSnapshotTitle=exports.getSnapshotTitle=function e(t,r){return\"Snapshot – \"+t+\" (\"+(new Date).toDateString()+\").\"+(r||\"png\")};\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/tmap.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/utils": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/utils",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.utils=undefined;var _extends=Object.assign||function(i){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var e in t){if(Object.prototype.hasOwnProperty.call(t,e)){i[e]=t[e]}}}return i};/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/utils\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _basic=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic\");var basicUtils=_interopRequireWildcard(_basic);var _thirdParty=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/thirdParty\");var thirdPartyUtils=_interopRequireWildcard(_thirdParty);var _wiki=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki\");var wikiUtils=_interopRequireWildcard(_wiki);var _tmap=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/tmap\");var tMapUtils=_interopRequireWildcard(_tmap);function _interopRequireWildcard(i){if(i&&i.__esModule){return i}else{var r={};if(i!=null){for(var t in i){if(Object.prototype.hasOwnProperty.call(i,t))r[t]=i[t]}}r.default=i;return r}}var utils=exports.utils=_extends({},basicUtils,thirdPartyUtils,wikiUtils,tMapUtils);exports.default=utils;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/utils.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.touch=exports.addTiddler=exports.getTiddlersByPrefix=exports.getTiddlerWithField=exports.getTiddlersWithField=exports.deleteByPrefix=exports.cp=exports.mv=exports.addTWlisteners=exports.getChildWidgetByProperty=exports.getMergedTiddlers=exports.isSystemOrDraft=exports.isDraft=exports.setText=exports.getText=exports.isLeftVersionGreater=exports.getEntry=exports.setEntry=exports.clone=exports.writeFieldData=exports.parseFieldData=exports.isPreviewed=exports.notify=exports.registerTransclude=exports.getElementNode=exports.getTiddlerNode=exports.getTranscludeNode=exports.isMatch=exports.getMatches=exports.moveFieldValues=exports.deleteTiddlers=exports.setField=exports.setSidebarTab=exports.tiddlerExists=exports.getField=exports.getTiddler=exports.getTiddlerRef=undefined;var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};var _exception=require(\"$:/plugins/felixhayashi/tiddlymap/js/exception\");var _basic=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/utils/basic\");var basicUtils=_interopRequireWildcard(_basic);function _interopRequireWildcard(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function _defineProperty(e,t,r){if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/lib/utils/wiki\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var getTiddlerRef=exports.getTiddlerRef=function e(t){if(t instanceof $tw.Tiddler){return t.fields.title}else if(typeof t===\"string\"){return t}else{throw new _exception.InvalidArgumentException(t)}};var getTiddler=exports.getTiddler=function e(t){return $tw.wiki.getTiddler(t instanceof $tw.Tiddler?t.fields.title:t)};var getField=exports.getField=function e(t,r){var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"\";var d=getTiddler(t);return!d?i:d.fields[r]||i};var tiddlerExists=exports.tiddlerExists=function e(t){if(!t){return false}var r=getTiddlerRef(t);return Boolean(r&&($tw.wiki.tiddlerExists(r)||$tw.wiki.isShadowTiddler(r)))};var setSidebarTab=exports.setSidebarTab=function e(t){setText(getTiddlersByPrefix(\"$:/state/tab/sidebar-\")[0],t)};var setField=exports.setField=function e(t,r,i){if(!t||!r){return}var d=getTiddlerRef(t);var s=_defineProperty({title:d},r,i);var n=$tw.wiki.getTiddler(d,true);if(r!==\"text\"&&n&&!n.fields.text){s.text=\"\"}n=new $tw.Tiddler(n,s);$tw.wiki.addTiddler(n);return n};var deleteTiddlers=exports.deleteTiddlers=function e(t){var r=Object.keys(t);var i=$tw.wiki.getTiddlerList(\"$:/StoryList\");for(var d=r.length;d--;){var s=getTiddlerRef(t[r[d]]);if(!$tw.wiki.tiddlerExists(t[r[d]])){continue}var n=i.indexOf(s);if(n!==-1){i.splice(n,1);setField(\"$:/StoryList\",\"list\",i)}$tw.wiki.deleteTiddler(s)}};var moveFieldValues=exports.moveFieldValues=function e(t,r,i,d,s){if(t===r)return;var n=s||$tw.wiki.allTitles();for(var l=n.length;l--;){var a=getTiddler(n[l]);if(a.isDraft()||!a.fields[t]){continue}if(!d&&$tw.wiki.isSystemTiddler(n[l])){continue}var o=_defineProperty({},r,a.fields[t]);if(i){o[t]=undefined}$tw.wiki.addTiddler(new $tw.Tiddler(a,o))}};var getMatches=exports.getMatches=function e(t,r,i){var d=undefined;var s=$tw.wiki;if(typeof t===\"string\"){t=s.compileFilter(t)}if(r!=null&&(typeof r===\"undefined\"?\"undefined\":_typeof(r))===\"object\"){if(!Array.isArray(r)){r=Object.keys(r)}d=function e(t){for(var i=r.length;i--;){var d=s.getTiddler(r[i]);t(d,r[i])}}}return t.call(s,d,i)};var isMatch=exports.isMatch=function e(t,r){return getTiddlerRef(t)===getMatches(r,[getTiddlerRef(t)])[0]};var getTranscludeNode=exports.getTranscludeNode=function e(t,r){return{type:\"transclude\",attributes:{tiddler:{type:\"string\",value:getTiddlerRef(t)}},children:[],isBlock:!!r}};var getTiddlerNode=exports.getTiddlerNode=function e(t){return{type:\"tiddler\",attributes:{tiddler:{type:\"string\",value:getTiddlerRef(t)}},children:[]}};var getElementNode=exports.getElementNode=function e(t,r,i){return{type:\"element\",tag:t,attributes:{class:{type:\"string\",value:r}},children:i?[{type:\"text\",text:i}]:[]}};var registerTransclude=exports.registerTransclude=function e(t,r,i){basicUtils.removeArrayElement(t.children,t[r]);t[r]=t.makeChildWidget(getTranscludeNode(i,true));t.children.push(t[r]);return t[r]};var notify=exports.notify=function e(t){var r=\"$:/temp/tiddlymap/notify\";$tw.wiki.addTiddler(new $tw.Tiddler({title:r,text:t}));$tw.notifier.display(r)};var isPreviewed=exports.isPreviewed=function e(t){if(!t){return false}if(t.domNode.isTiddlyWikiFakeDom){return true}if(t.getVariable(\"tv-tiddler-preview\")){return true}else{var r=\"tc-tiddler-preview-preview\";return!!basicUtils.getAncestorWithClass(t.parentDomNode,r)}};var parseFieldData=exports.parseFieldData=function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"text\";var i=arguments[2];var d=getTiddler(t);if(!d){return i}return basicUtils.parseJSON(d.fields[r],i)};var writeFieldData=exports.writeFieldData=function e(t,r,i,d){if((typeof i===\"undefined\"?\"undefined\":_typeof(i))!==\"object\"){return}d=parseInt(d);d=d>0&&r===\"text\"?d:0;setField(t,r,JSON.stringify(i,null,d))};var clone=exports.clone=function e(t,r){setField(t,\"title\",r)};var setEntry=exports.setEntry=function e(t,r,i){$tw.wiki.setText(getTiddlerRef(t),null,r,i)};var getEntry=exports.getEntry=function e(t,r,i){var d=$tw.wiki.getTiddlerData(getTiddlerRef(t),{});return d[r]==null?i:d[r]};var isLeftVersionGreater=exports.isLeftVersionGreater=function e(t,r){return t!==r&&$tw.utils.checkVersions(t,r)};var getText=exports.getText=function e(t,r){return getField(t,\"text\",r)};var setText=exports.setText=function e(t,r){setField(t,\"text\",r)};var isDraft=exports.isDraft=function e(t){var r=getTiddler(t);return r&&r.isDraft()};var isSystemOrDraft=exports.isSystemOrDraft=function e(t){return $tw.wiki.isSystemTiddler(getTiddlerRef(t))||isDraft(t)};var getMergedTiddlers=exports.getMergedTiddlers=function e(t,r){if(!Array.isArray(t)){return}for(var i=t.length;i--;){t[i]=getTiddler(t[i])}if(!t.length){return}t.push({title:r||t[0].fields.title},$tw.wiki.getModificationFields(),$tw.wiki.getCreationFields());t.unshift(null);return new(Function.prototype.bind.apply($tw.Tiddler,t))};var getChildWidgetByProperty=exports.getChildWidgetByProperty=function e(t,r,i){var d=t.children;for(var s=d.length;s--;){var n=d[s];if(n[r]===i){return n}else{n=e(n,r,i);if(n){return n}}}};var addTWlisteners=exports.addTWlisteners=function e(t,r,i){for(var d in t){r.addEventListener(d,t[d].bind(i))}};var mv=exports.mv=function e(t,r,i,d){if(t===r||!t||!r){return}i=typeof i===\"boolean\"?i:false;d=typeof d===\"boolean\"?d:true;var s=getTiddlersByPrefix(t);var n=basicUtils.makeHashMap();for(var l=s.length;l--;){var a=s[l];var o=a.replace(t,r);if($tw.wiki.tiddlerExists(o)&&!i){return}n[a]=o}for(var f in n){setField(f,\"title\",n[f]);if(d){$tw.wiki.deleteTiddler(f)}}return n};var cp=exports.cp=function e(t,r,i){return mv(t,r,i,false)};var deleteByPrefix=exports.deleteByPrefix=function e(t,r){if(!t){return}r=r||$tw.wiki.allTitles();var i=[];for(var d=r.length;d--;){if(basicUtils.startsWith(r[d],t)){$tw.wiki.deleteTiddler(r[d]);i.push(i[d])}}return i};var getTiddlersWithField=exports.getTiddlersWithField=function e(t,r){var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var d=i.tiddlers||$tw.wiki.allTitles();var s=i.isIncludeDrafts===true;var n=basicUtils.makeHashMap();var l=Object.keys(d);var a=$tw.utils.hop;var o=i.limit||0;for(var f=l.length;f--;){var u=getTiddler(d[l[f]]);var p=u.fields;if(a(p,t)&&(!a(p,\"draft.of\")||s)){if(!r||p[t]===r){n[p.title]=u;if(--o===0){break}}}}return n};var getTiddlerWithField=exports.getTiddlerWithField=function e(t,r){return Object.keys(getTiddlersWithField(t,r,{limit:1}))[0]};var getTiddlersByPrefix=exports.getTiddlersByPrefix=function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var i=r.removePrefix===true;var d=[];var s=$tw.wiki[r.iterator||\"each\"];s(function(e,r){if(basicUtils.startsWith(r,t)){d.push(i?basicUtils.getWithoutPrefix(r,t):r)}});return d};var addTiddler=exports.addTiddler=function e(t,r){var i=getTiddler(t);if(!r&&i){return i}i=new $tw.Tiddler({title:t,text:\"\"},$tw.wiki.getModificationFields(),$tw.wiki.getCreationFields());$tw.wiki.addTiddler(i);return i};var touch=exports.touch=function e(t){if(!t){return}var r=new $tw.Tiddler(getTiddler(t),$tw.wiki.getModificationFields());$tw.wiki.addTiddler(r)};\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/lib/utils/wiki.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/macro/tmap": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/macro/tmap",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.params=exports.name=exports.run=undefined;var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};/* @preserve TW-Guard */\n/*\\\ntitle: $:/plugins/felixhayashi/tiddlymap/js/macro/tmap\ntype: application/javascript\nmodule-type: macro\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _EdgeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeType\");var _EdgeType2=_interopRequireDefault(_EdgeType);var _ViewAbstraction=require(\"$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction\");var _ViewAbstraction2=_interopRequireDefault(_ViewAbstraction);var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var name=\"tmap\";var params=getParamSlots(5);function run(){this.substVarRefs=this.substituteVariableReferences;var e=command[arguments[0]];var t=null;if(typeof e===\"function\"){var r=Array.prototype.slice.call(arguments,1);t=e.apply(this,r)}return typeof t===\"string\"?t:\"\"}function getParamSlots(e){var t=[];for(var r=0;r<e;r++){t.push({name:\"arg\"+r})}return t}var command=_utils2.default.makeHashMap();command.basename=function(e){var t=this.getVariable(\"currentTiddler\");return _utils2.default.getBasename(t,e)};command.datauri=function(e,t){return _utils2.default.getDataUri(e,t,true)};command.testJSON=function(e){var t=$tw.wiki.getTiddler(this.getVariable(\"currentTiddler\"));try{JSON.parse(t.fields[e]);return\"valid\"}catch(e){return\"malformed\"}};command.splitAndSelect=function(e,t){var r=this.getVariable(\"currentTiddler\");var a=r.split(e)[t];return a!=null?a:r};command.concat=function(){var e=\"\";for(var t=1,r=arguments.length;t<r;t++){e+=arguments[t]}return e};command.uuid=function(){return _utils2.default.genUUID()};command.regRepl=function(){var e=this.substVarRefs(arguments[0]);var t=arguments[1];var r=this.substVarRefs(arguments[2]);var a=this.substVarRefs(arguments[4]);return e.replace(new RegExp(t,a),r)};command.halfOfString=function(){var e=this.substVarRefs(arguments[0]);if(!e){return\"\"}return e.substr(0,Math.ceil(e.length/2))};command.isETyVisible=function(e,t){e=new _ViewAbstraction2.default(e);var r=command.getETyId.call(this,e,t);return\"\"+e.isEdgeTypeVisible(r)};command.getETyId=function(e,t){e=new _ViewAbstraction2.default(e);var r=_EdgeType2.default.getInstance(t||this.getVariable(\"currentTiddler\"));if(!r.namespace){var a=_EdgeType2.default.getIdParts(r.id),n=a.marker,i=a.name;var u=e.getConfig(\"edge_type_namespace\");r=_EdgeType2.default.getInstance(_EdgeType2.default.getId(n,u,i))}return r.id};command.scale=function(){var e=\"\";for(var t=1,r=parseInt(arguments[0]);t<r;t++){e+=\"[[\"+t+\"]]\"}return e};command.mergeFields=function(){var e=_utils2.default.getTiddler(arguments[0]);var t=arguments[1];var r=arguments[2]||\" \";if(!e)return;var a=_utils2.default.getPropertiesByPrefix(e.fields,t);var n=\"\";for(var i in a){if(typeof a[i]===\"string\"){n+=a[i]+r}}return n};command.option=function(e,t){if(typeof $tm==\"undefined\"){return\"\"}var r=$tm;var a=e.split(\".\");for(var n=0;n<a.length;n++){if((typeof r===\"undefined\"?\"undefined\":_typeof(r))==\"object\"&&r[a[n]]){r=r[a[n]]}}if(t&&typeof r===\"string\"&&_utils2.default.hasSubString(t)&&r.lastIndexOf(t)+t.length===r.length){r=r+t}return r};exports.run=run;exports.name=name;exports.params=params;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/macro/MapMacro.js.map\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/felixhayashi/tiddlymap/js/Adapter": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/Adapter",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};var _createClass=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||false;r.configurable=true;if(\"value\"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}return function(t,i,r){if(i)e(t.prototype,i);if(r)e(t,r);return t}}();/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/Adapter\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _ViewAbstraction=require(\"$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction\");var _ViewAbstraction2=_interopRequireDefault(_ViewAbstraction);var _EdgeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeType\");var _EdgeType2=_interopRequireDefault(_EdgeType);var _NodeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/NodeType\");var _NodeType2=_interopRequireDefault(_NodeType);var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _Edge=require(\"$:/plugins/felixhayashi/tiddlymap/js/Edge\");var _Edge2=_interopRequireDefault(_Edge);var _vis=require(\"$:/plugins/felixhayashi/vis/vis.js\");var _vis2=_interopRequireDefault(_vis);var _environment=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/environment\");var env=_interopRequireWildcard(_environment);var _contrastcolour=require(\"$:/core/modules/macros/contrastcolour.js\");function _interopRequireWildcard(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var i in e){if(Object.prototype.hasOwnProperty.call(e,i))t[i]=e[i]}}t.default=e;return t}}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,i){if(t in e){Object.defineProperty(e,t,{value:i,enumerable:true,configurable:true,writable:true})}else{e[t]=i}return e}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}var Adapter=function(){function e(t,i){_classCallCheck(this,e);this.getTiddlerById=t.getTiddlerById.bind(t);this.getId=t.getIdByTiddler.bind(t);this.assignId=t.assignId.bind(t);this.edgeTypeSubscriberRegistry=i;this.indeces=$tm.indeces;this.wiki=$tw.wiki;this.visShapesWithTextInside=_utils2.default.getLookupTable([\"ellipse\",\"circle\",\"database\",\"box\",\"text\"])}_createClass(e,[{key:\"deleteEdge\",value:function e(t){return this._processEdge(t,\"delete\")}},{key:\"insertEdge\",value:function e(t){return this._processEdge(t,\"insert\")}},{key:\"deleteEdges\",value:function e(t){t=_utils2.default.convert(t,\"array\");for(var i=t.length;i--;){this.deleteEdge(t[i])}}},{key:\"_processEdge\",value:function e(t,i){$tm.logger(\"debug\",\"Edge\",i,t);var r=this.getTiddlerById(t.from);if(!r||!_utils2.default.tiddlerExists(r)){return}var a=_utils2.default.getTiddler(r);var s=this.indeces.allETy[t.type]||_EdgeType2.default.getInstance(t.type);var l=this.edgeTypeSubscriberRegistry.getAllForType(s);var n=i+\"Edge\";for(var d=l.length;d--;){l[d][n](a,t,s)}if(i===\"insert\"&&!s.exists()){s.save()}return t}},{key:\"getAdjacencyList\",value:function e(t){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};$tm.start(\"Creating adjacency list\");if(!i.edges){var r=_utils2.default.getMatches(env.selector.allPotentialNodes);i.edges=this.getEdgesForSet(r,i.toWL,i.typeWL)}var a=_utils2.default.groupByProperty(i.edges,t||\"to\");$tm.stop(\"Creating adjacency list\");return a}},{key:\"getNeighbours\",value:function e(t){var i=this;var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};$tm.start(\"Get neighbours\");var a=r.addProperties,s=r.toWL,l=r.typeWL,n=r.steps;var d=this.indeces.allETy;var o=_utils2.default.getArrayValuesAsHashmapKeys(t);var u=_ViewAbstraction2.default.exists(r.view)?new _ViewAbstraction2.default(r.view):null;var f=_utils2.default.makeHashMap();var g=_utils2.default.makeHashMap();var c=parseInt(n)>0?n:1;var v=r.direction||u&&u.getConfig(\"neighbourhood_directions\");var y=!v||v===\"both\";var h=y||v===\"in\";var p=y||v===\"out\";var _=u&&\"[all[]] \"+u.getNodeFilter(\"raw\");var b=this.getAdjacencyList(\"to\",r);var m=function e(t,r,s){f[t.id]=t;var l=i.getTiddlerById(t[r]);if(u&&_utils2.default.isTrue($tm.config.sys.nodeFilterNeighbours)&&!_utils2.default.isMatch(l,_)){return}if(!o[l]){o[l]=true;var n=i.makeNode(l,a);if(n){g[n.id]=n;s.push(l)}}};var w=void 0;for(w=0;w<c&&t.length;w++){var T=[];for(var k=t.length;k--;){if(_utils2.default.isSystemOrDraft(t[k])){continue}var E=this.getEdges(t[k],s,l);for(var N in E){var A=d[E[N].type];if(y||p&&A.toArrow||h&&A.invertedArrow){m(E[N],\"to\",T)}}var I=b[this.getId(t[k])];if(!I){continue}for(var x=I.length;x--;){var j=d[I[x].type];if(y||h&&j.toArrow||p&&j.invertedArrow){m(I[x],\"from\",T)}}}t=T}var S={nodes:g,edges:f};$tm.logger(\"debug\",\"Retrieved neighbourhood\",S,\"steps\",w);$tm.stop(\"Get neighbours\");return S}},{key:\"getGraph\",value:function e(t){var i=t.view,r=t.matches,a=t.includeNeighboursOf;$tm.start(\"Assembling Graph\");i=new _ViewAbstraction2.default(i);r=r||_utils2.default.getMatches(i.getNodeFilter(\"compiled\"));var s=parseInt(i.getConfig(\"neighbourhood_scope\"));var l=i.getEdgeTypeFilter(\"whitelist\");var n=_utils2.default.getArrayValuesAsHashmapKeys(r);var d={edges:this.getEdgesForSet(r,n,l),nodes:this.selectNodesByReferences(r,{view:i,outputType:\"hashmap\"})};if(s){var o=a?r.filter(a):r;var u=this.getNeighbours(o,{steps:s,view:i,typeWL:l,addProperties:{type:\"tmap:neighbour\"}});Object.assign(d.nodes,u.nodes);Object.assign(d.edges,u.edges);if(i&&i.isEnabled(\"show_inter_neighbour_edges\")){var f=this.getTiddlersByIds(u.nodes);var g=_utils2.default.getArrayValuesAsHashmapKeys(f);Object.assign(d.edges,this.getEdgesForSet(f,g))}}this.attachStylesToNodes(d.nodes,i);$tm.stop(\"Assembling Graph\");$tm.logger(\"debug\",\"Assembled graph:\",d);return d}},{key:\"getEdges\",value:function e(t,i,r){var a=_utils2.default.getTiddler(t);if(!a||_utils2.default.isSystemOrDraft(a)){return}var s=this.indeces.allETy;var l=_utils2.default.makeHashMap();var n=this.edgeTypeSubscriberRegistry.getAll();for(var d=0,o=n.length;d<o;d++){Object.assign(l,n[d].loadEdges(a,i,r))}for(var u in l){var f=l[u];if(!f.from||!f.to){continue}var g=s[f.type]||_EdgeType2.default.getInstance(f.type);addStyleToEdge(l[u],g);l[u]=f}return l}},{key:\"getEdgesForSet\",value:function e(t,i,r){var a=_utils2.default.makeHashMap();for(var s=t.length;s--;){Object.assign(a,this.getEdges(t[s],i,r))}return a}},{key:\"selectEdgesByType\",value:function e(t){var i=_utils2.default.makeHashMap(_defineProperty({},_EdgeType2.default.getInstance(t).id,true));return this.getEdgesForSet(this.getAllPotentialNodes(),null,i)}},{key:\"getAllPotentialNodes\",value:function e(){return _utils2.default.getMatches($tm.selector.allPotentialNodes)}},{key:\"_processEdgesWithType\",value:function e(t,i){var r=i.action,a=i.newName;t=_EdgeType2.default.getInstance(t);$tm.logger(\"debug\",\"Processing edges\",t,r);var s=this.selectEdgesByType(t);if(r===\"rename\"){new _EdgeType2.default(a,t).save()}for(var l in s){this._processEdge(s[l],\"delete\");if(r===\"rename\"){s[l].type=a;this._processEdge(s[l],\"insert\")}}this.wiki.deleteTiddler(t.fullPath)}},{key:\"selectNodesByReferences\",value:function e(t){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=i.addProperties,a=i.outputType;var s=_utils2.default.makeHashMap();var l=Object.keys(t);for(var n=l.length;n--;){var d=this.makeNode(t[l[n]],r);if(d){s[d.id]=d}}return _utils2.default.convert(s,a)}},{key:\"selectNodesByIds\",value:function e(t,i){var r=this.getTiddlersByIds(t);return this.selectNodesByReferences(r,i)}},{key:\"selectNodeById\",value:function e(t,i){i=Object.assign({},i,{outputType:\"hashmap\"});var r=this.selectNodesByIds([t],i);return r[t]}},{key:\"removeNodeType\",value:function e(t){t=_NodeType2.default.getInstance(t);this.wiki.deleteTiddler(t.fullPath)}},{key:\"makeNode\",value:function e(t,i){var r=_utils2.default.getTiddler(t);if(!r||_utils2.default.isSystemOrDraft(r))return;var a=_utils2.default.merge({},i);a.id=this.assignId(r);a.tRef=r.fields.title;var s=r.fields[$tm.field.nodeLabel];a.label=(s&&$tm.field.nodeLabel!==\"title\"?this.wiki.renderText(\"text/plain\",\"text/vnd-tiddlywiki\",s):r.fields.title).replace(\"\\\\n\",\"\\n\");return a}},{key:\"getInheritedNodeStyles\",value:function e(t){var i=this.getTiddlersByIds(t);var r={};var a=this.indeces.glNTy;for(var s=a.length;s--;){var l=a[s];var n=[];if(l.id===\"tmap:neighbour\"){for(var d in t){if(t[d].type===\"tmap:neighbour\"){n.push(this.getTiddlerById(d))}}}else{n=l.getInheritors(i)}for(var o=n.length;o--;){var u=n[o];var f=r[u]=r[u]||{};f.style=_utils2.default.merge(f.style||{},l.style);if(l[\"fa-icon\"]){f[\"fa-icon\"]=l[\"fa-icon\"]}else if(l[\"tw-icon\"]){f[\"tw-icon\"]=l[\"tw-icon\"]}}}return r}},{key:\"attachStylesToNodes\",value:function e(t,i){i=_ViewAbstraction2.default.exists(i)?new _ViewAbstraction2.default(i):null;var r=this.getInheritedNodeStyles(t);var a=i?i.getNodeData():_utils2.default.makeHashMap();var s=i&&!i.isEnabled(\"physics_mode\");for(var l in t){var n=this.getTiddlerById(l);var d=this.wiki.getTiddler(n);var o=d.fields;var u=t[l];var f=void 0;var g=r[n];if(g){_utils2.default.merge(u,g.style);f=getIcon(g[\"fa-icon\"],g[\"tw-icon\"])}if(o.color){u.color=o.color}if(o[\"tmap.style\"]){_utils2.default.merge(u,_utils2.default.parseJSON(o[\"tmap.style\"]))}f=getIcon(o[\"tmap.fa-icon\"],o[\"icon\"])||f;var c=a[l];if(c){_utils2.default.merge(u,c);if(s){u.fixed={x:u.x!=null,y:u.y!=null}}f=getIcon(c[\"fa-icon\"],c[\"tw-icon\"])||f}var v=u.color!==null&&_typeof(u.color)===\"object\";var y=v?u.color.background:u.color;u.color={background:y,border:v?u.color.border:undefined};addNodeIcon(u,f);u.font=u.font||{};if(u.shape&&!this.visShapesWithTextInside[u.shape]){u.font.color=\"black\"}else if(!u.font.color&&y){u.font.color=(0,_contrastcolour.run)(y,y,\"black\",\"white\")}if(u.shape===\"icon\"&&_typeof(u.icon)===\"object\"){u.icon.color=y}}if(i){var h=t[i.getConfig(\"central-topic\")];if(h){_utils2.default.merge(h,this.indeces.glNTyById[\"tmap:central-topic\"].style)}}}},{key:\"deleteNode\",value:function e(t){if(!t){return}var i=(typeof t===\"undefined\"?\"undefined\":_typeof(t))===\"object\"?t.id:t;var r=this.getTiddlerById(i);if(r){_utils2.default.deleteTiddlers([r])}var a=_utils2.default.getMatches(env.selector.allViews);for(var s=a.length;s--;){var l=new _ViewAbstraction2.default(a[s]);l.removeNode(i)}var n=this.getNeighbours([r]);this.deleteEdges(n.edges)}},{key:\"deleteNodes\",value:function e(t){for(var i=t.length;i--;){this.deleteNode(t[i])}}},{key:\"insertNode\",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var i=arguments[1];var r=arguments[2];t.label=this.wiki.generateNewTitle(t.label||_utils2.default.getRandomLabel());var a=new $tw.Tiddler({text:\"\"},r,{title:t.label,\"tmap.id\":null},this.wiki.getModificationFields(),this.wiki.getCreationFields());this.wiki.addTiddler(a);t=this.makeNode(a,t);if(_ViewAbstraction2.default.exists(i)){new _ViewAbstraction2.default(i).addNode(t)}return t}},{key:\"getTiddlersByIds\",value:function e(t){if(Array.isArray(t)){t=_utils2.default.getArrayValuesAsHashmapKeys(t)}else if(t instanceof _vis2.default.DataSet){t=_utils2.default.getLookupTable(t,\"id\")}var i=[];for(var r in t){var a=this.getTiddlerById(r);if(a){i.push(a)}}return i}}]);return e}();var getFAdigits=function e(t){return t.length===4?t:t.substr(3,4)};var addNodeIcon=function e(t,i){if(!i){return}if(i.fa){t.shape=\"icon\";t.icon={shape:\"icon\",face:\"FontAwesome\",color:t.color,code:String.fromCharCode(\"0x\"+getFAdigits(i.fa))};if(t.size){t.icon.size=t.size}return}if(i.tw){var r=_utils2.default.getTiddler(i.tw);if(!r){return}if(r.fields[\"_canonical_uri\"]){t.image=r.fields[\"_canonical_uri\"];t.shape=\"image\"}else if(r.fields.text){t.image=_utils2.default.getDataUri(r);t.shape=\"image\"}}};var removeObsoleteViewData=function e(t,i){if(!_ViewAbstraction2.default.exists(i)||!t){return}i=new _ViewAbstraction2.default(i);var r=i.getNodeData();var a=0;for(var s in r){if(t[s]===undefined&&r[s]!=null){r[s]=undefined;a++}}if(a){$tm.logger(\"debug\",\"[Cleanup]\",\"Removed obsolete node data:\",i.getLabel(),a);i.saveNodeData(r)}};var addStyleToEdge=function e(t,i){t=Object.assign(t,i.style);if(_utils2.default.isTrue(i[\"show-label\"],true)){t.label=i.getLabel()}};var getIcon=function e(t,i){return t&&{fa:t}||i&&{tw:i}};exports.default=Adapter;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Adapter.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/CallbackManager": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/CallbackManager",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||false;l.configurable=true;if(\"value\"in l)l.writable=true;Object.defineProperty(e,l.key,l)}}return function(t,a,l){if(a)e(t.prototype,a);if(l)e(t,l);return t}}();/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/CallbackManager\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}var CallbackManager=function(){function e(){_classCallCheck(this,e);this.callbacks=_utils2.default.makeHashMap();this.logger=$tm.logger;this.wiki=$tw.wiki}_createClass(e,[{key:\"add\",value:function e(t,a){var l=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;this.logger(\"debug\",'A callback was registered for changes of \"'+t+'\"');this.callbacks[t]={execute:a,isDeleteOnCall:l}}},{key:\"remove\",value:function e(t){if(!t){return}if(typeof t===\"string\"){t=[t]}for(var a=t.length;a--;){var l=t[a];if(this.callbacks[l]){this.logger(\"debug\",'Deleting callback for \"'+l+'\"');delete this.callbacks[l]}}}},{key:\"refresh\",value:function e(t){if(this.callbacks.length==0){return}for(var a in t){if(!this.callbacks[a]){continue}if(this.wiki.getTiddler(a)){this.logger(\"debug\",\"Executing a callback for: \"+a);this.callbacks[a].execute(a);if(!this.callbacks.isDeleteOnCall){continue}}this.remove(a)}}}]);return e}();exports.default=CallbackManager;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/CallbackManager.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/startup/caretaker": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/startup/caretaker",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.startup=exports.synchronous=exports.before=exports.after=exports.platforms=exports.name=undefined;var _rebuilders;var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r){if(Object.prototype.hasOwnProperty.call(r,i)){e[i]=r[i]}}}return e};/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/startup/caretaker\ntype: application/javascript\nmodule-type: startup\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _vis=require(\"$:/plugins/felixhayashi/tiddlymap/js/config/vis\");var _vis2=_interopRequireDefault(_vis);var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _Fixer=require(\"$:/plugins/felixhayashi/tiddlymap/js/Fixer\");var _Fixer2=_interopRequireDefault(_Fixer);var _Adapter=require(\"$:/plugins/felixhayashi/tiddlymap/js/Adapter\");var _Adapter2=_interopRequireDefault(_Adapter);var _tracker=require(\"$:/plugins/felixhayashi/tiddlymap/js/services/tracker\");var _tracker2=_interopRequireDefault(_tracker);var _EdgeTypeSubscriberRegistry=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeTypeSubscriberRegistry\");var _EdgeTypeSubscriberRegistry2=_interopRequireDefault(_EdgeTypeSubscriberRegistry);var _DialogManager=require(\"$:/plugins/felixhayashi/tiddlymap/js/DialogManager\");var _DialogManager2=_interopRequireDefault(_DialogManager);var _CallbackManager=require(\"$:/plugins/felixhayashi/tiddlymap/js/CallbackManager\");var _CallbackManager2=_interopRequireDefault(_CallbackManager);var _ViewAbstraction=require(\"$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction\");var _ViewAbstraction2=_interopRequireDefault(_ViewAbstraction);var _EdgeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeType\");var _EdgeType2=_interopRequireDefault(_EdgeType);var _NodeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/NodeType\");var _NodeType2=_interopRequireDefault(_NodeType);var _vis3=require(\"$:/plugins/felixhayashi/vis/vis.js\");var _vis4=_interopRequireDefault(_vis3);var _environment=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/environment\");var env=_interopRequireWildcard(_environment);var _URL=require(\"$:/plugins/felixhayashi/tiddlymap/js/URL\");var _URL2=_interopRequireDefault(_URL);function _interopRequireWildcard(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var r in e){if(Object.prototype.hasOwnProperty.call(e,r))t[r]=e[r]}}t.default=e;return t}}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,r){if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}var init=function e(){window.$tm=_extends({},env,{utils:_utils2.default,url:new _URL2.default(window.location.href)});cleanup();registerPublicClasses($tm);updateGlobals($tm);createMetaFile($tm.logger);var t=attachIndeces($tm);var r=getInitializedServices(t);Object.assign($tm,r);loadDefaultView($tm.config.sys.defaultView);r.fixer.fix();$tm.registry=[];setInterval(routineCheck,5e3);registerChangeListener($tm.callbackManager);registerMousemoveListener();registerClickListener();if($tm.url.query[\"tmap-enlarged\"]){prepareFullscreenStart($tm.url)}$tm.logger(\"warn\",\"TiddlyMap's caretaker successfully started\")};var getInitializedServices=function e(t){var r=new _tracker2.default(d);var i=$tw.modules.applyMethods(\"tmap.edgetypehandler\");var a=new _EdgeTypeSubscriberRegistry2.default(i,t.allETy,r);var s=new _Adapter2.default(r,a);var l=new _CallbackManager2.default;var n=new _DialogManager2.default(l);var d=new _Fixer2.default(s,$tm.logger,t.glNTy);return{edgeTypeSubscriberRegistry:a,tracker:r,adapter:s,callbackManager:l,dialogManager:n,fixer:d}};var registerPublicClasses=function e(t){t.keycharm=_vis4.default.keycharm;t.NodeType=_NodeType2.default;t.EdgeType=_EdgeType2.default;t.ViewAbstraction=_ViewAbstraction2.default};var attachOptions=function e(t){var r=t;if(!r.config)r.config=_utils2.default.makeHashMap();r.config.sys=_utils2.default.merge(r.config.sys,_utils2.default.unflatten($tw.wiki.getTiddlerData(env.ref.sysUserConf)));r.config.vis=_utils2.default.merge({},_vis2.default,_utils2.default.parseFieldData(env.ref.visUserConf));if(!r.field)r.field=_utils2.default.makeHashMap();$tw.utils.extend(r.field,r.config.sys.field)};var attachIndeces=function e(t){$tm.start(\"Attaching Indeces\");t.indeces=t.indeces||{};updateNodeTypesIndeces(t.indeces);updateEdgeTypesIndeces(t.indeces);$tm.stop(\"Attaching Indeces\");return t.indeces};var updateNodeTypesIndeces=function e(t){t=t||$tm.indeces;var r=$tm.path.nodeTypes;var i=t.glNTy=[];var a=t.glNTyById=_utils2.default.makeHashMap();$tw.wiki.eachTiddlerPlusShadows(function(e,t){if(_utils2.default.startsWith(t,r)){var s=_NodeType2.default.getInstance(t);a[s.id]=s;i.push(s)}});i.sort(function(e,t){return e.priority-t.priority})};var updateEdgeTypesIndeces=function e(t){t=t||$tm.indeces;var r=$tm.path.edgeTypes;var i=t.allETy=_utils2.default.makeHashMap();$tw.wiki.eachTiddlerPlusShadows(function(e,t){if(_utils2.default.startsWith(t,r)){var a=_EdgeType2.default.getInstance(t);i[a.id]=a}});if($tm.edgeTypeSubscriberRegistry){$tm.edgeTypeSubscriberRegistry.updateIndex(i)}};var attachFunctions=function e(t){var r=t;var i=function e(){};if(_utils2.default.isTrue($tm.config.sys.debug,false)&&console){r.logger=function(){if(arguments.length<2)return;var e=Array.prototype.slice.call(arguments);var t=e.shift(e);var r=console.hasOwnProperty(t)?t:\"debug\";console[r].apply(console,e)};r.start=function(e){console.time(\"[timer] \"+e)};r.stop=function(e){console.timeEnd(\"[timer] \"+e)}}else{r.logger=r.start=r.stop=i}r.notify=_utils2.default.isTrue($tm.config.sys.notifications)?_utils2.default.notify:i};var routineCheck=function e(){for(var t=$tm.registry.length;t--;){var r=$tm.registry[t];if(!r.destruct||!r.isZombieWidget)return;if(r.isZombieWidget()){$tm.logger(\"warn\",\"a widget will be removed\");$tm.registry.splice(t,1);r.destruct()}}};var dispatchUpdates=function e(t){var r=$tm.registry;for(var i=r.length;i--;){var a=r[i];if(a.update&&a.isZombieWidget&&!a.isZombieWidget()){a.update(t)}}};var checkForClone=function e(t){var r=_utils2.default.getDublicates(t);if(!r.length){return}_utils2.default.setField(t,\"tmap.edges\",undefined);$tm.tracker.assignId(t,true);$tm.dialogManager.open(\"dublicateIdInfo\",{param:{changedTiddler:t.fields.title,filter:_utils2.default.joinAndWrap(r,\"[[\",\"]]\"),id:_utils2.default.getId(t)}})};var updateGlobals=function e(t){attachOptions($tm);attachFunctions($tm);$tm.logger(\"warn\",\"Rebuilt globals\")};var lastCurrentTiddler=null;var updateLiveViewTrigger=function e(t){if(t[\"$:/HistoryList\"]){var r=_utils2.default.getField(\"$:/HistoryList\",\"current-tiddler\")}else if(t[\"$:/temp/focussedTiddler\"]){var r=_utils2.default.getField(\"$:/temp/focussedTiddler\",\"text\")}if(r!=null&&lastCurrentTiddler!==r){lastCurrentTiddler=r;_utils2.default.setField(\"$:/temp/tmap/currentTiddler\",\"text\",r)}};var printChanges=function e(t,r){if(!_utils2.default.isTrue($tm.config.sys.debug,false))return;$tm.logger(\"warn\",\"=== Refresh \"+r+\" ===\");for(var i in t){var a=t[i].deleted?\"[Deleted]\":\"[Modified]\";$tm.logger(\"warn\",a,i,$tw.wiki.getTiddler(i))}};var registerMousemoveListener=function e(){$tm.mouse={};var t=function e(t){$tm.mouse=t};window.addEventListener(\"mousemove\",t,false)};var registerClickListener=function e(){var t=$tm.path.tempPopups;window.addEventListener(\"click\",function(e){var r=_utils2.default.getTiddlersByPrefix(t);for(var i=r.length;i--;){if(_utils2.default.getText(r[i]))break}if(i===-1)return;if(!$tw.utils.hasClass(e.target,\"tc-drop-down\")&&!_utils2.default.getAncestorWithClass(e.target,\"tc-drop-down\")){for(var i=r.length;i--;){_utils2.default.setText(r[i],\"\")}}},false)};var registerChangeListener=function e(t){var r=0;$tw.wiki.addEventListener(\"change\",function(e){$tm.start(\"Caretaker handling changes\");printChanges(e,r++);t.refresh(e);var i={changedTiddlers:{}};for(var a in e){var s=_utils2.default.getTiddler(a);if(s&&s.isDraft()){continue}var l=handleTiddlerChange(a,s,i);if(l){i.changedTiddlers[a]=e[a]}}dispatchUpdates(i);updateLiveViewTrigger(e);$tm.stop(\"Caretaker handling changes\")})};var rebuilders=(_rebuilders={},_defineProperty(_rebuilders,env.path.options,updateGlobals),_defineProperty(_rebuilders,env.path.nodeTypes,updateNodeTypesIndeces),_defineProperty(_rebuilders,env.path.edgeTypes,updateEdgeTypesIndeces),_rebuilders);var handleTiddlerChange=function e(t,r,i){if($tw.wiki.isSystemTiddler(t)){for(var a in rebuilders){if(_utils2.default.startsWith(t,a)&&!i[a]){$tm.logger(\"warn\",\"[System change]\",a);rebuilders[a]();i[a]=true}}}else if(r){if(r.fields.text===undefined){$tw.wiki.dispatchEvent(\"lazyLoad\",t);return false}checkForClone(r);$tm.tracker.assignId(r)}else{var s=$tm.tracker.getIdByTiddler(t);if(!s){return false}var l=_utils2.default.getTiddlerWithField(\"tmap.id\",s);if(l){$tm.logger(\"warn\",\"[Renamed]\",t,\"into\",l)}else{$tm.adapter.deleteNode(s)}}return true};var cleanup=function e(){_utils2.default.deleteByPrefix(\"$:/temp/felixhayashi\");_utils2.default.deleteByPrefix(\"$:/temp/tiddlymap\");_utils2.default.deleteByPrefix(\"$:/temp/tmap\")};var loadDefaultView=function e(t){if(t){_utils2.default.setText(env.ref.defaultViewHolder,$tm.config.sys.defaultView)}};var prepareFullscreenStart=function e(t){var r=env.ref,i=r.mainEditor,a=r.defaultViewHolder;_utils2.default.setSidebarTab(i);if(_ViewAbstraction2.default.exists(t)){t=new _ViewAbstraction2.default(t);_utils2.default.setField(a,\"text\",t.getLabel())}};var createMetaFile=function e(t){if(_utils2.default.tiddlerExists(env.ref.sysMeta)){return}t(\"warn\",\"Creating meta file\");var r=$tw.wiki.getTiddler(env.path.pluginRoot);$tw.wiki.setTiddlerData(env.ref.sysMeta,{originalVersion:r.fields.version,dataStructureState:\"0.6.9\",showWelcomeMessage:true})};var name=exports.name=\"tmap.caretaker\";var platforms=exports.platforms=[\"browser\"];var after=exports.after=[\"startup\"];var before=exports.before=[\"rootwidget\"];var synchronous=exports.synchronous=true;var startup=exports.startup=init;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Caretaker.js.map\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/felixhayashi/tiddlymap/js/DialogManager": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/DialogManager",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||false;l.configurable=true;if(\"value\"in l)l.writable=true;Object.defineProperty(e,l.key,l)}}return function(t,a,l){if(a)e(t.prototype,a);if(l)e(t,l);return t}}();/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/DialogManager\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _CallbackManager=require(\"$:/plugins/felixhayashi/tiddlymap/js/CallbackManager\");var _CallbackManager2=_interopRequireDefault(_CallbackManager);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}var DialogManager=function(){function e(t,a){_classCallCheck(this,e);this.callbackManager=t;this.context=a}_createClass(e,[{key:\"open\",value:function t(a){var l=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var i=arguments[2];if(_utils2.default.isTrue($tm.config.sys.suppressedDialogs[a],false)){$tm.logger(\"warning\",\"Suppressed dialog\",a);return}$tm.logger(\"debug\",\"Dialog param object\",l);if(typeof i===\"function\"&&this.context){i=i.bind(this.context)}var r=$tm.path.tempRoot+\"/dialog-\"+_utils2.default.genUUID();var n=_utils2.default.getTiddler($tm.path.dialogs+\"/\"+a);var u={title:r,buttons:n.fields[\"buttons\"]||\"ok_cancel\",classes:\"tmap-modal-content \"+n.fields[\"classes\"],output:r+\"/output\",result:r+\"/result\",temp:r+\"/temp\",template:n.fields.title,templateId:a,currentTiddler:r+\"/output\",text:_utils2.default.getText($tm.path.dialogs)};_utils2.default.touch(u.output);if(l.dialog){if(l.dialog.preselects){$tw.wiki.addTiddler(new $tw.Tiddler({title:u.output},_utils2.default.flatten(l.dialog.preselects)));delete l.dialog.preselects}_utils2.default.merge(u,l.dialog)}u.footer=_utils2.default.getText($tm.path.footers);u=_utils2.default.flatten(u);l=_utils2.default.flatten(l);var s=function t(a){e.getElement(\"hidden-close-button\").click();var l=$tw.wiki.getTiddler(a);var n=l.fields.text;var s=null;if(n){s=$tw.wiki.getTiddler(u.output)}else{$tm.notify(\"operation cancelled\")}if(typeof i===\"function\"){i(n,s)}_utils2.default.deleteByPrefix(r)};this.callbackManager.add(u.result,s,true);var o=new $tw.Tiddler(n,l,u);$tw.wiki.addTiddler(o);$tm.logger(\"debug\",\"Opening dialog\",o);$tw.rootWidget.dispatchEvent({type:\"tm-modal\",param:o.fields.title,paramObject:o.fields});e.addKeyBindings();return o}}],[{key:\"getElement\",value:function e(t){return _utils2.default.getFirstElementByClassName(\"tmap-\"+t)}},{key:\"addKeyBindings\",value:function t(){var a=$tm.keycharm({container:_utils2.default.getFirstElementByClassName(\"tc-modal\")});var l=/tmap-triggers-(.+?)-on-(.+?)(?:\\s|$)/;var i=document.getElementsByClassName(\"tmap-trigger-field\");var r=function t(r){var n=i[r].className.split(\" \");var u=function t(i){var r=n[i].match(l);if(!r){return\"continue\"}var u=r[1];var s=r[2];var o=e.getElement(u);if(!o){return\"continue\"}a.bind(s,function(){if(document.getElementsByClassName(n[i]).length){o.click()}})};for(var s=n.length;s--;){var o=u(s);if(o===\"continue\")continue}};for(var n=i.length;n--;){r(n)}}}]);return e}();exports.default=DialogManager;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/DialogManager.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/Fixer": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/Fixer",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};var _createClass=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||false;r.configurable=true;if(\"value\"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}return function(t,i,r){if(i)e(t.prototype,i);if(r)e(t,r);return t}}();/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/Fixer\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _ViewAbstraction=require(\"$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction\");var _ViewAbstraction2=_interopRequireDefault(_ViewAbstraction);var _EdgeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeType\");var _EdgeType2=_interopRequireDefault(_EdgeType);var _NodeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/NodeType\");var _NodeType2=_interopRequireDefault(_NodeType);var _environment=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/environment\");var env=_interopRequireWildcard(_environment);function _interopRequireWildcard(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var i in e){if(Object.prototype.hasOwnProperty.call(e,i))t[i]=e[i]}}t.default=e;return t}}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}var Fixer=function(){function e(t,i,r){_classCallCheck(this,e);this.adapter=t;this.logger=i;this.wiki=$tw.wiki;this.glNTy=r}_createClass(e,[{key:\"moveEdges\",value:function e(t,i){var r=_utils2.default.getTiddlersByPrefix(t);for(var a=0;a<r.length;a++){var u=_utils2.default.getBasename(r[a]);if(u===\"__noname__\"){u=\"tmap:unknown\"}u=_EdgeType2.default.getInstance(u);if(!u.exists()){u.save()}var n=this.wiki.getTiddlerData(r[a]);for(var s=0;s<n.length;s++){n[s].type=(i?i+\":\":\"\")+u.id;this.adapter.insertEdge(n[s])}this.wiki.deleteTiddler(r[a])}}},{key:\"executeUpgrade\",value:function e(t,i,r){if(!_utils2.default.isLeftVersionGreater(t,i)){return}this.logger(\"debug\",\"Upgrading data structure to \"+t);var a=r();_utils2.default.setEntry(env.ref.sysMeta,\"dataStructureState\",t);return a}},{key:\"fixId\",value:function e(){var t=this.wiki.getTiddlerData(env.ref.sysMeta,{});this.executeUpgrade(\"0.9.2\",t.dataStructureState,function(){if(_utils2.default.isLeftVersionGreater(\"0.9.2\",t.originalVersion)){var e=\"$:/plugins/felixhayashi/tiddlymap/config/sys/user\";var i=_utils2.default.getEntry(e,\"field.nodeId\",\"tmap.id\");_utils2.default.moveFieldValues(i,\"tmap.id\",true,false)}})}},{key:\"fix\",value:function e(){var t=this;var i=this.wiki.getTiddlerData(env.ref.sysMeta,{});this.logger(\"debug\",\"Fixer is started\");this.logger(\"debug\",\"Data-structure currently in use: \",i.dataStructureState);this.executeUpgrade(\"0.7.0\",i.dataStructureState,function(){t.moveEdges(\"$:/plugins/felixhayashi/tiddlymap/graph/edges\",null);var e=env.selector.allViews;var i=_utils2.default.getMatches(e);for(var r=0;r<i.length;r++){var a=new _ViewAbstraction2.default(i[r]);t.moveEdges(a.getRoot()+\"/graph/edges\",a)}});this.executeUpgrade(\"0.7.32\",i.dataStructureState,function(){if(!_ViewAbstraction2.default.exists(\"Live View\")){return}var e=new _ViewAbstraction2.default(\"Live View\");e.setNodeFilter(\"[field:title{$:/temp/tmap/currentTiddler}]\",true);e.setConfig({\"refresh-trigger\":null,\"refresh-triggers\":$tw.utils.stringifyList([\"$:/temp/tmap/currentTiddler\"])})});this.executeUpgrade(\"0.9.0\",i.dataStructureState,function(){var e=env.ref.visUserConf;var i=_utils2.default.unflatten(t.wiki.getTiddlerData(e,{}));if(_typeof(i.groups)===\"object\"){var r=_NodeType2.default.getInstance(\"tmap:neighbour\");r.setStyle(i.groups[\"neighbours\"]);r.save();delete i.groups;t.wiki.setTiddlerData(e,i)}});this.fixId();this.executeUpgrade(\"0.9.16\",i.dataStructureState,function(){for(var e=t.glNTy.length;e--;){t.glNTy[e].save(null,true)}});this.executeUpgrade(\"0.10.3\",i.dataStructureState,function(){var e=env.ref.liveTab;if(_utils2.default.getTiddler(e).hasTag(\"$:/tags/SideBar\")){this.wiki.deleteTiddler(e);_utils2.default.setField(e,\"tags\",\"$:/tags/SideBar\")}});this.executeUpgrade(\"0.11.0\",i.dataStructureState,function(){var e=_utils2.default.getMatches(env.selector.allViews);for(var t=e.length;t--;){var i=new _ViewAbstraction2.default(e[t]);var r=i.getEdgeTypeFilter(\"raw\");var a=\"edge_type_namespace\";i.setConfig(a,i.getConfig(a));var u=env.filter.defaultEdgeTypeFilter;if(r){var n=env.path.edgeTypes;r=_utils2.default.replaceAll(r,\"\",[n,n+\"/\",\"[prefix[\"+n+\"]]\",\"[prefix[\"+n+\"/]]\",[\"[suffix[tw-body:link]]\",\"[[tw-body:link]]\"],[\"[suffix[tw-list:tags]]\",\"[[tw-list:tags]]\"],[\"[suffix[tw-list:list]]\",\"[[tw-body:list]]\"],[\"[suffix[tmap:unknown]]\",\"[[tmap:unknown]]\"],[\"[suffix[unknown]]\",\"[[tmap:unknown]]\"]]);u=\"-[prefix[_]] \"+r}i.setEdgeTypeFilter(u)}})}}]);return e}();exports.default=Fixer;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Fixer.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/startup/listener": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/startup/listener",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.startup=exports.synchronous=exports.before=exports.after=exports.platforms=exports.name=undefined;var _NodeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/NodeType\");var _NodeType2=_interopRequireDefault(_NodeType);var _EdgeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeType\");var _EdgeType2=_interopRequireDefault(_EdgeType);var _Edge=require(\"$:/plugins/felixhayashi/tiddlymap/js/Edge\");var _Edge2=_interopRequireDefault(_Edge);var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _vis=require(\"$:/plugins/felixhayashi/tiddlymap/js/config/vis\");var _vis2=_interopRequireDefault(_vis);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var handleCancelDialog=function e(t){var a=t.param;_utils2.default.setField(a,\"text\",\"\")};\n/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/startup/listener\ntype: application/javascript\nmodule-type: startup\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var handleClearTiddler=function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},a=t.paramObject;var r=a.title,d=a.keep;if(!r)return;var i=_utils2.default.getTiddler(r);var l=i?i.fields:{};var s=d?d.split():[];var n={title:r,text:\"\"};for(var p=s.length;p--;){var o=s[p];n[o]=l[o]}$tw.wiki.deleteTiddler(r);$tw.wiki.addTiddler(new $tw.Tiddler(n))};var handleMixTiddlers=function e(t){var a=t.paramObject,r=a===undefined?{}:a;var d=r.tiddlers,i=r.output;if(!d||!i)return;var l=$tw.utils.parseStringArray(d);var s=_utils2.default.getMergedTiddlers(l,i);$tw.wiki.addTiddler(s)};var handleConfirmDialog=function e(t){var a=t.param;_utils2.default.setField(a,\"text\",\"1\")};var handleSuppressDialog=function e(t){var a=t.paramObject;var r=a.dialog,d=a.suppress;if(_utils2.default.isTrue(d,false)){_utils2.default.setEntry($tm.ref.sysUserConf,\"suppressedDialogs.\"+r,true)}};var handleDownloadGraph=function e(t){var a=t.paramObject;var r=a.view;var d=$tm.adapter.getGraph({view:r});d.nodes=_utils2.default.convert(d.nodes,\"array\");d.edges=_utils2.default.convert(d.edges,\"array\");var i=\"$:/temp/tmap/export\";_utils2.default.setField(i,\"text\",JSON.stringify(d,null,2));$tw.rootWidget.dispatchEvent({type:\"tm-download-file\",param:i,paramObject:{filename:r+\".json\"}})};var handleConfigureSystem=function e(){var t=_utils2.default.getMatches($tm.selector.allPotentialNodes);var a=$tm.adapter.getEdgesForSet(t);var r=$tw.wiki.getTiddler($tm.path.pluginRoot).fields;var d=$tw.wiki.getTiddlerData($tm.ref.sysMeta);var i=_utils2.default.getTiddler($tm.ref.liveTab).hasTag(\"$:/tags/SideBar\");var l={numberOfNodes:\"\"+t.length,numberOfEdges:\"\"+Object.keys(a).length,pluginVersion:\"v\"+r.version,dataStructureVersion:\"v\"+d.dataStructureState,dialog:{preselects:{liveTab:\"\"+i,\"inherited-style\":JSON.stringify(_vis2.default),\"config.vis\":_utils2.default.getText($tm.ref.visUserConf),\"config.sys\":$tm.config.sys}}};$tm.dialogManager.open(\"globalConfig\",l,function(e,t){if(!e)return;var a=_utils2.default.getPropertiesByPrefix(t.fields,\"config.sys.\",true);$tw.wiki.setTiddlerData($tm.ref.sysUserConf,a);if(_utils2.default.isTrue(t.fields.liveTab,false)){_utils2.default.setField($tm.ref.liveTab,\"tags\",\"$:/tags/SideBar\")}else{$tw.wiki.deleteTiddler($tm.ref.liveTab)}_utils2.default.setField($tm.ref.visUserConf,\"text\",t.fields[\"config.vis\"])})};var handleGenerateWidget=function e(t){var a=t.paramObject,r=a===undefined?{}:a;var d={dialog:{preselects:{\"var.view\":r.view||$tm.misc.defaultViewLabel}}};$tm.dialogManager.open(\"widgetCodeGenerator\",d)};var handleRemoveEdge=function e(t){var a=t.paramObject;$tm.adapter.deleteEdge(a)};var handleCreateEdge=function e(t){var a=t.paramObject;var r=a.from,d=a.to,i=a.force;if(!r||!d)return;if(_utils2.default.tiddlerExists(r)&&_utils2.default.tiddlerExists(d)||i){_utils2.default.addTiddler(d);_utils2.default.addTiddler(r);var l=new _Edge2.default($tm.adapter.makeNode(r).id,$tm.adapter.makeNode(d).id,a.label,a.id);$tm.adapter.insertEdge(l);$tm.notify(\"Edge inserted\")}};var handleOpenTypeManager=function e(t){var a=t.type,r=t.paramObject,d=r===undefined?{}:r;var i=a.match(/tmap:tm-(.*)/)[1];if(i===\"manage-edge-types\"){var l=\"Edge-Type Manager\";var s=$tm.selector.allEdgeTypes;var n=$tm.path.edgeTypes}else{var l=\"Node-Type Manager\";var s=$tm.selector.allNodeTypes;var n=$tm.path.nodeTypes}var p={mode:i,topic:l,searchSelector:s,typeRootPath:n};var o=$tm.dialogManager.open(\"MapElementTypeManager\",p);if(d.type){handleLoadTypeForm({paramObject:{mode:i,id:d.type,output:o.fields[\"output\"]}})}};var handleLoadTypeForm=function e(t){var a=t.paramObject,r=a.mode,d=a.id,i=a.output;var l=i;var s=r===\"manage-edge-types\"?_EdgeType2.default.getInstance(d):_NodeType2.default.getInstance(d);s.save(l,true);if(r===\"manage-edge-types\"){var n=$tm.adapter.selectEdgesByType(s);var p=Object.keys(n).length;_utils2.default.setField(l,\"temp.usageCount\",p)}$tw.wiki.addTiddler(new $tw.Tiddler(_utils2.default.getTiddler(l),{typeTRef:s.fullPath,\"temp.idImmutable\":s.isShipped?\"true\":\"\",\"temp.newId\":s.id,\"inherited-style\":JSON.stringify((r===\"manage-edge-types\"?$tm.config.vis.edges:$tm.config.vis.nodes)||{})}));_utils2.default.deleteByPrefix(\"$:/state/tabs/MapElementTypeManager\")};var handleSaveTypeForm=function e(t){var a=t.paramObject;var r=_utils2.default.getTiddler(a.output);if(!r)return;var d=r.fields.id;var i=a.mode;if(_utils2.default.isTrue(r.fields[\"temp.deleteType\"],false)){deleteType(i,d,r)}else{saveType(i,d,r)}};var deleteType=function e(t,a,r){var d=t===\"manage-edge-types\"?_EdgeType2.default.getInstance(a):_NodeType2.default.getInstance(a);$tm.logger(\"debug\",\"Deleting type\",d);if(t===\"manage-edge-types\"){$tm.adapter._processEdgesWithType(d,{action:\"delete\"})}else{$tm.adapter.removeNodeType(d)}$tw.wiki.addTiddler(new $tw.Tiddler({title:_utils2.default.getTiddlerRef(r)}));$tm.notify(\"Deleted type\")};var saveType=function e(t,a,r){var d=_utils2.default.getTiddler(r);var i=t===\"manage-edge-types\"?_EdgeType2.default:_NodeType2.default;var l=new i(a,d);l.save();var s=d.fields[\"temp.newId\"];if(s&&s!==d.fields[\"id\"]){if(t===\"manage-edge-types\"){$tm.adapter._processEdgesWithType(l,{action:\"rename\",newName:s})}else{new _NodeType2.default(s,l).save();$tw.wiki.deleteTiddler(l.fullPath)}_utils2.default.setField(d,\"id\",s)}$tm.notify(\"Saved type data\")};var handleCreateType=function e(t){var a=t.paramObject,r=a.mode,d=a.id,i=d===undefined?\"New type\":d,l=a.output;var s=r===\"manage-edge-types\"?new _EdgeType2.default(i):new _NodeType2.default(i);s.save();handleLoadTypeForm({paramObject:{id:s.id,mode:r,output:l}})};var name=exports.name=\"tmap.listener\";var platforms=exports.platforms=[\"browser\"];var after=exports.after=[\"rootwidget\",\"tmap.caretaker\"];var before=exports.before=[\"story\"];var synchronous=exports.synchronous=true;var startup=exports.startup=function e(){_utils2.default.addTWlisteners({\"tmap:tm-remove-edge\":handleRemoveEdge,\"tmap:tm-load-type-form\":handleLoadTypeForm,\"tmap:tm-save-type-form\":handleSaveTypeForm,\"tmap:tm-create-type\":handleCreateType,\"tmap:tm-create-edge\":handleCreateEdge,\"tmap:tm-suppress-dialog\":handleSuppressDialog,\"tmap:tm-generate-widget\":handleGenerateWidget,\"tmap:tm-download-graph\":handleDownloadGraph,\"tmap:tm-configure-system\":handleConfigureSystem,\"tmap:tm-manage-edge-types\":handleOpenTypeManager,\"tmap:tm-manage-node-types\":handleOpenTypeManager,\"tmap:tm-cancel-dialog\":handleCancelDialog,\"tmap:tm-clear-tiddler\":handleClearTiddler,\"tmap:tm-merge-tiddlers\":handleMixTiddlers,\"tmap:tm-confirm-dialog\":handleConfirmDialog},$tw.rootWidget,undefined)};\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Listener.js.map\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/felixhayashi/tiddlymap/js/services/tracker": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/services/tracker",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function e(e,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||false;r.configurable=true;if(\"value\"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}return function(t,i,r){if(i)e(t.prototype,i);if(r)e(t,r);return t}}();/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/services/tracker\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}var Tracker=function(){function e(t){_classCallCheck(this,e);this.wiki=$tw.wiki;this.logger=$tm.logger;this._createIndex()}_createClass(e,[{key:\"_createIndex\",value:function e(){var t=this.tById={};var i=this.idByT={};this.wiki.each(function(e,r){if(_utils2.default.isSystemOrDraft(e)){return}var l=e.fields[\"tmap.id\"];if(!l){l=_utils2.default.genUUID();_utils2.default.setField(e,\"tmap.id\",l)}t[l]=r;i[r]=l})}},{key:\"assignId\",value:function e(t,i){var r=_utils2.default.getTiddler(t);if(!r){throw new ResourceNotFoundException(t)}var l=r.fields[\"tmap.id\"];if(!l||i){l=_utils2.default.genUUID();_utils2.default.setField(r,\"tmap.id\",l);this.logger(\"info\",\"Assigning new id to\",r.fields.title)}this.tById[l]=r.fields.title;this.idByT[r.fields.title]=l;return l}},{key:\"getIdByTiddler\",value:function e(t){return this.idByT[_utils2.default.getTiddlerRef(t)]}},{key:\"getIdsByTiddlers\",value:function e(){return this.idByT}},{key:\"getTiddlersByIds\",value:function e(){return this.tById}},{key:\"getTiddlerById\",value:function e(t){return this.tById[t]}}]);return e}();exports.default=Tracker;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/services/Tracker.js.map\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/tiddlymap/js/widget/MapConfigWidget": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/widget/MapConfigWidget",
"text": "\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(e){return typeof e}:function(e){return e&&typeof Symbol===\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/MapConfigWidget\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _vis=require(\"$:/plugins/felixhayashi/vis/vis.js\");var _vis2=_interopRequireDefault(_vis);var _widget=require(\"$:/core/modules/widgets/widget.js\");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function MapConfigWidget(e,t){_widget.widget.call(this);this.initialise(e,t);this.computeAttributes()}MapConfigWidget.prototype=Object.create(_widget.widget.prototype);MapConfigWidget.prototype.render=function(e,t){this.parentDomNode=e;if(!this.domNode){this.domNode=this.document.createElement(\"div\");$tw.utils.addClass(this.domNode,\"tmap-config-widget\");e.insertBefore(this.domNode,t)}if(this.network){this.network.destroy()}this.networkContainer=document.createElement(\"div\");this.domNode.appendChild(this.networkContainer);this.refreshTrigger=this.getAttribute(\"refresh-trigger\");this.pipeTRef=this.getVariable(\"currentTiddler\");this.inheritedFields=$tw.utils.parseStringArray(this.getAttribute(\"inherited\"));this.extensionTField=this.getAttribute(\"extension\");this.mode=this.getAttribute(\"mode\");for(var i=0;i<this.inheritedFields.length;i++){var s=this.inheritedFields[i];var n=_utils2.default.parseFieldData(this.pipeTRef,s,{});if(this.mode===\"manage-edge-types\"){n={edges:n}}else if(this.mode===\"manage-node-types\"){n={nodes:n}}this.inherited=_utils2.default.merge(this.inherited,n)}this.extension=_utils2.default.parseFieldData(this.pipeTRef,this.extensionTField,{});if(this.mode===\"manage-edge-types\"){if(!this.extension.edges){this.extension={edges:this.extension}}}else if(this.mode===\"manage-node-types\"){if(!this.extension.nodes){this.extension={nodes:this.extension}}}var r=_utils2.default.isTrue(this.getAttribute(\"save-only-changes\"));this.changes=r?{}:this.extension;var o={nodes:[],edges:[]};var a=_utils2.default.merge({},this.inherited,this.extension);$tw.utils.extend(a,{configure:{enabled:true,showButton:false,filter:this.getOptionFilter(this.mode)}});this.network=new _vis2.default.Network(this.networkContainer,o,a);this.network.on(\"configChange\",this.handleConfigChange.bind(this));var l=this.parentDomNode.getBoundingClientRect().height;this.parentDomNode.style[\"height\"]=l+\"px\";var h=this.handleResetEvent.bind(this);this.networkContainer.addEventListener(\"reset\",h,false);$tm.registry.push(this);this.enhanceConfigurator()};MapConfigWidget.prototype.handleResetEvent=function(e){var t={};t[e.detail.trigger.path]=null;this.handleConfigChange(t)};MapConfigWidget.prototype.handleConfigChange=function(e){var t=_utils2.default.flatten(this.changes);var i=_utils2.default.flatten(e);var s=Object.keys(_utils2.default.flatten(e))[0];var n=i[s]===null;if(n){t[s]=undefined;this.changes=_utils2.default.unflatten(t)}else{this.changes=_utils2.default.merge(this.changes,e)}var r=_utils2.default.merge({},this.changes);if(this.mode===\"manage-node-types\"){r=r[\"nodes\"]}if(this.mode===\"manage-edge-types\"){r=r[\"edges\"]}_utils2.default.writeFieldData(this.pipeTRef,this.extensionTField,r,$tm.config.sys.jsonIndentation);var o=\"vis-configuration-wrapper\";var a=this.networkContainer.getElementsByClassName(o)[0];a.style.height=a.getBoundingClientRect().height+\"px\";if(n){window.setTimeout(this.refresh.bind(this),0)}else{window.setTimeout(this.enhanceConfigurator.bind(this),50)}};MapConfigWidget.prototype.enhanceConfigurator=function(){var e=\"vis-configuration-wrapper\";var t=this.networkContainer.getElementsByClassName(e)[0].children;var i=[];var s=_utils2.default.flatten(this.changes);for(var n=0;n<t.length;n++){if(!t[n].classList.contains(\"vis-config-item\"))continue;var r=new VisConfElement(t[n],i,n);i.push(r);if(r.level===0)continue;r.setActive(!!s[r.path])}};function VisConfElement(e,t,i){var s=\"getElementsByClassName\";this.el=e;this.labelEl=e[s](\"vis-config-label\")[0]||e[s](\"vis-config-header\")[0]||e;var n=this.labelEl.innerText||this.labelEl.textContent;this.label=n&&n.match(/([a-zA-Z0-9]+)/)[1];this.level=parseInt(e.className.match(/.*vis-config-s(.).*/)[1])||0;this.path=this.label;if(this.level>0){for(var r=i;r--;){var o=t[r];if(o.level<this.level){this.path=o.path+\".\"+this.path;break}}}}VisConfElement.prototype.setActive=function(e){if(!e)return;var t=\"tmap-vis-config-item-\"+(e?\"active\":\"inactive\");$tw.utils.addClass(this.el,t);if(e){var i=document.createElement(\"button\");i.innerHTML=\"reset\";i.className=\"tmap-config-item-reset\";var s=this;i.addEventListener(\"click\",function(e){e.currentTarget.dispatchEvent(new CustomEvent(\"reset\",{detail:{trigger:s},bubbles:true,cancelable:true}))},false);this.el.appendChild(i)}};MapConfigWidget.prototype.getOptionFilter=function(e){var t={nodes:{borderWidth:true,borderWidthSelected:true,color:{background:true,border:true},font:{color:true,size:true},icon:true,labelHighlightBold:false,shadow:true,shape:true,shapeProperties:{borderDashes:true},size:true},edges:{arrows:true,color:true,dashes:true,font:true,labelHighlightBold:false,length:true,selfReferenceSize:false,shadow:true,smooth:true,width:true},interaction:{hideEdgesOnDrag:true,hideNodesOnDrag:true,tooltipDelay:true},layout:{hierarchical:true},manipulation:{initiallyActive:true},physics:{forceAtlas2Based:{gravitationalConstant:true,springLength:true,springConstant:true,damping:true,centralGravity:true}}};if(e===\"manage-edge-types\"){t={edges:t.edges}}else if(e===\"manage-node-types\"){t={nodes:t.nodes}}else{t.edges.arrows=false}return function(e,i){i=i.concat([e]);var s=t;for(var n=0,r=i.length;n<r;n++){if(s[i[n]]===true){return true}else if(s[i[n]]==null){return false}s=s[i[n]]}return false}};MapConfigWidget.prototype.isZombieWidget=function(){return!document.body.contains(this.parentDomNode)};MapConfigWidget.prototype.destruct=function(){if(this.network){this.network.destroy()}};MapConfigWidget.prototype.refresh=function(e){if(this.isZombieWidget()||!this.network)return;if(!e||e[this.refreshTrigger]){this.refreshSelf();return true}};MapConfigWidget.prototype.setNull=function(e){for(var t in e){if(_typeof(e[t])==\"object\"){this.setNull(e[t])}else{e[t]=undefined}}};exports[\"tmap-config\"]=MapConfigWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/ConfigurationWidget.js.map\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidgetItem": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidgetItem",
"text": "\"use strict\";var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(t,r,i){if(r)e(t.prototype,r);if(i)e(t,i);return t}}();var _widget=require(\"$:/core/modules/widgets/widget.js\");var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidgetItem\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var EdgeListItemWidget=function(e){_inherits(t,e);function t(e,r){_classCallCheck(this,t);var i=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r));i.arrows=$tm.misc.arrows;return i}_createClass(t,[{key:\"execute\",value:function e(){var t=this.parseTreeNode;var r=$tm.tracker.getTiddlerById(t.neighbour.id);var i=_utils2.default.flatten(t.edge);for(var o in i){if(typeof i[o]===\"string\"){this.setVariable(\"edge.\"+o,i[o])}}this.setVariable(\"currentTiddler\",r);this.setVariable(\"neighbour\",r);var n=$tm.indeces.allETy[i.type];var s=i.to===t.neighbour.id?\"to\":\"from\";var a=s;if(n.biArrow){a=\"bi\"}else{if(s===\"to\"&&n.invertedArrow){a=\"from\"}else if(s===\"from\"&&n.invertedArrow){a=\"to\"}}this.setVariable(\"direction\",a);this.setVariable(\"directionSymbol\",a===\"bi\"?this.arrows.bi:a===\"from\"?this.arrows.in:this.arrows.out);this.makeChildWidgets()}},{key:\"refresh\",value:function e(t){return this.refreshChildren(t)}}]);return t}(_widget.widget);exports[\"tmap-edgelistitem\"]=EdgeListItemWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/EdgeListItemWidget.js.map\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidget": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidget",
"text": "\"use strict\";var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}return function(t,r,i){if(r)e(t.prototype,r);if(i)e(t,i);return t}}();var _widget=require(\"$:/core/modules/widgets/widget.js\");var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/EdgeListWidget\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var EdgeListWidget=function(e){_inherits(t,e);function t(e,r){_classCallCheck(this,t);return _possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r))}_createClass(t,[{key:\"render\",value:function e(t,r){this.parentDomNode=t;this.computeAttributes();this.execute();this.renderChildren(t,r)}},{key:\"execute\",value:function e(){var t=[this.getVariable(\"currentTiddler\")];var r=this.getAttribute(\"filter\",\"\");var i=this.getAttribute(\"direction\",\"both\");var s=$tm.indeces.allETy;var n=_utils2.default.getEdgeTypeMatches(r,s);var u={typeWL:_utils2.default.getLookupTable(n),direction:i};var o=$tm.adapter.getNeighbours(t,u),a=o.nodes,l=o.edges;var f=[];for(var c in l){var h=l[c];var p=a[h.to]||a[h.from];if(!p){continue}f.push({type:\"tmap-edgelistitem\",edge:h,typeWL:u.typeWL,neighbour:p,children:this.parseTreeNode.children})}if(!f.length){this.wasEmpty=true;f=this.getEmptyMessage()}else if(this.wasEmpty){this.removeChildDomNodes()}this.makeChildWidgets(f)}},{key:\"getEmptyMessage\",value:function e(){var t=this.wiki.parseText(\"text/vnd.tiddlywiki\",this.getAttribute(\"emptyMessage\",\"\"),{parseAsInline:true});return t?t.tree:[]}},{key:\"refresh\",value:function e(t){var r=this.computeAttributes();if(_utils2.default.hasElements(r)){this.refreshSelf();return true}for(var i in t){if(!_utils2.default.isSystemOrDraft(i)){this.refreshSelf();return true}}return this.refreshChildren(t)}}]);return t}(_widget.widget);exports[\"tmap-connections\"]=EdgeListWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/EdgeListWidget.js.map\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/felixhayashi/tiddlymap/js/widget/MapWidget": {
"title": "$:/plugins/felixhayashi/tiddlymap/js/widget/MapWidget",
"text": "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.tiddlymap=exports.tmap=undefined;var _extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var a in i){if(Object.prototype.hasOwnProperty.call(i,a)){e[a]=i[a]}}}return e};var _createClass=function(){function e(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||false;a.configurable=true;if(\"value\"in a)a.writable=true;Object.defineProperty(e,a.key,a)}}return function(t,i,a){if(i)e(t.prototype,i);if(a)e(t,a);return t}}();var _CallbackManager=require(\"$:/plugins/felixhayashi/tiddlymap/js/CallbackManager\");var _CallbackManager2=_interopRequireDefault(_CallbackManager);var _ViewAbstraction=require(\"$:/plugins/felixhayashi/tiddlymap/js/ViewAbstraction\");var _ViewAbstraction2=_interopRequireDefault(_ViewAbstraction);var _EdgeType=require(\"$:/plugins/felixhayashi/tiddlymap/js/EdgeType\");var _EdgeType2=_interopRequireDefault(_EdgeType);var _Popup=require(\"$:/plugins/felixhayashi/tiddlymap/js/Popup\");var _Popup2=_interopRequireDefault(_Popup);var _vis=require(\"$:/plugins/felixhayashi/vis/vis.js\");var _vis2=_interopRequireDefault(_vis);var _widget=require(\"$:/core/modules/widgets/widget.js\");var _utils=require(\"$:/plugins/felixhayashi/tiddlymap/js/utils\");var _utils2=_interopRequireDefault(_utils);var _SelectionRectangle=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/SelectionRectangle\");var _SelectionRectangle2=_interopRequireDefault(_SelectionRectangle);var _environment=require(\"$:/plugins/felixhayashi/tiddlymap/js/lib/environment\");var env=_interopRequireWildcard(_environment);function _interopRequireWildcard(e){if(e&&e.__esModule){return e}else{var t={};if(e!=null){for(var i in e){if(Object.prototype.hasOwnProperty.call(e,i))t[i]=e[i]}}t.default=e;return t}}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,i){if(t in e){Object.defineProperty(e,t,{value:i,enumerable:true,configurable:true,writable:true})}else{e[t]=i}return e}function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t<e.length;t++){i[t]=e[t]}return i}else{return Array.from(e)}}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _possibleConstructorReturn(e,t){if(!e){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return t&&(typeof t===\"object\"||typeof t===\"function\")?t:e}function _inherits(e,t){if(typeof t!==\"function\"&&t!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t}/* @preserve TW-Guard */\n/*\\\n\ntitle: $:/plugins/felixhayashi/tiddlymap/js/widget/MapWidget\ntype: application/javascript\nmodule-type: widget\n\n@preserve\n\n\\*/\n/* @preserve TW-Guard */var MapWidget=function(e){_inherits(t,e);function t(e,i){_classCallCheck(this,t);var a=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i));a.getAttr=a.getAttribute;a.isDebug=_utils2.default.isTrue($tm.config.sys.debug,false);_utils2.default.bindTo(a,[\"constructTooltip\",\"handleResizeEvent\",\"handleClickEvent\",\"handleCanvasKeyup\",\"handleCanvasKeydown\",\"handleCanvasScroll\",\"handleCanvasMouseMove\",\"handleWidgetKeyup\",\"handleWidgetKeydown\",\"handleTriggeredRefresh\",\"handleContextMenu\"]);a.callbackManager=new _CallbackManager2.default;a.computeAttributes();a.editorMode=a.getAttr(\"editor\");a.clickToUse=_utils2.default.isTrue(a.getAttr(\"click-to-use\"),false);a.id=a.getAttr(\"object-id\")||a.getStateQualifier();a.widgetPopupsPath=$tm.path.tempPopups+\"/\"+a.id;if(a.editorMode){_utils2.default.addTWlisteners({\"tmap:tm-create-view\":a.handleCreateView,\"tmap:tm-rename-view\":a.handleRenameView,\"tmap:tm-delete-view\":a.handleDeleteView,\"tmap:tm-delete-element\":a.handleDeleteElement,\"tmap:tm-edit-view\":a.handleEditView,\"tmap:tm-generate-widget\":a.handleGenerateWidget,\"tmap:tm-toggle-central-topic\":a.handleSetCentralTopic,\"tmap:tm-save-canvas\":a.handleSaveCanvas},a,a)}_utils2.default.addTWlisteners({\"tmap:tm-focus-node\":a.handleFocusNode,\"tmap:tm-reset-focus\":a.repaintGraph,\"tmap:tm-neighbourhood-reset-trace\":function e(){a.initAndRenderGraph(a.graphDomNode)}},a,a);a.visListeners={click:a.handleVisSingleClickEvent,doubleClick:a.handleVisDoubleClickEvent,stabilized:a.handleVisStabilizedEvent,selectNode:a.handleVisSelectNode,deselectNode:a.handleVisDeselectNode,dragStart:a.handleVisDragStart,dragEnd:a.handleVisDragEnd,hoverNode:a.handleVisHoverElement,hoverEdge:a.handleVisHoverElement,blurNode:a.handleVisBlurElement,blurEdge:a.handleVisBlurElement,beforeDrawing:a.handleVisBeforeDrawing,afterDrawing:a.handleVisAfterDrawing,stabilizationProgress:a.handleVisLoading,stabilizationIterationsDone:a.handleVisLoadingDone};a.windowDomListeners={resize:[a.handleResizeEvent,false],click:[a.handleClickEvent,false],mousemove:[a.handleCanvasMouseMove,true]};a.canvasDomListeners={keyup:[a.handleCanvasKeyup,true],keydown:[a.handleCanvasKeydown,true],mousewheel:[a.handleCanvasScroll,true],DOMMouseScroll:[a.handleCanvasScroll,true],contextmenu:[a.handleContextMenu,true],MozMousePixelScroll:[a.handleExtraCanvasScroll,true]};a.widgetDomListeners={keyup:[a.handleWidgetKeyup,true],keydown:[a.handleWidgetKeydown,true]};a.conVector={from:null,to:null};return a}_createClass(t,[{key:\"handleConnectionEvent\",value:function e(t,i){var a=this;var s=this.view.getEdgeTypeFilter();var r={fromLabel:$tm.adapter.selectNodeById(t.from).label,toLabel:$tm.adapter.selectNodeById(t.to).label,view:this.view.getLabel(),eTyFilter:s.raw};$tm.dialogManager.open(\"getEdgeType\",r,function(e,r){if(e){var n=_utils2.default.getText(r);var o=_EdgeType2.default.getInstance(n);if(!o.namespace){var l=_EdgeType2.default.getIdParts(o.id),d=l.marker,u=l.name;var h=a.view.getConfig(\"edge_type_namespace\");o=_EdgeType2.default.getInstance(_EdgeType2.default.getId(d,h,u))}if(!o.exists()){o.save()}t.type=o.id;$tm.adapter.insertEdge(t);a.isPreventZoomOnNextUpdate=true;if(!a.view.isEdgeTypeVisible(o)){$tm.dialogManager.open(\"edgeNotVisible\",{type:o.id,view:a.view.getLabel(),eTyFilter:s.pretty})}}if(typeof i===\"function\"){i(e)}})}},{key:\"checkForFreshInstall\",value:function e(){if(!_utils2.default.getEntry($tm.ref.sysMeta,\"showWelcomeMessage\",true)){return}_utils2.default.setEntry($tm.ref.sysMeta,\"showWelcomeMessage\",false);var t={dialog:{preselects:{\"config.storyview\":\"true\",\"config.navigation\":\"true\",\"config.sidebar\":\"true\",\"config.demo\":\"true\"}}};$tm.dialogManager.open(\"welcome\",t,function(e,t){var i=_utils2.default.getPropertiesByPrefix(t.fields,\"config.\",true);if(i[\"storyview\"]&&_utils2.default.tiddlerExists(\"$:/plugins/felixhayashi/topstoryview\")){_utils2.default.setText(\"$:/view\",\"top\")}if(i[\"navigation\"]){_utils2.default.setText(\"$:/config/Navigation/openLinkFromInsideRiver\",\"above\");_utils2.default.setText(\"$:/config/Navigation/openLinkFromOutsideRiver\",\"top\")}if(i[\"sidebar\"]){_utils2.default.setText(\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\",\"fixed-fluid\")}if(i[\"demo\"]){var a=$tm.misc.defaultViewLabel;var s=$tm.adapter.insertNode({label:\"Have fun with\",x:0,y:0},a);var r=$tm.adapter.insertNode({label:\"TiddlyMap!!\",x:100,y:100},a);$tm.adapter.insertEdge({from:s.id,to:r.id})}if(Object.keys(i).length){_utils2.default.touch(\"$:/plugins/felixhayashi/tiddlymap\")}})}},{key:\"openStandardConfirmDialog\",value:function e(t,i){var a={message:i};$tm.dialogManager.open(\"getConfirmation\",a,t)}},{key:\"logger\",value:function e(t,i){if(this.isDebug){var a=Array.prototype.slice.call(arguments,1);a.unshift(\"@\"+this.id);a.unshift(t);$tm.logger.apply(this,a)}}},{key:\"render\",value:function e(t,i){this.parentDomNode=t;this.domNode=this.document.createElement(\"div\");t.insertBefore(this.domNode,i);this.registerClassNames(this.domNode);this.viewHolderRef=this.getViewHolderRef();this.view=this.getView();this.graphBarDomNode=this.document.createElement(\"div\");$tw.utils.addClass(this.graphBarDomNode,\"tmap-topbar\");this.domNode.appendChild(this.graphBarDomNode);this.graphDomNode=this.document.createElement(\"div\");this.domNode.appendChild(this.graphDomNode);$tw.utils.addClass(this.graphDomNode,\"tmap-vis-graph\");if(_utils2.default.isPreviewed(this)){$tw.utils.addClass(this.domNode,\"tmap-static-mode\");this.renderPreview(this.graphBarDomNode,this.graphDomNode)}else{this.renderFullWidget(this.domNode,this.graphBarDomNode,this.graphDomNode)}}},{key:\"renderPreview\",value:function e(t,i){var a=this.view.getRoot()+\"/snapshot\";var s=_utils2.default.getTiddler(a);var r=this.document.createElement(\"span\");r.innerHTML=this.view.getLabel();r.className=\"tmap-view-label\";t.appendChild(r);if(s){var n=this.makeChildWidget(_utils2.default.getTranscludeNode(a),true);n.renderChildren(i,null)}else{$tw.utils.addClass(i,\"tmap-graph-placeholder\")}}},{key:\"renderFullWidget\",value:function e(t,i,a){_utils2.default.setDomListeners(\"add\",window,this.windowDomListeners);_utils2.default.setDomListeners(\"add\",t,this.widgetDomListeners);this.addLoadingBar(this.domNode);this.tooltip=new _Popup2.default(this.domNode,{className:\"tmap-tooltip\",showDelay:$tm.config.sys.popups.delay});this.contextMenu=new _Popup2.default(this.domNode,{className:\"tmap-context-menu\",showDelay:0,hideOnClick:true,leavingDelay:999999});this.sidebar=_utils2.default.getFirstElementByClassName(\"tc-sidebar-scrollable\");this.isInSidebar=this.sidebar&&!this.domNode.isTiddlyWikiFakeDom&&this.sidebar.contains(this.domNode);this.rebuildEditorBar(i);this.reloadRefreshTriggers();this.initAndRenderGraph(a);$tm.registry.push(this);this.checkForFreshInstall();if(this.id===$tm.misc.mainEditorId){var s=$tm.url;if(s&&s.query[\"tmap-enlarged\"]){this.toggleEnlargedMode(s.query[\"tmap-enlarged\"]);this.setView(s.query[\"tmap-view\"])}}}},{key:\"registerClassNames\",value:function e(t){var i=$tw.utils.addClass;i(t,\"tmap-widget\");if(this.clickToUse){i(t,\"tmap-click-to-use\")}if(this.getAttr(\"editor\")===\"advanced\"){i(t,\"tmap-advanced-editor\")}if(this.getAttr(\"design\")===\"plain\"){i(t,\"tmap-plain-design\")}if(!_utils2.default.isTrue(this.getAttr(\"show-buttons\"),true)){i(t,\"tmap-no-buttons\")}if(this.getAttr(\"class\")){i(t,this.getAttr(\"class\"))}}},{key:\"addLoadingBar\",value:function e(t){this.graphLoadingBarDomNode=this.document.createElement(\"progress\");$tw.utils.addClass(this.graphLoadingBarDomNode,\"tmap-loading-bar\");t.appendChild(this.graphLoadingBarDomNode)}},{key:\"rebuildEditorBar\",value:function e(){this.removeChildDomNodes();var t=this.view;var i=\"tmap-unicode-button\";var a=i+\" tmap-active-button\";var s={widgetQualifier:this.getStateQualifier(),widgetTempPath:this.widgetTempPath,widgetPopupsPath:this.widgetPopupsPath,isViewBound:String(this.isViewBound()),viewRoot:t.getRoot(),viewLabel:t.getLabel(),viewHolder:this.getViewHolderRef(),edgeTypeFilter:t.edgeTypeFilterTRef,allEdgesFilter:$tm.selector.allEdgeTypes,isShowNeighbourhood:String(t.isEnabled(\"neighbourhood_scope\")),tracingBtnClass:t.isEnabled(\"neighbourhood_trace_clicks\")?a:i,neighScopeBtnClass:t.isEnabled(\"neighbourhood_scope\")?a:i,rasterMenuBtnClass:t.isEnabled(\"raster\")?a:i};for(var r in s){this.setVariable(r,s[r])}var n=_utils2.default.getTiddlerNode(t.getRoot());if(this.editorMode===\"advanced\"){n.children.push(_utils2.default.getTranscludeNode($tm.ref.graphBar))}else{var o=_utils2.default.getElementNode(\"span\",\"tmap-view-label\",t.getLabel());n.children.push(o)}n.children.push(_utils2.default.getTranscludeNode($tm.ref.focusButton));this.makeChildWidgets([n]);this.renderChildren(this.graphBarDomNode,this.graphBarDomNode.firstChild)}},{key:\"refresh\",value:function e(t){return false}},{key:\"update\",value:function e(t){if(!this.network||this.isZombieWidget()||_utils2.default.isPreviewed(this)){return}var i=t.changedTiddlers;this.callbackManager.refresh(i);if(this.isViewSwitched(i)||this.hasChangedAttributes()||t[env.path.options]||i[this.view.getRoot()]){this.logger(\"warn\",\"View switched or config changed\");this.isPreventZoomOnNextUpdate=false;this.view=this.getView(true);this.reloadRefreshTriggers();this.trace=_utils2.default.makeHashMap();this.rebuildEditorBar();this.reloadBackgroundImage();this.initAndRenderGraph(this.graphDomNode)}else{var a=this.view.update(t);if(a){this.logger(\"warn\",\"View components modified\");this.rebuildGraph({resetFocus:{delay:1e3,duration:1e3}})}else{if(t[env.path.nodeTypes]||this.hasChangedElements(i)){this.rebuildGraph()}this.refreshChildren(i)}}}},{key:\"hidePopups\",value:function e(t,i){this.tooltip.hide(t,i);this.contextMenu.hide(0,true)}},{key:\"reloadRefreshTriggers\",value:function e(){this.callbackManager.remove(this.refreshTriggers);var t=this.getAttr(\"refresh-triggers\")||this.view.getConfig(\"refresh-triggers\");this.refreshTriggers=$tw.utils.parseStringArray(t)||[];this.logger(\"debug\",\"Registering refresh trigger\",this.refreshTriggers);for(var i=this.refreshTriggers.length;i--;){this.callbackManager.add(this.refreshTriggers[i],this.handleTriggeredRefresh,false)}}},{key:\"rebuildGraph\",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},i=t.resetFocus;if(_utils2.default.isPreviewed(this)){return}this.logger(\"debug\",\"Rebuilding graph\");this.hidePopups(0,true);this.hasNetworkStabilized=false;var a=this.rebuildGraphData();if(a.changedNodes.withoutPosition.length){i=i||{delay:1e3,duration:1e3};if(!this.view.isEnabled(\"physics_mode\")){var s=this.visOptions.physics;s[s.solver].centralGravity=.25;this.network.setOptions(this.visOptions)}}if(!_utils2.default.hasElements(this.graphData.nodesById)){return}if(i){var r=this.isPreventZoomOnNextUpdate==null?false:typeof this.isPreventZoomOnNextUpdate===\"number\"?this.isPreventZoomOnNextUpdate>Date.now():this.isPreventZoomOnNextUpdate;if(!r){this.network.stabilize();this.resetFocus=i}if(typeof this.isPreventZoomOnNextUpdate!==\"number\"){this.isPreventZoomOnNextUpdate=false}}}},{key:\"getContainer\",value:function e(){return this.domNode}},{key:\"rebuildGraphData\",value:function e(){var t=this;$tm.start(\"Reloading Network\");var i={view:this.view};if(this.view.isEnabled(\"neighbourhood_trace_clicks\")){var a=_utils2.default.getMatches(this.view.getNodeFilter(\"compiled\"));var s=Object.keys(this.trace);var r=[].concat(_toConsumableArray(a.filter(function(e){return!t.trace[e]})),_toConsumableArray(s));i.matches=r;i.includeNeighboursOf=this.view.isEnabled(\"neighbourhood_include_traced_node_neighbours\")?function(e){return r.includes(e)}:function(e){return a.includes(e)}}var n=$tm.adapter.getGraph(i);var o=_utils2.default.refreshDataSet(this.graphData.nodes,n.nodes);var l=_utils2.default.refreshDataSet(this.graphData.edges,n.edges);this.graphData.nodesById=n.nodes;this.graphData.edgesById=n.edges;_utils2.default.setField(\"$:/temp/tmap/nodes/\"+this.view.getLabel(),\"list\",$tm.adapter.getTiddlersByIds(n.nodes));$tm.stop(\"Reloading Network\");return{changedEdges:l,changedNodes:o}}},{key:\"isViewBound\",value:function e(){return _utils2.default.startsWith(this.getViewHolderRef(),$tm.path.localHolders)}},{key:\"isViewSwitched\",value:function e(t){return!_ViewAbstraction2.default.exists(this.view)||t[this.getViewHolderRef()]}},{key:\"hasChangedAttributes\",value:function e(){return Object.keys(this.computeAttributes()).length}},{key:\"hasChangedElements\",value:function e(t){var i=[];var a=this.graphData.nodesById;var s=this.view.isEnabled(\"neighbourhood_scope\");for(var r in t){if(_utils2.default.isSystemOrDraft(r)){continue}if(a[$tm.adapter.getId(r)]||s){return true}if(t[r].modified){i.push(r)}}if(i.length){var n=this.view.getNodeFilter(\"compiled\");var o=_utils2.default.getMatches(n,i);return!!o.length}}},{key:\"initAndRenderGraph\",value:function e(t){var i=this;if(this.network){this._destructVis()}this.logger(\"info\",\"Initializing and rendering the graph\");if(!this.isInSidebar){this.callbackManager.add(\"$:/state/sidebar\",this.handleResizeEvent)}this.visOptions=this.getVisOptions();this.graphData={nodes:new _vis2.default.DataSet,edges:new _vis2.default.DataSet,nodesById:_utils2.default.makeHashMap(),edgesById:_utils2.default.makeHashMap()};this.tooltip.setEnabled(_utils2.default.isTrue($tm.config.sys.popups.enabled,true));this.trace=_utils2.default.makeHashMap();this.network=new _vis2.default.Network(t,this.graphData,this.visOptions);this.canvas=t.getElementsByTagName(\"canvas\")[0];this.networkDomNode=_utils2.default.getFirstElementByClassName(\"vis-network\",t,true);this.canvas.tabIndex=0;for(var a in this.visListeners){this.network.on(a,this.visListeners[a].bind(this))}this.addGraphButtons({\"fullscreen-button\":function e(){i.toggleEnlargedMode(\"fullscreen\")},\"halfscreen-button\":function e(){i.toggleEnlargedMode(\"halfscreen\")}});_utils2.default.setDomListeners(\"add\",this.canvas,this.canvasDomListeners);this.reloadBackgroundImage();this.rebuildGraph({resetFocus:{delay:0,duration:0}});this.handleResizeEvent();this.canvas.focus();if(this.view.isLiveView()&&this.view.isEnabled(\"neighbourhood_trace_clicks\")){this.trace[_utils2.default.getText(this.refreshTriggers[0])]=true}}},{key:\"handleCanvasKeyup\",value:function e(t){var i=this;var a=this.network.getSelectedNodes();if(t.ctrlKey){t.preventDefault();if(t.keyCode===88){if(this.editorMode){this.handleAddNodesToClipboard(\"move\")}else{$tm.notify(\"Map is read only!\")}}else if(t.keyCode===67){this.handleAddNodesToClipboard(\"copy\")}else if(t.keyCode===86){this.handlePasteNodesFromClipboard()}else if(t.keyCode===65){var s=Object.keys(this.graphData.nodesById);this.network.selectNodes(s)}else if(t.keyCode===49||t.keyCode===50){if(a.length!==1)return;var r=t.keyCode===49?\"from\":\"to\";$tm.notify(_utils2.default.ucFirst(r)+\"-part selected\");this.conVector[r]=a[0];if(this.conVector.from&&this.conVector.to){this.handleConnectionEvent(this.conVector,function(){i.conVector={from:null,to:null}})}}}else{if(t.keyCode===13){if(a.length!==1)return;this.openTiddlerWithId(a[0])}}}},{key:\"handleCanvasKeydown\",value:function e(t){if(t.altKey||t.metaKey){t.preventDefault();if(t.keyCode>=48&&t.keyCode<=57){var i=String.fromCharCode(t.keyCode);this.view.setConfig(\"neighbourhood_scope\",i)}}else{if(t.keyCode===46){t.preventDefault();this.handleRemoveElements(this.network.getSelection())}}}},{key:\"handleDeleteElement\",value:function e(t){var i=t.paramObject.id;var a=i?[i]:this.network.getSelectedNodes();this.handleRemoveElements({nodes:a})}},{key:\"handleCanvasMouseMove\",value:function e(t){var i=this.network;if(!(t.ctrlKey&&t.buttons)){if(this.selectRect){this.selectRect=null;var a=i.getSelectedNodes();$tm.notify(a.length+\" nodes selected\");i.redraw()}return}t.preventDefault();t.stopPropagation();if(!this.domNode.contains(t.target)){return}var s=i.DOMtoCanvas({x:t.offsetX,y:t.offsetY});if(!this.selectRect){this.selectRect=new _SelectionRectangle2.default(s.x,s.y)}this.selectRect.span(s.x,s.y);var r=i.getPositions();var n=i.getSelectedNodes();for(var o in r){if(this.selectRect.isPointWithin(r[o])&&!_utils2.default.inArray(o,n)){n.push(o)}}i.selectNodes(n);this.assignActiveStyle(n);i.redraw()}},{key:\"handleCanvasScroll\",value:function e(t){var i=!!(this.isInSidebar||t.ctrlKey||this.enlargedMode||this.clickToUse&&this.networkDomNode.classList.contains(\"vis-active\"));var a=this.visOptions.interaction;var s=i===a.zoomView;if(i||!s){t.preventDefault()}if(!s){t.stopPropagation();a.zoomView=i;this.network.setOptions({interaction:{zoomView:i}});return false}}},{key:\"handleExtraCanvasScroll\",value:function e(t){t.preventDefault()}},{key:\"handleContextMenu\",value:function e(t){var i=this;t.preventDefault();var a=this.network;this.hidePopups(0,true);var s=a.getNodeAt({x:t.offsetX,y:t.offsetY});if(!s)return;var r=a.getSelectedNodes();if(!_utils2.default.inArray(s,r)){r=[s];a.selectNodes(r)}this.contextMenu.show(r,function(e,t){var a=e.length>1?\"multi\":\"single\";var s=\"$:/plugins/felixhayashi/tiddlymap/editor/contextMenu/node\";_utils2.default.registerTransclude(i,\"contextMenuWidget\",s);i.contextMenuWidget.setVariable(\"mode\",a);i.contextMenuWidget.render(t)})}},{key:\"handleWidgetKeyup\",value:function e(t){}},{key:\"handleWidgetKeydown\",value:function e(t){if(t.ctrlKey){t.preventDefault();if(t.keyCode===70){t.preventDefault();var i=this.widgetPopupsPath+\"/focus\";_utils2.default.setText(i,_utils2.default.getText(i)?\"\":\"1\")}else{return}}else if(t.keyCode===120){t.preventDefault();this.toggleEnlargedMode(\"halfscreen\")}else if(t.keyCode===121){t.preventDefault();this.toggleEnlargedMode(\"fullscreen\")}else if(t.keyCode===27){t.preventDefault();_utils2.default.deleteByPrefix(this.widgetPopupsPath)}else{return}this.canvas.focus()}},{key:\"handlePasteNodesFromClipboard\",value:function e(){if(!this.editorMode){$tm.notify(\"Map is read only!\");return}if(!$tm.clipBoard||$tm.clipBoard.type!==\"nodes\"){$tm.notify(\"TiddlyMap clipboad is empty!\")}var t=$tm.clipBoard.nodes;var i=Object.keys(t);for(var a=i.length;a--;){var s=i[a];if(this.graphData.nodesById[s]){continue}this.view.addNode(t[s]);this.graphData.nodes.update({id:s})}this.network.selectNodes(i);this.rebuildGraph({resetFocus:{delay:0,duration:0}});$tm.notify(\"pasted \"+i.length+\" nodes into map.\")}},{key:\"handleAddNodesToClipboard\",value:function e(t){var i=this.network.getSelectedNodes();if(!i.length){return}$tm.clipBoard={type:\"nodes\",nodes:this.graphData.nodes.get(i,{returnType:\"Object\"})};$tm.notify(\"Copied \"+i.length+\" nodes to clipboard\");if(t===\"move\"){for(var a=i.length;a--;){this.view.removeNode(i[a])}}this.isPreventZoomOnNextUpdate=true}},{key:\"getVisOptions\",value:function e(){var t=this;var i=$tm.config.vis;var a=_utils2.default.parseJSON(this.view.getConfig(\"vis\"))||{};var s=a.layout||{},r=s.hierarchical;var n={layout:{hierarchical:{enabled:r===undefined||r===null?false:typeof r===\"boolean\"?r:r.enabled!==false}}};var o=_utils2.default.merge({},i,_utils2.default.merge(a,n));o.clickToUse=this.clickToUse;o.manipulation.enabled=!!this.editorMode;o.manipulation.deleteNode=function(e,i){t.handleRemoveElements(e);t.resetVisManipulationBar(i)};o.manipulation.deleteEdge=function(e,i){t.handleRemoveElements(e);t.resetVisManipulationBar(i)};o.manipulation.addEdge=function(e,i){t.handleConnectionEvent(e);t.resetVisManipulationBar(i)};o.manipulation.addNode=function(e,i){t.handleInsertNode(e);t.resetVisManipulationBar(i)};o.manipulation.editNode=function(e,i){t.handleEditNode(e);t.resetVisManipulationBar(i)};o.interaction.zoomView=!!(this.isInSidebar||this.enlargedMode);o.manipulation.editEdge=false;var l=o.physics;l[l.solver]=l[l.solver]||{};l.stabilization.iterations=1e3;this.logger(\"debug\",\"Loaded graph options\",o);return o}},{key:\"resetVisManipulationBar\",value:function e(t){if(t){t(null)}this.network.disableEditMode();this.network.enableEditMode()}},{key:\"isVisInEditMode\",value:function e(){return this.graphDomNode.getElementsByClassName(\"vis-button vis-back\").length>0}},{key:\"handleCreateView\",value:function e(){var t=this;var i={view:this.view.getLabel()};$tm.dialogManager.open(\"createView\",i,function(e,i){if(!e)return;var a=_utils2.default.getField(i,\"name\");var s=_utils2.default.getField(i,\"clone\",false);if(_ViewAbstraction2.default.exists(a)){$tm.notify(\"Forbidden! View already exists!\");return}if(s&&t.view.isLiveView()){$tm.notify(\"Forbidden to clone the live view!\");return}var r=new _ViewAbstraction2.default(a,{isCreate:true,protoView:s?t.view:null});t.setView(r)})}},{key:\"handleRenameView\",value:function e(){var t=this;if(this.view.isLocked()){$tm.notify(\"Forbidden!\");return}var i=this.view.getOccurrences();var a={count:i.length.toString(),refFilter:_utils2.default.joinAndWrap(i,\"[[\",\"]]\")};$tm.dialogManager.open(\"renameView\",a,function(e,i){if(!e){return}var a=_utils2.default.getText(i);if(!a){$tm.notify(\"Invalid name!\")}else if(_ViewAbstraction2.default.exists(a)){$tm.notify(\"Forbidden! View already exists!\")}else{t.view.rename(a);t.setView(t.view)}})}},{key:\"handleEditView\",value:function e(){var t=this;var i=JSON.stringify($tm.config.vis);var a=this.graphData;var s=this.view.getConfig();var r={\"filter.prettyNodeFltr\":this.view.getNodeFilter(\"pretty\"),\"filter.prettyEdgeFltr\":this.view.getEdgeTypeFilter(\"pretty\"),\"inherited-style\":i};var n={view:this.view.getLabel(),createdOn:this.view.getCreationDate(true),numberOfNodes:Object.keys(a.nodesById).length.toString(),numberOfEdges:Object.keys(a.edgesById).length.toString(),dialog:{preselects:$tw.utils.extend({},s,r)}};$tm.dialogManager.open(\"configureView\",n,function(e,i){if(!e){return}var a=_utils2.default.getPropertiesByPrefix(i.fields,\"config.\",true);var s=t.view.getConfig(\"background_image\");t.view.setConfig(a);if(a[\"physics_mode\"]&&!t.view.isEnabled(\"physics_mode\")){t.view.saveNodePositions(t.network.getPositions())}var r=t.view.getConfig(\"background_image\");if(r&&r!==s){$tm.notify(\"Background changed! You may need to zoom out a bit.\")}var n=_utils2.default.getField(i,\"filter.prettyNodeFltr\",\"\");var o=_utils2.default.getField(i,\"filter.prettyEdgeFltr\",\"\");t.view.setNodeFilter(n);t.view.setEdgeTypeFilter(o)})}},{key:\"handleSaveCanvas\",value:function e(){var t=this;var i=\"$:/temp/tmap/snapshot\";this.createAndSaveSnapshot(i);var a=_utils2.default.getSnapshotTitle(this.view.getLabel(),\"png\");var s={dialog:{snapshot:i,width:this.canvas.width.toString(),height:this.canvas.height.toString(),preselects:{name:a,action:\"download\"}}};$tm.dialogManager.open(\"saveCanvas\",s,function(e,s){if(!e)return;a=s.fields.name||a;var r=s.fields.action;if(r===\"download\"){t.handleDownloadSnapshot(a)}else if(r===\"wiki\"){_utils2.default.cp(i,a,true);t.dispatchEvent({type:\"tm-navigate\",navigateTo:a})}else if(r===\"placeholder\"){t.view.addPlaceholder(i)}$tw.wiki.deleteTiddler(\"$:/temp/tmap/snapshot\")})}},{key:\"handleDownloadSnapshot\",value:function e(t){var i=this.document.createElement(\"a\");var a=this.view.getLabel();i.download=t||_utils2.default.getSnapshotTitle(a,\"png\");i.href=this.getSnapshot();var s=new MouseEvent(\"click\");i.dispatchEvent(s)}},{key:\"createAndSaveSnapshot\",value:function e(t){var i=t||this.view.getRoot()+\"/snapshot\";$tw.wiki.addTiddler(new $tw.Tiddler({title:i,type:\"image/png\",text:this.getSnapshot(true)},$tw.wiki.getCreationFields(),$tw.wiki.getModificationFields()));return i}},{key:\"getSnapshot\",value:function e(t){var i=this.canvas.toDataURL(\"image/png\");return t?_utils2.default.getWithoutPrefix(i,\"data:image/png;base64,\"):i}},{key:\"handleDeleteView\",value:function e(){var t=this;var i=this.view.getLabel();if(this.view.isLocked()){$tm.notify(\"Forbidden!\");return}var a=this.view.getOccurrences();if(a.length){var s={count:a.length.toString(),refFilter:_utils2.default.joinAndWrap(a,\"[[\",\"]]\")};$tm.dialogManager.open(\"cannotDeleteViewDialog\",s);return}var r=\"\\n You are about to delete the view ''\"+i+\"''\\n (no tiddler currently references this view).\\n \";this.openStandardConfirmDialog(function(e){if(!e){return}t.view.destroy();t.setView($tm.misc.defaultViewLabel);var a='view \"'+i+\"' deleted\";t.logger(\"debug\",a);$tm.notify(a)},r)}},{key:\"handleTriggeredRefresh\",value:function e(t){this.logger(\"log\",t,\"Triggered a refresh\");var i=_utils2.default.getTiddler(_utils2.default.getText(t));if(this.view.isLiveView()){if(i){if(this.view.isEnabled(\"neighbourhood_trace_clicks\")){this.trace[i.fields.title]=true}var a=i.fields[\"tmap.open-view\"]||$tm.config.sys.liveTab.fallbackView;if(a&&a!==this.view.getLabel()){this.setView(a);return}}}this.rebuildGraph({resetFocus:{delay:1e3,duration:1e3}})}},{key:\"handleRemoveElements\",value:function e(t){var i=t.nodes,a=t.edges;if(i.length){this.handleRemoveNodes(i)}else if(a.length){this.handleRemoveEdges(a)}this.resetVisManipulationBar()}},{key:\"handleRemoveEdges\",value:function e(t){$tm.adapter.deleteEdges(this.graphData.edges.get(t));$tm.notify(\"edge\"+(t.length>1?\"s\":\"\")+\" removed\")}},{key:\"handleRemoveNodes\",value:function e(t){var i=this;var a=$tm.adapter.getTiddlersByIds(t);var s={count:t.length.toString(),tiddlers:$tw.utils.stringifyList(a),dialog:{preselects:{\"delete-from\":\"filter\"}}};$tm.dialogManager.open(\"deleteNodeDialog\",s,function(e,a){if(!e)return;var s=0;for(var r=t.length;r--;){var n=i.view.removeNode(t[r]);if(n){s++}}if(a.fields[\"delete-from\"]===\"system\"){$tm.adapter.deleteNodes(t);s=t.length}i.isPreventZoomOnNextUpdate=true;$tm.notify(\"\\n Removed \"+s+\"\\n of \"+t.length+\"\\n from \"+a.fields[\"delete-from\"]+\"\\n \")})}},{key:\"toggleEnlargedMode\",value:function e(t){if(!this.isInSidebar&&t===\"halfscreen\"){return}this.logger(\"log\",\"Toggled graph enlargement\");var i=this.enlargedMode;if(i){this.network.setOptions({clickToUse:this.clickToUse});_utils2.default.findAndRemoveClassNames([\"tmap-has-\"+i+\"-widget\",\"tmap-\"+i]);this.enlargedMode=null;document.body.scrollTop=this.scrollTop}if(!i||i!==t&&(t===\"fullscreen\"||t===\"halfscreen\"&&!this.isInSidebar)){this.scrollTop=document.body.scrollTop;this.enlargedMode=t;var a=this.isInSidebar?this.sidebar:_utils2.default.getFirstElementByClassName(\"tc-story-river\");$tw.utils.addClass(this.document.body,\"tmap-has-\"+t+\"-widget\");$tw.utils.addClass(a,\"tmap-has-\"+t+\"-widget\");$tw.utils.addClass(this.domNode,\"tmap-\"+t);this.network.setOptions({clickToUse:false});$tm.notify(\"Toggled \"+t+\" mode\")}this.handleResizeEvent()}},{key:\"handleGenerateWidget\",value:function e(t){$tw.rootWidget.dispatchEvent({type:\"tmap:tm-generate-widget\",paramObject:{view:this.view.getLabel()}})}},{key:\"handleSetCentralTopic\",value:function e(t){var i=t.paramObject;var a=i.id||this.network.getSelectedNodes()[0];if(a===this.view.getConfig(\"central-topic\")){a=\"\"}this.view.setCentralTopic(a)}},{key:\"handleVisStabilizedEvent\",value:function e(t){if(this.hasNetworkStabilized){return}this.hasNetworkStabilized=true;this.logger(\"log\",\"Network stabilized after\",t.iterations,\"iterations\");if(!this.view.isEnabled(\"physics_mode\")){var i=this.graphData.nodesById;var a=[];for(var s in i){if(i[s].x===undefined){a.push(s)}}if(a.length){this.setNodesMoveable(a,false);$tm.notify(a.length+\" nodes were added to the graph\")}var r=this.visOptions.physics;r[r.solver].centralGravity=0;this.network.setOptions(this.visOptions)}if(this.resetFocus){this.fitGraph(this.resetFocus.delay,this.resetFocus.duration);this.resetFocus=null}}},{key:\"handleFocusNode\",value:function e(t){var i=t.param;this.network.focus($tm.adapter.getId(i),{scale:1.5,animation:true})}},{key:\"isZombieWidget\",value:function e(){return this.domNode.isTiddlyWikiFakeDom===true||!this.document.body.contains(this.getContainer())}},{key:\"fitGraph\",value:function e(){var t=this;var i=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var a=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;clearTimeout(this.activeFitTimeout);var s=function e(){if(t.isZombieWidget()){return}t.network.redraw();t.network.fit({animation:{duration:a,easingFunction:\"easeOutQuart\"}})};this.activeFitTimeout=setTimeout(s,i)}},{key:\"handleInsertNode\",value:function e(t){var i=this;$tm.dialogManager.open(\"addNodeToMap\",{},function(e,a){if(!e){return}var s=_utils2.default.getField(a,\"draft.title\");if(_utils2.default.tiddlerExists(s)){if(_utils2.default.isMatch(s,i.view.getNodeFilter(\"compiled\"))){$tm.notify(\"Node already exists\");return}else{t=$tm.adapter.makeNode(s,t);i.view.addNode(t)}}else{var r=new $tw.Tiddler(a,{\"draft.title\":null});t.label=s;$tm.adapter.insertNode(t,i.view,r)}i.isPreventZoomOnNextUpdate=true})}},{key:\"handleEditNode\",value:function e(t){var i=this;var a=$tm.tracker.getTiddlerById(t.id);var s=_utils2.default.getTiddler(a);var r=$tm.config.vis.nodes;var n=_utils2.default.parseJSON(this.view.getConfig(\"vis\"),{}).nodes;var o={};o[t.id]=t;var l=$tm.adapter.getInheritedNodeStyles(o);var d=l[a];var u=_utils2.default.merge({},{color:s.fields[\"color\"]},_utils2.default.parseJSON(s.fields[\"tmap.style\"]));var h=this.view.getLabel();var g=_extends({},this.view.getNodeData(t.id));delete g.x;delete g.y;var f={view:h,tiddler:s.fields.title,tidColor:s.fields[\"color\"],tidIcon:s.fields[$tm.field.nodeIcon]||s.fields[\"tmap.fa-icon\"],tidLabelField:\"global.\"+$tm.field.nodeLabel,tidIconField:\"global.\"+$tm.field.nodeIcon,dialog:{preselects:{\"inherited-global-default-style\":JSON.stringify(r),\"inherited-local-default-style\":JSON.stringify(n),\"inherited-group-styles\":JSON.stringify(d),\"global.tmap.style\":JSON.stringify(u),\"local-individual-node-style\":JSON.stringify(g)}}};var v=function e(t,i,a){for(var s=a.length;s--;){f.dialog.preselects[t+\".\"+a[s]]=i[a[s]]||\"\"}};v(\"local\",g,[\"label\",\"tw-icon\",\"fa-icon\",\"open-view\"]);v(\"global\",s.fields,[$tm.field.nodeLabel,$tm.field.nodeIcon,\"tmap.fa-icon\",\"tmap.open-view\"]);$tm.dialogManager.open(\"editNode\",f,function(e,s){if(!e)return;var r=s.fields;var n=_utils2.default.getPropertiesByPrefix(r,\"global.\",true);for(var o in n){_utils2.default.setField(a,o,n[o]||undefined)}var l=_utils2.default.getPropertiesByPrefix(r,\"local.\",true);var d=_utils2.default.parseJSON(r[\"local-individual-node-style\"],{});for(var u in l){d[u]=l[u]||undefined}i.view.saveNodeStyle(t.id,d);i.isPreventZoomOnNextUpdate=true})}},{key:\"handleVisSingleClickEvent\",value:function e(t){var i=_utils2.default.isTrue($tm.config.sys.singleClickMode);if(i&&!this.editorMode){this.handleOpenMapElementEvent(t)}}},{key:\"handleVisDoubleClickEvent\",value:function e(t){if(t.nodes.length||t.edges.length){if(this.editorMode||!_utils2.default.isTrue($tm.config.sys.singleClickMode)){this.handleOpenMapElementEvent(t)}}else{if(this.editorMode){this.handleInsertNode(t.pointer.canvas)}}}},{key:\"handleOpenMapElementEvent\",value:function e(t){var i=this;var a=t.nodes,s=t.edges;if(a.length){var r=this.graphData.nodesById[a[0]];if(this.view.isEnabled(\"neighbourhood_trace_clicks\")){this.trace[$tm.adapter.getTiddlerById(r.id)]=true;this.isPreventZoomOnNextUpdate=Date.now()+500;this.rebuildGraph();if(this.view.isEnabled(\"neighbourhood_focus_newly_traced_node\")){setTimeout(function(){i.network.focus(r.id,{scale:1,animation:true})},1500)}}if(r[\"open-view\"]){$tm.notify(\"Switching view\");this.setView(r[\"open-view\"])}else{this.openTiddlerWithId(a[0])}}else if(s.length){this.logger(\"debug\",\"Clicked on an Edge\");var n=this.graphData.edgesById[s[0]].type;this.handleEditEdgeType(n)}else{return}this.hidePopups(0,true)}},{key:\"handleEditEdgeType\",value:function e(t){if(!this.editorMode)return;var i=$tm.config.sys.edgeClickBehaviour;if(i!==\"manager\")return;$tw.rootWidget.dispatchEvent({type:\"tmap:tm-manage-edge-types\",paramObject:{type:t}})}},{key:\"handleResizeEvent\",value:function e(t){if(this.isZombieWidget())return;var i=this.getAttr(\"height\");var a=this.getAttr(\"width\");if(this.isInSidebar){var s=this.domNode.getBoundingClientRect();var r=15;a=document.body.clientWidth-s.left-r+\"px\";var n=parseInt(this.getAttr(\"bottom-spacing\"))||15;var o=window.innerHeight-s.top;i=o-n+\"px\"}this.domNode.style.height=i||\"300px\";this.domNode.style.width=a;this.repaintGraph()}},{key:\"handleClickEvent\",value:function e(t){if(this.isZombieWidget()||!this.network)return;if(!this.graphDomNode.contains(t.target)){var i=this.network.getSelection();if(i.nodes.length||i.edges.length){this.logger(\"debug\",\"Clicked outside; deselecting nodes/edges\");this.network.selectNodes([]);this.resetVisManipulationBar()}}else{this.canvas.focus()}if(t.button!==2){this.contextMenu.hide(0,true)}}},{key:\"handleVisSelectNode\",value:function e(t){var i=t.nodes;if(!this.isDraggingAllowed(i)){return}this.assignActiveStyle(i)}},{key:\"isDraggingAllowed\",value:function e(t){var i=t.nodes;return this.editorMode||this.view.isEnabled(\"physics_mode\")}},{key:\"assignActiveStyle\",value:function e(t){if(!Array.isArray(t))t=[t];var i=this.visOptions.nodes.color;for(var a=t.length;a--;){var s=t[a];var r=this.graphData.nodesById[s];var n=_utils2.default.merge({},i,r.color);this.graphData.nodes.update({id:s,color:{highlight:n,hover:n}})}}},{key:\"handleVisDeselectNode\",value:function e(t){}},{key:\"handleVisDragEnd\",value:function e(t){var i=t.nodes;if(!i.length){return}if(i.length===1&&this.view.isEnabled(\"raster\")){var a=this.network.getPositions()[i[0]];this.graphData.nodes.update(_extends({id:i[0]},_utils2.default.getNearestRasterPosition(a,parseInt(this.view.getConfig(\"raster\")))))}this.draggedNode=null;this.setNodesMoveable(i,false)}},{key:\"handleVisBeforeDrawing\",value:function e(t){var i=this.view,a=this.network,s=this.backgroundImage;if(s){t.drawImage(s,0,0)}if(i.isEnabled(\"raster\")){_utils2.default.drawRaster(t,a.getScale(),a.getViewPosition(),parseInt(i.getConfig(\"raster\")))}}},{key:\"handleVisAfterDrawing\",value:function e(t){if(this.selectRect){var i=this.selectRect.getRect();t.beginPath();t.globalAlpha=.5;t.fillStyle=\"#EAFFEF\";t.fillRect.apply(t,_toConsumableArray(i));t.beginPath();t.globalAlpha=1;t.strokeStyle=\"#B4D9BD\";t.strokeRect.apply(t,_toConsumableArray(i))}if(this.draggedNode&&this.view.isEnabled(\"raster\")){var a=this.network.getPositions()[this.draggedNode];var s=_utils2.default.getNearestRasterPosition(a,parseInt(this.view.getConfig(\"raster\")));t.strokeStyle=\"green\";t.fillStyle=\"green\";t.beginPath();t.moveTo(a.x,a.y);t.lineTo(s.x,s.y);t.stroke();t.beginPath();t.arc(s.x,s.y,5,0,Math.PI*2);t.fill()}}},{key:\"constructTooltip\",value:function e(t,i){var a=_utils2.default.parseJSON(t);var s=a.node||a.edge;var r=null;var n=\"text/html\";var o=\"text/vnd-tiddlywiki\";if(a.node){var l=$tm.tracker.getTiddlerById(s);var d=_utils2.default.getTiddler(l);var u=d.fields[$tm.field.nodeInfo];if(u){i.innerHTML=$tw.wiki.renderText(n,o,u)}else if(d.fields.text){_utils2.default.registerTransclude(this,\"tooltipWidget\",l);this.tooltipWidget.setVariable(\"tv-tiddler-preview\",\"yes\");this.tooltipWidget.render(i)}else{i.innerHTML=l}}else{var h=this.graphData.edgesById[s];var g=$tm.indeces.allETy[h.type];if(g.description){r=$tw.wiki.renderText(n,o,g.description)}i.innerHTML=r||g.label||g.id}}},{key:\"handleVisHoverElement\",value:function e(t){if($tm.mouse.buttons)return;var i=t.node||t.edge;var a=JSON.stringify(t);if(t.node){this.assignActiveStyle(i)}if(!this.isVisInEditMode()&&!this.contextMenu.isShown()){var s=this.constructTooltip;this.tooltip.show(a,s)}}},{key:\"handleVisBlurElement\",value:function e(t){this.tooltip.hide()}},{key:\"handleVisLoading\",value:function e(t){var i=t.total,a=t.iterations;this.graphLoadingBarDomNode.style.display=\"block\";this.graphLoadingBarDomNode.setAttribute(\"max\",i);this.graphLoadingBarDomNode.setAttribute(\"value\",a)}},{key:\"handleVisLoadingDone\",value:function e(t){this.graphLoadingBarDomNode.style.display=\"none\"}},{key:\"handleVisDragStart\",value:function e(t){var i=t.nodes;if(!i.length||!this.isDraggingAllowed(i)){return}this.hidePopups(0,true);this.assignActiveStyle(i);this.setNodesMoveable(i,true);if(i.length===1){this.draggedNode=i[0]}}},{key:\"destruct\",value:function e(){_utils2.default.setDomListeners(\"remove\",window,this.windowDomListeners);_utils2.default.setDomListeners(\"remove\",this.domNode,this.widgetDomListeners);this._destructVis()}},{key:\"_destructVis\",value:function e(){if(!this.network)return;_utils2.default.setDomListeners(\"remove\",this.canvas,this.canvasDomListeners);this.network.destroy();this.network=null}},{key:\"openTiddlerWithId\",value:function e(t){var i=this;var a=$tm.tracker.getTiddlerById(t);this.logger(\"debug\",\"Opening tiddler\",a,\"with id\",t);if(this.enlargedMode===\"fullscreen\"){var s=$tw.wiki.findDraft(a);var r=!!s;if(!r){var n=\"tm-edit-tiddler\";this.dispatchEvent({type:n,tiddlerTitle:a});s=$tw.wiki.findDraft(a)}var o={draftTRef:s,originalTRef:a};$tm.dialogManager.open(\"fullscreenTiddlerEditor\",o,function(e,t){if(e){var n=\"tm-save-tiddler\";i.dispatchEvent({type:n,tiddlerTitle:s})}else if(!r){_utils2.default.deleteTiddlers([s])}var o=\"tm-close-tiddler\";i.dispatchEvent({type:o,tiddlerTitle:a})})}else{var l=this.domNode.getBoundingClientRect();this.dispatchEvent({type:\"tm-navigate\",navigateTo:a,navigateFromTitle:this.getVariable(\"storyTiddler\"),navigateFromNode:this,navigateFromClientRect:{top:l.top,left:l.left,width:l.width,right:l.right,bottom:l.bottom,height:l.height}})}}},{key:\"getViewHolderRef\",value:function e(){if(this.viewHolderRef){return this.viewHolderRef}this.logger(\"info\",\"Retrieving or generating the view holder reference\");var t=this.getAttr(\"view\");var i=null;if(t){this.logger(\"log\",'User wants to bind view \"'+t+\"' to graph\");var a=$tm.path.views+\"/\"+t;if($tw.wiki.getTiddler(a)){i=$tm.path.localHolders+\"/\"+_utils2.default.genUUID();this.logger(\"log\",'Created an independent temporary view holder \"'+i+'\"');_utils2.default.setText(i,a);this.logger(\"log\",'View \"'+a+\"' inserted into independend holder\")}else{this.logger(\"log\",'View \"'+t+'\" does not exist')}}if(!i){this.logger(\"log\",\"Using default (global) view holder\");i=$tm.ref.defaultViewHolder}return i}},{key:\"setView\",value:function e(t,i){if(!_ViewAbstraction2.default.exists(t)){return}t=new _ViewAbstraction2.default(t);var a=t.getLabel();i=i||this.viewHolderRef;this.logger(\"info\",'Inserting view \"'+a+'\" into holder \"'+i+'\"');$tw.wiki.addTiddler(new $tw.Tiddler({title:i,text:a}));this.update({changedTiddlers:_defineProperty({},i,true)})}},{key:\"getView\",value:function e(t){if(!t&&this.view){return this.view}var i=this.getViewHolderRef();var a=_utils2.default.getText(i);this.logger(\"debug\",\"Retrieved view from holder\");var s=void 0;if(_ViewAbstraction2.default.exists(a)){s=new _ViewAbstraction2.default(a)}else{this.logger(\"debug\",'Warning: View \"'+a+\"\\\" doesn't exist. Default is used instead.\");s=new _ViewAbstraction2.default(\"Default\")}return s}},{key:\"reloadBackgroundImage\",value:function e(t){var i=this;this.backgroundImage=null;var a=this.view.getConfig(\"background_image\");var s=_utils2.default.getTiddler(a);if(!s&&!a)return;var r=new Image;var n=function e(t){r.src=t};r.onload=function(){i.backgroundImage=r;i.repaintGraph()};if(s){var o=s.fields[\"_canonical_uri\"];if(o){_utils2.default.getImgFromWeb(o,n)}else if(s.fields.text){r.src=$tw.utils.makeDataUri(s.fields.text,s.fields.type)}}else if(a){_utils2.default.getImgFromWeb(a,n)}}},{key:\"repaintGraph\",value:function e(){var t=$tw.utils.hasClass(this.document.body,\"tmap-has-fullscreen-widget\");if(this.network&&(!t||t&&this.enlargedMode)){this.logger(\"info\",\"Repainting the whole graph\");this.network.redraw();this.fitGraph(0,1e3)}}},{key:\"setGraphButtonEnabled\",value:function e(t,i){var a=\"vis-button tmap-\"+t;var s=_utils2.default.getFirstElementByClassName(a,this.domNode);$tw.utils.toggleClass(s,\"tmap-button-enabled\",i)}},{key:\"setNodesMoveable\",value:function e(t,i){if(!t||!t.length||this.view.isEnabled(\"physics_mode\")){return}var a=[];var s=!i;for(var r=t.length;r--;){a.push({id:t[r],fixed:{x:s,y:s}})}this.graphData.nodes.update(a);if(s){this.logger(\"debug\",\"Fixing\",a.length,\"nodes\");this.view.saveNodePositions(this.network.getPositions());this.isPreventZoomOnNextUpdate=true}}},{key:\"addGraphButtons\",value:function e(t){var i=_utils2.default.getFirstElementByClassName(\"vis-navigation\",this.domNode);for(var a in t){var s=this.document.createElement(\"div\");s.className=\"vis-button tmap-\"+a;s.addEventListener(\"click\",t[a].bind(this),false);i.appendChild(s);this.setGraphButtonEnabled(a,true)}}}]);return t}(_widget.widget);exports.tmap=MapWidget;exports.tiddlymap=MapWidget;\n//# sourceMappingURL=./maps/felixhayashi/tiddlymap/js/widget/MapWidget.js.map\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/felixhayashi/tiddlymap/license": {
"title": "$:/plugins/felixhayashi/tiddlymap/license",
"subtitle": "License",
"caption": "License",
"text": "\\rules except wikilink\n\n!! TiddlyMap\n\nCopyright (c) 2014, Felix Küppers\nAll rights reserved.\n\nTiddlyMap is licensed under the [[BSD 2-Clause License|http://opensource.org/licenses/BSD-2-Clause]]. For the exact license terms, please visit [[https://github.com/felixhayashi/TW5-TiddlyMap/blob/master/LICENSE]]. \n\n!! TiddlyWiki\n\nCreated by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright © Jeremy Ruston 2004-2007 Copyright © UnaMesa Association 2007-2014\n\nPublished under the following [licenses](https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses):\n\n# BSD 3-clause \"New\" or \"Revised\" License (including any right to adopt any future version of a license if permitted)\n# Creative Commons Attribution 3.0 (including any right to adopt any future version of a license if permitted)\n\n!! Vis.js\n\nCopyright (c) 2014 [Almende B.V.](https://github.com/almende/vis)\n\nPublished under the following licenses:\n\n# Apache License Version 2.0, January 2004 http://www.apache.org/licenses/\n# MIT License (MIT)\n"
},
"$:/plugins/felixhayashi/tiddlymap/readme": {
"title": "$:/plugins/felixhayashi/tiddlymap/readme",
"text": "* Please refer to the project-readme hosted at [[https://github.com/felixhayashi/TW5-TiddlyMap]].\n* A demo with several examples and explanations can be found at [[http://tiddlymap.org]]."
},
"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tmap:unknown": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tmap:unknown",
"description": "Automatically assigned to an edge that does not have a type assigned",
"style": "{\"color\":\"gray\"}",
"show-label": "false"
},
"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-body:link": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-body:link",
"description": "A link that is contained in the tiddler's body pointing to another resource.",
"style": "{\"color\":\"orange\", \"dashes\":true}",
"label": "links to",
"text": ""
},
"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:list": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:list",
"description": "Contained in a list of this tiddler",
"style": "{ \"color\": \"red\", \"dashes\":true}",
"label": "listed in",
"text": ""
},
"$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:tags": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes/tw-list:tags",
"description": "A tag that refers to a tiddler of the same name.",
"style": "{ \"color\": \"darkslategray\", \"dashes\":true}",
"label": "tagged with"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/default": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/default",
"caption": "Overview",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-plain\">\n Please visit the [[online docs|http://tiddlymap.org/Documentation]]\n for more information about the available global options.\n</div>\n<table class=\"tmap-key-value-table\">\n <tr>\n <th align=\"left\">Plugin version</th>\n <td><<pluginVersion>></td>\n </tr>\n<!--\n <tr>\n <th align=\"left\">Datastructure version</th>\n <td><<dataStructureVersion>></td>\n </tr>\n-->\n <tr>\n <th align=\"left\">Nodes in system</th>\n <td><<numberOfNodes>></td>\n </tr>\n <tr>\n <th align=\"left\">Edges in system</th>\n <td><<numberOfEdges>></td>\n </tr>\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/editor": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/editor",
"caption": "Editor",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Neighbour­hood menu\"\n field:\"config.sys.editorMenuBar.showNeighScopeButton\"\n descr:\"Show or hide the neighbourhood menu button.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Screen­shot menu\"\n field:\"config.sys.editorMenuBar.showScreenshotButton\"\n descr:\"Show or hide the screenshot menu button.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Raster­ menu\"\n field:\"config.sys.editorMenuBar.showRasterMenuButton\"\n descr:\"Show or hide the raster menu button.\">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/fields": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/fields",
"caption": "Field settings",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"Node-icon field\"\n field:\"config.sys.field.nodeIcon\" \n descr:\"Local image used as node image in the graphs.\">>\n <<tmap-row type:\"input-text\"\n title:\"Node-label field\"\n field:\"config.sys.field.nodeLabel\" \n descr:\"Alternative node label to use instead of the title.\">>\n <<tmap-row type:\"input-text\"\n title:\"Node-info field\"\n field:\"config.sys.field.nodeInfo\" \n descr:\"Field used as tooltip when hovering over a node in a graph.\"\n note:\"It is prohibited to use the text field here.\">>\n</table> \n\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/interaction": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/interaction",
"caption": "Interaction & behaviour",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Default startup view\"\n field=\"config.sys.defaultView\"\n nochoice=\"Last view used at startup\"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to display at startup\" />\n <<tmap-row type:\"input-checkbox\"\n title:\"Show popups\"\n field:\"config.sys.popups.enabled\"\n descr:\"Set this to true if you want to see automatic\n popups in the map.\">>\n <$list filter=\"[config.sys.popups.enabled[true]]\">\n <<tmap-row type:\"input-text\"\n title:\"Popup delay\"\n field:\"config.sys.popups.delay\"\n descr:\"The time in miliseconds that needs to pass after\n a tooltip is triggered.\">>\n <<tmap-row type:\"input-text\"\n title:\"Popup width\"\n field:\"config.sys.popups.width\"\n descr:\"The default max-width of the popup.\"\n note:\"Make sure you added the desired unit (e.g. `px`).\n Requires a wiki refresh.\">>\n <<tmap-row type:\"input-text\"\n title:\"Popup height\"\n field:\"config.sys.popups.height\"\n descr:\"The default max-height of the popup.\"\n note:\"Make sure you added desired the unit (e.g. `px`).\n Requires a wiki refresh.\">>\n </$list>\n <<tmap-row type:\"input-checkbox\"\n title:\"Allow single click mode\"\n field:\"config.sys.singleClickMode\"\n descr:\"A single click on a node is sufficient to open the\n corresponding tiddler.\"\n note:\"Drag and drop will still work and does not cause a\n tiddler to be opened. Single click is never active in\n the map editor.\">>\n <<tmap-row type:\"input-select\"\n title:\"Edge click behaviour\"\n field:\"config.sys.edgeClickBehaviour\"\n selectFilter:\"[[nothing|Nothing]]\n [[manager|Open edge-type manager]]\"\n descr:\"What should happen when you click on an edge?\">>\n <<tmap-row type:\"input-select\" title:\"Raster size\" field:\"config.sys.raster\"\n selectFilter:\"[[|disabled]] [[5|5px]] [[10|10px]] [[15|15px]] [[20|20px]] [[30|30px]] [[40|40px]]\"\n descr:\"Snap nodes to an invisible raster of the given size after drag'n'drop.\"\n note:\"Only works when the view is not in floating mode\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Apply node-filter to neighbours\"\n field:\"config.sys.nodeFilterNeighbours\"\n descr:\"If checked, neighbours displayed in the map will be filtered\n by the view's node-filter. Otherwise the node-filter will only be used\n to filter the original set of nodes in the map\">>\n</table>\n\n!! Suppressed dialogs\n\n<div class=\"tmap-flash-message tmap-plain\">\n Dialogs that you decided to suppress in the past are listed here.\n Remove the checkmark to enable dialogs again.\n</div>\n\n<table class=\"tmap-config-table\">\n <$list\n filter=\"[<output>fields[]prefix[config.sys.suppressedDialogs]]\"\n emptyMessage=\"–\">\n <$set name=\"dialogName\" value=<<tmap basename \".\">>>\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Suppress '$(dialogName)$' dialog\"\n field=<<currentTiddler>> />\n </$set>\n <br />\n </$list>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/liveTab": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/liveTab",
"caption": "Live tab",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Show Live tab\"\n field:\"liveTab\" \n descr:\"Show or hide the live tab in the sidebar.\">>\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Fallback view\"\n field=\"config.sys.liveTab.fallbackView\" \n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to display in the sidebar's live tab in\n case the current tiddler did not specify a view\n to open.\" />\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig",
"subtitle": "{{$:/core/images/options-button}} Global configuration of TiddlyMap",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n<$macrocall $name=\"tabs\"\n default=<<concat \"$(template)$/default\">>\n tabsList=\"[all[shadows]prefix<template>] -[<template>]\"\n/>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/verbosity": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/verbosity",
"caption": "Verbosity",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-plain\">\n Here you can restrict the system's talkativeness.\n</div>\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Debug output\"\n field:\"config.sys.debug\" \n descr:\"Set this to true if you want debug information to be\n displayed in the browser console.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show notifications\"\n field:\"config.sys.notifications\" \n descr:\"Set this to true if you want to receive fade-out\n notifications for important events.\">>\n</table> "
},
"$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis",
"classes": "tmap-remove-top-space",
"caption": "Graph",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n The global vis configurations will affect all views and their\n elements (nodes and edges) unless they are overridden on a lower\n level. All options below are documented at\n [[vis.js.org|http://visjs.org/docs/network]].\n</div>\n<div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on\n the graph. Other options are visible, yet, inactive.\n</div>\n<$tmap-config\n mode=\"manage-config\"\n inherited=\"inherited-style\"\n extension=\"config.vis\" />\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/default": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/default",
"caption": "Overview",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n All configurations __only__ affect this view.\n</div>\n\n<table class=\"tmap-key-value-table\">\n <tr>\n <th align=\"left\">Created on</th>\n <td><<createdOn>></td>\n </tr>\n <tr>\n <th align=\"left\">Nodes contained in graph</th>\n <td><<numberOfNodes>></td>\n </tr>\n <tr>\n <th align=\"left\">Edges contained in graph</th>\n <td><<numberOfEdges>></td>\n </tr>\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/editFilters": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/editFilters",
"caption": "Edit filters",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n Completely new to filters? Please read\n [[Introduction to filter notation|http://tiddlywiki.com/#Introduction%20to%20filter%20notation]]\n first.\n</div>\n\n<fieldset>\n <legend>Filters <sup>[1]</sup></legend>\n <table class=\"tmap-config-table tmap-large-input\">\n <<tmap-row type:\"input-textarea\"\n title:\"Node filter\"\n field:\"filter.prettyNodeFltr\"\n descr:\"In the map, only those tiddlers that match this filter\n are shown. Drafts and system tiddlers are automatically\n excluded.\">>\n <<tmap-row type:\"input-textarea\"\n title:\"Edge-type filter\"\n field:\"filter.prettyEdgeFltr\" \n descr:\"Only edges with a type that matches the filter are shown.\">>\n </table> \n</fieldset>\n\n---\n\n<sup>[1]</sup> In the editors above, a new line is equivalent to a space symbol.<br />\n<sup>[2]</sup> It is suggested to read\n[[Node and edge-type filters|http://tiddlymap.org#Node%20and%20edge-type%20filters]]\nand [[Edge-type namespaces|http://tiddlymap.org#Node%20and%20edge-type%20filters]]\nbefore using Tiddlymap's filter editor."
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/layout": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/layout",
"caption": "Layout",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Floating nodes\"\n field:\"config.physics_mode\"\n descr:\"Set this to true if you want your nodes to freely\n swirl around.\">>\n <<tmap-row type:\"input-text\"\n title:\"Background image\"\n field:\"config.background_image\"\n descr:\"The title of an image tiddler to be used as background\n in the view.\"\n note:\"You can also use an image url directly, however, the\n image needs be stored under the same domain as your wiki.\n Otherwise, it won't be displayed!\">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/namespace": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/namespace",
"caption": "Namespace",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table tmap-small-input\">\n <<tmap-row type:\"input-text\"\n title:\"Edge-type namespace\"\n field:\"config.edge_type_namespace\" \n descr:\"A namespace (like `foaf` in `foaf:knows`) that will be\n automatically added to all edge types you create in\n this view. The namespace is only added if the types\n do not exist yet and do not have a namespace assigned yet.\n Namespaces are always hidden in the graph.\"\n note:\"Most likely, you don't want the edges created with this\n namespace to leak into other views, moreover, you don't\n want edges that do not possess the namespace ever to be\n shown here. In this case, use a private marker (`_`)\n in front of your namespace, e.g. `_mynamespace` and use\n an appropriate edge type filter, i.e. `+[prefix[_mynamespace]]`\n For further information see:\n \n * [[Edge-type namespaces|http://tiddlymap.org/#Edge-type%20namespaces]]\n * [[Private edge types|http://tiddlymap.org/#Private%20edge%20types]]\n \">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView",
"subtitle": "{{$:/core/images/options-button}} View configuration -- <<view>>",
"text": "\\rules except wikilink\n\n\\define privateEdgeTypes() [[private edge-types|http://tiddlymap.org/#Private%20edge%20types]]\n\n<$macrocall $name=\"tabs\"\n default=<<concat \"$(template)$/default\">>\n tabsList=\"[all[shadows]prefix<template>] -[<template>]\"\n/>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/configureView/vis": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/configureView/vis",
"caption": "Graph",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n The local vis configurations will affect all\n elements (nodes and edges) of this view, unless they are\n overridden on a lower level. All options below are documented at\n [[vis.js.org|http://visjs.org/docs/network]].\n</div>\n<div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on the\n graph. Other options are visible, yet, inactive.\n</div>\n<$tmap-config\n mode=\"manage-config\"\n inherited=\"inherited-style\"\n extension=\"config.vis\" />\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/getEdgeType": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/getEdgeType",
"subtitle": "{{$:/plugins/felixhayashi/tiddlymap/icon}} Edge type specification",
"text": "\\rules except wikilink\n\\rules except underscore\n\n\\define filter() $(allEdgeTypes)$ +[search:title[$(term)$]]\n\n\\define badge(color, label, tooltip)\n<span style=\"background: $color$\" title=\"$tooltip$\">$label$</span>\n\\end\n\n\\define badges()\n<$tiddler tiddler={{!!text}}>\n<$set name=\"id\" value=<<tmap \"getETyId\" \"$(view)$\">>>\n<$set name=\"isVisible\" value=<<tmap \"isETyVisible\" \"$(view)$\">>>\n<div class=\"tmap-badges\">\n <span\n style=\"background: darkslategray\"\n title=\"Your input translates into this id.\">\n <<id>>\n </span>\n <$list filter=\"[<isVisible>regexp[true]]\">\n <<badge \"green\" \"visible\" \"Matches your view's filter\">>\n </$list>\n <$list filter=\"[<isVisible>regexp[false]]\">\n <<badge \"red\" \"not visible\" \"Doesn't match your view's filter\">>\n </$list>\n <$list filter=\"[<id>!regexp[^tmap:unknown$]]\" variable=\"item\">\n <$list filter=\"[<id>regexp[^_]]\">\n <<badge \"purple\" \"private\" \"Not shown in other views per default\">>\n </$list>\n <$list filter=\"[<id>regexp[.+:.+]]\">\n <<badge \"orange\" \"namespace\" \"This type is prefixed with a proper namespace\">>\n </$list>\n </$list>\n</div>\n</$set>\n</$set>\n</$tiddler>\n\\end\n\n\\define search()\n<p>\n You are about to connect \"<$text text=\"$(fromLabel)$\" />\"\n with \"<$text text=\"$(toLabel)$\" />\". Please specify a type.\n</p>\n<table id=\"tmap-search-table\">\n <tr>\n <td><b>Type:</b></td>\n <td>\n <$edit-text\n focus=\"true\"\n field=\"text\"\n type=\"text\"\n tag=\"input\"\n default=\"\"\n class=\"tmap-trigger-field\n tmap-triggers-ok-button-on-enter\n tmap-triggers-cancel-button-on-esc\" />\n <<badges>>\n </td>\n </tr>\n <tr>\n <td></td>\n <td>\n <$set name=\"term\" value={{!!text}}>\n <$set name=\"allEdgeTypes\" value=<<tmap \"option\" \"selector.allEdgeTypesById\">>>\n <ul class=\"tmap-small-list\">\n <$list filter=<<filter>>>\n <li>\n <$button class=\"tc-btn-invisible tmap-link\">\n <$view field=\"title\" />\n <$action-setfield $tiddler=<<output>> text={{!!title}} />\n </$button>\n </li>\n </$list>\n </ul>\n </$set>\n </$set>\n </td>\n </tr>\n</table>\n\\end\n\n<$list filter=\"[<temp>!has[more]]\" variable=\"item\"><<search>></$list>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/addNodeToMap": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/addNodeToMap",
"subtitle": "{{$:/core/images/tag-button}} Add node",
"classes": "tmap-modal-add-node",
"text": "\\rules except wikilink\n\n\\define backButtonText() back to list\n\\define outputAndTemplate() [[$(output)$]] [[$(template)$]]\n\n\\define editor()\n <$button class=\"tmap-go-back tc-btn-invisible\">\n {{$:/core/images/chevron-left}} <<backButtonText>>\n <$action-deletefield $tiddler=<<temp>> more template />\n <$action-sendmessage\n $message=\"tmap:tm-clear-tiddler\"\n keep=\"draft.title\"\n title=<<output>> />\n </$button>\n\n <$list filter=\"[<output>get[draft.title]is[tiddler]]\">\n <div class=\"tmap-flash-message tmap-warning\">\n Tiddler already exists! Use another title or click\n \"<<backButtonText>>\" to cancel your edit.\n </div>\n </$list>\n\n <div class=\"tmap-modal-editor\">\n <table class=\"tmap-config-table\">\n <tr class=\"tmap-template-select\">\n <td>Template</td>\n <td>\n <$select\n tiddler=<<temp>>\n field=\"template\">\n <option value=\"\"></option>\n <$list filter=<<tmap \"option\" \"selector.allPotentialNodes\">>>\n <option><$view field=\"title\" /></option>\n </$list>\n </$select>\n <$button>Load\n <$action-sendmessage\n $message=\"tmap:tm-clear-tiddler\"\n keep=\"draft.title\"\n title=<<output>> />\n <$list filter=\"[<temp>get[template]]\" variable=\"template\">\n <$action-sendmessage\n $message=\"tmap:tm-merge-tiddlers\"\n tiddlers=<<outputAndTemplate>>\n output=<<output>> />\n <$action-deletefield $tiddler=<<output>> tmap.id tmap.edges />\n </$list>\n </$button>\n </td>\n <td>Press the \"load\" button to activate the template.</td>\n </tr>\n </table>\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/core/macros/]]\">\n <$set name=\"currentTiddler\" value=<<output>>>\n <$transclude tiddler=\"$:/core/ui/EditTemplate\" mode=\"block\" />\n </$set>\n </$importvariables>\n </div>\n\\end\n\n\\define search()\n<p>Add an existing tiddler to the map or create a new one.</p>\n<table id=\"tmap-search-table\">\n <tr>\n <td><b>Title:</b></td>\n <td>\n <$edit-text\n tiddler=<<output>>\n field=\"draft.title\"\n focus=\"true\"\n type=\"text\"\n tag=\"input\"\n default=\"\"\n class=\"tmap-trigger-field\n tmap-triggers-ok-button-on-enter\n tmap-triggers-cancel-button-on-esc\" />\n <$list filter=\"[<output>get[draft.title]!is[tiddler]]\">\n <$button\n tooltip=\"The tiddler does not exist yet and you may edit it\n before it is added to the map\">\n {{$:/core/images/edit-button}}\n <$action-setfield $tiddler=<<temp>> more=\"true\" />\n </$button> <sup>[1]</sup>\n </$list>\n </td>\n </tr>\n <tr>\n <td></td>\n <td>\n <$set name=\"term\" value={{!!draft.title}}>\n <ul class=\"tmap-small-list\">\n <$list filter=\"[search:title<term>!is[system]!has[draft.of]]\">\n <li>\n <$button class=\"tc-btn-invisible tmap-link\">\n <$view field=\"title\" />\n <$action-setfield $tiddler=<<output>> draft.title={{!!title}} />\n </$button>\n </li>\n </$list>\n </ul>\n </$set>\n </td>\n </tr>\n</table>\n\n<$list filter=\"[<output>get[draft.title]!is[tiddler]]\">\n<hr />\n<sup>[1]</sup>\n<small>\n The tiddler does not exist yet and you may edit it\n before it is added to the map\n</small>\n</$list>\n\\end\n\n<$list filter=\"[<temp>!has[more]]\" variable=\"item\"><<search>></$list>\n<$list filter=\"[<temp>has[more]]\" variable=\"item\"><<editor>></$list>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/cannotDeleteViewDialog": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/cannotDeleteViewDialog",
"subtitle": "{{$:/core/images/locked-padlock}} You cannot delete this view!",
"buttons": "ok",
"text": "\\rules except wikilink\n\nIt is not possible to delete the current view as ''<<count>>'' tiddlers\nare referencing it. To delete the view you must first remove the tiddlymap\nwidgets in the tiddlers listed below or change their view attributes.\n\n''References''\n\n<ul>\n<$list filter=<<refFilter>> variable=\"item\">\n <li><$link><<item>></$link></li>\n</$list>\n</ul>\n\nAfter the references are removed, you may delete the view.\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/getConfirmation": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/getConfirmation",
"subtitle": "{{$:/core/images/import-button}} You must confirm in order to proceed!",
"text": "\\rules except wikilink\n\n<<message>>\n\n''Are you really sure you want to do this?''"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/createView": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/createView",
"subtitle": "{{$:/core/images/new-button}} Creating a new view",
"text": "\\rules except wikilink\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"View name\"\n field:\"name\"\n focus:\"true\"\n class:\"tmap-trigger-field\n tmap-triggers-ok-button-on-enter\n tmap-triggers-cancel-button-on-esc\"\n descr:\"The name for the new view. If no name is entered,\n the program will invent one for you.\"\n note:\"You cannot override an existing view. In this case,\n you need to delete the old view first! You must no use\n slashes (`/`) in the name.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Clone view\"\n field:\"clone\"\n descr:\"Use the view that is currently displayed in the\n editor as blueprint. The view will be an __exact__\n clone of the current one, only with a different\n name.\">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/deleteNodeDialog": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/deleteNodeDialog",
"subtitle": "{{$:/core/images/delete-button}} You are about to delete <<count>> nodes",
"text": "\\rules except wikilink\n\n''Please choose an option or abort:''\n\n<$radio tiddler=<<output>> field=\"delete-from\" value=\"system\">\n Delete nodes from system <sup>[1]</sup>\n</$radio><br />\n<$radio tiddler=<<output>> field=\"delete-from\" value=\"filter\">\n Delete nodes from graph's filter <sup>[2]</sup>\n</$radio>\n\nThe following nodes will be deleted:\n\n<ul>\n<$list filter=<<tiddlers>>>\n <li><$view tiddler={{!!title}} field=\"title\" /></li>\n</$list>\n</ul>\n\n---\n\n<sup>[1]</sup>\n<small>This will delete all nodes, their corresponding tiddlers and all connected edges.</small><br/>\n<sup>[2]</sup>\n<small>''Important:'' Removing a node from the graph's filter only works, if the node has been added in the map editor per double click or via \"Add Node\". If the node hasn't been added as mentioned above, you need to change the underlying tiddler in a way that it doesn't match your filter anymore, if you don't want it to be displayed in the graph.</small>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/dublicateIdInfo": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/dublicateIdInfo",
"subtitle": "{{$:/core/images/info-button}} Dublicate id detected",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nTiddlyMap requires the value of the id field (\"tmap.id\") to be\nunique in order to correctly identify nodes and tiddlers.\n\nThe id of the \"<<param.changedTiddler>>\" already exists for these tiddlers:\n\n<ul>\n<$list filter=<<param.filter>> variable=\"item\">\n <li><$link><<item>></$link></li>\n</$list>\n</ul>\n\nTherefore TiddlyMap\n\n* assigned a new id to tiddler \"<<param.changedTiddler>>\"\n* removed all edges from \"<<param.changedTiddler>>\"\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/edgeNotVisible": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/edgeNotVisible",
"subtitle": "{{$:/core/images/info-button}} Edge will not be visible in view \"<<view>>\"",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nYou just created an edge of type\n<code><$text text=<<type>> /></code> that will not be\nvisible in this view because it doesn't match your\nedge-type filter settings.\n\nThe current edge-type filter of view \"<<view>>\" looks like this:\n\n<pre><code><$text text=<<eTyFilter>> /></code></pre>\n\nTo have the newly added type displayed in your view, adjust your\nedge-type filter accordingly. \n\nSome suggestions:\n\n<ul>\n <li>\n Explicitly add the type to the filter:\n <code><$text text=\"[[\" /><$text text=<<type>> /><$text text=\"]]\" /></code>\n </li>\n <li>\n <$set\n filter=\"[<type>regexp[:]splitbefore[:]]\"\n name=\"prefix\"\n emptyValue=<<tmap halfOfString \"$(type)$\">>>\n Add a filter rule (e.g. a prefix filter) that will match\n your type: <code>[prefix[<<prefix>>]]</code>\n </$set>\n </li>\n <li>Make your current view-filter less restrictive.</li>\n</ul>\n\nFor further information, please see:\n[[Node and edge-type filters|http://tiddlymap.org#Node%20and%20edge-type%20filters]]."
},
"$:/plugins/felixhayashi/tiddlymap/dialog/editNode/default": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/editNode/default",
"caption": "Global node style",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n A node's ''global configuration''\n (also referred to as //global individual config//) defines its\n individual appearance and behaviour in all views.\n</div>\n<<maybeShowTidColorWarning>>\n\n<$macrocall $name=\"sharedSettings\"\n twIconField=<<tidIconField>>\n faIconField=\"global.tmap.fa-icon\"\n labelField=<<tidLabelField>> />\n\n<$macrocall $name=\"visConfiguration\"\n mode=\"manage-node-types\"\n extensionField=\"global.tmap.style\"\n styleName=\"node's global style\"\n inheritedList=\"[[inherited-global-default-style]]\n [[inherited-local-default-style]]\n [[inherited-group-styles]]\" />\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/editNode/local": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/editNode/local",
"caption": "Local node style",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n The ''local node configuration''\n (also referred to as //view-specific node configuration//)\n overrides the //global individual configuration// and only affects\n the node's appearance and behaviour in the current view.\n</div>\n<<maybeShowTidColorWarning>>\n\n<fieldset>\n <legend>Behaviour</legend>\n <table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"Open view\"\n field=\"local.open-view\"\n nochoice=\"Disabled\"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"Clicking on this node will open the specified\n view instead of the tiddler represented by this node.\" />\n </table>\n</fieldset>\n\n<$macrocall $name=\"sharedSettings\"\n twIconField=\"local.tw-icon\"\n faIconField=\"local.fa-icon\"\n labelField=\"local.label\" />\n\n<$macrocall $name=\"visConfiguration\"\n mode=\"manage-node-types\"\n extensionField=\"local-individual-node-style\"\n styleName=\"node's local style\"\n inheritedList=\"[[inherited-global-default-style]]\n [[inherited-local-default-style]]\n [[inherited-group-styles]]\n [[global.tmap.style]]\" />\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/editNode": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/editNode",
"subtitle": "{{$:/core/images/edit-button}} Editing style of node \"<<tiddler>>\"",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n\\define maybeShowTidColorWarning()\n <$list filter=\"[<tidColor>regexp[.+]]\">\n <div class=\"tmap-flash-message tmap-warning\">\n You have set the tiddler's color\n field to \"<<tidColor>>\". This value will be completely ignored\n when you change node's color properties in the vis editor below.\n </div>\n </$list>\n\\end\n\n\\define iconSettings(twIconField, faIconField)\n <fieldset>\n <legend>Icon Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"TW-icon\"\n field:\"$twIconField$\"\n descr:\"A tiddlywiki image reference.\n For example '$:/core/icon' for Movotun Jack.\">>\n <<tmap-row type:\"input-text\"\n title:\"FA-icon\"\n field:\"$faIconField$\"\n descr:\"A Font Awesome icon code.\n For example 'f206' for the bicycle symbol.\">>\n </table>\n </fieldset>\n\\end\n\n\\define sharedSettings(twIconField, faIconField, labelField)\n <fieldset>\n <legend>General Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"Label\"\n field:\"$labelField$\"\n descr:\"Use this value as node label.\">>\n </table>\n </fieldset>\n <!-- display icon fieldset -->\n <<iconSettings \"$twIconField$\" \"$faIconField$\">> \n\\end\n\n<$macrocall\n $name=\"tabs\"\n default=<<concat \"$(template)$/default\">>\n tabsList=\"[all[shadows]prefix<template>] -[<template>]\"\n/>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/draft": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/draft",
"caption": "Draft",
"text": "\\rules except wikilink\n\n<div class=\"tmap-modal-editor\">\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/core/macros/]]\">\n <$set name=\"currentTiddler\" value=<<draftTRef>> >\n <$transclude tiddler=\"$:/core/ui/EditTemplate\" field=\"text\" mode=\"block\" />\n </$set>\n </$importvariables>\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/original": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/original",
"caption": "Current Version",
"text": "\\rules except wikilink\n\n<div class=\"tmap-modal-editor\">\n <$importvariables filter=\"[all[tiddlers+shadows]prefix[$:/core/macros/]]\">\n <$set name=\"currentTiddler\" value=<<originalTRef>> >\n <$transclude tiddler=\"$:/core/ui/ViewTemplate\" field=\"text\" mode=\"block\" />\n </$set>\n </$importvariables>\n</div>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor",
"subtitle": "{{$:/core/images/edit-button}} <<originalTRef>>",
"classes": "tmap-modal-fullscreen-editor tmap-remove-top-space",
"text": "\\rules except wikilink\n\n\\define defaultTab() $:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/original\n\n<$macrocall $name=\"tabs\"\n default=<<defaultTab>>\n tabsList=\"[all[shadows]prefix[$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/]]\" />"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fieldChanged": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fieldChanged",
"subtitle": "{{$:/core/images/info-button}} The field \"<<name>>\" changed",
"text": "\\rules except wikilink\n\nYou changed the field \"<<name>>\" from \"<<oldValue>>\" to \"<<newValue>>\".\n\nIt is recommended to let TiddlyMap copy all values from the former field \"<<oldValue>>\" to the new field \"<<newValue>>\" so the data stored in \"<<oldValue>>\" is not lost. This operation has to be done now or never.\n\nDo you want to move each tiddler's existing \"<<oldValue>>\" value to \"<<newValue>>\"? Please note that any value currently stored in \"<<newValue>>\" would consequently be overridden and the old field \"<<oldValue>>\" would be eventually removed!"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenNotSupported": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenNotSupported",
"subtitle": "{{$:/core/images/info-button}} Your machine does not support fullscreen",
"buttons": "ok_suppress",
"text": "\\rules except wikilink\n\nPlease have a look [[here|http://caniuse.com/#feat=fullscreen]] to see a list of supported devices/browsers.\n\nSorry for this :("
},
"$:/plugins/felixhayashi/tiddlymap/dialog/renameView": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/renameView",
"subtitle": "{{$:/core/images/tag-button}} Please specify a view name",
"text": "\\rules except wikilink\n\n''Name:''\n<$edit-text focus=\"true\" tiddler=<<output>> field=\"text\" type=\"text\" tag=\"input\" default=\"\"\n class=\"tmap-trigger-field tmap-triggers-ok-button-on-enter\" />\n\nNote that ''<<count>>'' tiddlers are referencing this view.\n\n<$reveal type=\"nomatch\" text=\"0\" default=<<count>>>\n\nRenaming the view will cause the reference to be invalid.\nIt is recommended to first remove the tiddlymap widgets in\nthe tiddlers listed below or change their view attributes\naccordingly.\n\n''References''\n\n<ul>\n<$list filter=<<refFilter>> variable=\"item\">\n <li><$text text=<<item>> /></li>\n</$list>\n</ul>\n\n</$reveal>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/saveCanvas": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/saveCanvas",
"subtitle": "{{$:/core/images/options-button}} Save a snapshot image of view \"<<view>>\"",
"text": "\\rules except wikilink\n\n\\define preview()\n<div class=\"tmap-save-canvas-preview\">\n <$transclude tiddler=<<snapshot>> /><br />\n Measures: <<width>> × <<height>>\n</div>\n\\end\n\n<table class=\"tmap-config-table\">\n<!--\n <<tmap-row type:\"input-text\"\n title:\"Name\"\n field:\"name\">\n-->\n<$macrocall $name=\"tmap-row\"\n type=\"input-text\"\n title=\"Name\"\n field=\"name\"\n descr=<<preview>> />\n</table>\n\n<fieldset><legend>Options</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-radio\"\n title:\"Action\"\n field:\"action\" \n selectFilter:\"[[download|Download]]\n [[wiki|Save in wiki]]\n [[placeholder|Use as placeholder for this view]]\"\n descr:\"Save the image by downloading it to your computer or\n save it as a tiddler in your wiki.<br /><br />\n A third option is to make TiddlyMap use this image as\n placeholder for the current view. Placeholders are used\n when tiddlers are exported in form of static html\n or when editing a tiddler while having the preview\n shown. In this case the title input is ignored.\">>\n </table>\n</fieldset>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog",
"text": "\\rules except wikilink\n\n<div class=<<classes>>>\n<$importvariables\n filter=\"[[$:/plugins/felixhayashi/tiddlymap/misc/macros]]\n [[$:/core/macros/tabs]]\">\n<$transclude tiddler=<<template>> mode=\"block\" />\n</$importvariables>\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/welcome": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/welcome",
"subtitle": "{{$:/core/images/info-button }} Welcome",
"buttons": "ok",
"text": "\\rules except wikilink\n\nIt seems that you freshly installed TiddlyMap.\n\n* In case you need any help, please consult the [[online docs|http://tiddlymap.org#Documentation]] first.\n* You are welcome to create an [[issue|https://github.com/felixhayashi/TW5-TiddlyMap/issues]] at GitHub for any bug you discover.\n* Make sure to revisit the [[demo site|http://tiddlymap.org]] to see whether your version is up-to-date.\n* If you like TiddlyMap, please give it a star at [[GitHub|https://github.com/felixhayashi/TW5-TiddlyMap]] or tell your friends about it :)\n* ''Please note:'' TiddlyMap is distributed under the [[BSD 2-Clause License|http://opensource.org/licenses/BSD-2-Clause]], which belongs to the same license family, as the license used by TiddlyWiki. By using this plugin you agree to the product's [[License Terms|https://github.com/felixhayashi/TW5-TiddlyMap/blob/master/LICENSE]].\n\nEnjoy!\n\n---\n\nTiddlyMap will configure your wiki for optimal use. Everything can be changed back later by you, via the TiddlyWiki configurations panel, so no worries. If you checked some of the options below, please save & restart after closing this dialog.\n\n<table class=\"tmap-config-table\">\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize storyview\"\n field:\"config.storyview\"\n descr:\"Sets the storyview to 'top' for optimal scrolling.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize sidebar\"\n field:\"config.sidebar\"\n descr:\"Sets sidebar layout to 'fixed-fluid' for larger editor.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Optimize navigation\"\n field:\"config.navigation\"\n descr:\"Sets navigation style to open tiddlers at top for better map navigation.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Create demo welcome map\"\n field:\"config.demo\"\n descr:\"Creates a little hello world welcome map for you.\">>\n</table>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/widgetCodeGenerator": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/widgetCodeGenerator",
"subtitle": "{{$:/core/images/permalink-button}} Widget Code Generator",
"buttons": "close",
"text": "\\rules except wikilink\n\n<div class=\"tmap-flash-message tmap-info\">\n Use the code below to embed a view in a tiddler.\n</div>\n\n<pre style=\"white-space: normal;\">\n<$tmap\n\n<$list filter=\"[<output>has[var.view]]\">\n view=\"<$view field='var.view' />\"</$list>\n<$list filter=\"[<output>field:var.click-to-use[true]]\">\n click-to-use=\"true\"</$list>\n<$list filter=\"[<output>has[var.editor]]\">\n editor=\"<$view field='var.editor' />\"</$list>\n<$list filter=\"[<output>has[var.width]]\">\n width=\"<$view field='var.width' />\"</$list>\n<$list filter=\"[<output>has[var.height]]\">\n height=\"<$view field='var.height' />\"</$list>\n<$list filter=\"[<output>has[var.class]]\">\n class=\"<$view field='var.class' />\"</$list>\n<$list filter=\"[<output>field:var.show-buttons[false]]\">\n show-buttons=\"false\"</$list>\n<$list filter=\"[<output>has[var.design]]\">\n design=\"<$view field='var.design' />\"</$list>></$tmap>\n</pre>\n\n<fieldset>\n <legend>Parameters</legend> \n <table class=\"tmap-config-table\">\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\"\n title=\"View\"\n field=\"var.view\"\n nochoice=\" \"\n selectFilter=<<tmap \"option\" \"selector.allViewsByLabel\">>\n descr=\"The view to bind the wiedget to\" />\n <<tmap-row type:\"input-select\"\n title:\"Editor bar\"\n field:\"var.editor\"\n selectFilter:\"[[|Hidden]]\n [[vis|Simple]]\n [[advanced|Advanced]]\"\n descr:\"Whether the widget should act as an editor or not.\">>\n <<tmap-row type:\"input-select\"\n title:\"Design\"\n field:\"var.design\"\n selectFilter:\"[[|Normal]]\n [[plain|Plain]]\"\n descr:\"Usually a header is displayed and borders. Plain\n design will only show the mere graph.\">>\n <<tmap-row type:\"input-text\"\n title:\"Height\"\n field:\"var.height\"\n descr:\"Graph's height in css units. Defaults to '300px'.\">>\n <<tmap-row type:\"input-text\"\n title:\"Width\"\n field:\"var.width\"\n descr:\"Graph's width in css units. Defaults to '100%'.\">>\n <<tmap-row type:\"input-text\"\n title:\"Class\"\n field:\"var.class\"\n descr:\"A custom class to apply your own css.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Click to use\"\n field:\"var.click-to-use\"\n default:\"false\"\n descr:\"A click is needed to enable the graph.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show buttons\"\n field:\"var.show-buttons\"\n default:\"true\"\n descr:\"Show or hide the graph's navigation buttons.\">>\n </table>\n</fieldset>"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/close": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/close",
"text": "\\rules except wikilink\n\n<$button class=\"tmap-dialog-button tmap-close-button\" tooltip=\"Close this dialog\">Close\n\n <!-- trigger dialog callback -->\n <$action-setfield $tiddler=<<result>> text=\"1\" />\n \n</$button>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok",
"text": "\\rules except wikilink\n\n<$button class=\"tmap-dialog-button tmap-ok-button\" tooltip=\"Confirm dialog\">OK\n\n <!-- trigger dialog callback -->\n <$action-setfield $tiddler=<<result>> text=\"1\" />\n \n</$button>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok_cancel": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok_cancel",
"text": "\\rules except wikilink\n\n<$transclude tiddler=\"$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok\" mode=\"inline\" />\n<$button class=\"tmap-dialog-button tmap-cancel-button\" tooltip=\"Close dialog without saving\">Cancel\n <!-- trigger dialog callback -->\n <$action-setfield $tiddler=<<result>> text=\"\" />\n</$button>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok_suppress": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/ok_suppress",
"text": "\\rules except wikilink\n\n<$set name=\"currentTiddler\" value=<<title>> >\n\n<$checkbox field=\"suppress\" checked=\"1\" unchecked=\"0\" default=\"0\"> Do not show this dialog again</$checkbox>\n<$button class=\"tmap-dialog-button tmap-ok-button\" tooltip=\"Confirm this dialog\">OK\n\n <!-- trigger dialog callback -->\n <$action-setfield $tiddler=<<result>> text=\"1\" />\n \n <!-- suppress dialog in the future -->\n <$action-sendmessage $message=\"tmap:tm-suppress-dialog\"\n dialog=<<templateId>>\n suppress={{!!suppress}} />\n \n</$button>\n\n</$set>"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter",
"text": "\\rules except wikilink\n\n\\define footer() $:/plugins/felixhayashi/tiddlymap/dialogFooter/$(buttons)$\n\n<$transclude tiddler=<<footer>> />\n\n<!-- we need this button to be able to close a tiddler from outside programmatically -->\n<$button class=\"tmap-hidden-close-button\" message=\"tm-close-tiddler\" />"
},
"$:/plugins/felixhayashi/tiddlymap/dialogFooter/element_type_manager": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialogFooter/element_type_manager",
"text": "\\rules except wikilink\n\n<$button\n class=\"tmap-dialog-button tmap-save-button\"\n tooltip=\"Save the current changes\">Save\n <$action-sendmessage\n $message=\"tmap:tm-save-type-form\"\n mode=<<mode>>\n output=<<output>> />\n</$button>\n<$button\n class=\"tmap-dialog-button tmap-cancel-button\"\n tooltip=\"Cancel the most resent changes and exit\">Quit\n <$action-setfield $tiddler=<<result>> text=\"1\" />\n</$button>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/deleteType": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/deleteType",
"caption": "Removal",
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Delete type\"\n field=\"temp.deleteType\"\n default={{!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"If you want to delete this type, set this to true\n and click the save button afterwards. Predefined system\n types cannot be deleted.\" note=\"Consequently, all edges\n of this type will be deleted.\" />\n\\end\n\n\\define manage-node-types()\n <$macrocall $name=\"tmap-row\"\n type=\"input-checkbox\"\n title=\"Delete type\"\n field=\"temp.deleteType\"\n default={{!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"If you want to delete this type, set this to true and\n click the save button afterwards. Predefined system\n types cannot be deleted.\" />\n\\end\n\n<table class=\"tmap-config-table\"><$macrocall $name=<<mode>> /></table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/description": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/description",
"caption": "Description",
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <<tmap-row type:\"input-textarea\"\n title:\"Description\"\n field:\"description\"\n descr:\"An optional description for this type. The\n description will be displayed as tooltip when\n moving the mouse over an edge of this type.\">>\n\\end\n\n\\define manage-node-types()\n <<tmap-row type:\"input-textarea\"\n title:\"Description\"\n field:\"description\" \n descr:\"An optional description for this type.\">>\n\\end\n\n<table class=\"tmap-config-table\">\n <$macrocall $name=<<mode>> />\n</table>\n\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/generalSettings": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/generalSettings",
"caption": "General",
"text": "\\rules except wikilink\n\n\\define manage-edge-types()\n <<tmap-row type:\"input-text\"\n title:\"Label\"\n field:\"label\" \n descr:\"An optional alias used as edge-label.\">>\n <<tmap-row type:\"input-checkbox\"\n title:\"Show label\"\n field:\"show-label\"\n default:\"true\"\n descr:\"If unchecked, no edge label will be displayed.\">>\n\\end\n\\define manage-node-types()\n <$list filter=\"[<currentTiddler>!regexp:id[tmap:]]\">\n <<tmap-row type:\"input-textarea\"\n title:\"Scope\"\n field:\"scope\" \n descr:\"A filter expression that defines, which nodes inherit\n this node-type and its style.\">>\n </$list>\n <$macrocall type=\"input-select\"\n $name=\"tmap-row\" \n title=\"Priority\"\n field=\"priority\"\n selectFilter=<<tmap \"scale\" \"100\">>\n descr=\"When a type has a a higher priority than another type,\n its style will override the other style\" />\n\\end\n\n<table class=\"tmap-config-table\">\n <$macrocall\n $name=\"tmap-row\"\n title=\"Identifier\"\n field=\"temp.newId\"\n type=\"input-text\"\n default={{!!id}}\n readonly={{!!temp.idImmutable}}\n descr=\"A unique identifier\"\n />\n <$macrocall $name=<<mode>> />\n</table>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/overview": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/overview",
"caption": "Overview",
"text": "\\rules except wikilink\n\n\\define date(f) <$view field=$f$ format=\"date\" template=\"DDth mmm hh:mm:ss\"/>\n\n! <$link to={{!!typeTRef}}><$view field=\"id\" /></$link>\n\n<table class=\"tmap-key-value-table\">\n <tr>\n <th align=\"left\">Created on</th>\n <td>\n <<date \"created\">>\n </td>\n </tr>\n <tr>\n <th align=\"left\">Modified on</th>\n <td><<date \"modified\">></td>\n </tr>\n <tr>\n <th align=\"left\">Usage count</th>\n <td>\n <span class=\"tmap-edge-type-specific\">\n <$view field=\"temp.usageCount\" />\n </span>\n <span class=\"tmap-node-type-specific\">\n <$count filter={{!!scope}}>0</$count>\n </span>\n </td>\n </tr>\n</table>\n\n<$view field=\"description\">//No description available//</$view>"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/styling": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/styling",
"caption": "Styling",
"text": "\\rules except wikilink\n\n\\define url()\n <$set\n filter=\"[<mode>prefix[manage-edge-types]]\"\n name=\"module\"\n value=\"edges\"\n emptyValue=\"nodes\">\n [[visjs.org|http://visjs.org/docs/network/$(module)$]]\n </$set>\n\\end\n\n<fieldset class=\"tmap-node-type-specific\">\n <legend>Icon Settings</legend>\n <table class=\"tmap-config-table\">\n <<tmap-row type:\"input-text\"\n title:\"TW-icon\"\n field:\"tw-icon\"\n descr:\"A tiddlywiki image reference.\n For example '$:/core/icon' for Movotun Jack.\">>\n <<tmap-row type:\"input-text\"\n title:\"FA-icon\"\n field:\"fa-icon\"\n descr:\"A Font Awesome icon code.\n For example 'f206' for the bicycle symbol.\">>\n </table>\n</fieldset>\n\n<fieldset><legend>Visjs styles</legend>\n <div class=\"tmap-flash-message tmap-info\">\n All visjs options below are documented at <<url>>.\n </div>\n <div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on\n the graph. Other options are visible, yet, inactive.\n </div>\n <$tmap-config\n mode=<<mode>>\n inherited=\"inherited-style\"\n extension=\"style\" />\n</fieldset>\n"
},
"$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager": {
"title": "$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager",
"subtitle": "{{$:/core/images/tag-button}} <<topic>>",
"buttons": "element_type_manager",
"classes": "tmap-remove-top-space",
"text": "\\rules except wikilink\n\n\\define defaultTab()\n$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/overview\n\\end\n\n\\define settingsTab()\n$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/generalSettings\n\\end\n\n\\define tabsFilter()\n[all[shadows]prefix[$:/plugins/felixhayashi/tiddlymap/dialog/MapElementTypeManager/]]\n\\end\n\n\\define searchFilter()\n$(searchSelector)$\n+[sort[title]nsort[priority]]\n+[removeprefix<typeRootPath>removeprefix[/]]\n+[search:title{$:/temp/tmap/MapElementTypeSearch}]\n\\end\n\n\\define managerClass() tmap-$(mode)$\n\n\\define typePath() $(typeRootPath)$/$(id)$\n\n<div id=\"tmap-element-type-manager\" class=<<managerClass>>>\n <div>\n <div class=\"tmap-searchbar\">\n <$edit-text\n focus=\"true\"\n tiddler=\"$:/temp/tmap/MapElementTypeSearch\"\n type=\"text\"\n tag=\"input\"\n default=\"\" />\n <$list filter=\"[{$:/temp/tmap/MapElementTypeSearch}regexp[.+]]\n +[addprefix[/]]\n +[addprefix<typeRootPath>]\n +[!is[tiddler]!is[shadow]]\">\n <$button tooltip=\"Create a new type of this name\">\n {{$:/core/images/new-button}}\n <$action-sendmessage\n $message=\"tmap:tm-create-type\"\n mode=<<mode>>\n id={{$:/temp/tmap/MapElementTypeSearch}}\n output=<<output>> />\n <$action-setfield $tiddler=\"$:/temp/tmap/MapElementTypeSearch\" text=\"\" />\n </$button>\n </$list>\n\n </div>\n <ul>\n <$list\n filter=<<searchFilter>>\n emptyMessage=<<noTypeFound>>\n variable=\"id\">\n <li>\n <span class=\"tmap-ranking tmap-node-type-specific\">\n # <$view tiddler=<<typePath>> field=\"priority\">1</$view>\n </span>\n <$button class=\"tc-btn-invisible tmap-link\"><<id>>\n <$action-setfield\n $tiddler=<<qualify \"$:/state/tabs/MapElementTypeManager\">>\n text=<<defaultTab>> />\n <$action-sendmessage\n $message=\"tmap:tm-load-type-form\"\n id=<<id>>\n mode=<<mode>>\n output=<<output>> />\n </$button>\n </li>\n </$list>\n </ul>\n </div>\n <div>\n <$reveal type=\"nomatch\" text=\"\" default={{!!id}} >\n <$macrocall\n $name=\"tabs\"\n default=<<defaultTab>>\n state=\"$:/state/tabs/MapElementTypeManager\"\n tabsList=<<tabsFilter>> />\n </$reveal>\n <$reveal type=\"match\" text=\"\" default={{!!id}} >\n <div class=\"tmap-flash-message tmap-info\">\n Please select a type from the list or create a new one by\n entering the type name in the search field on the left.\n </div>\n <div class=\"tmap-flash-message tmap-info tmap-node-type-specific\">\n The number next to the node-type label represents it's priority.\n </div>\n </$reveal>\n </div>\n</div>\n"
},
"$:/plugins/felixhayashi/tiddlymap/editor/contextMenu/node": {
"title": "$:/plugins/felixhayashi/tiddlymap/editor/contextMenu/node",
"text": "\\define single()\n <$list filter=\"\n [[tmap:tm-toggle-central-topic, $:/core/images/star-filled, Toggle central topic]]\n [[tmap:tm-delete-element, $:/core/images/delete-button, Delete node]]\">\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=<<tmap \"splitAndSelect\" \", \" \"0\">> />\n <$transclude tiddler=<<tmap \"splitAndSelect\" \", \" \"1\">> />\n <<tmap \"splitAndSelect\" \", \" \"2\">>\n </$button>\n </$list>\n\\end\n\n\\define multi()\n <$list filter=\"\n [[tmap:tm-delete-element, $:/core/images/delete-button, Delete selected nodes]]\">\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=<<tmap \"splitAndSelect\" \", \" \"0\">> />\n <$transclude tiddler=<<tmap \"splitAndSelect\" \", \" \"1\">> />\n <<tmap \"splitAndSelect\" \", \" \"2\">>\n </$button>\n </$list>\n\\end\n\n<div class=\"tc-drop-down\">\n <$macrocall $name=<<mode>> />\n</div>\n"
},
"$:/plugins/felixhayashi/tiddlymap/misc/advancedEditorBar": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/advancedEditorBar",
"text": "\\rules except wikilink\n\\define showEdgeField() show-$(curEdgeId)$\n\n<!-- === View Switcher ========================================== -->\n\n<div class=\"tmap-menu-bar\">\n View:\n <$reveal type=\"match\" text=\"false\" default=<<isViewBound>> >\n <$select\n tiddler=<<viewHolder>>\n field=\"text\"\n default=<<viewLabel>> >\n <$list filter=<<tmap \"option\" \"selector.allViewsByLabel\">> >\n <option value={{!!title}}>\n <$view tiddler={{!!title}} field=\"title\" />\n </option>\n </$list>\n </$select>\n </$reveal>\n <$reveal type=\"match\" text=\"true\" default=<<isViewBound>> >\n <b><<viewLabel>></b>\n </$reveal>\n\n<!-- === Menu =================================================== -->\n\n <$button\n popup=<<qualify \"$:/temp/menu\">>\n class=\"tmap-unicode-button\"\n tooltip=\"Open the Menu\">{{$:/core/images/menu-button}}\n </$button>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/menu\">> >\n <div class=\"tc-drop-down\">\n <a href=\"http://tiddlymap.org#Documentation\" target=\"_blank\">\n {{$:/core/images/info-button}} Open online help\n </a>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-create-view\">\n {{$:/core/images/new-button}} Create new view\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-generate-widget\">\n {{$:/core/images/permalink-button}} Grab widget code\n </$button>\n <div class=\"tmap-list-separator\">Global configurations:</div>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-configure-system\">\n {{$:/core/images/options-button}} Configure TiddlyMap\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-manage-edge-types\">\n <span class=\"tmap-unicode-icon\">◭</span> Manage edge-types\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-manage-node-types\">\n <span class=\"tmap-unicode-icon\">▢</span> Manage node-types\n </$button>\n <div class=\"tmap-view-actions\">\n <div class=\"tmap-list-separator\">Actions for this view:</div>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-edit-view\">\n {{$:/core/images/options-button}} Configure view\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-rename-view\">\n {{$:/core/images/tag-button}} Rename view\n </$button>\n <$button class=\"tc-btn-invisible\" message=\"tmap:tm-delete-view\">\n {{$:/core/images/delete-button}} Delete view\n </$button>\n </div>\n </div>\n </$reveal>\n\n<!-- === Neighbourhood menu ===================================== -->\n\n <$reveal\n type=\"match\"\n text=\"true\"\n default=<<tmap \"option\"\n \"config.sys.editorMenuBar.showNeighScopeButton\">>>\n <$button\n class=<<neighScopeBtnClass>>\n tooltip=\"Change the neighbourhood scope\"\n popup=<<qualify \"$:/temp/neighScope\">>>\n {{$:/core/images/preview-open}}\n </$button>\n </$reveal>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/neighScope\">> >\n <div class=\"tc-drop-down\">\n <div class=\"tmap-list-separator\">Neighbourhood scope</div>\n <$button class=\"tc-btn-invisible\">None\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.neighbourhood_scope=\"\" />\n </$button>\n <$list filter=\"[[1|1 step distance]]\n [[2|2 step distance]]\n [[3|3 step distance]]\n [[4|4 step distance]]\n [[5|5 step distance]]\">\n <$button class=\"tc-btn-invisible\">\n <<tmap \"splitAndSelect\" \"|\" \"1\">>\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.neighbourhood_scope=<<tmap \"splitAndSelect\" \"|\" \"0\">> />\n </$button>\n </$list>\n <$button class=\"tc-btn-invisible\">No limit\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.neighbourhood_scope=\"100\" />\n </$button>\n\n <div class=\"tmap-list-separator\">Neighbourhood traversal</div>\n\n <$radio field=\"config.neighbourhood_directions\" value=\"in\"> Incoming</$radio><br />\n <$radio field=\"config.neighbourhood_directions\" value=\"out\"> Outgoing</$radio><br />\n <$radio field=\"config.neighbourhood_directions\" value=\"\"> Both</$radio>\n\n <div class=\"tmap-list-separator\">Other</div>\n\n <$checkbox field=\"config.show_inter_neighbour_edges\"\n checked=\"true\" unchecked=\"false\"> Inter-neighbour edges</$checkbox>\n\n </div>\n </$reveal>\n\n<!-- === Tracing ===================================== -->\n\n <$reveal\n type=\"match\"\n text=\"true\"\n default=<<isShowNeighbourhood>>>\n <$button\n class=<<tracingBtnClass>>\n tooltip=\"Trace your clicks on neighbouring nodes.\"\n popup=<<qualify \"$:/temp/tmap-tracing\">>>\n {{$:/core/images/timestamp-on}}\n </$button>\n </$reveal>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/tmap-tracing\">> >\n <div class=\"tc-drop-down\">\n <$button message=\"tmap:tm-neighbourhood-reset-trace\">\n {{$:/core/images/erase}} Restart\n </$button>\n <span\n title=\"\n Enable this option to trace your clicks on neighbouring nodes.\n Traced neighbours are temporarily added to the map (until the map is closed)\n as if they where regular nodes of the map\"\n >\n <$checkbox\n field=\"config.neighbourhood_trace_clicks\"\n checked=\"true\"\n unchecked=\"false\"\n >\n Trace clicked nodes\n </$checkbox>\n </span>\n <br />\n <span title=\"Will focus an zoom on the latest traced node\">\n <$checkbox\n field=\"config.neighbourhood_focus_newly_traced_node\"\n checked=\"true\"\n unchecked=\"false\"\n >\n Focus traced nodes\n </$checkbox>\n </span>\n <br />\n <span title=\"Per default, only neighbours of nodes matching the node filter are displayed. Enable this option to also show neighbours of traced nodes.\">\n <$checkbox field=\"config.neighbourhood_include_traced_node_neighbours\"\n checked=\"true\" unchecked=\"false\"> Show neighbours of all traced nodes</$checkbox>\n </span>\n </div>\n </$reveal>\n\n<!-- === Export menu ============================================ -->\n\n <$reveal\n type=\"match\"\n text=\"true\"\n default=<<tmap \"option\" \"config.sys.editorMenuBar.showScreenshotButton\">>>\n <$button class=\"tmap-unicode-button\" tooltip=\"Open the map-export menu\" popup=<<qualify \"$:/temp/mapExport\">>>\n {{$:/core/images/download-button}}\n </$button>\n </$reveal>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/mapExport\">>>\n <div class=\"tc-drop-down\">\n <$button\n class=\"tc-btn-invisible\"\n tooltip=\"Export the graph and all its elements\n in form of a JSON file\">\n {{$:/core/images/permalink-button}} Save as JSON file\n <$action-sendmessage\n $message=\"tmap:tm-download-graph\"\n view=<<viewLabel>> />\n </$button>\n <$button\n class=\"tc-btn-invisible\"\n tooltip=\"Create a png image to download or save it\n as image or view-placeholder in your wiki\">\n {{$:/core/images/palette}} Save as png image\n <$action-sendmessage $message=\"tmap:tm-save-canvas\" />\n </$button>\n </div>\n </$reveal>\n\n<!-- === Raster menu ============================================ -->\n\n <$reveal\n type=\"match\"\n text=\"true\"\n default=<<tmap \"option\" \"config.sys.editorMenuBar.showRasterMenuButton\">>>\n <$button\n tooltip=\"Change the raster of your map\"\n class=\"tmap-unicode-button\"\n popup=<<qualify \"$:/temp/rasterMenu\">>>\n {{$:/core/images/line-width}}\n </$button>\n </$reveal>\n\n <$reveal type=\"popup\" position=\"below\" state=<<qualify \"$:/temp/rasterMenu\">>>\n <div class=\"tc-drop-down\">\n <$button class=\"tc-btn-invisible\">Disable raster\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.raster=\"\" />\n </$button>\n <div class=\"tmap-list-separator\">Raster sizes</div>\n <$list filter=\"[[50|50px]]\n [[75|75px]]\n [[100|100px]]\n [[150|150px]]\">\n <$button class=\"tc-btn-invisible\">\n <<tmap \"splitAndSelect\" \"|\" \"1\">>\n <$action-setfield\n $tiddler=<<viewRoot>>\n config.raster=<<tmap \"splitAndSelect\" \"|\" \"0\">> />\n </$button>\n </$list>\n </div>\n </$reveal>\n\n</div>\n"
},
"$:/plugins/felixhayashi/tiddlymap/misc/focusButton": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/focusButton",
"text": "\\define filter() [list[$:/temp/tmap/nodes/$(viewLabel)$]search:title{$:/temp/tmap/bar/search}]\n\\define concat(str) $str$\n\n\\define state() $(widgetPopupsPath)$/focus\n\n<div class=\"tmap-focus-button\">\n <$reveal type=\"match\" state=<<state>> text=\"\">\n <$button\n tooltip=\"Zoom on a specific node\"\n class=<<tv-config-toolbar-class>>>{{$:/core/images/advanced-search-button}}\n <$action-setfield $tiddler=\"$:/temp/tmap/bar/search\" text=\"\" />\n <$action-setfield $tiddler=<<state>> text=\"1\" />\n </$button>\n </$reveal>\n <$reveal type=\"nomatch\" state=<<state>> text=\"\">\n <$button\n tooltip=\"Close zoom popup\"\n class=<<tv-config-toolbar-class>>>{{$:/core/images/advanced-search-button}}\n <$action-setfield $tiddler=<<state>> text=\"\" />\n </$button>\n <div class=\"tmap-search-dropdown\">\n <div class=\"tc-drop-down\">\n <$edit-text\n focus=\"true\"\n tiddler=\"$:/temp/tmap/bar/search\"\n field=\"text\"\n type=\"text\"\n tag=\"input\"\n default=\"\" />\n <small><$count filter=<<filter>> /> results</small>\n <hr />\n <div class=\"tmap-very-small-list\">\n <$list filter=<<filter>>\n variable=\"item\"\n emptyMessage=\"//No results//\">\n <$button\n class=\"tc-btn-invisible\"\n message=\"tmap:tm-focus-node\"\n param=<<item>>>\n <$view tiddler=<<item>> field=\"title\" />\n </$button>\n </$list>\n </div>\n </div>\n </div>\n </$reveal>\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/hook/editor": {
"title": "$:/plugins/felixhayashi/tiddlymap/hook/editor",
"caption": "Map",
"tags": "$:/tags/SideBar",
"text": "\\define width() calc(100% - 15px)\n\n<div class=\"tmap-mobile-editor\">\n <div class=\"tmap-flash-message tmap-warning\">\n The editor is not displayed in mobile mode.\n </div>\n</div>\n<div class=\"tmap-desktop-editor\">\n <$tiddlymap\n class=\"tmap-sidebar-map-editor\"\n editor=\"advanced\"\n object-id=\"main_editor\"\n click-to-use=\"false\">\n </$tiddlymap>\n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/hook/liveTab": {
"title": "$:/plugins/felixhayashi/tiddlymap/hook/liveTab",
"caption": "Live",
"text": "\\define width() calc(100% - 15px)\n\n<div class=\"tmap-mobile-editor\">\n <div class=\"tmap-flash-message tmap-warning\">\n The live tab is not displayed in mobile mode.\n </div>\n</div>\n<div class=\"tmap-desktop-editor\">\n <$set name=\"view\"\n filter=\"[{$:/temp/tmap/currentTiddler}get[tmap.open-view]]\"\n emptyValue=<<tmap \"option\" \"config.sys.liveTab.fallbackView\">>>\n <div>\n <$tiddlymap\n view=<<view>>\n click-to-use=\"false\"\n refresh-triggers=\"$:/temp/tmap/currentTiddler\"\n object-id=\"live_tab\">\n </$tiddlymap>\n </div>\n </$set> \n</div>"
},
"$:/plugins/felixhayashi/tiddlymap/misc/quickConnectButton": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/quickConnectButton",
"tags": "$:/tags/ViewToolbar",
"description": "{{$:/language/Buttons/TiddlyMap/Hint}}",
"caption": "{{$:/plugins/felixhayashi/tiddlymap/icon}} {{$:/language/Buttons/TiddlyMap/Caption}}",
"text": "\\define buttonClass() $(tv-config-toolbar-class)$ $(additional-classes)$\n\n\\define nonExistentItem()\n<<item>> <span style=\"color: #9E9E9E\">(will be created)</span>\n\\end\n\n\\define noConnectionsMsg()\n<tr><td colspan=\"4\">//No connections found!//</td></tr>\n\\end\n\n\\define normalSearchFilter()\n[!is[system]!has[draft.of]search:title{$:/temp/quickConnectSearch}sortcs[title]limit[50]]\n\\end\n\n\\define regexSearchFilter()\n[!is[system]!has[draft.of]regexp{$:/temp/quickConnectSearch}sortcs[title]limit[50]]\n\\end\n\n\\define showButton(state)\n<$button set=\"$:/temp/tmap/state/popup/quickConnect\"\n setTo=\"$state$\" tooltip={{$:/language/Buttons/TiddlyMap/Hint}} \n aria-label={{$:/language/Buttons/TiddlyMap/Caption}}\n class=<<buttonClass>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">{{$:/plugins/felixhayashi/tiddlymap/icon}}</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TiddlyMap/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n\\define searchResults()\n<td>\n <$button tooltip=\"Create incoming edge\">\n <<tmap \"option\" \"misc.arrows.in\">>\n <$action-sendmessage $message=\"tmap:tm-create-edge\"\n from=<<item>>\n to=<<currentTiddler>>\n force=\"true\"\n label={{$:/temp/quickConnectSearch/type}}\n view={{$:/temp/quickConnectSearch/view}} />\n </$button>\n</td>\n<td>\n <$button tooltip=\"Create outgoing edge\">\n <<tmap \"option\" \"misc.arrows.out\">>\n <$action-sendmessage $message=\"tmap:tm-create-edge\"\n from=<<currentTiddler>>\n to=<<item>>\n force=\"true\"\n label={{$:/temp/quickConnectSearch/type}}\n view={{$:/temp/quickConnectSearch/view}} />\n </$button>\n</td>\n<td>\n <$list\n filter=\"[<item>is[tiddler]]\"\n emptyMessage=<<nonExistentItem>>>\n <$view tiddler=<<item>> field=\"title\" />\n </$list>\n</td>\n\\end\n\n\\define hidePopup()\n<$macrocall $name=\"showButton\" state=<<qualify>> />\n\\end\n\n\\define showPopup()\n<$set name=\"additional-classes\" value=\"tmap-active-button\">\n <$macrocall $name=\"showButton\" state=\"\" />\n</$set>\n<$set\n name=\"searchFilter\"\n filter=\"[field:title[$:/state/tmap/tid-toolbar]has[re-filter]]\"\n value=<<regexSearchFilter>>\n emptyValue=<<normalSearchFilter>>>\n<div class=\"tmap-quick-connect tc-reveal tc-popup\">\n <div class=\"tc-drop-down\">\n <div class=\"title\">Create connection</div>\n <table class=\"tmap-quick-connect-search-bar\">\n <tr>\n <td>Type:</td>\n <td>\n <$edit-text\n tiddler=\"$:/temp/quickConnectSearch/type\"\n field=\"text\"\n type=\"text\"\n tag=\"input\"\n default=\"\" />\n <$select tiddler=\"$:/temp/quickConnectSearch/type\" default=\"\">\n <option></option>\n <$list filter=<<tmap \"option\" \"selector.allEdgeTypesById\">>>\n <option>{{!!title}}</option>\n </$list>\n </$select>\n </td>\n </tr>\n <tr>\n <td>Search:</td>\n <td>\n <$edit-text tiddler=\"$:/temp/quickConnectSearch\" type=\"text\" tag=\"input\" default=\"\"></$edit-text>\n <$checkbox\n tiddler=\"$:/state/tmap/tid-toolbar\"\n field=\"re-filter\"\n checked=\"1\"\n unchecked=\"\"\n default=\"\"> regexp\n </$checkbox>\n<!--\n <small>(<$count filter=<<searchFilter>> /> results)</small>\n-->\n </td>\n </tr>\n </table>\n <table class=\"tmap-create-connection-table\">\n <tr>\n <td colspan=\"2\">\n <table class=\"tmap-very-small-list\">\n <$list\n filter=<<searchFilter>>\n variable=\"item\">\n <tr><<searchResults>></tr>\n </$list>\n <tr>\n <$list filter=\"[{$:/temp/quickConnectSearch}regexp[.+]] -[is[tiddler]]\" variable=\"item\">\n <<searchResults>>\n </$list>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n <div class=\"title\">Existing Connections</div>\n <div class=\"tmap-quick-connect-existing-bar\">\n <$select\n tiddler=\"$:/state/tmap/tid-toolbar\"\n field=\"direction\"\n default=\"both\">\n <option value=\"both\">both</option>\n <option value=\"in\">incoming</option>\n <option value=\"out\">outgoing</option>\n </$select>\n <$checkbox\n tiddler=\"$:/state/tmap/tid-toolbar\"\n field=\"filter.links\"\n checked=\"-[[tw-body:link]]\"\n unchecked=\"\"\n default=\"\"> hide links\n </$checkbox>\n </div>\n <table class=\"tmap-connection-table\">\n<!--\n <tr>\n <th></th>\n <th>Tiddler</th>\n <th>Type</th>\n <th></th>\n </tr>\n-->\n \n <$tmap-connections\n filter=<<tmap mergeFields \"$:/state/tmap/tid-toolbar\" \"filter.\">>\n direction={{$:/state/tmap/tid-toolbar!!direction}}\n emptyMessage=<<noConnectionsMsg>>>\n <tr>\n <td title=<<direction>>><<directionSymbol>></td>\n <td><$link to=<<neighbour>>><$view field=\"title\" /></$link></td>\n <td><<edge.type>></td>\n <td>\n <$button\n tooltip=\"Delete this connection\"\n class=\"tc-btn-invisible\">{{$:/core/images/close-button}}\n <$action-sendmessage $message=\"tmap:tm-remove-edge\"\n id=<<edge.id>>\n from=<<edge.from>>\n to=<<edge.to>>\n type=<<edge.type>> />\n </$button>\n </td>\n </tr>\n </$tmap-connections>\n </table> \n </div>\n</div>\n</$set>\n\\end\n\n<$list filter=\"[all[current]is[tiddler]]\"><$list filter=\"[{$:/temp/tmap/state/popup/quickConnect}prefix<qualify>]\" variable=\"item\" emptyMessage=<<hidePopup>>><<showPopup>></$list></$list>"
},
"$:/plugins/felixhayashi/tiddlymap/media/fullscreen.png": {
"title": "$:/plugins/felixhayashi/tiddlymap/media/fullscreen.png",
"type": "image/png",
"text": "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"
},
"$:/plugins/felixhayashi/tiddlymap/media/halfscreen.png": {
"title": "$:/plugins/felixhayashi/tiddlymap/media/halfscreen.png",
"type": "image/png",
"text": "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"
},
"$:/plugins/felixhayashi/tiddlymap/icon": {
"title": "$:/plugins/felixhayashi/tiddlymap/icon",
"tags": "$:/tags/Image",
"text": "<svg\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n class=\"tc-image-tiddlymap-button tc-image-button\"\n version=\"1.1\"\n width=\"22pt\"\n height=\"22pt\"\n viewBox=\"0 0 128 128\">\n <defs\n id=\"defs4\">\n <marker\n refX=\"0\"\n refY=\"0\"\n orient=\"auto\"\n id=\"Arrow1Lend\"\n style=\"overflow:visible\">\n <path\n d=\"M 0,0 5,-5 -12.5,0 5,5 0,0 z\"\n transform=\"matrix(-0.8,0,0,-0.8,-10,0)\"\n id=\"path3850\"\n style=\"fill-rule:evenodd;stroke:#000000;stroke-width:1pt\" />\n </marker>\n <marker\n refX=\"0\"\n refY=\"0\"\n orient=\"auto\"\n id=\"Arrow1Lstart\"\n style=\"overflow:visible\">\n <path\n d=\"M 0,0 5,-5 -12.5,0 5,5 0,0 z\"\n transform=\"matrix(0.8,0,0,0.8,10,0)\"\n id=\"path3847\"\n style=\"fill-rule:evenodd;stroke:#000000;stroke-width:1pt\" />\n </marker>\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4329\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4321\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4315\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4307\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4299\" />\n <inkscape:path-effect\n effect=\"skeletal\"\n id=\"path-effect4293\" />\n </defs>\n <g\n transform=\"translate(0,-1024.5289)\"\n id=\"layer1\">\n <path\n d=\"m 17.867073,4.5821643 a 3.7249374,3.7249374 0 1 1 -7.449875,0 3.7249374,3.7249374 0 1 1 7.449875,0 z\"\n transform=\"matrix(-6.3328802,0,0,6.2775831,193.9581,1100.3667)\"\n id=\"path4139-1-14\"\n style=\"fill-opacity:1;fill-rule:nonzero\" />\n <path\n d=\"M 77.450496,1064.5069 C 58.849552,1025.9634 15.704158,1023.3858 2.8821873e-7,1034.558 L 0.02388589,1035.2674 C 24.502636,1022.2072 44.810725,1042.1507 60.163934,1074.112 z\"\n id=\"path4337\"\n style=\"fill-opacity:1;stroke-width:0.58181816;stroke-miterlimit:4;stroke-dasharray:none;marker-start:none;marker-end:none\" />\n <path\n d=\"m 12.878637,11.280739 4.75937,-2.7478243 4.759371,-2.7478236 0,5.4956479 0,5.495648 -4.759371,-2.747824 z\"\n transform=\"matrix(4.6545455,0,0,4.6545455,-13.580429,1027.7638)\"\n id=\"path3004\"\n style=\"fill-opacity:1;fill-rule:nonzero\" />\n </g>\n <metadata\n id=\"metadata3772\">\n <rdf:RDF>\n <cc:Work\n rdf:about=\"\">\n <dc:title></dc:title>\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n </cc:Work>\n </rdf:RDF>\n </metadata>\n</svg>\n"
},
"$:/plugins/felixhayashi/tiddlymap/media/surface.png": {
"title": "$:/plugins/felixhayashi/tiddlymap/media/surface.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAAmALMAAQfdEQQAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfeDBYVBDLiNMeiAAAFvUlEQVRIx7WXbUxTZxTH/+c8VwQLlAKuEotF2mJRlMFEqeCUiMzojH7YEjMSlM1EY2Z04vbBbUrcZqbOTZfFOKMOcWRuZMyoS4xUN16EMUVUMkAFJ6VQkdFSoOIL9O5DBREFX/l/vOf+z+88z715znkITyMZZMjDTLfEC0iWE0hAD0DlZhkC7HCDagWoxA0cvzq/uwgE+UkpachoJjhiCta6mXYwATLfN7AnM923MzGIuC8hARn/lN3ZiUy4nxlsyEM6QAcgPECdb6TNFDTbMn10UnOkMsap9dE5AMDSVaeqdlYoz9qL1WftReOuuS6HMDHcshsEfrdyXscPTw3W/cabieRPmYAEdcrltLD3q2ar32x4mq9S2HIi9LBl78QzracnMDEI9FlFin3jE8G6PN5JLK9hAt4Zv6ps0+TvyvAc+rLmo+m5DfungwhEvKs8uWVt/7h4CPorb2VJzmACPpy01bzO+MUFPKcSg+c2+kijOs85zoQTKF6TplA0ZrvyHwEb8pAOgW0kgE8m7zyZHr6uGi+o6IDpLQEjAp1/tZ7WMUkJY5f6WRqzOy48AP8CETSCylkAS3VrS1YbNl7CS9IkZcx/rm5XT1XHxVBBvCh+gfPzqlzIDAD6kVgDBhJGp1z+OPLrc3jJWhOx6ZwpKKmGiGEL1q4BAIYMYqYdBCBt/OoqDJPeGpteJZEEiUfsgAxi/TG8DgAG/yjb7FcWNAwXOD5oljVcMcEmSELSH/rXmYjngwnTgmZZHmeIPaFcPlTCJ8UH/GwWIoYkjZzPRDSDQJgWNKt54Is513drb3W7vIdK5uru9BkslnN9t3amWZPaB/aPaxYQYBImBsFAxJiojHEONB6u/z5mpPC+N1jihQXRi72Fz92hCrPfaQnIub5bCwB6/ygnEYNBEczEKiLGuPtnb3/dvN2o8mbvQRO33WtVyPLgjWhP7ZbEcF9jY74tzwAAY701DokkCJJU7KmAHzEtK01OjvR/tcFLeN/trXjganUKY7PSS9X5uPiMk2PSetzdYol2RUWdq0b94JD2dDKGDAcRw9pVp+pvAoAsk9m8Ur+heE/tlsSB367tXqsiy2Q26xTG5t4V9fdH+EU1laTcyE4NW1Xffq/Nd2FB9GLbbatKIgFBwiEJ4qtMrK5uv6TU+OgcM82aVIPfpKYsk9kMAKlhq+pTw1bVx55QLldIfl06hbG5zlWjLkq25vQWN9OsSV1YEL14iXZFRb4tzxDhF9XnB4CYgPg6ALjmqlF61oorDOZSAqPcUaoGgJX6DcUHTafMA7fu/DznvpX6DcUyZPRCe1WUbM0J9Aru3FO7JVGGjP7Q3uKyTGZzVUelmjxbXUqTT/rOkmTpT51vpC13RkkuhlHrK5e93XCrPkR298zmyrmdhTIR/r1VG3KmJV8zXNCKtjJNU5c1RJDAJNOcIgZBJlAGg/Czdf/E4QKbbx6dyCQgwBmZlOn2dKc2+y4AOGsvMn57ZfPUlw3NseydeslZbiQQ7tQH7Orrx1W5kEPTfBuIeFF158XQwJHBbUa/6NaXAT118/iEvKZDSUwCIHn5TylHyx+aQBoPuSpC05QKJk4osxfqVV7BbUa/Ka0vCs1p2PsGEwPg7dlxv2977MxlzW7PH7dMpSJQ/Fl7of5Wj6snLjCx6Xmgh60Hph5pykliYshw78qKO5Yx6LAHAJaDbSfC0gMVTFJCTcel0MsdlQF+kv/dsT7a9qcBXnT+HfqjZY+pzF4Q4xlvsf3A1IehQw70cwoi3yPQPkECRIzxowy2aOW0+skBsc3higntY7w1DgC4cbtRZem65l/dflFd01GpvXnHFkIgeMZaWr4v9sj+Z77CZMrg0sKoD4jFV17sBYAgSAITQ5Dk2TLP2QuA+p4TaP2412K/yaTMZ7/CDCzgfElcIhEvJNAMiSQdEasESSBiB4PrBIsSctOx8XHTiocC9up/PG8QrAaKLngAAAAASUVORK5CYII="
},
"$:/config/EditTemplateFields/Visibility/tmap.id": {
"title": "$:/config/EditTemplateFields/Visibility/tmap.id",
"text": "hide"
},
"$:/language/Buttons/TiddlyMap/Caption": {
"title": "$:/language/Buttons/TiddlyMap/Caption",
"text": "tiddlymap"
},
"$:/language/Buttons/TiddlyMap/Hint": {
"title": "$:/language/Buttons/TiddlyMap/Hint",
"text": "Toggle TiddlyMap actions"
},
"$:/plugins/felixhayashi/tiddlymap/misc/macros": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/macros",
"text": "\\define concat(str) $str$\n\n\\define input-text(field, index, default, readonly, class, focus)\n <$reveal type=\"match\" text=\"\" default=\"$readonly$\">\n <$edit-text\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n type=\"text\"\n tag=\"input\"\n default=\"$default$\"\n focus=\"$focus$\"\n class=\"$class$\" />\n </$reveal>\n <$reveal type=\"nomatch\" text=\"\" default=\"$readonly$\">\n <input type=\"text\" value=\"$default$\" readonly=\"true\" disabled=\"true\" />\n </$reveal>\n\\end\n\n\\define input-button(field, index, default, default, label:\"Proceed\")\n <div class=\"tmap-button-wrapper\">\n <$button>$label$\n <$action-setfield $tiddler=<<output>> $field=\"$field$\" index=\"$index$\" $value=\"$default$\" />\n </$button>\n </div>\n\\end\n\n\\define input-textarea(field, index, default, default, class, focus)\n <$edit-text\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n autoHeight=\"no\"\n type=\"text\"\n tag=\"textarea\"\n default=\"$default$\"\n class=\"$class$\"\n focus=\"$focus$\" />\n\\end\n\n\\define input-checkbox(field, index, readonly, default)\n <$reveal type=\"match\" text=\"\" default=\"$readonly$\">\n <$checkbox\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n checked=\"true\"\n unchecked=\"false\"\n default=\"$default$\" />\n </$reveal>\n <$reveal type=\"nomatch\" text=\"\" default=\"$readonly$\">\n <input type=\"checkbox\" value=\"$default$\" readonly=\"true\" disabled=\"true\" />\n </$reveal>\n\\end\n\n\\define input-multi-checkbox(selectFilter, invert:\"no\", default)\n <div class=\"tmap-no-stretch\">\n <$list\n filter=\"$selectFilter$\"\n emptyMessage=\"– This list contains no items –\">\n <$checkbox\n tiddler=<<output>>\n tag=<<tmap \"splitAndSelect\" \"|\" \"0\">>>\n <$view\n tiddler=<<tmap \"splitAndSelect\" \"|\" \"1\">>\n field=\"title\" />\n </$checkbox><br />\n </$list>\n </div>\n\\end\n\n\\define input-select(field, index, selectFilter, default, nochoice)\n <$select\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n default=\"$default$\">\n <$set name=\"nochoice\" value=\"$nochoice$\">\n <$list filter=\"[<nochoice>regexp[.+]]\">\n <option value=\"\"><b><<nochoice>></b></option>\n </$list>\n </$set>\n <$list filter=\"$selectFilter$\">\n <option value=<<tmap \"splitAndSelect\" \"|\" \"0\">> >\n <$view tiddler=<<tmap \"splitAndSelect\" \"|\" \"1\">> field=\"title\" />\n </option>\n </$list>\n </$select>\n\\end\n\n\\define input-radio(field, index, selectFilter, default)\n <$list filter=\"$selectFilter$\">\n <$radio\n tiddler=<<output>>\n field=\"$field$\"\n index=\"$index$\"\n value=<<tmap \"splitAndSelect\" \"|\" \"0\">>>\n <<tmap \"splitAndSelect\" \"|\" \"1\">>\n </$radio><br />\n </$list>\n\\end\n\n\\define tmap-row(title, field, index, type, descr, note, label, default, readonly, reset, selectFilter, nochoice, invert, class, focus)\n <tr>\n <td class=\"tmap-title\">$title$:</td>\n <td>\n <<$type$\n field:\"$field$\"\n index:\"$index$\"\n readonly:\"$readonly$\"\n default:\"$default$\"\n label:\"$label$\"\n invert:\"$invert$\"\n selectFilter:\"$selectFilter$\"\n nochoice:\"$nochoice$\"\n focus:\"$focus$\"\n class:\"$class$\">>\n <$reveal type=\"match\" text=\"true\" default=\"$reset$\">\n <$button>reset\n <$action-setfield $tiddler=<<output>> $field=\"$field$\" $index=\"$index$\" $value=\"$default$\" />\n </$button>\n </$reveal>\n </td>\n <td>\n <span class=\"tmap-description\">$descr$</span>\n <$reveal type=\"nomatch\" text=\"\" default=\"$note$\">\n <div class=\"tmap-note\">''Note:'' $note$</div>\n </$reveal>\n </td>\n </tr>\n\\end\n\n\\define visConfiguration(inheritedList, extensionField, styleName:\"style\")\n <fieldset><legend>Visjs configurations ($styleName$)</legend>\n <div class=\"tmap-flash-message tmap-info\">\n Only config items that you actually changed have an effect on\n the graph. Other options are visible, yet, inactive.\n </div>\n <$tmap-config\n mode=\"manage-node-types\"\n inherited=\"$inheritedList$\"\n extension=\"$extensionField$\" />\n </fieldset>\n\\end\n"
},
"$:/plugins/felixhayashi/tiddlymap/misc/defaultViewHolder": {
"title": "$:/plugins/felixhayashi/tiddlymap/misc/defaultViewHolder",
"text": "Default"
},
"$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:central-topic": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:central-topic",
"description": "The style is applied to the node that you marked as central topic in a map.",
"style": "{\"font\":{\"size\":22,\"color\":\"rgba(0,0,0,1)\"},\"shape\":\"star\"}"
},
"$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:neighbour": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/nodeTypes/tmap:neighbour",
"description": "Neighbours are all nodes that are not part of the original set of nodes (\"matches\") but are connected (either outgoing or incoming) to a node of the original set.",
"style": "{\"color\":\"#565656\"}"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Default/filter/edges": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Default/filter/edges"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Default/filter/nodes": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Default/filter/nodes"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Default": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Default",
"config.physics_mode": "false",
"isview": "true"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Live View/filter/edges": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Live View/filter/edges",
"filter": "[prefix[$:/plugins/felixhayashi/tiddlymap/graph/edgeTypes]]",
"text": "\n\n"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Live View/filter/nodes": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Live View/filter/nodes",
"filter": "[field:title{$:/temp/tmap/currentTiddler}]"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Live View": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Live View",
"config.refresh-triggers": "$:/temp/tmap/currentTiddler",
"config.physics_mode": "true",
"config.vis": "{\"physics\":{\"forceAtlas2Based\":{\"springConstant\":0.09}}}",
"config.neighbourhood_scope": "1",
"created": "20150331114808577",
"modified": "20200509212547688",
"type": "text/vnd.tiddlywiki",
"isview": "true"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Graph search/filter/nodes": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Graph search/filter/nodes",
"filter": "[!is[system]search{$:/temp/search}] [!is[system]search:tags{$:/temp/search}] [!is[system]search:text{$:/temp/search}limit[10]]"
},
"$:/plugins/felixhayashi/tiddlymap/graph/views/Graph search": {
"title": "$:/plugins/felixhayashi/tiddlymap/graph/views/Graph search",
"config.refresh-triggers": "$:/temp/search",
"config.neighbourhood_scope": "1",
"config.physics_mode": "true"
}
}
}
{
"field.nodeLabel": "caption",
"field.nodeIcon": "icon",
"field.nodeInfo": "description",
"field.viewMarker": "isview",
"liveTab.fallbackView": "OntoRisk Project",
"edgeClickBehaviour": "manager",
"debug": "false",
"notifications": "true",
"popups.enabled": "true",
"popups.delay": "600",
"popups.width": "240px",
"popups.height": "140px",
"jsonIndentation": "1",
"alwaysAddNodeIdToViewFilter": "true",
"editNodeOnCreate": "false",
"singleClickMode": "true",
"nodeFilterNeighbours": "false",
"editorMenuBar.showNeighScopeButton": "true",
"editorMenuBar.showRasterMenuButton": "true",
"editorMenuBar.showScreenshotButton": "true",
"defaultView": "OntoRisk Project",
"raster": "20"
}
{"nodes":{"borderWidthSelected":5,"shape":"box","size":10,"font":{"size":22}},"interaction":{"tooltipDelay":100},"edges":{"font":{"size":10}},"layout":{"hierarchical":{"levelSeparation":100,"nodeSpacing":100,"treeSpacing":120}}}
{
"4ca0f9db-41dc-4f0e-aabc-87f209fa3a34": {
"x": -218,
"y": -365
},
"1fc7cb79-dbdc-418d-92f1-685ceafcd809": {
"x": -210,
"y": 12
},
"d790289b-a044-4493-89c8-858ce6210736": {
"x": -535,
"y": -351
},
"caf810fc-3842-4998-98ae-7385d4f24816": {
"x": -59,
"y": -159
},
"e004236e-97fa-456b-bb03-1b2203a73c8a": {
"x": -497,
"y": 37
},
"a266a84b-d016-4ab0-87a1-f20517c3ef32": {
"x": -412,
"y": -96
}
}
{
"500b0c0c-d3bc-4b19-aeee-a39f04927999": {
"x": -160.5,
"y": -188.375
}
}
{
"969ce24c-7e78-4113-aa59-46301a73780a": {
"x": -562.8061615558112,
"y": -276.91755481775493
}
}
{
"d78da0f7-b41f-4188-8c64-0a5da44309c4": {
"x": -236,
"y": -81
},
"f8bfb0d2-94c7-4847-9904-a0767066115c": {
"size": 12,
"x": -199,
"y": -226
},
"ca373a0e-5462-441e-8784-c663be32d836": {
"x": -382,
"y": -334
},
"d37b660e-bb65-4d93-84ff-297413df6b43": {
"x": 0,
"y": -163
},
"65c947d3-8427-482b-9b0d-8c1dcbe04317": {
"x": -155,
"y": 68
},
"aed1a709-4dc7-4d41-b5a8-7177bbddbe82": {
"x": 87,
"y": 85
},
"4ed46fa4-e4e1-42d4-a7cc-c942f5b5f7f8": {
"x": -319,
"y": -21
},
"df0c6808-ea4d-4799-a7c4-32857e2193ed": {
"x": -678,
"y": -214
}
}
{
"df0c6808-ea4d-4799-a7c4-32857e2193ed": {
"x": -975,
"y": -375
},
"1616685c-2c4a-42d6-b158-e567a65a79bf": {
"x": -129,
"y": -168.5
},
"d78da0f7-b41f-4188-8c64-0a5da44309c4": {
"x": -445,
"y": -325
},
"c536ae64-b79f-4105-84c2-bf74593c6354": {
"x": -764,
"y": -268
},
"04dd86ee-5af4-410f-abb6-2af1d2902501": {
"x": -631,
"y": -398
},
"ee0a8d17-fdf1-4ea6-b188-c3f6d38e5923": {
"x": -360,
"y": -201
},
"0968a148-76e2-4d73-ba8a-2ab490aebd1b": {
"x": -722,
"y": -103
},
"7c2179f9-7160-44b6-9ba0-3b38b3787881": {
"x": -577,
"y": -20
},
"4dfe3981-7d74-402f-87bf-2f89015d174b": {
"x": -864,
"y": -176
},
"1b4d1aaa-d83f-49e8-a4cf-36c8e41e5a62": {
"x": -681,
"y": -465
},
"e6c160ea-d8b6-4918-a2fe-f74006a16128": {
"x": -501,
"y": -451
},
"f8bfb0d2-94c7-4847-9904-a0767066115c": {
"x": -300,
"y": -450
},
"ca373a0e-5462-441e-8784-c663be32d836": {
"x": -215,
"y": -122
},
"aed1a709-4dc7-4d41-b5a8-7177bbddbe82": {
"x": -184,
"y": -236
},
"d37b660e-bb65-4d93-84ff-297413df6b43": {
"x": 36,
"y": 7
},
"8f51e309-7dd9-4222-aec3-06839f3fa5dc": {
"x": -830,
"y": -571
},
"caf810fc-3842-4998-98ae-7385d4f24816": {
"x": 75,
"y": -375
},
"c95e414e-e934-4498-a138-23a41d84e2d8": {
"x": 44,
"y": -53
},
"1fc7cb79-dbdc-418d-92f1-685ceafcd809": {
"x": 89,
"y": 17
}
}
{
"1fc7cb79-dbdc-418d-92f1-685ceafcd809": {
"x": -237.5,
"y": -137.375
}
}
{
"4ed46fa4-e4e1-42d4-a7cc-c942f5b5f7f8": {
"shape": "hexagon",
"x": -179.5,
"y": -127.375
},
"caf810fc-3842-4998-98ae-7385d4f24816": {
"x": 80.5,
"y": -150.375
},
"c95e414e-e934-4498-a138-23a41d84e2d8": {
"x": -43.5,
"y": 17.625
}
}
{
"7c710774-5cfb-42d1-a0e2-eae65591c331": {
"x": -226.5,
"y": -167.375
},
"99b73f94-3886-4965-a955-f94db89a7ba3": {
"x": -135.5,
"y": -103.375
}
}
{
"originalVersion": "0.16.1+9773",
"dataStructureState": "0.11.0",
"showWelcomeMessage": false
}
{
"tiddlers": {
"$:/plugins/felixhayashi/topstoryview/config.js": {
"title": "$:/plugins/felixhayashi/topstoryview/config.js",
"text": "/*\\\n\ntitle: $:/plugins/felixhayashi/topstoryview/config.js\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n(function(){\"use strict\";exports.config={classNames:{storyRiver:\"tc-story-river\",backDrop:\"story-backdrop\",tiddlerFrame:\"tc-tiddler-frame\",tiddlerTitle:\"tc-title\"},references:{userConfig:\"$:/config/topStoryView\",focussedTiddlerStore:\"$:/temp/focussedTiddler\",refreshTrigger:\"$:/temp/focussedTiddler/refresh\"},checkbackTime:$tw.utils.getAnimationDuration()}})();",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/topstoryview/layout": {
"text": "html .tc-story-river:after {\n content: \"\";\n display: block; }\n",
"title": "$:/plugins/felixhayashi/topstoryview/layout",
"type": "text/vnd.tiddlywiki",
"tags": [
"$:/tags/Stylesheet"
]
},
"$:/plugins/felixhayashi/topstoryview/Configuration": {
"title": "$:/plugins/felixhayashi/topstoryview/Configuration",
"text": "Please see the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Scroll offset:</th>\n <td><$edit-text tiddler=\"$:/config/topStoryView\" field=\"scroll-offset\" tag=\"input\" default=\"150px\" /></td>\n </tr>\n</table>"
},
"$:/plugins/felixhayashi/topstoryview/License": {
"title": "$:/plugins/felixhayashi/topstoryview/License",
"text": "This code is released under the BSD license. For the exact terms visit:\n\nhttps://github.com/felixhayashi/TW5-TopStoryView/blob/master/LICENSE"
},
"$:/plugins/felixhayashi/topstoryview/Readme": {
"title": "$:/plugins/felixhayashi/topstoryview/Readme",
"text": "Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information."
},
"$:/plugins/felixhayashi/topstoryview/top.js": {
"title": "$:/plugins/felixhayashi/topstoryview/top.js",
"text": "/*\\\ntitle: $:/plugins/felixhayashi/topstoryview/top.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n@preserve\n\n\\*/\n(function(){\"use strict\";var t=require(\"$:/plugins/felixhayashi/topstoryview/config.js\").config;var e=\"cubic-bezier(0.645, 0.045, 0.355, 1)\";var i=function(e){this.listWidget=e;this.pageScroller=new $tw.utils.PageScroller;this.pageScroller.scrollIntoView=this.scrollIntoView;this.pageScroller.storyRiverDomNode=document.getElementsByClassName(t.classNames.storyRiver)[0];var i=$tw.wiki.getTiddler(t.references.userConfig);var o=i?i.fields:{};$tw.hooks.addHook(\"th-opening-default-tiddlers-list\",this.hookOpenDefaultTiddlers);var r=parseInt(o[\"scroll-offset\"]);this.pageScroller.scrollOffset=isNaN(r)?71:r;this.recalculateBottomSpace()};i.prototype.refreshStart=function(t,e){};i.prototype.refreshEnd=function(t,e){};i.prototype.hookOpenDefaultTiddlers=function(t){return t};i.prototype.navigateTo=function(t){var e=this.listWidget.findListItem(0,t.title);if(e===undefined)return;var i=this.listWidget.children[e];var o=i.findFirstDomNode();if(!(o instanceof Element))return;this.pageScroller.scrollIntoView(o)};i.prototype.insert=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element))return;this.startInsertAnimation(e,function(){this.recalculateBottomSpace()}.bind(this))};i.prototype.remove=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element)){t.removeChildDomNodes();return}var i=this.getLastFrame()===e;this.startRemoveAnimation(t,e,function(){t.removeChildDomNodes();this.recalculateBottomSpace();if(i){this.pageScroller.scrollIntoView(this.getLastFrame())}}.bind(this))};i.prototype.getLastFrame=function(){var t=this.listWidget.children[this.listWidget.children.length-1];return t?t.findFirstDomNode():null};i.prototype.recalculateBottomSpace=function(){var t=this.pageScroller.storyRiverDomNode;if(this.getLastFrame()){var e=this.getLastFrame().getBoundingClientRect();var i=window.innerHeight;if(e.height<i){t.style[\"paddingBottom\"]=i-e.height+\"px\";return}}t.style[\"paddingBottom\"]=\"\"};i.prototype.scrollIntoView=function(t){if(this.preventNextScrollAttempt){this.preventNextScrollAttempt=false}if(!t)return;var e=$tw.utils.getAnimationDuration();this.cancelScroll();this.startTime=Date.now();var i=$tw.utils.getScrollPosition();var o=t.getBoundingClientRect(),r={left:o.left+i.x,top:o.top+i.y,width:o.width,height:o.height};var n=function(t,e,i,o){if(t<=i){return t}else if(e<o&&i<t+e-o){return t+e-o}else if(i<t){return t}else{return i}},s=n(r.left,r.width,i.x,window.innerWidth),a=r.top-this.scrollOffset;if(s!==i.x||a!==i.y){var l=this,c;c=function(){var t;if(e<=0){t=1}else{t=(Date.now()-l.startTime)/e}if(t>=1){l.cancelScroll();t=1}t=$tw.utils.slowInSlowOut(t);window.scrollTo(i.x+(s-i.x)*t,i.y+(a-i.y)*t);if(t<1){l.idRequestFrame=l.requestAnimationFrame.call(window,c)}};c()}};i.prototype.startInsertAnimation=function(t,i){var o=$tw.utils.getAnimationDuration();var r=window.getComputedStyle(t),n=parseInt(r.marginBottom,10),s=parseInt(r.marginTop,10),a=t.offsetHeight+s;setTimeout(function(){$tw.utils.setStyle(t,[{transition:\"none\"},{marginBottom:\"\"}]);i()},o);$tw.utils.setStyle(t,[{transition:\"none\"},{marginBottom:-a+\"px\"},{opacity:\"0.0\"}]);$tw.utils.forceLayout(t);$tw.utils.setStyle(t,[{transition:\"opacity \"+o+\"ms \"+e+\", \"+\"margin-bottom \"+o+\"ms \"+e},{marginBottom:n+\"px\"},{opacity:\"1.0\"}])};i.prototype.startRemoveAnimation=function(t,i,o){var r=$tw.utils.getAnimationDuration();var n=i.offsetWidth,s=window.getComputedStyle(i),a=parseInt(s.marginBottom,10),l=parseInt(s.marginTop,10),c=i.offsetHeight+l;setTimeout(o,r);$tw.utils.setStyle(i,[{transition:\"none\"},{transform:\"translateX(0px)\"},{marginBottom:a+\"px\"},{opacity:\"1.0\"}]);$tw.utils.forceLayout(i);$tw.utils.setStyle(i,[{transition:$tw.utils.roundTripPropertyName(\"transform\")+\" \"+r+\"ms \"+e+\", \"+\"opacity \"+r+\"ms \"+e+\", \"+\"margin-bottom \"+r+\"ms \"+e},{transform:\"translateX(-\"+n+\"px)\"},{marginBottom:-c+\"px\"},{opacity:\"0.0\"}])};exports.top=i})();",
"type": "application/javascript",
"module-type": "storyview"
}
}
}
{
"tiddlers": {
"$:/plugins/felixhayashi/vis/img/network/acceptDeleteIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/acceptDeleteIcon.png",
"type": "image/png",
"text": "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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNVQxNjo0NTowOCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDVUMTY6NDU6MDgrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjBmYzFjNjhhLTcwZTYtMGY0Ni05ZDk4LWFhNDVjNjYxYThjODwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpiYzZmYmUxNi1mOTBkLWI1NDQtODUzOC05MjFkNjBiZjU0ZWI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDVUMTY6NDU6MDgrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjBmYzFjNjhhLTcwZTYtMGY0Ni05ZDk4LWFhNDVjNjYxYThjODwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNVQxNjo0NTowOCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmJjNmZiZTE2LWY5MGQtYjU0NC04NTM4LTkyMWQ2MGJmNTRlYjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz450LuoAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAATUSURBVHjajJZtTJVlGMd/13U/z+F4sBQOCiovZiMt8YiKZrMtypdh09StbLOtzA1RUmuTkppzIilJOB0Oa21tbaV+6UP5Mlnm5heVkfhyQJ1ONITAkAMqcTDonNOHA6g9qF3b/eF5/vf18r/u676uWwoLC3G73QCoKiICgIhQeGejVw3LMOTIP0xGdRQAFi1E9DyGSkLsKxtWEmAQuXfvHrJlyxZiYmIQkQHjeac/jjfKBsJ8YlnRzQKIgBoIh8ByaRSICAilRCjdk1UeAIhEIogIPT09SFFRER6PZ4DByqr1+WpRoYAquKYuqCPz9SZeeCVA4vggAC2XPVw54eXi0WTOH8yIslIIs+bryTsq+hl0d3cjxcXFuN1uVJVVp9dvEigSwP3iYj9vfV7L6IldPE5uXvZwcKuPsz/7+qLc/I1vexFAMBjEzJ49G9u2WV1TsEaVUhOBmJxVVeR9X8NTI3t5kgxN6GXakia67/bSeC4ZkexprccCZxLnVodCIRRgdU1BgsBuBVzz8qt49yv/oMb2f5TJd7kzBsXeLPHzal4VaiAmZnfupY0JIoKqKqoUGAHX9MV+llf4HxmtMaDyaDZLtvqZushPWEHsAlVFP/3rswSNsEEt4O0v/E9MCebx8PxCP5YNlr3hg7+/TFBEl6mClflGHUl9VdIvGycuJdDgvm/bAtu6j3c0uSmZufQhnRHPBsnIqcOyQGSZAjlEgCkLGh3RDHk6yJWTCQCUZi+gav8Mzh3KpGzeQgCuV3sZEhd06D2f3QgCas9XIuozCjw3q92xMXF8O8218QDM/fAMGLAsmLO2Jnof6rwkpjv10rLaURtEJimWJomtMDLdGUlyRhuBei8AU5Y0M2ZCMyPSW8hc2AxAW4OXUeOdbcKbFsQ2YKwkizCg1uAH9kxWOzU/+ga+X8s/Q/iBKur4w8tL79c69ESiTFXFQvQmyhhu1XsYNeHhW5s2o4OuwDB6ug2uISF8fZED9HQbgh1PM3Zah8PB7UYPGBBalDB+MFB/Kt6x0e0JMSzpDr9XxzmwprNxDB95F9eQkANrrI3HssFQq4hWAnDxaMqgaUoYF6DJ73X8b74Qz/C0Qds016tSUANqVypG92EMnD+SwZ9XPc5KSg/QWu900HotgRHjnA5uN3m4diojmiKzV3cNL25DdTvGwJESn0NhzMR2Ohqc6etoiidpgrNET3zrix6yKf3Bld8WLZ8IZcAG6ip9/LQpyOIt91vG2BltHCwezbbpKzEKYoFodKVO+fUh48f3+Lh20oexIBQqExFk586dxMbGkntp41rELscozFpRxaLN/6Mv/cf4hcMzCYdAzboDKXm7Ozs7MTk5ObhcLs4lzqmeeus4GCublgvJtF61Sc1qxR0beqzh7g4Xx3ZN5/KxaagCsvlASl4pQG9vb5TB0KFDibZtZfmlonxcVgVhAcuGjJxa0l9uImVKO3GpXahA4EYsjbXx3PgtmYbTk1CiKYM1h1LzKvrncmdnJ1JeXo7b7cYYQ9+A4L2r21IJR9ZhXOuxXGAZBvKv/Uui8wELVHYgUn44bdWNfmKRSIRgMIiUlJQQGxs78Krof7oYY8jt2TUCy3oH0XmI+MAejW0gYpoxxg/mF4zu3a8rbvXrPuigq6uLfwcA6IKAIsDf9kIAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/addNodeIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/addNodeIcon.png",
"type": "image/png",
"text": "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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0YjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2OWVmYWE1NS01ZTI5LTIzNGUtYTUzMy0xNDkxYjM1NDNmYmE8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0Yjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjY5ZWZhYTU1LTVlMjktMjM0ZS1hNTMzLTE0OTFiMzU0M2ZiYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5WKqp9AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYXSURBVHjafFZtUFTXGX7e9z27sveuMCwYV8ElrA7YSFYHtJUPkaaI0aRqG8wP00zUzljDINNSA/2ROtpO24SxnahlxjYd7SSjmUkymcxYlDhQPzHGisEVp8HwYWCVVVgEsrsuLnL74+5uqTF9Z+7cO/d8PO95zvO851BlZSV0XQcAMDOYGQBARDhX3JRmMDYZwLPMWAzGHACYIgwS46oBNBNwtOL8CwE8EkSEUCgE2rJlC2w2G4go8Zwo/bMDgnoG6gxLfAAAYvPDMCCszKTAMIAGAhrWnf15AAAMwwARIRKJgDZv3gy73Q4iAjPjxIr9VVOMRhbAYKB8zvrO0llrfEsdKwLZek6YAPSFvtSu3GtLawu0ZJ6625SHGBQB1T88t6MxvopgMAjaunUrdF0HM+P4yv27DMYeJmB1RqW3Jnf3tQX2p0L4P9EXuqEd7PmDp+XuMU9sRbvXnnt1TxxACgoKYLVacbzsQDUJGkSATe6qi28uPtzusM6Kxie6NHLGUX3lxVUNX9StPHnn4wy3njuUYcu6n2pNi66avcEXnByP/nv8aiaIyrqz2gO5A9+9FI1GIfn5+WhZdTAdjFMkwMvZOy7uWnTAOz3L4Yk71m3t69fdfTDoUGTBeHTUfiHQ6lo7Z2OXJvpDAChKe+aOCdKRKWxZ2+1qb3yyd3GYmRkQ7GQBVs99wfv6on3eR2k4PdTkDEbH7IuS8/svld/561PJS/pDk1/bzwx94pze7xc5v/H+YPY6r5BAkdrJzODTK46lE6PeYEJt7u+8j+OZwCBiEAgAoNgKJoEQf6PvNvdrXgtZoNhSf7q0KZ3B2AQmVMze0Jmt54S/DcDCVig2NcvEUGxJAE4Pl+YOr0iv6BRSIPAmBeBZAmHlE2sH4p1uhrq1s0MnnEQMBsf8wRASAICQQCCITN1X7/sOuc0kgOVp3/fPs2WHv+coG7gQOJUnLGsUCTxEjPzUohEA+NfIWUdtx0+efzA1kSSkIGyBAQNCKgHAEBAJ3u79U7kiAcWoem/gb5Fd33nrH3kp+SMWtuAB+GllMJxMjCx9QRgA3uiqL5kwHiTlpxb3smlfMDGYGPP1hcMAkJvs8ScpfdJspdj+MK6Pf+5+u29vyb4lR4+BGEziVESAkEpw6Av1OhUpHCz4qOXbzFWz4Ncdj/v/o08Lt92ODDgZDCEFJYoUGH4mzugP92puPTf0pD3H7wvfdFZdqSxnMtWjoGAAmG9fOLxjwesdjT2/XzIQ7ks3sycYMSEwGHNtWf5bkX5NkYCJBxUBXiGV0XHvosOt54Zey33j/K+8P33++vjnbiGJbbLE+J9SANAb6nJ2B79wcUwETAwQQ7fMjPzMvfP8ja87HUIKMOiaAqMZhrGmLdAy78eZrwwsTS0eObTs+IdtgVanxBUExqGbb5VzrIISGIoUXsmqbgEhJldCQWqRf27SvPAn/o8XmgLhZsUkR4ll37mhk3n94Z4OlzY/7NLcYZfm7o1z2zT4vsvUNSXqprBCkmiTFbPX90/fh8GIT2sf+zTPdDMf4dVnNg4z+E0ixsGeBs9jd5ViSgLHjCb/peaR+MD3d4/ZJg2llyuG2Vwy7QWAs8PNnn1f7vkGSGxAzE6mk+kxkx/p/4unffSCR0hAoL1EBCYiPNdWNcwkNQTCR7feWX6g+7f/A7I8rcw/U6UEe0Ndrhc/W7mtL9ztmqlSgstSS/zTJ28dalpOpkRryrwbhwBACgsLMWPGDOT4ll3qyeqAkJTdCF7P/CrUY/GkLL1rE+2hTbSH8+0Lb/WEuhzhyaA905blf9Vd/895WnZwLHrPevir/cvOB1oLYpTtLrm6oYGIMDExAaqtrUVKSgqYGSKCk0WHq5ikkWEWtNL0imv5qUW+RclLRjJsrhBAuH1/QL8R7HR4xy5nescuP23E6hOA6mLv+sb4uTw6Ogqqq6uDpmkQkcStorX4XRcM1FjZ+kvFFjCJKU1WpkNJJUqIMtX1RyLeX3JtQ0JRhmGYZ/L27duRnJycuFGISOJ9pqh5lrB6iYgqGOxRrOaa54DcZmKvkJxk8JHC9rKh+KVhOsD4+Dj+MwADIf8n5m4xGwAAAABJRU5ErkJggg=="
},
"$:/plugins/felixhayashi/vis/img/network/backIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/backIcon.png",
"type": "image/png",
"text": "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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpmOWQ3OGY4ZC1lNzY0LTc1NDgtODZiNy1iNmQ1OGMzZDg2OTc8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmY5ZDc4ZjhkLWU3NjQtNzU0OC04NmI3LWI2ZDU4YzNkODY5Nzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4jq1U/AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAVTSURBVHjanFVfTFNnFP+d77ve8qeVFbBrpcVgRrCRFikFByLxwSAaE32oRCHD6JMxxhhn8G2RxxH3MsOTbyYsmCAxPMmMMYtkIUYmK60OO0qAK23BFlNob0uh3x7WS5jLZPpLbm6+k/P9zrm5v9855PF4UFhYCABgjIExBgAgIqRSqRIi6gDQRkQ1RGTB3wgR0e8AHgH4Sa/XR/EBiAiJRAJ04cIF5Ofng4g2n0gkUkxENwF0c843LzHGQEQQQkCLExEA9ALotVgsUQAQQmgNQhJCbF5kjCEUCl0moj4t5na7fTU1NUpVVVXUYrEkASAcDhe8efOmxOfzWScmJqoBdBNR99LS0hWz2dynNSSEAF28eBGFhYVgjCEcDn9HRD1EhIMHD3o9Hs9kWVlZAh9BKBQqGB4edr58+dKZ+6JbJpOpBwBWV1fB6+rqIMsyIpHIFcZYL2MMra2tY5cuXRrfuXNnBtvAYDBk3G63oqpqZm5uzgrgSDKZjBoMhueZTAbc5XIhFouVEtFTxhiOHTs2dv78eS8+Efv374+oqpqZnZ21cs5PJJPJPlmWkyynnBuMMTQ0NHi7uro+mVyDx+Pxulwu71ZOlkqlSonoJhGhvb39s8k1nDx50ss5hyRJN9PpdKlERB2aWjSVaEilUvzBgwcORVEs5eXloXPnzk1sV8BkMiUdDofP7/dXZ7PZDilnIhw4cGBeS1pbW2P37t1zBwKBikQiUUREWFhYsHHO0d7evm0Ru90+/+rVq2rO+XGJiJxEhMrKyhgAjI6OWoeHh5tWVla+4JzDZrO9bW5unhwcHGzz+/32np4e+xaDbfoHAMxmc6ijo2O0oqIiJkkSNjY2HBIRmRljMJvNyWfPnln7+/tPMMZQXl6+0NbW9qK2tjYcj8floaEhqKpq+HCkbD3PzMwYBgYG0NXV9UuusFna2kEgELAQEQ4dOvSis7PzN41Ar9dnrl27NqCNkv/C3bt3zy4tLVmICJxzEBFJRBQmorLFxcWCqqqq0Pj4eO3Y2JhbUZTdra2tL2pra8OJRGLHnTt3zkqS9K+huHU4EhHMZnMoGo0W5OIh7nK5jjLGKq1W69vDhw8rRqMxMjc3t2t5eXnX5ORklc/nM+fl5SWnpqa+0uv1K/n5+Ws6nW5NluXNd15e3ppOp1uz2WyzZ86cGQ0Gg6ZAIFCZzWZ/lYjokRDiuN/vt7W0tMw3NTUpbrd78P79++5gMFgRiUTKHj58WMYYQ3V19etTp05tq6Lp6Wkb5xxCiEfc7XZPM8a6FxcXTfX19a/1en2Gcy5qamreNjY2/qGq6joRZe12+9Tp06e3JY/FYgWPHz8+mhvr3/CWlpbk+vp6PmOseWVlBS6XS9GSJUkSdrs93NDQ8Oe+ffvC/8fJIyMjddFo9Esi6pVleVjT2m0A8Hq9zqGhIefnjoknT544A4GAM/eDbxMReFNTE0pKSpKqqsaI6Pj8/LxVVdWM3W6PfCr5xMTE1zllXS0uLn6aSqXAGxsbodPpoNfrn6uqCs75EUVRrJFIZMfevXsXdTrdxseIE4mEPDIyUu/3++tynd8yGo29RIR0Og26fv06ioqKwBgD5xzv3r27zBjrIyJIkgSHwzFZWVmp7NmzJ1ZaWpoAgGg0WqgoSvHMzIw1GAw6tvjhitFo7NPW5fv370Hd3d0oKCgA53zTQMvLy+VCiKuSJH0rSdLmztZytIWv5RPRD0T0Y3Fx8dzWfby6ugopHo//w4mcc8iyPMc5v5FOp7/PZrOdQohWInIC2C2EgBBigYi8Qoifs9lsv06nWyIiaFxagXg8jr8GAGxuIe7LBeWhAAAAAElFTkSuQmCC"
},
"$:/plugins/felixhayashi/vis/img/network/connectIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/connectIcon.png",
"type": "image/png",
"text": "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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3ZWRhMjI0MC0yYTQxLTNlNDQtYWM2My1iNzNiYTE5OWI3Y2E8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjdlZGEyMjQwLTJhNDEtM2U0NC1hYzYzLWI3M2JhMTk5YjdjYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4ubxs+AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAUtSURBVHjajJZ/bNT1Gcdfz/P53PV6B4W7VltLqdAaplIOiMOoyxxJCSs/Gv/yB4gzJroAosmmDklwkYWR0bQsdmkykoojTpcsWYLxD/lRZdMQkTHRtkLZRqG0tIVe7662vTu43n32x/VKZ/jh89cn38/zvN7P5/l88zwf2blzJz6fDwARQUSm1n8s31CM0/VAnbNmsUPuAsDpgEO+Bg4C7//iyv5hvmMiQiqVQpqamvB6vVNwEeG1JZtCBrYi/MrkAwDNgjhwAlbzICBLA0rDb0+/839C6XQaaWxspLCw8Dp86cbNmqVFJQddE6KzdjZ9D89g+B6fSyCOcyn1nxil+O9xKg5HqWFSHGXLjrP7W/ICqVQK2bNnDz6fDxFh65KNvxbHDhF4rJj2bXPo+IGfcW5h5xL4f99P+FCEMIAob75x9t0dAMlkElNXV4e1lteXbNqiQoMaeOFOjrdU868SD2luYyEP6dUh+sYmSHeOU6GO5Z8VLx5+NNZxIpPJ5AS2L3upROCoCvz8Lo7vnkf77cAHhpiz/zIL9vWz8L8p/NvupmM0Q7pjnAoLqz8tDrc8MnQqYVUVhVdF4LEg7b+rvDn8wDDlH0WoPpukLJImSBaMwjcJqmwWts2jPZLG/8kwYVFeVdXXZcFf4yVDc2cNKfBFmD9X+0ncCP58F48eG+Feo2CAUkvs4dl0V/uJvdXLiiV+ut++n7YLSfxPfMMG54ChzB3WIesVWB2i82bw1AR6fJR7C4VsfYiv6u/k3A9nEgP4zXke8DiYHyAOMK+QxPIgnZ9GqSHr1itQJ8DK2fTerDQ+S/bHRXQJaHSCwNIZ2Xh+7+S3VAmwNMBA/tuPZtErgKquUmdMWIFlRURvdamRNEXGwIWrlP47pTMzLiunxghGMwTLvcTWlHAp77s4QNSrYMQtss6ZMgWqCm5cHoDHO1nbk6K8zEN8+3zatv2Hn1b59EqJZdxmYUERg9P9KwpIiAOTdWUWBXuLzB/vZG3P1Un4PNp2d1MbmyD45TWCxuCsQm0x56bHGHFYEZwxok7toAA9Sfw3hCcoL/NOwi9QO5wmWO1j4JEgZxTkodmcWRGkf3pcX0r8xoAaBixKu4U5/xwndM+0tpAvS6mP+PZK2nb1UBvPEKwKMLDvPj4ESGc55lGy303sdJKQdZB2rkMdctAB/4gzN+/Q2ENNd4LyUi/xN+bTtquX2thk5nk4wI3gAF+OMNcA1nFQDfK+BY5GqbkwWabTY5QZhXWlnNx1ntrY1Rz87fuvw29m/Sn8J+PUGAFj5T19baA1IspuBZp7cx1x4SwG1cEf+lgRSROs8jGwb+Ht4QB/GSSsAhYano39LWIBxNEIbP14hPDuiyS2VtJuHXQlKKvxM/jiXDq/D/xPlwifGMkJZB2NIoKpr69nxeiZxLHicFSFVWfGqBidIP3LSjrWltD94CyufF/4kQgPuVz2Lz93+dDRa9eu5QQ8Hg8/iXee+Dy4CKMs7xqn4nwKz9IirhQqmVuB42m8ey+x7LMoD6iAON782eChhqmRuXfvXgKBAKqKqtI0/8nNKrQI4BVYXkzHgzPpC88gWuHL/caXrhLoGiN0apSKr0ZZRBZM7q2w5ZnLR1oAnHOMjY0hra2tFBQUYIyZmstvVT1Z6eDlAuEVq7merxmwueNPDXy9PvybjKP5mctHLk4/XTKZRJqbm/H7/VNw1VyEMYbW4FN3WNWnnchKoy5sHeVGBRX6VWi3ymFx7r11Ix8MTX/y5C2RSPC/AQB61erowbpqSwAAAABJRU5ErkJggg=="
},
"$:/plugins/felixhayashi/vis/img/network/cross.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/cross.png",
"type": "image/png",
"text": "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/GMzLdsAADvGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0wMi0xNFQxMjowNToxNyswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5ODJjNjBiMC1lM2YzLTA5NDAtODI1NC0xYmU5YjVhNGUxODM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxODYxNmM2LTM1MWMtNDI0OS04YWFkLWJkZDQ2ZTczNWE0NDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0xNFQxMTo1NTozNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NzwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+cZUZMwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA2ElEQVR42gDLADT/AS0tLUQFBQUVFxcXtPHx8fPl5eUNCAgITCkpKesEHx8fGgYGBjH+/v4a+Pj4qgQEBFU6OjodMTExzwQUFBSvEBAQEfX19SD19fVqNDQ0CElJSd/9/f2vAwEBAfrn5+fkBwcHLRYWFgsXFxfz29vbo9LS0uwDDQ0NDfPz81orKysXIyMj+ODg4Avh4eEa/f391gMkJCRYPz8/KUhISOMCAgKh8fHxHRsbGx4UFBQQBDk5OeY7Ozv7CAgItPb29vMEBASaJSUlTQ0NDesDAEwpT0Ko8Ri2AAAAAElFTkSuQmCC"
},
"$:/plugins/felixhayashi/vis/img/network/cross2.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/cross2.png",
"type": "image/png",
"text": "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/GMzLdsAADoRaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMTRUMTE6NTY6MTUrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTAyLTE0VDExOjU2OjE1KzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0wMi0xNFQxMTo1NjoxNSswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6OWIwNjRhODctYWNlZi1jMjQ5LTg5MWUtNDAxOTVmMWJjMTNkPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjlmYTI2M2QyLTljOWMtNWY0OC1iYjNiLThmYmQ5NmI5ZTBhMjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjlmYTI2M2QyLTljOWMtNWY0OC1iYjNiLThmYmQ5NmI5ZTBhMjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5ZmEyNjNkMi05YzljLTVmNDgtYmIzYi04ZmJkOTZiOWUwYTI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMTRUMTE6NTY6MTUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjliMDY0YTg3LWFjZWYtYzI0OS04OTFlLTQwMTk1ZjFiYzEzZDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0xNFQxMTo1NjoxNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj41PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjU8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PvQ0yV0AAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAHZJREFUeNoAaQCW/wE1NTWrERER3+3t7Xbp6emKOTk5IgQtLS3kBAQEdfLy8ipOTk5LQ0NDkAE0NDQAEhISxiEhITkTExPH9PT0OgMGBgaPMzMzVS8vL7XU1NRC7+/vEQNfX19lUFBQtfPz82EEBAQMNTU1HwMAMI4nIAoe9RQAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/deleteIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/deleteIcon.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDowNmE3NWYwMy04MDdhLWUzNGYtYjk1Zi1jZGU2MjM0Mzg4OGY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjA2YTc1ZjAzLTgwN2EtZTM0Zi1iOTVmLWNkZTYyMzQzODg4Zjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4aYJzYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYGSURBVHjalJZ7UJTnFcZ/73m/72PdJY1RbhoQp6lkXRAvmIYxdCUadLVOozPNtGObap1JsKipjiShbdoRbeKEiQHpQK3xj0xa03aamTbaTGyAYV1QGeqFi+JyiZFLAlmESBkWRmS3fyzslGkmnZ5/v/M873Oe75zzvqqoqAibzQaAiKCUAkApRdHIK/NFsx2NR91nOSILADDoJyzNaM4xxbtvPHh0iC+JiYkJ1OHDh4mJiUEpFSXPv/ziPC28TIiXDCOSrAClQDSEpsCwJPIhrEBRQpiSytXlQwDhcBilFPfu3UMVFxdjt9ujFTzfcLBADCoEEAFr1ZbrrNjch2vtEImPBgHob7fTcWE+bVXJNJ/NiFQlEGLvieXHKmYqGB8fRx05cgSbzYaIsPvywV8pKFaA7fGtLTzz61YWpo/xVTHQbufsq5lcez9zWuWhk5mvFwMEg0H0+vXrMU2Tn1wp3CtCiQ5DjGd3A/m/v8IDCZP8r4iNmyRrWx/j/5qktykZpXKzAjVDVxPzGqemptDr1q1jX3NRnIJarcDKK2hgR2ULXRfncv7UYv7xpovhnhiW5Mz+kefeSKO6LJ1A1xzEuk/Ojm4mRibpuZaMZW3OCtRUND60NmiICCIUShisx7a2sLMiQn4s77uEQgIabnqdfHIlgT1/qQeg8vs5dHhdCNB1wYn3RIiC995j26stjAbsNH+YiZJCESnS1Y/XxIXu8r4YIPv/VkVs3CTnTy2ms34xro1+sp9po6sxlTu34ultmsPVvy6is86FCHgO+DDs49zpjufBpCG+seYOC9OHaTidieicb9ouVAhKtouAseI710ma7pLuqwmgYfHqAFt+6WdLoQ/LBl11Lm7VudAa8vb72PCin9TlAWIsGGhLACD+kSAZnusYBii1XQAPYWDllt6ov2lrBkDBR2+6Ofuak2//3M+G/T4wAAPW7fPhKfRTVeqk9qQbFKRmDUTxS3N7QYGYmwzCkqklBGlPDEcTNv+sg9tNCbTXuvBWujE0bHrZj9JE1B/wU1Pm5PwJN6YBS9a2kVvQEcWnrh5GTFD3lxkYkqRMgYQlwVldUvDnen73LHTUuqitdKM0eAr9AFQfd1J/yo2aJn+2sn4Wdn5qEFODJskgBIjx5T0uCrQA08pnIjS9PERDjPnfOKXAMEBECUoGEIHBj+2zkt76UQ6dXheGAev3+cg74Kf6uJPqcicbfuond7cPy4SOiy7+tD9nFvZurx00KOk3CNEC+mE+vjSPBc7IWqgqTaPT60IMcO/xsXGa3HfKjRgRdbl7/KDg0jtubje6aHj7c7J3dgLQ2zoPwwQ91SooOQdAW1VKVMHty0kA5Bb48BycJn/LjWFGbLv4thvvb53kFvjJ+XEdWkPfjQVR/CcNKYgGMc8JWt5Fa2j+MIPPuyI2pa4IoHSkt6vLIuRaQ9q32khzt4GCxtNu6k46GeiIR2lIfDQQsafPzq1LGRGL9Gk9d+vrwewvfHPQOoexQVjxdB/auk/zmaUMdsfz6bVUtIalT7bxveP1ZHh6GPDPYeSzeD69kcpIfxymFWLNrka+ljhBTWkWwz2JiJT84YHnz2iPx0P20PkmRF5i6HYiwZFJsn/YzdezbzE3cQibY5xV266z6RfXohakb+xB9CjanCD9qTbW7Grk4WV38VZm0l6dhQiEw9taHSuDqrS0FIfDwXM3X9mHMsvRAk/sauDpQy38P+GtzOTGB9mEpkD0C2dS8n8zOjqK9ng8WJZFU+JTjasGvaCNXPpvJBPoMlm0OoDNMfWVxONfWNSUPUZ7TUQ56tCZlPwSgMnJSVRpaSmxsbFE1raw82ZxAZZRQUiBYUKGp5UlOX2krBzmoUVjiIKhHge9rfPo+Wcy3ZeXIYASgL1/X5RfMXMvj46OosrLy7HZbGitUUohIuzoem0RofALaOsghgWGjky0MiJTL8b0lOvI8hN1DKXKP0jd3TNTWDgcJhgMoo4ePYrD4Yi+KmaeLlprnrtXFo9h/AAlG1AqE8yFmBrC+jO0bgH9EVpO/1F2Dc5g//OAsbEx/j0Af+USsQynL1UAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/network/downArrow.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/downArrow.png",
"type": "image/png",
"text": "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"
},
"$:/plugins/felixhayashi/vis/img/network/editIcon.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/editIcon.png",
"type": "image/png",
"text": "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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDozOWNhNzE5ZC03YzNlLTUyNGEtYmY1NS03NGVmMmM1MzE0YTc8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjM5Y2E3MTlkLTdjM2UtNTI0YS1iZjU1LTc0ZWYyYzUzMTRhNzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4ykninAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYpSURBVHjafFZtTFvnFX7Oea+NudiY2Hwam4CBlgQwXdKREDKUoYg0jbRJ29RJ2VZ1mjRFUxSpA3VTfkzJfkQbS7spU6rtx5Z2UtppScjaHxvLuiatWi2jLEoMIUDCh23g2gbj7+tPuPvhOurawPl1dc99n+c55z33fV46ceIEZFkGADAziAgAQERoe/9ZK4GPM/AcgbsIXAcABCgMvkfAqAa89eDoJyF8LogIqqqChoaGYDAYHr8kItS8uc8iIH6iAa9IkAo5EAQX8pqmgUVBCBggYFgDhv0/GAsBgKZpICJkMhnQ4OAgZFkGEYGZUXmp+0cS+CKBwWA0DVRPOg5Zl2q6zaHyJlnVAMQXVTkwHrUqH0Xsvn+tdQAAMQDgpPLS2MViFY8rkGUZzIzaS/t/xqCzGggtz9e697zsnKhoLUtim4jOq/LE6x7X0nsh16dEZ5a/O3a2SCAOHjwInU6Hujd6ThJ4mCDQ+b2G232v7v6vwarPbQn8MGlMr+X0kpE3Wr5Zt5hL5HPhqYSdQIfKJ+yhxDPKWC6Xg+jt7UXD5b5KBt1kCHS85Ljd8/On3NupfnhFaZj4rWff1B98B1R/hnUmKd36bdtCNl4g0en4edNE/cXwLq8qMTMIPAQwmo/WuHvObA8+9c58k/dKtD0TyZWXN5YGA7ej7epKxspM//7SoNOdWc/Jyq2wiwhDzPxT8cP0jys3VMM7OmL0/77zn4Ydui3b8uiK0jD7RrA77c9Wd57cefPpF+2T6bWsFPWkaiPTCWvTsZpHFU+XrS+8G3AR08F6X+1FJvBxQQzHQOWk2SmrW4FPX/U2LVwPuDZj+fJKl2khPpeyAqA9rzR/YqwuiWXX8taN/CabGkrVuq9YJlkQQDjOAJ5jAhz9Vt9W4N5/rNp8I+vtMV/aZm4zLnUNNt0urdYnF68HWoJj4Wo1mLGUNRr8LEgDgNqeCh8xQIKOsgC7iAjVe83rT9zQa8uNM28u70kspessu8q8zq/V3NcZpVzb9+0zmVhOvvvrhaMVzrJg0zeq7xMVCCwdpnWSGBqjUyJwLTFgbvxie3w31uoWR1Y74r60rdxZqrR8q85t2W2MGCp12bm/KC3hyaSTiMhxuGrKcahqpbjOaDOoEhOEoFqJQCCJvqA85I6bfTdDjQlf2lbxVNlS6wt19yy7jRHZZlDnrinNj/6sHMhnNw2Ogco7O79e5fm/xQywRBBCEAuwn4gQ96bkYj4Vyuq9N1Z3Bj4Od5bs0MXt/dZZ21ctiqFan174q985P+Lfp+U1g7XDON/1ctP458WlVjLyJhOISZE0wM0S1QfuRC3lTjkJAKKEtNC9eIOhSh9xHLZOJRZTFuXDsEoStLkR/768ummsaJG9Pb9oe+9J+xaeSVokiQDSJphAo5uaBuWjiKP4QTqS1cUWU7ayesN66wu22frD1vmVW6GW6T8u9eVjGyZzs+w78Nqu0a2mbvVu1KEJQAgeZRL0liQYyx+GOmKeQpu0rMYsAJPNEFGD2dLodLIy6c9Ys7G8yeSUl3tf2/X3rcBVJSOv34l3sCBogi7z1LH/rBHjl4IJ93/ncQFAnjeImJD0Z8zuCwu9q3djDXqTlAKID5xv+9t2R8n8VcUFBljQ8Gyfe40BYBM4DwDLt8Kue79ZcFkbzfEdbUbv+oN4c9KTtsfm1MbYQqqh+2zrVZYKs/7Ef+byimt1POYiJhDhPBFBIiIEXhxfs7/dfYoIF+auBfYTE/pebx/V8hqBP2ODvD34yvuh/WCAmU75Bx6sIgaI/v5+6PV6JLqUsYr7dpDAoehs0h73pHTWrvKgThYbRSt9UmSjef3MpaUvBz4O72UmADgTOPJguGiZor+/HyUlJWBmJFz+D8xTtlUiOpbwpmrmrweeSXrT+g11k4SBN3RGKUcAVCVdFhyP1nreDbY//NPyEXUlU/Pp4XYycGT6V0Ux2WwWdO7cOZSWlkII8diX7SPPNgDaKdbxoNAxwATBAEkEEgSWCEQAqPAMwqvMdCEwMO0tVqZpWsGTT58+DaPR+PhGIYQAAAgh0P7B3ioW/B0iGiCGiwXbCuOHFSJys6AbYFye2T+xWhT3WYJEIoH/DQBMw3kes8OJPgAAAABJRU5ErkJggg=="
},
"$:/plugins/felixhayashi/vis/img/network/leftArrow.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/leftArrow.png",
"type": "image/png",
"text": "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"
},
"$:/plugins/felixhayashi/vis/img/network/minus.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/minus.png",
"type": "image/png",
"text": "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"
},
"$:/plugins/felixhayashi/vis/img/network/plus.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/plus.png",
"type": "image/png",
"text": "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"
},
"$:/plugins/felixhayashi/vis/img/network/rightArrow.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/rightArrow.png",
"type": "image/png",
"text": "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"
},
"$:/plugins/felixhayashi/vis/img/network/upArrow.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/upArrow.png",
"type": "image/png",
"text": "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"
},
"$:/plugins/felixhayashi/vis/img/network/zoomExtends.png": {
"title": "$:/plugins/felixhayashi/vis/img/network/zoomExtends.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQffARwOJgNYWjpZAAAGOElEQVRIx62XUUxUZxbH//9zJxkI4DgRMoxBRsVddDqYQFgHBTvsCxfZXdyYaBoSY9o0PLgm3YZd9EH70D5tu6Q18cmsNtm3No0+rGsYQQK60GABNcI4oxg7M8lepuNlABUdsXP7wL3jQIvF2pNMvnvvd+75fd+Zc853Ltvb2yEiIAkA2WvrniQSiQQB7Cb5BwD1IrIFgNOcTwGYJDlE8oJhGFe/afvCAAACMLAoBGCQ+HP/+zAMA7Zc0HLg1NSUkPwrya7lczmji6RLROoB/B0A6r5o6wDw2chbX2YMEwoAGWQgIotgy6CIZHcMAIlE4m2SZ62FrV+/XvN6vTGv15vYuHHj7Nq1a9MAMDMzY49Go45IJOIKh8Plmqa5RaQrk8l01X3V9s43B778HFkxsvZ5+PDhJVBzpx+SPEES27dvjzQ1NYVqamqSWIXcvHmzpK+vzxsKhSpNj3w0sv+rD2C6/Y9X/gKSUPx+f3bHJvQzkp0k0dTUNHzkyJFht9s9j1VKaWnp/M6dO6OPHz9+Ho1Gy0QkUBb2Of/vvd1NEpVx/4/BU1NT/xCRDpJoa2vrPXDgQBi/UKqqqhJ2u30mEolsJllXdvuNgilvpKcyvmMRXFdXBxGBpmlvk/xYRHDo0KFLLS0t9/GaUlFRkSooKNBDoVCFoij1ZeE3YgUFBTdILgaXpmmKiJwliebm5iFVVb89duxYu+WJ1tbWoN/vj64GNjIy4unu7lat++PHj5+enp4eGhgY2AXgbDKZ/LfL5fpezP/2PZKoqqqKHDx4cNxKlVeFAkBtbW10z549QRHJBu2+ffvGvV5vmCQURXlPRCCaplFEugBAVdWQZYAkWltbgxcuXFCvXbvmWS14dHTUc+nSJbW5uTmoKEr2+e7du0OKokBRlC5d12kTkTcBYMOGDVp1dXU2Zfbu3Rv0+/1RksGLFy+q58+fT83NzTmX572VhiICh8ORstvtTlVVgzU1NVEAQUvH6/U+cLvdWiKRcGcymTcFQAtJbNu2LZa7csu9O3bsiKbT6VR+fv4SqPWz2WzZReTl5TmfPXuWMqGwxpxgi5nvtNhI7jLBiZXcNzc353z06BFOnTp1+mVuPnr0aLthGM6V5jdv3pwYHh4GyZ02kr8hCY/HM7vSC7mB8jIxg2fF+bKyslnTzm9tJJ0iAqv2rgRejeSecj8la9asSZu2nLafU34V+GpsZc8FACmSmJ2dtb+uq38O/PDhQ7tpKyUk74oIYrGY49cAv0xP0zSHmRl3bCS/Jtlw9+5dV21t7dRPveBwOFJ5eXnOzs7O9lzjiqIs6VyKi4uxsLCQWgkci8Vcpv7XIiL/BYBIJFK+vAIBwNjYmCcvL8+5sLCQyoXabLYf5fTz589TdrvdOT4+7gEAa8wBlyuKAhG5aCN5xeyr3Ldu3Squqqp6AADBYFAlGezp6VGbmpqC1dXVq6rX4+PjnsHBQZVkcHBwUPX5fKcBYHJysnh6etpttj5XpbS01CDZAQD9/f3e3Jx8VSgA+Hy+aENDQ9CEZ5+PjY15Tc90rFu3LiPm5EnT3VvPnTvny23oent71Rs3bqz6kJiYmLB2nLXR19fnu3///lZT5SRJ8MSJExARJJPJd0ieURQF+/fvDzY0NETxK8j169c9vb29KkkYhvGu0+k8YxgGlMbGRpBEUVHR9fn5+QKS9eFweEtRUdGD8vLy2deF9vX1Wbv/ZLyx/2NPYttiRgQCgWxUFhYW9jx58sRJsi4cDm9Jp9PpysrK734JtL+/3zc0NPR7M5hOTjQOdJBE+dTWxZoeCASWNOiFhYXdT58+LRCR+ng8viEejxfm5+fPFxcXr6rTvHfvXsnly5d/Fw6Hq83U++R249UOkcXDw/Pd4o5tuVFsjSUlJZ26rkcA/OvOnTuVk5OTlS6XS6uoqIhu2rQp4Xa754qKitJWGUwmk2ui0agrHo97ZmZm3DmNwruhwJUzQmXxK4Ivqppt+YoNw7DgZ3Rd/xzA+wD+qeu6W9d19+jo6JLjL7eoWNeGYfyN5KehwJWM0NSDIGN8vzI4V0pKSjIi0qXr+qcAGkj+yTCMXSQrDMNwmodCCsA9ERki+R8A/5toHMgoVAASxItcFr4osT8Aaa5QMU/uqTYAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/img/timeline/delete.png": {
"title": "$:/plugins/felixhayashi/vis/img/timeline/delete.png",
"type": "image/png",
"text": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAl2cEFnAAAAEAAAABAAXMatwwAAAVRJREFUOMt108FKG1EUBuBvYtxbRGwxiGBXeYCW0mVpDSKVvIJ0F/syJsFdn6GCkaZ9gro3G1u0ILQgheJKRUwXPQNnxvTAcGf+c/7/nPvfO8UEKLCFJg5w31aNqGtgG3c4xLSZyP0QgI8Tpu0quQhyPwTgsBnkAVYD3MM9DibVId5GbiW+B+VIt7hJha1IdhPWDayVsBvcFtHlDYZ4mgou8D7e+zXyN/TwuUhjbkSXLHIZ61KNvItxaYyayBDrZsf36DyGdilQE+ngA57UyD+xg08luTSxHvP/wRuRewDm7uV9WJ4hsBy5rczJJm7G/tcS6VesjxN2Hj4c5S10Qj2Tz/AunrOEr0VtB+Z6vMJ+zfkfcVQjnMbRvcRC5B/hBU4auMbVjBFHCRsFdp6wK1yXHjz37xItRuejfFQ1nwb4HXVfs4nPYsQv0p+oKlLgNf7gGP4Cw4ZUK7kMJVEAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDExLTA1LTE2VDExOjM1OjIxKzAyOjAw9uVF5gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMS0wNS0xNlQxMTozNToyMSswMjowMIe4/VoAAAAASUVORK5CYII="
},
"$:/plugins/felixhayashi/vis/readme": {
"title": "$:/plugins/felixhayashi/vis/readme",
"text": "! TW5-Vis.js\n\nA tiddlywiki plugin for the vis.js library.\n\n---\n\n! Notes on Copyright\n\n!! TiddlyWiki\n\nCreated by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright © Jeremy Ruston 2004-2007 Copyright © UnaMesa Association 2007-2014\n\nPublished under the following [licenses](https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses):\n\n1. BSD 3-clause \"New\" or \"Revised\" License (including any right to adopt any future version of a license if permitted)\n2. Creative Commons Attribution 3.0 (including any right to adopt any future version of a license if permitted)\n\n!! The **vis.js** library\n\nCopyright (c) 2014 [Almende B.V.](https://github.com/almende/vis)\n\nPublished under the following licenses:\n\n1. Apache License Version 2.0, January 2004 http://www.apache.org/licenses/\n2. MIT License (MIT)\n"
},
"$:/plugins/felixhayashi/vis/vis.css": {
"title": "$:/plugins/felixhayashi/vis/vis.css",
"type": "text/vnd.tiddlywiki",
"tags": "$:/tags/Stylesheet",
"text": "\\rules except list\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}}/>\n\\end\n\n.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=\"span\"]{min-height:0;width:auto}div.vis-configuration{position:relative;display:block;float:left;font-size:12px}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper::after{clear:both;content:\"\";display:block}div.vis-configuration.vis-config-option-container{display:block;width:495px;background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;margin-top:20px;left:10px;padding-left:5px}div.vis-configuration.vis-config-button{display:block;width:495px;height:25px;vertical-align:middle;line-height:25px;background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;margin-top:20px;left:10px;padding-left:5px;cursor:pointer;margin-bottom:30px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;width:495px;height:25px;vertical-align:middle;line-height:25px}div.vis-configuration.vis-config-item.vis-config-s2{left:10px;background-color:#f7f8fa;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s3{left:20px;background-color:#e4e9f0;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-item.vis-config-s4{left:30px;background-color:#cfd8e6;padding-left:5px;border-radius:3px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:bold}div.vis-configuration.vis-config-label{width:120px;height:25px;line-height:25px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{top:1px;width:30px;height:19px;border:1px solid #444;border-radius:2px;padding:0;margin:0;cursor:pointer}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{position:relative;top:-5px;width:60px;padding:1px;margin:0;pointer-events:none}input.vis-configuration.vis-config-range{-webkit-appearance:none;border:0 solid white;background-color:rgba(0,0,0,0);width:300px;height:20px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{width:300px;height:5px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dedede',endColorstr='#c8c8c8',GradientType=0);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #14334b;height:17px;width:17px;border-radius:50%;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2 0,#385380 100%);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(to bottom,#3876c2 0,#385380 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#3876c2',endColorstr='#385380',GradientType=0);box-shadow:#111927 0 0 1px 0;margin-top:-7px}input.vis-configuration.vis-config-range:focus{outline:0}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(to bottom,#9d9d9d 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9d9d9d',endColorstr='#c8c8c8',GradientType=0)}input.vis-configuration.vis-config-range::-moz-range-track{width:300px;height:10px;background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(to bottom,#dedede 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dedede',endColorstr='#c8c8c8',GradientType=0);border:1px solid #999;box-shadow:#aaa 0 0 3px 0;border-radius:3px}input.vis-configuration.vis-config-range::-moz-range-thumb{border:0;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:-moz-focusring{outline:1px solid white;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{width:300px;height:5px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{border:0;height:16px;width:16px;border-radius:50%;background:#385380}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{position:absolute;background:rgba(57,76,89,0.85);border:2px solid #f2faff;line-height:30px;height:30px;width:150px;text-align:center;color:#fff;font-size:14px;border-radius:4px;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.vis-configuration-popup:after,.vis-configuration-popup:before{left:100%;top:50%;border:solid transparent;content:\" \";height:0;width:0;position:absolute;pointer-events:none}.vis-configuration-popup:after{border-color:rgba(136,183,213,0);border-left-color:rgba(57,76,89,0.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0);border-left-color:#f2faff;border-width:12px;margin-top:-12px}div.vis-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;font-family:verdana;font-size:14px;color:#000;background-color:#f5f4ed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #808074;box-shadow:3px 3px 10px rgba(0,0,0,0.2);pointer-events:none;z-index:5}div.vis-color-picker{position:absolute;top:0;left:30px;margin-top:-140px;margin-left:30px;width:310px;height:444px;z-index:1;padding:10px;border-radius:15px;background-color:#fff;display:none;box-shadow:rgba(0,0,0,0.5) 0 0 10px 0}div.vis-color-picker div.vis-arrow{position:absolute;top:147px;left:5px}div.vis-color-picker div.vis-arrow::after,div.vis-color-picker div.vis-arrow::before{right:100%;top:50%;border:solid transparent;content:\" \";height:0;width:0;position:absolute;pointer-events:none}div.vis-color-picker div.vis-arrow:after{border-color:rgba(255,255,255,0);border-right-color:#fff;border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{position:absolute;width:289px;height:289px;cursor:pointer}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{position:absolute;top:137px;left:137px;width:15px;height:15px;border-radius:15px;border:1px solid #fff;background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(to bottom,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c4c4c',endColorstr='#131313',GradientType=0)}div.vis-color-picker div.vis-new-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,0.1);border-radius:5px;top:380px;left:159px;text-align:right;padding-right:2px;font-size:10px;color:rgba(0,0,0,0.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-initial-color{position:absolute;width:140px;height:20px;border:1px solid rgba(0,0,0,0.1);border-radius:5px;top:380px;left:10px;text-align:left;padding-left:2px;font-size:10px;color:rgba(0,0,0,0.4);vertical-align:middle;line-height:20px}div.vis-color-picker div.vis-label{position:absolute;width:300px;left:10px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{position:absolute;width:68px;height:25px;border-radius:10px;vertical-align:middle;text-align:center;line-height:25px;top:410px;border:2px solid #d9d9d9;background-color:#f7f7f7;cursor:pointer}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{width:290px;height:20px}div.vis-network div.vis-manipulation{box-sizing:content-box;border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#fcfcfc',GradientType=0);padding-top:4px;position:absolute;left:0;top:0;width:100%;height:28px}div.vis-network div.vis-edit-mode{position:absolute;left:0;top:5px;height:30px}div.vis-network div.vis-close{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/cross.png\">>);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-close:hover{opacity:.6}div.vis-network div.vis-manipulation div.vis-button,div.vis-network div.vis-edit-mode div.vis-button{float:left;font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin-left:10px;cursor:pointer;padding:0 8px 0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation div.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,0.20)}div.vis-network div.vis-manipulation div.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,0.50)}div.vis-network div.vis-manipulation div.vis-button.vis-back{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/backIcon.png\">>)}div.vis-network div.vis-manipulation div.vis-button.vis-none:hover{box-shadow:1px 1px 8px rgba(0,0,0,0.0);cursor:default}div.vis-network div.vis-manipulation div.vis-button.vis-none:active{box-shadow:1px 1px 8px rgba(0,0,0,0.0)}div.vis-network div.vis-manipulation div.vis-button.vis-none{padding:0}div.vis-network div.vis-manipulation div.notification{margin:2px;font-weight:bold}div.vis-network div.vis-manipulation div.vis-button.vis-add{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/addNodeIcon.png\">>)}div.vis-network div.vis-manipulation div.vis-button.vis-edit,div.vis-network div.vis-edit-mode div.vis-button.vis-edit{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/editIcon.png\">>)}div.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation div.vis-button.vis-connect{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/connectIcon.png\">>)}div.vis-network div.vis-manipulation div.vis-button.vis-delete{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/deleteIcon.png\">>)}div.vis-network div.vis-manipulation div.vis-label,div.vis-network div.vis-edit-mode div.vis-label{margin:0 0 0 23px;line-height:25px}div.vis-network div.vis-manipulation div.vis-separator-line{float:left;display:inline-block;width:1px;height:21px;background-color:#bdbdbd;margin:0 7px 0 15px}div.vis-network div.vis-navigation div.vis-button{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,0.30)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,0.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/upArrow.png\">>);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/downArrow.png\">>);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/leftArrow.png\">>);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/rightArrow.png\">>);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/plus.png\">>);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/minus.png\">>);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(<<datauri \"$:/plugins/felixhayashi/vis/img/network/zoomExtends.png\">>);bottom:50px;right:15px}.vis-current-time{background-color:#ff7f6e;width:2px;z-index:1;pointer-events:none}.vis-rolling-mode-btn{height:40px;width:40px;position:absolute;top:7px;right:20px;border-radius:50%;font-size:28px;cursor:pointer;opacity:.8;color:white;font-weight:bold;text-align:center;background:#3876c2}.vis-rolling-mode-btn:before{content:\"\\26F6\"}.vis-rolling-mode-btn:hover{opacity:1}.vis-custom-time{background-color:#6e94ff;width:2px;cursor:move;z-index:1}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor{border-color:#e5e5e5}.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major{border-color:#bfbfbf}.vis-data-axis .vis-y-axis.vis-major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-major.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis-data-axis .vis-y-axis.vis-minor.vis-measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis-data-axis .vis-y-axis.vis-title.vis-measure{padding:0;margin:0;visibility:hidden;width:auto}.vis-data-axis .vis-y-axis.vis-title.vis-left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis-data-axis .vis-y-axis.vis-title.vis-right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis-legend{background-color:rgba(247,252,255,0.65);padding:5px;border:1px solid #b3b3b3;box-shadow:2px 2px 10px rgba(154,154,154,0.55)}.vis-legend-text{white-space:nowrap;display:inline-block}.vis-item{position:absolute;color:#1a1a1a;border-color:#97b0f8;border-width:1px;background-color:#d5ddf6;display:inline-block;z-index:1}.vis-item.vis-selected{border-color:#ffc200;background-color:#fff785;z-index:2}.vis-editable.vis-selected{cursor:move}.vis-item.vis-point.vis-selected{background-color:#fff785}.vis-item.vis-box{text-align:center;border-style:solid;border-radius:2px}.vis-item.vis-point{background:0}.vis-item.vis-dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis-item.vis-range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis-item.vis-background{border:0;background-color:rgba(213,221,246,0.4);box-sizing:border-box;padding:0;margin:0}.vis-item .vis-item-overflow{position:relative;width:100%;height:100%;padding:0;margin:0;overflow:hidden}.vis-item-visible-frame{white-space:nowrap}.vis-item.vis-range .vis-item-content{position:relative;display:inline-block}.vis-item.vis-background .vis-item-content{position:absolute;display:inline-block}.vis-item.vis-line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis-item .vis-item-content{white-space:nowrap;box-sizing:border-box;padding:5px}.vis-item .vis-onUpdateTime-tooltip{position:absolute;background:#4f81bd;color:white;width:200px;text-align:center;white-space:nowrap;padding:5px;border-radius:1px;transition:.4s;-o-transition:.4s;-moz-transition:.4s;-webkit-transition:.4s}.vis-item .vis-delete,.vis-item .vis-delete-rtl{position:absolute;top:0;width:24px;height:24px;box-sizing:border-box;padding:0 5px;cursor:pointer;-webkit-transition:background .2s linear;-moz-transition:background .2s linear;-ms-transition:background .2s linear;-o-transition:background .2s linear;transition:background .2s linear}.vis-item .vis-delete{right:-24px}.vis-item .vis-delete-rtl{left:-24px}.vis-item .vis-delete:after,.vis-item .vis-delete-rtl:after{content:\"\\00D7\";color:red;font-family:arial,sans-serif;font-size:22px;font-weight:bold;-webkit-transition:color .2s linear;-moz-transition:color .2s linear;-ms-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.vis-item .vis-delete:hover,.vis-item .vis-delete-rtl:hover{background:red}.vis-item .vis-delete:hover:after,.vis-item .vis-delete-rtl:hover:after{color:white}.vis-item .vis-drag-center{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.vis-item.vis-range .vis-drag-left{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;left:-4px;cursor:w-resize}.vis-item.vis-range .vis-drag-right{position:absolute;width:24px;max-width:20%;min-width:2px;height:100%;top:0;right:-4px;cursor:e-resize}.vis-range.vis-item.vis-readonly .vis-drag-left,.vis-range.vis-item.vis-readonly .vis-drag-right{cursor:auto}.vis-itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis-itemset .vis-background,.vis-itemset .vis-foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis-axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis-foreground .vis-group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis-foreground .vis-group:last-child{border-bottom:0}.vis-nesting-group{cursor:pointer}.vis-nested-group{background:#f5f5f5}.vis-label.vis-nesting-group.expanded:before{content:\"\\25BC\"}.vis-label.vis-nesting-group.collapsed-rtl:before{content:\"\\25C0\"}.vis-label.vis-nesting-group.collapsed:before{content:\"\\25B6\"}.vis-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis-labelset .vis-label{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box}.vis-labelset .vis-label{border-bottom:1px solid #bfbfbf}.vis-labelset .vis-label.draggable{cursor:pointer}.vis-labelset .vis-label:last-child{border-bottom:0}.vis-labelset .vis-label .vis-inner{display:inline-block;padding:5px}.vis-labelset .vis-label .vis-inner.vis-hidden{padding:0}.vis-panel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right,.vis-panel.vis-top,.vis-panel.vis-bottom{border:1px #bfbfbf}.vis-panel.vis-center,.vis-panel.vis-left,.vis-panel.vis-right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis-left.vis-panel.vis-vertical-scroll,.vis-right.vis-panel.vis-vertical-scroll{height:100%;overflow-x:hidden;overflow-y:scroll}.vis-left.vis-panel.vis-vertical-scroll{direction:rtl}.vis-left.vis-panel.vis-vertical-scroll .vis-content{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll{direction:ltr}.vis-right.vis-panel.vis-vertical-scroll .vis-content{direction:rtl}.vis-panel.vis-center,.vis-panel.vis-top,.vis-panel.vis-bottom{border-left-style:solid;border-right-style:solid}.vis-background{overflow:hidden}.vis-panel>.vis-content{position:relative}.vis-panel .vis-shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,0.8)}.vis-panel .vis-shadow.vis-top{top:-1px;left:0}.vis-panel .vis-shadow.vis-bottom{bottom:-1px;left:0}.vis-graph-group0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis-graph-group1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis-graph-group2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis-graph-group3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis-graph-group4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis-graph-group5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis-graph-group6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis-graph-group7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis-graph-group8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis-graph-group9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis-timeline .vis-fill{fill-opacity:.1;stroke:none}.vis-timeline .vis-bar{fill-opacity:.5;stroke-width:1px}.vis-timeline .vis-point{stroke-width:2px;fill-opacity:1.0}.vis-timeline .vis-legend-background{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis-timeline .vis-outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis-timeline .vis-icon-fill{fill-opacity:.3;stroke:none}.vis-time-axis{position:relative;overflow:hidden}.vis-time-axis.vis-foreground{top:0;left:0;width:100%}.vis-time-axis.vis-background{position:absolute;top:0;left:0;width:100%;height:100%}.vis-time-axis .vis-text{position:absolute;color:#4d4d4d;padding:3px;overflow:hidden;box-sizing:border-box;white-space:nowrap}.vis-time-axis .vis-text.vis-measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis-time-axis .vis-grid.vis-vertical{position:absolute;border-left:1px solid}.vis-time-axis .vis-grid.vis-vertical-rtl{position:absolute;border-right:1px solid}.vis-time-axis .vis-grid.vis-minor{border-color:#e5e5e5}.vis-time-axis .vis-grid.vis-major{border-color:#bfbfbf}.vis-timeline{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}"
},
"$:/plugins/felixhayashi/vis/vis.js": {
"title": "$:/plugins/felixhayashi/vis/vis.js",
"text": "/*\\\ntitle: $:/plugins/felixhayashi/vis/vis.js\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\\*/\n\n/*** TO AVOID STRANGE LIB ERRORS FROM BUBBLING UP *****************/\n\nif($tw.boot.tasks.trapErrors) {\n\n var defaultHandler = window.onerror;\n window.onerror = function(errorMsg, url, lineNumber) {\n \n if(errorMsg.indexOf(\"NS_ERROR_NOT_AVAILABLE\") !== -1\n && url == \"$:/plugins/felixhayashi/vis/vis.js\") {\n \n var text = \"Strange firefox related vis.js error (see #125)\";\n console.error(text, arguments);\n \n } else if(errorMsg.indexOf(\"Permission denied to access property\") !== -1) {\n \n var text = \"Strange firefox related vis.js error (see #163)\";\n console.error(text, arguments);\n \n } else if(defaultHandler) {\n \n defaultHandler.apply(this, arguments);\n \n }\n \n }\n \n}\n\n/******************************************************************/\n\n/**\n * vis.js\n * https://github.com/almende/vis\n *\n * A dynamic, browser-based visualization library.\n *\n * @version 4.21.0\n * @date 2017-10-12\n *\n * @license\n * Copyright (C) 2011-2017 Almende B.V, http://almende.com\n *\n * Vis.js is dual licensed under both\n *\n * * The Apache 2.0 License\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * and\n *\n * * The MIT License\n * http://opensource.org/licenses/MIT\n *\n * Vis.js may be distributed under either license.\n */\n\"use strict\";(function webpackUniversalModuleDefinition(root,factory){if(typeof exports===\"object\"&&typeof module===\"object\")module.exports=factory();else if(typeof define===\"function\"&&define.amd)define([],factory);else if(typeof exports===\"object\")exports[\"vis\"]=factory();else root[\"vis\"]=factory()})(this,function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{configurable:false,enumerable:true,get:getter})}};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module[\"default\"]}:function getModuleExports(){return module};__webpack_require__.d(getter,\"a\",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p=\"\";return __webpack_require__(__webpack_require__.s=123)}([function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;exports.default=function(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\")}}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _defineProperty=__webpack_require__(169);var _defineProperty2=_interopRequireDefault(_defineProperty);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if(\"value\"in descriptor)descriptor.writable=true;(0,_defineProperty2.default)(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}()},function(module,exports,__webpack_require__){\"use strict\";var _getIterator2=__webpack_require__(77);var _getIterator3=_interopRequireDefault(_getIterator2);var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var moment=__webpack_require__(9);var uuid=__webpack_require__(157);exports.isNumber=function(object){return object instanceof Number||typeof object==\"number\"};exports.recursiveDOMDelete=function(DOMobject){if(DOMobject){while(DOMobject.hasChildNodes()===true){exports.recursiveDOMDelete(DOMobject.firstChild);DOMobject.removeChild(DOMobject.firstChild)}}};exports.giveRange=function(min,max,total,value){if(max==min){return.5}else{var scale=1/(max-min);return Math.max(0,(value-min)*scale)}};exports.isString=function(object){return object instanceof String||typeof object==\"string\"};exports.isDate=function(object){if(object instanceof Date){return true}else if(exports.isString(object)){var match=ASPDateRegex.exec(object);if(match){return true}else if(!isNaN(Date.parse(object))){return true}}return false};exports.randomUUID=function(){return uuid.v4()};exports.assignAllKeys=function(obj,value){for(var prop in obj){if(obj.hasOwnProperty(prop)){if((0,_typeof3[\"default\"])(obj[prop])!==\"object\"){obj[prop]=value}}}};function copyOrDelete(a,b,prop,allowDeletion){var doDeletion=false;if(allowDeletion===true){doDeletion=b[prop]===null&&a[prop]!==undefined}if(doDeletion){delete a[prop]}else{a[prop]=b[prop]}}exports.fillIfDefined=function(a,b){var allowDeletion=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;for(var prop in a){if(b[prop]!==undefined){if(b[prop]===null||(0,_typeof3[\"default\"])(b[prop])!==\"object\"){copyOrDelete(a,b,prop,allowDeletion)}else{if((0,_typeof3[\"default\"])(a[prop])===\"object\"){exports.fillIfDefined(a[prop],b[prop],allowDeletion)}}}}};exports.extend=function(a,b){for(var i=1;i<arguments.length;i++){var other=arguments[i];for(var prop in other){if(other.hasOwnProperty(prop)){a[prop]=other[prop]}}}return a};exports.selectiveExtend=function(props,a,b){if(!Array.isArray(props)){throw new Error(\"Array with property names expected as first argument\")}for(var i=2;i<arguments.length;i++){var other=arguments[i];for(var p=0;p<props.length;p++){var prop=props[p];if(other&&other.hasOwnProperty(prop)){a[prop]=other[prop]}}}return a};exports.selectiveDeepExtend=function(props,a,b){var allowDeletion=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;if(Array.isArray(b)){throw new TypeError(\"Arrays are not supported by deepExtend\")}for(var p=0;p<props.length;p++){var prop=props[p];if(b.hasOwnProperty(prop)){if(b[prop]&&b[prop].constructor===Object){if(a[prop]===undefined){a[prop]={}}if(a[prop].constructor===Object){exports.deepExtend(a[prop],b[prop],false,allowDeletion)}else{copyOrDelete(a,b,prop,allowDeletion)}}else if(Array.isArray(b[prop])){throw new TypeError(\"Arrays are not supported by deepExtend\")}else{copyOrDelete(a,b,prop,allowDeletion)}}}return a};exports.selectiveNotDeepExtend=function(propsToExclude,a,b){var allowDeletion=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;if(Array.isArray(b)){throw new TypeError(\"Arrays are not supported by deepExtend\")}for(var prop in b){if(!b.hasOwnProperty(prop))continue;if(propsToExclude.indexOf(prop)!==-1)continue;if(b[prop]&&b[prop].constructor===Object){if(a[prop]===undefined){a[prop]={}}if(a[prop].constructor===Object){exports.deepExtend(a[prop],b[prop])}else{copyOrDelete(a,b,prop,allowDeletion)}}else if(Array.isArray(b[prop])){a[prop]=[];for(var i=0;i<b[prop].length;i++){a[prop].push(b[prop][i])}}else{copyOrDelete(a,b,prop,allowDeletion)}}return a};exports.deepExtend=function(a,b){var protoExtend=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var allowDeletion=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;for(var prop in b){if(b.hasOwnProperty(prop)||protoExtend===true){if(b[prop]&&b[prop].constructor===Object){if(a[prop]===undefined){a[prop]={}}if(a[prop].constructor===Object){exports.deepExtend(a[prop],b[prop],protoExtend)}else{copyOrDelete(a,b,prop,allowDeletion)}}else if(Array.isArray(b[prop])){a[prop]=[];for(var i=0;i<b[prop].length;i++){a[prop].push(b[prop][i])}}else{copyOrDelete(a,b,prop,allowDeletion)}}}return a};exports.equalArray=function(a,b){if(a.length!=b.length)return false;for(var i=0,len=a.length;i<len;i++){if(a[i]!=b[i])return false}return true};exports.convert=function(object,type){var match;if(object===undefined){return undefined}if(object===null){return null}if(!type){return object}if(!(typeof type===\"string\")&&!(type instanceof String)){throw new Error(\"Type must be a string\")}switch(type){case\"boolean\":case\"Boolean\":return Boolean(object);case\"number\":case\"Number\":if(exports.isString(object)&&!isNaN(Date.parse(object))){return moment(object).valueOf()}else{return Number(object.valueOf())}case\"string\":case\"String\":return String(object);case\"Date\":if(exports.isNumber(object)){return new Date(object)}if(object instanceof Date){return new Date(object.valueOf())}else if(moment.isMoment(object)){return new Date(object.valueOf())}if(exports.isString(object)){match=ASPDateRegex.exec(object);if(match){return new Date(Number(match[1]))}else{return moment(new Date(object)).toDate()}}else{throw new Error(\"Cannot convert object of type \"+exports.getType(object)+\" to type Date\")}case\"Moment\":if(exports.isNumber(object)){return moment(object)}if(object instanceof Date){return moment(object.valueOf())}else if(moment.isMoment(object)){return moment(object)}if(exports.isString(object)){match=ASPDateRegex.exec(object);if(match){return moment(Number(match[1]))}else{return moment(object)}}else{throw new Error(\"Cannot convert object of type \"+exports.getType(object)+\" to type Date\")}case\"ISODate\":if(exports.isNumber(object)){return new Date(object)}else if(object instanceof Date){return object.toISOString()}else if(moment.isMoment(object)){return object.toDate().toISOString()}else if(exports.isString(object)){match=ASPDateRegex.exec(object);if(match){return new Date(Number(match[1])).toISOString()}else{return moment(object).format()}}else{throw new Error(\"Cannot convert object of type \"+exports.getType(object)+\" to type ISODate\")}case\"ASPDate\":if(exports.isNumber(object)){return\"/Date(\"+object+\")/\"}else if(object instanceof Date){return\"/Date(\"+object.valueOf()+\")/\"}else if(exports.isString(object)){match=ASPDateRegex.exec(object);var value;if(match){value=new Date(Number(match[1])).valueOf()}else{value=new Date(object).valueOf()}return\"/Date(\"+value+\")/\"}else{throw new Error(\"Cannot convert object of type \"+exports.getType(object)+\" to type ASPDate\")}default:throw new Error('Unknown type \"'+type+'\"')}};var ASPDateRegex=/^\\/?Date\\((\\-?\\d+)/i;exports.getType=function(object){var type=typeof object===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(object);if(type==\"object\"){if(object===null){return\"null\"}if(object instanceof Boolean){return\"Boolean\"}if(object instanceof Number){return\"Number\"}if(object instanceof String){return\"String\"}if(Array.isArray(object)){return\"Array\"}if(object instanceof Date){return\"Date\"}return\"Object\"}else if(type==\"number\"){return\"Number\"}else if(type==\"boolean\"){return\"Boolean\"}else if(type==\"string\"){return\"String\"}else if(type===undefined){return\"undefined\"}return type};exports.copyAndExtendArray=function(arr,newValue){var newArr=[];for(var i=0;i<arr.length;i++){newArr.push(arr[i])}newArr.push(newValue);return newArr};exports.copyArray=function(arr){var newArr=[];for(var i=0;i<arr.length;i++){newArr.push(arr[i])}return newArr};exports.getAbsoluteLeft=function(elem){return elem.getBoundingClientRect().left};exports.getAbsoluteRight=function(elem){return elem.getBoundingClientRect().right};exports.getAbsoluteTop=function(elem){return elem.getBoundingClientRect().top};exports.addClassName=function(elem,classNames){var classes=elem.className.split(\" \");var newClasses=classNames.split(\" \");classes=classes.concat(newClasses.filter(function(className){return classes.indexOf(className)<0}));elem.className=classes.join(\" \")};exports.removeClassName=function(elem,classNames){var classes=elem.className.split(\" \");var oldClasses=classNames.split(\" \");classes=classes.filter(function(className){return oldClasses.indexOf(className)<0});elem.className=classes.join(\" \")};exports.forEach=function(object,callback){var i,len;if(Array.isArray(object)){for(i=0,len=object.length;i<len;i++){callback(object[i],i,object)}}else{for(i in object){if(object.hasOwnProperty(i)){callback(object[i],i,object)}}}};exports.toArray=function(object){var array=[];for(var prop in object){if(object.hasOwnProperty(prop))array.push(object[prop])}return array};exports.updateProperty=function(object,key,value){if(object[key]!==value){object[key]=value;return true}else{return false}};exports.throttle=function(fn){var scheduled=false;return function throttled(){if(!scheduled){scheduled=true;requestAnimationFrame(function(){scheduled=false;fn()})}}};exports.addEventListener=function(element,action,listener,useCapture){if(element.addEventListener){if(useCapture===undefined)useCapture=false;if(action===\"mousewheel\"&&navigator.userAgent.indexOf(\"Firefox\")>=0){action=\"DOMMouseScroll\"}element.addEventListener(action,listener,useCapture)}else{element.attachEvent(\"on\"+action,listener)}};exports.removeEventListener=function(element,action,listener,useCapture){if(element.removeEventListener){if(useCapture===undefined)useCapture=false;if(action===\"mousewheel\"&&navigator.userAgent.indexOf(\"Firefox\")>=0){action=\"DOMMouseScroll\"}element.removeEventListener(action,listener,useCapture)}else{element.detachEvent(\"on\"+action,listener)}};exports.preventDefault=function(event){if(!event)event=window.event;if(event.preventDefault){event.preventDefault()}else{event.returnValue=false}};exports.getTarget=function(event){if(!event){event=window.event}var target;if(event.target){target=event.target}else if(event.srcElement){target=event.srcElement}if(target.nodeType!=undefined&&target.nodeType==3){target=target.parentNode}return target};exports.hasParent=function(element,parent){var e=element;while(e){if(e===parent){return true}e=e.parentNode}return false};exports.option={};exports.option.asBoolean=function(value,defaultValue){if(typeof value==\"function\"){value=value()}if(value!=null){return value!=false}return defaultValue||null};exports.option.asNumber=function(value,defaultValue){if(typeof value==\"function\"){value=value()}if(value!=null){return Number(value)||defaultValue||null}return defaultValue||null};exports.option.asString=function(value,defaultValue){if(typeof value==\"function\"){value=value()}if(value!=null){return String(value)}return defaultValue||null};exports.option.asSize=function(value,defaultValue){if(typeof value==\"function\"){value=value()}if(exports.isString(value)){return value}else if(exports.isNumber(value)){return value+\"px\"}else{return defaultValue||null}};exports.option.asElement=function(value,defaultValue){if(typeof value==\"function\"){value=value()}return value||defaultValue||null};exports.hexToRGB=function(hex){var shorthandRegex=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;hex=hex.replace(shorthandRegex,function(m,r,g,b){return r+r+g+g+b+b});var result=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);return result?{r:parseInt(result[1],16),g:parseInt(result[2],16),b:parseInt(result[3],16)}:null};exports.overrideOpacity=function(color,opacity){var rgb;if(color.indexOf(\"rgba\")!=-1){return color}else if(color.indexOf(\"rgb\")!=-1){rgb=color.substr(color.indexOf(\"(\")+1).replace(\")\",\"\").split(\",\");return\"rgba(\"+rgb[0]+\",\"+rgb[1]+\",\"+rgb[2]+\",\"+opacity+\")\"}else{rgb=exports.hexToRGB(color);if(rgb==null){return color}else{return\"rgba(\"+rgb.r+\",\"+rgb.g+\",\"+rgb.b+\",\"+opacity+\")\"}}};exports.RGBToHex=function(red,green,blue){return\"#\"+((1<<24)+(red<<16)+(green<<8)+blue).toString(16).slice(1)};exports.parseColor=function(color){var c;if(exports.isString(color)===true){if(exports.isValidRGB(color)===true){var rgb=color.substr(4).substr(0,color.length-5).split(\",\").map(function(value){return parseInt(value)});color=exports.RGBToHex(rgb[0],rgb[1],rgb[2])}if(exports.isValidHex(color)===true){var hsv=exports.hexToHSV(color);var lighterColorHSV={h:hsv.h,s:hsv.s*.8,v:Math.min(1,hsv.v*1.02)};var darkerColorHSV={h:hsv.h,s:Math.min(1,hsv.s*1.25),v:hsv.v*.8};var darkerColorHex=exports.HSVToHex(darkerColorHSV.h,darkerColorHSV.s,darkerColorHSV.v);var lighterColorHex=exports.HSVToHex(lighterColorHSV.h,lighterColorHSV.s,lighterColorHSV.v);c={background:color,border:darkerColorHex,highlight:{background:lighterColorHex,border:darkerColorHex},hover:{background:lighterColorHex,border:darkerColorHex}}}else{c={background:color,border:color,highlight:{background:color,border:color},hover:{background:color,border:color}}}}else{c={};c.background=color.background||undefined;c.border=color.border||undefined;if(exports.isString(color.highlight)){c.highlight={border:color.highlight,background:color.highlight}}else{c.highlight={};c.highlight.background=color.highlight&&color.highlight.background||undefined;c.highlight.border=color.highlight&&color.highlight.border||undefined}if(exports.isString(color.hover)){c.hover={border:color.hover,background:color.hover}}else{c.hover={};c.hover.background=color.hover&&color.hover.background||undefined;c.hover.border=color.hover&&color.hover.border||undefined}}return c};exports.RGBToHSV=function(red,green,blue){red=red/255;green=green/255;blue=blue/255;var minRGB=Math.min(red,Math.min(green,blue));var maxRGB=Math.max(red,Math.max(green,blue));if(minRGB==maxRGB){return{h:0,s:0,v:minRGB}}var d=red==minRGB?green-blue:blue==minRGB?red-green:blue-red;var h=red==minRGB?3:blue==minRGB?1:5;var hue=60*(h-d/(maxRGB-minRGB))/360;var saturation=(maxRGB-minRGB)/maxRGB;var value=maxRGB;return{h:hue,s:saturation,v:value}};var cssUtil={split:function split(cssText){var styles={};cssText.split(\";\").forEach(function(style){if(style.trim()!=\"\"){var parts=style.split(\":\");var key=parts[0].trim();var value=parts[1].trim();styles[key]=value}});return styles},join:function join(styles){return(0,_keys2[\"default\"])(styles).map(function(key){return key+\": \"+styles[key]}).join(\"; \")}};exports.addCssText=function(element,cssText){var currentStyles=cssUtil.split(element.style.cssText);var newStyles=cssUtil.split(cssText);var styles=exports.extend(currentStyles,newStyles);element.style.cssText=cssUtil.join(styles)};exports.removeCssText=function(element,cssText){var styles=cssUtil.split(element.style.cssText);var removeStyles=cssUtil.split(cssText);for(var key in removeStyles){if(removeStyles.hasOwnProperty(key)){delete styles[key]}}element.style.cssText=cssUtil.join(styles)};exports.HSVToRGB=function(h,s,v){var r,g,b;var i=Math.floor(h*6);var f=h*6-i;var p=v*(1-s);var q=v*(1-f*s);var t=v*(1-(1-f)*s);switch(i%6){case 0:r=v,g=t,b=p;break;case 1:r=q,g=v,b=p;break;case 2:r=p,g=v,b=t;break;case 3:r=p,g=q,b=v;break;case 4:r=t,g=p,b=v;break;case 5:r=v,g=p,b=q;break}return{r:Math.floor(r*255),g:Math.floor(g*255),b:Math.floor(b*255)}};exports.HSVToHex=function(h,s,v){var rgb=exports.HSVToRGB(h,s,v);return exports.RGBToHex(rgb.r,rgb.g,rgb.b)};exports.hexToHSV=function(hex){var rgb=exports.hexToRGB(hex);return exports.RGBToHSV(rgb.r,rgb.g,rgb.b)};exports.isValidHex=function(hex){var isOk=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex);return isOk};exports.isValidRGB=function(rgb){rgb=rgb.replace(\" \",\"\");var isOk=/rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/i.test(rgb);return isOk};exports.isValidRGBA=function(rgba){rgba=rgba.replace(\" \",\"\");var isOk=/rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(.{1,3})\\)/i.test(rgba);return isOk};exports.selectiveBridgeObject=function(fields,referenceObject){if(referenceObject!==null&&(typeof referenceObject===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(referenceObject))===\"object\"){var objectTo=(0,_create2[\"default\"])(referenceObject);for(var i=0;i<fields.length;i++){if(referenceObject.hasOwnProperty(fields[i])){if((0,_typeof3[\"default\"])(referenceObject[fields[i]])==\"object\"){objectTo[fields[i]]=exports.bridgeObject(referenceObject[fields[i]])}}}return objectTo}else{return null}};exports.bridgeObject=function(referenceObject){if(referenceObject!==null&&(typeof referenceObject===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(referenceObject))===\"object\"){var objectTo=(0,_create2[\"default\"])(referenceObject);if(referenceObject instanceof Element){objectTo=referenceObject}else{objectTo=(0,_create2[\"default\"])(referenceObject);for(var i in referenceObject){if(referenceObject.hasOwnProperty(i)){if((0,_typeof3[\"default\"])(referenceObject[i])==\"object\"){objectTo[i]=exports.bridgeObject(referenceObject[i])}}}}return objectTo}else{return null}};exports.insertSort=function(a,compare){for(var i=0;i<a.length;i++){var k=a[i];for(var j=i;j>0&&compare(k,a[j-1])<0;j--){a[j]=a[j-1]}a[j]=k}return a};exports.mergeOptions=function(mergeTarget,options,option){var globalOptions=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var isPresent=function isPresent(obj){return obj!==null&&obj!==undefined};var isObject=function isObject(obj){return obj!==null&&(typeof obj===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(obj))===\"object\"};var isEmpty=function isEmpty(obj){for(var x in obj){if(obj.hasOwnProperty(x))return false}return true};if(!isObject(mergeTarget)){throw new Error(\"Parameter mergeTarget must be an object\")}if(!isObject(options)){throw new Error(\"Parameter options must be an object\")}if(!isPresent(option)){throw new Error(\"Parameter option must have a value\")}if(!isObject(globalOptions)){throw new Error(\"Parameter globalOptions must be an object\")}var doMerge=function doMerge(target,options,option){if(!isObject(target[option])){target[option]={}}var src=options[option];var dst=target[option];for(var prop in src){if(src.hasOwnProperty(prop)){dst[prop]=src[prop]}}};var srcOption=options[option];var globalPassed=isObject(globalOptions)&&!isEmpty(globalOptions);var globalOption=globalPassed?globalOptions[option]:undefined;var globalEnabled=globalOption?globalOption.enabled:undefined;if(srcOption===undefined){return}if(typeof srcOption===\"boolean\"){if(!isObject(mergeTarget[option])){mergeTarget[option]={}}mergeTarget[option].enabled=srcOption;return}if(srcOption===null&&!isObject(mergeTarget[option])){if(isPresent(globalOption)){mergeTarget[option]=(0,_create2[\"default\"])(globalOption)}else{return}}if(!isObject(srcOption)){return}var enabled=true;if(srcOption.enabled!==undefined){enabled=srcOption.enabled}else{if(globalEnabled!==undefined){enabled=globalOption.enabled}}doMerge(mergeTarget,options,option);mergeTarget[option].enabled=enabled};exports.binarySearchCustom=function(orderedItems,comparator,field,field2){var maxIterations=1e4;var iteration=0;var low=0;var high=orderedItems.length-1;while(low<=high&&iteration<maxIterations){var middle=Math.floor((low+high)/2);var item=orderedItems[middle];var value=field2===undefined?item[field]:item[field][field2];var searchResult=comparator(value);if(searchResult==0){return middle}else if(searchResult==-1){low=middle+1}else{high=middle-1}iteration++}return-1};exports.binarySearchValue=function(orderedItems,target,field,sidePreference,comparator){var maxIterations=1e4;var iteration=0;var low=0;var high=orderedItems.length-1;var prevValue,value,nextValue,middle;comparator=comparator!=undefined?comparator:function(a,b){return a==b?0:a<b?-1:1};while(low<=high&&iteration<maxIterations){middle=Math.floor(.5*(high+low));prevValue=orderedItems[Math.max(0,middle-1)][field];value=orderedItems[middle][field];nextValue=orderedItems[Math.min(orderedItems.length-1,middle+1)][field];if(comparator(value,target)==0){return middle}else if(comparator(prevValue,target)<0&&comparator(value,target)>0){return sidePreference==\"before\"?Math.max(0,middle-1):middle}else if(comparator(value,target)<0&&comparator(nextValue,target)>0){return sidePreference==\"before\"?middle:Math.min(orderedItems.length-1,middle+1)}else{if(comparator(value,target)<0){low=middle+1}else{high=middle-1}}iteration++}return-1};exports.easingFunctions={linear:function linear(t){return t},easeInQuad:function easeInQuad(t){return t*t},easeOutQuad:function easeOutQuad(t){return t*(2-t)},easeInOutQuad:function easeInOutQuad(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function easeInCubic(t){return t*t*t},easeOutCubic:function easeOutCubic(t){return--t*t*t+1},easeInOutCubic:function easeInOutCubic(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function easeInQuart(t){return t*t*t*t},easeOutQuart:function easeOutQuart(t){return 1- --t*t*t*t},easeInOutQuart:function easeInOutQuart(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function easeInQuint(t){return t*t*t*t*t},easeOutQuint:function easeOutQuint(t){return 1+--t*t*t*t*t},easeInOutQuint:function easeInOutQuint(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}};exports.getScrollBarWidth=function(){var inner=document.createElement(\"p\");inner.style.width=\"100%\";inner.style.height=\"200px\";var outer=document.createElement(\"div\");outer.style.position=\"absolute\";outer.style.top=\"0px\";outer.style.left=\"0px\";outer.style.visibility=\"hidden\";outer.style.width=\"200px\";outer.style.height=\"150px\";outer.style.overflow=\"hidden\";outer.appendChild(inner);document.body.appendChild(outer);var w1=inner.offsetWidth;outer.style.overflow=\"scroll\";var w2=inner.offsetWidth;if(w1==w2)w2=outer.clientWidth;document.body.removeChild(outer);return w1-w2};exports.topMost=function(pile,accessors){var candidate=void 0;if(!Array.isArray(accessors)){accessors=[accessors]}var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=(0,_getIterator3[\"default\"])(pile),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var member=_step.value;if(member){candidate=member[accessors[0]];for(var i=1;i<accessors.length;i++){if(candidate){candidate=candidate[accessors[i]]}else{continue}}if(typeof candidate!=\"undefined\"){break}}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator[\"return\"]){_iterator[\"return\"]()}}finally{if(_didIteratorError){throw _iteratorError}}}return candidate}},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(194),__esModule:true}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(self,call){if(!self){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}return call&&((typeof call===\"undefined\"?\"undefined\":(0,_typeof3.default)(call))===\"object\"||typeof call===\"function\")?call:self}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _setPrototypeOf=__webpack_require__(196);var _setPrototypeOf2=_interopRequireDefault(_setPrototypeOf);var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(subClass,superClass){if(typeof superClass!==\"function\"&&superClass!==null){throw new TypeError(\"Super expression must either be null or a function, not \"+(typeof superClass===\"undefined\"?\"undefined\":(0,_typeof3.default)(superClass)))}subClass.prototype=(0,_create2.default)(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)_setPrototypeOf2.default?(0,_setPrototypeOf2.default)(subClass,superClass):subClass.__proto__=superClass}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _iterator=__webpack_require__(142);var _iterator2=_interopRequireDefault(_iterator);var _symbol=__webpack_require__(144);var _symbol2=_interopRequireDefault(_symbol);var _typeof=typeof _symbol2.default===\"function\"&&typeof _iterator2.default===\"symbol\"?function(obj){return typeof obj}:function(obj){return obj&&typeof _symbol2.default===\"function\"&&obj.constructor===_symbol2.default&&obj!==_symbol2.default.prototype?\"symbol\":typeof obj};function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=typeof _symbol2.default===\"function\"&&_typeof(_iterator2.default)===\"symbol\"?function(obj){return typeof obj===\"undefined\"?\"undefined\":_typeof(obj)}:function(obj){return obj&&typeof _symbol2.default===\"function\"&&obj.constructor===_symbol2.default&&obj!==_symbol2.default.prototype?\"symbol\":typeof obj===\"undefined\"?\"undefined\":_typeof(obj)}},function(module,exports){var core=module.exports={version:\"2.5.1\"};if(typeof __e==\"number\")__e=core},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(140),__esModule:true}},function(module,exports,__webpack_require__){\"use strict\";module.exports=typeof window!==\"undefined\"&&window[\"moment\"]||__webpack_require__(154)},function(module,exports,__webpack_require__){\"use strict\";function hammerMock(){var noop=function noop(){};return{on:noop,off:noop,destroy:noop,emit:noop,get:function get(m){return{set:noop}}}}if(typeof window!==\"undefined\"){var propagating=__webpack_require__(175);var Hammer=window[\"Hammer\"]||__webpack_require__(176);module.exports=propagating(Hammer,{preventDefault:\"mouse\"})}else{module.exports=function(){return hammerMock()}}},function(module,exports,__webpack_require__){\"use strict\";var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Queue=__webpack_require__(43);function DataSet(data,options){if(data&&!Array.isArray(data)){options=data;data=null}this._options=options||{};this._data={};this.length=0;this._fieldId=this._options.fieldId||\"id\";this._type={};if(this._options.type){var fields=(0,_keys2[\"default\"])(this._options.type);for(var i=0,len=fields.length;i<len;i++){var field=fields[i];var value=this._options.type[field];if(value==\"Date\"||value==\"ISODate\"||value==\"ASPDate\"){this._type[field]=\"Date\"}else{this._type[field]=value}}}this._subscribers={};if(data){this.add(data)}this.setOptions(options)}DataSet.prototype.setOptions=function(options){if(options&&options.queue!==undefined){if(options.queue===false){if(this._queue){this._queue.destroy();delete this._queue}}else{if(!this._queue){this._queue=Queue.extend(this,{replace:[\"add\",\"update\",\"remove\"]})}if((0,_typeof3[\"default\"])(options.queue)===\"object\"){this._queue.setOptions(options.queue)}}}};DataSet.prototype.on=function(event,callback){var subscribers=this._subscribers[event];if(!subscribers){subscribers=[];this._subscribers[event]=subscribers}subscribers.push({callback:callback})};DataSet.prototype.off=function(event,callback){var subscribers=this._subscribers[event];if(subscribers){this._subscribers[event]=subscribers.filter(function(listener){return listener.callback!=callback})}};DataSet.prototype._trigger=function(event,params,senderId){if(event==\"*\"){throw new Error(\"Cannot trigger event *\")}var subscribers=[];if(event in this._subscribers){subscribers=subscribers.concat(this._subscribers[event])}if(\"*\"in this._subscribers){subscribers=subscribers.concat(this._subscribers[\"*\"])}for(var i=0,len=subscribers.length;i<len;i++){var subscriber=subscribers[i];if(subscriber.callback){subscriber.callback(event,params,senderId||null)}}};DataSet.prototype.add=function(data,senderId){var addedIds=[],id,me=this;if(Array.isArray(data)){for(var i=0,len=data.length;i<len;i++){id=me._addItem(data[i]);addedIds.push(id)}}else if(data&&(typeof data===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(data))===\"object\"){id=me._addItem(data);addedIds.push(id)}else{throw new Error(\"Unknown dataType\")}if(addedIds.length){this._trigger(\"add\",{items:addedIds},senderId)}return addedIds};DataSet.prototype.update=function(data,senderId){var addedIds=[];var updatedIds=[];var oldData=[];var updatedData=[];var me=this;var fieldId=me._fieldId;var addOrUpdate=function addOrUpdate(item){var id=item[fieldId];if(me._data[id]){var oldItem=util.extend({},me._data[id]);id=me._updateItem(item);updatedIds.push(id);updatedData.push(item);oldData.push(oldItem)}else{id=me._addItem(item);addedIds.push(id)}};if(Array.isArray(data)){for(var i=0,len=data.length;i<len;i++){if(data[i]&&(0,_typeof3[\"default\"])(data[i])===\"object\"){addOrUpdate(data[i])}else{console.warn(\"Ignoring input item, which is not an object at index \"+i)}}}else if(data&&(typeof data===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(data))===\"object\"){addOrUpdate(data)}else{throw new Error(\"Unknown dataType\")}if(addedIds.length){this._trigger(\"add\",{items:addedIds},senderId)}if(updatedIds.length){var props={items:updatedIds,oldData:oldData,data:updatedData};this._trigger(\"update\",props,senderId)}return addedIds.concat(updatedIds)};DataSet.prototype.get=function(args){var me=this;var id,ids,options;var firstType=util.getType(arguments[0]);if(firstType==\"String\"||firstType==\"Number\"){id=arguments[0];options=arguments[1]}else if(firstType==\"Array\"){\nids=arguments[0];options=arguments[1]}else{options=arguments[0]}var returnType;if(options&&options.returnType){var allowedValues=[\"Array\",\"Object\"];returnType=allowedValues.indexOf(options.returnType)==-1?\"Array\":options.returnType}else{returnType=\"Array\"}var type=options&&options.type||this._options.type;var filter=options&&options.filter;var items=[],item,itemIds,itemId,i,len;if(id!=undefined){item=me._getItem(id,type);if(item&&filter&&!filter(item)){item=null}}else if(ids!=undefined){for(i=0,len=ids.length;i<len;i++){item=me._getItem(ids[i],type);if(!filter||filter(item)){items.push(item)}}}else{itemIds=(0,_keys2[\"default\"])(this._data);for(i=0,len=itemIds.length;i<len;i++){itemId=itemIds[i];item=me._getItem(itemId,type);if(!filter||filter(item)){items.push(item)}}}if(options&&options.order&&id==undefined){this._sort(items,options.order)}if(options&&options.fields){var fields=options.fields;if(id!=undefined){item=this._filterFields(item,fields)}else{for(i=0,len=items.length;i<len;i++){items[i]=this._filterFields(items[i],fields)}}}if(returnType==\"Object\"){var result={},resultant;for(i=0,len=items.length;i<len;i++){resultant=items[i];result[resultant.id]=resultant}return result}else{if(id!=undefined){return item}else{return items}}};DataSet.prototype.getIds=function(options){var data=this._data,filter=options&&options.filter,order=options&&options.order,type=options&&options.type||this._options.type,itemIds=(0,_keys2[\"default\"])(data),i,len,id,item,items,ids=[];if(filter){if(order){items=[];for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=this._getItem(id,type);if(filter(item)){items.push(item)}}this._sort(items,order);for(i=0,len=items.length;i<len;i++){ids.push(items[i][this._fieldId])}}else{for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=this._getItem(id,type);if(filter(item)){ids.push(item[this._fieldId])}}}}else{if(order){items=[];for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];items.push(data[id])}this._sort(items,order);for(i=0,len=items.length;i<len;i++){ids.push(items[i][this._fieldId])}}else{for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=data[id];ids.push(item[this._fieldId])}}}return ids};DataSet.prototype.getDataSet=function(){return this};DataSet.prototype.forEach=function(callback,options){var filter=options&&options.filter,type=options&&options.type||this._options.type,data=this._data,itemIds=(0,_keys2[\"default\"])(data),i,len,item,id;if(options&&options.order){var items=this.get(options);for(i=0,len=items.length;i<len;i++){item=items[i];id=item[this._fieldId];callback(item,id)}}else{for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=this._getItem(id,type);if(!filter||filter(item)){callback(item,id)}}}};DataSet.prototype.map=function(callback,options){var filter=options&&options.filter,type=options&&options.type||this._options.type,mappedItems=[],data=this._data,itemIds=(0,_keys2[\"default\"])(data),i,len,id,item;for(i=0,len=itemIds.length;i<len;i++){id=itemIds[i];item=this._getItem(id,type);if(!filter||filter(item)){mappedItems.push(callback(item,id))}}if(options&&options.order){this._sort(mappedItems,options.order)}return mappedItems};DataSet.prototype._filterFields=function(item,fields){if(!item){return item}var filteredItem={},itemFields=(0,_keys2[\"default\"])(item),len=itemFields.length,i,field;if(Array.isArray(fields)){for(i=0;i<len;i++){field=itemFields[i];if(fields.indexOf(field)!=-1){filteredItem[field]=item[field]}}}else{for(i=0;i<len;i++){field=itemFields[i];if(fields.hasOwnProperty(field)){filteredItem[fields[field]]=item[field]}}}return filteredItem};DataSet.prototype._sort=function(items,order){if(util.isString(order)){var name=order;items.sort(function(a,b){var av=a[name];var bv=b[name];return av>bv?1:av<bv?-1:0})}else if(typeof order===\"function\"){items.sort(order)}else{throw new TypeError(\"Order must be a function or a string\")}};DataSet.prototype.remove=function(id,senderId){var removedIds=[],removedItems=[],ids=[],i,len,itemId,item;ids=Array.isArray(id)?id:[id];for(i=0,len=ids.length;i<len;i++){item=this._remove(ids[i]);if(item){itemId=item[this._fieldId];if(itemId!=undefined){removedIds.push(itemId);removedItems.push(item)}}}if(removedIds.length){this._trigger(\"remove\",{items:removedIds,oldData:removedItems},senderId)}return removedIds};DataSet.prototype._remove=function(id){var item,ident;if(util.isNumber(id)||util.isString(id)){ident=id}else if(id&&(typeof id===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(id))===\"object\"){ident=id[this._fieldId]}if(ident!==undefined&&this._data[ident]){item=this._data[ident];delete this._data[ident];this.length--;return item}return null};DataSet.prototype.clear=function(senderId){var i,len;var ids=(0,_keys2[\"default\"])(this._data);var items=[];for(i=0,len=ids.length;i<len;i++){items.push(this._data[ids[i]])}this._data={};this.length=0;this._trigger(\"remove\",{items:ids,oldData:items},senderId);return ids};DataSet.prototype.max=function(field){var data=this._data,itemIds=(0,_keys2[\"default\"])(data),max=null,maxField=null,i,len;for(i=0,len=itemIds.length;i<len;i++){var id=itemIds[i];var item=data[id];var itemField=item[field];if(itemField!=null&&(!max||itemField>maxField)){max=item;maxField=itemField}}return max};DataSet.prototype.min=function(field){var data=this._data,itemIds=(0,_keys2[\"default\"])(data),min=null,minField=null,i,len;for(i=0,len=itemIds.length;i<len;i++){var id=itemIds[i];var item=data[id];var itemField=item[field];if(itemField!=null&&(!min||itemField<minField)){min=item;minField=itemField}}return min};DataSet.prototype.distinct=function(field){var data=this._data;var itemIds=(0,_keys2[\"default\"])(data);var values=[];var fieldType=this._options.type&&this._options.type[field]||null;var count=0;var i,j,len;for(i=0,len=itemIds.length;i<len;i++){var id=itemIds[i];var item=data[id];var value=item[field];var exists=false;for(j=0;j<count;j++){if(values[j]==value){exists=true;break}}if(!exists&&value!==undefined){values[count]=value;count++}}if(fieldType){for(i=0,len=values.length;i<len;i++){values[i]=util.convert(values[i],fieldType)}}return values};DataSet.prototype._addItem=function(item){var id=item[this._fieldId];if(id!=undefined){if(this._data[id]){throw new Error(\"Cannot add item: item with id \"+id+\" already exists\")}}else{id=util.randomUUID();item[this._fieldId]=id}var d={},fields=(0,_keys2[\"default\"])(item),i,len;for(i=0,len=fields.length;i<len;i++){var field=fields[i];var fieldType=this._type[field];d[field]=util.convert(item[field],fieldType)}this._data[id]=d;this.length++;return id};DataSet.prototype._getItem=function(id,types){var field,value,i,len;var raw=this._data[id];if(!raw){return null}var converted={},fields=(0,_keys2[\"default\"])(raw);if(types){for(i=0,len=fields.length;i<len;i++){field=fields[i];value=raw[field];converted[field]=util.convert(value,types[field])}}else{for(i=0,len=fields.length;i<len;i++){field=fields[i];value=raw[field];converted[field]=value}}if(!converted[this._fieldId]){converted[this._fieldId]=raw.id}return converted};DataSet.prototype._updateItem=function(item){var id=item[this._fieldId];if(id==undefined){throw new Error(\"Cannot update item: item has no id (item: \"+(0,_stringify2[\"default\"])(item)+\")\")}var d=this._data[id];if(!d){throw new Error(\"Cannot update item: no item with id \"+id+\" found\")}var fields=(0,_keys2[\"default\"])(item);for(var i=0,len=fields.length;i<len;i++){var field=fields[i];var fieldType=this._type[field];d[field]=util.convert(item[field],fieldType)}return id};module.exports=DataSet},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DataSet=__webpack_require__(11);function DataView(data,options){this._data=null;this._ids={};this.length=0;this._options=options||{};this._fieldId=\"id\";this._subscribers={};var me=this;this.listener=function(){me._onEvent.apply(me,arguments)};this.setData(data)}DataView.prototype.setData=function(data){var ids,id,i,len,items;if(this._data){if(this._data.off){this._data.off(\"*\",this.listener)}ids=this._data.getIds({filter:this._options&&this._options.filter});items=[];for(i=0,len=ids.length;i<len;i++){items.push(this._data._data[ids[i]])}this._ids={};this.length=0;this._trigger(\"remove\",{items:ids,oldData:items})}this._data=data;if(this._data){this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||\"id\";ids=this._data.getIds({filter:this._options&&this._options.filter});for(i=0,len=ids.length;i<len;i++){id=ids[i];this._ids[id]=true}this.length=ids.length;this._trigger(\"add\",{items:ids});if(this._data.on){this._data.on(\"*\",this.listener)}}};DataView.prototype.refresh=function(){var id,i,len;var ids=this._data.getIds({filter:this._options&&this._options.filter}),oldIds=(0,_keys2[\"default\"])(this._ids),newIds={},addedIds=[],removedIds=[],removedItems=[];for(i=0,len=ids.length;i<len;i++){id=ids[i];newIds[id]=true;if(!this._ids[id]){addedIds.push(id);this._ids[id]=true}}for(i=0,len=oldIds.length;i<len;i++){id=oldIds[i];if(!newIds[id]){removedIds.push(id);removedItems.push(this._data._data[id]);delete this._ids[id]}}this.length+=addedIds.length-removedIds.length;if(addedIds.length){this._trigger(\"add\",{items:addedIds})}if(removedIds.length){this._trigger(\"remove\",{items:removedIds,oldData:removedItems})}};DataView.prototype.get=function(args){var me=this;var ids,options,data;var firstType=util.getType(arguments[0]);if(firstType==\"String\"||firstType==\"Number\"||firstType==\"Array\"){ids=arguments[0];options=arguments[1];data=arguments[2]}else{options=arguments[0];data=arguments[1]}var viewOptions=util.extend({},this._options,options);if(this._options.filter&&options&&options.filter){viewOptions.filter=function(item){return me._options.filter(item)&&options.filter(item)}}var getArguments=[];if(ids!=undefined){getArguments.push(ids)}getArguments.push(viewOptions);getArguments.push(data);return this._data&&this._data.get.apply(this._data,getArguments)};DataView.prototype.getIds=function(options){var ids;if(this._data){var defaultFilter=this._options.filter;var filter;if(options&&options.filter){if(defaultFilter){filter=function filter(item){return defaultFilter(item)&&options.filter(item)}}else{filter=options.filter}}else{filter=defaultFilter}ids=this._data.getIds({filter:filter,order:options&&options.order})}else{ids=[]}return ids};DataView.prototype.map=function(callback,options){var mappedItems=[];if(this._data){var defaultFilter=this._options.filter;var filter;if(options&&options.filter){if(defaultFilter){filter=function filter(item){return defaultFilter(item)&&options.filter(item)}}else{filter=options.filter}}else{filter=defaultFilter}mappedItems=this._data.map(callback,{filter:filter,order:options&&options.order})}else{mappedItems=[]}return mappedItems};DataView.prototype.getDataSet=function(){var dataSet=this;while(dataSet instanceof DataView){dataSet=dataSet._data}return dataSet||null};DataView.prototype._onEvent=function(event,params,senderId){var i,len,id,item;var ids=params&¶ms.items;var addedIds=[],updatedIds=[],removedIds=[],oldItems=[],updatedItems=[],removedItems=[];if(ids&&this._data){switch(event){case\"add\":for(i=0,len=ids.length;i<len;i++){id=ids[i];item=this.get(id);if(item){this._ids[id]=true;addedIds.push(id)}}break;case\"update\":for(i=0,len=ids.length;i<len;i++){id=ids[i];item=this.get(id);if(item){if(this._ids[id]){updatedIds.push(id);updatedItems.push(params.data[i]);oldItems.push(params.oldData[i])}else{this._ids[id]=true;addedIds.push(id)}}else{if(this._ids[id]){delete this._ids[id];removedIds.push(id);removedItems.push(params.oldData[i])}else{}}}break;case\"remove\":for(i=0,len=ids.length;i<len;i++){id=ids[i];if(this._ids[id]){delete this._ids[id];removedIds.push(id);removedItems.push(params.oldData[i])}}break}this.length+=addedIds.length-removedIds.length;if(addedIds.length){this._trigger(\"add\",{items:addedIds},senderId)}if(updatedIds.length){this._trigger(\"update\",{items:updatedIds,oldData:oldItems,data:updatedItems},senderId)}if(removedIds.length){this._trigger(\"remove\",{items:removedIds,oldData:removedItems},senderId)}}};DataView.prototype.on=DataSet.prototype.on;DataView.prototype.off=DataSet.prototype.off;DataView.prototype._trigger=DataSet.prototype._trigger;DataView.prototype.subscribe=DataView.prototype.on;DataView.prototype.unsubscribe=DataView.prototype.off;module.exports=DataView},function(module,exports,__webpack_require__){var store=__webpack_require__(57)(\"wks\");var uid=__webpack_require__(40);var Symbol=__webpack_require__(18).Symbol;var USE_SYMBOL=typeof Symbol==\"function\";var $exports=module.exports=function(name){return store[name]||(store[name]=USE_SYMBOL&&Symbol[name]||(USE_SYMBOL?Symbol:uid)(\"Symbol.\"+name))};$exports.store=store},function(module,exports,__webpack_require__){\"use strict\";exports.prepareElements=function(JSONcontainer){for(var elementType in JSONcontainer){if(JSONcontainer.hasOwnProperty(elementType)){JSONcontainer[elementType].redundant=JSONcontainer[elementType].used;JSONcontainer[elementType].used=[]}}};exports.cleanupElements=function(JSONcontainer){for(var elementType in JSONcontainer){if(JSONcontainer.hasOwnProperty(elementType)){if(JSONcontainer[elementType].redundant){for(var i=0;i<JSONcontainer[elementType].redundant.length;i++){JSONcontainer[elementType].redundant[i].parentNode.removeChild(JSONcontainer[elementType].redundant[i])}JSONcontainer[elementType].redundant=[]}}}};exports.resetElements=function(JSONcontainer){exports.prepareElements(JSONcontainer);exports.cleanupElements(JSONcontainer);exports.prepareElements(JSONcontainer)};exports.getSVGElement=function(elementType,JSONcontainer,svgContainer){var element;if(JSONcontainer.hasOwnProperty(elementType)){if(JSONcontainer[elementType].redundant.length>0){element=JSONcontainer[elementType].redundant[0];JSONcontainer[elementType].redundant.shift()}else{element=document.createElementNS(\"http://www.w3.org/2000/svg\",elementType);svgContainer.appendChild(element)}}else{element=document.createElementNS(\"http://www.w3.org/2000/svg\",elementType);JSONcontainer[elementType]={used:[],redundant:[]};svgContainer.appendChild(element)}JSONcontainer[elementType].used.push(element);return element};exports.getDOMElement=function(elementType,JSONcontainer,DOMContainer,insertBefore){var element;if(JSONcontainer.hasOwnProperty(elementType)){if(JSONcontainer[elementType].redundant.length>0){element=JSONcontainer[elementType].redundant[0];JSONcontainer[elementType].redundant.shift()}else{element=document.createElement(elementType);if(insertBefore!==undefined){DOMContainer.insertBefore(element,insertBefore)}else{DOMContainer.appendChild(element)}}}else{element=document.createElement(elementType);JSONcontainer[elementType]={used:[],redundant:[]};if(insertBefore!==undefined){DOMContainer.insertBefore(element,insertBefore)}else{DOMContainer.appendChild(element)}}JSONcontainer[elementType].used.push(element);return element};exports.drawPoint=function(x,y,groupTemplate,JSONcontainer,svgContainer,labelObj){var point;if(groupTemplate.style==\"circle\"){point=exports.getSVGElement(\"circle\",JSONcontainer,svgContainer);point.setAttributeNS(null,\"cx\",x);point.setAttributeNS(null,\"cy\",y);point.setAttributeNS(null,\"r\",.5*groupTemplate.size)}else{point=exports.getSVGElement(\"rect\",JSONcontainer,svgContainer);point.setAttributeNS(null,\"x\",x-.5*groupTemplate.size);point.setAttributeNS(null,\"y\",y-.5*groupTemplate.size);point.setAttributeNS(null,\"width\",groupTemplate.size);point.setAttributeNS(null,\"height\",groupTemplate.size)}if(groupTemplate.styles!==undefined){point.setAttributeNS(null,\"style\",groupTemplate.styles)}point.setAttributeNS(null,\"class\",groupTemplate.className+\" vis-point\");if(labelObj){var label=exports.getSVGElement(\"text\",JSONcontainer,svgContainer);if(labelObj.xOffset){x=x+labelObj.xOffset}if(labelObj.yOffset){y=y+labelObj.yOffset}if(labelObj.content){label.textContent=labelObj.content}if(labelObj.className){label.setAttributeNS(null,\"class\",labelObj.className+\" vis-label\")}label.setAttributeNS(null,\"x\",x);label.setAttributeNS(null,\"y\",y)}return point};exports.drawBar=function(x,y,width,height,className,JSONcontainer,svgContainer,style){if(height!=0){if(height<0){height*=-1;y-=height}var rect=exports.getSVGElement(\"rect\",JSONcontainer,svgContainer);rect.setAttributeNS(null,\"x\",x-.5*width);rect.setAttributeNS(null,\"y\",y);rect.setAttributeNS(null,\"width\",width);rect.setAttributeNS(null,\"height\",height);rect.setAttributeNS(null,\"class\",className);if(style){rect.setAttributeNS(null,\"style\",style)}}}},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.printStyle=undefined;var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var errorFound=false;var allOptions=void 0;var printStyle=\"background: #FFeeee; color: #dd0000\";var Validator=function(){function Validator(){(0,_classCallCheck3[\"default\"])(this,Validator)}(0,_createClass3[\"default\"])(Validator,null,[{key:\"validate\",value:function validate(options,referenceOptions,subObject){errorFound=false;allOptions=referenceOptions;var usedOptions=referenceOptions;if(subObject!==undefined){usedOptions=referenceOptions[subObject]}Validator.parse(options,usedOptions,[]);return errorFound}},{key:\"parse\",value:function parse(options,referenceOptions,path){for(var option in options){if(options.hasOwnProperty(option)){Validator.check(option,options,referenceOptions,path)}}}},{key:\"check\",value:function check(option,options,referenceOptions,path){if(referenceOptions[option]===undefined&&referenceOptions.__any__===undefined){Validator.getSuggestion(option,referenceOptions,path);return}var referenceOption=option;var is_object=true;if(referenceOptions[option]===undefined&&referenceOptions.__any__!==undefined){referenceOption=\"__any__\";is_object=Validator.getType(options[option])===\"object\"}else{}var refOptionObj=referenceOptions[referenceOption];if(is_object&&refOptionObj.__type__!==undefined){refOptionObj=refOptionObj.__type__}Validator.checkFields(option,options,referenceOptions,referenceOption,refOptionObj,path)}},{key:\"checkFields\",value:function checkFields(option,options,referenceOptions,referenceOption,refOptionObj,path){var log=function log(message){console.log(\"%c\"+message+Validator.printLocation(path,option),printStyle)};var optionType=Validator.getType(options[option]);var refOptionType=refOptionObj[optionType];if(refOptionType!==undefined){if(Validator.getType(refOptionType)===\"array\"&&refOptionType.indexOf(options[option])===-1){log('Invalid option detected in \"'+option+'\".'+\" Allowed values are:\"+Validator.print(refOptionType)+' not \"'+options[option]+'\". ');errorFound=true}else if(optionType===\"object\"&&referenceOption!==\"__any__\"){path=util.copyAndExtendArray(path,option);Validator.parse(options[option],referenceOptions[referenceOption],path)}}else if(refOptionObj[\"any\"]===undefined){log('Invalid type received for \"'+option+'\". Expected: '+Validator.print((0,_keys2[\"default\"])(refOptionObj))+\". Received [\"+optionType+'] \"'+options[option]+'\"');errorFound=true}}},{key:\"getType\",value:function getType(object){var type=typeof object===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(object);if(type===\"object\"){if(object===null){return\"null\"}if(object instanceof Boolean){return\"boolean\"}if(object instanceof Number){return\"number\"}if(object instanceof String){return\"string\"}if(Array.isArray(object)){return\"array\"}if(object instanceof Date){return\"date\"}if(object.nodeType!==undefined){return\"dom\"}if(object._isAMomentObject===true){return\"moment\"}return\"object\"}else if(type===\"number\"){return\"number\"}else if(type===\"boolean\"){return\"boolean\"}else if(type===\"string\"){return\"string\"}else if(type===undefined){return\"undefined\"}return type}},{key:\"getSuggestion\",value:function getSuggestion(option,options,path){var localSearch=Validator.findInOptions(option,options,path,false);var globalSearch=Validator.findInOptions(option,allOptions,[],true);var localSearchThreshold=8;var globalSearchThreshold=4;var msg=void 0;if(localSearch.indexMatch!==undefined){msg=\" in \"+Validator.printLocation(localSearch.path,option,\"\")+'Perhaps it was incomplete? Did you mean: \"'+localSearch.indexMatch+'\"?\\n\\n'}else if(globalSearch.distance<=globalSearchThreshold&&localSearch.distance>globalSearch.distance){msg=\" in \"+Validator.printLocation(localSearch.path,option,\"\")+\"Perhaps it was misplaced? Matching option found at: \"+Validator.printLocation(globalSearch.path,globalSearch.closestMatch,\"\")}else if(localSearch.distance<=localSearchThreshold){msg='. Did you mean \"'+localSearch.closestMatch+'\"?'+Validator.printLocation(localSearch.path,option)}else{msg=\". Did you mean one of these: \"+Validator.print((0,_keys2[\"default\"])(options))+Validator.printLocation(path,option)}console.log('%cUnknown option detected: \"'+option+'\"'+msg,printStyle);errorFound=true}},{key:\"findInOptions\",value:function findInOptions(option,options,path){var recursive=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var min=1e9;var closestMatch=\"\";var closestMatchPath=[];var lowerCaseOption=option.toLowerCase();var indexMatch=undefined;for(var op in options){var distance=void 0;if(options[op].__type__!==undefined&&recursive===true){var result=Validator.findInOptions(option,options[op],util.copyAndExtendArray(path,op));if(min>result.distance){closestMatch=result.closestMatch;closestMatchPath=result.path;min=result.distance;indexMatch=result.indexMatch}}else{if(op.toLowerCase().indexOf(lowerCaseOption)!==-1){indexMatch=op}distance=Validator.levenshteinDistance(option,op);if(min>distance){closestMatch=op;closestMatchPath=util.copyArray(path);min=distance}}}return{closestMatch:closestMatch,path:closestMatchPath,distance:min,indexMatch:indexMatch}}},{key:\"printLocation\",value:function printLocation(path,option){var prefix=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"Problem value found at: \\n\";var str=\"\\n\\n\"+prefix+\"options = {\\n\";for(var i=0;i<path.length;i++){for(var j=0;j<i+1;j++){str+=\" \"}str+=path[i]+\": {\\n\"}for(var _j=0;_j<path.length+1;_j++){str+=\" \"}str+=option+\"\\n\";for(var _i=0;_i<path.length+1;_i++){for(var _j2=0;_j2<path.length-_i;_j2++){str+=\" \"}str+=\"}\\n\"}return str+\"\\n\\n\"}},{key:\"print\",value:function print(options){return(0,_stringify2[\"default\"])(options).replace(/(\\\")|(\\[)|(\\])|(,\"__type__\")/g,\"\").replace(/(\\,)/g,\", \")}},{key:\"levenshteinDistance\",value:function levenshteinDistance(a,b){if(a.length===0)return b.length;if(b.length===0)return a.length;var matrix=[];var i;for(i=0;i<=b.length;i++){matrix[i]=[i]}var j;for(j=0;j<=a.length;j++){matrix[0][j]=j}for(i=1;i<=b.length;i++){for(j=1;j<=a.length;j++){if(b.charAt(i-1)==a.charAt(j-1)){matrix[i][j]=matrix[i-1][j-1]}else{matrix[i][j]=Math.min(matrix[i-1][j-1]+1,Math.min(matrix[i][j-1]+1,matrix[i-1][j]+1))}}}return matrix[b.length][a.length]}}]);return Validator}();exports[\"default\"]=Validator;exports.printStyle=printStyle},function(module,exports,__webpack_require__){\"use strict\";var util=__webpack_require__(2);function Component(body,options){this.options=null;this.props=null}Component.prototype.setOptions=function(options){if(options){util.extend(this.options,options)}};Component.prototype.redraw=function(){return false};Component.prototype.destroy=function(){};Component.prototype._isResized=function(){var resized=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;this.props._previousWidth=this.props.width;this.props._previousHeight=this.props.height;return resized};module.exports=Component},function(module,exports,__webpack_require__){var global=__webpack_require__(18);var core=__webpack_require__(7);var ctx=__webpack_require__(80);var hide=__webpack_require__(26);var PROTOTYPE=\"prototype\";var $export=function(type,name,source){var IS_FORCED=type&$export.F;var IS_GLOBAL=type&$export.G;var IS_STATIC=type&$export.S;var IS_PROTO=type&$export.P;var IS_BIND=type&$export.B;var IS_WRAP=type&$export.W;var exports=IS_GLOBAL?core:core[name]||(core[name]={});var expProto=exports[PROTOTYPE];var target=IS_GLOBAL?global:IS_STATIC?global[name]:(global[name]||{})[PROTOTYPE];var key,own,out;if(IS_GLOBAL)source=name;for(key in source){own=!IS_FORCED&&target&&target[key]!==undefined;if(own&&key in exports)continue;out=own?target[key]:source[key];exports[key]=IS_GLOBAL&&typeof target[key]!=\"function\"?source[key]:IS_BIND&&own?ctx(out,global):IS_WRAP&&target[key]==out?function(C){var F=function(a,b,c){if(this instanceof C){switch(arguments.length){case 0:return new C;case 1:return new C(a);case 2:return new C(a,b)}return new C(a,b,c)}return C.apply(this,arguments)};F[PROTOTYPE]=C[PROTOTYPE];return F}(out):IS_PROTO&&typeof out==\"function\"?ctx(Function.call,out):out;if(IS_PROTO){(exports.virtual||(exports.virtual={}))[key]=out;if(type&$export.R&&expProto&&!expProto[key])hide(expProto,key,out)}}};$export.F=1;$export.G=2;$export.S=4;$export.P=8;$export.B=16;$export.W=32;$export.U=64;$export.R=128;module.exports=$export},function(module,exports){var global=module.exports=typeof window!=\"undefined\"&&window.Math==Math?window:typeof self!=\"undefined\"&&self.Math==Math?self:Function(\"return this\")();if(typeof __g==\"number\")__g=global},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(160),__esModule:true}},function(module,exports,__webpack_require__){var anObject=__webpack_require__(27);var IE8_DOM_DEFINE=__webpack_require__(81);var toPrimitive=__webpack_require__(53);var dP=Object.defineProperty;exports.f=__webpack_require__(21)?Object.defineProperty:function defineProperty(O,P,Attributes){anObject(O);P=toPrimitive(P,true);anObject(Attributes);if(IE8_DOM_DEFINE)try{return dP(O,P,Attributes)}catch(e){}if(\"get\"in Attributes||\"set\"in Attributes)throw TypeError(\"Accessors not supported!\");if(\"value\"in Attributes)O[P]=Attributes.value;return O}},function(module,exports,__webpack_require__){module.exports=!__webpack_require__(28)(function(){return Object.defineProperty({},\"a\",{get:function(){return 7}}).a!=7})},function(module,exports){var hasOwnProperty={}.hasOwnProperty;module.exports=function(it,key){return hasOwnProperty.call(it,key)}},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var NodeBase=function(){function NodeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,NodeBase);this.body=body;this.labelModule=labelModule;this.setOptions(options);this.top=undefined;this.left=undefined;this.height=undefined;this.width=undefined;this.radius=undefined;this.margin=undefined;this.refreshNeeded=true;this.boundingBox={top:0,left:0,right:0,bottom:0}}(0,_createClass3[\"default\"])(NodeBase,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"_setMargins\",value:function _setMargins(labelModule){this.margin={};if(this.options.margin){if((0,_typeof3[\"default\"])(this.options.margin)==\"object\"){this.margin.top=this.options.margin.top;this.margin.right=this.options.margin.right;this.margin.bottom=this.options.margin.bottom;this.margin.left=this.options.margin.left}else{this.margin.top=this.options.margin;this.margin.right=this.options.margin;this.margin.bottom=this.options.margin;this.margin.left=this.options.margin}}labelModule.adjustSizes(this.margin)}},{key:\"_distanceToBorder\",value:function _distanceToBorder(ctx,angle){var borderWidth=this.options.borderWidth;this.resize(ctx);return Math.min(Math.abs(this.width/2/Math.cos(angle)),Math.abs(this.height/2/Math.sin(angle)))+borderWidth}},{key:\"enableShadow\",value:function enableShadow(ctx,values){if(values.shadow){ctx.shadowColor=values.shadowColor;ctx.shadowBlur=values.shadowSize;ctx.shadowOffsetX=values.shadowX;ctx.shadowOffsetY=values.shadowY}}},{key:\"disableShadow\",value:function disableShadow(ctx,values){if(values.shadow){ctx.shadowColor=\"rgba(0,0,0,0)\";ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.shadowOffsetY=0}}},{key:\"enableBorderDashes\",value:function enableBorderDashes(ctx,values){if(values.borderDashes!==false){if(ctx.setLineDash!==undefined){var dashes=values.borderDashes;if(dashes===true){dashes=[5,15]}ctx.setLineDash(dashes)}else{console.warn(\"setLineDash is not supported in this browser. The dashed borders cannot be used.\");this.options.shapeProperties.borderDashes=false;values.borderDashes=false}}}},{key:\"disableBorderDashes\",value:function disableBorderDashes(ctx,values){if(values.borderDashes!==false){if(ctx.setLineDash!==undefined){ctx.setLineDash([0])}else{console.warn(\"setLineDash is not supported in this browser. The dashed borders cannot be used.\");this.options.shapeProperties.borderDashes=false;values.borderDashes=false}}}},{key:\"needsRefresh\",value:function needsRefresh(selected,hover){if(this.refreshNeeded===true){this.refreshNeeded=false;return true}return this.width===undefined||this.labelModule.differentState(selected,hover)}},{key:\"initContextForDraw\",value:function initContextForDraw(ctx,values){var borderWidth=values.borderWidth/this.body.view.scale;ctx.lineWidth=Math.min(this.width,borderWidth);ctx.strokeStyle=values.borderColor;ctx.fillStyle=values.color}},{key:\"performStroke\",value:function performStroke(ctx,values){var borderWidth=values.borderWidth/this.body.view.scale;ctx.save();if(borderWidth>0){this.enableBorderDashes(ctx,values);ctx.stroke();this.disableBorderDashes(ctx,values)}ctx.restore()}},{key:\"performFill\",value:function performFill(ctx,values){this.enableShadow(ctx,values);ctx.fill();this.disableShadow(ctx,values);this.performStroke(ctx,values)}},{key:\"_addBoundingBoxMargin\",value:function _addBoundingBoxMargin(margin){this.boundingBox.left-=margin;this.boundingBox.top-=margin;this.boundingBox.bottom+=margin;this.boundingBox.right+=margin}},{key:\"_updateBoundingBox\",value:function _updateBoundingBox(x,y,ctx,selected,hover){if(ctx!==undefined){this.resize(ctx,selected,hover)}this.left=x-this.width/2;this.top=y-this.height/2;this.boundingBox.left=this.left;this.boundingBox.top=this.top;this.boundingBox.bottom=this.top+this.height;this.boundingBox.right=this.left+this.width}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y,ctx,selected,hover){this._updateBoundingBox(x,y,ctx,selected,hover)}},{key:\"getDimensionsFromLabel\",value:function getDimensionsFromLabel(ctx,selected,hover){this.textSize=this.labelModule.getTextSize(ctx,selected,hover);var width=this.textSize.width;var height=this.textSize.height;var DEFAULT_SIZE=14;if(width===0){width=DEFAULT_SIZE;height=DEFAULT_SIZE}return{width:width,height:height}}}]);return NodeBase}();exports[\"default\"]=NodeBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2)\n;var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var ShapeBase=function(_NodeBase){(0,_inherits3[\"default\"])(ShapeBase,_NodeBase);function ShapeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,ShapeBase);return(0,_possibleConstructorReturn3[\"default\"])(this,(ShapeBase.__proto__||(0,_getPrototypeOf2[\"default\"])(ShapeBase)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(ShapeBase,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;var values=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{size:this.options.size};if(this.needsRefresh(selected,hover)){this.labelModule.getTextSize(ctx,selected,hover);var size=2*values.size;this.width=size;this.height=size;this.radius=.5*this.width}}},{key:\"_drawShape\",value:function _drawShape(ctx,shape,sizeMultiplier,x,y,selected,hover,values){this.resize(ctx,selected,hover,values);this.left=x-this.width/2;this.top=y-this.height/2;this.initContextForDraw(ctx,values);ctx[shape](x,y,values.size);this.performFill(ctx,values);if(this.options.label!==undefined){this.labelModule.calculateLabelSize(ctx,selected,hover,x,y,\"hanging\");var yLabel=y+.5*this.height+.5*this.labelModule.size.height;this.labelModule.draw(ctx,x,yLabel,selected,hover,\"hanging\")}this.updateBoundingBox(x,y)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.boundingBox.top=y-this.options.size;this.boundingBox.left=x-this.options.size;this.boundingBox.right=x+this.options.size;this.boundingBox.bottom=y+this.options.size;if(this.options.label!==undefined&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left);this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width);this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height)}}}]);return ShapeBase}(_NodeBase3[\"default\"]);exports[\"default\"]=ShapeBase},function(module,exports,__webpack_require__){var IObject=__webpack_require__(78);var defined=__webpack_require__(51);module.exports=function(it){return IObject(defined(it))}},function(module,exports,__webpack_require__){var dP=__webpack_require__(20);var createDesc=__webpack_require__(39);module.exports=__webpack_require__(21)?function(object,key,value){return dP.f(object,key,createDesc(1,value))}:function(object,key,value){object[key]=value;return object}},function(module,exports,__webpack_require__){var isObject=__webpack_require__(32);module.exports=function(it){if(!isObject(it))throw TypeError(it+\" is not an object!\");return it}},function(module,exports){module.exports=function(exec){try{return!!exec()}catch(e){return true}}},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(138),__esModule:true}},function(module,exports,__webpack_require__){\"use strict\";exports.__esModule=true;var _isIterable2=__webpack_require__(188);var _isIterable3=_interopRequireDefault(_isIterable2);var _getIterator2=__webpack_require__(77);var _getIterator3=_interopRequireDefault(_getIterator2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.default=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=(0,_getIterator3.default)(arr),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i[\"return\"])_i[\"return\"]()}finally{if(_d)throw _e}}return _arr}return function(arr,i){if(Array.isArray(arr)){return arr}else if((0,_isIterable3.default)(Object(arr))){return sliceIterator(arr,i)}else{throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}}()},function(module,exports){module.exports={}},function(module,exports){module.exports=function(it){return typeof it===\"object\"?it!==null:typeof it===\"function\"}},function(module,exports,__webpack_require__){var $keys=__webpack_require__(84);var enumBugKeys=__webpack_require__(58);module.exports=Object.keys||function keys(O){return $keys(O,enumBugKeys)}},function(module,exports,__webpack_require__){\"use strict\";function Point3d(x,y,z){this.x=x!==undefined?x:0;this.y=y!==undefined?y:0;this.z=z!==undefined?z:0}Point3d.subtract=function(a,b){var sub=new Point3d;sub.x=a.x-b.x;sub.y=a.y-b.y;sub.z=a.z-b.z;return sub};Point3d.add=function(a,b){var sum=new Point3d;sum.x=a.x+b.x;sum.y=a.y+b.y;sum.z=a.z+b.z;return sum};Point3d.avg=function(a,b){return new Point3d((a.x+b.x)/2,(a.y+b.y)/2,(a.z+b.z)/2)};Point3d.crossProduct=function(a,b){var crossproduct=new Point3d;crossproduct.x=a.y*b.z-a.z*b.y;crossproduct.y=a.z*b.x-a.x*b.z;crossproduct.z=a.x*b.y-a.y*b.x;return crossproduct};Point3d.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)};module.exports=Point3d},function(module,exports,__webpack_require__){\"use strict\";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;(function(root,factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__===\"function\"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else if(typeof exports===\"object\"){module.exports=factory()}else{root.keycharm=factory()}})(this,function(){function keycharm(options){var preventDefault=options&&options.preventDefault||false;var container=options&&options.container||window;var _exportFunctions={};var _bound={keydown:{},keyup:{}};var _keys={};var i;for(i=97;i<=122;i++){_keys[String.fromCharCode(i)]={code:65+(i-97),shift:false}}for(i=65;i<=90;i++){_keys[String.fromCharCode(i)]={code:i,shift:true}}for(i=0;i<=9;i++){_keys[\"\"+i]={code:48+i,shift:false}}for(i=1;i<=12;i++){_keys[\"F\"+i]={code:111+i,shift:false}}for(i=0;i<=9;i++){_keys[\"num\"+i]={code:96+i,shift:false}}_keys[\"num*\"]={code:106,shift:false};_keys[\"num+\"]={code:107,shift:false};_keys[\"num-\"]={code:109,shift:false};_keys[\"num/\"]={code:111,shift:false};_keys[\"num.\"]={code:110,shift:false};_keys[\"left\"]={code:37,shift:false};_keys[\"up\"]={code:38,shift:false};_keys[\"right\"]={code:39,shift:false};_keys[\"down\"]={code:40,shift:false};_keys[\"space\"]={code:32,shift:false};_keys[\"enter\"]={code:13,shift:false};_keys[\"shift\"]={code:16,shift:undefined};_keys[\"esc\"]={code:27,shift:false};_keys[\"backspace\"]={code:8,shift:false};_keys[\"tab\"]={code:9,shift:false};_keys[\"ctrl\"]={code:17,shift:false};_keys[\"alt\"]={code:18,shift:false};_keys[\"delete\"]={code:46,shift:false};_keys[\"pageup\"]={code:33,shift:false};_keys[\"pagedown\"]={code:34,shift:false};_keys[\"=\"]={code:187,shift:false};_keys[\"-\"]={code:189,shift:false};_keys[\"]\"]={code:221,shift:false};_keys[\"[\"]={code:219,shift:false};var down=function(event){handleEvent(event,\"keydown\")};var up=function(event){handleEvent(event,\"keyup\")};var handleEvent=function(event,type){if(_bound[type][event.keyCode]!==undefined){var bound=_bound[type][event.keyCode];for(var i=0;i<bound.length;i++){if(bound[i].shift===undefined){bound[i].fn(event)}else if(bound[i].shift==true&&event.shiftKey==true){bound[i].fn(event)}else if(bound[i].shift==false&&event.shiftKey==false){bound[i].fn(event)}}if(preventDefault==true){event.preventDefault()}}};_exportFunctions.bind=function(key,callback,type){if(type===undefined){type=\"keydown\"}if(_keys[key]===undefined){throw new Error(\"unsupported key: \"+key)}if(_bound[type][_keys[key].code]===undefined){_bound[type][_keys[key].code]=[]}_bound[type][_keys[key].code].push({fn:callback,shift:_keys[key].shift})};_exportFunctions.bindAll=function(callback,type){if(type===undefined){type=\"keydown\"}for(var key in _keys){if(_keys.hasOwnProperty(key)){_exportFunctions.bind(key,callback,type)}}};_exportFunctions.getKey=function(event){for(var key in _keys){if(_keys.hasOwnProperty(key)){if(event.shiftKey==true&&_keys[key].shift==true&&event.keyCode==_keys[key].code){return key}else if(event.shiftKey==false&&_keys[key].shift==false&&event.keyCode==_keys[key].code){return key}else if(event.keyCode==_keys[key].code&&key==\"shift\"){return key}}}return\"unknown key, currently not supported\"};_exportFunctions.unbind=function(key,callback,type){if(type===undefined){type=\"keydown\"}if(_keys[key]===undefined){throw new Error(\"unsupported key: \"+key)}if(callback!==undefined){var newBindings=[];var bound=_bound[type][_keys[key].code];if(bound!==undefined){for(var i=0;i<bound.length;i++){if(!(bound[i].fn==callback&&bound[i].shift==_keys[key].shift)){newBindings.push(_bound[type][_keys[key].code][i])}}}_bound[type][_keys[key].code]=newBindings}else{_bound[type][_keys[key].code]=[]}};_exportFunctions.reset=function(){_bound={keydown:{},keyup:{}}};_exportFunctions.destroy=function(){_bound={keydown:{},keyup:{}};container.removeEventListener(\"keydown\",down,true);container.removeEventListener(\"keyup\",up,true)};container.addEventListener(\"keydown\",down,true);container.addEventListener(\"keyup\",up,true);return _exportFunctions}return keycharm})},function(module,exports,__webpack_require__){\"use strict\";exports.convertHiddenOptions=function(moment,body,hiddenDates){if(hiddenDates&&!Array.isArray(hiddenDates)){return exports.convertHiddenOptions(moment,body,[hiddenDates])}body.hiddenDates=[];if(hiddenDates){if(Array.isArray(hiddenDates)==true){for(var i=0;i<hiddenDates.length;i++){if(hiddenDates[i].repeat===undefined){var dateItem={};dateItem.start=moment(hiddenDates[i].start).toDate().valueOf();dateItem.end=moment(hiddenDates[i].end).toDate().valueOf();body.hiddenDates.push(dateItem)}}body.hiddenDates.sort(function(a,b){return a.start-b.start})}}};exports.updateHiddenDates=function(moment,body,hiddenDates){if(hiddenDates&&!Array.isArray(hiddenDates)){return exports.updateHiddenDates(moment,body,[hiddenDates])}if(hiddenDates&&body.domProps.centerContainer.width!==undefined){exports.convertHiddenOptions(moment,body,hiddenDates);var start=moment(body.range.start);var end=moment(body.range.end);var totalRange=body.range.end-body.range.start;var pixelTime=totalRange/body.domProps.centerContainer.width;for(var i=0;i<hiddenDates.length;i++){if(hiddenDates[i].repeat!==undefined){var startDate=moment(hiddenDates[i].start);var endDate=moment(hiddenDates[i].end);if(startDate._d==\"Invalid Date\"){throw new Error(\"Supplied start date is not valid: \"+hiddenDates[i].start)}if(endDate._d==\"Invalid Date\"){throw new Error(\"Supplied end date is not valid: \"+hiddenDates[i].end)}var duration=endDate-startDate;if(duration>=4*pixelTime){var offset=0;var runUntil=end.clone();switch(hiddenDates[i].repeat){case\"daily\":if(startDate.day()!=endDate.day()){offset=1}startDate.dayOfYear(start.dayOfYear());startDate.year(start.year());startDate.subtract(7,\"days\");endDate.dayOfYear(start.dayOfYear());endDate.year(start.year());endDate.subtract(7-offset,\"days\");runUntil.add(1,\"weeks\");break;case\"weekly\":var dayOffset=endDate.diff(startDate,\"days\");var day=startDate.day();startDate.date(start.date());startDate.month(start.month());startDate.year(start.year());endDate=startDate.clone();startDate.day(day);endDate.day(day);endDate.add(dayOffset,\"days\");startDate.subtract(1,\"weeks\");endDate.subtract(1,\"weeks\");runUntil.add(1,\"weeks\");break;case\"monthly\":if(startDate.month()!=endDate.month()){offset=1}startDate.month(start.month());startDate.year(start.year());startDate.subtract(1,\"months\");endDate.month(start.month());endDate.year(start.year());endDate.subtract(1,\"months\");endDate.add(offset,\"months\");runUntil.add(1,\"months\");break;case\"yearly\":if(startDate.year()!=endDate.year()){offset=1}startDate.year(start.year());startDate.subtract(1,\"years\");endDate.year(start.year());endDate.subtract(1,\"years\");endDate.add(offset,\"years\");runUntil.add(1,\"years\");break;default:console.log(\"Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:\",hiddenDates[i].repeat);return}while(startDate<runUntil){body.hiddenDates.push({start:startDate.valueOf(),end:endDate.valueOf()});switch(hiddenDates[i].repeat){case\"daily\":startDate.add(1,\"days\");endDate.add(1,\"days\");break;case\"weekly\":startDate.add(1,\"weeks\");endDate.add(1,\"weeks\");break;case\"monthly\":startDate.add(1,\"months\");endDate.add(1,\"months\");break;case\"yearly\":startDate.add(1,\"y\");endDate.add(1,\"y\");break;default:console.log(\"Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:\",hiddenDates[i].repeat);return}}body.hiddenDates.push({start:startDate.valueOf(),end:endDate.valueOf()})}}}exports.removeDuplicates(body);var startHidden=exports.isHidden(body.range.start,body.hiddenDates);var endHidden=exports.isHidden(body.range.end,body.hiddenDates);var rangeStart=body.range.start;var rangeEnd=body.range.end;if(startHidden.hidden==true){rangeStart=body.range.startToFront==true?startHidden.startDate-1:startHidden.endDate+1}if(endHidden.hidden==true){rangeEnd=body.range.endToFront==true?endHidden.startDate-1:endHidden.endDate+1}if(startHidden.hidden==true||endHidden.hidden==true){body.range._applyRange(rangeStart,rangeEnd)}}};exports.removeDuplicates=function(body){var hiddenDates=body.hiddenDates;var safeDates=[];for(var i=0;i<hiddenDates.length;i++){for(var j=0;j<hiddenDates.length;j++){if(i!=j&&hiddenDates[j].remove!=true&&hiddenDates[i].remove!=true){if(hiddenDates[j].start>=hiddenDates[i].start&&hiddenDates[j].end<=hiddenDates[i].end){hiddenDates[j].remove=true}else if(hiddenDates[j].start>=hiddenDates[i].start&&hiddenDates[j].start<=hiddenDates[i].end){hiddenDates[i].end=hiddenDates[j].end;hiddenDates[j].remove=true}else if(hiddenDates[j].end>=hiddenDates[i].start&&hiddenDates[j].end<=hiddenDates[i].end){hiddenDates[i].start=hiddenDates[j].start;hiddenDates[j].remove=true}}}}for(i=0;i<hiddenDates.length;i++){if(hiddenDates[i].remove!==true){safeDates.push(hiddenDates[i])}}body.hiddenDates=safeDates;body.hiddenDates.sort(function(a,b){return a.start-b.start})};exports.printDates=function(dates){for(var i=0;i<dates.length;i++){console.log(i,new Date(dates[i].start),new Date(dates[i].end),dates[i].start,dates[i].end,dates[i].remove)}};exports.stepOverHiddenDates=function(moment,timeStep,previousTime){var stepInHidden=false;var currentValue=timeStep.current.valueOf();for(var i=0;i<timeStep.hiddenDates.length;i++){var startDate=timeStep.hiddenDates[i].start;var endDate=timeStep.hiddenDates[i].end;if(currentValue>=startDate&¤tValue<endDate){stepInHidden=true;break}}if(stepInHidden==true&¤tValue<timeStep._end.valueOf()&¤tValue!=previousTime){var prevValue=moment(previousTime);var newValue=moment(endDate);if(prevValue.year()!=newValue.year()){timeStep.switchedYear=true}else if(prevValue.month()!=newValue.month()){timeStep.switchedMonth=true}else if(prevValue.dayOfYear()!=newValue.dayOfYear()){timeStep.switchedDay=true}timeStep.current=newValue}};exports.toScreen=function(Core,time,width){var conversion;if(Core.body.hiddenDates.length==0){conversion=Core.range.conversion(width);return(time.valueOf()-conversion.offset)*conversion.scale}else{var hidden=exports.isHidden(time,Core.body.hiddenDates);if(hidden.hidden==true){time=hidden.startDate}var duration=exports.getHiddenDurationBetween(Core.body.hiddenDates,Core.range.start,Core.range.end);if(time<Core.range.start){conversion=Core.range.conversion(width,duration);var hiddenBeforeStart=exports.getHiddenDurationBeforeStart(Core.body.hiddenDates,time,conversion.offset);time=Core.options.moment(time).toDate().valueOf();time=time+hiddenBeforeStart;return-(conversion.offset-time.valueOf())*conversion.scale}else if(time>Core.range.end){var rangeAfterEnd={start:Core.range.start,end:time};time=exports.correctTimeForHidden(Core.options.moment,Core.body.hiddenDates,rangeAfterEnd,time);conversion=Core.range.conversion(width,duration);return(time.valueOf()-conversion.offset)*conversion.scale}else{time=exports.correctTimeForHidden(Core.options.moment,Core.body.hiddenDates,Core.range,time);conversion=Core.range.conversion(width,duration);return(time.valueOf()-conversion.offset)*conversion.scale}}};exports.toTime=function(Core,x,width){if(Core.body.hiddenDates.length==0){var conversion=Core.range.conversion(width);return new Date(x/conversion.scale+conversion.offset)}else{var hiddenDuration=exports.getHiddenDurationBetween(Core.body.hiddenDates,Core.range.start,Core.range.end);var totalDuration=Core.range.end-Core.range.start-hiddenDuration;var partialDuration=totalDuration*x/width;var accumulatedHiddenDuration=exports.getAccumulatedHiddenDuration(Core.body.hiddenDates,Core.range,partialDuration);return new Date(accumulatedHiddenDuration+partialDuration+Core.range.start)}};exports.getHiddenDurationBetween=function(hiddenDates,start,end){var duration=0;for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(startDate>=start&&endDate<end){duration+=endDate-startDate}}return duration};exports.getHiddenDurationBeforeStart=function(hiddenDates,start,end){var duration=0;for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(startDate>=start&&endDate<=end){duration+=endDate-startDate}}return duration};exports.correctTimeForHidden=function(moment,hiddenDates,range,time){time=moment(time).toDate().valueOf();time-=exports.getHiddenDurationBefore(moment,hiddenDates,range,time);return time};exports.getHiddenDurationBefore=function(moment,hiddenDates,range,time){var timeOffset=0;time=moment(time).toDate().valueOf();for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(startDate>=range.start&&endDate<range.end){if(time>=endDate){timeOffset+=endDate-startDate}}}return timeOffset};exports.getAccumulatedHiddenDuration=function(hiddenDates,range,requiredDuration){var hiddenDuration=0;var duration=0;var previousPoint=range.start;for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(startDate>=range.start&&endDate<range.end){duration+=startDate-previousPoint;previousPoint=endDate;if(duration>=requiredDuration){break}else{hiddenDuration+=endDate-startDate}}}return hiddenDuration};exports.snapAwayFromHidden=function(hiddenDates,time,direction,correctionEnabled){var isHidden=exports.isHidden(time,hiddenDates);if(isHidden.hidden==true){if(direction<0){if(correctionEnabled==true){return isHidden.startDate-(isHidden.endDate-time)-1}else{return isHidden.startDate-1}}else{if(correctionEnabled==true){return isHidden.endDate+(time-isHidden.startDate)+1}else{return isHidden.endDate+1}}}else{return time}};exports.isHidden=function(time,hiddenDates){for(var i=0;i<hiddenDates.length;i++){var startDate=hiddenDates[i].start;var endDate=hiddenDates[i].end;if(time>=startDate&&time<endDate){return{hidden:true,startDate:startDate,endDate:endDate}}}return{hidden:false,startDate:startDate,endDate:endDate}}},function(module,exports,__webpack_require__){\"use strict\";exports.onTouch=function(hammer,callback){callback.inputHandler=function(event){if(event.isFirst){callback(event)}};hammer.on(\"hammer.input\",callback.inputHandler)};exports.onRelease=function(hammer,callback){callback.inputHandler=function(event){if(event.isFinal){callback(event)}};return hammer.on(\"hammer.input\",callback.inputHandler)};exports.offTouch=function(hammer,callback){hammer.off(\"hammer.input\",callback.inputHandler)};exports.offRelease=exports.offTouch;exports.disablePreventDefaultVertically=function(pinchRecognizer){var TOUCH_ACTION_PAN_Y=\"pan-y\";pinchRecognizer.getTouchAction=function(){return[TOUCH_ACTION_PAN_Y]};return pinchRecognizer}},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var util=__webpack_require__(2);var moment=__webpack_require__(9);function Item(data,conversion,options){this.id=null;this.parent=null;this.data=data;this.dom=null;this.conversion=conversion||{};this.options=options||{};this.selected=false;this.displayed=false;this.groupShowing=true;this.dirty=true;this.top=null;this.right=null;this.left=null;this.width=null;this.height=null;this.editable=null;this._updateEditStatus()}Item.prototype.stack=true;Item.prototype.select=function(){this.selected=true;this.dirty=true;if(this.displayed)this.redraw()};Item.prototype.unselect=function(){this.selected=false;this.dirty=true;if(this.displayed)this.redraw()};Item.prototype.setData=function(data){var groupChanged=data.group!=undefined&&this.data.group!=data.group;if(groupChanged&&this.parent!=null){this.parent.itemSet._moveToGroup(this,data.group)}if(this.parent){this.parent.stackDirty=true}var subGroupChanged=data.subgroup!=undefined&&this.data.subgroup!=data.subgroup;if(subGroupChanged&&this.parent!=null){this.parent.changeSubgroup(this,this.data.subgroup,data.subgroup)}this.data=data;this._updateEditStatus();this.dirty=true;if(this.displayed)this.redraw()};Item.prototype.setParent=function(parent){if(this.displayed){this.hide();this.parent=parent;if(this.parent){this.show()}}else{this.parent=parent}};Item.prototype.isVisible=function(range){return false};Item.prototype.show=function(){return false};Item.prototype.hide=function(){return false};Item.prototype.redraw=function(){};Item.prototype.repositionX=function(){};Item.prototype.repositionY=function(){};Item.prototype._repaintDragCenter=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragCenter){var me=this;var dragCenter=document.createElement(\"div\");dragCenter.className=\"vis-drag-center\";dragCenter.dragCenterItem=this;var hammer=new Hammer(dragCenter);hammer.on(\"tap\",function(event){me.parent.itemSet.body.emitter.emit(\"click\",{event:event,item:me.id})});hammer.on(\"doubletap\",function(event){event.stopPropagation();me.parent.itemSet._onUpdateItem(me);me.parent.itemSet.body.emitter.emit(\"doubleClick\",{event:event,item:me.id})});if(this.dom.box){if(this.dom.dragLeft){this.dom.box.insertBefore(dragCenter,this.dom.dragLeft)}else{this.dom.box.appendChild(dragCenter)}}else if(this.dom.point){this.dom.point.appendChild(dragCenter)}this.dom.dragCenter=dragCenter}else if(!this.selected&&this.dom.dragCenter){if(this.dom.dragCenter.parentNode){this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter)}this.dom.dragCenter=null}};Item.prototype._repaintDeleteButton=function(anchor){var editable=(this.options.editable.overrideItems||this.editable==null)&&this.options.editable.remove||!this.options.editable.overrideItems&&this.editable!=null&&this.editable.remove;if(this.selected&&editable&&!this.dom.deleteButton){var me=this;var deleteButton=document.createElement(\"div\");if(this.options.rtl){deleteButton.className=\"vis-delete-rtl\"}else{deleteButton.className=\"vis-delete\"}deleteButton.title=\"Delete this item\";new Hammer(deleteButton).on(\"tap\",function(event){event.stopPropagation();me.parent.removeFromDataSet(me)});anchor.appendChild(deleteButton);this.dom.deleteButton=deleteButton}else if(!this.selected&&this.dom.deleteButton){if(this.dom.deleteButton.parentNode){this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton)}this.dom.deleteButton=null}};Item.prototype._repaintOnItemUpdateTimeTooltip=function(anchor){if(!this.options.tooltipOnItemUpdateTime)return;var editable=(this.options.editable.updateTime||this.data.editable===true)&&this.data.editable!==false;if(this.selected&&editable&&!this.dom.onItemUpdateTimeTooltip){var onItemUpdateTimeTooltip=document.createElement(\"div\");onItemUpdateTimeTooltip.className=\"vis-onUpdateTime-tooltip\";anchor.appendChild(onItemUpdateTimeTooltip);this.dom.onItemUpdateTimeTooltip=onItemUpdateTimeTooltip}else if(!this.selected&&this.dom.onItemUpdateTimeTooltip){if(this.dom.onItemUpdateTimeTooltip.parentNode){this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip)}this.dom.onItemUpdateTimeTooltip=null}if(this.dom.onItemUpdateTimeTooltip){this.dom.onItemUpdateTimeTooltip.style.visibility=this.parent.itemSet.touchParams.itemIsDragging?\"visible\":\"hidden\";if(this.options.rtl){this.dom.onItemUpdateTimeTooltip.style.right=this.dom.content.style.right}else{this.dom.onItemUpdateTimeTooltip.style.left=this.dom.content.style.left}var tooltipOffset=50;var scrollTop=this.parent.itemSet.body.domProps.scrollTop;var itemDistanceFromTop;if(this.options.orientation.item==\"top\"){itemDistanceFromTop=this.top}else{itemDistanceFromTop=this.parent.height-this.top-this.height}var isCloseToTop=itemDistanceFromTop+this.parent.top-tooltipOffset<-scrollTop;if(isCloseToTop){this.dom.onItemUpdateTimeTooltip.style.bottom=\"\";this.dom.onItemUpdateTimeTooltip.style.top=this.height+2+\"px\"}else{this.dom.onItemUpdateTimeTooltip.style.top=\"\";this.dom.onItemUpdateTimeTooltip.style.bottom=this.height+2+\"px\"}var content;var templateFunction;if(this.options.tooltipOnItemUpdateTime&&this.options.tooltipOnItemUpdateTime.template){templateFunction=this.options.tooltipOnItemUpdateTime.template.bind(this);content=templateFunction(this.data)}else{content=\"start: \"+moment(this.data.start).format(\"MM/DD/YYYY hh:mm\");if(this.data.end){content+=\"<br> end: \"+moment(this.data.end).format(\"MM/DD/YYYY hh:mm\")}}this.dom.onItemUpdateTimeTooltip.innerHTML=content}};Item.prototype._updateContents=function(element){var content;var changed;var templateFunction;var itemVisibleFrameContent;var visibleFrameTemplateFunction;var itemData=this.parent.itemSet.itemsData.get(this.id);var frameElement=this.dom.box||this.dom.point;var itemVisibleFrameContentElement=frameElement.getElementsByClassName(\"vis-item-visible-frame\")[0];if(this.options.visibleFrameTemplate){visibleFrameTemplateFunction=this.options.visibleFrameTemplate.bind(this);itemVisibleFrameContent=visibleFrameTemplateFunction(itemData,frameElement)}else{itemVisibleFrameContent=\"\"}if(itemVisibleFrameContentElement){if(itemVisibleFrameContent instanceof Object&&!(itemVisibleFrameContent instanceof Element)){visibleFrameTemplateFunction(itemData,itemVisibleFrameContentElement)}else{changed=this._contentToString(this.itemVisibleFrameContent)!==this._contentToString(itemVisibleFrameContent);if(changed){if(itemVisibleFrameContent instanceof Element){itemVisibleFrameContentElement.innerHTML=\"\";itemVisibleFrameContentElement.appendChild(itemVisibleFrameContent)}else if(itemVisibleFrameContent!=undefined){itemVisibleFrameContentElement.innerHTML=itemVisibleFrameContent}else{if(!(this.data.type==\"background\"&&this.data.content===undefined)){throw new Error('Property \"content\" missing in item '+this.id)}}this.itemVisibleFrameContent=itemVisibleFrameContent}}}if(this.options.template){templateFunction=this.options.template.bind(this);content=templateFunction(itemData,element,this.data)}else{content=this.data.content}if(content instanceof Object&&!(content instanceof Element)){templateFunction(itemData,element)}else{changed=this._contentToString(this.content)!==this._contentToString(content);if(changed){if(content instanceof Element){element.innerHTML=\"\";element.appendChild(content)}else if(content!=undefined){element.innerHTML=content}else{if(!(this.data.type==\"background\"&&this.data.content===undefined)){throw new Error('Property \"content\" missing in item '+this.id)}}this.content=content}}};Item.prototype._updateDataAttributes=function(element){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var attributes=[];if(Array.isArray(this.options.dataAttributes)){attributes=this.options.dataAttributes}else if(this.options.dataAttributes==\"all\"){attributes=(0,_keys2[\"default\"])(this.data)}else{return}for(var i=0;i<attributes.length;i++){var name=attributes[i];var value=this.data[name];if(value!=null){element.setAttribute(\"data-\"+name,value)}else{element.removeAttribute(\"data-\"+name)}}}};Item.prototype._updateStyle=function(element){if(this.style){util.removeCssText(element,this.style);this.style=null}if(this.data.style){util.addCssText(element,this.data.style);this.style=this.data.style}};Item.prototype._contentToString=function(content){if(typeof content===\"string\")return content;if(content&&\"outerHTML\"in content)return content.outerHTML;return content};Item.prototype._updateEditStatus=function(){if(this.options){if(typeof this.options.editable===\"boolean\"){this.editable={updateTime:this.options.editable,updateGroup:this.options.editable,remove:this.options.editable}}else if((0,_typeof3[\"default\"])(this.options.editable)===\"object\"){this.editable={};util.selectiveExtend([\"updateTime\",\"updateGroup\",\"remove\"],this.editable,this.options.editable)}}if(!this.options||!this.options.editable||this.options.editable.overrideItems!==true){if(this.data){if(typeof this.data.editable===\"boolean\"){this.editable={updateTime:this.data.editable,updateGroup:this.data.editable,remove:this.data.editable}}else if((0,_typeof3[\"default\"])(this.data.editable)===\"object\"){this.editable={};util.selectiveExtend([\"updateTime\",\"updateGroup\",\"remove\"],this.editable,this.data.editable)}}}};Item.prototype.getWidthLeft=function(){return 0};Item.prototype.getWidthRight=function(){return 0};Item.prototype.getTitle=function(){return this.data.title};module.exports=Item},function(module,exports){module.exports=function(bitmap,value){return{enumerable:!(bitmap&1),configurable:!(bitmap&2),writable:!(bitmap&4),value:value}}},function(module,exports){var id=0;var px=Math.random();module.exports=function(key){return\"Symbol(\".concat(key===undefined?\"\":key,\")_\",(++id+px).toString(36))}},function(module,exports,__webpack_require__){var defined=__webpack_require__(51);module.exports=function(it){return Object(defined(it))}},function(module,exports){exports.f={}.propertyIsEnumerable},function(module,exports,__webpack_require__){\"use strict\";function Queue(options){this.delay=null;this.max=Infinity;this._queue=[];this._timeout=null;this._extended=null;this.setOptions(options)}Queue.prototype.setOptions=function(options){if(options&&typeof options.delay!==\"undefined\"){this.delay=options.delay}if(options&&typeof options.max!==\"undefined\"){this.max=options.max}this._flushIfNeeded()};Queue.extend=function(object,options){var queue=new Queue(options);if(object.flush!==undefined){throw new Error(\"Target object already has a property flush\")}object.flush=function(){queue.flush()};var methods=[{name:\"flush\",original:undefined}];if(options&&options.replace){for(var i=0;i<options.replace.length;i++){var name=options.replace[i];methods.push({name:name,original:object[name]});queue.replace(object,name)}}queue._extended={object:object,methods:methods};return queue};Queue.prototype.destroy=function(){this.flush();if(this._extended){var object=this._extended.object;var methods=this._extended.methods;for(var i=0;i<methods.length;i++){var method=methods[i];if(method.original){object[method.name]=method.original}else{delete object[method.name]}}this._extended=null}};Queue.prototype.replace=function(object,method){var me=this;var original=object[method];if(!original){throw new Error(\"Method \"+method+\" undefined\")}object[method]=function(){var args=[];for(var i=0;i<arguments.length;i++){args[i]=arguments[i]}me.queue({args:args,fn:original,context:this})}};Queue.prototype.queue=function(entry){if(typeof entry===\"function\"){this._queue.push({fn:entry})}else{this._queue.push(entry)}this._flushIfNeeded()};Queue.prototype._flushIfNeeded=function(){\nif(this._queue.length>this.max){this.flush()}clearTimeout(this._timeout);if(this.queue.length>0&&typeof this.delay===\"number\"){var me=this;this._timeout=setTimeout(function(){me.flush()},this.delay)}};Queue.prototype.flush=function(){while(this._queue.length>0){var entry=this._queue.shift();entry.fn.apply(entry.context||entry.fn,entry.args||[])}};module.exports=Queue},function(module,exports){module.exports=Emitter;function Emitter(obj){if(obj)return mixin(obj)}function mixin(obj){for(var key in Emitter.prototype){obj[key]=Emitter.prototype[key]}return obj}Emitter.prototype.on=Emitter.prototype.addEventListener=function(event,fn){this._callbacks=this._callbacks||{};(this._callbacks[event]=this._callbacks[event]||[]).push(fn);return this};Emitter.prototype.once=function(event,fn){var self=this;this._callbacks=this._callbacks||{};function on(){self.off(event,on);fn.apply(this,arguments)}on.fn=fn;this.on(event,on);return this};Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(event,fn){this._callbacks=this._callbacks||{};if(0==arguments.length){this._callbacks={};return this}var callbacks=this._callbacks[event];if(!callbacks)return this;if(1==arguments.length){delete this._callbacks[event];return this}var cb;for(var i=0;i<callbacks.length;i++){cb=callbacks[i];if(cb===fn||cb.fn===fn){callbacks.splice(i,1);break}}return this};Emitter.prototype.emit=function(event){this._callbacks=this._callbacks||{};var args=[].slice.call(arguments,1),callbacks=this._callbacks[event];if(callbacks){callbacks=callbacks.slice(0);for(var i=0,len=callbacks.length;i<len;++i){callbacks[i].apply(this,args)}}return this};Emitter.prototype.listeners=function(event){this._callbacks=this._callbacks||{};return this._callbacks[event]||[]};Emitter.prototype.hasListeners=function(event){return!!this.listeners(event).length}},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Component=__webpack_require__(16);var TimeStep=__webpack_require__(66);var DateUtil=__webpack_require__(36);var moment=__webpack_require__(9);function TimeAxis(body,options){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}};this.props={range:{start:0,end:0,minimumStep:0},lineTop:0};this.defaultOptions={orientation:{axis:\"bottom\"},showMinorLabels:true,showMajorLabels:true,maxMinorChars:7,format:TimeStep.FORMAT,moment:moment,timeAxis:null};this.options=util.extend({},this.defaultOptions);this.body=body;this._create();this.setOptions(options)}TimeAxis.prototype=new Component;TimeAxis.prototype.setOptions=function(options){if(options){util.selectiveExtend([\"showMinorLabels\",\"showMajorLabels\",\"maxMinorChars\",\"hiddenDates\",\"timeAxis\",\"moment\",\"rtl\"],this.options,options);util.selectiveDeepExtend([\"format\"],this.options,options);if(\"orientation\"in options){if(typeof options.orientation===\"string\"){this.options.orientation.axis=options.orientation}else if((0,_typeof3[\"default\"])(options.orientation)===\"object\"&&\"axis\"in options.orientation){this.options.orientation.axis=options.orientation.axis}}if(\"locale\"in options){if(typeof moment.locale===\"function\"){moment.locale(options.locale)}else{moment.lang(options.locale)}}}};TimeAxis.prototype._create=function(){this.dom.foreground=document.createElement(\"div\");this.dom.background=document.createElement(\"div\");this.dom.foreground.className=\"vis-time-axis vis-foreground\";this.dom.background.className=\"vis-time-axis vis-background\"};TimeAxis.prototype.destroy=function(){if(this.dom.foreground.parentNode){this.dom.foreground.parentNode.removeChild(this.dom.foreground)}if(this.dom.background.parentNode){this.dom.background.parentNode.removeChild(this.dom.background)}this.body=null};TimeAxis.prototype.redraw=function(){var props=this.props;var foreground=this.dom.foreground;var background=this.dom.background;var parent=this.options.orientation.axis==\"top\"?this.body.dom.top:this.body.dom.bottom;var parentChanged=foreground.parentNode!==parent;this._calculateCharSize();var showMinorLabels=this.options.showMinorLabels&&this.options.orientation.axis!==\"none\";var showMajorLabels=this.options.showMajorLabels&&this.options.orientation.axis!==\"none\";props.minorLabelHeight=showMinorLabels?props.minorCharHeight:0;props.majorLabelHeight=showMajorLabels?props.majorCharHeight:0;props.height=props.minorLabelHeight+props.majorLabelHeight;props.width=foreground.offsetWidth;props.minorLineHeight=this.body.domProps.root.height-props.majorLabelHeight-(this.options.orientation.axis==\"top\"?this.body.domProps.bottom.height:this.body.domProps.top.height);props.minorLineWidth=1;props.majorLineHeight=props.minorLineHeight+props.majorLabelHeight;props.majorLineWidth=1;var foregroundNextSibling=foreground.nextSibling;var backgroundNextSibling=background.nextSibling;foreground.parentNode&&foreground.parentNode.removeChild(foreground);background.parentNode&&background.parentNode.removeChild(background);foreground.style.height=this.props.height+\"px\";this._repaintLabels();if(foregroundNextSibling){parent.insertBefore(foreground,foregroundNextSibling)}else{parent.appendChild(foreground)}if(backgroundNextSibling){this.body.dom.backgroundVertical.insertBefore(background,backgroundNextSibling)}else{this.body.dom.backgroundVertical.appendChild(background)}return this._isResized()||parentChanged};TimeAxis.prototype._repaintLabels=function(){var orientation=this.options.orientation.axis;var start=util.convert(this.body.range.start,\"Number\");var end=util.convert(this.body.range.end,\"Number\");var timeLabelsize=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf();var minimumStep=timeLabelsize-DateUtil.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,timeLabelsize);minimumStep-=this.body.util.toTime(0).valueOf();var step=new TimeStep(new Date(start),new Date(end),minimumStep,this.body.hiddenDates,this.options);step.setMoment(this.options.moment);if(this.options.format){step.setFormat(this.options.format)}if(this.options.timeAxis){step.setScale(this.options.timeAxis)}this.step=step;var dom=this.dom;dom.redundant.lines=dom.lines;dom.redundant.majorTexts=dom.majorTexts;dom.redundant.minorTexts=dom.minorTexts;dom.lines=[];dom.majorTexts=[];dom.minorTexts=[];var current;var next;var x;var xNext;var isMajor;var nextIsMajor;var showMinorGrid;var width=0,prevWidth;var line;var labelMinor;var xFirstMajorLabel=undefined;var count=0;var MAX=1e3;var className;step.start();next=step.getCurrent();xNext=this.body.util.toScreen(next);while(step.hasNext()&&count<MAX){count++;isMajor=step.isMajor();className=step.getClassName();labelMinor=step.getLabelMinor();current=next;x=xNext;step.next();next=step.getCurrent();nextIsMajor=step.isMajor();xNext=this.body.util.toScreen(next);prevWidth=width;width=xNext-x;switch(step.scale){case\"week\":showMinorGrid=true;break;default:showMinorGrid=width>=prevWidth*.4;break}if(this.options.showMinorLabels&&showMinorGrid){var label=this._repaintMinorText(x,labelMinor,orientation,className);label.style.width=width+\"px\"}if(isMajor&&this.options.showMajorLabels){if(x>0){if(xFirstMajorLabel==undefined){xFirstMajorLabel=x}label=this._repaintMajorText(x,step.getLabelMajor(),orientation,className)}line=this._repaintMajorLine(x,width,orientation,className)}else{if(showMinorGrid){line=this._repaintMinorLine(x,width,orientation,className)}else{if(line){line.style.width=parseInt(line.style.width)+width+\"px\"}}}}if(count===MAX&&!warnedForOverflow){console.warn(\"Something is wrong with the Timeline scale. Limited drawing of grid lines to \"+MAX+\" lines.\");warnedForOverflow=true}if(this.options.showMajorLabels){var leftTime=this.body.util.toTime(0),leftText=step.getLabelMajor(leftTime),widthText=leftText.length*(this.props.majorCharWidth||10)+10;if(xFirstMajorLabel==undefined||widthText<xFirstMajorLabel){this._repaintMajorText(0,leftText,orientation,className)}}util.forEach(this.dom.redundant,function(arr){while(arr.length){var elem=arr.pop();if(elem&&elem.parentNode){elem.parentNode.removeChild(elem)}}})};TimeAxis.prototype._repaintMinorText=function(x,text,orientation,className){var label=this.dom.redundant.minorTexts.shift();if(!label){var content=document.createTextNode(\"\");label=document.createElement(\"div\");label.appendChild(content);this.dom.foreground.appendChild(label)}this.dom.minorTexts.push(label);label.innerHTML=text;label.style.top=orientation==\"top\"?this.props.majorLabelHeight+\"px\":\"0\";if(this.options.rtl){label.style.left=\"\";label.style.right=x+\"px\"}else{label.style.left=x+\"px\"}label.className=\"vis-text vis-minor \"+className;return label};TimeAxis.prototype._repaintMajorText=function(x,text,orientation,className){var label=this.dom.redundant.majorTexts.shift();if(!label){var content=document.createElement(\"div\");label=document.createElement(\"div\");label.appendChild(content);this.dom.foreground.appendChild(label)}label.childNodes[0].innerHTML=text;label.className=\"vis-text vis-major \"+className;label.style.top=orientation==\"top\"?\"0\":this.props.minorLabelHeight+\"px\";if(this.options.rtl){label.style.left=\"\";label.style.right=x+\"px\"}else{label.style.left=x+\"px\"}this.dom.majorTexts.push(label);return label};TimeAxis.prototype._repaintMinorLine=function(x,width,orientation,className){var line=this.dom.redundant.lines.shift();if(!line){line=document.createElement(\"div\");this.dom.background.appendChild(line)}this.dom.lines.push(line);var props=this.props;if(orientation==\"top\"){line.style.top=props.majorLabelHeight+\"px\"}else{line.style.top=this.body.domProps.top.height+\"px\"}line.style.height=props.minorLineHeight+\"px\";if(this.options.rtl){line.style.left=\"\";line.style.right=x-props.minorLineWidth/2+\"px\";line.className=\"vis-grid vis-vertical-rtl vis-minor \"+className}else{line.style.left=x-props.minorLineWidth/2+\"px\";line.className=\"vis-grid vis-vertical vis-minor \"+className}line.style.width=width+\"px\";return line};TimeAxis.prototype._repaintMajorLine=function(x,width,orientation,className){var line=this.dom.redundant.lines.shift();if(!line){line=document.createElement(\"div\");this.dom.background.appendChild(line)}this.dom.lines.push(line);var props=this.props;if(orientation==\"top\"){line.style.top=\"0\"}else{line.style.top=this.body.domProps.top.height+\"px\"}if(this.options.rtl){line.style.left=\"\";line.style.right=x-props.majorLineWidth/2+\"px\";line.className=\"vis-grid vis-vertical-rtl vis-major \"+className}else{line.style.left=x-props.majorLineWidth/2+\"px\";line.className=\"vis-grid vis-vertical vis-major \"+className}line.style.height=props.majorLineHeight+\"px\";line.style.width=width+\"px\";return line};TimeAxis.prototype._calculateCharSize=function(){if(!this.dom.measureCharMinor){this.dom.measureCharMinor=document.createElement(\"DIV\");this.dom.measureCharMinor.className=\"vis-text vis-minor vis-measure\";this.dom.measureCharMinor.style.position=\"absolute\";this.dom.measureCharMinor.appendChild(document.createTextNode(\"0\"));this.dom.foreground.appendChild(this.dom.measureCharMinor)}this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight;this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth;if(!this.dom.measureCharMajor){this.dom.measureCharMajor=document.createElement(\"DIV\");this.dom.measureCharMajor.className=\"vis-text vis-major vis-measure\";this.dom.measureCharMajor.style.position=\"absolute\";this.dom.measureCharMajor.appendChild(document.createTextNode(\"0\"));this.dom.foreground.appendChild(this.dom.measureCharMajor)}this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight;this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth};var warnedForOverflow=false;module.exports=TimeAxis},function(module,exports,__webpack_require__){\"use strict\";var Hammer=__webpack_require__(10);var util=__webpack_require__(2);var Component=__webpack_require__(16);var moment=__webpack_require__(9);var locales=__webpack_require__(98);function CustomTime(body,options){this.body=body;this.defaultOptions={moment:moment,locales:locales,locale:\"en\",id:undefined,title:undefined};this.options=util.extend({},this.defaultOptions);if(options&&options.time){this.customTime=options.time}else{this.customTime=new Date}this.eventParams={};this.setOptions(options);this._create()}CustomTime.prototype=new Component;CustomTime.prototype.setOptions=function(options){if(options){util.selectiveExtend([\"moment\",\"locale\",\"locales\",\"id\"],this.options,options)}};CustomTime.prototype._create=function(){var bar=document.createElement(\"div\");bar[\"custom-time\"]=this;bar.className=\"vis-custom-time \"+(this.options.id||\"\");bar.style.position=\"absolute\";bar.style.top=\"0px\";bar.style.height=\"100%\";this.bar=bar;var drag=document.createElement(\"div\");drag.style.position=\"relative\";drag.style.top=\"0px\";drag.style.left=\"-10px\";drag.style.height=\"100%\";drag.style.width=\"20px\";function onMouseWheel(e){this.body.range._onMouseWheel(e)}if(drag.addEventListener){drag.addEventListener(\"mousewheel\",onMouseWheel.bind(this),false);drag.addEventListener(\"DOMMouseScroll\",onMouseWheel.bind(this),false)}else{drag.attachEvent(\"onmousewheel\",onMouseWheel.bind(this))}bar.appendChild(drag);this.hammer=new Hammer(drag);this.hammer.on(\"panstart\",this._onDragStart.bind(this));this.hammer.on(\"panmove\",this._onDrag.bind(this));this.hammer.on(\"panend\",this._onDragEnd.bind(this));this.hammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_HORIZONTAL})};CustomTime.prototype.destroy=function(){this.hide();this.hammer.destroy();this.hammer=null;this.body=null};CustomTime.prototype.redraw=function(){var parent=this.body.dom.backgroundVertical;if(this.bar.parentNode!=parent){if(this.bar.parentNode){this.bar.parentNode.removeChild(this.bar)}parent.appendChild(this.bar)}var x=this.body.util.toScreen(this.customTime);var locale=this.options.locales[this.options.locale];if(!locale){if(!this.warned){console.log(\"WARNING: options.locales['\"+this.options.locale+\"'] not found. See http://visjs.org/docs/timeline/#Localization\");this.warned=true}locale=this.options.locales[\"en\"]}var title=this.options.title;if(title===undefined){title=locale.time+\": \"+this.options.moment(this.customTime).format(\"dddd, MMMM Do YYYY, H:mm:ss\");title=title.charAt(0).toUpperCase()+title.substring(1)}else if(typeof title===\"function\"){title=title.call(this.customTime)}this.bar.style.left=x+\"px\";this.bar.title=title;return false};CustomTime.prototype.hide=function(){if(this.bar.parentNode){this.bar.parentNode.removeChild(this.bar)}};CustomTime.prototype.setCustomTime=function(time){this.customTime=util.convert(time,\"Date\");this.redraw()};CustomTime.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())};CustomTime.prototype.setCustomTitle=function(title){this.options.title=title};CustomTime.prototype._onDragStart=function(event){this.eventParams.dragging=true;this.eventParams.customTime=this.customTime;event.stopPropagation()};CustomTime.prototype._onDrag=function(event){if(!this.eventParams.dragging)return;var x=this.body.util.toScreen(this.eventParams.customTime)+event.deltaX;var time=this.body.util.toTime(x);this.setCustomTime(time);this.body.emitter.emit(\"timechange\",{id:this.options.id,time:new Date(this.customTime.valueOf()),event:event});event.stopPropagation()};CustomTime.prototype._onDragEnd=function(event){if(!this.eventParams.dragging)return;this.body.emitter.emit(\"timechanged\",{id:this.options.id,time:new Date(this.customTime.valueOf()),event:event});event.stopPropagation()};CustomTime.customTimeFromTarget=function(event){var target=event.target;while(target){if(target.hasOwnProperty(\"custom-time\")){return target[\"custom-time\"]}target=target.parentNode}return null};module.exports=CustomTime},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Label=__webpack_require__(117)[\"default\"];var ComponentUtil=__webpack_require__(48)[\"default\"];var Box=__webpack_require__(193)[\"default\"];var Circle=__webpack_require__(200)[\"default\"];var CircularImage=__webpack_require__(201)[\"default\"];var Database=__webpack_require__(202)[\"default\"];var Diamond=__webpack_require__(203)[\"default\"];var Dot=__webpack_require__(204)[\"default\"];var Ellipse=__webpack_require__(205)[\"default\"];var Icon=__webpack_require__(206)[\"default\"];var Image=__webpack_require__(207)[\"default\"];var Square=__webpack_require__(208)[\"default\"];var Hexagon=__webpack_require__(209)[\"default\"];var Star=__webpack_require__(210)[\"default\"];var Text=__webpack_require__(211)[\"default\"];var Triangle=__webpack_require__(212)[\"default\"];var TriangleDown=__webpack_require__(213)[\"default\"];var _require=__webpack_require__(15),printStyle=_require.printStyle;var Node=function(){function Node(options,body,imagelist,grouplist,globalOptions,defaultOptions){(0,_classCallCheck3[\"default\"])(this,Node);this.options=util.bridgeObject(globalOptions);this.globalOptions=globalOptions;this.defaultOptions=defaultOptions;this.body=body;this.edges=[];this.id=undefined;this.imagelist=imagelist;this.grouplist=grouplist;this.x=undefined;this.y=undefined;this.baseSize=this.options.size;this.baseFontSize=this.options.font.size;this.predefinedPosition=false;this.selected=false;this.hover=false;this.labelModule=new Label(this.body,this.options,false);this.setOptions(options)}(0,_createClass3[\"default\"])(Node,[{key:\"attachEdge\",value:function attachEdge(edge){if(this.edges.indexOf(edge)===-1){this.edges.push(edge)}}},{key:\"detachEdge\",value:function detachEdge(edge){var index=this.edges.indexOf(edge);if(index!=-1){this.edges.splice(index,1)}}},{key:\"setOptions\",value:function setOptions(options){var currentShape=this.options.shape;if(!options){return}if(options.id!==undefined){this.id=options.id}if(this.id===undefined){throw new Error(\"Node must have an id\")}Node.checkMass(options,this.id);if(options.x!==undefined){if(options.x===null){this.x=undefined;this.predefinedPosition=false}else{this.x=parseInt(options.x);this.predefinedPosition=true}}if(options.y!==undefined){if(options.y===null){this.y=undefined;this.predefinedPosition=false}else{this.y=parseInt(options.y);this.predefinedPosition=true}}if(options.size!==undefined){this.baseSize=options.size}if(options.value!==undefined){options.value=parseFloat(options.value)}Node.parseOptions(this.options,options,true,this.globalOptions,this.grouplist);var pile=[options,this.options,this.defaultOptions];this.chooser=ComponentUtil.choosify(\"node\",pile);this._load_images();this.updateLabelModule(options);this.updateShape(currentShape);return options.hidden!==undefined||options.physics!==undefined}},{key:\"_load_images\",value:function _load_images(){if(this.options.shape!==\"circularImage\"&&this.options.shape!==\"image\"){return}if(this.options.image===undefined){throw new Error(\"Option image must be defined for node type '\"+this.options.shape+\"'\")}if(this.imagelist===undefined){throw new Error(\"Internal Error: No images provided\")}if(typeof this.options.image===\"string\"){this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage,this.id)}else{if(this.options.image.unselected===undefined){throw new Error(\"No unselected image provided\")}this.imageObj=this.imagelist.load(this.options.image.unselected,this.options.brokenImage,this.id);if(this.options.image.selected!==undefined){this.imageObjAlt=this.imagelist.load(this.options.image.selected,this.options.brokenImage,this.id)}else{this.imageObjAlt=undefined}}}},{key:\"getFormattingValues\",value:function getFormattingValues(){var values={color:this.options.color.background,borderWidth:this.options.borderWidth,borderColor:this.options.color.border,size:this.options.size,borderDashes:this.options.shapeProperties.borderDashes,borderRadius:this.options.shapeProperties.borderRadius,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y};if(this.selected||this.hover){if(this.chooser===true){if(this.selected){values.borderWidth*=2;values.color=this.options.color.highlight.background;values.borderColor=this.options.color.highlight.border;values.shadow=this.options.shadow.enabled}else if(this.hover){values.color=this.options.color.hover.background;values.borderColor=this.options.color.hover.border;values.shadow=this.options.shadow.enabled}}else if(typeof this.chooser===\"function\"){this.chooser(values,this.options.id,this.selected,this.hover);if(values.shadow===false){if(values.shadowColor!==this.options.shadow.color||values.shadowSize!==this.options.shadow.size||values.shadowX!==this.options.shadow.x||values.shadowY!==this.options.shadow.y){values.shadow=true}}}}else{values.shadow=this.options.shadow.enabled}return values}},{key:\"updateLabelModule\",value:function updateLabelModule(options){if(this.options.label===undefined||this.options.label===null){this.options.label=\"\"}Node.updateGroupOptions(this.options,options,this.grouplist);var currentGroup=this.grouplist.get(this.options.group,false);var pile=[options,this.options,currentGroup,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,pile);if(this.labelModule.baseSize!==undefined){this.baseFontSize=this.labelModule.baseSize}}},{key:\"updateShape\",value:function updateShape(currentShape){if(currentShape===this.options.shape&&this.shape){this.shape.setOptions(this.options,this.imageObj,this.imageObjAlt)}else{switch(this.options.shape){case\"box\":this.shape=new Box(this.options,this.body,this.labelModule);break;case\"circle\":this.shape=new Circle(this.options,this.body,this.labelModule);break;case\"circularImage\":this.shape=new CircularImage(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case\"database\":this.shape=new Database(this.options,this.body,this.labelModule);break;case\"diamond\":this.shape=new Diamond(this.options,this.body,this.labelModule);break;case\"dot\":this.shape=new Dot(this.options,this.body,this.labelModule);break;case\"ellipse\":this.shape=new Ellipse(this.options,this.body,this.labelModule);break;case\"icon\":this.shape=new Icon(this.options,this.body,this.labelModule);break;case\"image\":this.shape=new Image(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case\"square\":this.shape=new Square(this.options,this.body,this.labelModule);break;case\"hexagon\":this.shape=new Hexagon(this.options,this.body,this.labelModule);break;case\"star\":this.shape=new Star(this.options,this.body,this.labelModule);break;case\"text\":this.shape=new Text(this.options,this.body,this.labelModule);break;case\"triangle\":this.shape=new Triangle(this.options,this.body,this.labelModule);break;case\"triangleDown\":this.shape=new TriangleDown(this.options,this.body,this.labelModule);break;default:this.shape=new Ellipse(this.options,this.body,this.labelModule);break}}this.needsRefresh()}},{key:\"select\",value:function select(){this.selected=true;this.needsRefresh()}},{key:\"unselect\",value:function unselect(){this.selected=false;this.needsRefresh()}},{key:\"needsRefresh\",value:function needsRefresh(){this.shape.refreshNeeded=true}},{key:\"getTitle\",value:function getTitle(){return this.options.title}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this.shape.distanceToBorder(ctx,angle)}},{key:\"isFixed\",value:function isFixed(){return this.options.fixed.x&&this.options.fixed.y}},{key:\"isSelected\",value:function isSelected(){return this.selected}},{key:\"getValue\",value:function getValue(){return this.options.value}},{key:\"getLabelSize\",value:function getLabelSize(){return this.labelModule.size()}},{key:\"setValueRange\",value:function setValueRange(min,max,total){if(this.options.value!==undefined){var scale=this.options.scaling.customScalingFunction(min,max,total,this.options.value);var sizeDiff=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===true){var fontDiff=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+scale*fontDiff}this.options.size=this.options.scaling.min+scale*sizeDiff}else{this.options.size=this.baseSize;this.options.font.size=this.baseFontSize}this.updateLabelModule()}},{key:\"draw\",value:function draw(ctx){var values=this.getFormattingValues();this.shape.draw(ctx,this.x,this.y,this.selected,this.hover,values)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(ctx){this.shape.updateBoundingBox(this.x,this.y,ctx)}},{key:\"resize\",value:function resize(ctx){var values=this.getFormattingValues();this.shape.resize(ctx,this.selected,this.hover,values)}},{key:\"getItemsOnPoint\",value:function getItemsOnPoint(point){var ret=[];if(this.labelModule.visible()){if(ComponentUtil.pointInRect(this.labelModule.getSize(),point)){ret.push({nodeId:this.id,labelId:0})}}if(ComponentUtil.pointInRect(this.shape.boundingBox,point)){ret.push({nodeId:this.id})}return ret}},{key:\"isOverlappingWith\",value:function isOverlappingWith(obj){return this.shape.left<obj.right&&this.shape.left+this.shape.width>obj.left&&this.shape.top<obj.bottom&&this.shape.top+this.shape.height>obj.top}},{key:\"isBoundingBoxOverlappingWith\",value:function isBoundingBoxOverlappingWith(obj){return this.shape.boundingBox.left<obj.right&&this.shape.boundingBox.right>obj.left&&this.shape.boundingBox.top<obj.bottom&&this.shape.boundingBox.bottom>obj.top}}],[{key:\"updateGroupOptions\",value:function updateGroupOptions(parentOptions,newOptions,groupList){if(groupList===undefined)return;var group=parentOptions.group;if(newOptions!==undefined&&newOptions.group!==undefined&&group!==newOptions.group){throw new Error(\"updateGroupOptions: group values in options don't match.\")}var hasGroup=typeof group===\"number\"||typeof group===\"string\"&&group!=\"\";if(!hasGroup)return;var groupObj=groupList.get(group);util.selectiveNotDeepExtend([\"font\"],parentOptions,groupObj);parentOptions.color=util.parseColor(parentOptions.color)}},{key:\"parseOptions\",value:function parseOptions(parentOptions,newOptions){var allowDeletion=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var globalOptions=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var groupList=arguments[4];var fields=[\"color\",\"fixed\",\"shadow\"];util.selectiveNotDeepExtend(fields,parentOptions,newOptions,allowDeletion);Node.checkMass(newOptions);util.mergeOptions(parentOptions,newOptions,\"shadow\",globalOptions);if(newOptions.color!==undefined&&newOptions.color!==null){var parsedColor=util.parseColor(newOptions.color);util.fillIfDefined(parentOptions.color,parsedColor)}else if(allowDeletion===true&&newOptions.color===null){parentOptions.color=util.bridgeObject(globalOptions.color)}if(newOptions.fixed!==undefined&&newOptions.fixed!==null){if(typeof newOptions.fixed===\"boolean\"){parentOptions.fixed.x=newOptions.fixed;parentOptions.fixed.y=newOptions.fixed}else{if(newOptions.fixed.x!==undefined&&typeof newOptions.fixed.x===\"boolean\"){parentOptions.fixed.x=newOptions.fixed.x}if(newOptions.fixed.y!==undefined&&typeof newOptions.fixed.y===\"boolean\"){parentOptions.fixed.y=newOptions.fixed.y}}}if(allowDeletion===true&&newOptions.font===null){parentOptions.font=util.bridgeObject(globalOptions.font)}Node.updateGroupOptions(parentOptions,newOptions,groupList);if(newOptions.scaling!==undefined){util.mergeOptions(parentOptions.scaling,newOptions.scaling,\"label\",globalOptions.scaling)}}},{key:\"checkMass\",value:function checkMass(options,id){if(options.mass!==undefined&&options.mass<=0){var strId=\"\";if(id!==undefined){strId=\" in node id: \"+id}console.log(\"%cNegative or zero mass disallowed\"+strId+\", setting mass to 1.\",printStyle);options.mass=1}}}]);return Node}();exports[\"default\"]=Node},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var ComponentUtil=function(){function ComponentUtil(){(0,_classCallCheck3[\"default\"])(this,ComponentUtil)}(0,_createClass3[\"default\"])(ComponentUtil,null,[{key:\"choosify\",value:function choosify(subOption,pile){var allowed=[\"node\",\"edge\",\"label\"];var value=true;var chosen=util.topMost(pile,\"chosen\");if(typeof chosen===\"boolean\"){value=chosen}else if((typeof chosen===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(chosen))===\"object\"){if(allowed.indexOf(subOption)===-1){throw new Error(\"choosify: subOption '\"+subOption+\"' should be one of \"+\"'\"+allowed.join(\"', '\")+\"'\")}var chosenEdge=util.topMost(pile,[\"chosen\",subOption]);if(typeof chosenEdge===\"boolean\"||typeof chosenEdge===\"function\"){value=chosenEdge}}return value}},{key:\"pointInRect\",value:function pointInRect(rect,point,rotationPoint){if(rect.width<=0||rect.height<=0){return false}if(rotationPoint!==undefined){var tmp={x:point.x-rotationPoint.x,y:point.y-rotationPoint.y};if(rotationPoint.angle!==0){var angle=-rotationPoint.angle;var tmp2={x:Math.cos(angle)*tmp.x-Math.sin(angle)*tmp.y,y:Math.sin(angle)*tmp.x+Math.cos(angle)*tmp.y};point=tmp2}else{point=tmp}}var right=rect.x+rect.width;var bottom=rect.y+rect.width;return rect.left<point.x&&right>point.x&&rect.top<point.y&&bottom>point.y}},{key:\"isValidLabel\",value:function isValidLabel(text){return typeof text===\"string\"&&text!==\"\"}}]);return ComponentUtil}();exports[\"default\"]=ComponentUtil},function(module,exports,__webpack_require__){__webpack_require__(125);var global=__webpack_require__(18);var hide=__webpack_require__(26);var Iterators=__webpack_require__(31);var TO_STRING_TAG=__webpack_require__(13)(\"toStringTag\");var DOMIterables=(\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,\"+\"DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,\"+\"MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,\"+\"SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,\"+\"TextTrackList,TouchList\").split(\",\");for(var i=0;i<DOMIterables.length;i++){var NAME=DOMIterables[i];var Collection=global[NAME];var proto=Collection&&Collection.prototype;if(proto&&!proto[TO_STRING_TAG])hide(proto,TO_STRING_TAG,NAME);Iterators[NAME]=Iterators.Array}},function(module,exports){var toString={}.toString;module.exports=function(it){return toString.call(it).slice(8,-1)}},function(module,exports){module.exports=function(it){if(it==undefined)throw TypeError(\"Can't call method on \"+it);return it}},function(module,exports){module.exports=true},function(module,exports,__webpack_require__){var isObject=__webpack_require__(32);module.exports=function(it,S){if(!isObject(it))return it;var fn,val;if(S&&typeof(fn=it.toString)==\"function\"&&!isObject(val=fn.call(it)))return val;if(typeof(fn=it.valueOf)==\"function\"&&!isObject(val=fn.call(it)))return val;if(!S&&typeof(fn=it.toString)==\"function\"&&!isObject(val=fn.call(it)))return val;throw TypeError(\"Can't convert object to primitive value\")}},function(module,exports,__webpack_require__){var anObject=__webpack_require__(27);var dPs=__webpack_require__(130);var enumBugKeys=__webpack_require__(58);var IE_PROTO=__webpack_require__(56)(\"IE_PROTO\")\n;var Empty=function(){};var PROTOTYPE=\"prototype\";var createDict=function(){var iframe=__webpack_require__(82)(\"iframe\");var i=enumBugKeys.length;var lt=\"<\";var gt=\">\";var iframeDocument;iframe.style.display=\"none\";__webpack_require__(134).appendChild(iframe);iframe.src=\"javascript:\";iframeDocument=iframe.contentWindow.document;iframeDocument.open();iframeDocument.write(lt+\"script\"+gt+\"document.F=Object\"+lt+\"/script\"+gt);iframeDocument.close();createDict=iframeDocument.F;while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];return createDict()};module.exports=Object.create||function create(O,Properties){var result;if(O!==null){Empty[PROTOTYPE]=anObject(O);result=new Empty;Empty[PROTOTYPE]=null;result[IE_PROTO]=O}else result=createDict();return Properties===undefined?result:dPs(result,Properties)}},function(module,exports){var ceil=Math.ceil;var floor=Math.floor;module.exports=function(it){return isNaN(it=+it)?0:(it>0?floor:ceil)(it)}},function(module,exports,__webpack_require__){var shared=__webpack_require__(57)(\"keys\");var uid=__webpack_require__(40);module.exports=function(key){return shared[key]||(shared[key]=uid(key))}},function(module,exports,__webpack_require__){var global=__webpack_require__(18);var SHARED=\"__core-js_shared__\";var store=global[SHARED]||(global[SHARED]={});module.exports=function(key){return store[key]||(store[key]={})}},function(module,exports){module.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(module,exports,__webpack_require__){var def=__webpack_require__(20).f;var has=__webpack_require__(22);var TAG=__webpack_require__(13)(\"toStringTag\");module.exports=function(it,tag,stat){if(it&&!has(it=stat?it:it.prototype,TAG))def(it,TAG,{configurable:true,value:tag})}},function(module,exports,__webpack_require__){\"use strict\";var $at=__webpack_require__(135)(true);__webpack_require__(79)(String,\"String\",function(iterated){this._t=String(iterated);this._i=0},function(){var O=this._t;var index=this._i;var point;if(index>=O.length)return{value:undefined,done:true};point=$at(O,index);this._i+=point.length;return{value:point,done:false}})},function(module,exports,__webpack_require__){exports.f=__webpack_require__(13)},function(module,exports,__webpack_require__){var global=__webpack_require__(18);var core=__webpack_require__(7);var LIBRARY=__webpack_require__(52);var wksExt=__webpack_require__(61);var defineProperty=__webpack_require__(20).f;module.exports=function(name){var $Symbol=core.Symbol||(core.Symbol=LIBRARY?{}:global.Symbol||{});if(name.charAt(0)!=\"_\"&&!(name in $Symbol))defineProperty($Symbol,name,{value:wksExt.f(name)})}},function(module,exports){exports.f=Object.getOwnPropertySymbols},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var moment=__webpack_require__(9);var Component=__webpack_require__(16);var DateUtil=__webpack_require__(36);function Range(body,options){var now=moment().hours(0).minutes(0).seconds(0).milliseconds(0);var start=now.clone().add(-3,\"days\").valueOf();var end=now.clone().add(3,\"days\").valueOf();this.millisecondsPerPixelCache=undefined;if(options===undefined){this.start=start;this.end=end}else{this.start=options.start||start;this.end=options.end||end}this.rolling=false;this.body=body;this.deltaDifference=0;this.scaleOffset=0;this.startToFront=false;this.endToFront=true;this.defaultOptions={rtl:false,start:null,end:null,moment:moment,direction:\"horizontal\",moveable:true,zoomable:true,min:null,max:null,zoomMin:10,zoomMax:1e3*60*60*24*365*1e4,rollingMode:{follow:false,offset:.5}};this.options=util.extend({},this.defaultOptions);this.props={touch:{}};this.animationTimer=null;this.body.emitter.on(\"panstart\",this._onDragStart.bind(this));this.body.emitter.on(\"panmove\",this._onDrag.bind(this));this.body.emitter.on(\"panend\",this._onDragEnd.bind(this));this.body.emitter.on(\"mousewheel\",this._onMouseWheel.bind(this));this.body.emitter.on(\"touch\",this._onTouch.bind(this));this.body.emitter.on(\"pinch\",this._onPinch.bind(this));this.body.dom.rollingModeBtn.addEventListener(\"click\",this.startRolling.bind(this));this.setOptions(options)}Range.prototype=new Component;Range.prototype.setOptions=function(options){if(options){var fields=[\"animation\",\"direction\",\"min\",\"max\",\"zoomMin\",\"zoomMax\",\"moveable\",\"zoomable\",\"moment\",\"activate\",\"hiddenDates\",\"zoomKey\",\"rtl\",\"showCurrentTime\",\"rollingMode\",\"horizontalScroll\"];util.selectiveExtend(fields,this.options,options);if(options.rollingMode&&options.rollingMode.follow){this.startRolling()}if(\"start\"in options||\"end\"in options){this.setRange(options.start,options.end)}}};function validateDirection(direction){if(direction!=\"horizontal\"&&direction!=\"vertical\"){throw new TypeError('Unknown direction \"'+direction+'\". '+'Choose \"horizontal\" or \"vertical\".')}}Range.prototype.startRolling=function(){var me=this;function update(){me.stopRolling();me.rolling=true;var interval=me.end-me.start;var t=util.convert(new Date,\"Date\").valueOf();var start=t-interval*me.options.rollingMode.offset;var end=t+interval*(1-me.options.rollingMode.offset);var options={animation:false};me.setRange(start,end,options);var scale=me.conversion(me.body.domProps.center.width).scale;interval=1/scale/10;if(interval<30)interval=30;if(interval>1e3)interval=1e3;me.body.dom.rollingModeBtn.style.visibility=\"hidden\";me.currentTimeTimer=setTimeout(update,interval)}update()};Range.prototype.stopRolling=function(){if(this.currentTimeTimer!==undefined){clearTimeout(this.currentTimeTimer);this.rolling=false;this.body.dom.rollingModeBtn.style.visibility=\"visible\"}};Range.prototype.setRange=function(start,end,options,callback,frameCallback){if(!options){options={}}if(options.byUser!==true){options.byUser=false}var me=this;var finalStart=start!=undefined?util.convert(start,\"Date\").valueOf():null;var finalEnd=end!=undefined?util.convert(end,\"Date\").valueOf():null;this._cancelAnimation();this.millisecondsPerPixelCache=undefined;if(options.animation){var initStart=this.start;var initEnd=this.end;var duration=(0,_typeof3[\"default\"])(options.animation)===\"object\"&&\"duration\"in options.animation?options.animation.duration:500;var easingName=(0,_typeof3[\"default\"])(options.animation)===\"object\"&&\"easingFunction\"in options.animation?options.animation.easingFunction:\"easeInOutQuad\";var easingFunction=util.easingFunctions[easingName];if(!easingFunction){throw new Error(\"Unknown easing function \"+(0,_stringify2[\"default\"])(easingName)+\". \"+\"Choose from: \"+(0,_keys2[\"default\"])(util.easingFunctions).join(\", \"))}var initTime=(new Date).valueOf();var anyChanged=false;var next=function next(){if(!me.props.touch.dragging){var now=(new Date).valueOf();var time=now-initTime;var ease=easingFunction(time/duration);var done=time>duration;var s=done||finalStart===null?finalStart:initStart+(finalStart-initStart)*ease;var e=done||finalEnd===null?finalEnd:initEnd+(finalEnd-initEnd)*ease;changed=me._applyRange(s,e);DateUtil.updateHiddenDates(me.options.moment,me.body,me.options.hiddenDates);anyChanged=anyChanged||changed;var params={start:new Date(me.start),end:new Date(me.end),byUser:options.byUser,event:options.event};if(frameCallback){frameCallback(ease,changed,done)}if(changed){me.body.emitter.emit(\"rangechange\",params)}if(done){if(anyChanged){me.body.emitter.emit(\"rangechanged\",params);if(callback){return callback()}}}else{me.animationTimer=setTimeout(next,20)}}};return next()}else{var changed=this._applyRange(finalStart,finalEnd);DateUtil.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates);if(changed){var params={start:new Date(this.start),end:new Date(this.end),byUser:options.byUser,event:options.event};this.body.emitter.emit(\"rangechange\",params);clearTimeout(me.timeoutID);me.timeoutID=setTimeout(function(){me.body.emitter.emit(\"rangechanged\",params)},200);if(callback){return callback()}}}};Range.prototype.getMillisecondsPerPixel=function(){if(this.millisecondsPerPixelCache===undefined){this.millisecondsPerPixelCache=(this.end-this.start)/this.body.dom.center.clientWidth}return this.millisecondsPerPixelCache};Range.prototype._cancelAnimation=function(){if(this.animationTimer){clearTimeout(this.animationTimer);this.animationTimer=null}};Range.prototype._applyRange=function(start,end){var newStart=start!=null?util.convert(start,\"Date\").valueOf():this.start,newEnd=end!=null?util.convert(end,\"Date\").valueOf():this.end,max=this.options.max!=null?util.convert(this.options.max,\"Date\").valueOf():null,min=this.options.min!=null?util.convert(this.options.min,\"Date\").valueOf():null,diff;if(isNaN(newStart)||newStart===null){throw new Error('Invalid start \"'+start+'\"')}if(isNaN(newEnd)||newEnd===null){throw new Error('Invalid end \"'+end+'\"')}if(newEnd<newStart){newEnd=newStart}if(min!==null){if(newStart<min){diff=min-newStart;newStart+=diff;newEnd+=diff;if(max!=null){if(newEnd>max){newEnd=max}}}}if(max!==null){if(newEnd>max){diff=newEnd-max;newStart-=diff;newEnd-=diff;if(min!=null){if(newStart<min){newStart=min}}}}if(this.options.zoomMin!==null){var zoomMin=parseFloat(this.options.zoomMin);if(zoomMin<0){zoomMin=0}if(newEnd-newStart<zoomMin){var compensation=.5;if(this.end-this.start===zoomMin&&newStart>=this.start-compensation&&newEnd<=this.end){newStart=this.start;newEnd=this.end}else{diff=zoomMin-(newEnd-newStart);newStart-=diff/2;newEnd+=diff/2}}}if(this.options.zoomMax!==null){var zoomMax=parseFloat(this.options.zoomMax);if(zoomMax<0){zoomMax=0}if(newEnd-newStart>zoomMax){if(this.end-this.start===zoomMax&&newStart<this.start&&newEnd>this.end){newStart=this.start;newEnd=this.end}else{diff=newEnd-newStart-zoomMax;newStart+=diff/2;newEnd-=diff/2}}}var changed=this.start!=newStart||this.end!=newEnd;if(!(newStart>=this.start&&newStart<=this.end||newEnd>=this.start&&newEnd<=this.end)&&!(this.start>=newStart&&this.start<=newEnd||this.end>=newStart&&this.end<=newEnd)){this.body.emitter.emit(\"checkRangedItems\")}this.start=newStart;this.end=newEnd;return changed};Range.prototype.getRange=function(){return{start:this.start,end:this.end}};Range.prototype.conversion=function(width,totalHidden){return Range.conversion(this.start,this.end,width,totalHidden)};Range.conversion=function(start,end,width,totalHidden){if(totalHidden===undefined){totalHidden=0}if(width!=0&&end-start!=0){return{offset:start,scale:width/(end-start-totalHidden)}}else{return{offset:0,scale:1}}};Range.prototype._onDragStart=function(event){this.deltaDifference=0;this.previousDelta=0;if(!this.options.moveable)return;if(!this._isInsideRange(event))return;if(!this.props.touch.allowDragging)return;this.stopRolling();this.props.touch.start=this.start;this.props.touch.end=this.end;this.props.touch.dragging=true;if(this.body.dom.root){this.body.dom.root.style.cursor=\"move\"}};Range.prototype._onDrag=function(event){if(!event)return;if(!this.props.touch.dragging)return;if(!this.options.moveable)return;if(!this.props.touch.allowDragging)return;var direction=this.options.direction;validateDirection(direction);var delta=direction==\"horizontal\"?event.deltaX:event.deltaY;delta-=this.deltaDifference;var interval=this.props.touch.end-this.props.touch.start;var duration=DateUtil.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);interval-=duration;var width=direction==\"horizontal\"?this.body.domProps.center.width:this.body.domProps.center.height;var diffRange;if(this.options.rtl){diffRange=delta/width*interval}else{diffRange=-delta/width*interval}var newStart=this.props.touch.start+diffRange;var newEnd=this.props.touch.end+diffRange;var safeStart=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newStart,this.previousDelta-delta,true);var safeEnd=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newEnd,this.previousDelta-delta,true);if(safeStart!=newStart||safeEnd!=newEnd){this.deltaDifference+=delta;this.props.touch.start=safeStart;this.props.touch.end=safeEnd;this._onDrag(event);return}this.previousDelta=delta;this._applyRange(newStart,newEnd);var startDate=new Date(this.start);var endDate=new Date(this.end);this.body.emitter.emit(\"rangechange\",{start:startDate,end:endDate,byUser:true,event:event});this.body.emitter.emit(\"panmove\")};Range.prototype._onDragEnd=function(event){if(!this.props.touch.dragging)return;if(!this.options.moveable)return;if(!this.props.touch.allowDragging)return;this.props.touch.dragging=false;if(this.body.dom.root){this.body.dom.root.style.cursor=\"auto\"}this.body.emitter.emit(\"rangechanged\",{start:new Date(this.start),end:new Date(this.end),byUser:true,event:event})};Range.prototype._onMouseWheel=function(event){var delta=0;if(event.wheelDelta){delta=event.wheelDelta/120}else if(event.detail){delta=-event.detail/3}if(this.options.zoomKey&&!event[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable){return}if(!(this.options.zoomable&&this.options.moveable))return;if(!this._isInsideRange(event))return;if(delta){var scale;if(delta<0){scale=1-delta/5}else{scale=1/(1+delta/5)}var pointerDate;if(this.rolling){pointerDate=this.start+(this.end-this.start)*this.options.rollingMode.offset}else{var pointer=this.getPointer({x:event.clientX,y:event.clientY},this.body.dom.center);pointerDate=this._pointerToDate(pointer)}this.zoom(scale,pointerDate,delta,event);event.preventDefault()}};Range.prototype._onTouch=function(event){this.props.touch.start=this.start;this.props.touch.end=this.end;this.props.touch.allowDragging=true;this.props.touch.center=null;this.scaleOffset=0;this.deltaDifference=0;util.preventDefault(event)};Range.prototype._onPinch=function(event){if(!(this.options.zoomable&&this.options.moveable))return;util.preventDefault(event);this.props.touch.allowDragging=false;if(!this.props.touch.center){this.props.touch.center=this.getPointer(event.center,this.body.dom.center)}this.stopRolling();var scale=1/(event.scale+this.scaleOffset);var centerDate=this._pointerToDate(this.props.touch.center);var hiddenDuration=DateUtil.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);var hiddenDurationBefore=DateUtil.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,centerDate);var hiddenDurationAfter=hiddenDuration-hiddenDurationBefore;var newStart=centerDate-hiddenDurationBefore+(this.props.touch.start-(centerDate-hiddenDurationBefore))*scale;var newEnd=centerDate+hiddenDurationAfter+(this.props.touch.end-(centerDate+hiddenDurationAfter))*scale;this.startToFront=1-scale<=0;this.endToFront=scale-1<=0;var safeStart=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newStart,1-scale,true);var safeEnd=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newEnd,scale-1,true);if(safeStart!=newStart||safeEnd!=newEnd){this.props.touch.start=safeStart;this.props.touch.end=safeEnd;this.scaleOffset=1-event.scale;newStart=safeStart;newEnd=safeEnd}var options={animation:false,byUser:true,event:event};this.setRange(newStart,newEnd,options);this.startToFront=false;this.endToFront=true};Range.prototype._isInsideRange=function(event){var clientX=event.center?event.center.x:event.clientX;var x;if(this.options.rtl){x=clientX-util.getAbsoluteLeft(this.body.dom.centerContainer)}else{x=util.getAbsoluteRight(this.body.dom.centerContainer)-clientX}var time=this.body.util.toTime(x);return time>=this.start&&time<=this.end};Range.prototype._pointerToDate=function(pointer){var conversion;var direction=this.options.direction;validateDirection(direction);if(direction==\"horizontal\"){return this.body.util.toTime(pointer.x).valueOf()}else{var height=this.body.domProps.center.height;conversion=this.conversion(height);return pointer.y/conversion.scale+conversion.offset}};Range.prototype.getPointer=function(touch,element){if(this.options.rtl){return{x:util.getAbsoluteRight(element)-touch.x,y:touch.y-util.getAbsoluteTop(element)}}else{return{x:touch.x-util.getAbsoluteLeft(element),y:touch.y-util.getAbsoluteTop(element)}}};Range.prototype.zoom=function(scale,center,delta,event){if(center==null){center=(this.start+this.end)/2}var hiddenDuration=DateUtil.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);var hiddenDurationBefore=DateUtil.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,center);var hiddenDurationAfter=hiddenDuration-hiddenDurationBefore;var newStart=center-hiddenDurationBefore+(this.start-(center-hiddenDurationBefore))*scale;var newEnd=center+hiddenDurationAfter+(this.end-(center+hiddenDurationAfter))*scale;this.startToFront=delta>0?false:true;this.endToFront=-delta>0?false:true;var safeStart=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newStart,delta,true);var safeEnd=DateUtil.snapAwayFromHidden(this.body.hiddenDates,newEnd,-delta,true);if(safeStart!=newStart||safeEnd!=newEnd){newStart=safeStart;newEnd=safeEnd}var options={animation:false,byUser:true,event:event};this.setRange(newStart,newEnd,options);this.startToFront=false;this.endToFront=true};Range.prototype.move=function(delta){var diff=this.end-this.start;var newStart=this.start+diff*delta;var newEnd=this.end+diff*delta;this.start=newStart;this.end=newEnd};Range.prototype.moveTo=function(moveTo){var center=(this.start+this.end)/2;var diff=center-moveTo;var newStart=this.start-diff;var newEnd=this.end-diff;var options={animation:false,byUser:true,event:null};this.setRange(newStart,newEnd,options)};module.exports=Range},function(module,exports,__webpack_require__){\"use strict\";var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Emitter=__webpack_require__(44);var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var util=__webpack_require__(2);var TimeAxis=__webpack_require__(45);var Activator=__webpack_require__(97);var DateUtil=__webpack_require__(36);var CustomTime=__webpack_require__(46);function Core(){}Emitter(Core.prototype);Core.prototype._create=function(container){this.dom={};this.dom.container=container;this.dom.root=document.createElement(\"div\");this.dom.background=document.createElement(\"div\");this.dom.backgroundVertical=document.createElement(\"div\");this.dom.backgroundHorizontal=document.createElement(\"div\");this.dom.centerContainer=document.createElement(\"div\");this.dom.leftContainer=document.createElement(\"div\");this.dom.rightContainer=document.createElement(\"div\");this.dom.center=document.createElement(\"div\");this.dom.left=document.createElement(\"div\");this.dom.right=document.createElement(\"div\");this.dom.top=document.createElement(\"div\");this.dom.bottom=document.createElement(\"div\");this.dom.shadowTop=document.createElement(\"div\");this.dom.shadowBottom=document.createElement(\"div\");this.dom.shadowTopLeft=document.createElement(\"div\");this.dom.shadowBottomLeft=document.createElement(\"div\");this.dom.shadowTopRight=document.createElement(\"div\");this.dom.shadowBottomRight=document.createElement(\"div\");this.dom.rollingModeBtn=document.createElement(\"div\");this.dom.root.className=\"vis-timeline\";this.dom.background.className=\"vis-panel vis-background\";this.dom.backgroundVertical.className=\"vis-panel vis-background vis-vertical\";this.dom.backgroundHorizontal.className=\"vis-panel vis-background vis-horizontal\";this.dom.centerContainer.className=\"vis-panel vis-center\";this.dom.leftContainer.className=\"vis-panel vis-left\";this.dom.rightContainer.className=\"vis-panel vis-right\";this.dom.top.className=\"vis-panel vis-top\";this.dom.bottom.className=\"vis-panel vis-bottom\";this.dom.left.className=\"vis-content\";this.dom.center.className=\"vis-content\";this.dom.right.className=\"vis-content\";this.dom.shadowTop.className=\"vis-shadow vis-top\";this.dom.shadowBottom.className=\"vis-shadow vis-bottom\";this.dom.shadowTopLeft.className=\"vis-shadow vis-top\";this.dom.shadowBottomLeft.className=\"vis-shadow vis-bottom\";this.dom.shadowTopRight.className=\"vis-shadow vis-top\";this.dom.shadowBottomRight.className=\"vis-shadow vis-bottom\";this.dom.rollingModeBtn.className=\"vis-rolling-mode-btn\";this.dom.root.appendChild(this.dom.background);this.dom.root.appendChild(this.dom.backgroundVertical);this.dom.root.appendChild(this.dom.backgroundHorizontal);this.dom.root.appendChild(this.dom.centerContainer);this.dom.root.appendChild(this.dom.leftContainer);this.dom.root.appendChild(this.dom.rightContainer);this.dom.root.appendChild(this.dom.top);this.dom.root.appendChild(this.dom.bottom);this.dom.root.appendChild(this.dom.bottom);this.dom.root.appendChild(this.dom.rollingModeBtn);this.dom.centerContainer.appendChild(this.dom.center);this.dom.leftContainer.appendChild(this.dom.left);this.dom.rightContainer.appendChild(this.dom.right);this.dom.centerContainer.appendChild(this.dom.shadowTop);this.dom.centerContainer.appendChild(this.dom.shadowBottom);this.dom.leftContainer.appendChild(this.dom.shadowTopLeft);this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft);this.dom.rightContainer.appendChild(this.dom.shadowTopRight);this.dom.rightContainer.appendChild(this.dom.shadowBottomRight);this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0};this.on(\"rangechange\",function(){if(this.initialDrawDone===true){this._redraw()}}.bind(this));this.on(\"rangechanged\",function(){if(!this.initialRangeChangeDone){this.initialRangeChangeDone=true}}.bind(this));this.on(\"touch\",this._onTouch.bind(this));this.on(\"panmove\",this._onDrag.bind(this));var me=this;this._origRedraw=this._redraw.bind(this);this._redraw=util.throttle(this._origRedraw);this.on(\"_change\",function(properties){if(me.itemSet&&me.itemSet.initialItemSetDrawn&&properties&&properties.queue==true){me._redraw()}else{me._origRedraw()}});this.hammer=new Hammer(this.dom.root);var pinchRecognizer=this.hammer.get(\"pinch\").set({enable:true});hammerUtil.disablePreventDefaultVertically(pinchRecognizer);this.hammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_HORIZONTAL});this.listeners={};var events=[\"tap\",\"doubletap\",\"press\",\"pinch\",\"pan\",\"panstart\",\"panmove\",\"panend\"];events.forEach(function(type){var listener=function listener(event){if(me.isActive()){me.emit(type,event)}};me.hammer.on(type,listener);me.listeners[type]=listener});hammerUtil.onTouch(this.hammer,function(event){me.emit(\"touch\",event)}.bind(this));hammerUtil.onRelease(this.hammer,function(event){me.emit(\"release\",event)}.bind(this));function onMouseWheel(event){if(this.isActive()){this.emit(\"mousewheel\",event)}var deltaX=0;var deltaY=0;if(\"detail\"in event){deltaY=event.detail*-1}if(\"wheelDelta\"in event){deltaY=event.wheelDelta}if(\"wheelDeltaY\"in event){deltaY=event.wheelDeltaY}if(\"wheelDeltaX\"in event){deltaX=event.wheelDeltaX*-1}if(\"axis\"in event&&event.axis===event.HORIZONTAL_AXIS){deltaX=deltaY*-1;deltaY=0}if(\"deltaY\"in event){deltaY=event.deltaY*-1}if(\"deltaX\"in event){deltaX=event.deltaX}if(!this.options.zoomKey||event[this.options.zoomKey])return;event.preventDefault();if(this.options.verticalScroll&&Math.abs(deltaY)>=Math.abs(deltaX)){var current=this.props.scrollTop;var adjusted=current+deltaY;if(this.isActive()){this._setScrollTop(adjusted);this._redraw();this.emit(\"scroll\",event)}}else if(this.options.horizontalScroll){var delta=Math.abs(deltaX)>=Math.abs(deltaY)?deltaX:deltaY;var diff=delta/120*(this.range.end-this.range.start)/20;var newStart=this.range.start+diff;var newEnd=this.range.end+diff;var options={animation:false,byUser:true,event:event};this.range.setRange(newStart,newEnd,options)}}if(this.dom.centerContainer.addEventListener){this.dom.centerContainer.addEventListener(\"mousewheel\",onMouseWheel.bind(this),false);this.dom.centerContainer.addEventListener(\"DOMMouseScroll\",onMouseWheel.bind(this),false)}else{this.dom.centerContainer.attachEvent(\"onmousewheel\",onMouseWheel.bind(this))}function onMouseScrollSide(event){if(!me.options.verticalScroll)return;event.preventDefault();if(me.isActive()){var adjusted=-event.target.scrollTop;me._setScrollTop(adjusted);me._redraw();me.emit(\"scrollSide\",event)}}this.dom.left.parentNode.addEventListener(\"scroll\",onMouseScrollSide.bind(this));this.dom.right.parentNode.addEventListener(\"scroll\",onMouseScrollSide.bind(this));var itemAddedToTimeline=false;function handleDragOver(event){if(event.preventDefault){event.preventDefault()}if(!event.target.className.indexOf(\"vis\")>-1)return;if(itemAddedToTimeline)return;event.dataTransfer.dropEffect=\"move\";itemAddedToTimeline=true;return false}function handleDrop(event){if(event.preventDefault){event.preventDefault()}if(event.stopPropagation){event.stopPropagation()}try{var itemData=JSON.parse(event.dataTransfer.getData(\"text\"));if(!itemData||!itemData.content)return}catch(err){return false}itemAddedToTimeline=false;event.center={x:event.clientX,y:event.clientY};if(itemData.target!==\"item\"){me.itemSet._onAddItem(event)}else{me.itemSet._onDropObjectOnItem(event)}me.emit(\"drop\",me.getEventProperties(event));return false}this.dom.center.addEventListener(\"dragover\",handleDragOver.bind(this),false);this.dom.center.addEventListener(\"drop\",handleDrop.bind(this),false);this.customTimes=[];this.touch={};this.redrawCount=0;this.initialDrawDone=false;this.initialRangeChangeDone=false;if(!container)throw new Error(\"No container provided\");container.appendChild(this.dom.root)};Core.prototype.setOptions=function(options){if(options){var fields=[\"width\",\"height\",\"minHeight\",\"maxHeight\",\"autoResize\",\"start\",\"end\",\"clickToUse\",\"dataAttributes\",\"hiddenDates\",\"locale\",\"locales\",\"moment\",\"rtl\",\"zoomKey\",\"horizontalScroll\",\"verticalScroll\"];util.selectiveExtend(fields,this.options,options);this.dom.rollingModeBtn.style.visibility=\"hidden\";if(this.options.rtl){this.dom.container.style.direction=\"rtl\";this.dom.backgroundVertical.className=\"vis-panel vis-background vis-vertical-rtl\"}if(this.options.verticalScroll){if(this.options.rtl){this.dom.rightContainer.className=\"vis-panel vis-right vis-vertical-scroll\"}else{this.dom.leftContainer.className=\"vis-panel vis-left vis-vertical-scroll\"}}if((0,_typeof3[\"default\"])(this.options.orientation)!==\"object\"){this.options.orientation={item:undefined,axis:undefined}}if(\"orientation\"in options){if(typeof options.orientation===\"string\"){this.options.orientation={item:options.orientation,axis:options.orientation}}else if((0,_typeof3[\"default\"])(options.orientation)===\"object\"){if(\"item\"in options.orientation){this.options.orientation.item=options.orientation.item}if(\"axis\"in options.orientation){this.options.orientation.axis=options.orientation.axis}}}if(this.options.orientation.axis===\"both\"){if(!this.timeAxis2){var timeAxis2=this.timeAxis2=new TimeAxis(this.body);timeAxis2.setOptions=function(options){var _options=options?util.extend({},options):{};_options.orientation=\"top\";TimeAxis.prototype.setOptions.call(timeAxis2,_options)};this.components.push(timeAxis2)}}else{if(this.timeAxis2){var index=this.components.indexOf(this.timeAxis2);if(index!==-1){this.components.splice(index,1)}this.timeAxis2.destroy();this.timeAxis2=null}}if(typeof options.drawPoints==\"function\"){options.drawPoints={onRender:options.drawPoints}}if(\"hiddenDates\"in this.options){DateUtil.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates)}if(\"clickToUse\"in options){if(options.clickToUse){if(!this.activator){this.activator=new Activator(this.dom.root)}}else{if(this.activator){this.activator.destroy();delete this.activator}}}if(\"showCustomTime\"in options){throw new Error(\"Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])\")}this._initAutoResize()}this.components.forEach(function(component){return component.setOptions(options)});if(\"configure\"in options){if(!this.configurator){this.configurator=this._createConfigurator()}this.configurator.setOptions(options.configure);var appliedOptions=util.deepExtend({},this.options);this.components.forEach(function(component){util.deepExtend(appliedOptions,component.options)});this.configurator.setModuleOptions({global:appliedOptions})}this._redraw()};Core.prototype.isActive=function(){return!this.activator||this.activator.active};Core.prototype.destroy=function(){this.setItems(null);this.setGroups(null);this.off();this._stopAutoResize();if(this.dom.root.parentNode){this.dom.root.parentNode.removeChild(this.dom.root)}this.dom=null;if(this.activator){this.activator.destroy();delete this.activator}for(var event in this.listeners){if(this.listeners.hasOwnProperty(event)){delete this.listeners[event]}}this.listeners=null;this.hammer=null;this.components.forEach(function(component){return component.destroy()});this.body=null};Core.prototype.setCustomTime=function(time,id){var customTimes=this.customTimes.filter(function(component){return id===component.options.id});if(customTimes.length===0){throw new Error(\"No custom time bar found with id \"+(0,_stringify2[\"default\"])(id))}if(customTimes.length>0){customTimes[0].setCustomTime(time)}};Core.prototype.getCustomTime=function(id){var customTimes=this.customTimes.filter(function(component){return component.options.id===id});if(customTimes.length===0){throw new Error(\"No custom time bar found with id \"+(0,_stringify2[\"default\"])(id))}return customTimes[0].getCustomTime()};Core.prototype.setCustomTimeTitle=function(title,id){var customTimes=this.customTimes.filter(function(component){return component.options.id===id});if(customTimes.length===0){throw new Error(\"No custom time bar found with id \"+(0,_stringify2[\"default\"])(id))}if(customTimes.length>0){return customTimes[0].setCustomTitle(title)}};Core.prototype.getEventProperties=function(event){return{event:event}};Core.prototype.addCustomTime=function(time,id){var timestamp=time!==undefined?util.convert(time,\"Date\").valueOf():new Date;var exists=this.customTimes.some(function(customTime){return customTime.options.id===id});if(exists){throw new Error(\"A custom time with id \"+(0,_stringify2[\"default\"])(id)+\" already exists\")}var customTime=new CustomTime(this.body,util.extend({},this.options,{time:timestamp,id:id}));this.customTimes.push(customTime);this.components.push(customTime);this._redraw();return id};Core.prototype.removeCustomTime=function(id){var customTimes=this.customTimes.filter(function(bar){return bar.options.id===id});if(customTimes.length===0){throw new Error(\"No custom time bar found with id \"+(0,_stringify2[\"default\"])(id))}customTimes.forEach(function(customTime){this.customTimes.splice(this.customTimes.indexOf(customTime),1);this.components.splice(this.components.indexOf(customTime),1);customTime.destroy()}.bind(this))};Core.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]};Core.prototype.fit=function(options,callback){var range=this.getDataRange();if(range.min===null&&range.max===null){return}var interval=range.max-range.min;var min=new Date(range.min.valueOf()-interval*.01);var max=new Date(range.max.valueOf()+interval*.01);var animation=options&&options.animation!==undefined?options.animation:true;this.range.setRange(min,max,{animation:animation},callback)};Core.prototype.getDataRange=function(){throw new Error(\"Cannot invoke abstract method getDataRange\")};Core.prototype.setWindow=function(start,end,options,callback){if(typeof arguments[2]==\"function\"){callback=arguments[2];options={}}var animation;var range;if(arguments.length==1){range=arguments[0];animation=range.animation!==undefined?range.animation:true;this.range.setRange(range.start,range.end,{animation:animation})}else if(arguments.length==2&&typeof arguments[1]==\"function\"){range=arguments[0];callback=arguments[1];animation=range.animation!==undefined?range.animation:true\n;this.range.setRange(range.start,range.end,{animation:animation},callback)}else{animation=options&&options.animation!==undefined?options.animation:true;this.range.setRange(start,end,{animation:animation},callback)}};Core.prototype.moveTo=function(time,options,callback){if(typeof arguments[1]==\"function\"){callback=arguments[1];options={}}var interval=this.range.end-this.range.start;var t=util.convert(time,\"Date\").valueOf();var start=t-interval/2;var end=t+interval/2;var animation=options&&options.animation!==undefined?options.animation:true;this.range.setRange(start,end,{animation:animation},callback)};Core.prototype.getWindow=function(){var range=this.range.getRange();return{start:new Date(range.start),end:new Date(range.end)}};Core.prototype.zoomIn=function(percentage,options,callback){if(!percentage||percentage<0||percentage>1)return;if(typeof arguments[1]==\"function\"){callback=arguments[1];options={}}var range=this.getWindow();var start=range.start.valueOf();var end=range.end.valueOf();var interval=end-start;var newInterval=interval/(1+percentage);var distance=(interval-newInterval)/2;var newStart=start+distance;var newEnd=end-distance;this.setWindow(newStart,newEnd,options,callback)};Core.prototype.zoomOut=function(percentage,options,callback){if(!percentage||percentage<0||percentage>1)return;if(typeof arguments[1]==\"function\"){callback=arguments[1];options={}}var range=this.getWindow();var start=range.start.valueOf();var end=range.end.valueOf();var interval=end-start;var newStart=start-interval*percentage/2;var newEnd=end+interval*percentage/2;this.setWindow(newStart,newEnd,options,callback)};Core.prototype.redraw=function(){this._redraw()};Core.prototype._redraw=function(){this.redrawCount++;var resized=false;var options=this.options;var props=this.props;var dom=this.dom;if(!dom||!dom.container||dom.root.offsetWidth==0)return;DateUtil.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates);if(options.orientation==\"top\"){util.addClassName(dom.root,\"vis-top\");util.removeClassName(dom.root,\"vis-bottom\")}else{util.removeClassName(dom.root,\"vis-top\");util.addClassName(dom.root,\"vis-bottom\")}dom.root.style.maxHeight=util.option.asSize(options.maxHeight,\"\");dom.root.style.minHeight=util.option.asSize(options.minHeight,\"\");dom.root.style.width=util.option.asSize(options.width,\"\");props.border.left=(dom.centerContainer.offsetWidth-dom.centerContainer.clientWidth)/2;props.border.right=props.border.left;props.border.top=(dom.centerContainer.offsetHeight-dom.centerContainer.clientHeight)/2;props.border.bottom=props.border.top;props.borderRootHeight=dom.root.offsetHeight-dom.root.clientHeight;props.borderRootWidth=dom.root.offsetWidth-dom.root.clientWidth;if(dom.centerContainer.clientHeight===0){props.border.left=props.border.top;props.border.right=props.border.left}if(dom.root.clientHeight===0){props.borderRootWidth=props.borderRootHeight}props.center.height=dom.center.offsetHeight;props.left.height=dom.left.offsetHeight;props.right.height=dom.right.offsetHeight;props.top.height=dom.top.clientHeight||-props.border.top;props.bottom.height=dom.bottom.clientHeight||-props.border.bottom;var contentHeight=Math.max(props.left.height,props.center.height,props.right.height);var autoHeight=props.top.height+contentHeight+props.bottom.height+props.borderRootHeight+props.border.top+props.border.bottom;dom.root.style.height=util.option.asSize(options.height,autoHeight+\"px\");props.root.height=dom.root.offsetHeight;props.background.height=props.root.height-props.borderRootHeight;var containerHeight=props.root.height-props.top.height-props.bottom.height-props.borderRootHeight;props.centerContainer.height=containerHeight;props.leftContainer.height=containerHeight;props.rightContainer.height=props.leftContainer.height;props.root.width=dom.root.offsetWidth;props.background.width=props.root.width-props.borderRootWidth;if(!this.initialDrawDone){props.scrollbarWidth=util.getScrollBarWidth()}if(options.verticalScroll){if(options.rtl){props.left.width=dom.leftContainer.clientWidth||-props.border.left;props.right.width=dom.rightContainer.clientWidth+props.scrollbarWidth||-props.border.right}else{props.left.width=dom.leftContainer.clientWidth+props.scrollbarWidth||-props.border.left;props.right.width=dom.rightContainer.clientWidth||-props.border.right}}else{props.left.width=dom.leftContainer.clientWidth||-props.border.left;props.right.width=dom.rightContainer.clientWidth||-props.border.right}this._setDOM();var offset=this._updateScrollTop();if(options.orientation.item!=\"top\"){offset+=Math.max(props.centerContainer.height-props.center.height-props.border.top-props.border.bottom,0)}dom.center.style.top=offset+\"px\";var visibilityTop=props.scrollTop==0?\"hidden\":\"\";var visibilityBottom=props.scrollTop==props.scrollTopMin?\"hidden\":\"\";dom.shadowTop.style.visibility=visibilityTop;dom.shadowBottom.style.visibility=visibilityBottom;dom.shadowTopLeft.style.visibility=visibilityTop;dom.shadowBottomLeft.style.visibility=visibilityBottom;dom.shadowTopRight.style.visibility=visibilityTop;dom.shadowBottomRight.style.visibility=visibilityBottom;if(options.verticalScroll){dom.rightContainer.className=\"vis-panel vis-right vis-vertical-scroll\";dom.leftContainer.className=\"vis-panel vis-left vis-vertical-scroll\";dom.shadowTopRight.style.visibility=\"hidden\";dom.shadowBottomRight.style.visibility=\"hidden\";dom.shadowTopLeft.style.visibility=\"hidden\";dom.shadowBottomLeft.style.visibility=\"hidden\";dom.left.style.top=\"0px\";dom.right.style.top=\"0px\"}if(!options.verticalScroll||props.center.height<props.centerContainer.height){dom.left.style.top=offset+\"px\";dom.right.style.top=offset+\"px\";dom.rightContainer.className=dom.rightContainer.className.replace(new RegExp(\"(?:^|\\\\s)\"+\"vis-vertical-scroll\"+\"(?:\\\\s|$)\"),\" \");dom.leftContainer.className=dom.leftContainer.className.replace(new RegExp(\"(?:^|\\\\s)\"+\"vis-vertical-scroll\"+\"(?:\\\\s|$)\"),\" \");props.left.width=dom.leftContainer.clientWidth||-props.border.left;props.right.width=dom.rightContainer.clientWidth||-props.border.right;this._setDOM()}var contentsOverflow=props.center.height>props.centerContainer.height;this.hammer.get(\"pan\").set({direction:contentsOverflow?Hammer.DIRECTION_ALL:Hammer.DIRECTION_HORIZONTAL});this.components.forEach(function(component){resized=component.redraw()||resized});var MAX_REDRAW=5;if(resized){if(this.redrawCount<MAX_REDRAW){this.body.emitter.emit(\"_change\");return}else{console.log(\"WARNING: infinite loop in redraw?\")}}else{this.redrawCount=0}this.body.emitter.emit(\"changed\")};Core.prototype._setDOM=function(){var props=this.props;var dom=this.dom;props.leftContainer.width=props.left.width;props.rightContainer.width=props.right.width;var centerWidth=props.root.width-props.left.width-props.right.width-props.borderRootWidth;props.center.width=centerWidth;props.centerContainer.width=centerWidth;props.top.width=centerWidth;props.bottom.width=centerWidth;dom.background.style.height=props.background.height+\"px\";dom.backgroundVertical.style.height=props.background.height+\"px\";dom.backgroundHorizontal.style.height=props.centerContainer.height+\"px\";dom.centerContainer.style.height=props.centerContainer.height+\"px\";dom.leftContainer.style.height=props.leftContainer.height+\"px\";dom.rightContainer.style.height=props.rightContainer.height+\"px\";dom.background.style.width=props.background.width+\"px\";dom.backgroundVertical.style.width=props.centerContainer.width+\"px\";dom.backgroundHorizontal.style.width=props.background.width+\"px\";dom.centerContainer.style.width=props.center.width+\"px\";dom.top.style.width=props.top.width+\"px\";dom.bottom.style.width=props.bottom.width+\"px\";dom.background.style.left=\"0\";dom.background.style.top=\"0\";dom.backgroundVertical.style.left=props.left.width+props.border.left+\"px\";dom.backgroundVertical.style.top=\"0\";dom.backgroundHorizontal.style.left=\"0\";dom.backgroundHorizontal.style.top=props.top.height+\"px\";dom.centerContainer.style.left=props.left.width+\"px\";dom.centerContainer.style.top=props.top.height+\"px\";dom.leftContainer.style.left=\"0\";dom.leftContainer.style.top=props.top.height+\"px\";dom.rightContainer.style.left=props.left.width+props.center.width+\"px\";dom.rightContainer.style.top=props.top.height+\"px\";dom.top.style.left=props.left.width+\"px\";dom.top.style.top=\"0\";dom.bottom.style.left=props.left.width+\"px\";dom.bottom.style.top=props.top.height+props.centerContainer.height+\"px\";dom.center.style.left=\"0\";dom.left.style.left=\"0\";dom.right.style.left=\"0\"};Core.prototype.repaint=function(){throw new Error(\"Function repaint is deprecated. Use redraw instead.\")};Core.prototype.setCurrentTime=function(time){if(!this.currentTime){throw new Error(\"Option showCurrentTime must be true\")}this.currentTime.setCurrentTime(time)};Core.prototype.getCurrentTime=function(){if(!this.currentTime){throw new Error(\"Option showCurrentTime must be true\")}return this.currentTime.getCurrentTime()};Core.prototype._toTime=function(x){return DateUtil.toTime(this,x,this.props.center.width)};Core.prototype._toGlobalTime=function(x){return DateUtil.toTime(this,x,this.props.root.width)};Core.prototype._toScreen=function(time){return DateUtil.toScreen(this,time,this.props.center.width)};Core.prototype._toGlobalScreen=function(time){return DateUtil.toScreen(this,time,this.props.root.width)};Core.prototype._initAutoResize=function(){if(this.options.autoResize==true){this._startAutoResize()}else{this._stopAutoResize()}};Core.prototype._startAutoResize=function(){var me=this;this._stopAutoResize();this._onResize=function(){if(me.options.autoResize!=true){me._stopAutoResize();return}if(me.dom.root){if(me.dom.root.offsetWidth!=me.props.lastWidth||me.dom.root.offsetHeight!=me.props.lastHeight){me.props.lastWidth=me.dom.root.offsetWidth;me.props.lastHeight=me.dom.root.offsetHeight;me.props.scrollbarWidth=util.getScrollBarWidth();me.body.emitter.emit(\"_change\")}}};util.addEventListener(window,\"resize\",this._onResize);if(me.dom.root){me.props.lastWidth=me.dom.root.offsetWidth;me.props.lastHeight=me.dom.root.offsetHeight}this.watchTimer=setInterval(this._onResize,1e3)};Core.prototype._stopAutoResize=function(){if(this.watchTimer){clearInterval(this.watchTimer);this.watchTimer=undefined}if(this._onResize){util.removeEventListener(window,\"resize\",this._onResize);this._onResize=null}};Core.prototype._onTouch=function(event){this.touch.allowDragging=true;this.touch.initialScrollTop=this.props.scrollTop};Core.prototype._onPinch=function(event){this.touch.allowDragging=false};Core.prototype._onDrag=function(event){if(!event)return;if(!this.touch.allowDragging)return;var delta=event.deltaY;var oldScrollTop=this._getScrollTop();var newScrollTop=this._setScrollTop(this.touch.initialScrollTop+delta);if(this.options.verticalScroll){this.dom.left.parentNode.scrollTop=-this.props.scrollTop;this.dom.right.parentNode.scrollTop=-this.props.scrollTop}if(newScrollTop!=oldScrollTop){this.emit(\"verticalDrag\")}};Core.prototype._setScrollTop=function(scrollTop){this.props.scrollTop=scrollTop;this._updateScrollTop();return this.props.scrollTop};Core.prototype._updateScrollTop=function(){var scrollTopMin=Math.min(this.props.centerContainer.height-this.props.center.height,0);if(scrollTopMin!=this.props.scrollTopMin){if(this.options.orientation.item!=\"top\"){this.props.scrollTop+=scrollTopMin-this.props.scrollTopMin}this.props.scrollTopMin=scrollTopMin}if(this.props.scrollTop>0)this.props.scrollTop=0;if(this.props.scrollTop<scrollTopMin)this.props.scrollTop=scrollTopMin;if(this.options.verticalScroll){this.dom.left.parentNode.scrollTop=-this.props.scrollTop;this.dom.right.parentNode.scrollTop=-this.props.scrollTop}return this.props.scrollTop};Core.prototype._getScrollTop=function(){return this.props.scrollTop};Core.prototype._createConfigurator=function(){throw new Error(\"Cannot invoke abstract method _createConfigurator\")};module.exports=Core},function(module,exports,__webpack_require__){\"use strict\";var moment=__webpack_require__(9);var DateUtil=__webpack_require__(36);var util=__webpack_require__(2);function TimeStep(start,end,minimumStep,hiddenDates,options){this.moment=moment;this.current=this.moment();this._start=this.moment();this._end=this.moment();this.autoScale=true;this.scale=\"day\";this.step=1;this.setRange(start,end,minimumStep);this.switchedDay=false;this.switchedMonth=false;this.switchedYear=false;if(Array.isArray(hiddenDates)){this.hiddenDates=hiddenDates}else if(hiddenDates!=undefined){this.hiddenDates=[hiddenDates]}else{this.hiddenDates=[]}this.format=TimeStep.FORMAT;this.options=options?options:{}}TimeStep.FORMAT={minorLabels:{millisecond:\"SSS\",second:\"s\",minute:\"HH:mm\",hour:\"HH:mm\",weekday:\"ddd D\",day:\"D\",week:\"w\",month:\"MMM\",year:\"YYYY\"},majorLabels:{millisecond:\"HH:mm:ss\",second:\"D MMMM HH:mm\",minute:\"ddd D MMMM\",hour:\"ddd D MMMM\",weekday:\"MMMM YYYY\",day:\"MMMM YYYY\",week:\"MMMM YYYY\",month:\"YYYY\",year:\"\"}};TimeStep.prototype.setMoment=function(moment){this.moment=moment;this.current=this.moment(this.current.valueOf());this._start=this.moment(this._start.valueOf());this._end=this.moment(this._end.valueOf())};TimeStep.prototype.setFormat=function(format){var defaultFormat=util.deepExtend({},TimeStep.FORMAT);this.format=util.deepExtend(defaultFormat,format)};TimeStep.prototype.setRange=function(start,end,minimumStep){if(!(start instanceof Date)||!(end instanceof Date)){throw\"No legal start or end date in method setRange\"}this._start=start!=undefined?this.moment(start.valueOf()):new Date;this._end=end!=undefined?this.moment(end.valueOf()):new Date;if(this.autoScale){this.setMinimumStep(minimumStep)}};TimeStep.prototype.start=function(){this.current=this._start.clone();this.roundToMinor()};TimeStep.prototype.roundToMinor=function(){if(this.scale==\"week\"){this.current.weekday(0)}switch(this.scale){case\"year\":this.current.year(this.step*Math.floor(this.current.year()/this.step));this.current.month(0);case\"month\":this.current.date(1);case\"week\":case\"day\":case\"weekday\":this.current.hours(0);case\"hour\":this.current.minutes(0);case\"minute\":this.current.seconds(0);case\"second\":this.current.milliseconds(0)}if(this.step!=1){switch(this.scale){case\"millisecond\":this.current.subtract(this.current.milliseconds()%this.step,\"milliseconds\");break;case\"second\":this.current.subtract(this.current.seconds()%this.step,\"seconds\");break;case\"minute\":this.current.subtract(this.current.minutes()%this.step,\"minutes\");break;case\"hour\":this.current.subtract(this.current.hours()%this.step,\"hours\");break;case\"weekday\":case\"day\":this.current.subtract((this.current.date()-1)%this.step,\"day\");break;case\"week\":this.current.subtract(this.current.week()%this.step,\"week\");break;case\"month\":this.current.subtract(this.current.month()%this.step,\"month\");break;case\"year\":this.current.subtract(this.current.year()%this.step,\"year\");break;default:break}}};TimeStep.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()};TimeStep.prototype.next=function(){var prev=this.current.valueOf();switch(this.scale){case\"millisecond\":this.current.add(this.step,\"millisecond\");break;case\"second\":this.current.add(this.step,\"second\");break;case\"minute\":this.current.add(this.step,\"minute\");break;case\"hour\":this.current.add(this.step,\"hour\");if(this.current.month()<6){this.current.subtract(this.current.hours()%this.step,\"hour\")}else{if(this.current.hours()%this.step!==0){this.current.add(this.step-this.current.hours()%this.step,\"hour\")}}break;case\"weekday\":case\"day\":this.current.add(this.step,\"day\");break;case\"week\":if(this.current.weekday()!==0){this.current.weekday(0);this.current.add(this.step,\"week\")}else if(this.options.showMajorLabels===false){this.current.add(this.step,\"week\")}else{var nextWeek=this.current.clone();nextWeek.add(1,\"week\");if(nextWeek.isSame(this.current,\"month\")){this.current.add(this.step,\"week\")}else{this.current.add(this.step,\"week\");this.current.date(1)}}break;case\"month\":this.current.add(this.step,\"month\");break;case\"year\":this.current.add(this.step,\"year\");break;default:break}if(this.step!=1){switch(this.scale){case\"millisecond\":if(this.current.milliseconds()>0&&this.current.milliseconds()<this.step)this.current.milliseconds(0);break;case\"second\":if(this.current.seconds()>0&&this.current.seconds()<this.step)this.current.seconds(0);break;case\"minute\":if(this.current.minutes()>0&&this.current.minutes()<this.step)this.current.minutes(0);break;case\"hour\":if(this.current.hours()>0&&this.current.hours()<this.step)this.current.hours(0);break;case\"weekday\":case\"day\":if(this.current.date()<this.step+1)this.current.date(1);break;case\"week\":if(this.current.week()<this.step)this.current.week(1);break;case\"month\":if(this.current.month()<this.step)this.current.month(0);break;case\"year\":break;default:break}}if(this.current.valueOf()==prev){this.current=this._end.clone()}this.switchedDay=false;this.switchedMonth=false;this.switchedYear=false;DateUtil.stepOverHiddenDates(this.moment,this,prev)};TimeStep.prototype.getCurrent=function(){return this.current};TimeStep.prototype.setScale=function(params){if(params&&typeof params.scale==\"string\"){this.scale=params.scale;this.step=params.step>0?params.step:1;this.autoScale=false}};TimeStep.prototype.setAutoScale=function(enable){this.autoScale=enable};TimeStep.prototype.setMinimumStep=function(minimumStep){if(minimumStep==undefined){return}var stepYear=1e3*60*60*24*30*12;var stepMonth=1e3*60*60*24*30;var stepDay=1e3*60*60*24;var stepHour=1e3*60*60;var stepMinute=1e3*60;var stepSecond=1e3;var stepMillisecond=1;if(stepYear*1e3>minimumStep){this.scale=\"year\";this.step=1e3}if(stepYear*500>minimumStep){this.scale=\"year\";this.step=500}if(stepYear*100>minimumStep){this.scale=\"year\";this.step=100}if(stepYear*50>minimumStep){this.scale=\"year\";this.step=50}if(stepYear*10>minimumStep){this.scale=\"year\";this.step=10}if(stepYear*5>minimumStep){this.scale=\"year\";this.step=5}if(stepYear>minimumStep){this.scale=\"year\";this.step=1}if(stepMonth*3>minimumStep){this.scale=\"month\";this.step=3}if(stepMonth>minimumStep){this.scale=\"month\";this.step=1}if(stepDay*5>minimumStep){this.scale=\"day\";this.step=5}if(stepDay*2>minimumStep){this.scale=\"day\";this.step=2}if(stepDay>minimumStep){this.scale=\"day\";this.step=1}if(stepDay/2>minimumStep){this.scale=\"weekday\";this.step=1}if(stepHour*4>minimumStep){this.scale=\"hour\";this.step=4}if(stepHour>minimumStep){this.scale=\"hour\";this.step=1}if(stepMinute*15>minimumStep){this.scale=\"minute\";this.step=15}if(stepMinute*10>minimumStep){this.scale=\"minute\";this.step=10}if(stepMinute*5>minimumStep){this.scale=\"minute\";this.step=5}if(stepMinute>minimumStep){this.scale=\"minute\";this.step=1}if(stepSecond*15>minimumStep){this.scale=\"second\";this.step=15}if(stepSecond*10>minimumStep){this.scale=\"second\";this.step=10}if(stepSecond*5>minimumStep){this.scale=\"second\";this.step=5}if(stepSecond>minimumStep){this.scale=\"second\";this.step=1}if(stepMillisecond*200>minimumStep){this.scale=\"millisecond\";this.step=200}if(stepMillisecond*100>minimumStep){this.scale=\"millisecond\";this.step=100}if(stepMillisecond*50>minimumStep){this.scale=\"millisecond\";this.step=50}if(stepMillisecond*10>minimumStep){this.scale=\"millisecond\";this.step=10}if(stepMillisecond*5>minimumStep){this.scale=\"millisecond\";this.step=5}if(stepMillisecond>minimumStep){this.scale=\"millisecond\";this.step=1}};TimeStep.snap=function(date,scale,step){var clone=moment(date);if(scale==\"year\"){var year=clone.year()+Math.round(clone.month()/12);clone.year(Math.round(year/step)*step);clone.month(0);clone.date(0);clone.hours(0);clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"month\"){if(clone.date()>15){clone.date(1);clone.add(1,\"month\")}else{clone.date(1)}clone.hours(0);clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"week\"){if(clone.weekday()>2){clone.weekday(0);clone.add(1,\"week\")}else{clone.weekday(0)}clone.hours(0);clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"day\"){switch(step){case 5:case 2:clone.hours(Math.round(clone.hours()/24)*24);break;default:clone.hours(Math.round(clone.hours()/12)*12);break}clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"weekday\"){switch(step){case 5:case 2:clone.hours(Math.round(clone.hours()/12)*12);break;default:clone.hours(Math.round(clone.hours()/6)*6);break}clone.minutes(0);clone.seconds(0);clone.milliseconds(0)}else if(scale==\"hour\"){switch(step){case 4:clone.minutes(Math.round(clone.minutes()/60)*60);break;default:clone.minutes(Math.round(clone.minutes()/30)*30);break}clone.seconds(0);clone.milliseconds(0)}else if(scale==\"minute\"){switch(step){case 15:case 10:clone.minutes(Math.round(clone.minutes()/5)*5);clone.seconds(0);break;case 5:clone.seconds(Math.round(clone.seconds()/60)*60);break;default:clone.seconds(Math.round(clone.seconds()/30)*30);break}clone.milliseconds(0)}else if(scale==\"second\"){switch(step){case 15:case 10:clone.seconds(Math.round(clone.seconds()/5)*5);clone.milliseconds(0);break;case 5:clone.milliseconds(Math.round(clone.milliseconds()/1e3)*1e3);break;default:clone.milliseconds(Math.round(clone.milliseconds()/500)*500);break}}else if(scale==\"millisecond\"){var _step=step>5?step/2:1;clone.milliseconds(Math.round(clone.milliseconds()/_step)*_step)}return clone};TimeStep.prototype.isMajor=function(){if(this.switchedYear==true){switch(this.scale){case\"year\":case\"month\":case\"week\":case\"weekday\":case\"day\":case\"hour\":case\"minute\":case\"second\":case\"millisecond\":return true;default:return false}}else if(this.switchedMonth==true){switch(this.scale){case\"week\":case\"weekday\":case\"day\":case\"hour\":case\"minute\":case\"second\":case\"millisecond\":return true;default:return false}}else if(this.switchedDay==true){switch(this.scale){case\"millisecond\":case\"second\":case\"minute\":case\"hour\":return true;default:return false}}var date=this.moment(this.current);switch(this.scale){case\"millisecond\":return date.milliseconds()==0;case\"second\":return date.seconds()==0;case\"minute\":return date.hours()==0&&date.minutes()==0;case\"hour\":return date.hours()==0;case\"weekday\":case\"day\":return date.date()==1;case\"week\":return date.date()==1;case\"month\":return date.month()==0;case\"year\":return false;default:return false}};TimeStep.prototype.getLabelMinor=function(date){if(date==undefined){date=this.current}if(date instanceof Date){date=this.moment(date)}if(typeof this.format.minorLabels===\"function\"){return this.format.minorLabels(date,this.scale,this.step)}var format=this.format.minorLabels[this.scale];switch(this.scale){case\"week\":if(this.isMajor()&&date.weekday()!==0){return\"\"}default:return format&&format.length>0?this.moment(date).format(format):\"\"}};TimeStep.prototype.getLabelMajor=function(date){if(date==undefined){date=this.current}if(date instanceof Date){date=this.moment(date)}if(typeof this.format.majorLabels===\"function\"){return this.format.majorLabels(date,this.scale,this.step)}var format=this.format.majorLabels[this.scale];return format&&format.length>0?this.moment(date).format(format):\"\"};TimeStep.prototype.getClassName=function(){var _moment=this.moment;var m=this.moment(this.current);var current=m.locale?m.locale(\"en\"):m.lang(\"en\");var step=this.step;var classNames=[];function even(value){return value/step%2==0?\" vis-even\":\" vis-odd\"}function today(date){if(date.isSame(new Date,\"day\")){return\" vis-today\"}if(date.isSame(_moment().add(1,\"day\"),\"day\")){return\" vis-tomorrow\"}if(date.isSame(_moment().add(-1,\"day\"),\"day\")){return\" vis-yesterday\"}return\"\"}function currentWeek(date){return date.isSame(new Date,\"week\")?\" vis-current-week\":\"\"}function currentMonth(date){return date.isSame(new Date,\"month\")?\" vis-current-month\":\"\"}function currentYear(date){return date.isSame(new Date,\"year\")?\" vis-current-year\":\"\"}switch(this.scale){case\"millisecond\":classNames.push(today(current));classNames.push(even(current.milliseconds()));break;case\"second\":classNames.push(today(current));classNames.push(even(current.seconds()));break;case\"minute\":classNames.push(today(current));classNames.push(even(current.minutes()));break;case\"hour\":classNames.push(\"vis-h\"+current.hours()+(this.step==4?\"-h\"+(current.hours()+4):\"\"));classNames.push(today(current));classNames.push(even(current.hours()));break;case\"weekday\":classNames.push(\"vis-\"+current.format(\"dddd\").toLowerCase());classNames.push(today(current));classNames.push(currentWeek(current));classNames.push(even(current.date()));break;case\"day\":classNames.push(\"vis-day\"+current.date());classNames.push(\"vis-\"+current.format(\"MMMM\").toLowerCase());classNames.push(today(current));classNames.push(currentMonth(current));classNames.push(this.step<=2?today(current):\"\");classNames.push(this.step<=2?\"vis-\"+current.format(\"dddd\").toLowerCase():\"\");classNames.push(even(current.date()-1));break;case\"week\":classNames.push(\"vis-week\"+current.format(\"w\"));classNames.push(currentWeek(current));classNames.push(even(current.week()));break;case\"month\":classNames.push(\"vis-\"+current.format(\"MMMM\").toLowerCase());classNames.push(currentMonth(current));classNames.push(even(current.month()));break;case\"year\":classNames.push(\"vis-year\"+current.year());classNames.push(currentYear(current));classNames.push(even(current.year()));break}return classNames.filter(String).join(\" \")};module.exports=TimeStep},function(module,exports,__webpack_require__){\"use strict\";var util=__webpack_require__(2);var Component=__webpack_require__(16);var moment=__webpack_require__(9);var locales=__webpack_require__(98);function CurrentTime(body,options){this.body=body;this.defaultOptions={rtl:false,showCurrentTime:true,moment:moment,locales:locales,locale:\"en\"};this.options=util.extend({},this.defaultOptions);this.offset=0;this._create();this.setOptions(options)}CurrentTime.prototype=new Component;CurrentTime.prototype._create=function(){var bar=document.createElement(\"div\");bar.className=\"vis-current-time\";bar.style.position=\"absolute\";bar.style.top=\"0px\";bar.style.height=\"100%\";this.bar=bar};CurrentTime.prototype.destroy=function(){this.options.showCurrentTime=false;this.redraw();this.body=null};CurrentTime.prototype.setOptions=function(options){if(options){util.selectiveExtend([\"rtl\",\"showCurrentTime\",\"moment\",\"locale\",\"locales\"],this.options,options)}};CurrentTime.prototype.redraw=function(){if(this.options.showCurrentTime){var parent=this.body.dom.backgroundVertical;if(this.bar.parentNode!=parent){if(this.bar.parentNode){this.bar.parentNode.removeChild(this.bar)}parent.appendChild(this.bar);this.start()}var now=this.options.moment((new Date).valueOf()+this.offset);var x=this.body.util.toScreen(now);var locale=this.options.locales[this.options.locale];if(!locale){if(!this.warned){console.log(\"WARNING: options.locales['\"+this.options.locale+\"'] not found. See http://visjs.org/docs/timeline/#Localization\");this.warned=true}locale=this.options.locales[\"en\"]}var title=locale.current+\" \"+locale.time+\": \"+now.format(\"dddd, MMMM Do YYYY, H:mm:ss\");title=title.charAt(0).toUpperCase()+title.substring(1);if(this.options.rtl){this.bar.style.right=x+\"px\"}else{this.bar.style.left=x+\"px\"}this.bar.title=title}else{if(this.bar.parentNode){this.bar.parentNode.removeChild(this.bar)}this.stop()}return false};CurrentTime.prototype.start=function(){var me=this;function update(){me.stop();var scale=me.body.range.conversion(me.body.domProps.center.width).scale;var interval=1/scale/10;if(interval<30)interval=30;if(interval>1e3)interval=1e3;me.redraw();me.body.emitter.emit(\"currentTimeTick\");me.currentTimeTimer=setTimeout(update,interval)}update()};CurrentTime.prototype.stop=function(){if(this.currentTimeTimer!==undefined){clearTimeout(this.currentTimeTimer);delete this.currentTimeTimer}};CurrentTime.prototype.setCurrentTime=function(time){var t=util.convert(time,\"Date\").valueOf();var now=(new Date).valueOf();this.offset=t-now;this.redraw()};CurrentTime.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)};module.exports=CurrentTime},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var stack=__webpack_require__(100);function Group(groupId,data,itemSet){this.groupId=groupId;this.subgroups={};this.subgroupStack={};this.subgroupStackAll=false;this.doInnerStack=false;this.subgroupIndex=0;this.subgroupOrderer=data&&data.subgroupOrder;this.itemSet=itemSet;this.isVisible=null;this.stackDirty=true;if(data&&data.nestedGroups){this.nestedGroups=data.nestedGroups;if(data.showNested==false){this.showNested=false}else{this.showNested=true}}if(data&&data.subgroupStack){if(typeof data.subgroupStack===\"boolean\"){this.doInnerStack=data.subgroupStack;this.subgroupStackAll=data.subgroupStack}else{for(var key in data.subgroupStack){this.subgroupStack[key]=data.subgroupStack[key];this.doInnerStack=this.doInnerStack||data.subgroupStack[key]}}}this.nestedInGroup=null;this.dom={};this.props={label:{width:0,height:0}};this.className=null;this.items={};this.visibleItems=[];this.itemsInRange=[];this.orderedItems={byStart:[],byEnd:[]};this.checkRangedItems=false;var me=this;this.itemSet.body.emitter.on(\"checkRangedItems\",function(){me.checkRangedItems=true});this._create();this.setData(data)}Group.prototype._create=function(){var label=document.createElement(\"div\");if(this.itemSet.options.groupEditable.order){label.className=\"vis-label draggable\"}else{label.className=\"vis-label\"}this.dom.label=label;var inner=document.createElement(\"div\");inner.className=\"vis-inner\";label.appendChild(inner);this.dom.inner=inner;var foreground=document.createElement(\"div\");foreground.className=\"vis-group\";foreground[\"timeline-group\"]=this;this.dom.foreground=foreground;this.dom.background=document.createElement(\"div\");this.dom.background.className=\"vis-group\";this.dom.axis=document.createElement(\"div\");this.dom.axis.className=\"vis-group\";this.dom.marker=document.createElement(\"div\");this.dom.marker.style.visibility=\"hidden\";this.dom.marker.style.position=\"absolute\";this.dom.marker.innerHTML=\"\";this.dom.background.appendChild(this.dom.marker)};Group.prototype.setData=function(data){var content;var templateFunction;if(this.itemSet.options&&this.itemSet.options.groupTemplate){templateFunction=this.itemSet.options.groupTemplate.bind(this);content=templateFunction(data,this.dom.inner)}else{content=data&&data.content}if(content instanceof Element){this.dom.inner.appendChild(content);while(this.dom.inner.firstChild){this.dom.inner.removeChild(this.dom.inner.firstChild)}this.dom.inner.appendChild(content)}else if(content instanceof Object){templateFunction(data,this.dom.inner)}else if(content!==undefined&&content!==null){this.dom.inner.innerHTML=content}else{this.dom.inner.innerHTML=this.groupId||\"\"}this.dom.label.title=data&&data.title||\"\";if(!this.dom.inner.firstChild){util.addClassName(this.dom.inner,\"vis-hidden\")}else{util.removeClassName(this.dom.inner,\"vis-hidden\")}if(data&&data.nestedGroups){if(!this.nestedGroups||this.nestedGroups!=data.nestedGroups){this.nestedGroups=data.nestedGroups}if(data.showNested!==undefined||this.showNested===undefined){if(data.showNested==false){this.showNested=false}else{this.showNested=true}}util.addClassName(this.dom.label,\"vis-nesting-group\");var collapsedDirClassName=this.itemSet.options.rtl?\"collapsed-rtl\":\"collapsed\";if(this.showNested){util.removeClassName(this.dom.label,collapsedDirClassName);util.addClassName(this.dom.label,\"expanded\")}else{util.removeClassName(this.dom.label,\"expanded\");util.addClassName(this.dom.label,collapsedDirClassName)}}else if(this.nestedGroups){this.nestedGroups=null;collapsedDirClassName=this.itemSet.options.rtl?\"collapsed-rtl\":\"collapsed\";util.removeClassName(this.dom.label,collapsedDirClassName);util.removeClassName(this.dom.label,\"expanded\");util.removeClassName(this.dom.label,\"vis-nesting-group\")}if(data&&data.nestedInGroup){util.addClassName(this.dom.label,\"vis-nested-group\");if(this.itemSet.options&&this.itemSet.options.rtl){this.dom.inner.style.paddingRight=\"30px\"}else{\nthis.dom.inner.style.paddingLeft=\"30px\"}}var className=data&&data.className||null;if(className!=this.className){if(this.className){util.removeClassName(this.dom.label,this.className);util.removeClassName(this.dom.foreground,this.className);util.removeClassName(this.dom.background,this.className);util.removeClassName(this.dom.axis,this.className)}util.addClassName(this.dom.label,className);util.addClassName(this.dom.foreground,className);util.addClassName(this.dom.background,className);util.addClassName(this.dom.axis,className);this.className=className}if(this.style){util.removeCssText(this.dom.label,this.style);this.style=null}if(data&&data.style){util.addCssText(this.dom.label,data.style);this.style=data.style}};Group.prototype.getLabelWidth=function(){return this.props.label.width};Group.prototype._didMarkerHeightChange=function(){var markerHeight=this.dom.marker.clientHeight;if(markerHeight!=this.lastMarkerHeight){this.lastMarkerHeight=markerHeight;var redrawQueue={};var redrawQueueLength=0;util.forEach(this.items,function(item,key){item.dirty=true;if(item.displayed){var returnQueue=true;redrawQueue[key]=item.redraw(returnQueue);redrawQueueLength=redrawQueue[key].length}});var needRedraw=redrawQueueLength>0;if(needRedraw){for(var i=0;i<redrawQueueLength;i++){util.forEach(redrawQueue,function(fns){fns[i]()})}}return true}};Group.prototype._calculateGroupSizeAndPosition=function(){var offsetTop=this.dom.foreground.offsetTop;var offsetLeft=this.dom.foreground.offsetLeft;var offsetWidth=this.dom.foreground.offsetWidth;this.top=offsetTop;this.right=offsetLeft;this.width=offsetWidth};Group.prototype._redrawItems=function(forceRestack,lastIsVisible,margin,range){var restack=forceRestack||this.stackDirty||this.isVisible&&!lastIsVisible;if(restack){var visibleSubgroups={};var subgroup=null;if(typeof this.itemSet.options.order===\"function\"){var me=this;var limitSize=false;var redrawQueue={};var redrawQueueLength=0;util.forEach(this.items,function(item,key){if(!item.displayed){var returnQueue=true;redrawQueue[key]=item.redraw(returnQueue);redrawQueueLength=redrawQueue[key].length;me.visibleItems.push(item)}});var needRedraw=redrawQueueLength>0;if(needRedraw){for(var i=0;i<redrawQueueLength;i++){util.forEach(redrawQueue,function(fns){fns[i]()})}}util.forEach(this.items,function(item){item.repositionX(limitSize)});if(this.doInnerStack&&this.itemSet.options.stackSubgroups){for(subgroup in this.subgroups){visibleSubgroups[subgroup]=this.subgroups[subgroup].items.slice().sort(function(a,b){return me.itemSet.options.order(a.data,b.data)})}stack.stackSubgroupsWithInnerStack(visibleSubgroups,margin,this.subgroups)}else{var customOrderedItems=this.orderedItems.byStart.slice().sort(function(a,b){return me.itemSet.options.order(a.data,b.data)});stack.stack(customOrderedItems,margin,true)}this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,range)}else{this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,range);if(this.itemSet.options.stack){if(this.doInnerStack&&this.itemSet.options.stackSubgroups){for(subgroup in this.subgroups){visibleSubgroups[subgroup]=this.subgroups[subgroup].items}stack.stackSubgroupsWithInnerStack(visibleSubgroups,margin,this.subgroups)}else{stack.stack(this.visibleItems,margin,true)}}else{stack.nostack(this.visibleItems,margin,this.subgroups,this.itemSet.options.stackSubgroups)}}this.stackDirty=false}};Group.prototype._didResize=function(resized,height){resized=util.updateProperty(this,\"height\",height)||resized;var labelWidth=this.dom.inner.clientWidth;var labelHeight=this.dom.inner.clientHeight;resized=util.updateProperty(this.props.label,\"width\",labelWidth)||resized;resized=util.updateProperty(this.props.label,\"height\",labelHeight)||resized;return resized};Group.prototype._applyGroupHeight=function(height){this.dom.background.style.height=height+\"px\";this.dom.foreground.style.height=height+\"px\";this.dom.label.style.height=height+\"px\"};Group.prototype._updateItemsVerticalPosition=function(margin){for(var i=0,ii=this.visibleItems.length;i<ii;i++){var item=this.visibleItems[i];item.repositionY(margin);if(!this.isVisible&&this.groupId!=\"__background__\"){if(item.displayed)item.hide()}}};Group.prototype.redraw=function(range,margin,forceRestack,returnQueue){var resized=false;var lastIsVisible=this.isVisible;var height;var queue=[function(){forceRestack=this._didMarkerHeightChange.bind(this)}.bind(this),this._updateSubGroupHeights.bind(this,margin),this._calculateGroupSizeAndPosition.bind(this),function(){this.isVisible=this._isGroupVisible.bind(this)(range,margin)}.bind(this),function(){this._redrawItems.bind(this)(forceRestack,lastIsVisible,margin,range)}.bind(this),this._updateSubgroupsSizes.bind(this),function(){height=this._calculateHeight.bind(this)(margin)}.bind(this),this._calculateGroupSizeAndPosition.bind(this),function(){resized=this._didResize.bind(this)(resized,height)}.bind(this),function(){this._applyGroupHeight.bind(this)(height)}.bind(this),function(){this._updateItemsVerticalPosition.bind(this)(margin)}.bind(this),function(){if(!this.isVisible&&this.height){resized=false}return resized}];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};Group.prototype._updateSubGroupHeights=function(margin){if((0,_keys2[\"default\"])(this.subgroups).length>0){var me=this;this.resetSubgroups();util.forEach(this.visibleItems,function(item){if(item.data.subgroup!==undefined){me.subgroups[item.data.subgroup].height=Math.max(me.subgroups[item.data.subgroup].height,item.height+margin.item.vertical);me.subgroups[item.data.subgroup].visible=true}})}};Group.prototype._isGroupVisible=function(range,margin){return this.top<=range.body.domProps.centerContainer.height-range.body.domProps.scrollTop+margin.axis&&this.top+this.height+margin.axis>=-range.body.domProps.scrollTop};Group.prototype._calculateHeight=function(margin){var height;var itemsInRange=this.visibleItems;if(itemsInRange.length>0){var min=itemsInRange[0].top;var max=itemsInRange[0].top+itemsInRange[0].height;util.forEach(itemsInRange,function(item){min=Math.min(min,item.top);max=Math.max(max,item.top+item.height)});if(min>margin.axis){var offset=min-margin.axis;max-=offset;util.forEach(itemsInRange,function(item){item.top-=offset})}height=max+margin.item.vertical/2}else{height=0}height=Math.max(height,this.props.label.height);return height};Group.prototype.show=function(){if(!this.dom.label.parentNode){this.itemSet.dom.labelSet.appendChild(this.dom.label)}if(!this.dom.foreground.parentNode){this.itemSet.dom.foreground.appendChild(this.dom.foreground)}if(!this.dom.background.parentNode){this.itemSet.dom.background.appendChild(this.dom.background)}if(!this.dom.axis.parentNode){this.itemSet.dom.axis.appendChild(this.dom.axis)}};Group.prototype.hide=function(){var label=this.dom.label;if(label.parentNode){label.parentNode.removeChild(label)}var foreground=this.dom.foreground;if(foreground.parentNode){foreground.parentNode.removeChild(foreground)}var background=this.dom.background;if(background.parentNode){background.parentNode.removeChild(background)}var axis=this.dom.axis;if(axis.parentNode){axis.parentNode.removeChild(axis)}};Group.prototype.add=function(item){this.items[item.id]=item;item.setParent(this);this.stackDirty=true;if(item.data.subgroup!==undefined){this._addToSubgroup(item);this.orderSubgroups()}if(this.visibleItems.indexOf(item)==-1){var range=this.itemSet.body.range;this._checkIfVisible(item,this.visibleItems,range)}};Group.prototype._addToSubgroup=function(item,subgroupId){subgroupId=subgroupId||item.data.subgroup;if(subgroupId!=undefined&&this.subgroups[subgroupId]===undefined){this.subgroups[subgroupId]={height:0,top:0,start:item.data.start,end:item.data.end||item.data.start,visible:false,index:this.subgroupIndex,items:[],stack:this.subgroupStackAll||this.subgroupStack[subgroupId]||false};this.subgroupIndex++}if(new Date(item.data.start)<new Date(this.subgroups[subgroupId].start)){this.subgroups[subgroupId].start=item.data.start}var itemEnd=item.data.end||item.data.start;if(new Date(itemEnd)>new Date(this.subgroups[subgroupId].end)){this.subgroups[subgroupId].end=itemEnd}this.subgroups[subgroupId].items.push(item)};Group.prototype._updateSubgroupsSizes=function(){var me=this;if(me.subgroups){for(var subgroup in me.subgroups){var initialEnd=me.subgroups[subgroup].items[0].data.end||me.subgroups[subgroup].items[0].data.start;var newStart=me.subgroups[subgroup].items[0].data.start;var newEnd=initialEnd-1;me.subgroups[subgroup].items.forEach(function(item){if(new Date(item.data.start)<new Date(newStart)){newStart=item.data.start}var itemEnd=item.data.end||item.data.start;if(new Date(itemEnd)>new Date(newEnd)){newEnd=itemEnd}});me.subgroups[subgroup].start=newStart;me.subgroups[subgroup].end=new Date(newEnd-1)}}};Group.prototype.orderSubgroups=function(){if(this.subgroupOrderer!==undefined){var sortArray=[];var subgroup;if(typeof this.subgroupOrderer==\"string\"){for(subgroup in this.subgroups){sortArray.push({subgroup:subgroup,sortField:this.subgroups[subgroup].items[0].data[this.subgroupOrderer]})}sortArray.sort(function(a,b){return a.sortField-b.sortField})}else if(typeof this.subgroupOrderer==\"function\"){for(subgroup in this.subgroups){sortArray.push(this.subgroups[subgroup].items[0].data)}sortArray.sort(this.subgroupOrderer)}if(sortArray.length>0){for(var i=0;i<sortArray.length;i++){this.subgroups[sortArray[i].subgroup].index=i}}}};Group.prototype.resetSubgroups=function(){for(var subgroup in this.subgroups){if(this.subgroups.hasOwnProperty(subgroup)){this.subgroups[subgroup].visible=false;this.subgroups[subgroup].height=0}}};Group.prototype.remove=function(item){delete this.items[item.id];item.setParent(null);this.stackDirty=true;var index=this.visibleItems.indexOf(item);if(index!=-1)this.visibleItems.splice(index,1);if(item.data.subgroup!==undefined){this._removeFromSubgroup(item);this.orderSubgroups()}};Group.prototype._removeFromSubgroup=function(item,subgroupId){subgroupId=subgroupId||item.data.subgroup;if(subgroupId!=undefined){var subgroup=this.subgroups[subgroupId];if(subgroup){var itemIndex=subgroup.items.indexOf(item);if(itemIndex>=0){subgroup.items.splice(itemIndex,1);if(!subgroup.items.length){delete this.subgroups[subgroupId]}else{this._updateSubgroupsSizes()}}}}};Group.prototype.removeFromDataSet=function(item){this.itemSet.removeItem(item.id)};Group.prototype.order=function(){var array=util.toArray(this.items);var startArray=[];var endArray=[];for(var i=0;i<array.length;i++){if(array[i].data.end!==undefined){endArray.push(array[i])}startArray.push(array[i])}this.orderedItems={byStart:startArray,byEnd:endArray};stack.orderByStart(this.orderedItems.byStart);stack.orderByEnd(this.orderedItems.byEnd)};Group.prototype._updateItemsInRange=function(orderedItems,oldVisibleItems,range){var visibleItems=[];var visibleItemsLookup={};var interval=(range.end-range.start)/4;var lowerBound=range.start-interval;var upperBound=range.end+interval;var searchFunction=function searchFunction(value){if(value<lowerBound){return-1}else if(value<=upperBound){return 0}else{return 1}};if(oldVisibleItems.length>0){for(var i=0;i<oldVisibleItems.length;i++){this._checkIfVisibleWithReference(oldVisibleItems[i],visibleItems,visibleItemsLookup,range)}}var initialPosByStart=util.binarySearchCustom(orderedItems.byStart,searchFunction,\"data\",\"start\");this._traceVisible(initialPosByStart,orderedItems.byStart,visibleItems,visibleItemsLookup,function(item){return item.data.start<lowerBound||item.data.start>upperBound});if(this.checkRangedItems==true){this.checkRangedItems=false;for(i=0;i<orderedItems.byEnd.length;i++){this._checkIfVisibleWithReference(orderedItems.byEnd[i],visibleItems,visibleItemsLookup,range)}}else{var initialPosByEnd=util.binarySearchCustom(orderedItems.byEnd,searchFunction,\"data\",\"end\");this._traceVisible(initialPosByEnd,orderedItems.byEnd,visibleItems,visibleItemsLookup,function(item){return item.data.end<lowerBound||item.data.end>upperBound})}var redrawQueue={};var redrawQueueLength=0;for(i=0;i<visibleItems.length;i++){var item=visibleItems[i];if(!item.displayed){var returnQueue=true;redrawQueue[i]=item.redraw(returnQueue);redrawQueueLength=redrawQueue[i].length}}var needRedraw=redrawQueueLength>0;if(needRedraw){for(var j=0;j<redrawQueueLength;j++){util.forEach(redrawQueue,function(fns){fns[j]()})}}for(i=0;i<visibleItems.length;i++){visibleItems[i].repositionX()}return visibleItems};Group.prototype._traceVisible=function(initialPos,items,visibleItems,visibleItemsLookup,breakCondition){if(initialPos!=-1){var i,item;for(i=initialPos;i>=0;i--){item=items[i];if(breakCondition(item)){break}else{if(visibleItemsLookup[item.id]===undefined){visibleItemsLookup[item.id]=true;visibleItems.push(item)}}}for(i=initialPos+1;i<items.length;i++){item=items[i];if(breakCondition(item)){break}else{if(visibleItemsLookup[item.id]===undefined){visibleItemsLookup[item.id]=true;visibleItems.push(item)}}}}};Group.prototype._checkIfVisible=function(item,visibleItems,range){if(item.isVisible(range)){if(!item.displayed)item.show();item.repositionX();visibleItems.push(item)}else{if(item.displayed)item.hide()}};Group.prototype._checkIfVisibleWithReference=function(item,visibleItems,visibleItemsLookup,range){if(item.isVisible(range)){if(visibleItemsLookup[item.id]===undefined){visibleItemsLookup[item.id]=true;visibleItems.push(item)}}else{if(item.displayed)item.hide()}};Group.prototype.changeSubgroup=function(item,oldSubgroup,newSubgroup){this._removeFromSubgroup(item,oldSubgroup);this._addToSubgroup(item,newSubgroup);this.orderSubgroups()};module.exports=Group},function(module,exports,__webpack_require__){\"use strict\";var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Group=__webpack_require__(68);function BackgroundGroup(groupId,data,itemSet){Group.call(this,groupId,data,itemSet);this.width=0;this.height=0;this.top=0;this.left=0}BackgroundGroup.prototype=(0,_create2[\"default\"])(Group.prototype);BackgroundGroup.prototype.redraw=function(range,margin,forceRestack){var resized=false;this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,range);this.width=this.dom.background.offsetWidth;this.dom.background.style.height=\"0\";for(var i=0,ii=this.visibleItems.length;i<ii;i++){var item=this.visibleItems[i];item.repositionY(margin)}return resized};BackgroundGroup.prototype.show=function(){if(!this.dom.background.parentNode){this.itemSet.dom.background.appendChild(this.dom.background)}};module.exports=BackgroundGroup},function(module,exports,__webpack_require__){\"use strict\";var Item=__webpack_require__(38);function RangeItem(data,conversion,options){this.props={content:{width:0}};this.overflow=false;this.options=options;if(data){if(data.start==undefined){throw new Error('Property \"start\" missing in item '+data.id)}if(data.end==undefined){throw new Error('Property \"end\" missing in item '+data.id)}}Item.call(this,data,conversion,options)}RangeItem.prototype=new Item(null,null,null);RangeItem.prototype.baseClassName=\"vis-item vis-range\";RangeItem.prototype.isVisible=function(range){return this.data.start<range.end&&this.data.end>range.start};RangeItem.prototype._createDomElement=function(){if(!this.dom){this.dom={};this.dom.box=document.createElement(\"div\");this.dom.frame=document.createElement(\"div\");this.dom.frame.className=\"vis-item-overflow\";this.dom.box.appendChild(this.dom.frame);this.dom.visibleFrame=document.createElement(\"div\");this.dom.visibleFrame.className=\"vis-item-visible-frame\";this.dom.box.appendChild(this.dom.visibleFrame);this.dom.content=document.createElement(\"div\");this.dom.content.className=\"vis-item-content\";this.dom.frame.appendChild(this.dom.content);this.dom.box[\"timeline-item\"]=this;this.dirty=true}};RangeItem.prototype._appendDomElement=function(){if(!this.parent){throw new Error(\"Cannot redraw item: no parent attached\")}if(!this.dom.box.parentNode){var foreground=this.parent.dom.foreground;if(!foreground){throw new Error(\"Cannot redraw item: parent has no foreground container element\")}foreground.appendChild(this.dom.box)}this.displayed=true};RangeItem.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content);this._updateDataAttributes(this.dom.box);this._updateStyle(this.dom.box);var editable=this.editable.updateTime||this.editable.updateGroup;var className=(this.data.className?\" \"+this.data.className:\"\")+(this.selected?\" vis-selected\":\"\")+(editable?\" vis-editable\":\" vis-readonly\");this.dom.box.className=this.baseClassName+className;this.dom.content.style.maxWidth=\"none\"}};RangeItem.prototype._getDomComponentsSizes=function(){this.overflow=window.getComputedStyle(this.dom.frame).overflow!==\"hidden\";return{content:{width:this.dom.content.offsetWidth},box:{height:this.dom.box.offsetHeight}}};RangeItem.prototype._updateDomComponentsSizes=function(sizes){this.props.content.width=sizes.content.width;this.height=sizes.box.height;this.dom.content.style.maxWidth=\"\";this.dirty=false};RangeItem.prototype._repaintDomAdditionals=function(){this._repaintOnItemUpdateTimeTooltip(this.dom.box);this._repaintDeleteButton(this.dom.box);this._repaintDragCenter();this._repaintDragLeft();this._repaintDragRight()};RangeItem.prototype.redraw=function(returnQueue){var sizes;var queue=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){if(this.dirty){sizes=this._getDomComponentsSizes.bind(this)()}}.bind(this),function(){if(this.dirty){this._updateDomComponentsSizes.bind(this)(sizes)}}.bind(this),this._repaintDomAdditionals.bind(this)];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};RangeItem.prototype.show=function(){if(!this.displayed){this.redraw()}};RangeItem.prototype.hide=function(){if(this.displayed){var box=this.dom.box;if(box.parentNode){box.parentNode.removeChild(box)}this.displayed=false}};RangeItem.prototype.repositionX=function(limitSize){var parentWidth=this.parent.width;var start=this.conversion.toScreen(this.data.start);var end=this.conversion.toScreen(this.data.end);var align=this.data.align===undefined?this.options.align:this.data.align;var contentStartPosition;var contentWidth;if(this.data.limitSize!==false&&(limitSize===undefined||limitSize===true)){if(start<-parentWidth){start=-parentWidth}if(end>2*parentWidth){end=2*parentWidth}}var boxWidth=Math.max(end-start+.5,1);if(this.overflow){if(this.options.rtl){this.right=start}else{this.left=start}this.width=boxWidth+this.props.content.width;contentWidth=this.props.content.width}else{if(this.options.rtl){this.right=start}else{this.left=start}this.width=boxWidth;contentWidth=Math.min(end-start,this.props.content.width)}if(this.options.rtl){this.dom.box.style.right=this.right+\"px\"}else{this.dom.box.style.left=this.left+\"px\"}this.dom.box.style.width=boxWidth+\"px\";switch(align){case\"left\":if(this.options.rtl){this.dom.content.style.right=\"0\"}else{this.dom.content.style.left=\"0\"}break;case\"right\":if(this.options.rtl){this.dom.content.style.right=Math.max(boxWidth-contentWidth,0)+\"px\"}else{this.dom.content.style.left=Math.max(boxWidth-contentWidth,0)+\"px\"}break;case\"center\":if(this.options.rtl){this.dom.content.style.right=Math.max((boxWidth-contentWidth)/2,0)+\"px\"}else{this.dom.content.style.left=Math.max((boxWidth-contentWidth)/2,0)+\"px\"}break;default:if(this.overflow){if(end>0){contentStartPosition=Math.max(-start,0)}else{contentStartPosition=-contentWidth}}else{if(start<0){contentStartPosition=-start}else{contentStartPosition=0}}if(this.options.rtl){this.dom.content.style.right=contentStartPosition+\"px\"}else{this.dom.content.style.left=contentStartPosition+\"px\";this.dom.content.style.width=\"calc(100% - \"+contentStartPosition+\"px)\"}}};RangeItem.prototype.repositionY=function(){var orientation=this.options.orientation.item;var box=this.dom.box;if(orientation==\"top\"){box.style.top=this.top+\"px\"}else{box.style.top=this.parent.height-this.top-this.height+\"px\"}};RangeItem.prototype._repaintDragLeft=function(){if((this.selected||this.options.itemsAlwaysDraggable.range)&&this.options.editable.updateTime&&!this.dom.dragLeft){var dragLeft=document.createElement(\"div\");dragLeft.className=\"vis-drag-left\";dragLeft.dragLeftItem=this;this.dom.box.appendChild(dragLeft);this.dom.dragLeft=dragLeft}else if(!this.selected&&!this.options.itemsAlwaysDraggable.range&&this.dom.dragLeft){if(this.dom.dragLeft.parentNode){this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft)}this.dom.dragLeft=null}};RangeItem.prototype._repaintDragRight=function(){if((this.selected||this.options.itemsAlwaysDraggable.range)&&this.options.editable.updateTime&&!this.dom.dragRight){var dragRight=document.createElement(\"div\");dragRight.className=\"vis-drag-right\";dragRight.dragRightItem=this;this.dom.box.appendChild(dragRight);this.dom.dragRight=dragRight}else if(!this.selected&&!this.options.itemsAlwaysDraggable.range&&this.dom.dragRight){if(this.dom.dragRight.parentNode){this.dom.dragRight.parentNode.removeChild(this.dom.dragRight)}this.dom.dragRight=null}};module.exports=RangeItem},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var ColorPicker=__webpack_require__(179)[\"default\"];var Configurator=function(){function Configurator(parentModule,defaultContainer,configureOptions){var pixelRatio=arguments.length>3&&arguments[3]!==undefined?arguments[3]:1;(0,_classCallCheck3[\"default\"])(this,Configurator);this.parent=parentModule;this.changedOptions=[];this.container=defaultContainer;this.allowCreation=false;this.options={};this.initialized=false;this.popupCounter=0;this.defaultOptions={enabled:false,filter:true,container:undefined,showButton:true};util.extend(this.options,this.defaultOptions);this.configureOptions=configureOptions;this.moduleOptions={};this.domElements=[];this.popupDiv={};this.popupLimit=5;this.popupHistory={};this.colorPicker=new ColorPicker(pixelRatio);this.wrapper=undefined}(0,_createClass3[\"default\"])(Configurator,[{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){this.popupHistory={};this._removePopup();var enabled=true;if(typeof options===\"string\"){this.options.filter=options}else if(options instanceof Array){this.options.filter=options.join()}else if((typeof options===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(options))===\"object\"){if(options.container!==undefined){this.options.container=options.container}if(options.filter!==undefined){this.options.filter=options.filter}if(options.showButton!==undefined){this.options.showButton=options.showButton}if(options.enabled!==undefined){enabled=options.enabled}}else if(typeof options===\"boolean\"){this.options.filter=true;enabled=options}else if(typeof options===\"function\"){this.options.filter=options;enabled=true}if(this.options.filter===false){enabled=false}this.options.enabled=enabled}this._clean()}},{key:\"setModuleOptions\",value:function setModuleOptions(moduleOptions){this.moduleOptions=moduleOptions;if(this.options.enabled===true){this._clean();if(this.options.container!==undefined){this.container=this.options.container}this._create()}}},{key:\"_create\",value:function _create(){var _this=this;this._clean();this.changedOptions=[];var filter=this.options.filter;var counter=0;var show=false;for(var option in this.configureOptions){if(this.configureOptions.hasOwnProperty(option)){this.allowCreation=false;show=false;if(typeof filter===\"function\"){show=filter(option,[]);show=show||this._handleObject(this.configureOptions[option],[option],true)}else if(filter===true||filter.indexOf(option)!==-1){show=true}if(show!==false){this.allowCreation=true;if(counter>0){this._makeItem([])}this._makeHeader(option);this._handleObject(this.configureOptions[option],[option])}counter++}}if(this.options.showButton===true){var generateButton=document.createElement(\"div\");generateButton.className=\"vis-configuration vis-config-button\";generateButton.innerHTML=\"generate options\";generateButton.onclick=function(){_this._printOptions()};generateButton.onmouseover=function(){generateButton.className=\"vis-configuration vis-config-button hover\"};generateButton.onmouseout=function(){generateButton.className=\"vis-configuration vis-config-button\"};this.optionsContainer=document.createElement(\"div\");this.optionsContainer.className=\"vis-configuration vis-config-option-container\";this.domElements.push(this.optionsContainer);this.domElements.push(generateButton)}this._push()}},{key:\"_push\",value:function _push(){this.wrapper=document.createElement(\"div\");this.wrapper.className=\"vis-configuration-wrapper\";this.container.appendChild(this.wrapper);for(var i=0;i<this.domElements.length;i++){this.wrapper.appendChild(this.domElements[i])}this._showPopupIfNeeded()}},{key:\"_clean\",value:function _clean(){for(var i=0;i<this.domElements.length;i++){this.wrapper.removeChild(this.domElements[i])}if(this.wrapper!==undefined){this.container.removeChild(this.wrapper);this.wrapper=undefined}this.domElements=[];this._removePopup()}},{key:\"_getValue\",value:function _getValue(path){var base=this.moduleOptions;for(var i=0;i<path.length;i++){if(base[path[i]]!==undefined){base=base[path[i]]}else{base=undefined;break}}return base}},{key:\"_makeItem\",value:function _makeItem(path){if(this.allowCreation===true){var item=document.createElement(\"div\");item.className=\"vis-configuration vis-config-item vis-config-s\"+path.length;for(var _len=arguments.length,domElements=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){domElements[_key-1]=arguments[_key]}domElements.forEach(function(element){item.appendChild(element)});this.domElements.push(item);return this.domElements.length}return 0}},{key:\"_makeHeader\",value:function _makeHeader(name){var div=document.createElement(\"div\");div.className=\"vis-configuration vis-config-header\";div.innerHTML=name;this._makeItem([],div)}},{key:\"_makeLabel\",value:function _makeLabel(name,path){var objectLabel=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var div=document.createElement(\"div\");div.className=\"vis-configuration vis-config-label vis-config-s\"+path.length;if(objectLabel===true){div.innerHTML=\"<i><b>\"+name+\":</b></i>\"}else{div.innerHTML=name+\":\"}return div}},{key:\"_makeDropdown\",value:function _makeDropdown(arr,value,path){var select=document.createElement(\"select\");select.className=\"vis-configuration vis-config-select\";var selectedValue=0;if(value!==undefined){if(arr.indexOf(value)!==-1){selectedValue=arr.indexOf(value)}}for(var i=0;i<arr.length;i++){var option=document.createElement(\"option\");option.value=arr[i];if(i===selectedValue){option.selected=\"selected\"}option.innerHTML=arr[i];select.appendChild(option)}var me=this;select.onchange=function(){me._update(this.value,path)};var label=this._makeLabel(path[path.length-1],path);this._makeItem(path,label,select)}},{key:\"_makeRange\",value:function _makeRange(arr,value,path){var defaultValue=arr[0];var min=arr[1];var max=arr[2];var step=arr[3];var range=document.createElement(\"input\");range.className=\"vis-configuration vis-config-range\";try{range.type=\"range\";range.min=min;range.max=max}catch(err){}range.step=step;var popupString=\"\";var popupValue=0;if(value!==undefined){var factor=1.2;if(value<0&&value*factor<min){range.min=Math.ceil(value*factor);popupValue=range.min;popupString=\"range increased\"}else if(value/factor<min){range.min=Math.ceil(value/factor);popupValue=range.min;popupString=\"range increased\"}if(value*factor>max&&max!==1){range.max=Math.ceil(value*factor);popupValue=range.max;popupString=\"range increased\"}range.value=value}else{range.value=defaultValue}var input=document.createElement(\"input\");input.className=\"vis-configuration vis-config-rangeinput\";input.value=range.value;var me=this;range.onchange=function(){input.value=this.value;me._update(Number(this.value),path)};range.oninput=function(){input.value=this.value};var label=this._makeLabel(path[path.length-1],path);var itemIndex=this._makeItem(path,label,range,input);if(popupString!==\"\"&&this.popupHistory[itemIndex]!==popupValue){this.popupHistory[itemIndex]=popupValue;this._setupPopup(popupString,itemIndex)}}},{key:\"_setupPopup\",value:function _setupPopup(string,index){var _this2=this;if(this.initialized===true&&this.allowCreation===true&&this.popupCounter<this.popupLimit){var div=document.createElement(\"div\");div.id=\"vis-configuration-popup\";div.className=\"vis-configuration-popup\";div.innerHTML=string;div.onclick=function(){_this2._removePopup()};this.popupCounter+=1;this.popupDiv={html:div,index:index}}}},{key:\"_removePopup\",value:function _removePopup(){if(this.popupDiv.html!==undefined){this.popupDiv.html.parentNode.removeChild(this.popupDiv.html);clearTimeout(this.popupDiv.hideTimeout);clearTimeout(this.popupDiv.deleteTimeout);this.popupDiv={}}}},{key:\"_showPopupIfNeeded\",value:function _showPopupIfNeeded(){var _this3=this;if(this.popupDiv.html!==undefined){var correspondingElement=this.domElements[this.popupDiv.index];var rect=correspondingElement.getBoundingClientRect();this.popupDiv.html.style.left=rect.left+\"px\";this.popupDiv.html.style.top=rect.top-30+\"px\";document.body.appendChild(this.popupDiv.html);this.popupDiv.hideTimeout=setTimeout(function(){_this3.popupDiv.html.style.opacity=0},1500);this.popupDiv.deleteTimeout=setTimeout(function(){_this3._removePopup()},1800)}}},{key:\"_makeCheckbox\",value:function _makeCheckbox(defaultValue,value,path){var checkbox=document.createElement(\"input\");checkbox.type=\"checkbox\";checkbox.className=\"vis-configuration vis-config-checkbox\";checkbox.checked=defaultValue;if(value!==undefined){checkbox.checked=value;if(value!==defaultValue){if((typeof defaultValue===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(defaultValue))===\"object\"){if(value!==defaultValue.enabled){this.changedOptions.push({path:path,value:value})}}else{this.changedOptions.push({path:path,value:value})}}}var me=this;checkbox.onchange=function(){me._update(this.checked,path)};var label=this._makeLabel(path[path.length-1],path);this._makeItem(path,label,checkbox)}},{key:\"_makeTextInput\",value:function _makeTextInput(defaultValue,value,path){var checkbox=document.createElement(\"input\");checkbox.type=\"text\";checkbox.className=\"vis-configuration vis-config-text\";checkbox.value=value;if(value!==defaultValue){this.changedOptions.push({path:path,value:value})}var me=this;checkbox.onchange=function(){me._update(this.value,path)};var label=this._makeLabel(path[path.length-1],path);this._makeItem(path,label,checkbox)}},{key:\"_makeColorField\",value:function _makeColorField(arr,value,path){var _this4=this;var defaultColor=arr[1];var div=document.createElement(\"div\");value=value===undefined?defaultColor:value;if(value!==\"none\"){div.className=\"vis-configuration vis-config-colorBlock\";div.style.backgroundColor=value}else{div.className=\"vis-configuration vis-config-colorBlock none\"}value=value===undefined?defaultColor:value;div.onclick=function(){_this4._showColorPicker(value,div,path)};var label=this._makeLabel(path[path.length-1],path);this._makeItem(path,label,div)}},{key:\"_showColorPicker\",value:function _showColorPicker(value,div,path){var _this5=this;div.onclick=function(){};this.colorPicker.insertTo(div);this.colorPicker.show();this.colorPicker.setColor(value);this.colorPicker.setUpdateCallback(function(color){\nvar colorString=\"rgba(\"+color.r+\",\"+color.g+\",\"+color.b+\",\"+color.a+\")\";div.style.backgroundColor=colorString;_this5._update(colorString,path)});this.colorPicker.setCloseCallback(function(){div.onclick=function(){_this5._showColorPicker(value,div,path)}})}},{key:\"_handleObject\",value:function _handleObject(obj){var path=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var checkOnly=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var show=false;var filter=this.options.filter;var visibleInSet=false;for(var subObj in obj){if(obj.hasOwnProperty(subObj)){show=true;var item=obj[subObj];var newPath=util.copyAndExtendArray(path,subObj);if(typeof filter===\"function\"){show=filter(subObj,path);if(show===false){if(!(item instanceof Array)&&typeof item!==\"string\"&&typeof item!==\"boolean\"&&item instanceof Object){this.allowCreation=false;show=this._handleObject(item,newPath,true);this.allowCreation=checkOnly===false}}}if(show!==false){visibleInSet=true;var value=this._getValue(newPath);if(item instanceof Array){this._handleArray(item,value,newPath)}else if(typeof item===\"string\"){this._makeTextInput(item,value,newPath)}else if(typeof item===\"boolean\"){this._makeCheckbox(item,value,newPath)}else if(item instanceof Object){var draw=true;if(path.indexOf(\"physics\")!==-1){if(this.moduleOptions.physics.solver!==subObj){draw=false}}if(draw===true){if(item.enabled!==undefined){var enabledPath=util.copyAndExtendArray(newPath,\"enabled\");var enabledValue=this._getValue(enabledPath);if(enabledValue===true){var label=this._makeLabel(subObj,newPath,true);this._makeItem(newPath,label);visibleInSet=this._handleObject(item,newPath)||visibleInSet}else{this._makeCheckbox(item,enabledValue,newPath)}}else{var _label=this._makeLabel(subObj,newPath,true);this._makeItem(newPath,_label);visibleInSet=this._handleObject(item,newPath)||visibleInSet}}}else{console.error(\"dont know how to handle\",item,subObj,newPath)}}}}return visibleInSet}},{key:\"_handleArray\",value:function _handleArray(arr,value,path){if(typeof arr[0]===\"string\"&&arr[0]===\"color\"){this._makeColorField(arr,value,path);if(arr[1]!==value){this.changedOptions.push({path:path,value:value})}}else if(typeof arr[0]===\"string\"){this._makeDropdown(arr,value,path);if(arr[0]!==value){this.changedOptions.push({path:path,value:value})}}else if(typeof arr[0]===\"number\"){this._makeRange(arr,value,path);if(arr[0]!==value){this.changedOptions.push({path:path,value:Number(value)})}}}},{key:\"_update\",value:function _update(value,path){var options=this._constructOptions(value,path);if(this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit){this.parent.body.emitter.emit(\"configChange\",options)}this.initialized=true;this.parent.setOptions(options)}},{key:\"_constructOptions\",value:function _constructOptions(value,path){var optionsObj=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var pointer=optionsObj;value=value===\"true\"?true:value;value=value===\"false\"?false:value;for(var i=0;i<path.length;i++){if(path[i]!==\"global\"){if(pointer[path[i]]===undefined){pointer[path[i]]={}}if(i!==path.length-1){pointer=pointer[path[i]]}else{pointer[path[i]]=value}}}return optionsObj}},{key:\"_printOptions\",value:function _printOptions(){var options=this.getOptions();this.optionsContainer.innerHTML=\"<pre>var options = \"+(0,_stringify2[\"default\"])(options,null,2)+\"</pre>\"}},{key:\"getOptions\",value:function getOptions(){var options={};for(var i=0;i<this.changedOptions.length;i++){this._constructOptions(this.changedOptions[i].value,this.changedOptions[i].path,options)}return options}}]);return Configurator}();exports[\"default\"]=Configurator},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var DOMutil=__webpack_require__(14);function Points(groupId,options){}Points.draw=function(dataset,group,framework,offset){offset=offset||0;var callback=getCallback(framework,group);for(var i=0;i<dataset.length;i++){if(!callback){DOMutil.drawPoint(dataset[i].screen_x+offset,dataset[i].screen_y,getGroupTemplate(group),framework.svgElements,framework.svg,dataset[i].label)}else{var callbackResult=callback(dataset[i],group);if(callbackResult===true||(typeof callbackResult===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(callbackResult))===\"object\"){DOMutil.drawPoint(dataset[i].screen_x+offset,dataset[i].screen_y,getGroupTemplate(group,callbackResult),framework.svgElements,framework.svg,dataset[i].label)}}}};Points.drawIcon=function(group,x,y,iconWidth,iconHeight,framework){var fillHeight=iconHeight*.5;var outline=DOMutil.getSVGElement(\"rect\",framework.svgElements,framework.svg);outline.setAttributeNS(null,\"x\",x);outline.setAttributeNS(null,\"y\",y-fillHeight);outline.setAttributeNS(null,\"width\",iconWidth);outline.setAttributeNS(null,\"height\",2*fillHeight);outline.setAttributeNS(null,\"class\",\"vis-outline\");DOMutil.drawPoint(x+.5*iconWidth,y,getGroupTemplate(group),framework.svgElements,framework.svg)};function getGroupTemplate(group,callbackResult){callbackResult=typeof callbackResult===\"undefined\"?{}:callbackResult;return{style:callbackResult.style||group.options.drawPoints.style,styles:callbackResult.styles||group.options.drawPoints.styles,size:callbackResult.size||group.options.drawPoints.size,className:callbackResult.className||group.className}}function getCallback(framework,group){var callback=undefined;if(framework.options&&framework.options.drawPoints&&framework.options.drawPoints.onRender&&typeof framework.options.drawPoints.onRender==\"function\"){callback=framework.options.drawPoints.onRender}if(group.group.options&&group.group.options.drawPoints&&group.group.options.drawPoints.onRender&&typeof group.group.options.drawPoints.onRender==\"function\"){callback=group.group.options.drawPoints.onRender}return callback}module.exports=Points},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CircleImageBase=function(_NodeBase){(0,_inherits3[\"default\"])(CircleImageBase,_NodeBase);function CircleImageBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,CircleImageBase);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(CircleImageBase.__proto__||(0,_getPrototypeOf2[\"default\"])(CircleImageBase)).call(this,options,body,labelModule));_this.labelOffset=0;_this.selected=false;return _this}(0,_createClass3[\"default\"])(CircleImageBase,[{key:\"setOptions\",value:function setOptions(options,imageObj,imageObjAlt){this.options=options;if(!(imageObj===undefined&&imageObjAlt===undefined)){this.setImages(imageObj,imageObjAlt)}}},{key:\"setImages\",value:function setImages(imageObj,imageObjAlt){if(imageObjAlt&&this.selected){this.imageObj=imageObjAlt;this.imageObjAlt=imageObj}else{this.imageObj=imageObj;this.imageObjAlt=imageObjAlt}}},{key:\"switchImages\",value:function switchImages(selected){var selection_changed=selected&&!this.selected||!selected&&this.selected;this.selected=selected;if(this.imageObjAlt!==undefined&&selection_changed){var imageTmp=this.imageObj;this.imageObj=this.imageObjAlt;this.imageObjAlt=imageTmp}}},{key:\"_resizeImage\",value:function _resizeImage(){var width,height;if(this.options.shapeProperties.useImageSize===false){var ratio_width=1;var ratio_height=1;if(this.imageObj.width&&this.imageObj.height){if(this.imageObj.width>this.imageObj.height){ratio_width=this.imageObj.width/this.imageObj.height}else{ratio_height=this.imageObj.height/this.imageObj.width}}width=this.options.size*2*ratio_width;height=this.options.size*2*ratio_height}else{width=this.imageObj.width;height=this.imageObj.height}this.width=width;this.height=height;this.radius=.5*this.width}},{key:\"_drawRawCircle\",value:function _drawRawCircle(ctx,x,y,values){this.initContextForDraw(ctx,values);ctx.circle(x,y,values.size);this.performFill(ctx,values)}},{key:\"_drawImageAtPosition\",value:function _drawImageAtPosition(ctx,values){if(this.imageObj.width!=0){ctx.globalAlpha=1;this.enableShadow(ctx,values);var factor=1;if(this.options.shapeProperties.interpolation===true){factor=this.imageObj.width/this.width/this.body.view.scale}this.imageObj.drawImageAtPosition(ctx,factor,this.left,this.top,this.width,this.height);this.disableShadow(ctx,values)}}},{key:\"_drawImageLabel\",value:function _drawImageLabel(ctx,x,y,selected,hover){var yLabel;var offset=0;if(this.height!==undefined){offset=this.height*.5;var labelDimensions=this.labelModule.getTextSize(ctx,selected,hover);if(labelDimensions.lineCount>=1){offset+=labelDimensions.height/2}}yLabel=y+offset;if(this.options.label){this.labelOffset=offset}this.labelModule.draw(ctx,x,yLabel,selected,hover,\"hanging\")}}]);return CircleImageBase}(_NodeBase3[\"default\"]);exports[\"default\"]=CircleImageBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Label=__webpack_require__(117)[\"default\"];var ComponentUtil=__webpack_require__(48)[\"default\"];var CubicBezierEdge=__webpack_require__(215)[\"default\"];var BezierEdgeDynamic=__webpack_require__(217)[\"default\"];var BezierEdgeStatic=__webpack_require__(218)[\"default\"];var StraightEdge=__webpack_require__(219)[\"default\"];var Edge=function(){function Edge(options,body,globalOptions,defaultOptions){(0,_classCallCheck3[\"default\"])(this,Edge);if(body===undefined){throw new Error(\"No body provided\")}this.options=util.bridgeObject(globalOptions);this.globalOptions=globalOptions;this.defaultOptions=defaultOptions;this.body=body;this.id=undefined;this.fromId=undefined;this.toId=undefined;this.selected=false;this.hover=false;this.labelDirty=true;this.baseWidth=this.options.width;this.baseFontSize=this.options.font.size;this.from=undefined;this.to=undefined;this.edgeType=undefined;this.connected=false;this.labelModule=new Label(this.body,this.options,true);this.setOptions(options)}(0,_createClass3[\"default\"])(Edge,[{key:\"setOptions\",value:function setOptions(options){if(!options){return}Edge.parseOptions(this.options,options,true,this.globalOptions);if(options.id!==undefined){this.id=options.id}if(options.from!==undefined){this.fromId=options.from}if(options.to!==undefined){this.toId=options.to}if(options.title!==undefined){this.title=options.title}if(options.value!==undefined){options.value=parseFloat(options.value)}var pile=[options,this.options,this.defaultOptions];this.chooser=ComponentUtil.choosify(\"edge\",pile);this.updateLabelModule(options);var dataChanged=this.updateEdgeType();this._setInteractionWidths();this.connect();if(options.hidden!==undefined||options.physics!==undefined){dataChanged=true}return dataChanged}},{key:\"getFormattingValues\",value:function getFormattingValues(){var toArrow=this.options.arrows.to===true||this.options.arrows.to.enabled===true;var fromArrow=this.options.arrows.from===true||this.options.arrows.from.enabled===true;var middleArrow=this.options.arrows.middle===true||this.options.arrows.middle.enabled===true;var inheritsColor=this.options.color.inherit;var values={toArrow:toArrow,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,middleArrow:middleArrow,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,fromArrow:fromArrow,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,arrowStrikethrough:this.options.arrowStrikethrough,color:inheritsColor?undefined:this.options.color.color,inheritsColor:inheritsColor,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width};if(this.selected||this.hover){if(this.chooser===true){if(this.selected){var selectedWidth=this.options.selectionWidth;if(typeof selectedWidth===\"function\"){values.width=selectedWidth(values.width)}else if(typeof selectedWidth===\"number\"){values.width+=selectedWidth}values.width=Math.max(values.width,.3/this.body.view.scale);values.color=this.options.color.highlight;values.shadow=this.options.shadow.enabled}else if(this.hover){var hoverWidth=this.options.hoverWidth;if(typeof hoverWidth===\"function\"){values.width=hoverWidth(values.width)}else if(typeof hoverWidth===\"number\"){values.width+=hoverWidth}values.width=Math.max(values.width,.3/this.body.view.scale);values.color=this.options.color.hover;values.shadow=this.options.shadow.enabled}}else if(typeof this.chooser===\"function\"){this.chooser(values,this.options.id,this.selected,this.hover);if(values.color!==undefined){values.inheritsColor=false}if(values.shadow===false){if(values.shadowColor!==this.options.shadow.color||values.shadowSize!==this.options.shadow.size||values.shadowX!==this.options.shadow.x||values.shadowY!==this.options.shadow.y){values.shadow=true}}}}else{values.shadow=this.options.shadow.enabled;values.width=Math.max(values.width,.3/this.body.view.scale)}return values}},{key:\"updateLabelModule\",value:function updateLabelModule(options){var pile=[options,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,pile);if(this.labelModule.baseSize!==undefined){this.baseFontSize=this.labelModule.baseSize}}},{key:\"updateEdgeType\",value:function updateEdgeType(){var smooth=this.options.smooth;var dataChanged=false;var changeInType=true;if(this.edgeType!==undefined){if(this.edgeType instanceof BezierEdgeDynamic&&smooth.enabled===true&&smooth.type===\"dynamic\"||this.edgeType instanceof CubicBezierEdge&&smooth.enabled===true&&smooth.type===\"cubicBezier\"||this.edgeType instanceof BezierEdgeStatic&&smooth.enabled===true&&smooth.type!==\"dynamic\"&&smooth.type!==\"cubicBezier\"||this.edgeType instanceof StraightEdge&&smooth.type.enabled===false){changeInType=false}if(changeInType===true){dataChanged=this.cleanup()}}if(changeInType===true){if(smooth.enabled===true){if(smooth.type===\"dynamic\"){dataChanged=true;this.edgeType=new BezierEdgeDynamic(this.options,this.body,this.labelModule)}else if(smooth.type===\"cubicBezier\"){this.edgeType=new CubicBezierEdge(this.options,this.body,this.labelModule)}else{this.edgeType=new BezierEdgeStatic(this.options,this.body,this.labelModule)}}else{this.edgeType=new StraightEdge(this.options,this.body,this.labelModule)}}else{this.edgeType.setOptions(this.options)}return dataChanged}},{key:\"connect\",value:function connect(){this.disconnect();this.from=this.body.nodes[this.fromId]||undefined;this.to=this.body.nodes[this.toId]||undefined;this.connected=this.from!==undefined&&this.to!==undefined;if(this.connected===true){this.from.attachEdge(this);this.to.attachEdge(this)}else{if(this.from){this.from.detachEdge(this)}if(this.to){this.to.detachEdge(this)}}this.edgeType.connect()}},{key:\"disconnect\",value:function disconnect(){if(this.from){this.from.detachEdge(this);this.from=undefined}if(this.to){this.to.detachEdge(this);this.to=undefined}this.connected=false}},{key:\"getTitle\",value:function getTitle(){return this.title}},{key:\"isSelected\",value:function isSelected(){return this.selected}},{key:\"getValue\",value:function getValue(){return this.options.value}},{key:\"setValueRange\",value:function setValueRange(min,max,total){if(this.options.value!==undefined){var scale=this.options.scaling.customScalingFunction(min,max,total,this.options.value);var widthDiff=this.options.scaling.max-this.options.scaling.min;if(this.options.scaling.label.enabled===true){var fontDiff=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+scale*fontDiff}this.options.width=this.options.scaling.min+scale*widthDiff}else{this.options.width=this.baseWidth;this.options.font.size=this.baseFontSize}this._setInteractionWidths();this.updateLabelModule()}},{key:\"_setInteractionWidths\",value:function _setInteractionWidths(){if(typeof this.options.hoverWidth===\"function\"){this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width)}else{this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width}if(typeof this.options.selectionWidth===\"function\"){this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width)}else{this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}}},{key:\"draw\",value:function draw(ctx){var values=this.getFormattingValues();if(values.hidden){return}var viaNode=this.edgeType.getViaNode();var arrowData={};this.edgeType.fromPoint=this.edgeType.from;this.edgeType.toPoint=this.edgeType.to;if(values.fromArrow){arrowData.from=this.edgeType.getArrowData(ctx,\"from\",viaNode,this.selected,this.hover,values);if(values.arrowStrikethrough===false)this.edgeType.fromPoint=arrowData.from.core}if(values.toArrow){arrowData.to=this.edgeType.getArrowData(ctx,\"to\",viaNode,this.selected,this.hover,values);if(values.arrowStrikethrough===false)this.edgeType.toPoint=arrowData.to.core}if(values.middleArrow){arrowData.middle=this.edgeType.getArrowData(ctx,\"middle\",viaNode,this.selected,this.hover,values)}this.edgeType.drawLine(ctx,values,this.selected,this.hover,viaNode);this.drawArrows(ctx,arrowData,values);this.drawLabel(ctx,viaNode)}},{key:\"drawArrows\",value:function drawArrows(ctx,arrowData,values){if(values.fromArrow){this.edgeType.drawArrowHead(ctx,values,this.selected,this.hover,arrowData.from)}if(values.middleArrow){this.edgeType.drawArrowHead(ctx,values,this.selected,this.hover,arrowData.middle)}if(values.toArrow){this.edgeType.drawArrowHead(ctx,values,this.selected,this.hover,arrowData.to)}}},{key:\"drawLabel\",value:function drawLabel(ctx,viaNode){if(this.options.label!==undefined){var node1=this.from;var node2=this.to;if(this.labelModule.differentState(this.selected,this.hover)){this.labelModule.getTextSize(ctx,this.selected,this.hover)}if(node1.id!=node2.id){this.labelModule.pointToSelf=false;var point=this.edgeType.getPoint(.5,viaNode);ctx.save();var rotationPoint=this._getRotation(ctx);if(rotationPoint.angle!=0){ctx.translate(rotationPoint.x,rotationPoint.y);ctx.rotate(rotationPoint.angle)}this.labelModule.draw(ctx,point.x,point.y,this.selected,this.hover);ctx.restore()}else{this.labelModule.pointToSelf=true;var x,y;var radius=this.options.selfReferenceSize;if(node1.shape.width>node1.shape.height){x=node1.x+node1.shape.width*.5;y=node1.y-radius}else{x=node1.x+radius;y=node1.y-node1.shape.height*.5}point=this._pointOnCircle(x,y,radius,.125);this.labelModule.draw(ctx,point.x,point.y,this.selected,this.hover)}}}},{key:\"getItemsOnPoint\",value:function getItemsOnPoint(point){var ret=[];if(this.labelModule.visible()){var rotationPoint=this._getRotation();if(ComponentUtil.pointInRect(this.labelModule.getSize(),point,rotationPoint)){ret.push({edgeId:this.id,labelId:0})}}var obj={left:point.x,top:point.y};if(this.isOverlappingWith(obj)){ret.push({edgeId:this.id})}return ret}},{key:\"isOverlappingWith\",value:function isOverlappingWith(obj){if(this.connected){var distMax=10;var xFrom=this.from.x;var yFrom=this.from.y;var xTo=this.to.x;var yTo=this.to.y;var xObj=obj.left;var yObj=obj.top;var dist=this.edgeType.getDistanceToEdge(xFrom,yFrom,xTo,yTo,xObj,yObj);return dist<distMax}else{return false}}},{key:\"_getRotation\",value:function _getRotation(ctx){var viaNode=this.edgeType.getViaNode();var point=this.edgeType.getPoint(.5,viaNode);if(ctx!==undefined){this.labelModule.calculateLabelSize(ctx,this.selected,this.hover,point.x,point.y)}var ret={x:point.x,y:this.labelModule.size.yLine,angle:0};if(!this.labelModule.visible()){return ret}if(this.options.font.align===\"horizontal\"){return ret}var dy=this.from.y-this.to.y;var dx=this.from.x-this.to.x;var angle=Math.atan2(dy,dx);if(angle<-1&&dx<0||angle>0&&dx<0){angle+=Math.PI}ret.angle=angle;return ret}},{key:\"_pointOnCircle\",value:function _pointOnCircle(x,y,radius,percentage){var angle=percentage*2*Math.PI;return{x:x+radius*Math.cos(angle),y:y-radius*Math.sin(angle)}}},{key:\"select\",value:function select(){this.selected=true}},{key:\"unselect\",value:function unselect(){this.selected=false}},{key:\"cleanup\",value:function cleanup(){return this.edgeType.cleanup()}},{key:\"remove\",value:function remove(){this.cleanup();this.disconnect();delete this.body.edges[this.id]}},{key:\"endPointsValid\",value:function endPointsValid(){return this.body.nodes[this.fromId]!==undefined&&this.body.nodes[this.toId]!==undefined}}],[{key:\"parseOptions\",value:function parseOptions(parentOptions,newOptions){var allowDeletion=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var globalOptions=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var copyFromGlobals=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;var fields=[\"arrowStrikethrough\",\"id\",\"from\",\"hidden\",\"hoverWidth\",\"labelHighlightBold\",\"length\",\"line\",\"opacity\",\"physics\",\"scaling\",\"selectionWidth\",\"selfReferenceSize\",\"to\",\"title\",\"value\",\"width\",\"font\",\"chosen\",\"widthConstraint\"];util.selectiveDeepExtend(fields,parentOptions,newOptions,allowDeletion);if(ComponentUtil.isValidLabel(newOptions.label)){parentOptions.label=newOptions.label}else{parentOptions.label=undefined}util.mergeOptions(parentOptions,newOptions,\"smooth\",globalOptions);util.mergeOptions(parentOptions,newOptions,\"shadow\",globalOptions);if(newOptions.dashes!==undefined&&newOptions.dashes!==null){parentOptions.dashes=newOptions.dashes}else if(allowDeletion===true&&newOptions.dashes===null){parentOptions.dashes=(0,_create2[\"default\"])(globalOptions.dashes)}if(newOptions.scaling!==undefined&&newOptions.scaling!==null){if(newOptions.scaling.min!==undefined){parentOptions.scaling.min=newOptions.scaling.min}if(newOptions.scaling.max!==undefined){parentOptions.scaling.max=newOptions.scaling.max}util.mergeOptions(parentOptions.scaling,newOptions.scaling,\"label\",globalOptions.scaling)}else if(allowDeletion===true&&newOptions.scaling===null){parentOptions.scaling=(0,_create2[\"default\"])(globalOptions.scaling)}if(newOptions.arrows!==undefined&&newOptions.arrows!==null){if(typeof newOptions.arrows===\"string\"){var arrows=newOptions.arrows.toLowerCase();parentOptions.arrows.to.enabled=arrows.indexOf(\"to\")!=-1;parentOptions.arrows.middle.enabled=arrows.indexOf(\"middle\")!=-1;parentOptions.arrows.from.enabled=arrows.indexOf(\"from\")!=-1}else if((0,_typeof3[\"default\"])(newOptions.arrows)===\"object\"){util.mergeOptions(parentOptions.arrows,newOptions.arrows,\"to\",globalOptions.arrows);util.mergeOptions(parentOptions.arrows,newOptions.arrows,\"middle\",globalOptions.arrows);util.mergeOptions(parentOptions.arrows,newOptions.arrows,\"from\",globalOptions.arrows)}else{throw new Error(\"The arrow newOptions can only be an object or a string. Refer to the documentation. You used:\"+(0,_stringify2[\"default\"])(newOptions.arrows))}}else if(allowDeletion===true&&newOptions.arrows===null){parentOptions.arrows=(0,_create2[\"default\"])(globalOptions.arrows)}if(newOptions.color!==undefined&&newOptions.color!==null){var fromColor=newOptions.color;var toColor=parentOptions.color;if(copyFromGlobals){util.deepExtend(toColor,globalOptions.color,false,allowDeletion)}else{for(var i in toColor){if(toColor.hasOwnProperty(i)){delete toColor[i]}}}if(util.isString(toColor)){toColor.color=toColor;toColor.highlight=toColor;toColor.hover=toColor;toColor.inherit=false;if(fromColor.opacity===undefined){toColor.opacity=1}}else{var colorsDefined=false;if(fromColor.color!==undefined){toColor.color=fromColor.color;colorsDefined=true}if(fromColor.highlight!==undefined){toColor.highlight=fromColor.highlight;colorsDefined=true}if(fromColor.hover!==undefined){toColor.hover=fromColor.hover;colorsDefined=true}if(fromColor.inherit!==undefined){toColor.inherit=fromColor.inherit}if(fromColor.opacity!==undefined){toColor.opacity=Math.min(1,Math.max(0,fromColor.opacity))}if(colorsDefined===true){toColor.inherit=false}else{if(toColor.inherit===undefined){toColor.inherit=\"from\"}}}}else if(allowDeletion===true&&newOptions.color===null){parentOptions.color=util.bridgeObject(globalOptions.color)}if(allowDeletion===true&&newOptions.font===null){parentOptions.font=util.bridgeObject(globalOptions.font)}}}]);return Edge}();exports[\"default\"]=Edge},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _EdgeBase2=__webpack_require__(118);var _EdgeBase3=_interopRequireDefault(_EdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BezierEdgeBase=function(_EdgeBase){(0,_inherits3[\"default\"])(BezierEdgeBase,_EdgeBase);function BezierEdgeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,BezierEdgeBase);return(0,_possibleConstructorReturn3[\"default\"])(this,(BezierEdgeBase.__proto__||(0,_getPrototypeOf2[\"default\"])(BezierEdgeBase)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(BezierEdgeBase,[{key:\"_findBorderPositionBezier\",value:function _findBorderPositionBezier(nearNode,ctx){var viaNode=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this._getViaCoordinates();var maxIterations=10;var iteration=0;var low=0;var high=1;var pos,angle,distanceToBorder,distanceToPoint,difference;var threshold=.2;var node=this.to;var from=false;if(nearNode.id===this.from.id){node=this.from;from=true}while(low<=high&&iteration<maxIterations){var middle=(low+high)*.5;pos=this.getPoint(middle,viaNode);angle=Math.atan2(node.y-pos.y,node.x-pos.x);distanceToBorder=node.distanceToBorder(ctx,angle);distanceToPoint=Math.sqrt(Math.pow(pos.x-node.x,2)+Math.pow(pos.y-node.y,2));difference=distanceToBorder-distanceToPoint;if(Math.abs(difference)<threshold){break}else if(difference<0){if(from===false){low=middle}else{high=middle}}else{if(from===false){high=middle}else{low=middle}}iteration++}pos.t=middle;return pos}},{key:\"_getDistanceToBezierEdge\",value:function _getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,via){var minDistance=1e9;var distance=void 0;var i=void 0,t=void 0,x=void 0,y=void 0;var lastX=x1;var lastY=y1;for(i=1;i<10;i++){t=.1*i;x=Math.pow(1-t,2)*x1+2*t*(1-t)*via.x+Math.pow(t,2)*x2;y=Math.pow(1-t,2)*y1+2*t*(1-t)*via.y+Math.pow(t,2)*y2;if(i>0){distance=this._getDistanceToLine(lastX,lastY,x,y,x3,y3);minDistance=distance<minDistance?distance:minDistance}lastX=x;lastY=y}return minDistance}},{key:\"_bezierCurve\",value:function _bezierCurve(ctx,values,viaNode1,viaNode2){var hasNode1=viaNode1!==undefined&&viaNode1.x!==undefined;var hasNode2=viaNode2!==undefined&&viaNode2.x!==undefined;ctx.beginPath();ctx.moveTo(this.fromPoint.x,this.fromPoint.y);if(hasNode1&&hasNode2){ctx.bezierCurveTo(viaNode1.x,viaNode1.y,viaNode2.x,viaNode2.y,this.toPoint.x,this.toPoint.y)}else if(hasNode1){ctx.quadraticCurveTo(viaNode1.x,viaNode1.y,this.toPoint.x,this.toPoint.y)}else{ctx.lineTo(this.toPoint.x,this.toPoint.y)}this.enableShadow(ctx,values);ctx.stroke();this.disableShadow(ctx,values)}},{key:\"getViaNode\",value:function getViaNode(){return this._getViaCoordinates()}}]);return BezierEdgeBase}(_EdgeBase3[\"default\"]);exports[\"default\"]=BezierEdgeBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NetworkUtil=function(){function NetworkUtil(){(0,_classCallCheck3[\"default\"])(this,NetworkUtil)}(0,_createClass3[\"default\"])(NetworkUtil,null,[{key:\"getRange\",value:function getRange(allNodes){var specificNodes=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var minY=1e9,maxY=-1e9,minX=1e9,maxX=-1e9,node;if(specificNodes.length>0){for(var i=0;i<specificNodes.length;i++){node=allNodes[specificNodes[i]];if(minX>node.shape.boundingBox.left){minX=node.shape.boundingBox.left}if(maxX<node.shape.boundingBox.right){maxX=node.shape.boundingBox.right}if(minY>node.shape.boundingBox.top){minY=node.shape.boundingBox.top}if(maxY<node.shape.boundingBox.bottom){maxY=node.shape.boundingBox.bottom}}}if(minX===1e9&&maxX===-1e9&&minY===1e9&&maxY===-1e9){minY=0,maxY=0,minX=0,maxX=0}return{minX:minX,maxX:maxX,minY:minY,maxY:maxY}}},{key:\"getRangeCore\",value:function getRangeCore(allNodes){var specificNodes=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var minY=1e9,maxY=-1e9,minX=1e9,maxX=-1e9,node;if(specificNodes.length>0){for(var i=0;i<specificNodes.length;i++){node=allNodes[specificNodes[i]];if(minX>node.x){minX=node.x}if(maxX<node.x){maxX=node.x}if(minY>node.y){minY=node.y}if(maxY<node.y){maxY=node.y}}}if(minX===1e9&&maxX===-1e9&&minY===1e9&&maxY===-1e9){minY=0,maxY=0,minX=0,maxX=0}return{minX:minX,maxX:maxX,minY:minY,maxY:maxY}}},{key:\"findCenter\",value:function findCenter(range){return{x:.5*(range.maxX+range.minX),y:.5*(range.maxY+range.minY)}}},{key:\"cloneOptions\",value:function cloneOptions(item,type){var clonedOptions={};if(type===undefined||type===\"node\"){util.deepExtend(clonedOptions,item.options,true);clonedOptions.x=item.x;clonedOptions.y=item.y;clonedOptions.amountOfConnections=item.edges.length}else{util.deepExtend(clonedOptions,item.options,true)}return clonedOptions}}]);return NetworkUtil}();exports[\"default\"]=NetworkUtil},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(124),__esModule:true}},function(module,exports,__webpack_require__){var cof=__webpack_require__(50);module.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(it){return cof(it)==\"String\"?it.split(\"\"):Object(it)}},function(module,exports,__webpack_require__){\"use strict\";var LIBRARY=__webpack_require__(52);var $export=__webpack_require__(17);var redefine=__webpack_require__(83);var hide=__webpack_require__(26);var has=__webpack_require__(22);var Iterators=__webpack_require__(31);var $iterCreate=__webpack_require__(129);var setToStringTag=__webpack_require__(59);var getPrototypeOf=__webpack_require__(85);var ITERATOR=__webpack_require__(13)(\"iterator\");var BUGGY=!([].keys&&\"next\"in[].keys())\n;var FF_ITERATOR=\"@@iterator\";var KEYS=\"keys\";var VALUES=\"values\";var returnThis=function(){return this};module.exports=function(Base,NAME,Constructor,next,DEFAULT,IS_SET,FORCED){$iterCreate(Constructor,NAME,next);var getMethod=function(kind){if(!BUGGY&&kind in proto)return proto[kind];switch(kind){case KEYS:return function keys(){return new Constructor(this,kind)};case VALUES:return function values(){return new Constructor(this,kind)}}return function entries(){return new Constructor(this,kind)}};var TAG=NAME+\" Iterator\";var DEF_VALUES=DEFAULT==VALUES;var VALUES_BUG=false;var proto=Base.prototype;var $native=proto[ITERATOR]||proto[FF_ITERATOR]||DEFAULT&&proto[DEFAULT];var $default=$native||getMethod(DEFAULT);var $entries=DEFAULT?!DEF_VALUES?$default:getMethod(\"entries\"):undefined;var $anyNative=NAME==\"Array\"?proto.entries||$native:$native;var methods,key,IteratorPrototype;if($anyNative){IteratorPrototype=getPrototypeOf($anyNative.call(new Base));if(IteratorPrototype!==Object.prototype&&IteratorPrototype.next){setToStringTag(IteratorPrototype,TAG,true);if(!LIBRARY&&!has(IteratorPrototype,ITERATOR))hide(IteratorPrototype,ITERATOR,returnThis)}}if(DEF_VALUES&&$native&&$native.name!==VALUES){VALUES_BUG=true;$default=function values(){return $native.call(this)}}if((!LIBRARY||FORCED)&&(BUGGY||VALUES_BUG||!proto[ITERATOR])){hide(proto,ITERATOR,$default)}Iterators[NAME]=$default;Iterators[TAG]=returnThis;if(DEFAULT){methods={values:DEF_VALUES?$default:getMethod(VALUES),keys:IS_SET?$default:getMethod(KEYS),entries:$entries};if(FORCED)for(key in methods){if(!(key in proto))redefine(proto,key,methods[key])}else $export($export.P+$export.F*(BUGGY||VALUES_BUG),NAME,methods)}return methods}},function(module,exports,__webpack_require__){var aFunction=__webpack_require__(128);module.exports=function(fn,that,length){aFunction(fn);if(that===undefined)return fn;switch(length){case 1:return function(a){return fn.call(that,a)};case 2:return function(a,b){return fn.call(that,a,b)};case 3:return function(a,b,c){return fn.call(that,a,b,c)}}return function(){return fn.apply(that,arguments)}}},function(module,exports,__webpack_require__){module.exports=!__webpack_require__(21)&&!__webpack_require__(28)(function(){return Object.defineProperty(__webpack_require__(82)(\"div\"),\"a\",{get:function(){return 7}}).a!=7})},function(module,exports,__webpack_require__){var isObject=__webpack_require__(32);var document=__webpack_require__(18).document;var is=isObject(document)&&isObject(document.createElement);module.exports=function(it){return is?document.createElement(it):{}}},function(module,exports,__webpack_require__){module.exports=__webpack_require__(26)},function(module,exports,__webpack_require__){var has=__webpack_require__(22);var toIObject=__webpack_require__(25);var arrayIndexOf=__webpack_require__(131)(false);var IE_PROTO=__webpack_require__(56)(\"IE_PROTO\");module.exports=function(object,names){var O=toIObject(object);var i=0;var result=[];var key;for(key in O)if(key!=IE_PROTO)has(O,key)&&result.push(key);while(names.length>i)if(has(O,key=names[i++])){~arrayIndexOf(result,key)||result.push(key)}return result}},function(module,exports,__webpack_require__){var has=__webpack_require__(22);var toObject=__webpack_require__(41);var IE_PROTO=__webpack_require__(56)(\"IE_PROTO\");var ObjectProto=Object.prototype;module.exports=Object.getPrototypeOf||function(O){O=toObject(O);if(has(O,IE_PROTO))return O[IE_PROTO];if(typeof O.constructor==\"function\"&&O instanceof O.constructor){return O.constructor.prototype}return O instanceof Object?ObjectProto:null}},function(module,exports,__webpack_require__){var cof=__webpack_require__(50);var TAG=__webpack_require__(13)(\"toStringTag\");var ARG=cof(function(){return arguments}())==\"Arguments\";var tryGet=function(it,key){try{return it[key]}catch(e){}};module.exports=function(it){var O,T,B;return it===undefined?\"Undefined\":it===null?\"Null\":typeof(T=tryGet(O=Object(it),TAG))==\"string\"?T:ARG?cof(O):(B=cof(O))==\"Object\"&&typeof O.callee==\"function\"?\"Arguments\":B}},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);var core=__webpack_require__(7);var fails=__webpack_require__(28);module.exports=function(KEY,exec){var fn=(core.Object||{})[KEY]||Object[KEY];var exp={};exp[KEY]=exec(fn);$export($export.S+$export.F*fails(function(){fn(1)}),\"Object\",exp)}},function(module,exports,__webpack_require__){var $keys=__webpack_require__(84);var hiddenKeys=__webpack_require__(58).concat(\"length\",\"prototype\");exports.f=Object.getOwnPropertyNames||function getOwnPropertyNames(O){return $keys(O,hiddenKeys)}},function(module,exports,__webpack_require__){var pIE=__webpack_require__(42);var createDesc=__webpack_require__(39);var toIObject=__webpack_require__(25);var toPrimitive=__webpack_require__(53);var has=__webpack_require__(22);var IE8_DOM_DEFINE=__webpack_require__(81);var gOPD=Object.getOwnPropertyDescriptor;exports.f=__webpack_require__(21)?gOPD:function getOwnPropertyDescriptor(O,P){O=toIObject(O);P=toPrimitive(P,true);if(IE8_DOM_DEFINE)try{return gOPD(O,P)}catch(e){}if(has(O,P))return createDesc(!pIE.f.call(O,P),O[P])}},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(162),__esModule:true}},function(module,exports,__webpack_require__){\"use strict\";function Point2d(x,y){this.x=x!==undefined?x:0;this.y=y!==undefined?y:0}module.exports=Point2d},function(module,exports,__webpack_require__){\"use strict\";var util=__webpack_require__(2);function Slider(container,options){if(container===undefined){throw new Error(\"No container element defined\")}this.container=container;this.visible=options&&options.visible!=undefined?options.visible:true;if(this.visible){this.frame=document.createElement(\"DIV\");this.frame.style.width=\"100%\";this.frame.style.position=\"relative\";this.container.appendChild(this.frame);this.frame.prev=document.createElement(\"INPUT\");this.frame.prev.type=\"BUTTON\";this.frame.prev.value=\"Prev\";this.frame.appendChild(this.frame.prev);this.frame.play=document.createElement(\"INPUT\");this.frame.play.type=\"BUTTON\";this.frame.play.value=\"Play\";this.frame.appendChild(this.frame.play);this.frame.next=document.createElement(\"INPUT\");this.frame.next.type=\"BUTTON\";this.frame.next.value=\"Next\";this.frame.appendChild(this.frame.next);this.frame.bar=document.createElement(\"INPUT\");this.frame.bar.type=\"BUTTON\";this.frame.bar.style.position=\"absolute\";this.frame.bar.style.border=\"1px solid red\";this.frame.bar.style.width=\"100px\";this.frame.bar.style.height=\"6px\";this.frame.bar.style.borderRadius=\"2px\";this.frame.bar.style.MozBorderRadius=\"2px\";this.frame.bar.style.border=\"1px solid #7F7F7F\";this.frame.bar.style.backgroundColor=\"#E5E5E5\";this.frame.appendChild(this.frame.bar);this.frame.slide=document.createElement(\"INPUT\");this.frame.slide.type=\"BUTTON\";this.frame.slide.style.margin=\"0px\";this.frame.slide.value=\" \";this.frame.slide.style.position=\"relative\";this.frame.slide.style.left=\"-100px\";this.frame.appendChild(this.frame.slide);var me=this;this.frame.slide.onmousedown=function(event){me._onMouseDown(event)};this.frame.prev.onclick=function(event){me.prev(event)};this.frame.play.onclick=function(event){me.togglePlay(event)};this.frame.next.onclick=function(event){me.next(event)}}this.onChangeCallback=undefined;this.values=[];this.index=undefined;this.playTimeout=undefined;this.playInterval=1e3;this.playLoop=true}Slider.prototype.prev=function(){var index=this.getIndex();if(index>0){index--;this.setIndex(index)}};Slider.prototype.next=function(){var index=this.getIndex();if(index<this.values.length-1){index++;this.setIndex(index)}};Slider.prototype.playNext=function(){var start=new Date;var index=this.getIndex();if(index<this.values.length-1){index++;this.setIndex(index)}else if(this.playLoop){index=0;this.setIndex(index)}var end=new Date;var diff=end-start;var interval=Math.max(this.playInterval-diff,0);var me=this;this.playTimeout=setTimeout(function(){me.playNext()},interval)};Slider.prototype.togglePlay=function(){if(this.playTimeout===undefined){this.play()}else{this.stop()}};Slider.prototype.play=function(){if(this.playTimeout)return;this.playNext();if(this.frame){this.frame.play.value=\"Stop\"}};Slider.prototype.stop=function(){clearInterval(this.playTimeout);this.playTimeout=undefined;if(this.frame){this.frame.play.value=\"Play\"}};Slider.prototype.setOnChangeCallback=function(callback){this.onChangeCallback=callback};Slider.prototype.setPlayInterval=function(interval){this.playInterval=interval};Slider.prototype.getPlayInterval=function(){return this.playInterval};Slider.prototype.setPlayLoop=function(doLoop){this.playLoop=doLoop};Slider.prototype.onChange=function(){if(this.onChangeCallback!==undefined){this.onChangeCallback()}};Slider.prototype.redraw=function(){if(this.frame){this.frame.bar.style.top=this.frame.clientHeight/2-this.frame.bar.offsetHeight/2+\"px\";this.frame.bar.style.width=this.frame.clientWidth-this.frame.prev.clientWidth-this.frame.play.clientWidth-this.frame.next.clientWidth-30+\"px\";var left=this.indexToLeft(this.index);this.frame.slide.style.left=left+\"px\"}};Slider.prototype.setValues=function(values){this.values=values;if(this.values.length>0)this.setIndex(0);else this.index=undefined};Slider.prototype.setIndex=function(index){if(index<this.values.length){this.index=index;this.redraw();this.onChange()}else{throw new Error(\"Index out of range\")}};Slider.prototype.getIndex=function(){return this.index};Slider.prototype.get=function(){return this.values[this.index]};Slider.prototype._onMouseDown=function(event){var leftButtonDown=event.which?event.which===1:event.button===1;if(!leftButtonDown)return;this.startClientX=event.clientX;this.startSlideX=parseFloat(this.frame.slide.style.left);this.frame.style.cursor=\"move\";var me=this;this.onmousemove=function(event){me._onMouseMove(event)};this.onmouseup=function(event){me._onMouseUp(event)};util.addEventListener(document,\"mousemove\",this.onmousemove);util.addEventListener(document,\"mouseup\",this.onmouseup);util.preventDefault(event)};Slider.prototype.leftToIndex=function(left){var width=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10;var x=left-3;var index=Math.round(x/width*(this.values.length-1));if(index<0)index=0;if(index>this.values.length-1)index=this.values.length-1;return index};Slider.prototype.indexToLeft=function(index){var width=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10;var x=index/(this.values.length-1)*width;var left=x+3;return left};Slider.prototype._onMouseMove=function(event){var diff=event.clientX-this.startClientX;var x=this.startSlideX+diff;var index=this.leftToIndex(x);this.setIndex(index);util.preventDefault()};Slider.prototype._onMouseUp=function(event){this.frame.style.cursor=\"auto\";util.removeEventListener(document,\"mousemove\",this.onmousemove);util.removeEventListener(document,\"mouseup\",this.onmouseup);util.preventDefault()};module.exports=Slider},function(module,exports,__webpack_require__){\"use strict\";function StepNumber(start,end,step,prettyStep){this._start=0;this._end=0;this._step=1;this.prettyStep=true;this.precision=5;this._current=0;this.setRange(start,end,step,prettyStep)}StepNumber.prototype.isNumeric=function(n){return!isNaN(parseFloat(n))&&isFinite(n)};StepNumber.prototype.setRange=function(start,end,step,prettyStep){if(!this.isNumeric(start)){throw new Error(\"Parameter 'start' is not numeric; value: \"+start)}if(!this.isNumeric(end)){throw new Error(\"Parameter 'end' is not numeric; value: \"+start)}if(!this.isNumeric(step)){throw new Error(\"Parameter 'step' is not numeric; value: \"+start)}this._start=start?start:0;this._end=end?end:0;this.setStep(step,prettyStep)};StepNumber.prototype.setStep=function(step,prettyStep){if(step===undefined||step<=0)return;if(prettyStep!==undefined)this.prettyStep=prettyStep;if(this.prettyStep===true)this._step=StepNumber.calculatePrettyStep(step);else this._step=step};StepNumber.calculatePrettyStep=function(step){var log10=function log10(x){return Math.log(x)/Math.LN10};var step1=Math.pow(10,Math.round(log10(step))),step2=2*Math.pow(10,Math.round(log10(step/2))),step5=5*Math.pow(10,Math.round(log10(step/5)));var prettyStep=step1;if(Math.abs(step2-step)<=Math.abs(prettyStep-step))prettyStep=step2;if(Math.abs(step5-step)<=Math.abs(prettyStep-step))prettyStep=step5;if(prettyStep<=0){prettyStep=1}return prettyStep};StepNumber.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))};StepNumber.prototype.getStep=function(){return this._step};StepNumber.prototype.start=function(checkFirst){if(checkFirst===undefined){checkFirst=false}this._current=this._start-this._start%this._step;if(checkFirst){if(this.getCurrent()<this._start){this.next()}}};StepNumber.prototype.next=function(){this._current+=this._step};StepNumber.prototype.end=function(){return this._current>this._end};module.exports=StepNumber},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Camera=__webpack_require__(95);var Point3d=__webpack_require__(34);var STYLE={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9};var STYLENAME={dot:STYLE.DOT,\"dot-line\":STYLE.DOTLINE,\"dot-color\":STYLE.DOTCOLOR,\"dot-size\":STYLE.DOTSIZE,line:STYLE.LINE,grid:STYLE.GRID,surface:STYLE.SURFACE,bar:STYLE.BAR,\"bar-color\":STYLE.BARCOLOR,\"bar-size\":STYLE.BARSIZE};var OPTIONKEYS=[\"width\",\"height\",\"filterLabel\",\"legendLabel\",\"xLabel\",\"yLabel\",\"zLabel\",\"xValueLabel\",\"yValueLabel\",\"zValueLabel\",\"showXAxis\",\"showYAxis\",\"showZAxis\",\"showGrid\",\"showPerspective\",\"showShadow\",\"keepAspectRatio\",\"verticalRatio\",\"dotSizeRatio\",\"dotSizeMinFraction\",\"dotSizeMaxFraction\",\"showAnimationControls\",\"animationInterval\",\"animationPreload\",\"animationAutoStart\",\"axisColor\",\"gridColor\",\"xCenter\",\"yCenter\"];var PREFIXEDOPTIONKEYS=[\"xBarWidth\",\"yBarWidth\",\"valueMin\",\"valueMax\",\"xMin\",\"xMax\",\"xStep\",\"yMin\",\"yMax\",\"yStep\",\"zMin\",\"zMax\",\"zStep\"];var DEFAULTS=undefined;function isEmpty(obj){for(var prop in obj){if(obj.hasOwnProperty(prop))return false}return true}function capitalize(str){if(str===undefined||str===\"\"||typeof str!=\"string\"){return str}return str.charAt(0).toUpperCase()+str.slice(1)}function prefixFieldName(prefix,fieldName){if(prefix===undefined||prefix===\"\"){return fieldName}return prefix+capitalize(fieldName)}function forceCopy(src,dst,fields,prefix){var srcKey;var dstKey;for(var i=0;i<fields.length;++i){srcKey=fields[i];dstKey=prefixFieldName(prefix,srcKey);dst[dstKey]=src[srcKey]}}function safeCopy(src,dst,fields,prefix){var srcKey;var dstKey;for(var i=0;i<fields.length;++i){srcKey=fields[i];if(src[srcKey]===undefined)continue;dstKey=prefixFieldName(prefix,srcKey);dst[dstKey]=src[srcKey]}}function setDefaults(src,dst){if(src===undefined||isEmpty(src)){throw new Error(\"No DEFAULTS passed\")}if(dst===undefined){throw new Error(\"No dst passed\")}DEFAULTS=src;forceCopy(src,dst,OPTIONKEYS);forceCopy(src,dst,PREFIXEDOPTIONKEYS,\"default\");setSpecialSettings(src,dst);dst.margin=10;dst.showGrayBottom=false;dst.showTooltip=false;dst.onclick_callback=null;dst.eye=new Point3d(0,0,-1)}function setOptions(options,dst){if(options===undefined){return}if(dst===undefined){throw new Error(\"No dst passed\")}if(DEFAULTS===undefined||isEmpty(DEFAULTS)){throw new Error(\"DEFAULTS not set for module Settings\")}safeCopy(options,dst,OPTIONKEYS);safeCopy(options,dst,PREFIXEDOPTIONKEYS,\"default\");setSpecialSettings(options,dst)}function setSpecialSettings(src,dst){if(src.backgroundColor!==undefined){setBackgroundColor(src.backgroundColor,dst)}setDataColor(src.dataColor,dst);setStyle(src.style,dst);setShowLegend(src.showLegend,dst);setCameraPosition(src.cameraPosition,dst);if(src.tooltip!==undefined){dst.showTooltip=src.tooltip}if(src.onclick!=undefined){dst.onclick_callback=src.onclick}if(src.tooltipStyle!==undefined){util.selectiveDeepExtend([\"tooltipStyle\"],dst,src)}}function setShowLegend(showLegend,dst){if(showLegend===undefined){var isAutoByDefault=DEFAULTS.showLegend===undefined;if(isAutoByDefault){var isLegendGraphStyle=dst.style===STYLE.DOTCOLOR||dst.style===STYLE.DOTSIZE;dst.showLegend=isLegendGraphStyle}else{}}else{dst.showLegend=showLegend}}function getStyleNumberByName(styleName){var number=STYLENAME[styleName];if(number===undefined){return-1}return number}function checkStyleNumber(style){var valid=false;for(var n in STYLE){if(STYLE[n]===style){valid=true;break}}return valid}function setStyle(style,dst){if(style===undefined){return}var styleNumber;if(typeof style===\"string\"){styleNumber=getStyleNumberByName(style);if(styleNumber===-1){throw new Error(\"Style '\"+style+\"' is invalid\")}}else{if(!checkStyleNumber(style)){throw new Error(\"Style '\"+style+\"' is invalid\")}styleNumber=style}dst.style=styleNumber}function setBackgroundColor(backgroundColor,dst){var fill=\"white\";var stroke=\"gray\";var strokeWidth=1;if(typeof backgroundColor===\"string\"){fill=backgroundColor;stroke=\"none\";strokeWidth=0}else if((typeof backgroundColor===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(backgroundColor))===\"object\"){if(backgroundColor.fill!==undefined)fill=backgroundColor.fill;if(backgroundColor.stroke!==undefined)stroke=backgroundColor.stroke;if(backgroundColor.strokeWidth!==undefined)strokeWidth=backgroundColor.strokeWidth}else{throw new Error(\"Unsupported type of backgroundColor\")}dst.frame.style.backgroundColor=fill;dst.frame.style.borderColor=stroke;dst.frame.style.borderWidth=strokeWidth+\"px\";dst.frame.style.borderStyle=\"solid\"}function setDataColor(dataColor,dst){if(dataColor===undefined){return}if(dst.dataColor===undefined){dst.dataColor={}}if(typeof dataColor===\"string\"){dst.dataColor.fill=dataColor;dst.dataColor.stroke=dataColor}else{if(dataColor.fill){dst.dataColor.fill=dataColor.fill}if(dataColor.stroke){dst.dataColor.stroke=dataColor.stroke}if(dataColor.strokeWidth!==undefined){dst.dataColor.strokeWidth=dataColor.strokeWidth}}}function setCameraPosition(cameraPosition,dst){var camPos=cameraPosition;if(camPos===undefined){return}if(dst.camera===undefined){dst.camera=new Camera}dst.camera.setArmRotation(camPos.horizontal,camPos.vertical);dst.camera.setArmLength(camPos.distance)}module.exports.STYLE=STYLE;module.exports.setDefaults=setDefaults;module.exports.setOptions=setOptions;module.exports.setCameraPosition=setCameraPosition},function(module,exports,__webpack_require__){\"use strict\";var _sign=__webpack_require__(165);var _sign2=_interopRequireDefault(_sign);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Point3d=__webpack_require__(34);function Camera(){this.armLocation=new Point3d;this.armRotation={};this.armRotation.horizontal=0;this.armRotation.vertical=0;this.armLength=1.7;this.cameraOffset=new Point3d;this.offsetMultiplier=.6;this.cameraLocation=new Point3d;this.cameraRotation=new Point3d(.5*Math.PI,0,0);this.calculateCameraOrientation()}Camera.prototype.setOffset=function(x,y){var abs=Math.abs,sign=_sign2[\"default\"],mul=this.offsetMultiplier,border=this.armLength*mul;if(abs(x)>border){x=sign(x)*border}if(abs(y)>border){y=sign(y)*border}this.cameraOffset.x=x;this.cameraOffset.y=y;this.calculateCameraOrientation()};Camera.prototype.getOffset=function(){return this.cameraOffset};Camera.prototype.setArmLocation=function(x,y,z){this.armLocation.x=x;this.armLocation.y=y;this.armLocation.z=z;this.calculateCameraOrientation()};Camera.prototype.setArmRotation=function(horizontal,vertical){if(horizontal!==undefined){this.armRotation.horizontal=horizontal}if(vertical!==undefined){this.armRotation.vertical=vertical;if(this.armRotation.vertical<0)this.armRotation.vertical=0;if(this.armRotation.vertical>.5*Math.PI)this.armRotation.vertical=.5*Math.PI}if(horizontal!==undefined||vertical!==undefined){this.calculateCameraOrientation()}};Camera.prototype.getArmRotation=function(){var rot={};rot.horizontal=this.armRotation.horizontal;rot.vertical=this.armRotation.vertical;return rot};Camera.prototype.setArmLength=function(length){if(length===undefined)return;this.armLength=length;if(this.armLength<.71)this.armLength=.71;if(this.armLength>5)this.armLength=5;this.setOffset(this.cameraOffset.x,this.cameraOffset.y);this.calculateCameraOrientation()};Camera.prototype.getArmLength=function(){return this.armLength};Camera.prototype.getCameraLocation=function(){return this.cameraLocation};Camera.prototype.getCameraRotation=function(){return this.cameraRotation};Camera.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical);this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical);this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical);this.cameraRotation.x=Math.PI/2-this.armRotation.vertical;this.cameraRotation.y=0;this.cameraRotation.z=-this.armRotation.horizontal;var xa=this.cameraRotation.x;var za=this.cameraRotation.z;var dx=this.cameraOffset.x;var dy=this.cameraOffset.y;var sin=Math.sin,cos=Math.cos;this.cameraLocation.x=this.cameraLocation.x+dx*cos(za)+dy*-sin(za)*cos(xa);this.cameraLocation.y=this.cameraLocation.y+dx*sin(za)+dy*cos(za)*cos(xa);this.cameraLocation.z=this.cameraLocation.z+dy*sin(xa)};module.exports=Camera},function(module,exports,__webpack_require__){\"use strict\";var DataView=__webpack_require__(12);function Filter(dataGroup,column,graph){this.dataGroup=dataGroup;this.column=column;this.graph=graph;this.index=undefined;this.value=undefined;this.values=dataGroup.getDistinctValues(this.column);if(this.values.length>0){this.selectValue(0)}this.dataPoints=[];this.loaded=false;this.onLoadCallback=undefined;if(graph.animationPreload){this.loaded=false;this.loadInBackground()}else{this.loaded=true}}Filter.prototype.isLoaded=function(){return this.loaded};Filter.prototype.getLoadedProgress=function(){var len=this.values.length;var i=0;while(this.dataPoints[i]){i++}return Math.round(i/len*100)};Filter.prototype.getLabel=function(){return this.graph.filterLabel};Filter.prototype.getColumn=function(){return this.column};Filter.prototype.getSelectedValue=function(){if(this.index===undefined)return undefined;return this.values[this.index]};Filter.prototype.getValues=function(){return this.values};Filter.prototype.getValue=function(index){if(index>=this.values.length)throw new Error(\"Index out of range\");return this.values[index]};Filter.prototype._getDataPoints=function(index){if(index===undefined)index=this.index;if(index===undefined)return[];var dataPoints;if(this.dataPoints[index]){dataPoints=this.dataPoints[index]}else{var f={};f.column=this.column;f.value=this.values[index];var dataView=new DataView(this.dataGroup.getDataSet(),{filter:function filter(item){return item[f.column]==f.value}}).get();dataPoints=this.dataGroup._getDataPoints(dataView);this.dataPoints[index]=dataPoints}return dataPoints};Filter.prototype.setOnLoadCallback=function(callback){this.onLoadCallback=callback};Filter.prototype.selectValue=function(index){if(index>=this.values.length)throw new Error(\"Index out of range\");this.index=index;this.value=this.values[index]};Filter.prototype.loadInBackground=function(index){if(index===undefined)index=0;var frame=this.graph.frame;if(index<this.values.length){if(frame.progress===undefined){frame.progress=document.createElement(\"DIV\");frame.progress.style.position=\"absolute\";frame.progress.style.color=\"gray\";frame.appendChild(frame.progress)}var progress=this.getLoadedProgress();frame.progress.innerHTML=\"Loading animation... \"+progress+\"%\";frame.progress.style.bottom=60+\"px\";frame.progress.style.left=10+\"px\";var me=this;setTimeout(function(){me.loadInBackground(index+1)},10);this.loaded=false}else{this.loaded=true;if(frame.progress!==undefined){frame.removeChild(frame.progress);frame.progress=undefined}if(this.onLoadCallback)this.onLoadCallback()}};module.exports=Filter},function(module,exports,__webpack_require__){\"use strict\";var keycharm=__webpack_require__(35);var Emitter=__webpack_require__(44);var Hammer=__webpack_require__(10);var util=__webpack_require__(2);function Activator(container){this.active=false;this.dom={container:container};this.dom.overlay=document.createElement(\"div\");this.dom.overlay.className=\"vis-overlay\";this.dom.container.appendChild(this.dom.overlay);this.hammer=Hammer(this.dom.overlay);this.hammer.on(\"tap\",this._onTapOverlay.bind(this));var me=this;var events=[\"tap\",\"doubletap\",\"press\",\"pinch\",\"pan\",\"panstart\",\"panmove\",\"panend\"];events.forEach(function(event){me.hammer.on(event,function(event){event.stopPropagation()})});if(document&&document.body){this.onClick=function(event){if(!_hasParent(event.target,container)){me.deactivate()}};document.body.addEventListener(\"click\",this.onClick)}if(this.keycharm!==undefined){this.keycharm.destroy()}this.keycharm=keycharm();this.escListener=this.deactivate.bind(this)}Emitter(Activator.prototype);Activator.current=null;Activator.prototype.destroy=function(){this.deactivate();this.dom.overlay.parentNode.removeChild(this.dom.overlay);if(this.onClick){document.body.removeEventListener(\"click\",this.onClick)}this.hammer.destroy();this.hammer=null};Activator.prototype.activate=function(){if(Activator.current){Activator.current.deactivate()}Activator.current=this;this.active=true;this.dom.overlay.style.display=\"none\";util.addClassName(this.dom.container,\"vis-active\");this.emit(\"change\");this.emit(\"activate\");this.keycharm.bind(\"esc\",this.escListener)};Activator.prototype.deactivate=function(){this.active=false;this.dom.overlay.style.display=\"\";util.removeClassName(this.dom.container,\"vis-active\");this.keycharm.unbind(\"esc\",this.escListener);this.emit(\"change\");this.emit(\"deactivate\")};Activator.prototype._onTapOverlay=function(event){this.activate();event.stopPropagation()};function _hasParent(element,parent){while(element){if(element===parent){return true}element=element.parentNode}return false}module.exports=Activator},function(module,exports,__webpack_require__){\"use strict\";exports[\"en\"]={current:\"current\",time:\"time\"};exports[\"en_EN\"]=exports[\"en\"];exports[\"en_US\"]=exports[\"en\"];exports[\"it\"]={current:\"attuale\",time:\"tempo\"};exports[\"it_IT\"]=exports[\"it\"];exports[\"it_CH\"]=exports[\"it\"];exports[\"nl\"]={current:\"huidige\",time:\"tijd\"};exports[\"nl_NL\"]=exports[\"nl\"];exports[\"nl_BE\"]=exports[\"nl\"];exports[\"de\"]={current:\"Aktuelle\",time:\"Zeit\"};exports[\"de_DE\"]=exports[\"de\"];exports[\"fr\"]={current:\"actuel\",time:\"heure\"};exports[\"fr_FR\"]=exports[\"fr\"];exports[\"fr_CA\"]=exports[\"fr\"];exports[\"fr_BE\"]=exports[\"fr\"];exports[\"es\"]={current:\"corriente\",time:\"hora\"};exports[\"es_ES\"]=exports[\"es\"]},function(module,exports,__webpack_require__){\"use strict\";var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var TimeStep=__webpack_require__(66);var Component=__webpack_require__(16);var Group=__webpack_require__(68);var BackgroundGroup=__webpack_require__(69);var BoxItem=__webpack_require__(101);var PointItem=__webpack_require__(102);var RangeItem=__webpack_require__(70);var BackgroundItem=__webpack_require__(103);var Popup=__webpack_require__(104)[\"default\"];var UNGROUPED=\"__ungrouped__\";var BACKGROUND=\"__background__\";function ItemSet(body,options){this.body=body;this.defaultOptions={type:null,orientation:{item:\"bottom\"},align:\"auto\",stack:true,stackSubgroups:true,groupOrderSwap:function groupOrderSwap(fromGroup,toGroup,groups){var targetOrder=toGroup.order;toGroup.order=fromGroup.order;fromGroup.order=targetOrder},groupOrder:\"order\",selectable:true,multiselect:false,itemsAlwaysDraggable:{item:false,range:false},editable:{updateTime:false,updateGroup:false,add:false,remove:false,overrideItems:false},groupEditable:{order:false,add:false,remove:false},snap:TimeStep.snap,onDropObjectOnItem:function onDropObjectOnItem(objectData,item,callback){callback(item)},onAdd:function onAdd(item,callback){callback(item)},onUpdate:function onUpdate(item,callback){callback(item)},onMove:function onMove(item,callback){callback(item)},onRemove:function onRemove(item,callback){callback(item)},onMoving:function onMoving(item,callback){callback(item)},onAddGroup:function onAddGroup(item,callback){callback(item)},onMoveGroup:function onMoveGroup(item,callback){callback(item)},onRemoveGroup:function onRemoveGroup(item,callback){callback(item)},margin:{item:{horizontal:10,vertical:10},axis:20},showTooltips:true,tooltip:{followMouse:false,overflowMethod:\"flip\"},tooltipOnItemUpdateTime:false};this.options=util.extend({},this.defaultOptions);this.options.rtl=options.rtl;this.itemOptions={type:{start:\"Date\",end:\"Date\"}};this.conversion={toScreen:body.util.toScreen,toTime:body.util.toTime};this.dom={};this.props={};this.hammer=null;var me=this;this.itemsData=null;this.groupsData=null;this.itemListeners={add:function add(event,params,senderId){me._onAdd(params.items)},update:function update(event,params,senderId){me._onUpdate(params.items)},remove:function remove(event,params,senderId){me._onRemove(params.items)}};this.groupListeners={add:function add(event,params,senderId){me._onAddGroups(params.items);if(me.groupsData&&me.groupsData.length>0){var groupsData=me.groupsData.getDataSet();groupsData.get().forEach(function(groupData){if(groupData.nestedGroups){if(groupData.showNested!=false){groupData.showNested=true}var updatedGroups=[];groupData.nestedGroups.forEach(function(nestedGroupId){var updatedNestedGroup=groupsData.get(nestedGroupId);if(!updatedNestedGroup){return}updatedNestedGroup.nestedInGroup=groupData.id;if(groupData.showNested==false){updatedNestedGroup.visible=false}updatedGroups=updatedGroups.concat(updatedNestedGroup)});groupsData.update(updatedGroups,senderId)}})}},update:function update(event,params,senderId){me._onUpdateGroups(params.items)},remove:function remove(event,params,senderId){me._onRemoveGroups(params.items)}};this.items={};this.groups={};this.groupIds=[];this.selection=[];this.popup=null;this.touchParams={};this.groupTouchParams={};this._create();this.setOptions(options)}ItemSet.prototype=new Component;ItemSet.types={background:BackgroundItem,box:BoxItem,range:RangeItem,point:PointItem};ItemSet.prototype._create=function(){var frame=document.createElement(\"div\");frame.className=\"vis-itemset\";frame[\"timeline-itemset\"]=this;this.dom.frame=frame;var background=document.createElement(\"div\");background.className=\"vis-background\";frame.appendChild(background);this.dom.background=background;var foreground=document.createElement(\"div\");foreground.className=\"vis-foreground\";frame.appendChild(foreground);this.dom.foreground=foreground;var axis=document.createElement(\"div\");axis.className=\"vis-axis\";this.dom.axis=axis;var labelSet=document.createElement(\"div\");labelSet.className=\"vis-labelset\";this.dom.labelSet=labelSet;this._updateUngrouped();var backgroundGroup=new BackgroundGroup(BACKGROUND,null,this);backgroundGroup.show();this.groups[BACKGROUND]=backgroundGroup;this.hammer=new Hammer(this.body.dom.centerContainer);this.hammer.on(\"hammer.input\",function(event){if(event.isFirst){this._onTouch(event)}}.bind(this));this.hammer.on(\"panstart\",this._onDragStart.bind(this));this.hammer.on(\"panmove\",this._onDrag.bind(this));this.hammer.on(\"panend\",this._onDragEnd.bind(this));this.hammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_HORIZONTAL});this.hammer.on(\"tap\",this._onSelectItem.bind(this));this.hammer.on(\"press\",this._onMultiSelectItem.bind(this));this.hammer.on(\"doubletap\",this._onAddItem.bind(this));if(this.options.rtl){\nthis.groupHammer=new Hammer(this.body.dom.rightContainer)}else{this.groupHammer=new Hammer(this.body.dom.leftContainer)}this.groupHammer.on(\"tap\",this._onGroupClick.bind(this));this.groupHammer.on(\"panstart\",this._onGroupDragStart.bind(this));this.groupHammer.on(\"panmove\",this._onGroupDrag.bind(this));this.groupHammer.on(\"panend\",this._onGroupDragEnd.bind(this));this.groupHammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_VERTICAL});this.body.dom.centerContainer.addEventListener(\"mouseover\",this._onMouseOver.bind(this));this.body.dom.centerContainer.addEventListener(\"mouseout\",this._onMouseOut.bind(this));this.body.dom.centerContainer.addEventListener(\"mousemove\",this._onMouseMove.bind(this));this.body.dom.centerContainer.addEventListener(\"contextmenu\",this._onDragEnd.bind(this));this.body.dom.centerContainer.addEventListener(\"mousewheel\",this._onMouseWheel.bind(this));this.show()};ItemSet.prototype.setOptions=function(options){if(options){var fields=[\"type\",\"rtl\",\"align\",\"order\",\"stack\",\"stackSubgroups\",\"selectable\",\"multiselect\",\"multiselectPerGroup\",\"groupOrder\",\"dataAttributes\",\"template\",\"groupTemplate\",\"visibleFrameTemplate\",\"hide\",\"snap\",\"groupOrderSwap\",\"showTooltips\",\"tooltip\",\"tooltipOnItemUpdateTime\"];util.selectiveExtend(fields,this.options,options);if(\"itemsAlwaysDraggable\"in options){if(typeof options.itemsAlwaysDraggable===\"boolean\"){this.options.itemsAlwaysDraggable.item=options.itemsAlwaysDraggable;this.options.itemsAlwaysDraggable.range=false}else if((0,_typeof3[\"default\"])(options.itemsAlwaysDraggable)===\"object\"){util.selectiveExtend([\"item\",\"range\"],this.options.itemsAlwaysDraggable,options.itemsAlwaysDraggable);if(!this.options.itemsAlwaysDraggable.item){this.options.itemsAlwaysDraggable.range=false}}}if(\"orientation\"in options){if(typeof options.orientation===\"string\"){this.options.orientation.item=options.orientation===\"top\"?\"top\":\"bottom\"}else if((0,_typeof3[\"default\"])(options.orientation)===\"object\"&&\"item\"in options.orientation){this.options.orientation.item=options.orientation.item}}if(\"margin\"in options){if(typeof options.margin===\"number\"){this.options.margin.axis=options.margin;this.options.margin.item.horizontal=options.margin;this.options.margin.item.vertical=options.margin}else if((0,_typeof3[\"default\"])(options.margin)===\"object\"){util.selectiveExtend([\"axis\"],this.options.margin,options.margin);if(\"item\"in options.margin){if(typeof options.margin.item===\"number\"){this.options.margin.item.horizontal=options.margin.item;this.options.margin.item.vertical=options.margin.item}else if((0,_typeof3[\"default\"])(options.margin.item)===\"object\"){util.selectiveExtend([\"horizontal\",\"vertical\"],this.options.margin.item,options.margin.item)}}}}if(\"editable\"in options){if(typeof options.editable===\"boolean\"){this.options.editable.updateTime=options.editable;this.options.editable.updateGroup=options.editable;this.options.editable.add=options.editable;this.options.editable.remove=options.editable;this.options.editable.overrideItems=false}else if((0,_typeof3[\"default\"])(options.editable)===\"object\"){util.selectiveExtend([\"updateTime\",\"updateGroup\",\"add\",\"remove\",\"overrideItems\"],this.options.editable,options.editable)}}if(\"groupEditable\"in options){if(typeof options.groupEditable===\"boolean\"){this.options.groupEditable.order=options.groupEditable;this.options.groupEditable.add=options.groupEditable;this.options.groupEditable.remove=options.groupEditable}else if((0,_typeof3[\"default\"])(options.groupEditable)===\"object\"){util.selectiveExtend([\"order\",\"add\",\"remove\"],this.options.groupEditable,options.groupEditable)}}var addCallback=function(name){var fn=options[name];if(fn){if(!(fn instanceof Function)){throw new Error(\"option \"+name+\" must be a function \"+name+\"(item, callback)\")}this.options[name]=fn}}.bind(this);[\"onDropObjectOnItem\",\"onAdd\",\"onUpdate\",\"onRemove\",\"onMove\",\"onMoving\",\"onAddGroup\",\"onMoveGroup\",\"onRemoveGroup\"].forEach(addCallback);this.markDirty()}};ItemSet.prototype.markDirty=function(options){this.groupIds=[];if(options&&options.refreshItems){util.forEach(this.items,function(item){item.dirty=true;if(item.displayed)item.redraw()})}};ItemSet.prototype.destroy=function(){this.hide();this.setItems(null);this.setGroups(null);this.hammer=null;this.body=null;this.conversion=null};ItemSet.prototype.hide=function(){if(this.dom.frame.parentNode){this.dom.frame.parentNode.removeChild(this.dom.frame)}if(this.dom.axis.parentNode){this.dom.axis.parentNode.removeChild(this.dom.axis)}if(this.dom.labelSet.parentNode){this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)}};ItemSet.prototype.show=function(){if(!this.dom.frame.parentNode){this.body.dom.center.appendChild(this.dom.frame)}if(!this.dom.axis.parentNode){this.body.dom.backgroundVertical.appendChild(this.dom.axis)}if(!this.dom.labelSet.parentNode){if(this.options.rtl){this.body.dom.right.appendChild(this.dom.labelSet)}else{this.body.dom.left.appendChild(this.dom.labelSet)}}};ItemSet.prototype.setSelection=function(ids){var i,ii,id,item;if(ids==undefined)ids=[];if(!Array.isArray(ids))ids=[ids];for(i=0,ii=this.selection.length;i<ii;i++){id=this.selection[i];item=this.items[id];if(item)item.unselect()}this.selection=[];for(i=0,ii=ids.length;i<ii;i++){id=ids[i];item=this.items[id];if(item){this.selection.push(id);item.select()}}};ItemSet.prototype.getSelection=function(){return this.selection.concat([])};ItemSet.prototype.getVisibleItems=function(){var range=this.body.range.getRange();var right,left;if(this.options.rtl){right=this.body.util.toScreen(range.start);left=this.body.util.toScreen(range.end)}else{left=this.body.util.toScreen(range.start);right=this.body.util.toScreen(range.end)}var ids=[];for(var groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){var group=this.groups[groupId];var rawVisibleItems=group.isVisible?group.visibleItems:[];for(var i=0;i<rawVisibleItems.length;i++){var item=rawVisibleItems[i];if(this.options.rtl){if(item.right<left&&item.right+item.width>right){ids.push(item.id)}}else{if(item.left<right&&item.left+item.width>left){ids.push(item.id)}}}}}return ids};ItemSet.prototype._deselect=function(id){var selection=this.selection;for(var i=0,ii=selection.length;i<ii;i++){if(selection[i]==id){selection.splice(i,1);break}}};ItemSet.prototype.redraw=function(){var margin=this.options.margin,range=this.body.range,asSize=util.option.asSize,options=this.options,orientation=options.orientation.item,resized=false,frame=this.dom.frame;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top;if(this.options.rtl){this.props.right=this.body.domProps.right.width+this.body.domProps.border.right}else{this.props.left=this.body.domProps.left.width+this.body.domProps.border.left}frame.className=\"vis-itemset\";resized=this._orderGroups()||resized;var visibleInterval=range.end-range.start;var zoomed=visibleInterval!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;var scrolled=range.start!=this.lastRangeStart;var changedStackOption=options.stack!=this.lastStack;var changedStackSubgroupsOption=options.stackSubgroups!=this.lastStackSubgroups;var forceRestack=zoomed||scrolled||changedStackOption||changedStackSubgroupsOption;this.lastVisibleInterval=visibleInterval;this.lastRangeStart=range.start;this.lastStack=options.stack;this.lastStackSubgroups=options.stackSubgroups;this.props.lastWidth=this.props.width;var firstGroup=this._firstGroup();var firstMargin={item:margin.item,axis:margin.axis};var nonFirstMargin={item:margin.item,axis:margin.item.vertical/2};var height=0;var minHeight=margin.axis+margin.item.vertical;this.groups[BACKGROUND].redraw(range,nonFirstMargin,forceRestack);var redrawQueue={};var redrawQueueLength=0;util.forEach(this.groups,function(group,key){if(key===BACKGROUND)return;var groupMargin=group==firstGroup?firstMargin:nonFirstMargin;var returnQueue=true;redrawQueue[key]=group.redraw(range,groupMargin,forceRestack,returnQueue);redrawQueueLength=redrawQueue[key].length});var needRedraw=redrawQueueLength>0;if(needRedraw){var redrawResults={};for(var i=0;i<redrawQueueLength;i++){util.forEach(redrawQueue,function(fns,key){redrawResults[key]=fns[i]()})}util.forEach(this.groups,function(group,key){if(key===BACKGROUND)return;var groupResized=redrawResults[key];resized=groupResized||resized;height+=group.height});height=Math.max(height,minHeight)}height=Math.max(height,minHeight);frame.style.height=asSize(height);this.props.width=frame.offsetWidth;this.props.height=height;this.dom.axis.style.top=asSize(orientation==\"top\"?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height);if(this.options.rtl){this.dom.axis.style.right=\"0\"}else{this.dom.axis.style.left=\"0\"}this.initialItemSetDrawn=true;resized=this._isResized()||resized;return resized};ItemSet.prototype._firstGroup=function(){var firstGroupIndex=this.options.orientation.item==\"top\"?0:this.groupIds.length-1;var firstGroupId=this.groupIds[firstGroupIndex];var firstGroup=this.groups[firstGroupId]||this.groups[UNGROUPED];return firstGroup||null};ItemSet.prototype._updateUngrouped=function(){var ungrouped=this.groups[UNGROUPED];var item,itemId;if(this.groupsData){if(ungrouped){ungrouped.hide();delete this.groups[UNGROUPED];for(itemId in this.items){if(this.items.hasOwnProperty(itemId)){item=this.items[itemId];item.parent&&item.parent.remove(item);var groupId=this._getGroupId(item.data);var group=this.groups[groupId];group&&group.add(item)||item.hide()}}}}else{if(!ungrouped){var id=null;var data=null;ungrouped=new Group(id,data,this);this.groups[UNGROUPED]=ungrouped;for(itemId in this.items){if(this.items.hasOwnProperty(itemId)){item=this.items[itemId];ungrouped.add(item)}}ungrouped.show()}}};ItemSet.prototype.getLabelSet=function(){return this.dom.labelSet};ItemSet.prototype.setItems=function(items){var me=this,ids,oldItemsData=this.itemsData;if(!items){this.itemsData=null}else if(items instanceof DataSet||items instanceof DataView){this.itemsData=items}else{throw new TypeError(\"Data must be an instance of DataSet or DataView\")}if(oldItemsData){util.forEach(this.itemListeners,function(callback,event){oldItemsData.off(event,callback)});ids=oldItemsData.getIds();this._onRemove(ids)}if(this.itemsData){var id=this.id;util.forEach(this.itemListeners,function(callback,event){me.itemsData.on(event,callback,id)});ids=this.itemsData.getIds();this._onAdd(ids);this._updateUngrouped()}this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype.getItems=function(){return this.itemsData};ItemSet.prototype.setGroups=function(groups){var me=this,ids;if(this.groupsData){util.forEach(this.groupListeners,function(callback,event){me.groupsData.off(event,callback)});ids=this.groupsData.getIds();this.groupsData=null;this._onRemoveGroups(ids)}if(!groups){this.groupsData=null}else if(groups instanceof DataSet||groups instanceof DataView){this.groupsData=groups}else{throw new TypeError(\"Data must be an instance of DataSet or DataView\")}if(this.groupsData){var groupsData=this.groupsData;if(this.groupsData instanceof DataView){groupsData=this.groupsData.getDataSet()}groupsData.get().forEach(function(group){if(group.nestedGroups){group.nestedGroups.forEach(function(nestedGroupId){var updatedNestedGroup=groupsData.get(nestedGroupId);updatedNestedGroup.nestedInGroup=group.id;if(group.showNested==false){updatedNestedGroup.visible=false}groupsData.update(updatedNestedGroup)})}});var id=this.id;util.forEach(this.groupListeners,function(callback,event){me.groupsData.on(event,callback,id)});ids=this.groupsData.getIds();this._onAddGroups(ids)}this._updateUngrouped();this._order();this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype.getGroups=function(){return this.groupsData};ItemSet.prototype.removeItem=function(id){var item=this.itemsData.get(id),dataset=this.itemsData.getDataSet();if(item){this.options.onRemove(item,function(item){if(item){dataset.remove(id)}})}};ItemSet.prototype._getType=function(itemData){return itemData.type||this.options.type||(itemData.end?\"range\":\"box\")};ItemSet.prototype._getGroupId=function(itemData){var type=this._getType(itemData);if(type==\"background\"&&itemData.group==undefined){return BACKGROUND}else{return this.groupsData?itemData.group:UNGROUPED}};ItemSet.prototype._onUpdate=function(ids){var me=this;ids.forEach(function(id){var itemData=me.itemsData.get(id,me.itemOptions);var item=me.items[id];var type=itemData?me._getType(itemData):null;var constructor=ItemSet.types[type];var selected;if(item){if(!constructor||!(item instanceof constructor)){selected=item.selected;me._removeItem(item);item=null}else{me._updateItem(item,itemData)}}if(!item&&itemData){if(constructor){item=new constructor(itemData,me.conversion,me.options);item.id=id;me._addItem(item);if(selected){this.selection.push(id);item.select()}}else if(type==\"rangeoverflow\"){throw new TypeError('Item type \"rangeoverflow\" is deprecated. Use css styling instead: '+\".vis-item.vis-range .vis-item-content {overflow: visible;}\")}else{throw new TypeError('Unknown item type \"'+type+'\"')}}}.bind(this));this._order();this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype._onAdd=ItemSet.prototype._onUpdate;ItemSet.prototype._onRemove=function(ids){var count=0;var me=this;ids.forEach(function(id){var item=me.items[id];if(item){count++;me._removeItem(item)}});if(count){this._order();this.body.emitter.emit(\"_change\",{queue:true})}};ItemSet.prototype._order=function(){util.forEach(this.groups,function(group){group.order()})};ItemSet.prototype._onUpdateGroups=function(ids){this._onAddGroups(ids)};ItemSet.prototype._onAddGroups=function(ids){var me=this;ids.forEach(function(id){var groupData=me.groupsData.get(id);var group=me.groups[id];if(!group){if(id==UNGROUPED||id==BACKGROUND){throw new Error(\"Illegal group id. \"+id+\" is a reserved id.\")}var groupOptions=(0,_create2[\"default\"])(me.options);util.extend(groupOptions,{height:null});group=new Group(id,groupData,me);me.groups[id]=group;for(var itemId in me.items){if(me.items.hasOwnProperty(itemId)){var item=me.items[itemId];if(item.data.group==id){group.add(item)}}}group.order();group.show()}else{group.setData(groupData)}});this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype._onRemoveGroups=function(ids){var groups=this.groups;ids.forEach(function(id){var group=groups[id];if(group){group.hide();delete groups[id]}});this.markDirty();this.body.emitter.emit(\"_change\",{queue:true})};ItemSet.prototype._orderGroups=function(){if(this.groupsData){var groupIds=this.groupsData.getIds({order:this.options.groupOrder});groupIds=this._orderNestedGroups(groupIds);var changed=!util.equalArray(groupIds,this.groupIds);if(changed){var groups=this.groups;groupIds.forEach(function(groupId){groups[groupId].hide()});groupIds.forEach(function(groupId){groups[groupId].show()});this.groupIds=groupIds}return changed}else{return false}};ItemSet.prototype._orderNestedGroups=function(groupIds){var newGroupIdsOrder=[];groupIds.forEach(function(groupId){var groupData=this.groupsData.get(groupId);if(!groupData.nestedInGroup){newGroupIdsOrder.push(groupId)}if(groupData.nestedGroups){var nestedGroups=this.groupsData.get({filter:function filter(nestedGroup){return nestedGroup.nestedInGroup==groupId},order:this.options.groupOrder});var nestedGroupIds=nestedGroups.map(function(nestedGroup){return nestedGroup.id});newGroupIdsOrder=newGroupIdsOrder.concat(nestedGroupIds)}},this);return newGroupIdsOrder};ItemSet.prototype._addItem=function(item){this.items[item.id]=item;var groupId=this._getGroupId(item.data);var group=this.groups[groupId];if(!group){item.groupShowing=false}else if(group&&group.data&&group.data.showNested){item.groupShowing=true}if(group)group.add(item)};ItemSet.prototype._updateItem=function(item,itemData){item.setData(itemData);var groupId=this._getGroupId(item.data);var group=this.groups[groupId];if(!group){item.groupShowing=false}else if(group&&group.data&&group.data.showNested){item.groupShowing=true}};ItemSet.prototype._removeItem=function(item){item.hide();delete this.items[item.id];var index=this.selection.indexOf(item.id);if(index!=-1)this.selection.splice(index,1);item.parent&&item.parent.remove(item)};ItemSet.prototype._constructByEndArray=function(array){var endArray=[];for(var i=0;i<array.length;i++){if(array[i]instanceof RangeItem){endArray.push(array[i])}}return endArray};ItemSet.prototype._onTouch=function(event){this.touchParams.item=this.itemFromTarget(event);this.touchParams.dragLeftItem=event.target.dragLeftItem||false;this.touchParams.dragRightItem=event.target.dragRightItem||false;this.touchParams.itemProps=null};ItemSet.prototype._getGroupIndex=function(groupId){for(var i=0;i<this.groupIds.length;i++){if(groupId==this.groupIds[i])return i}};ItemSet.prototype._onDragStart=function(event){if(this.touchParams.itemIsDragging){return}var item=this.touchParams.item||null;var me=this;var props;if(item&&(item.selected||this.options.itemsAlwaysDraggable.item)){if(this.options.editable.overrideItems&&!this.options.editable.updateTime&&!this.options.editable.updateGroup){return}if(item.editable!=null&&!item.editable.updateTime&&!item.editable.updateGroup&&!this.options.editable.overrideItems){return}var dragLeftItem=this.touchParams.dragLeftItem;var dragRightItem=this.touchParams.dragRightItem;this.touchParams.itemIsDragging=true;this.touchParams.selectedItem=item;if(dragLeftItem){props={item:dragLeftItem,initialX:event.center.x,dragLeft:true,data:this._cloneItemData(item.data)};this.touchParams.itemProps=[props]}else if(dragRightItem){props={item:dragRightItem,initialX:event.center.x,dragRight:true,data:this._cloneItemData(item.data)};this.touchParams.itemProps=[props]}else if(this.options.editable.add&&(event.srcEvent.ctrlKey||event.srcEvent.metaKey)){this._onDragStartAddItem(event)}else{if(this.groupIds.length<1){this.redraw()}var baseGroupIndex=this._getGroupIndex(item.data.group);var itemsToDrag=this.options.itemsAlwaysDraggable.item&&!item.selected?[item.id]:this.getSelection();this.touchParams.itemProps=itemsToDrag.map(function(id){var item=me.items[id];var groupIndex=me._getGroupIndex(item.data.group);return{item:item,initialX:event.center.x,groupOffset:baseGroupIndex-groupIndex,data:this._cloneItemData(item.data)}}.bind(this))}event.stopPropagation()}else if(this.options.editable.add&&(event.srcEvent.ctrlKey||event.srcEvent.metaKey)){this._onDragStartAddItem(event)}};ItemSet.prototype._onDragStartAddItem=function(event){var xAbs;var x;var snap=this.options.snap||null;if(this.options.rtl){xAbs=util.getAbsoluteRight(this.dom.frame);x=xAbs-event.center.x+10}else{xAbs=util.getAbsoluteLeft(this.dom.frame);x=event.center.x-xAbs-10}var time=this.body.util.toTime(x);var scale=this.body.util.getScale();var step=this.body.util.getStep();var start=snap?snap(time,scale,step):time;var end=start;var itemData={type:\"range\",start:start,end:end,content:\"new item\"};var id=util.randomUUID();itemData[this.itemsData._fieldId]=id;var group=this.groupFromTarget(event);if(group){itemData.group=group.groupId}var newItem=new RangeItem(itemData,this.conversion,this.options);newItem.id=id;newItem.data=this._cloneItemData(itemData);this._addItem(newItem);this.touchParams.selectedItem=newItem;var props={item:newItem,initialX:event.center.x,data:newItem.data};if(this.options.rtl){props.dragLeft=true}else{props.dragRight=true}this.touchParams.itemProps=[props];event.stopPropagation()};ItemSet.prototype._onDrag=function(event){if(this.touchParams.itemProps){event.stopPropagation();var me=this;var snap=this.options.snap||null;var xOffset;if(this.options.rtl){xOffset=this.body.dom.root.offsetLeft+this.body.domProps.right.width}else{xOffset=this.body.dom.root.offsetLeft+this.body.domProps.left.width}var scale=this.body.util.getScale();var step=this.body.util.getStep();var selectedItem=this.touchParams.selectedItem;var updateGroupAllowed=(this.options.editable.overrideItems||selectedItem.editable==null)&&this.options.editable.updateGroup||!this.options.editable.overrideItems&&selectedItem.editable!=null&&selectedItem.editable.updateGroup;var newGroupBase=null;if(updateGroupAllowed&&selectedItem){if(selectedItem.data.group!=undefined){var group=me.groupFromTarget(event);if(group){newGroupBase=this._getGroupIndex(group.groupId)}}}this.touchParams.itemProps.forEach(function(props){var current=me.body.util.toTime(event.center.x-xOffset);var initial=me.body.util.toTime(props.initialX-xOffset);var offset;var initialStart;var initialEnd;var start;var end;if(this.options.rtl){offset=-(current-initial)}else{offset=current-initial}var itemData=this._cloneItemData(props.item.data);if(props.item.editable!=null&&!props.item.editable.updateTime&&!props.item.editable.updateGroup&&!me.options.editable.overrideItems){return}var updateTimeAllowed=(this.options.editable.overrideItems||selectedItem.editable==null)&&this.options.editable.updateTime||!this.options.editable.overrideItems&&selectedItem.editable!=null&&selectedItem.editable.updateTime;if(updateTimeAllowed){if(props.dragLeft){if(this.options.rtl){if(itemData.end!=undefined){initialEnd=util.convert(props.data.end,\"Date\");end=new Date(initialEnd.valueOf()+offset);itemData.end=snap?snap(end,scale,step):end}}else{if(itemData.start!=undefined){initialStart=util.convert(props.data.start,\"Date\");start=new Date(initialStart.valueOf()+offset);itemData.start=snap?snap(start,scale,step):start}}}else if(props.dragRight){if(this.options.rtl){if(itemData.start!=undefined){initialStart=util.convert(props.data.start,\"Date\");start=new Date(initialStart.valueOf()+offset);itemData.start=snap?snap(start,scale,step):start}}else{if(itemData.end!=undefined){initialEnd=util.convert(props.data.end,\"Date\");end=new Date(initialEnd.valueOf()+offset);itemData.end=snap?snap(end,scale,step):end}}}else{if(itemData.start!=undefined){initialStart=util.convert(props.data.start,\"Date\").valueOf();start=new Date(initialStart+offset);if(itemData.end!=undefined){initialEnd=util.convert(props.data.end,\"Date\");var duration=initialEnd.valueOf()-initialStart.valueOf();itemData.start=snap?snap(start,scale,step):start;itemData.end=new Date(itemData.start.valueOf()+duration)}else{itemData.start=snap?snap(start,scale,step):start}}}}if(updateGroupAllowed&&!props.dragLeft&&!props.dragRight&&newGroupBase!=null){if(itemData.group!=undefined){var newOffset=newGroupBase-props.groupOffset;newOffset=Math.max(0,newOffset);newOffset=Math.min(me.groupIds.length-1,newOffset);itemData.group=me.groupIds[newOffset]}}itemData=this._cloneItemData(itemData);me.options.onMoving(itemData,function(itemData){if(itemData){props.item.setData(this._cloneItemData(itemData,\"Date\"))}}.bind(this))}.bind(this));this.body.emitter.emit(\"_change\")}};ItemSet.prototype._moveToGroup=function(item,groupId){var group=this.groups[groupId];if(group&&group.groupId!=item.data.group){var oldGroup=item.parent;oldGroup.remove(item);oldGroup.order();item.data.group=group.groupId;group.add(item);group.order()}};ItemSet.prototype._onDragEnd=function(event){this.touchParams.itemIsDragging=false;if(this.touchParams.itemProps){event.stopPropagation();var me=this;var dataset=this.itemsData.getDataSet();var itemProps=this.touchParams.itemProps;this.touchParams.itemProps=null;itemProps.forEach(function(props){var id=props.item.id;var exists=me.itemsData.get(id,me.itemOptions)!=null;if(!exists){me.options.onAdd(props.item.data,function(itemData){me._removeItem(props.item);if(itemData){me.itemsData.getDataSet().add(itemData)}me.body.emitter.emit(\"_change\")})}else{var itemData=this._cloneItemData(props.item.data);me.options.onMove(itemData,function(itemData){if(itemData){itemData[dataset._fieldId]=id;dataset.update(itemData)}else{props.item.setData(props.data);me.body.emitter.emit(\"_change\")}})}}.bind(this))}};ItemSet.prototype._onGroupClick=function(event){var group=this.groupFromTarget(event);if(!group||!group.nestedGroups)return;var groupsData=this.groupsData.getDataSet();var nestingGroup=groupsData.get(group.groupId);if(nestingGroup.showNested==undefined){nestingGroup.showNested=true}nestingGroup.showNested=!nestingGroup.showNested;var nestedGroups=groupsData.get(group.nestedGroups).map(function(nestedGroup){nestedGroup.visible=nestingGroup.showNested;return nestedGroup});groupsData.update(nestedGroups.concat(nestingGroup));if(nestingGroup.showNested){util.removeClassName(group.dom.label,\"collapsed\");util.addClassName(group.dom.label,\"expanded\")}else{util.removeClassName(group.dom.label,\"expanded\");var collapsedDirClassName=this.options.rtl?\"collapsed-rtl\":\"collapsed\";util.addClassName(group.dom.label,collapsedDirClassName)}};ItemSet.prototype._onGroupDragStart=function(event){if(this.options.groupEditable.order){this.groupTouchParams.group=this.groupFromTarget(event);if(this.groupTouchParams.group){event.stopPropagation();this.groupTouchParams.originalOrder=this.groupsData.getIds({order:this.options.groupOrder})}}};ItemSet.prototype._onGroupDrag=function(event){if(this.options.groupEditable.order&&this.groupTouchParams.group){event.stopPropagation();var groupsData=this.groupsData;if(this.groupsData instanceof DataView){groupsData=this.groupsData.getDataSet()}var group=this.groupFromTarget(event);if(group&&group.height!=this.groupTouchParams.group.height){var movingUp=group.top<this.groupTouchParams.group.top;var clientY=event.center?event.center.y:event.clientY;var targetGroupTop=util.getAbsoluteTop(group.dom.foreground);var draggedGroupHeight=this.groupTouchParams.group.height;if(movingUp){if(targetGroupTop+draggedGroupHeight<clientY){return}}else{var targetGroupHeight=group.height;if(targetGroupTop+targetGroupHeight-draggedGroupHeight>clientY){return}}}if(group&&group!=this.groupTouchParams.group){var targetGroup=groupsData.get(group.groupId);var draggedGroup=groupsData.get(this.groupTouchParams.group.groupId);if(draggedGroup&&targetGroup){this.options.groupOrderSwap(draggedGroup,targetGroup,groupsData);groupsData.update(draggedGroup);groupsData.update(targetGroup)}var newOrder=groupsData.getIds({order:this.options.groupOrder});if(!util.equalArray(newOrder,this.groupTouchParams.originalOrder)){var origOrder=this.groupTouchParams.originalOrder;var draggedId=this.groupTouchParams.group.groupId;var numGroups=Math.min(origOrder.length,newOrder.length);var curPos=0;var newOffset=0;var orgOffset=0;while(curPos<numGroups){while(curPos+newOffset<numGroups&&curPos+orgOffset<numGroups&&newOrder[curPos+newOffset]==origOrder[curPos+orgOffset]){curPos++}if(curPos+newOffset>=numGroups){break}if(newOrder[curPos+newOffset]==draggedId){newOffset=1}else if(origOrder[curPos+orgOffset]==draggedId){orgOffset=1}else{var slippedPosition=newOrder.indexOf(origOrder[curPos+orgOffset]);var switchGroup=groupsData.get(newOrder[curPos+newOffset]);var shouldBeGroup=groupsData.get(origOrder[curPos+orgOffset]);this.options.groupOrderSwap(switchGroup,shouldBeGroup,groupsData);groupsData.update(switchGroup);groupsData.update(shouldBeGroup);var switchGroupId=newOrder[curPos+newOffset];newOrder[curPos+newOffset]=origOrder[curPos+orgOffset];newOrder[slippedPosition]=switchGroupId;curPos++}}}}}};ItemSet.prototype._onGroupDragEnd=function(event){if(this.options.groupEditable.order&&this.groupTouchParams.group){event.stopPropagation();var me=this;var id=me.groupTouchParams.group.groupId;var dataset=me.groupsData.getDataSet();var groupData=util.extend({},dataset.get(id));me.options.onMoveGroup(groupData,function(groupData){if(groupData){groupData[dataset._fieldId]=id;dataset.update(groupData)}else{var newOrder=dataset.getIds({order:me.options.groupOrder});if(!util.equalArray(newOrder,me.groupTouchParams.originalOrder)){var origOrder=me.groupTouchParams.originalOrder;var numGroups=Math.min(origOrder.length,newOrder.length);var curPos=0;while(curPos<numGroups){while(curPos<numGroups&&newOrder[curPos]==origOrder[curPos]){curPos++}if(curPos>=numGroups){break}var slippedPosition=newOrder.indexOf(origOrder[curPos]);var switchGroup=dataset.get(newOrder[curPos]);var shouldBeGroup=dataset.get(origOrder[curPos]);me.options.groupOrderSwap(switchGroup,shouldBeGroup,dataset);dataset.update(switchGroup);dataset.update(shouldBeGroup);var switchGroupId=newOrder[curPos];newOrder[curPos]=origOrder[curPos];newOrder[slippedPosition]=switchGroupId;curPos++}}}});me.body.emitter.emit(\"groupDragged\",{groupId:id})}};ItemSet.prototype._onSelectItem=function(event){if(!this.options.selectable)return;var ctrlKey=event.srcEvent&&(event.srcEvent.ctrlKey||event.srcEvent.metaKey);var shiftKey=event.srcEvent&&event.srcEvent.shiftKey;if(ctrlKey||shiftKey){this._onMultiSelectItem(event);return}var oldSelection=this.getSelection();var item=this.itemFromTarget(event);var selection=item?[item.id]:[];this.setSelection(selection);var newSelection=this.getSelection();if(newSelection.length>0||oldSelection.length>0){this.body.emitter.emit(\"select\",{items:newSelection,event:event})}};ItemSet.prototype._onMouseOver=function(event){var item=this.itemFromTarget(event);if(!item)return;var related=this.itemFromRelatedTarget(event);if(item===related){return}var title=item.getTitle();if(this.options.showTooltips&&title){if(this.popup==null){this.popup=new Popup(this.body.dom.root,this.options.tooltip.overflowMethod||\"flip\")}this.popup.setText(title);var container=this.body.dom.centerContainer;this.popup.setPosition(event.clientX-util.getAbsoluteLeft(container)+container.offsetLeft,event.clientY-util.getAbsoluteTop(container)+container.offsetTop);this.popup.show()}else{if(this.popup!=null){this.popup.hide()}}this.body.emitter.emit(\"itemover\",{item:item.id,event:event})};ItemSet.prototype._onMouseOut=function(event){var item=this.itemFromTarget(event);if(!item)return;var related=this.itemFromRelatedTarget(event);if(item===related){return}if(this.popup!=null){this.popup.hide()}this.body.emitter.emit(\"itemout\",{item:item.id,event:event})};ItemSet.prototype._onMouseMove=function(event){var item=this.itemFromTarget(event);if(!item)return;if(this.options.showTooltips&&this.options.tooltip.followMouse){if(this.popup){if(!this.popup.hidden){var container=this.body.dom.centerContainer;this.popup.setPosition(event.clientX-util.getAbsoluteLeft(container)+container.offsetLeft,event.clientY-util.getAbsoluteTop(container)+container.offsetTop);this.popup.show()}}}};ItemSet.prototype._onMouseWheel=function(event){if(this.touchParams.itemIsDragging){this._onDragEnd(event)}};ItemSet.prototype._onUpdateItem=function(item){if(!this.options.selectable)return;if(!this.options.editable.add)return;var me=this;if(item){var itemData=me.itemsData.get(item.id);this.options.onUpdate(itemData,function(itemData){if(itemData){me.itemsData.getDataSet().update(itemData)}})}};ItemSet.prototype._onDropObjectOnItem=function(event){var item=this.itemFromTarget(event);var objectData=JSON.parse(event.dataTransfer.getData(\"text\"));this.options.onDropObjectOnItem(objectData,item)};ItemSet.prototype._onAddItem=function(event){if(!this.options.selectable)return;if(!this.options.editable.add)return;var me=this;var snap=this.options.snap||null;var xAbs;var x;if(this.options.rtl){xAbs=util.getAbsoluteRight(this.dom.frame);x=xAbs-event.center.x}else{xAbs=util.getAbsoluteLeft(this.dom.frame);x=event.center.x-xAbs}var start=this.body.util.toTime(x);var scale=this.body.util.getScale();var step=this.body.util.getStep();var end;var newItemData;if(event.type==\"drop\"){newItemData=JSON.parse(event.dataTransfer.getData(\"text\"));newItemData.content=newItemData.content?newItemData.content:\"new item\";newItemData.start=newItemData.start?newItemData.start:snap?snap(start,scale,step):start;newItemData.type=newItemData.type||\"box\";newItemData[this.itemsData._fieldId]=newItemData.id||util.randomUUID();if(newItemData.type==\"range\"&&!newItemData.end){end=this.body.util.toTime(x+this.props.width/5);newItemData.end=snap?snap(end,scale,step):end}}else{newItemData={start:snap?snap(start,scale,step):start,content:\"new item\"};newItemData[this.itemsData._fieldId]=util.randomUUID();if(this.options.type===\"range\"){\nend=this.body.util.toTime(x+this.props.width/5);newItemData.end=snap?snap(end,scale,step):end}}var group=this.groupFromTarget(event);if(group){newItemData.group=group.groupId}newItemData=this._cloneItemData(newItemData);this.options.onAdd(newItemData,function(item){if(item){me.itemsData.getDataSet().add(item);if(event.type==\"drop\"){me.setSelection([item.id])}}})};ItemSet.prototype._onMultiSelectItem=function(event){if(!this.options.selectable)return;var item=this.itemFromTarget(event);if(item){var selection=this.options.multiselect?this.getSelection():[];var shiftKey=event.srcEvent&&event.srcEvent.shiftKey||false;if(shiftKey&&this.options.multiselect){var itemGroup=this.itemsData.get(item.id).group;var lastSelectedGroup=undefined;if(this.options.multiselectPerGroup){if(selection.length>0){lastSelectedGroup=this.itemsData.get(selection[0]).group}}if(!this.options.multiselectPerGroup||lastSelectedGroup==undefined||lastSelectedGroup==itemGroup){selection.push(item.id)}var range=ItemSet._getItemRange(this.itemsData.get(selection,this.itemOptions));if(!this.options.multiselectPerGroup||lastSelectedGroup==itemGroup){selection=[];for(var id in this.items){if(this.items.hasOwnProperty(id)){var _item=this.items[id];var start=_item.data.start;var end=_item.data.end!==undefined?_item.data.end:start;if(start>=range.min&&end<=range.max&&(!this.options.multiselectPerGroup||lastSelectedGroup==this.itemsData.get(_item.id).group)&&!(_item instanceof BackgroundItem)){selection.push(_item.id)}}}}}else{var index=selection.indexOf(item.id);if(index==-1){selection.push(item.id)}else{selection.splice(index,1)}}this.setSelection(selection);this.body.emitter.emit(\"select\",{items:this.getSelection(),event:event})}};ItemSet._getItemRange=function(itemsData){var max=null;var min=null;itemsData.forEach(function(data){if(min==null||data.start<min){min=data.start}if(data.end!=undefined){if(max==null||data.end>max){max=data.end}}else{if(max==null||data.start>max){max=data.start}}});return{min:min,max:max}};ItemSet.prototype.itemFromElement=function(element){var cur=element;while(cur){if(cur.hasOwnProperty(\"timeline-item\")){return cur[\"timeline-item\"]}cur=cur.parentNode}return null};ItemSet.prototype.itemFromTarget=function(event){return this.itemFromElement(event.target)};ItemSet.prototype.itemFromRelatedTarget=function(event){return this.itemFromElement(event.relatedTarget)};ItemSet.prototype.groupFromTarget=function(event){var clientY=event.center?event.center.y:event.clientY;var groupIds=this.groupIds;if(groupIds.length<=0&&this.groupsData){groupIds=this.groupsData.getIds({order:this.options.groupOrder})}for(var i=0;i<groupIds.length;i++){var groupId=groupIds[i];var group=this.groups[groupId];var foreground=group.dom.foreground;var top=util.getAbsoluteTop(foreground);if(clientY>top&&clientY<top+foreground.offsetHeight){return group}if(this.options.orientation.item===\"top\"){if(i===this.groupIds.length-1&&clientY>top){return group}}else{if(i===0&&clientY<top+foreground.offset){return group}}}return null};ItemSet.itemSetFromTarget=function(event){var target=event.target;while(target){if(target.hasOwnProperty(\"timeline-itemset\")){return target[\"timeline-itemset\"]}target=target.parentNode}return null};ItemSet.prototype._cloneItemData=function(itemData,type){var clone=util.extend({},itemData);if(!type){type=this.itemsData.getDataSet()._options.type}if(clone.start!=undefined){clone.start=util.convert(clone.start,type&&type.start||\"Date\")}if(clone.end!=undefined){clone.end=util.convert(clone.end,type&&type.end||\"Date\")}return clone};module.exports=ItemSet},function(module,exports,__webpack_require__){\"use strict\";var EPSILON=.001;exports.orderByStart=function(items){items.sort(function(a,b){return a.data.start-b.data.start})};exports.orderByEnd=function(items){items.sort(function(a,b){var aTime=\"end\"in a.data?a.data.end:a.data.start,bTime=\"end\"in b.data?b.data.end:b.data.start;return aTime-bTime})};exports.stack=function(items,margin,force){if(force){for(var i=0;i<items.length;i++){items[i].top=null}}for(var i=0;i<items.length;i++){var item=items[i];if(item.stack&&item.top===null){item.top=margin.axis;do{var collidingItem=null;for(var j=0,jj=items.length;j<jj;j++){var other=items[j];if(other.top!==null&&other!==item&&other.stack&&exports.collision(item,other,margin.item,other.options.rtl)){collidingItem=other;break}}if(collidingItem!=null){item.top=collidingItem.top+collidingItem.height+margin.item.vertical}}while(collidingItem)}}};exports.substack=function(items,margin,subgroup){for(var i=0;i<items.length;i++){items[i].top=null}var subgroupHeight=subgroup.height;for(i=0;i<items.length;i++){var item=items[i];if(item.stack&&item.top===null){item.top=item.baseTop;do{var collidingItem=null;for(var j=0,jj=items.length;j<jj;j++){var other=items[j];if(other.top!==null&&other!==item&&exports.collision(item,other,margin.item,other.options.rtl)){collidingItem=other;break}}if(collidingItem!=null){item.top=collidingItem.top+collidingItem.height+margin.item.vertical}if(item.top+item.height>subgroupHeight){subgroupHeight=item.top+item.height}}while(collidingItem)}}subgroup.height=subgroupHeight-subgroup.top+.5*margin.item.vertical};exports.nostack=function(items,margin,subgroups,stackSubgroups){for(var i=0;i<items.length;i++){if(items[i].data.subgroup==undefined){items[i].top=margin.item.vertical}else if(items[i].data.subgroup!==undefined&&stackSubgroups){var newTop=0;for(var subgroup in subgroups){if(subgroups.hasOwnProperty(subgroup)){if(subgroups[subgroup].visible==true&&subgroups[subgroup].index<subgroups[items[i].data.subgroup].index){newTop+=subgroups[subgroup].height;subgroups[items[i].data.subgroup].top=newTop}}}items[i].top=newTop+.5*margin.item.vertical}}if(!stackSubgroups){exports.stackSubgroups(items,margin,subgroups)}};exports.stackSubgroups=function(items,margin,subgroups){for(var subgroup in subgroups){if(subgroups.hasOwnProperty(subgroup)){subgroups[subgroup].top=0;do{var collidingItem=null;for(var otherSubgroup in subgroups){if(subgroups[otherSubgroup].top!==null&&otherSubgroup!==subgroup&&subgroups[subgroup].index>subgroups[otherSubgroup].index&&exports.collisionByTimes(subgroups[subgroup],subgroups[otherSubgroup])){collidingItem=subgroups[otherSubgroup];break}}if(collidingItem!=null){subgroups[subgroup].top=collidingItem.top+collidingItem.height}}while(collidingItem)}}for(var i=0;i<items.length;i++){if(items[i].data.subgroup!==undefined){items[i].top=subgroups[items[i].data.subgroup].top+.5*margin.item.vertical}}};exports.stackSubgroupsWithInnerStack=function(subgroupItems,margin,subgroups){var doSubStack=false;var subgroupOrder=[];for(var subgroup in subgroups){if(subgroups[subgroup].hasOwnProperty(\"index\")){subgroupOrder[subgroups[subgroup].index]=subgroup}else{subgroupOrder.push(subgroup)}}for(var j=0;j<subgroupOrder.length;j++){subgroup=subgroupOrder[j];if(subgroups.hasOwnProperty(subgroup)){doSubStack=doSubStack||subgroups[subgroup].stack;subgroups[subgroup].top=0;for(var otherSubgroup in subgroups){if(subgroups[otherSubgroup].visible&&subgroups[subgroup].index>subgroups[otherSubgroup].index){subgroups[subgroup].top+=subgroups[otherSubgroup].height}}var items=subgroupItems[subgroup];for(var i=0;i<items.length;i++){if(items[i].data.subgroup!==undefined){items[i].top=subgroups[items[i].data.subgroup].top+.5*margin.item.vertical;if(subgroups[subgroup].stack){items[i].baseTop=items[i].top}}}if(doSubStack&&subgroups[subgroup].stack){exports.substack(subgroupItems[subgroup],margin,subgroups[subgroup])}}}};exports.collision=function(a,b,margin,rtl){if(rtl){return a.right-margin.horizontal+EPSILON<b.right+b.width&&a.right+a.width+margin.horizontal-EPSILON>b.right&&a.top-margin.vertical+EPSILON<b.top+b.height&&a.top+a.height+margin.vertical-EPSILON>b.top}else{return a.left-margin.horizontal+EPSILON<b.left+b.width&&a.left+a.width+margin.horizontal-EPSILON>b.left&&a.top-margin.vertical+EPSILON<b.top+b.height&&a.top+a.height+margin.vertical-EPSILON>b.top}};exports.collisionByTimes=function(a,b){return a.start<=b.start&&a.end>=b.start&&a.top<b.top+b.height&&a.top+a.height>b.top||b.start<=a.start&&b.end>=a.start&&b.top<a.top+a.height&&b.top+b.height>a.top}},function(module,exports,__webpack_require__){\"use strict\";var Item=__webpack_require__(38);function BoxItem(data,conversion,options){this.props={dot:{width:0,height:0},line:{width:0,height:0}};this.options=options;if(data){if(data.start==undefined){throw new Error('Property \"start\" missing in item '+data)}}Item.call(this,data,conversion,options)}BoxItem.prototype=new Item(null,null,null);BoxItem.prototype.isVisible=function(range){var isVisible;var align=this.options.align;var widthInMs=this.width*range.getMillisecondsPerPixel();if(align==\"right\"){isVisible=this.data.start.getTime()>range.start&&this.data.start.getTime()-widthInMs<range.end}else if(align==\"left\"){isVisible=this.data.start.getTime()+widthInMs>range.start&&this.data.start.getTime()<range.end}else{isVisible=this.data.start.getTime()+widthInMs/2>range.start&&this.data.start.getTime()-widthInMs/2<range.end}return isVisible};BoxItem.prototype._createDomElement=function(){if(!this.dom){this.dom={};this.dom.box=document.createElement(\"DIV\");this.dom.content=document.createElement(\"DIV\");this.dom.content.className=\"vis-item-content\";this.dom.box.appendChild(this.dom.content);this.dom.line=document.createElement(\"DIV\");this.dom.line.className=\"vis-line\";this.dom.dot=document.createElement(\"DIV\");this.dom.dot.className=\"vis-dot\";this.dom.box[\"timeline-item\"]=this;this.dirty=true}};BoxItem.prototype._appendDomElement=function(){if(!this.parent){throw new Error(\"Cannot redraw item: no parent attached\")}if(!this.dom.box.parentNode){var foreground=this.parent.dom.foreground;if(!foreground)throw new Error(\"Cannot redraw item: parent has no foreground container element\");foreground.appendChild(this.dom.box)}if(!this.dom.line.parentNode){var background=this.parent.dom.background;if(!background)throw new Error(\"Cannot redraw item: parent has no background container element\");background.appendChild(this.dom.line)}if(!this.dom.dot.parentNode){var axis=this.parent.dom.axis;if(!background)throw new Error(\"Cannot redraw item: parent has no axis container element\");axis.appendChild(this.dom.dot)}this.displayed=true};BoxItem.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content);this._updateDataAttributes(this.dom.box);this._updateStyle(this.dom.box);var editable=this.editable.updateTime||this.editable.updateGroup;var className=(this.data.className?\" \"+this.data.className:\"\")+(this.selected?\" vis-selected\":\"\")+(editable?\" vis-editable\":\" vis-readonly\");this.dom.box.className=\"vis-item vis-box\"+className;this.dom.line.className=\"vis-item vis-line\"+className;this.dom.dot.className=\"vis-item vis-dot\"+className}};BoxItem.prototype._getDomComponentsSizes=function(){return{previous:{right:this.dom.box.style.right,left:this.dom.box.style.left},dot:{height:this.dom.dot.offsetHeight,width:this.dom.dot.offsetWidth},line:{width:this.dom.line.offsetWidth},box:{width:this.dom.box.offsetWidth,height:this.dom.box.offsetHeight}}};BoxItem.prototype._updateDomComponentsSizes=function(sizes){if(this.options.rtl){this.dom.box.style.right=\"0px\"}else{this.dom.box.style.left=\"0px\"}this.props.dot.height=sizes.dot.height;this.props.dot.width=sizes.dot.width;this.props.line.width=sizes.line.width;this.width=sizes.box.width;this.height=sizes.box.height;if(this.options.rtl){this.dom.box.style.right=sizes.previous.right}else{this.dom.box.style.left=sizes.previous.left}this.dirty=false};BoxItem.prototype._repaintDomAdditionals=function(){this._repaintOnItemUpdateTimeTooltip(this.dom.box);this._repaintDragCenter();this._repaintDeleteButton(this.dom.box)};BoxItem.prototype.redraw=function(returnQueue){var sizes;var queue=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){if(this.dirty){sizes=this._getDomComponentsSizes()}}.bind(this),function(){if(this.dirty){this._updateDomComponentsSizes.bind(this)(sizes)}}.bind(this),this._repaintDomAdditionals.bind(this)];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};BoxItem.prototype.show=function(){if(!this.displayed){this.redraw()}};BoxItem.prototype.hide=function(){if(this.displayed){var dom=this.dom;if(dom.box.parentNode)dom.box.parentNode.removeChild(dom.box);if(dom.line.parentNode)dom.line.parentNode.removeChild(dom.line);if(dom.dot.parentNode)dom.dot.parentNode.removeChild(dom.dot);this.displayed=false}};BoxItem.prototype.repositionX=function(){var start=this.conversion.toScreen(this.data.start);var align=this.options.align;if(align==\"right\"){if(this.options.rtl){this.right=start-this.width;this.dom.box.style.right=this.right+\"px\";this.dom.line.style.right=start-this.props.line.width+\"px\";this.dom.dot.style.right=start-this.props.line.width/2-this.props.dot.width/2+\"px\"}else{this.left=start-this.width;this.dom.box.style.left=this.left+\"px\";this.dom.line.style.left=start-this.props.line.width+\"px\";this.dom.dot.style.left=start-this.props.line.width/2-this.props.dot.width/2+\"px\"}}else if(align==\"left\"){if(this.options.rtl){this.right=start;this.dom.box.style.right=this.right+\"px\";this.dom.line.style.right=start+\"px\";this.dom.dot.style.right=start+this.props.line.width/2-this.props.dot.width/2+\"px\"}else{this.left=start;this.dom.box.style.left=this.left+\"px\";this.dom.line.style.left=start+\"px\";this.dom.dot.style.left=start+this.props.line.width/2-this.props.dot.width/2+\"px\"}}else{if(this.options.rtl){this.right=start-this.width/2;this.dom.box.style.right=this.right+\"px\";this.dom.line.style.right=start-this.props.line.width+\"px\";this.dom.dot.style.right=start-this.props.dot.width/2+\"px\"}else{this.left=start-this.width/2;this.dom.box.style.left=this.left+\"px\";this.dom.line.style.left=start-this.props.line.width/2+\"px\";this.dom.dot.style.left=start-this.props.dot.width/2+\"px\"}}};BoxItem.prototype.repositionY=function(){var orientation=this.options.orientation.item;var box=this.dom.box;var line=this.dom.line;var dot=this.dom.dot;if(orientation==\"top\"){box.style.top=(this.top||0)+\"px\";line.style.top=\"0\";line.style.height=this.parent.top+this.top+1+\"px\";line.style.bottom=\"\"}else{var itemSetHeight=this.parent.itemSet.props.height;var lineHeight=itemSetHeight-this.parent.top-this.parent.height+this.top;box.style.top=(this.parent.height-this.top-this.height||0)+\"px\";line.style.top=itemSetHeight-lineHeight+\"px\";line.style.bottom=\"0\"}dot.style.top=-this.props.dot.height/2+\"px\"};BoxItem.prototype.getWidthLeft=function(){return this.width/2};BoxItem.prototype.getWidthRight=function(){return this.width/2};module.exports=BoxItem},function(module,exports,__webpack_require__){\"use strict\";var Item=__webpack_require__(38);function PointItem(data,conversion,options){this.props={dot:{top:0,width:0,height:0},content:{height:0,marginLeft:0,marginRight:0}};this.options=options;if(data){if(data.start==undefined){throw new Error('Property \"start\" missing in item '+data)}}Item.call(this,data,conversion,options)}PointItem.prototype=new Item(null,null,null);PointItem.prototype.isVisible=function(range){var widthInMs=this.width*range.getMillisecondsPerPixel();return this.data.start.getTime()+widthInMs>range.start&&this.data.start<range.end};PointItem.prototype._createDomElement=function(){if(!this.dom){this.dom={};this.dom.point=document.createElement(\"div\");this.dom.content=document.createElement(\"div\");this.dom.content.className=\"vis-item-content\";this.dom.point.appendChild(this.dom.content);this.dom.dot=document.createElement(\"div\");this.dom.point.appendChild(this.dom.dot);this.dom.point[\"timeline-item\"]=this;this.dirty=true}};PointItem.prototype._appendDomElement=function(){if(!this.parent){throw new Error(\"Cannot redraw item: no parent attached\")}if(!this.dom.point.parentNode){var foreground=this.parent.dom.foreground;if(!foreground){throw new Error(\"Cannot redraw item: parent has no foreground container element\")}foreground.appendChild(this.dom.point)}this.displayed=true};PointItem.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content);this._updateDataAttributes(this.dom.point);this._updateStyle(this.dom.point);var editable=this.editable.updateTime||this.editable.updateGroup;var className=(this.data.className?\" \"+this.data.className:\"\")+(this.selected?\" vis-selected\":\"\")+(editable?\" vis-editable\":\" vis-readonly\");this.dom.point.className=\"vis-item vis-point\"+className;this.dom.dot.className=\"vis-item vis-dot\"+className}};PointItem.prototype._getDomComponentsSizes=function(){return{dot:{width:this.dom.dot.offsetWidth,height:this.dom.dot.offsetHeight},content:{width:this.dom.content.offsetWidth,height:this.dom.content.offsetHeight},point:{width:this.dom.point.offsetWidth,height:this.dom.point.offsetHeight}}};PointItem.prototype._updateDomComponentsSizes=function(sizes){this.props.dot.width=sizes.dot.width;this.props.dot.height=sizes.dot.height;this.props.content.height=sizes.content.height;if(this.options.rtl){this.dom.content.style.marginRight=2*this.props.dot.width+\"px\"}else{this.dom.content.style.marginLeft=2*this.props.dot.width+\"px\"}this.width=sizes.point.width;this.height=sizes.point.height;this.dom.dot.style.top=(this.height-this.props.dot.height)/2+\"px\";if(this.options.rtl){this.dom.dot.style.right=this.props.dot.width/2+\"px\"}else{this.dom.dot.style.left=this.props.dot.width/2+\"px\"}this.dirty=false};PointItem.prototype._repaintDomAdditionals=function(){this._repaintOnItemUpdateTimeTooltip(this.dom.point);this._repaintDragCenter();this._repaintDeleteButton(this.dom.point)};PointItem.prototype.redraw=function(returnQueue){var sizes;var queue=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){if(this.dirty){sizes=this._getDomComponentsSizes()}}.bind(this),function(){if(this.dirty){this._updateDomComponentsSizes.bind(this)(sizes)}}.bind(this),this._repaintDomAdditionals.bind(this)];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};PointItem.prototype.show=function(){if(!this.displayed){this.redraw()}};PointItem.prototype.hide=function(){if(this.displayed){if(this.dom.point.parentNode){this.dom.point.parentNode.removeChild(this.dom.point)}this.displayed=false}};PointItem.prototype.repositionX=function(){var start=this.conversion.toScreen(this.data.start);if(this.options.rtl){this.right=start-this.props.dot.width;this.dom.point.style.right=this.right+\"px\"}else{this.left=start-this.props.dot.width;this.dom.point.style.left=this.left+\"px\"}};PointItem.prototype.repositionY=function(){var orientation=this.options.orientation.item;var point=this.dom.point;if(orientation==\"top\"){point.style.top=this.top+\"px\"}else{point.style.top=this.parent.height-this.top-this.height+\"px\"}};PointItem.prototype.getWidthLeft=function(){return this.props.dot.width};PointItem.prototype.getWidthRight=function(){return this.props.dot.width};module.exports=PointItem},function(module,exports,__webpack_require__){\"use strict\";var Item=__webpack_require__(38);var BackgroundGroup=__webpack_require__(69);var RangeItem=__webpack_require__(70);function BackgroundItem(data,conversion,options){this.props={content:{width:0}};this.overflow=false;if(data){if(data.start==undefined){throw new Error('Property \"start\" missing in item '+data.id)}if(data.end==undefined){throw new Error('Property \"end\" missing in item '+data.id)}}Item.call(this,data,conversion,options)}BackgroundItem.prototype=new Item(null,null,null);BackgroundItem.prototype.baseClassName=\"vis-item vis-background\";BackgroundItem.prototype.stack=false;BackgroundItem.prototype.isVisible=function(range){return this.data.start<range.end&&this.data.end>range.start};BackgroundItem.prototype._createDomElement=function(){if(!this.dom){this.dom={};this.dom.box=document.createElement(\"div\");this.dom.frame=document.createElement(\"div\");this.dom.frame.className=\"vis-item-overflow\";this.dom.box.appendChild(this.dom.frame);this.dom.content=document.createElement(\"div\");this.dom.content.className=\"vis-item-content\";this.dom.frame.appendChild(this.dom.content);this.dirty=true}};BackgroundItem.prototype._appendDomElement=function(){if(!this.parent){throw new Error(\"Cannot redraw item: no parent attached\")}if(!this.dom.box.parentNode){var background=this.parent.dom.background;if(!background){throw new Error(\"Cannot redraw item: parent has no background container element\")}background.appendChild(this.dom.box)}this.displayed=true};BackgroundItem.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content);this._updateDataAttributes(this.dom.content);this._updateStyle(this.dom.box);var className=(this.data.className?\" \"+this.data.className:\"\")+(this.selected?\" vis-selected\":\"\");this.dom.box.className=this.baseClassName+className}};BackgroundItem.prototype._getDomComponentsSizes=function(){this.overflow=window.getComputedStyle(this.dom.content).overflow!==\"hidden\";return{content:{width:this.dom.content.offsetWidth}}};BackgroundItem.prototype._updateDomComponentsSizes=function(sizes){this.props.content.width=sizes.content.width;this.height=0;this.dirty=false};BackgroundItem.prototype._repaintDomAdditionals=function(){};BackgroundItem.prototype.redraw=function(returnQueue){var sizes;var queue=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){if(this.dirty){sizes=this._getDomComponentsSizes.bind(this)()}}.bind(this),function(){if(this.dirty){this._updateDomComponentsSizes.bind(this)(sizes)}}.bind(this),this._repaintDomAdditionals.bind(this)];if(returnQueue){return queue}else{var result;queue.forEach(function(fn){result=fn()});return result}};BackgroundItem.prototype.show=RangeItem.prototype.show;BackgroundItem.prototype.hide=RangeItem.prototype.hide;BackgroundItem.prototype.repositionX=RangeItem.prototype.repositionX;BackgroundItem.prototype.repositionY=function(margin){var height;var orientation=this.options.orientation.item;if(this.data.subgroup!==undefined){var itemSubgroup=this.data.subgroup;this.dom.box.style.height=this.parent.subgroups[itemSubgroup].height+\"px\";if(orientation==\"top\"){this.dom.box.style.top=this.parent.top+this.parent.subgroups[itemSubgroup].top+\"px\"}else{this.dom.box.style.top=this.parent.top+this.parent.height-this.parent.subgroups[itemSubgroup].top-this.parent.subgroups[itemSubgroup].height+\"px\"}this.dom.box.style.bottom=\"\"}else{if(this.parent instanceof BackgroundGroup){height=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height);this.dom.box.style.bottom=orientation==\"bottom\"?\"0\":\"\";this.dom.box.style.top=orientation==\"top\"?\"0\":\"\"}else{height=this.parent.height;this.dom.box.style.top=this.parent.top+\"px\";this.dom.box.style.bottom=\"\"}}this.dom.box.style.height=height+\"px\"};module.exports=BackgroundItem},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Popup=function(){function Popup(container,overflowMethod){(0,_classCallCheck3[\"default\"])(this,Popup);this.container=container;this.overflowMethod=overflowMethod||\"cap\";this.x=0;this.y=0;this.padding=5;this.hidden=false;this.frame=document.createElement(\"div\");this.frame.className=\"vis-tooltip\";this.container.appendChild(this.frame)}(0,_createClass3[\"default\"])(Popup,[{key:\"setPosition\",value:function setPosition(x,y){this.x=parseInt(x);this.y=parseInt(y)}},{key:\"setText\",value:function setText(content){if(content instanceof Element){this.frame.innerHTML=\"\";this.frame.appendChild(content)}else{this.frame.innerHTML=content}}},{key:\"show\",value:function show(doShow){if(doShow===undefined){doShow=true}if(doShow===true){var height=this.frame.clientHeight;var width=this.frame.clientWidth;var maxHeight=this.frame.parentNode.clientHeight;var maxWidth=this.frame.parentNode.clientWidth;var left=0,top=0;if(this.overflowMethod==\"flip\"){var isLeft=false,isTop=true;if(this.y-height<this.padding){isTop=false}if(this.x+width>maxWidth-this.padding){isLeft=true}if(isLeft){left=this.x-width}else{left=this.x}if(isTop){top=this.y-height}else{top=this.y}}else{top=this.y-height;if(top+height+this.padding>maxHeight){top=maxHeight-height-this.padding}if(top<this.padding){top=this.padding}left=this.x;if(left+width+this.padding>maxWidth){left=maxWidth-width-this.padding}if(left<this.padding){left=this.padding}}this.frame.style.left=left+\"px\";this.frame.style.top=top+\"px\";this.frame.style.visibility=\"visible\";this.hidden=false}else{this.hide()}}},{key:\"hide\",value:function hide(){this.hidden=true;this.frame.style.left=\"0\";this.frame.style.top=\"0\";this.frame.style.visibility=\"hidden\"}},{key:\"destroy\",value:function destroy(){this.frame.parentNode.removeChild(this.frame)}}]);return Popup}();exports[\"default\"]=Popup},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var string=\"string\";var bool=\"boolean\";var number=\"number\";var array=\"array\";var date=\"date\";var object=\"object\";var dom=\"dom\";var moment=\"moment\";var any=\"any\";var allOptions={configure:{enabled:{boolean:bool},filter:{boolean:bool,function:\"function\"},container:{dom:dom},__type__:{object:object,boolean:bool,function:\"function\"}},align:{string:string},rtl:{boolean:bool,undefined:\"undefined\"},rollingMode:{follow:{boolean:bool},offset:{number:number,undefined:\"undefined\"},__type__:{object:object}},verticalScroll:{boolean:bool,undefined:\"undefined\"},horizontalScroll:{boolean:bool,undefined:\"undefined\"},autoResize:{boolean:bool},throttleRedraw:{number:number},clickToUse:{boolean:bool},dataAttributes:{string:string,array:array},editable:{add:{boolean:bool,undefined:\"undefined\"},remove:{boolean:bool,undefined:\"undefined\"},updateGroup:{boolean:bool,undefined:\"undefined\"},updateTime:{boolean:bool,undefined:\"undefined\"},overrideItems:{boolean:bool,undefined:\"undefined\"},__type__:{boolean:bool,object:object}},end:{number:number,date:date,string:string,moment:moment},format:{minorLabels:{millisecond:{string:string,undefined:\"undefined\"},second:{string:string,undefined:\"undefined\"},minute:{string:string,undefined:\"undefined\"},hour:{string:string,undefined:\"undefined\"},weekday:{string:string,undefined:\"undefined\"},day:{string:string,undefined:\"undefined\"},week:{string:string,undefined:\"undefined\"},month:{string:string,undefined:\"undefined\"},year:{string:string,undefined:\"undefined\"},__type__:{object:object,function:\"function\"}},majorLabels:{millisecond:{string:string,undefined:\"undefined\"},second:{string:string,undefined:\"undefined\"},minute:{string:string,undefined:\"undefined\"},hour:{string:string,undefined:\"undefined\"},weekday:{string:string,undefined:\"undefined\"},day:{string:string,undefined:\"undefined\"},week:{string:string,undefined:\"undefined\"},month:{string:string,undefined:\"undefined\"},year:{string:string,undefined:\"undefined\"},__type__:{object:object,function:\"function\"}},__type__:{object:object}},moment:{function:\"function\"},groupOrder:{string:string,function:\"function\"},groupEditable:{add:{boolean:bool,undefined:\"undefined\"},remove:{boolean:bool,undefined:\"undefined\"},order:{boolean:bool,undefined:\"undefined\"},__type__:{boolean:bool,object:object}},groupOrderSwap:{function:\"function\"},height:{string:string,number:number},hiddenDates:{start:{date:date,number:number,string:string,moment:moment},end:{date:date,number:number,string:string,moment:moment},repeat:{string:string},__type__:{object:object,array:array}},itemsAlwaysDraggable:{item:{boolean:bool,undefined:\"undefined\"},range:{boolean:bool,undefined:\"undefined\"},__type__:{boolean:bool,object:object}},limitSize:{boolean:bool},locale:{string:string},locales:{__any__:{any:any},__type__:{object:object}},margin:{axis:{number:number},item:{horizontal:{number:number,undefined:\"undefined\"},vertical:{number:number,undefined:\"undefined\"},__type__:{object:object,number:number}},__type__:{object:object,number:number}},max:{date:date,number:number,string:string,moment:moment},maxHeight:{number:number,string:string},maxMinorChars:{number:number},min:{date:date,number:number,string:string,moment:moment},minHeight:{number:number,string:string},moveable:{boolean:bool},multiselect:{boolean:bool},multiselectPerGroup:{boolean:bool},onAdd:{function:\"function\"},onDropObjectOnItem:{function:\"function\"},onUpdate:{function:\"function\"},onMove:{function:\"function\"},onMoving:{function:\"function\"},onRemove:{function:\"function\"},onAddGroup:{function:\"function\"},onMoveGroup:{function:\"function\"},onRemoveGroup:{function:\"function\"},onInitialDrawComplete:{function:\"function\"},order:{function:\"function\"},orientation:{axis:{string:string,undefined:\"undefined\"},item:{string:string,undefined:\"undefined\"},__type__:{string:string,object:object}},selectable:{boolean:bool},showCurrentTime:{boolean:bool},showMajorLabels:{boolean:bool},showMinorLabels:{boolean:bool},stack:{boolean:bool},stackSubgroups:{boolean:bool},snap:{function:\"function\",null:\"null\"},start:{date:date,number:number,string:string,moment:moment},template:{function:\"function\"},groupTemplate:{function:\"function\"},visibleFrameTemplate:{string:string,function:\"function\"},showTooltips:{boolean:bool},tooltip:{followMouse:{boolean:bool},overflowMethod:{string:[\"cap\",\"flip\"]},__type__:{object:object}},tooltipOnItemUpdateTime:{template:{function:\"function\"},__type__:{boolean:bool,object:object}},timeAxis:{scale:{string:string,undefined:\"undefined\"},step:{number:number,undefined:\"undefined\"},__type__:{object:object}},type:{string:string},width:{string:string,number:number},zoomable:{boolean:bool},zoomKey:{string:[\"ctrlKey\",\"altKey\",\"metaKey\",\"\"]},zoomMax:{number:number},zoomMin:{number:number},__type__:{object:object}};var configureOptions={global:{align:[\"center\",\"left\",\"right\"],direction:false,autoResize:true,clickToUse:false,editable:{add:false,remove:false,updateGroup:false,updateTime:false},end:\"\",format:{minorLabels:{millisecond:\"SSS\",second:\"s\",minute:\"HH:mm\",hour:\"HH:mm\",weekday:\"ddd D\",day:\"D\",week:\"w\",month:\"MMM\",year:\"YYYY\"},majorLabels:{millisecond:\"HH:mm:ss\",second:\"D MMMM HH:mm\",minute:\"ddd D MMMM\",hour:\"ddd D MMMM\",weekday:\"MMMM YYYY\",day:\"MMMM YYYY\",week:\"MMMM YYYY\",month:\"YYYY\",year:\"\"}},groupsDraggable:false,height:\"\",locale:\"\",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:\"\",maxHeight:\"\",maxMinorChars:[7,0,20,1],min:\"\",minHeight:\"\",moveable:false,multiselect:false,multiselectPerGroup:false,orientation:{axis:[\"both\",\"bottom\",\"top\"],item:[\"bottom\",\"top\"]},selectable:true,showCurrentTime:false,showMajorLabels:true,showMinorLabels:true,stack:true,stackSubgroups:true,start:\"\",showTooltips:true,tooltip:{followMouse:false,overflowMethod:\"flip\"},tooltipOnItemUpdateTime:false,type:[\"box\",\"point\",\"range\",\"background\"],width:\"100%\",zoomable:true,zoomKey:[\"ctrlKey\",\"altKey\",\"metaKey\",\"\"],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};exports.allOptions=allOptions;exports.configureOptions=configureOptions},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DOMutil=__webpack_require__(14);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Component=__webpack_require__(16);var DataAxis=__webpack_require__(107);var GraphGroup=__webpack_require__(109);var Legend=__webpack_require__(112);var Bars=__webpack_require__(110)\n;var Lines=__webpack_require__(111);var Points=__webpack_require__(72);var UNGROUPED=\"__ungrouped__\";function LineGraph(body,options){this.id=util.randomUUID();this.body=body;this.defaultOptions={yAxisOrientation:\"left\",defaultGroup:\"default\",sort:true,sampling:true,stack:false,graphHeight:\"400px\",shaded:{enabled:false,orientation:\"bottom\"},style:\"line\",barChart:{width:50,sideBySide:false,align:\"center\"},interpolation:{enabled:true,parametrization:\"centripetal\",alpha:.5},drawPoints:{enabled:true,size:6,style:\"square\"},dataAxis:{},legend:{},groups:{visibility:{}}};this.options=util.extend({},this.defaultOptions);this.dom={};this.props={};this.hammer=null;this.groups={};this.abortedGraphUpdate=false;this.updateSVGheight=false;this.updateSVGheightOnResize=false;this.forceGraphUpdate=true;var me=this;this.itemsData=null;this.groupsData=null;this.itemListeners={add:function add(event,params,senderId){me._onAdd(params.items)},update:function update(event,params,senderId){me._onUpdate(params.items)},remove:function remove(event,params,senderId){me._onRemove(params.items)}};this.groupListeners={add:function add(event,params,senderId){me._onAddGroups(params.items)},update:function update(event,params,senderId){me._onUpdateGroups(params.items)},remove:function remove(event,params,senderId){me._onRemoveGroups(params.items)}};this.items={};this.selection=[];this.lastStart=this.body.range.start;this.touchParams={};this.svgElements={};this.setOptions(options);this.groupsUsingDefaultStyles=[0];this.body.emitter.on(\"rangechanged\",function(){me.lastStart=me.body.range.start;me.svg.style.left=util.option.asSize(-me.props.width);me.forceGraphUpdate=true;me.redraw.call(me)});this._create();this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}LineGraph.prototype=new Component;LineGraph.prototype._create=function(){var frame=document.createElement(\"div\");frame.className=\"vis-line-graph\";this.dom.frame=frame;this.svg=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");this.svg.style.position=\"relative\";this.svg.style.height=(\"\"+this.options.graphHeight).replace(\"px\",\"\")+\"px\";this.svg.style.display=\"block\";frame.appendChild(this.svg);this.options.dataAxis.orientation=\"left\";this.yAxisLeft=new DataAxis(this.body,this.options.dataAxis,this.svg,this.options.groups);this.options.dataAxis.orientation=\"right\";this.yAxisRight=new DataAxis(this.body,this.options.dataAxis,this.svg,this.options.groups);delete this.options.dataAxis.orientation;this.legendLeft=new Legend(this.body,this.options.legend,\"left\",this.options.groups);this.legendRight=new Legend(this.body,this.options.legend,\"right\",this.options.groups);this.show()};LineGraph.prototype.setOptions=function(options){if(options){var fields=[\"sampling\",\"defaultGroup\",\"stack\",\"height\",\"graphHeight\",\"yAxisOrientation\",\"style\",\"barChart\",\"dataAxis\",\"sort\",\"groups\"];if(options.graphHeight===undefined&&options.height!==undefined){this.updateSVGheight=true;this.updateSVGheightOnResize=true}else if(this.body.domProps.centerContainer.height!==undefined&&options.graphHeight!==undefined){if(parseInt((options.graphHeight+\"\").replace(\"px\",\"\"))<this.body.domProps.centerContainer.height){this.updateSVGheight=true}}util.selectiveDeepExtend(fields,this.options,options);util.mergeOptions(this.options,options,\"interpolation\");util.mergeOptions(this.options,options,\"drawPoints\");util.mergeOptions(this.options,options,\"shaded\");util.mergeOptions(this.options,options,\"legend\");if(options.interpolation){if((0,_typeof3[\"default\"])(options.interpolation)==\"object\"){if(options.interpolation.parametrization){if(options.interpolation.parametrization==\"uniform\"){this.options.interpolation.alpha=0}else if(options.interpolation.parametrization==\"chordal\"){this.options.interpolation.alpha=1}else{this.options.interpolation.parametrization=\"centripetal\";this.options.interpolation.alpha=.5}}}}if(this.yAxisLeft){if(options.dataAxis!==undefined){this.yAxisLeft.setOptions(this.options.dataAxis);this.yAxisRight.setOptions(this.options.dataAxis)}}if(this.legendLeft){if(options.legend!==undefined){this.legendLeft.setOptions(this.options.legend);this.legendRight.setOptions(this.options.legend)}}if(this.groups.hasOwnProperty(UNGROUPED)){this.groups[UNGROUPED].setOptions(options)}}if(this.dom.frame){this.forceGraphUpdate=true;this.body.emitter.emit(\"_change\",{queue:true})}};LineGraph.prototype.hide=function(){if(this.dom.frame.parentNode){this.dom.frame.parentNode.removeChild(this.dom.frame)}};LineGraph.prototype.show=function(){if(!this.dom.frame.parentNode){this.body.dom.center.appendChild(this.dom.frame)}};LineGraph.prototype.setItems=function(items){var me=this,ids,oldItemsData=this.itemsData;if(!items){this.itemsData=null}else if(items instanceof DataSet||items instanceof DataView){this.itemsData=items}else{throw new TypeError(\"Data must be an instance of DataSet or DataView\")}if(oldItemsData){util.forEach(this.itemListeners,function(callback,event){oldItemsData.off(event,callback)});ids=oldItemsData.getIds();this._onRemove(ids)}if(this.itemsData){var id=this.id;util.forEach(this.itemListeners,function(callback,event){me.itemsData.on(event,callback,id)});ids=this.itemsData.getIds();this._onAdd(ids)}};LineGraph.prototype.setGroups=function(groups){var me=this;var ids;if(this.groupsData){util.forEach(this.groupListeners,function(callback,event){me.groupsData.off(event,callback)});ids=this.groupsData.getIds();this.groupsData=null;for(var i=0;i<ids.length;i++){this._removeGroup(ids[i])}}if(!groups){this.groupsData=null}else if(groups instanceof DataSet||groups instanceof DataView){this.groupsData=groups}else{throw new TypeError(\"Data must be an instance of DataSet or DataView\")}if(this.groupsData){var id=this.id;util.forEach(this.groupListeners,function(callback,event){me.groupsData.on(event,callback,id)});ids=this.groupsData.getIds();this._onAddGroups(ids)}};LineGraph.prototype._onUpdate=function(ids){this._updateAllGroupData(ids)};LineGraph.prototype._onAdd=function(ids){this._onUpdate(ids)};LineGraph.prototype._onRemove=function(ids){this._onUpdate(ids)};LineGraph.prototype._onUpdateGroups=function(groupIds){this._updateAllGroupData(null,groupIds)};LineGraph.prototype._onAddGroups=function(groupIds){this._onUpdateGroups(groupIds)};LineGraph.prototype._onRemoveGroups=function(groupIds){for(var i=0;i<groupIds.length;i++){this._removeGroup(groupIds[i])}this.forceGraphUpdate=true;this.body.emitter.emit(\"_change\",{queue:true})};LineGraph.prototype._removeGroup=function(groupId){if(this.groups.hasOwnProperty(groupId)){if(this.groups[groupId].options.yAxisOrientation==\"right\"){this.yAxisRight.removeGroup(groupId);this.legendRight.removeGroup(groupId);this.legendRight.redraw()}else{this.yAxisLeft.removeGroup(groupId);this.legendLeft.removeGroup(groupId);this.legendLeft.redraw()}delete this.groups[groupId]}};LineGraph.prototype._updateGroup=function(group,groupId){if(!this.groups.hasOwnProperty(groupId)){this.groups[groupId]=new GraphGroup(group,groupId,this.options,this.groupsUsingDefaultStyles);if(this.groups[groupId].options.yAxisOrientation==\"right\"){this.yAxisRight.addGroup(groupId,this.groups[groupId]);this.legendRight.addGroup(groupId,this.groups[groupId])}else{this.yAxisLeft.addGroup(groupId,this.groups[groupId]);this.legendLeft.addGroup(groupId,this.groups[groupId])}}else{this.groups[groupId].update(group);if(this.groups[groupId].options.yAxisOrientation==\"right\"){this.yAxisRight.updateGroup(groupId,this.groups[groupId]);this.legendRight.updateGroup(groupId,this.groups[groupId]);this.yAxisLeft.removeGroup(groupId);this.legendLeft.removeGroup(groupId)}else{this.yAxisLeft.updateGroup(groupId,this.groups[groupId]);this.legendLeft.updateGroup(groupId,this.groups[groupId]);this.yAxisRight.removeGroup(groupId);this.legendRight.removeGroup(groupId)}}this.legendLeft.redraw();this.legendRight.redraw()};LineGraph.prototype._updateAllGroupData=function(ids,groupIds){if(this.itemsData!=null){var groupsContent={};var items=this.itemsData.get();var fieldId=this.itemsData._fieldId;var idMap={};if(ids){ids.map(function(id){idMap[id]=id})}var groupCounts={};for(var i=0;i<items.length;i++){var item=items[i];var groupId=item.group;if(groupId===null||groupId===undefined){groupId=UNGROUPED}groupCounts.hasOwnProperty(groupId)?groupCounts[groupId]++:groupCounts[groupId]=1}var existingItemsMap={};if(!groupIds&&ids){for(groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){group=this.groups[groupId];var existing_items=group.getItems();groupsContent[groupId]=existing_items.filter(function(item){existingItemsMap[item[fieldId]]=item[fieldId];return item[fieldId]!==idMap[item[fieldId]]});var newLength=groupCounts[groupId];groupCounts[groupId]-=groupsContent[groupId].length;if(groupsContent[groupId].length<newLength){groupsContent[groupId][newLength-1]={}}}}}for(i=0;i<items.length;i++){item=items[i];groupId=item.group;if(groupId===null||groupId===undefined){groupId=UNGROUPED}if(!groupIds&&ids&&item[fieldId]!==idMap[item[fieldId]]&&existingItemsMap.hasOwnProperty(item[fieldId])){continue}if(!groupsContent.hasOwnProperty(groupId)){groupsContent[groupId]=new Array(groupCounts[groupId])}var extended=util.bridgeObject(item);extended.x=util.convert(item.x,\"Date\");extended.end=util.convert(item.end,\"Date\");extended.orginalY=item.y;extended.y=Number(item.y);extended[fieldId]=item[fieldId];var index=groupsContent[groupId].length-groupCounts[groupId]--;groupsContent[groupId][index]=extended}for(groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){if(!groupsContent.hasOwnProperty(groupId)){groupsContent[groupId]=new Array(0)}}}for(groupId in groupsContent){if(groupsContent.hasOwnProperty(groupId)){if(groupsContent[groupId].length==0){if(this.groups.hasOwnProperty(groupId)){this._removeGroup(groupId)}}else{var group=undefined;if(this.groupsData!=undefined){group=this.groupsData.get(groupId)}if(group==undefined){group={id:groupId,content:this.options.defaultGroup+groupId}}this._updateGroup(group,groupId);this.groups[groupId].setItems(groupsContent[groupId])}}}this.forceGraphUpdate=true;this.body.emitter.emit(\"_change\",{queue:true})}};LineGraph.prototype.redraw=function(){var resized=false;this.props.width=this.dom.frame.offsetWidth;this.props.height=this.body.domProps.centerContainer.height-this.body.domProps.border.top-this.body.domProps.border.bottom;resized=this._isResized()||resized;var visibleInterval=this.body.range.end-this.body.range.start;var zoomed=visibleInterval!=this.lastVisibleInterval;this.lastVisibleInterval=visibleInterval;if(resized==true){this.svg.style.width=util.option.asSize(3*this.props.width);this.svg.style.left=util.option.asSize(-this.props.width);if((this.options.height+\"\").indexOf(\"%\")!=-1||this.updateSVGheightOnResize==true){this.updateSVGheight=true}}if(this.updateSVGheight==true){if(this.options.graphHeight!=this.props.height+\"px\"){this.options.graphHeight=this.props.height+\"px\";this.svg.style.height=this.props.height+\"px\"}this.updateSVGheight=false}else{this.svg.style.height=(\"\"+this.options.graphHeight).replace(\"px\",\"\")+\"px\"}if(resized==true||zoomed==true||this.abortedGraphUpdate==true||this.forceGraphUpdate==true){resized=this._updateGraph()||resized;this.forceGraphUpdate=false}else{if(this.lastStart!=0){var offset=this.body.range.start-this.lastStart;var range=this.body.range.end-this.body.range.start;if(this.props.width!=0){var rangePerPixelInv=this.props.width/range;var xOffset=offset*rangePerPixelInv;this.svg.style.left=-this.props.width-xOffset+\"px\"}}}this.legendLeft.redraw();this.legendRight.redraw();return resized};LineGraph.prototype._getSortedGroupIds=function(){var grouplist=[];for(var groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){var group=this.groups[groupId];if(group.visible==true&&(this.options.groups.visibility[groupId]===undefined||this.options.groups.visibility[groupId]==true)){grouplist.push({id:groupId,zIndex:group.options.zIndex})}}}util.insertSort(grouplist,function(a,b){var az=a.zIndex;var bz=b.zIndex;if(az===undefined)az=0;if(bz===undefined)bz=0;return az==bz?0:az<bz?-1:1});var groupIds=new Array(grouplist.length);for(var i=0;i<grouplist.length;i++){groupIds[i]=grouplist[i].id}return groupIds};LineGraph.prototype._updateGraph=function(){DOMutil.prepareElements(this.svgElements);if(this.props.width!=0&&this.itemsData!=null){var group,i;var groupRanges={};var changeCalled=false;var minDate=this.body.util.toGlobalTime(-this.body.domProps.root.width);var maxDate=this.body.util.toGlobalTime(2*this.body.domProps.root.width);var groupIds=this._getSortedGroupIds();if(groupIds.length>0){var groupsData={};this._getRelevantData(groupIds,groupsData,minDate,maxDate);this._applySampling(groupIds,groupsData);for(i=0;i<groupIds.length;i++){this._convertXcoordinates(groupsData[groupIds[i]])}this._getYRanges(groupIds,groupsData,groupRanges);changeCalled=this._updateYAxis(groupIds,groupRanges);if(changeCalled==true){DOMutil.cleanupElements(this.svgElements);this.abortedGraphUpdate=true;return true}this.abortedGraphUpdate=false;var below=undefined;for(i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];if(this.options.stack===true&&this.options.style===\"line\"){if(group.options.excludeFromStacking==undefined||!group.options.excludeFromStacking){if(below!=undefined){this._stack(groupsData[group.id],groupsData[below.id]);if(group.options.shaded.enabled==true&&group.options.shaded.orientation!==\"group\"){if(group.options.shaded.orientation==\"top\"&&below.options.shaded.orientation!==\"group\"){below.options.shaded.orientation=\"group\";below.options.shaded.groupId=group.id}else{group.options.shaded.orientation=\"group\";group.options.shaded.groupId=below.id}}}below=group}}this._convertYcoordinates(groupsData[groupIds[i]],group)}var paths={};for(i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];if(group.options.style===\"line\"&&group.options.shaded.enabled==true){var dataset=groupsData[groupIds[i]];if(dataset==null||dataset.length==0){continue}if(!paths.hasOwnProperty(groupIds[i])){paths[groupIds[i]]=Lines.calcPath(dataset,group)}if(group.options.shaded.orientation===\"group\"){var subGroupId=group.options.shaded.groupId;if(groupIds.indexOf(subGroupId)===-1){console.log(group.id+\": Unknown shading group target given:\"+subGroupId);continue}if(!paths.hasOwnProperty(subGroupId)){paths[subGroupId]=Lines.calcPath(groupsData[subGroupId],this.groups[subGroupId])}Lines.drawShading(paths[groupIds[i]],group,paths[subGroupId],this.framework)}else{Lines.drawShading(paths[groupIds[i]],group,undefined,this.framework)}}}Bars.draw(groupIds,groupsData,this.framework);for(i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];if(groupsData[groupIds[i]].length>0){switch(group.options.style){case\"line\":if(!paths.hasOwnProperty(groupIds[i])){paths[groupIds[i]]=Lines.calcPath(groupsData[groupIds[i]],group)}Lines.draw(paths[groupIds[i]],group,this.framework);case\"point\":case\"points\":if(group.options.style==\"point\"||group.options.style==\"points\"||group.options.drawPoints.enabled==true){Points.draw(groupsData[groupIds[i]],group,this.framework)}break;case\"bar\":default:}}}}}DOMutil.cleanupElements(this.svgElements);return false};LineGraph.prototype._stack=function(data,subData){var index,dx,dy,subPrevPoint,subNextPoint;index=0;for(var j=0;j<data.length;j++){subPrevPoint=undefined;subNextPoint=undefined;for(var k=index;k<subData.length;k++){if(subData[k].x===data[j].x){subPrevPoint=subData[k];subNextPoint=subData[k];index=k;break}else if(subData[k].x>data[j].x){subNextPoint=subData[k];if(k==0){subPrevPoint=subNextPoint}else{subPrevPoint=subData[k-1]}index=k;break}}if(subNextPoint===undefined){subPrevPoint=subData[subData.length-1];subNextPoint=subData[subData.length-1]}dx=subNextPoint.x-subPrevPoint.x;dy=subNextPoint.y-subPrevPoint.y;if(dx==0){data[j].y=data[j].orginalY+subNextPoint.y}else{data[j].y=data[j].orginalY+dy/dx*(data[j].x-subPrevPoint.x)+subPrevPoint.y}}};LineGraph.prototype._getRelevantData=function(groupIds,groupsData,minDate,maxDate){var group,i,j,item;if(groupIds.length>0){for(i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];var itemsData=group.getItems();if(group.options.sort==true){var dateComparator=function dateComparator(a,b){return a.getTime()==b.getTime()?0:a<b?-1:1};var first=Math.max(0,util.binarySearchValue(itemsData,minDate,\"x\",\"before\",dateComparator));var last=Math.min(itemsData.length,util.binarySearchValue(itemsData,maxDate,\"x\",\"after\",dateComparator)+1);if(last<=0){last=itemsData.length}var dataContainer=new Array(last-first);for(j=first;j<last;j++){item=group.itemsData[j];dataContainer[j-first]=item}groupsData[groupIds[i]]=dataContainer}else{groupsData[groupIds[i]]=group.itemsData}}}};LineGraph.prototype._applySampling=function(groupIds,groupsData){var group;if(groupIds.length>0){for(var i=0;i<groupIds.length;i++){group=this.groups[groupIds[i]];if(group.options.sampling==true){var dataContainer=groupsData[groupIds[i]];if(dataContainer.length>0){var increment=1;var amountOfPoints=dataContainer.length;var xDistance=this.body.util.toGlobalScreen(dataContainer[dataContainer.length-1].x)-this.body.util.toGlobalScreen(dataContainer[0].x);var pointsPerPixel=amountOfPoints/xDistance;increment=Math.min(Math.ceil(.2*amountOfPoints),Math.max(1,Math.round(pointsPerPixel)));var sampledData=new Array(amountOfPoints);for(var j=0;j<amountOfPoints;j+=increment){var idx=Math.round(j/increment);sampledData[idx]=dataContainer[j]}groupsData[groupIds[i]]=sampledData.splice(0,Math.round(amountOfPoints/increment))}}}}};LineGraph.prototype._getYRanges=function(groupIds,groupsData,groupRanges){var groupData,group,i;var combinedDataLeft=[];var combinedDataRight=[];var options;if(groupIds.length>0){for(i=0;i<groupIds.length;i++){groupData=groupsData[groupIds[i]];options=this.groups[groupIds[i]].options;if(groupData.length>0){group=this.groups[groupIds[i]];if(options.stack===true&&options.style===\"bar\"){if(options.yAxisOrientation===\"left\"){combinedDataLeft=combinedDataLeft.concat(groupData)}else{combinedDataRight=combinedDataRight.concat(groupData)}}else{groupRanges[groupIds[i]]=group.getYRange(groupData,groupIds[i])}}}Bars.getStackedYRange(combinedDataLeft,groupRanges,groupIds,\"__barStackLeft\",\"left\");Bars.getStackedYRange(combinedDataRight,groupRanges,groupIds,\"__barStackRight\",\"right\")}};LineGraph.prototype._updateYAxis=function(groupIds,groupRanges){var resized=false;var yAxisLeftUsed=false;var yAxisRightUsed=false;var minLeft=1e9,minRight=1e9,maxLeft=-1e9,maxRight=-1e9,minVal,maxVal;if(groupIds.length>0){for(var i=0;i<groupIds.length;i++){var group=this.groups[groupIds[i]];if(group&&group.options.yAxisOrientation!=\"right\"){yAxisLeftUsed=true;minLeft=1e9;maxLeft=-1e9}else if(group&&group.options.yAxisOrientation){yAxisRightUsed=true;minRight=1e9;maxRight=-1e9}}for(i=0;i<groupIds.length;i++){if(groupRanges.hasOwnProperty(groupIds[i])){if(groupRanges[groupIds[i]].ignore!==true){minVal=groupRanges[groupIds[i]].min;maxVal=groupRanges[groupIds[i]].max;if(groupRanges[groupIds[i]].yAxisOrientation!=\"right\"){yAxisLeftUsed=true;minLeft=minLeft>minVal?minVal:minLeft;maxLeft=maxLeft<maxVal?maxVal:maxLeft}else{yAxisRightUsed=true;minRight=minRight>minVal?minVal:minRight;maxRight=maxRight<maxVal?maxVal:maxRight}}}}if(yAxisLeftUsed==true){this.yAxisLeft.setRange(minLeft,maxLeft)}if(yAxisRightUsed==true){this.yAxisRight.setRange(minRight,maxRight)}}resized=this._toggleAxisVisiblity(yAxisLeftUsed,this.yAxisLeft)||resized;resized=this._toggleAxisVisiblity(yAxisRightUsed,this.yAxisRight)||resized;if(yAxisRightUsed==true&&yAxisLeftUsed==true){this.yAxisLeft.drawIcons=true;this.yAxisRight.drawIcons=true}else{this.yAxisLeft.drawIcons=false;this.yAxisRight.drawIcons=false}this.yAxisRight.master=!yAxisLeftUsed;this.yAxisRight.masterAxis=this.yAxisLeft;if(this.yAxisRight.master==false){if(yAxisRightUsed==true){this.yAxisLeft.lineOffset=this.yAxisRight.width}else{this.yAxisLeft.lineOffset=0}resized=this.yAxisLeft.redraw()||resized;resized=this.yAxisRight.redraw()||resized}else{resized=this.yAxisRight.redraw()||resized}var tempGroups=[\"__barStackLeft\",\"__barStackRight\",\"__lineStackLeft\",\"__lineStackRight\"];for(i=0;i<tempGroups.length;i++){if(groupIds.indexOf(tempGroups[i])!=-1){groupIds.splice(groupIds.indexOf(tempGroups[i]),1)}}return resized};LineGraph.prototype._toggleAxisVisiblity=function(axisUsed,axis){var changed=false;if(axisUsed==false){if(axis.dom.frame.parentNode&&axis.hidden==false){axis.hide();changed=true}}else{if(!axis.dom.frame.parentNode&&axis.hidden==true){axis.show();changed=true}}return changed};LineGraph.prototype._convertXcoordinates=function(datapoints){var toScreen=this.body.util.toScreen;for(var i=0;i<datapoints.length;i++){datapoints[i].screen_x=toScreen(datapoints[i].x)+this.props.width;datapoints[i].screen_y=datapoints[i].y;if(datapoints[i].end!=undefined){datapoints[i].screen_end=toScreen(datapoints[i].end)+this.props.width}else{datapoints[i].screen_end=undefined}}};LineGraph.prototype._convertYcoordinates=function(datapoints,group){var axis=this.yAxisLeft;var svgHeight=Number(this.svg.style.height.replace(\"px\",\"\"));if(group.options.yAxisOrientation==\"right\"){axis=this.yAxisRight}for(var i=0;i<datapoints.length;i++){datapoints[i].screen_y=Math.round(axis.convertValue(datapoints[i].y))}group.setZeroPosition(Math.min(svgHeight,axis.convertValue(0)))};module.exports=LineGraph},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DOMutil=__webpack_require__(14);var Component=__webpack_require__(16);var DataScale=__webpack_require__(108);function DataAxis(body,options,svg,linegraphOptions){this.id=util.randomUUID();this.body=body;this.defaultOptions={orientation:\"left\",showMinorLabels:true,showMajorLabels:true,icons:false,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:\"40px\",visible:true,alignZeros:true,left:{range:{min:undefined,max:undefined},format:function format(value){return\"\"+parseFloat(value.toPrecision(3))},title:{text:undefined,style:undefined}},right:{range:{min:undefined,max:undefined},format:function format(value){return\"\"+parseFloat(value.toPrecision(3))},title:{text:undefined,style:undefined}}};this.linegraphOptions=linegraphOptions;this.linegraphSVG=svg;this.props={};this.DOMelements={lines:{},labels:{},title:{}};this.dom={};this.scale=undefined;this.range={start:0,end:0};this.options=util.extend({},this.defaultOptions);this.conversionFactor=1;this.setOptions(options);this.width=Number((\"\"+this.options.width).replace(\"px\",\"\"));this.minWidth=this.width;this.height=this.linegraphSVG.getBoundingClientRect().height;this.hidden=false;this.stepPixels=25;this.zeroCrossing=-1;this.amountOfSteps=-1;this.lineOffset=0;this.master=true;this.masterAxis=null;this.svgElements={};this.iconsRemoved=false;this.groups={};this.amountOfGroups=0;this._create();this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups};var me=this;this.body.emitter.on(\"verticalDrag\",function(){me.dom.lineContainer.style.top=me.body.domProps.scrollTop+\"px\"})}DataAxis.prototype=new Component;DataAxis.prototype.addGroup=function(label,graphOptions){if(!this.groups.hasOwnProperty(label)){this.groups[label]=graphOptions}this.amountOfGroups+=1};DataAxis.prototype.updateGroup=function(label,graphOptions){if(!this.groups.hasOwnProperty(label)){this.amountOfGroups+=1}this.groups[label]=graphOptions};DataAxis.prototype.removeGroup=function(label){if(this.groups.hasOwnProperty(label)){delete this.groups[label];this.amountOfGroups-=1}};DataAxis.prototype.setOptions=function(options){if(options){var redraw=false;if(this.options.orientation!=options.orientation&&options.orientation!==undefined){redraw=true}var fields=[\"orientation\",\"showMinorLabels\",\"showMajorLabels\",\"icons\",\"majorLinesOffset\",\"minorLinesOffset\",\"labelOffsetX\",\"labelOffsetY\",\"iconWidth\",\"width\",\"visible\",\"left\",\"right\",\"alignZeros\"];util.selectiveDeepExtend(fields,this.options,options);this.minWidth=Number((\"\"+this.options.width).replace(\"px\",\"\"));if(redraw===true&&this.dom.frame){this.hide();this.show()}}};DataAxis.prototype._create=function(){this.dom.frame=document.createElement(\"div\");this.dom.frame.style.width=this.options.width;this.dom.frame.style.height=this.height;this.dom.lineContainer=document.createElement(\"div\");this.dom.lineContainer.style.width=\"100%\";this.dom.lineContainer.style.height=this.height;this.dom.lineContainer.style.position=\"relative\";this.svg=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");this.svg.style.position=\"absolute\";this.svg.style.top=\"0px\";this.svg.style.height=\"100%\";this.svg.style.width=\"100%\";this.svg.style.display=\"block\";this.dom.frame.appendChild(this.svg)};DataAxis.prototype._redrawGroupIcons=function(){DOMutil.prepareElements(this.svgElements);var x;var iconWidth=this.options.iconWidth;var iconHeight=15;var iconOffset=4;var y=iconOffset+.5*iconHeight;if(this.options.orientation===\"left\"){x=iconOffset}else{x=this.width-iconWidth-iconOffset}var groupArray=(0,_keys2[\"default\"])(this.groups);groupArray.sort(function(a,b){return a<b?-1:1});for(var i=0;i<groupArray.length;i++){var groupId=groupArray[i];if(this.groups[groupId].visible===true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]===true)){this.groups[groupId].getLegend(iconWidth,iconHeight,this.framework,x,y);y+=iconHeight+iconOffset}}DOMutil.cleanupElements(this.svgElements);this.iconsRemoved=false};DataAxis.prototype._cleanupIcons=function(){if(this.iconsRemoved===false){DOMutil.prepareElements(this.svgElements);DOMutil.cleanupElements(this.svgElements);this.iconsRemoved=true}};DataAxis.prototype.show=function(){this.hidden=false;if(!this.dom.frame.parentNode){if(this.options.orientation===\"left\"){this.body.dom.left.appendChild(this.dom.frame)}else{this.body.dom.right.appendChild(this.dom.frame)}}if(!this.dom.lineContainer.parentNode){this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)}};DataAxis.prototype.hide=function(){this.hidden=true;if(this.dom.frame.parentNode){this.dom.frame.parentNode.removeChild(this.dom.frame)}if(this.dom.lineContainer.parentNode){this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)}};DataAxis.prototype.setRange=function(start,end){this.range.start=start;this.range.end=end};DataAxis.prototype.redraw=function(){var resized=false;var activeGroups=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+\"px\";for(var groupId in this.groups){if(this.groups.hasOwnProperty(groupId)){if(this.groups[groupId].visible===true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]===true)){activeGroups++}}}if(this.amountOfGroups===0||activeGroups===0){this.hide()}else{this.show();this.height=Number(this.linegraphSVG.style.height.replace(\"px\",\"\"));this.dom.lineContainer.style.height=this.height+\"px\";this.width=this.options.visible===true?Number((\"\"+this.options.width).replace(\"px\",\"\")):0;var props=this.props;var frame=this.dom.frame;frame.className=\"vis-data-axis\";this._calculateCharSize();var orientation=this.options.orientation;var showMinorLabels=this.options.showMinorLabels;var showMajorLabels=this.options.showMajorLabels;props.minorLabelHeight=showMinorLabels?props.minorCharHeight:0;props.majorLabelHeight=showMajorLabels?props.majorCharHeight:0;props.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset;props.minorLineHeight=1;props.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset;props.majorLineHeight=1;if(orientation===\"left\"){frame.style.top=\"0\";frame.style.left=\"0\";frame.style.bottom=\"\";frame.style.width=this.width+\"px\";frame.style.height=this.height+\"px\";this.props.width=this.body.domProps.left.width;this.props.height=this.body.domProps.left.height}else{frame.style.top=\"\";frame.style.bottom=\"0\";frame.style.left=\"0\";frame.style.width=this.width+\"px\";frame.style.height=this.height+\"px\";this.props.width=this.body.domProps.right.width;this.props.height=this.body.domProps.right.height}resized=this._redrawLabels();resized=this._isResized()||resized;if(this.options.icons===true){this._redrawGroupIcons()}else{this._cleanupIcons()}this._redrawTitle(orientation)}return resized};DataAxis.prototype._redrawLabels=function(){var _this=this;var resized=false;DOMutil.prepareElements(this.DOMelements.lines);DOMutil.prepareElements(this.DOMelements.labels);var orientation=this.options[\"orientation\"];var customRange=this.options[orientation].range!=undefined?this.options[orientation].range:{};var autoScaleEnd=true;if(customRange.max!=undefined){this.range.end=customRange.max;autoScaleEnd=false}var autoScaleStart=true;if(customRange.min!=undefined){this.range.start=customRange.min;autoScaleStart=false}this.scale=new DataScale(this.range.start,this.range.end,autoScaleStart,autoScaleEnd,this.dom.frame.offsetHeight,this.props.majorCharHeight,this.options.alignZeros,this.options[orientation].format);if(this.master===false&&this.masterAxis!=undefined){this.scale.followScale(this.masterAxis.scale)}this.maxLabelSize=0;var lines=this.scale.getLines();lines.forEach(function(line){var y=line.y;var isMajor=line.major;if(_this.options[\"showMinorLabels\"]&&isMajor===false){_this._redrawLabel(y-2,line.val,orientation,\"vis-y-axis vis-minor\",_this.props.minorCharHeight)}if(isMajor){if(y>=0){_this._redrawLabel(y-2,line.val,orientation,\"vis-y-axis vis-major\",_this.props.majorCharHeight)}}if(_this.master===true){if(isMajor){_this._redrawLine(y,orientation,\"vis-grid vis-horizontal vis-major\",_this.options.majorLinesOffset,_this.props.majorLineWidth)}else{_this._redrawLine(y,orientation,\"vis-grid vis-horizontal vis-minor\",_this.options.minorLinesOffset,_this.props.minorLineWidth)}}});var titleWidth=0;if(this.options[orientation].title!==undefined&&this.options[orientation].title.text!==undefined){titleWidth=this.props.titleCharHeight}var offset=this.options.icons===true?Math.max(this.options.iconWidth,titleWidth)+this.options.labelOffsetX+15:titleWidth+this.options.labelOffsetX+15;if(this.maxLabelSize>this.width-offset&&this.options.visible===true){this.width=this.maxLabelSize+offset;this.options.width=this.width+\"px\";DOMutil.cleanupElements(this.DOMelements.lines);DOMutil.cleanupElements(this.DOMelements.labels);this.redraw();resized=true}else if(this.maxLabelSize<this.width-offset&&this.options.visible===true&&this.width>this.minWidth){this.width=Math.max(this.minWidth,this.maxLabelSize+offset);this.options.width=this.width+\"px\";DOMutil.cleanupElements(this.DOMelements.lines);DOMutil.cleanupElements(this.DOMelements.labels);this.redraw();resized=true}else{DOMutil.cleanupElements(this.DOMelements.lines);DOMutil.cleanupElements(this.DOMelements.labels);resized=false}return resized};DataAxis.prototype.convertValue=function(value){return this.scale.convertValue(value)};DataAxis.prototype.screenToValue=function(x){return this.scale.screenToValue(x)};DataAxis.prototype._redrawLabel=function(y,text,orientation,className,characterHeight){var label=DOMutil.getDOMElement(\"div\",this.DOMelements.labels,this.dom.frame);label.className=className;label.innerHTML=text;if(orientation===\"left\"){label.style.left=\"-\"+this.options.labelOffsetX+\"px\";label.style.textAlign=\"right\"}else{label.style.right=\"-\"+this.options.labelOffsetX+\"px\";label.style.textAlign=\"left\"}label.style.top=y-.5*characterHeight+this.options.labelOffsetY+\"px\";text+=\"\";var largestWidth=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);if(this.maxLabelSize<text.length*largestWidth){this.maxLabelSize=text.length*largestWidth}};DataAxis.prototype._redrawLine=function(y,orientation,className,offset,width){if(this.master===true){\nvar line=DOMutil.getDOMElement(\"div\",this.DOMelements.lines,this.dom.lineContainer);line.className=className;line.innerHTML=\"\";if(orientation===\"left\"){line.style.left=this.width-offset+\"px\"}else{line.style.right=this.width-offset+\"px\"}line.style.width=width+\"px\";line.style.top=y+\"px\"}};DataAxis.prototype._redrawTitle=function(orientation){DOMutil.prepareElements(this.DOMelements.title);if(this.options[orientation].title!==undefined&&this.options[orientation].title.text!==undefined){var title=DOMutil.getDOMElement(\"div\",this.DOMelements.title,this.dom.frame);title.className=\"vis-y-axis vis-title vis-\"+orientation;title.innerHTML=this.options[orientation].title.text;if(this.options[orientation].title.style!==undefined){util.addCssText(title,this.options[orientation].title.style)}if(orientation===\"left\"){title.style.left=this.props.titleCharHeight+\"px\"}else{title.style.right=this.props.titleCharHeight+\"px\"}title.style.width=this.height+\"px\"}DOMutil.cleanupElements(this.DOMelements.title)};DataAxis.prototype._calculateCharSize=function(){if(!(\"minorCharHeight\"in this.props)){var textMinor=document.createTextNode(\"0\");var measureCharMinor=document.createElement(\"div\");measureCharMinor.className=\"vis-y-axis vis-minor vis-measure\";measureCharMinor.appendChild(textMinor);this.dom.frame.appendChild(measureCharMinor);this.props.minorCharHeight=measureCharMinor.clientHeight;this.props.minorCharWidth=measureCharMinor.clientWidth;this.dom.frame.removeChild(measureCharMinor)}if(!(\"majorCharHeight\"in this.props)){var textMajor=document.createTextNode(\"0\");var measureCharMajor=document.createElement(\"div\");measureCharMajor.className=\"vis-y-axis vis-major vis-measure\";measureCharMajor.appendChild(textMajor);this.dom.frame.appendChild(measureCharMajor);this.props.majorCharHeight=measureCharMajor.clientHeight;this.props.majorCharWidth=measureCharMajor.clientWidth;this.dom.frame.removeChild(measureCharMajor)}if(!(\"titleCharHeight\"in this.props)){var textTitle=document.createTextNode(\"0\");var measureCharTitle=document.createElement(\"div\");measureCharTitle.className=\"vis-y-axis vis-title vis-measure\";measureCharTitle.appendChild(textTitle);this.dom.frame.appendChild(measureCharTitle);this.props.titleCharHeight=measureCharTitle.clientHeight;this.props.titleCharWidth=measureCharTitle.clientWidth;this.dom.frame.removeChild(measureCharTitle)}};module.exports=DataAxis},function(module,exports,__webpack_require__){\"use strict\";function DataScale(start,end,autoScaleStart,autoScaleEnd,containerHeight,majorCharHeight){var zeroAlign=arguments.length>6&&arguments[6]!==undefined?arguments[6]:false;var formattingFunction=arguments.length>7&&arguments[7]!==undefined?arguments[7]:false;this.majorSteps=[1,2,5,10];this.minorSteps=[.25,.5,1,2];this.customLines=null;this.containerHeight=containerHeight;this.majorCharHeight=majorCharHeight;this._start=start;this._end=end;this.scale=1;this.minorStepIdx=-1;this.magnitudefactor=1;this.determineScale();this.zeroAlign=zeroAlign;this.autoScaleStart=autoScaleStart;this.autoScaleEnd=autoScaleEnd;this.formattingFunction=formattingFunction;if(autoScaleStart||autoScaleEnd){var me=this;var roundToMinor=function roundToMinor(value){var rounded=value-value%(me.magnitudefactor*me.minorSteps[me.minorStepIdx]);if(value%(me.magnitudefactor*me.minorSteps[me.minorStepIdx])>.5*(me.magnitudefactor*me.minorSteps[me.minorStepIdx])){return rounded+me.magnitudefactor*me.minorSteps[me.minorStepIdx]}else{return rounded}};if(autoScaleStart){this._start-=this.magnitudefactor*2*this.minorSteps[this.minorStepIdx];this._start=roundToMinor(this._start)}if(autoScaleEnd){this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx];this._end=roundToMinor(this._end)}this.determineScale()}}DataScale.prototype.setCharHeight=function(majorCharHeight){this.majorCharHeight=majorCharHeight};DataScale.prototype.setHeight=function(containerHeight){this.containerHeight=containerHeight};DataScale.prototype.determineScale=function(){var range=this._end-this._start;this.scale=this.containerHeight/range;var minimumStepValue=this.majorCharHeight/this.scale;var orderOfMagnitude=range>0?Math.round(Math.log(range)/Math.LN10):0;this.minorStepIdx=-1;this.magnitudefactor=Math.pow(10,orderOfMagnitude);var start=0;if(orderOfMagnitude<0){start=orderOfMagnitude}var solutionFound=false;for(var l=start;Math.abs(l)<=Math.abs(orderOfMagnitude);l++){this.magnitudefactor=Math.pow(10,l);for(var j=0;j<this.minorSteps.length;j++){var stepSize=this.magnitudefactor*this.minorSteps[j];if(stepSize>=minimumStepValue){solutionFound=true;this.minorStepIdx=j;break}}if(solutionFound===true){break}}};DataScale.prototype.is_major=function(value){return value%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0};DataScale.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]};DataScale.prototype.getFirstMajor=function(){var majorStep=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(majorStep-this._start%majorStep)%majorStep)};DataScale.prototype.formatValue=function(current){var returnValue=current.toPrecision(5);if(typeof this.formattingFunction===\"function\"){returnValue=this.formattingFunction(current)}if(typeof returnValue===\"number\"){return\"\"+returnValue}else if(typeof returnValue===\"string\"){return returnValue}else{return current.toPrecision(5)}};DataScale.prototype.getLines=function(){var lines=[];var step=this.getStep();var bottomOffset=(step-this._start%step)%step;for(var i=this._start+bottomOffset;this._end-i>1e-5;i+=step){if(i!=this._start){lines.push({major:this.is_major(i),y:this.convertValue(i),val:this.formatValue(i)})}}return lines};DataScale.prototype.followScale=function(other){var oldStepIdx=this.minorStepIdx;var oldStart=this._start;var oldEnd=this._end;var me=this;var increaseMagnitude=function increaseMagnitude(){me.magnitudefactor*=2};var decreaseMagnitude=function decreaseMagnitude(){me.magnitudefactor/=2};if(other.minorStepIdx<=1&&this.minorStepIdx<=1||other.minorStepIdx>1&&this.minorStepIdx>1){}else if(other.minorStepIdx<this.minorStepIdx){this.minorStepIdx=1;if(oldStepIdx==2){increaseMagnitude()}else{increaseMagnitude();increaseMagnitude()}}else{this.minorStepIdx=2;if(oldStepIdx==1){decreaseMagnitude()}else{decreaseMagnitude();decreaseMagnitude()}}var otherZero=other.convertValue(0);var otherStep=other.getStep()*other.scale;var done=false;var count=0;while(!done&&count++<5){this.scale=otherStep/(this.minorSteps[this.minorStepIdx]*this.magnitudefactor);var newRange=this.containerHeight/this.scale;this._start=oldStart;this._end=this._start+newRange;var myOriginalZero=this._end*this.scale;var majorStep=this.magnitudefactor*this.majorSteps[this.minorStepIdx];var majorOffset=this.getFirstMajor()-other.getFirstMajor();if(this.zeroAlign){var zeroOffset=otherZero-myOriginalZero;this._end+=zeroOffset/this.scale;this._start=this._end-newRange}else{if(!this.autoScaleStart){this._start+=majorStep-majorOffset/this.scale;this._end=this._start+newRange}else{this._start-=majorOffset/this.scale;this._end=this._start+newRange}}if(!this.autoScaleEnd&&this._end>oldEnd+1e-5){decreaseMagnitude();done=false;continue}if(!this.autoScaleStart&&this._start<oldStart-1e-5){if(this.zeroAlign&&oldStart>=0){console.warn(\"Can't adhere to given 'min' range, due to zeroalign\")}else{decreaseMagnitude();done=false;continue}}if(this.autoScaleStart&&this.autoScaleEnd&&newRange<oldEnd-oldStart){increaseMagnitude();done=false;continue}done=true}};DataScale.prototype.convertValue=function(value){return this.containerHeight-(value-this._start)*this.scale};DataScale.prototype.screenToValue=function(pixels){return(this.containerHeight-pixels)/this.scale+this._start};module.exports=DataScale},function(module,exports,__webpack_require__){\"use strict\";var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Bars=__webpack_require__(110);var Lines=__webpack_require__(111);var Points=__webpack_require__(72);function GraphGroup(group,groupId,options,groupsUsingDefaultStyles){this.id=groupId;var fields=[\"sampling\",\"style\",\"sort\",\"yAxisOrientation\",\"barChart\",\"drawPoints\",\"shaded\",\"interpolation\",\"zIndex\",\"excludeFromStacking\",\"excludeFromLegend\"];this.options=util.selectiveBridgeObject(fields,options);this.usingDefaultStyle=group.className===undefined;this.groupsUsingDefaultStyles=groupsUsingDefaultStyles;this.zeroPosition=0;this.update(group);if(this.usingDefaultStyle==true){this.groupsUsingDefaultStyles[0]+=1}this.itemsData=[];this.visible=group.visible===undefined?true:group.visible}GraphGroup.prototype.setItems=function(items){if(items!=null){this.itemsData=items;if(this.options.sort==true){util.insertSort(this.itemsData,function(a,b){return a.x>b.x?1:-1})}}else{this.itemsData=[]}};GraphGroup.prototype.getItems=function(){return this.itemsData};GraphGroup.prototype.setZeroPosition=function(pos){this.zeroPosition=pos};GraphGroup.prototype.setOptions=function(options){if(options!==undefined){var fields=[\"sampling\",\"style\",\"sort\",\"yAxisOrientation\",\"barChart\",\"zIndex\",\"excludeFromStacking\",\"excludeFromLegend\"];util.selectiveDeepExtend(fields,this.options,options);if(typeof options.drawPoints==\"function\"){options.drawPoints={onRender:options.drawPoints}}util.mergeOptions(this.options,options,\"interpolation\");util.mergeOptions(this.options,options,\"drawPoints\");util.mergeOptions(this.options,options,\"shaded\");if(options.interpolation){if((0,_typeof3[\"default\"])(options.interpolation)==\"object\"){if(options.interpolation.parametrization){if(options.interpolation.parametrization==\"uniform\"){this.options.interpolation.alpha=0}else if(options.interpolation.parametrization==\"chordal\"){this.options.interpolation.alpha=1}else{this.options.interpolation.parametrization=\"centripetal\";this.options.interpolation.alpha=.5}}}}}};GraphGroup.prototype.update=function(group){this.group=group;this.content=group.content||\"graph\";this.className=group.className||this.className||\"vis-graph-group\"+this.groupsUsingDefaultStyles[0]%10;this.visible=group.visible===undefined?true:group.visible;this.style=group.style;this.setOptions(group.options)};GraphGroup.prototype.getLegend=function(iconWidth,iconHeight,framework,x,y){if(framework==undefined||framework==null){var svg=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");framework={svg:svg,svgElements:{},options:this.options,groups:[this]}}if(x==undefined||x==null){x=0}if(y==undefined||y==null){y=.5*iconHeight}switch(this.options.style){case\"line\":Lines.drawIcon(this,x,y,iconWidth,iconHeight,framework);break;case\"points\":case\"point\":Points.drawIcon(this,x,y,iconWidth,iconHeight,framework);break;case\"bar\":Bars.drawIcon(this,x,y,iconWidth,iconHeight,framework);break}return{icon:framework.svg,label:this.content,orientation:this.options.yAxisOrientation}};GraphGroup.prototype.getYRange=function(groupData){var yMin=groupData[0].y;var yMax=groupData[0].y;for(var j=0;j<groupData.length;j++){yMin=yMin>groupData[j].y?groupData[j].y:yMin;yMax=yMax<groupData[j].y?groupData[j].y:yMax}return{min:yMin,max:yMax,yAxisOrientation:this.options.yAxisOrientation}};module.exports=GraphGroup},function(module,exports,__webpack_require__){\"use strict\";var DOMutil=__webpack_require__(14);var Points=__webpack_require__(72);function Bargraph(groupId,options){}Bargraph.drawIcon=function(group,x,y,iconWidth,iconHeight,framework){var fillHeight=iconHeight*.5;var outline=DOMutil.getSVGElement(\"rect\",framework.svgElements,framework.svg);outline.setAttributeNS(null,\"x\",x);outline.setAttributeNS(null,\"y\",y-fillHeight);outline.setAttributeNS(null,\"width\",iconWidth);outline.setAttributeNS(null,\"height\",2*fillHeight);outline.setAttributeNS(null,\"class\",\"vis-outline\");var barWidth=Math.round(.3*iconWidth);var originalWidth=group.options.barChart.width;var scale=originalWidth/barWidth;var bar1Height=Math.round(.4*iconHeight);var bar2Height=Math.round(.75*iconHeight);var offset=Math.round((iconWidth-2*barWidth)/3);DOMutil.drawBar(x+.5*barWidth+offset,y+fillHeight-bar1Height-1,barWidth,bar1Height,group.className+\" vis-bar\",framework.svgElements,framework.svg,group.style);DOMutil.drawBar(x+1.5*barWidth+offset+2,y+fillHeight-bar2Height-1,barWidth,bar2Height,group.className+\" vis-bar\",framework.svgElements,framework.svg,group.style);if(group.options.drawPoints.enabled==true){var groupTemplate={style:group.options.drawPoints.style,styles:group.options.drawPoints.styles,size:group.options.drawPoints.size/scale,className:group.className};DOMutil.drawPoint(x+.5*barWidth+offset,y+fillHeight-bar1Height-1,groupTemplate,framework.svgElements,framework.svg);DOMutil.drawPoint(x+1.5*barWidth+offset+2,y+fillHeight-bar2Height-1,groupTemplate,framework.svgElements,framework.svg)}};Bargraph.draw=function(groupIds,processedGroupData,framework){var combinedData=[];var intersections={};var coreDistance;var key,drawData;var group;var i,j;var barPoints=0;for(i=0;i<groupIds.length;i++){group=framework.groups[groupIds[i]];if(group.options.style===\"bar\"){if(group.visible===true&&(framework.options.groups.visibility[groupIds[i]]===undefined||framework.options.groups.visibility[groupIds[i]]===true)){for(j=0;j<processedGroupData[groupIds[i]].length;j++){combinedData.push({screen_x:processedGroupData[groupIds[i]][j].screen_x,screen_end:processedGroupData[groupIds[i]][j].screen_end,screen_y:processedGroupData[groupIds[i]][j].screen_y,x:processedGroupData[groupIds[i]][j].x,end:processedGroupData[groupIds[i]][j].end,y:processedGroupData[groupIds[i]][j].y,groupId:groupIds[i],label:processedGroupData[groupIds[i]][j].label});barPoints+=1}}}}if(barPoints===0){return}combinedData.sort(function(a,b){if(a.screen_x===b.screen_x){return a.groupId<b.groupId?-1:1}else{return a.screen_x-b.screen_x}});Bargraph._getDataIntersections(intersections,combinedData);for(i=0;i<combinedData.length;i++){group=framework.groups[combinedData[i].groupId];var minWidth=group.options.barChart.minWidth!=undefined?group.options.barChart.minWidth:.1*group.options.barChart.width;key=combinedData[i].screen_x;var heightOffset=0;if(intersections[key]===undefined){if(i+1<combinedData.length){coreDistance=Math.abs(combinedData[i+1].screen_x-key)}drawData=Bargraph._getSafeDrawData(coreDistance,group,minWidth)}else{var nextKey=i+(intersections[key].amount-intersections[key].resolved);if(nextKey<combinedData.length){coreDistance=Math.abs(combinedData[nextKey].screen_x-key)}drawData=Bargraph._getSafeDrawData(coreDistance,group,minWidth);intersections[key].resolved+=1;if(group.options.stack===true&&group.options.excludeFromStacking!==true){if(combinedData[i].screen_y<group.zeroPosition){heightOffset=intersections[key].accumulatedNegative;intersections[key].accumulatedNegative+=group.zeroPosition-combinedData[i].screen_y}else{heightOffset=intersections[key].accumulatedPositive;intersections[key].accumulatedPositive+=group.zeroPosition-combinedData[i].screen_y}}else if(group.options.barChart.sideBySide===true){drawData.width=drawData.width/intersections[key].amount;drawData.offset+=intersections[key].resolved*drawData.width-.5*drawData.width*(intersections[key].amount+1)}}var dataWidth=drawData.width;var start=combinedData[i].screen_x;if(combinedData[i].screen_end!=undefined){dataWidth=combinedData[i].screen_end-combinedData[i].screen_x;start+=dataWidth*.5}else{start+=drawData.offset}DOMutil.drawBar(start,combinedData[i].screen_y-heightOffset,dataWidth,group.zeroPosition-combinedData[i].screen_y,group.className+\" vis-bar\",framework.svgElements,framework.svg,group.style);if(group.options.drawPoints.enabled===true){var pointData={screen_x:combinedData[i].screen_x,screen_y:combinedData[i].screen_y-heightOffset,x:combinedData[i].x,y:combinedData[i].y,groupId:combinedData[i].groupId,label:combinedData[i].label};Points.draw([pointData],group,framework,drawData.offset)}}};Bargraph._getDataIntersections=function(intersections,combinedData){var coreDistance;for(var i=0;i<combinedData.length;i++){if(i+1<combinedData.length){coreDistance=Math.abs(combinedData[i+1].screen_x-combinedData[i].screen_x)}if(i>0){coreDistance=Math.min(coreDistance,Math.abs(combinedData[i-1].screen_x-combinedData[i].screen_x))}if(coreDistance===0){if(intersections[combinedData[i].screen_x]===undefined){intersections[combinedData[i].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}}intersections[combinedData[i].screen_x].amount+=1}}};Bargraph._getSafeDrawData=function(coreDistance,group,minWidth){var width,offset;if(coreDistance<group.options.barChart.width&&coreDistance>0){width=coreDistance<minWidth?minWidth:coreDistance;offset=0;if(group.options.barChart.align===\"left\"){offset-=.5*coreDistance}else if(group.options.barChart.align===\"right\"){offset+=.5*coreDistance}}else{width=group.options.barChart.width;offset=0;if(group.options.barChart.align===\"left\"){offset-=.5*group.options.barChart.width}else if(group.options.barChart.align===\"right\"){offset+=.5*group.options.barChart.width}}return{width:width,offset:offset}};Bargraph.getStackedYRange=function(combinedData,groupRanges,groupIds,groupLabel,orientation){if(combinedData.length>0){combinedData.sort(function(a,b){if(a.screen_x===b.screen_x){return a.groupId<b.groupId?-1:1}else{return a.screen_x-b.screen_x}});var intersections={};Bargraph._getDataIntersections(intersections,combinedData);groupRanges[groupLabel]=Bargraph._getStackedYRange(intersections,combinedData);groupRanges[groupLabel].yAxisOrientation=orientation;groupIds.push(groupLabel)}};Bargraph._getStackedYRange=function(intersections,combinedData){var key;var yMin=combinedData[0].screen_y;var yMax=combinedData[0].screen_y;for(var i=0;i<combinedData.length;i++){key=combinedData[i].screen_x;if(intersections[key]===undefined){yMin=yMin>combinedData[i].screen_y?combinedData[i].screen_y:yMin;yMax=yMax<combinedData[i].screen_y?combinedData[i].screen_y:yMax}else{if(combinedData[i].screen_y<0){intersections[key].accumulatedNegative+=combinedData[i].screen_y}else{intersections[key].accumulatedPositive+=combinedData[i].screen_y}}}for(var xpos in intersections){if(intersections.hasOwnProperty(xpos)){yMin=yMin>intersections[xpos].accumulatedNegative?intersections[xpos].accumulatedNegative:yMin;yMin=yMin>intersections[xpos].accumulatedPositive?intersections[xpos].accumulatedPositive:yMin;yMax=yMax<intersections[xpos].accumulatedNegative?intersections[xpos].accumulatedNegative:yMax;yMax=yMax<intersections[xpos].accumulatedPositive?intersections[xpos].accumulatedPositive:yMax}}return{min:yMin,max:yMax}};module.exports=Bargraph},function(module,exports,__webpack_require__){\"use strict\";var DOMutil=__webpack_require__(14);function Line(groupId,options){}Line.calcPath=function(dataset,group){if(dataset!=null){if(dataset.length>0){var d=[];if(group.options.interpolation.enabled==true){d=Line._catmullRom(dataset,group)}else{d=Line._linear(dataset)}return d}}};Line.drawIcon=function(group,x,y,iconWidth,iconHeight,framework){var fillHeight=iconHeight*.5;var path,fillPath;var outline=DOMutil.getSVGElement(\"rect\",framework.svgElements,framework.svg);outline.setAttributeNS(null,\"x\",x);outline.setAttributeNS(null,\"y\",y-fillHeight);outline.setAttributeNS(null,\"width\",iconWidth);outline.setAttributeNS(null,\"height\",2*fillHeight);outline.setAttributeNS(null,\"class\",\"vis-outline\");path=DOMutil.getSVGElement(\"path\",framework.svgElements,framework.svg);path.setAttributeNS(null,\"class\",group.className);if(group.style!==undefined){path.setAttributeNS(null,\"style\",group.style)}path.setAttributeNS(null,\"d\",\"M\"+x+\",\"+y+\" L\"+(x+iconWidth)+\",\"+y+\"\");if(group.options.shaded.enabled==true){fillPath=DOMutil.getSVGElement(\"path\",framework.svgElements,framework.svg);if(group.options.shaded.orientation==\"top\"){fillPath.setAttributeNS(null,\"d\",\"M\"+x+\", \"+(y-fillHeight)+\"L\"+x+\",\"+y+\" L\"+(x+iconWidth)+\",\"+y+\" L\"+(x+iconWidth)+\",\"+(y-fillHeight))}else{fillPath.setAttributeNS(null,\"d\",\"M\"+x+\",\"+y+\" \"+\"L\"+x+\",\"+(y+fillHeight)+\" \"+\"L\"+(x+iconWidth)+\",\"+(y+fillHeight)+\"L\"+(x+iconWidth)+\",\"+y)}fillPath.setAttributeNS(null,\"class\",group.className+\" vis-icon-fill\");if(group.options.shaded.style!==undefined&&group.options.shaded.style!==\"\"){fillPath.setAttributeNS(null,\"style\",group.options.shaded.style)}}if(group.options.drawPoints.enabled==true){var groupTemplate={style:group.options.drawPoints.style,styles:group.options.drawPoints.styles,size:group.options.drawPoints.size,className:group.className};DOMutil.drawPoint(x+.5*iconWidth,y,groupTemplate,framework.svgElements,framework.svg)}};Line.drawShading=function(pathArray,group,subPathArray,framework){if(group.options.shaded.enabled==true){var svgHeight=Number(framework.svg.style.height.replace(\"px\",\"\"));var fillPath=DOMutil.getSVGElement(\"path\",framework.svgElements,framework.svg);var type=\"L\";if(group.options.interpolation.enabled==true){type=\"C\"}var dFill;var zero=0;if(group.options.shaded.orientation==\"top\"){zero=0}else if(group.options.shaded.orientation==\"bottom\"){zero=svgHeight}else{zero=Math.min(Math.max(0,group.zeroPosition),svgHeight)}if(group.options.shaded.orientation==\"group\"&&subPathArray!=null&&subPathArray!=undefined){dFill=\"M\"+pathArray[0][0]+\",\"+pathArray[0][1]+\" \"+this.serializePath(pathArray,type,false)+\" L\"+subPathArray[subPathArray.length-1][0]+\",\"+subPathArray[subPathArray.length-1][1]+\" \"+this.serializePath(subPathArray,type,true)+subPathArray[0][0]+\",\"+subPathArray[0][1]+\" Z\"}else{dFill=\"M\"+pathArray[0][0]+\",\"+pathArray[0][1]+\" \"+this.serializePath(pathArray,type,false)+\" V\"+zero+\" H\"+pathArray[0][0]+\" Z\"}fillPath.setAttributeNS(null,\"class\",group.className+\" vis-fill\");if(group.options.shaded.style!==undefined){fillPath.setAttributeNS(null,\"style\",group.options.shaded.style)}fillPath.setAttributeNS(null,\"d\",dFill)}};Line.draw=function(pathArray,group,framework){if(pathArray!=null&&pathArray!=undefined){var path=DOMutil.getSVGElement(\"path\",framework.svgElements,framework.svg);path.setAttributeNS(null,\"class\",group.className);if(group.style!==undefined){path.setAttributeNS(null,\"style\",group.style)}var type=\"L\";if(group.options.interpolation.enabled==true){type=\"C\"}path.setAttributeNS(null,\"d\",\"M\"+pathArray[0][0]+\",\"+pathArray[0][1]+\" \"+this.serializePath(pathArray,type,false))}};Line.serializePath=function(pathArray,type,inverse){if(pathArray.length<2){return\"\"}var d=type;var i;if(inverse){for(i=pathArray.length-2;i>0;i--){d+=pathArray[i][0]+\",\"+pathArray[i][1]+\" \"}}else{for(i=1;i<pathArray.length;i++){d+=pathArray[i][0]+\",\"+pathArray[i][1]+\" \"}}return d};Line._catmullRomUniform=function(data){var p0,p1,p2,p3,bp1,bp2;var d=[];d.push([Math.round(data[0].screen_x),Math.round(data[0].screen_y)]);var normalization=1/6;var length=data.length;for(var i=0;i<length-1;i++){p0=i==0?data[0]:data[i-1];p1=data[i];p2=data[i+1];p3=i+2<length?data[i+2]:p2;bp1={screen_x:(-p0.screen_x+6*p1.screen_x+p2.screen_x)*normalization,screen_y:(-p0.screen_y+6*p1.screen_y+p2.screen_y)*normalization};bp2={screen_x:(p1.screen_x+6*p2.screen_x-p3.screen_x)*normalization,screen_y:(p1.screen_y+6*p2.screen_y-p3.screen_y)*normalization};d.push([bp1.screen_x,bp1.screen_y]);d.push([bp2.screen_x,bp2.screen_y]);d.push([p2.screen_x,p2.screen_y])}return d};Line._catmullRom=function(data,group){var alpha=group.options.interpolation.alpha;if(alpha==0||alpha===undefined){return this._catmullRomUniform(data)}else{var p0,p1,p2,p3,bp1,bp2,d1,d2,d3,A,B,N,M;var d3powA,d2powA,d3pow2A,d2pow2A,d1pow2A,d1powA;var d=[];d.push([Math.round(data[0].screen_x),Math.round(data[0].screen_y)]);var length=data.length;for(var i=0;i<length-1;i++){p0=i==0?data[0]:data[i-1];p1=data[i];p2=data[i+1];p3=i+2<length?data[i+2]:p2;d1=Math.sqrt(Math.pow(p0.screen_x-p1.screen_x,2)+Math.pow(p0.screen_y-p1.screen_y,2));d2=Math.sqrt(Math.pow(p1.screen_x-p2.screen_x,2)+Math.pow(p1.screen_y-p2.screen_y,2));d3=Math.sqrt(Math.pow(p2.screen_x-p3.screen_x,2)+Math.pow(p2.screen_y-p3.screen_y,2));d3powA=Math.pow(d3,alpha);d3pow2A=Math.pow(d3,2*alpha);d2powA=Math.pow(d2,alpha);d2pow2A=Math.pow(d2,2*alpha);d1powA=Math.pow(d1,alpha);d1pow2A=Math.pow(d1,2*alpha);A=2*d1pow2A+3*d1powA*d2powA+d2pow2A;B=2*d3pow2A+3*d3powA*d2powA+d2pow2A;N=3*d1powA*(d1powA+d2powA);if(N>0){N=1/N}M=3*d3powA*(d3powA+d2powA);if(M>0){M=1/M}bp1={screen_x:(-d2pow2A*p0.screen_x+A*p1.screen_x+d1pow2A*p2.screen_x)*N,screen_y:(-d2pow2A*p0.screen_y+A*p1.screen_y+d1pow2A*p2.screen_y)*N};bp2={screen_x:(d3pow2A*p1.screen_x+B*p2.screen_x-d2pow2A*p3.screen_x)*M,screen_y:(d3pow2A*p1.screen_y+B*p2.screen_y-d2pow2A*p3.screen_y)*M};if(bp1.screen_x==0&&bp1.screen_y==0){bp1=p1}if(bp2.screen_x==0&&bp2.screen_y==0){bp2=p2}d.push([bp1.screen_x,bp1.screen_y]);d.push([bp2.screen_x,bp2.screen_y]);d.push([p2.screen_x,p2.screen_y])}return d}};Line._linear=function(data){var d=[];for(var i=0;i<data.length;i++){d.push([data[i].screen_x,data[i].screen_y])}return d};module.exports=Line},function(module,exports,__webpack_require__){\"use strict\";var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DOMutil=__webpack_require__(14);var Component=__webpack_require__(16);function Legend(body,options,side,linegraphOptions){this.body=body;this.defaultOptions={enabled:false,icons:true,iconSize:20,iconSpacing:6,left:{visible:true,position:\"top-left\"},right:{visible:true,position:\"top-right\"}};this.side=side;this.options=util.extend({},this.defaultOptions);this.linegraphOptions=linegraphOptions;this.svgElements={};this.dom={};this.groups={};this.amountOfGroups=0;this._create();this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups};this.setOptions(options)}Legend.prototype=new Component;Legend.prototype.clear=function(){this.groups={};this.amountOfGroups=0};Legend.prototype.addGroup=function(label,graphOptions){if(graphOptions.options.excludeFromLegend!=true){if(!this.groups.hasOwnProperty(label)){this.groups[label]=graphOptions}this.amountOfGroups+=1}};Legend.prototype.updateGroup=function(label,graphOptions){this.groups[label]=graphOptions};Legend.prototype.removeGroup=function(label){if(this.groups.hasOwnProperty(label)){delete this.groups[label];this.amountOfGroups-=1}};Legend.prototype._create=function(){this.dom.frame=document.createElement(\"div\");this.dom.frame.className=\"vis-legend\";this.dom.frame.style.position=\"absolute\";this.dom.frame.style.top=\"10px\";this.dom.frame.style.display=\"block\";this.dom.textArea=document.createElement(\"div\");this.dom.textArea.className=\"vis-legend-text\";this.dom.textArea.style.position=\"relative\";this.dom.textArea.style.top=\"0px\";this.svg=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");this.svg.style.position=\"absolute\";this.svg.style.top=0+\"px\";this.svg.style.width=this.options.iconSize+5+\"px\";this.svg.style.height=\"100%\";this.dom.frame.appendChild(this.svg);this.dom.frame.appendChild(this.dom.textArea)};Legend.prototype.hide=function(){if(this.dom.frame.parentNode){this.dom.frame.parentNode.removeChild(this.dom.frame)}};Legend.prototype.show=function(){if(!this.dom.frame.parentNode){this.body.dom.center.appendChild(this.dom.frame)}};Legend.prototype.setOptions=function(options){var fields=[\"enabled\",\"orientation\",\"icons\",\"left\",\"right\"];util.selectiveDeepExtend(fields,this.options,options)};Legend.prototype.redraw=function(){var activeGroups=0;var groupArray=(0,_keys2[\"default\"])(this.groups);groupArray.sort(function(a,b){return a<b?-1:1});for(var i=0;i<groupArray.length;i++){var groupId=groupArray[i];if(this.groups[groupId].visible==true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]==true)){activeGroups++}}if(this.options[this.side].visible==false||this.amountOfGroups==0||this.options.enabled==false||activeGroups==0){this.hide()}else{this.show();if(this.options[this.side].position==\"top-left\"||this.options[this.side].position==\"bottom-left\"){this.dom.frame.style.left=\"4px\";this.dom.frame.style.textAlign=\"left\";this.dom.textArea.style.textAlign=\"left\";this.dom.textArea.style.left=this.options.iconSize+15+\"px\";this.dom.textArea.style.right=\"\";this.svg.style.left=0+\"px\";this.svg.style.right=\"\"}else{this.dom.frame.style.right=\"4px\";this.dom.frame.style.textAlign=\"right\";this.dom.textArea.style.textAlign=\"right\";this.dom.textArea.style.right=this.options.iconSize+15+\"px\";this.dom.textArea.style.left=\"\";this.svg.style.right=0+\"px\";this.svg.style.left=\"\"}if(this.options[this.side].position==\"top-left\"||this.options[this.side].position==\"top-right\"){this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace(\"px\",\"\"))+\"px\";this.dom.frame.style.bottom=\"\"}else{var scrollableHeight=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+scrollableHeight+Number(this.body.dom.center.style.top.replace(\"px\",\"\"))+\"px\";this.dom.frame.style.top=\"\"}if(this.options.icons==false){this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+\"px\";this.dom.textArea.style.right=\"\";this.dom.textArea.style.left=\"\";this.svg.style.width=\"0px\"}else{this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+\"px\";this.drawLegendIcons()}var content=\"\";for(i=0;i<groupArray.length;i++){groupId=groupArray[i];if(this.groups[groupId].visible==true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]==true)){content+=this.groups[groupId].content+\"<br />\"}}this.dom.textArea.innerHTML=content;this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+\"px\"}};Legend.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var groupArray=(0,_keys2[\"default\"])(this.groups);groupArray.sort(function(a,b){return a<b?-1:1});DOMutil.resetElements(this.svgElements);var padding=window.getComputedStyle(this.dom.frame).paddingTop;var iconOffset=Number(padding.replace(\"px\",\"\"));var x=iconOffset;var iconWidth=this.options.iconSize;var iconHeight=.75*this.options.iconSize;var y=iconOffset+.5*iconHeight+3;this.svg.style.width=iconWidth+5+iconOffset+\"px\";for(var i=0;i<groupArray.length;i++){var groupId=groupArray[i];if(this.groups[groupId].visible==true&&(this.linegraphOptions.visibility[groupId]===undefined||this.linegraphOptions.visibility[groupId]==true)){this.groups[groupId].getLegend(iconWidth,iconHeight,this.framework,x,y);y+=iconHeight+this.options.iconSpacing}}}};module.exports=Legend},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var string=\"string\";var bool=\"boolean\";var number=\"number\";var array=\"array\";var date=\"date\";var object=\"object\";var dom=\"dom\";var moment=\"moment\";var any=\"any\";var allOptions={configure:{enabled:{boolean:bool},filter:{boolean:bool,function:\"function\"},container:{dom:dom},__type__:{object:object,boolean:bool,function:\"function\"}},yAxisOrientation:{string:[\"left\",\"right\"]},defaultGroup:{string:string},sort:{boolean:bool},sampling:{boolean:bool},stack:{boolean:bool},graphHeight:{string:string,number:number},shaded:{enabled:{boolean:bool},orientation:{string:[\"bottom\",\"top\",\"zero\",\"group\"]},groupId:{object:object},__type__:{boolean:bool,object:object}},style:{string:[\"line\",\"bar\",\"points\"]},barChart:{width:{number:number},minWidth:{number:number},sideBySide:{boolean:bool},align:{string:[\"left\",\"center\",\"right\"]},__type__:{object:object}},interpolation:{enabled:{boolean:bool},parametrization:{string:[\"centripetal\",\"chordal\",\"uniform\"]},alpha:{number:number},__type__:{object:object,boolean:bool}},drawPoints:{enabled:{boolean:bool},onRender:{function:\"function\"},size:{number:number},style:{string:[\"square\",\"circle\"]},__type__:{object:object,boolean:bool,function:\"function\"}},dataAxis:{showMinorLabels:{boolean:bool},showMajorLabels:{boolean:bool},icons:{boolean:bool},width:{string:string,number:number},visible:{boolean:bool},alignZeros:{boolean:bool},left:{range:{min:{\nnumber:number,undefined:\"undefined\"},max:{number:number,undefined:\"undefined\"},__type__:{object:object}},format:{function:\"function\"},title:{text:{string:string,number:number,undefined:\"undefined\"},style:{string:string,undefined:\"undefined\"},__type__:{object:object}},__type__:{object:object}},right:{range:{min:{number:number,undefined:\"undefined\"},max:{number:number,undefined:\"undefined\"},__type__:{object:object}},format:{function:\"function\"},title:{text:{string:string,number:number,undefined:\"undefined\"},style:{string:string,undefined:\"undefined\"},__type__:{object:object}},__type__:{object:object}},__type__:{object:object}},legend:{enabled:{boolean:bool},icons:{boolean:bool},left:{visible:{boolean:bool},position:{string:[\"top-right\",\"bottom-right\",\"top-left\",\"bottom-left\"]},__type__:{object:object}},right:{visible:{boolean:bool},position:{string:[\"top-right\",\"bottom-right\",\"top-left\",\"bottom-left\"]},__type__:{object:object}},__type__:{object:object,boolean:bool}},groups:{visibility:{any:any},__type__:{object:object}},autoResize:{boolean:bool},throttleRedraw:{number:number},clickToUse:{boolean:bool},end:{number:number,date:date,string:string,moment:moment},format:{minorLabels:{millisecond:{string:string,undefined:\"undefined\"},second:{string:string,undefined:\"undefined\"},minute:{string:string,undefined:\"undefined\"},hour:{string:string,undefined:\"undefined\"},weekday:{string:string,undefined:\"undefined\"},day:{string:string,undefined:\"undefined\"},month:{string:string,undefined:\"undefined\"},year:{string:string,undefined:\"undefined\"},__type__:{object:object}},majorLabels:{millisecond:{string:string,undefined:\"undefined\"},second:{string:string,undefined:\"undefined\"},minute:{string:string,undefined:\"undefined\"},hour:{string:string,undefined:\"undefined\"},weekday:{string:string,undefined:\"undefined\"},day:{string:string,undefined:\"undefined\"},month:{string:string,undefined:\"undefined\"},year:{string:string,undefined:\"undefined\"},__type__:{object:object}},__type__:{object:object}},moment:{function:\"function\"},height:{string:string,number:number},hiddenDates:{start:{date:date,number:number,string:string,moment:moment},end:{date:date,number:number,string:string,moment:moment},repeat:{string:string},__type__:{object:object,array:array}},locale:{string:string},locales:{__any__:{any:any},__type__:{object:object}},max:{date:date,number:number,string:string,moment:moment},maxHeight:{number:number,string:string},maxMinorChars:{number:number},min:{date:date,number:number,string:string,moment:moment},minHeight:{number:number,string:string},moveable:{boolean:bool},multiselect:{boolean:bool},orientation:{string:string},showCurrentTime:{boolean:bool},showMajorLabels:{boolean:bool},showMinorLabels:{boolean:bool},start:{date:date,number:number,string:string,moment:moment},timeAxis:{scale:{string:string,undefined:\"undefined\"},step:{number:number,undefined:\"undefined\"},__type__:{object:object}},width:{string:string,number:number},zoomable:{boolean:bool},zoomKey:{string:[\"ctrlKey\",\"altKey\",\"metaKey\",\"\"]},zoomMax:{number:number},zoomMin:{number:number},zIndex:{number:number},__type__:{object:object}};var configureOptions={global:{sort:true,sampling:true,stack:false,shaded:{enabled:false,orientation:[\"zero\",\"top\",\"bottom\",\"group\"]},style:[\"line\",\"bar\",\"points\"],barChart:{width:[50,5,100,5],minWidth:[50,5,100,5],sideBySide:false,align:[\"left\",\"center\",\"right\"]},interpolation:{enabled:true,parametrization:[\"centripetal\",\"chordal\",\"uniform\"]},drawPoints:{enabled:true,size:[6,2,30,1],style:[\"square\",\"circle\"]},dataAxis:{showMinorLabels:true,showMajorLabels:true,icons:false,width:[40,0,200,1],visible:true,alignZeros:true,left:{title:{text:\"\",style:\"\"}},right:{title:{text:\"\",style:\"\"}}},legend:{enabled:false,icons:true,left:{visible:true,position:[\"top-right\",\"bottom-right\",\"top-left\",\"bottom-left\"]},right:{visible:true,position:[\"top-right\",\"bottom-right\",\"top-left\",\"bottom-left\"]}},autoResize:true,clickToUse:false,end:\"\",format:{minorLabels:{millisecond:\"SSS\",second:\"s\",minute:\"HH:mm\",hour:\"HH:mm\",weekday:\"ddd D\",day:\"D\",month:\"MMM\",year:\"YYYY\"},majorLabels:{millisecond:\"HH:mm:ss\",second:\"D MMMM HH:mm\",minute:\"ddd D MMMM\",hour:\"ddd D MMMM\",weekday:\"MMMM YYYY\",day:\"MMMM YYYY\",month:\"YYYY\",year:\"\"}},height:\"\",locale:\"\",max:\"\",maxHeight:\"\",maxMinorChars:[7,0,20,1],min:\"\",minHeight:\"\",moveable:true,orientation:[\"both\",\"bottom\",\"top\"],showCurrentTime:false,showMajorLabels:true,showMinorLabels:true,start:\"\",width:\"100%\",zoomable:true,zoomKey:[\"ctrlKey\",\"altKey\",\"metaKey\",\"\"],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1],zIndex:0}};exports.allOptions=allOptions;exports.configureOptions=configureOptions},function(module,exports,__webpack_require__){\"use strict\";var _create=__webpack_require__(29);var _create2=_interopRequireDefault(_create);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function parseDOT(data){dot=data;return parseGraph()}var NODE_ATTR_MAPPING={fontsize:\"font.size\",fontcolor:\"font.color\",labelfontcolor:\"font.color\",fontname:\"font.face\",color:[\"color.border\",\"color.background\"],fillcolor:\"color.background\",tooltip:\"title\",labeltooltip:\"title\"};var EDGE_ATTR_MAPPING=(0,_create2[\"default\"])(NODE_ATTR_MAPPING);EDGE_ATTR_MAPPING.color=\"color.color\";EDGE_ATTR_MAPPING.style=\"dashes\";var TOKENTYPE={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3};var DELIMITERS={\"{\":true,\"}\":true,\"[\":true,\"]\":true,\";\":true,\"=\":true,\",\":true,\"->\":true,\"--\":true};var dot=\"\";var index=0;var c=\"\";var token=\"\";var tokenType=TOKENTYPE.NULL;function first(){index=0;c=dot.charAt(0)}function next(){index++;c=dot.charAt(index)}function nextPreview(){return dot.charAt(index+1)}var regexAlphaNumeric=/[a-zA-Z_0-9.:#]/;function isAlphaNumeric(c){return regexAlphaNumeric.test(c)}function merge(a,b){if(!a){a={}}if(b){for(var name in b){if(b.hasOwnProperty(name)){a[name]=b[name]}}}return a}function setValue(obj,path,value){var keys=path.split(\".\");var o=obj;while(keys.length){var key=keys.shift();if(keys.length){if(!o[key]){o[key]={}}o=o[key]}else{o[key]=value}}}function addNode(graph,node){var i,len;var current=null;var graphs=[graph];var root=graph;while(root.parent){graphs.push(root.parent);root=root.parent}if(root.nodes){for(i=0,len=root.nodes.length;i<len;i++){if(node.id===root.nodes[i].id){current=root.nodes[i];break}}}if(!current){current={id:node.id};if(graph.node){current.attr=merge(current.attr,graph.node)}}for(i=graphs.length-1;i>=0;i--){var g=graphs[i];if(!g.nodes){g.nodes=[]}if(g.nodes.indexOf(current)===-1){g.nodes.push(current)}}if(node.attr){current.attr=merge(current.attr,node.attr)}}function addEdge(graph,edge){if(!graph.edges){graph.edges=[]}graph.edges.push(edge);if(graph.edge){var attr=merge({},graph.edge);edge.attr=merge(attr,edge.attr)}}function createEdge(graph,from,to,type,attr){var edge={from:from,to:to,type:type};if(graph.edge){edge.attr=merge({},graph.edge)}edge.attr=merge(edge.attr||{},attr);return edge}function getToken(){tokenType=TOKENTYPE.NULL;token=\"\";while(c===\" \"||c===\"\\t\"||c===\"\\n\"||c===\"\\r\"){next()}do{var isComment=false;if(c===\"#\"){var i=index-1;while(dot.charAt(i)===\" \"||dot.charAt(i)===\"\\t\"){i--}if(dot.charAt(i)===\"\\n\"||dot.charAt(i)===\"\"){while(c!=\"\"&&c!=\"\\n\"){next()}isComment=true}}if(c===\"/\"&&nextPreview()===\"/\"){while(c!=\"\"&&c!=\"\\n\"){next()}isComment=true}if(c===\"/\"&&nextPreview()===\"*\"){while(c!=\"\"){if(c===\"*\"&&nextPreview()===\"/\"){next();next();break}else{next()}}isComment=true}while(c===\" \"||c===\"\\t\"||c===\"\\n\"||c===\"\\r\"){next()}}while(isComment);if(c===\"\"){tokenType=TOKENTYPE.DELIMITER;return}var c2=c+nextPreview();if(DELIMITERS[c2]){tokenType=TOKENTYPE.DELIMITER;token=c2;next();next();return}if(DELIMITERS[c]){tokenType=TOKENTYPE.DELIMITER;token=c;next();return}if(isAlphaNumeric(c)||c===\"-\"){token+=c;next();while(isAlphaNumeric(c)){token+=c;next()}if(token===\"false\"){token=false}else if(token===\"true\"){token=true}else if(!isNaN(Number(token))){token=Number(token)}tokenType=TOKENTYPE.IDENTIFIER;return}if(c==='\"'){next();while(c!=\"\"&&(c!='\"'||c==='\"'&&nextPreview()==='\"')){if(c==='\"'){token+=c;next()}else if(c===\"\\\\\"&&nextPreview()===\"n\"){token+=\"\\n\";next()}else{token+=c}next()}if(c!='\"'){throw newSyntaxError('End of string \" expected')}next();tokenType=TOKENTYPE.IDENTIFIER;return}tokenType=TOKENTYPE.UNKNOWN;while(c!=\"\"){token+=c;next()}throw new SyntaxError('Syntax error in part \"'+chop(token,30)+'\"')}function parseGraph(){var graph={};first();getToken();if(token===\"strict\"){graph.strict=true;getToken()}if(token===\"graph\"||token===\"digraph\"){graph.type=token;getToken()}if(tokenType===TOKENTYPE.IDENTIFIER){graph.id=token;getToken()}if(token!=\"{\"){throw newSyntaxError(\"Angle bracket { expected\")}getToken();parseStatements(graph);if(token!=\"}\"){throw newSyntaxError(\"Angle bracket } expected\")}getToken();if(token!==\"\"){throw newSyntaxError(\"End of file expected\")}getToken();delete graph.node;delete graph.edge;delete graph.graph;return graph}function parseStatements(graph){while(token!==\"\"&&token!=\"}\"){parseStatement(graph);if(token===\";\"){getToken()}}}function parseStatement(graph){var subgraph=parseSubgraph(graph);if(subgraph){parseEdge(graph,subgraph);return}var attr=parseAttributeStatement(graph);if(attr){return}if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Identifier expected\")}var id=token;getToken();if(token===\"=\"){getToken();if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Identifier expected\")}graph[id]=token;getToken()}else{parseNodeStatement(graph,id)}}function parseSubgraph(graph){var subgraph=null;if(token===\"subgraph\"){subgraph={};subgraph.type=\"subgraph\";getToken();if(tokenType===TOKENTYPE.IDENTIFIER){subgraph.id=token;getToken()}}if(token===\"{\"){getToken();if(!subgraph){subgraph={}}subgraph.parent=graph;subgraph.node=graph.node;subgraph.edge=graph.edge;subgraph.graph=graph.graph;parseStatements(subgraph);if(token!=\"}\"){throw newSyntaxError(\"Angle bracket } expected\")}getToken();delete subgraph.node;delete subgraph.edge;delete subgraph.graph;delete subgraph.parent;if(!graph.subgraphs){graph.subgraphs=[]}graph.subgraphs.push(subgraph)}return subgraph}function parseAttributeStatement(graph){if(token===\"node\"){getToken();graph.node=parseAttributeList();return\"node\"}else if(token===\"edge\"){getToken();graph.edge=parseAttributeList();return\"edge\"}else if(token===\"graph\"){getToken();graph.graph=parseAttributeList();return\"graph\"}return null}function parseNodeStatement(graph,id){var node={id:id};var attr=parseAttributeList();if(attr){node.attr=attr}addNode(graph,node);parseEdge(graph,id)}function parseEdge(graph,from){while(token===\"->\"||token===\"--\"){var to;var type=token;getToken();var subgraph=parseSubgraph(graph);if(subgraph){to=subgraph}else{if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Identifier or subgraph expected\")}to=token;addNode(graph,{id:to});getToken()}var attr=parseAttributeList();var edge=createEdge(graph,from,to,type,attr);addEdge(graph,edge);from=to}}function parseAttributeList(){var attr=null;var edgeStyles={dashed:true,solid:false,dotted:[1,5]};while(token===\"[\"){getToken();attr={};while(token!==\"\"&&token!=\"]\"){if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Attribute name expected\")}var name=token;getToken();if(token!=\"=\"){throw newSyntaxError(\"Equal sign = expected\")}getToken();if(tokenType!=TOKENTYPE.IDENTIFIER){throw newSyntaxError(\"Attribute value expected\")}var value=token;if(name===\"style\"){value=edgeStyles[value]}setValue(attr,name,value);getToken();if(token==\",\"){getToken()}}if(token!=\"]\"){throw newSyntaxError(\"Bracket ] expected\")}getToken()}return attr}function newSyntaxError(message){return new SyntaxError(message+', got \"'+chop(token,30)+'\" (char '+index+\")\")}function chop(text,maxLength){return text.length<=maxLength?text:text.substr(0,27)+\"...\"}function forEach2(array1,array2,fn){if(Array.isArray(array1)){array1.forEach(function(elem1){if(Array.isArray(array2)){array2.forEach(function(elem2){fn(elem1,elem2)})}else{fn(elem1,array2)}})}else{if(Array.isArray(array2)){array2.forEach(function(elem2){fn(array1,elem2)})}else{fn(array1,array2)}}}function setProp(object,path,value){var names=path.split(\".\");var prop=names.pop();var obj=object;for(var i=0;i<names.length;i++){var name=names[i];if(!(name in obj)){obj[name]={}}obj=obj[name]}obj[prop]=value;return object}function convertAttr(attr,mapping){var converted={};for(var prop in attr){if(attr.hasOwnProperty(prop)){var visProp=mapping[prop];if(Array.isArray(visProp)){visProp.forEach(function(visPropI){setProp(converted,visPropI,attr[prop])})}else if(typeof visProp===\"string\"){setProp(converted,visProp,attr[prop])}else{setProp(converted,prop,attr[prop])}}}return converted}function DOTToGraph(data){var dotData=parseDOT(data);var graphData={nodes:[],edges:[],options:{}};if(dotData.nodes){dotData.nodes.forEach(function(dotNode){var graphNode={id:dotNode.id,label:String(dotNode.label||dotNode.id)};merge(graphNode,convertAttr(dotNode.attr,NODE_ATTR_MAPPING));if(graphNode.image){graphNode.shape=\"image\"}graphData.nodes.push(graphNode)})}if(dotData.edges){var convertEdge=function convertEdge(dotEdge){var graphEdge={from:dotEdge.from,to:dotEdge.to};merge(graphEdge,convertAttr(dotEdge.attr,EDGE_ATTR_MAPPING));graphEdge.arrows=dotEdge.type===\"->\"?\"to\":undefined;return graphEdge};dotData.edges.forEach(function(dotEdge){var from,to;if(dotEdge.from instanceof Object){from=dotEdge.from.nodes}else{from={id:dotEdge.from}}if(dotEdge.to instanceof Object){to=dotEdge.to.nodes}else{to={id:dotEdge.to}}if(dotEdge.from instanceof Object&&dotEdge.from.edges){dotEdge.from.edges.forEach(function(subEdge){var graphEdge=convertEdge(subEdge);graphData.edges.push(graphEdge)})}forEach2(from,to,function(from,to){var subEdge=createEdge(graphData,from.id,to.id,dotEdge.type,dotEdge.attr);var graphEdge=convertEdge(subEdge);graphData.edges.push(graphEdge)});if(dotEdge.to instanceof Object&&dotEdge.to.edges){dotEdge.to.edges.forEach(function(subEdge){var graphEdge=convertEdge(subEdge);graphData.edges.push(graphEdge)})}})}if(dotData.attr){graphData.options=dotData.attr}return graphData}exports.parseDOT=parseDOT;exports.DOTToGraph=DOTToGraph},function(module,exports,__webpack_require__){\"use strict\";function parseGephi(gephiJSON,optionsObj){var edges=[];var nodes=[];var options={edges:{inheritColor:false},nodes:{fixed:false,parseColor:false}};if(optionsObj!==undefined){if(optionsObj.fixed!==undefined){options.nodes.fixed=optionsObj.fixed}if(optionsObj.parseColor!==undefined){options.nodes.parseColor=optionsObj.parseColor}if(optionsObj.inheritColor!==undefined){options.edges.inheritColor=optionsObj.inheritColor}}var gEdges=gephiJSON.edges;var gNodes=gephiJSON.nodes;for(var i=0;i<gEdges.length;i++){var edge={};var gEdge=gEdges[i];edge[\"id\"]=gEdge.id;edge[\"from\"]=gEdge.source;edge[\"to\"]=gEdge.target;edge[\"attributes\"]=gEdge.attributes;edge[\"label\"]=gEdge.label;edge[\"title\"]=gEdge.attributes!==undefined?gEdge.attributes.title:undefined;if(gEdge[\"type\"]===\"Directed\"){edge[\"arrows\"]=\"to\"}if(gEdge.color&&options.inheritColor===false){edge[\"color\"]=gEdge.color}edges.push(edge)}for(var j=0;j<gNodes.length;j++){var node={};var gNode=gNodes[j];node[\"id\"]=gNode.id;node[\"attributes\"]=gNode.attributes;node[\"x\"]=gNode.x;node[\"y\"]=gNode.y;node[\"label\"]=gNode.label;node[\"title\"]=gNode.attributes!==undefined?gNode.attributes.title:gNode.title;if(options.nodes.parseColor===true){node[\"color\"]=gNode.color}else{node[\"color\"]=gNode.color!==undefined?{background:gNode.color,border:gNode.color,highlight:{background:gNode.color,border:gNode.color},hover:{background:gNode.color,border:gNode.color}}:undefined}node[\"size\"]=gNode.size;node[\"fixed\"]=options.nodes.fixed&&gNode.x!==undefined&&gNode.y!==undefined;nodes.push(node)}return{nodes:nodes,edges:edges}}exports.parseGephi=parseGephi},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _CachedImage=__webpack_require__(185);var _CachedImage2=_interopRequireDefault(_CachedImage);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Images=function(){function Images(callback){(0,_classCallCheck3[\"default\"])(this,Images);this.images={};this.imageBroken={};this.callback=callback}(0,_createClass3[\"default\"])(Images,[{key:\"_tryloadBrokenUrl\",value:function _tryloadBrokenUrl(url,brokenUrl,imageToLoadBrokenUrlOn){if(url===undefined||imageToLoadBrokenUrlOn===undefined)return;if(brokenUrl===undefined){console.warn(\"No broken url image defined\");return}imageToLoadBrokenUrlOn.onerror=function(){console.error(\"Could not load brokenImage:\",brokenUrl)};imageToLoadBrokenUrlOn.image.src=brokenUrl}},{key:\"_redrawWithImage\",value:function _redrawWithImage(imageToRedrawWith){if(this.callback){this.callback(imageToRedrawWith)}}},{key:\"load\",value:function load(url,brokenUrl){var _this=this;var cachedImage=this.images[url];if(cachedImage)return cachedImage;var img=new _CachedImage2[\"default\"];this.images[url]=img;img.image.onload=function(){_this._fixImageCoordinates(img.image);img.init();_this._redrawWithImage(img)};img.image.onerror=function(){console.error(\"Could not load image:\",url);_this._tryloadBrokenUrl(url,brokenUrl,img)};img.image.src=url;return img}},{key:\"_fixImageCoordinates\",value:function _fixImageCoordinates(imageToCache){if(imageToCache.width===0){document.body.appendChild(imageToCache);imageToCache.width=imageToCache.offsetWidth;imageToCache.height=imageToCache.offsetHeight;document.body.removeChild(imageToCache)}}}]);return Images}();exports[\"default\"]=Images},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var ComponentUtil=__webpack_require__(48)[\"default\"];var LabelSplitter=__webpack_require__(191)[\"default\"];var multiFontStyle=[\"bold\",\"ital\",\"boldital\",\"mono\"];var Label=function(){function Label(body,options){var edgelabel=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;(0,_classCallCheck3[\"default\"])(this,Label);this.body=body;this.pointToSelf=false;this.baseSize=undefined;this.fontOptions={};this.setOptions(options);this.size={top:0,left:0,width:0,height:0,yLine:0};this.isEdgeLabel=edgelabel}(0,_createClass3[\"default\"])(Label,[{key:\"setOptions\",value:function setOptions(options){this.elementOptions=options;this.initFontOptions(options.font);if(ComponentUtil.isValidLabel(options.label)){this.labelDirty=true}else{options.label=\"\"}if(options.font!==undefined&&options.font!==null){if(typeof options.font===\"string\"){this.baseSize=this.fontOptions.size}else if((0,_typeof3[\"default\"])(options.font)===\"object\"){var size=options.font.size;if(size!==undefined){this.baseSize=size}}}}},{key:\"initFontOptions\",value:function initFontOptions(newFontOptions){var _this=this;util.forEach(multiFontStyle,function(style){_this.fontOptions[style]={}});if(Label.parseFontString(this.fontOptions,newFontOptions)){this.fontOptions.vadjust=0;return}util.forEach(newFontOptions,function(prop,n){if(prop!==undefined&&prop!==null&&(typeof prop===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(prop))!==\"object\"){_this.fontOptions[n]=prop}})}},{key:\"constrain\",value:function constrain(pile){var fontOptions={constrainWidth:false,maxWdt:-1,minWdt:-1,constrainHeight:false,minHgt:-1,valign:\"middle\"};var widthConstraint=util.topMost(pile,\"widthConstraint\");if(typeof widthConstraint===\"number\"){fontOptions.maxWdt=Number(widthConstraint);fontOptions.minWdt=Number(widthConstraint)}else if((typeof widthConstraint===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(widthConstraint))===\"object\"){var widthConstraintMaximum=util.topMost(pile,[\"widthConstraint\",\"maximum\"]);if(typeof widthConstraintMaximum===\"number\"){fontOptions.maxWdt=Number(widthConstraintMaximum)}var widthConstraintMinimum=util.topMost(pile,[\"widthConstraint\",\"minimum\"]);if(typeof widthConstraintMinimum===\"number\"){fontOptions.minWdt=Number(widthConstraintMinimum)}}var heightConstraint=util.topMost(pile,\"heightConstraint\");if(typeof heightConstraint===\"number\"){fontOptions.minHgt=Number(heightConstraint)}else if((typeof heightConstraint===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(heightConstraint))===\"object\"){var heightConstraintMinimum=util.topMost(pile,[\"heightConstraint\",\"minimum\"]);if(typeof heightConstraintMinimum===\"number\"){fontOptions.minHgt=Number(heightConstraintMinimum)}var heightConstraintValign=util.topMost(pile,[\"heightConstraint\",\"valign\"]);if(typeof heightConstraintValign===\"string\"){if(heightConstraintValign===\"top\"||heightConstraintValign===\"bottom\"){fontOptions.valign=heightConstraintValign}}}return fontOptions}},{key:\"update\",value:function update(options,pile){this.setOptions(options,true);this.propagateFonts(pile);util.deepExtend(this.fontOptions,this.constrain(pile));this.fontOptions.chooser=ComponentUtil.choosify(\"label\",pile)}},{key:\"adjustSizes\",value:function adjustSizes(margins){var widthBias=margins?margins.right+margins.left:0;if(this.fontOptions.constrainWidth){this.fontOptions.maxWdt-=widthBias;this.fontOptions.minWdt-=widthBias}var heightBias=margins?margins.top+margins.bottom:0;if(this.fontOptions.constrainHeight){this.fontOptions.minHgt-=heightBias}}},{key:\"addFontOptionsToPile\",value:function addFontOptionsToPile(dstPile,srcPile){for(var i=0;i<srcPile.length;++i){this.addFontToPile(dstPile,srcPile[i])}}},{key:\"addFontToPile\",value:function addFontToPile(pile,options){if(options===undefined)return;if(options.font===undefined||options.font===null)return;var item=options.font;pile.push(item)}},{key:\"getBasicOptions\",value:function getBasicOptions(pile){var ret={};for(var n=0;n<pile.length;++n){var fontOptions=pile[n];var tmpShorthand={};if(Label.parseFontString(tmpShorthand,fontOptions)){fontOptions=tmpShorthand}util.forEach(fontOptions,function(opt,name){if(opt===undefined)return;if(ret.hasOwnProperty(name))return;if(multiFontStyle.indexOf(name)!==-1){ret[name]={}}else{ret[name]=opt}})}return ret}},{key:\"getFontOption\",value:function getFontOption(pile,multiName,option){var multiFont=void 0;for(var n=0;n<pile.length;++n){var fontOptions=pile[n];if(fontOptions.hasOwnProperty(multiName)){multiFont=fontOptions[multiName];if(multiFont===undefined||multiFont===null)continue;var tmpShorthand={};if(Label.parseFontString(tmpShorthand,multiFont)){multiFont=tmpShorthand}if(multiFont.hasOwnProperty(option)){return multiFont[option]}}}if(this.fontOptions.hasOwnProperty(option)){return this.fontOptions[option]}throw new Error(\"Did not find value for multi-font for property: '\"+option+\"'\")}},{key:\"getFontOptions\",value:function getFontOptions(pile,multiName){var result={};var optionNames=[\"color\",\"size\",\"face\",\"mod\",\"vadjust\"];for(var i=0;i<optionNames.length;++i){var mod=optionNames[i];result[mod]=this.getFontOption(pile,multiName,mod)}return result}},{key:\"propagateFonts\",value:function propagateFonts(pile){var _this2=this;var fontPile=[];this.addFontOptionsToPile(fontPile,pile);this.fontOptions=this.getBasicOptions(fontPile);var _loop=function _loop(i){var mod=multiFontStyle[i];var modOptions=_this2.fontOptions[mod];var tmpMultiFontOptions=_this2.getFontOptions(fontPile,mod);util.forEach(tmpMultiFontOptions,function(option,n){modOptions[n]=option});modOptions.size=Number(modOptions.size);modOptions.vadjust=Number(modOptions.vadjust)};for(var i=0;i<multiFontStyle.length;++i){_loop(i)}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover){var baseline=arguments.length>5&&arguments[5]!==undefined?arguments[5]:\"middle\";if(this.elementOptions.label===undefined)return;var viewFontSize=this.fontOptions.size*this.body.view.scale;if(this.elementOptions.label&&viewFontSize<this.elementOptions.scaling.label.drawThreshold-1)return;if(viewFontSize>=this.elementOptions.scaling.label.maxVisible){viewFontSize=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale}this.calculateLabelSize(ctx,selected,hover,x,y,baseline);this._drawBackground(ctx);this._drawText(ctx,x,this.size.yLine,baseline,viewFontSize)}},{key:\"_drawBackground\",value:function _drawBackground(ctx){if(this.fontOptions.background!==undefined&&this.fontOptions.background!==\"none\"){ctx.fillStyle=this.fontOptions.background;var size=this.getSize();ctx.fillRect(size.left,size.top,size.width,size.height)}}},{key:\"_drawText\",value:function _drawText(ctx,x,y){var baseline=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\"middle\";var viewFontSize=arguments[4];var _setAlignment2=this._setAlignment(ctx,x,y,baseline);var _setAlignment3=(0,_slicedToArray3[\"default\"])(_setAlignment2,2);x=_setAlignment3[0];y=_setAlignment3[1];ctx.textAlign=\"left\";x=x-this.size.width/2;if(this.fontOptions.valign&&this.size.height>this.size.labelHeight){if(this.fontOptions.valign===\"top\"){y-=(this.size.height-this.size.labelHeight)/2}if(this.fontOptions.valign===\"bottom\"){y+=(this.size.height-this.size.labelHeight)/2}}for(var i=0;i<this.lineCount;i++){var line=this.lines[i];if(line&&line.blocks){var width=0;if(this.isEdgeLabel||this.fontOptions.align===\"center\"){width+=(this.size.width-line.width)/2}else if(this.fontOptions.align===\"right\"){width+=this.size.width-line.width}for(var j=0;j<line.blocks.length;j++){var block=line.blocks[j];ctx.font=block.font;var _getColor2=this._getColor(block.color,viewFontSize,block.strokeColor),_getColor3=(0,_slicedToArray3[\"default\"])(_getColor2,2),fontColor=_getColor3[0],strokeColor=_getColor3[1];if(block.strokeWidth>0){ctx.lineWidth=block.strokeWidth;ctx.strokeStyle=strokeColor;ctx.lineJoin=\"round\"}ctx.fillStyle=fontColor;if(block.strokeWidth>0){ctx.strokeText(block.text,x+width,y+block.vadjust)}ctx.fillText(block.text,x+width,y+block.vadjust);width+=block.width}y+=line.height}}}},{key:\"_setAlignment\",value:function _setAlignment(ctx,x,y,baseline){if(this.isEdgeLabel&&this.fontOptions.align!==\"horizontal\"&&this.pointToSelf===false){x=0;y=0;var lineMargin=2;if(this.fontOptions.align===\"top\"){ctx.textBaseline=\"alphabetic\";y-=2*lineMargin}else if(this.fontOptions.align===\"bottom\"){ctx.textBaseline=\"hanging\";y+=2*lineMargin}else{ctx.textBaseline=\"middle\"}}else{ctx.textBaseline=baseline}return[x,y]}},{key:\"_getColor\",value:function _getColor(color,viewFontSize,initialStrokeColor){var fontColor=color||\"#000000\";var strokeColor=initialStrokeColor||\"#ffffff\";if(viewFontSize<=this.elementOptions.scaling.label.drawThreshold){var opacity=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-viewFontSize)));fontColor=util.overrideOpacity(fontColor,opacity);strokeColor=util.overrideOpacity(strokeColor,opacity)}return[fontColor,strokeColor]}},{key:\"getTextSize\",value:function getTextSize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;this._processLabel(ctx,selected,hover);return{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:\"getSize\",value:function getSize(){var lineMargin=2;var x=this.size.left;var y=this.size.top-.5*lineMargin;if(this.isEdgeLabel){var x2=-this.size.width*.5;switch(this.fontOptions.align){case\"middle\":x=x2;y=-this.size.height*.5;break;case\"top\":x=x2;y=-(this.size.height+lineMargin);break;case\"bottom\":x=x2;y=lineMargin;break}}var ret={left:x,top:y,width:this.size.width,height:this.size.height};return ret}},{key:\"calculateLabelSize\",value:function calculateLabelSize(ctx,selected,hover){var x=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0;var y=arguments.length>4&&arguments[4]!==undefined?arguments[4]:0;var baseline=arguments.length>5&&arguments[5]!==undefined?arguments[5]:\"middle\";this._processLabel(ctx,selected,hover);this.size.left=x-this.size.width*.5;this.size.top=y-this.size.height*.5;this.size.yLine=y+(1-this.lineCount)*.5*this.fontOptions.size;if(baseline===\"hanging\"){this.size.top+=.5*this.fontOptions.size;this.size.top+=4;this.size.yLine+=4}}},{key:\"getFormattingValues\",value:function getFormattingValues(ctx,selected,hover,mod){var getValue=function getValue(fontOptions,mod,option){if(mod===\"normal\"){if(option===\"mod\")return\"\";return fontOptions[option]}if(fontOptions[mod][option]!==undefined){return fontOptions[mod][option]}else{return fontOptions[option]}};var values={color:getValue(this.fontOptions,mod,\"color\"),size:getValue(this.fontOptions,mod,\"size\"),face:getValue(this.fontOptions,mod,\"face\"),mod:getValue(this.fontOptions,mod,\"mod\"),vadjust:getValue(this.fontOptions,mod,\"vadjust\"),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};if(selected||hover){if(mod===\"normal\"&&this.fontOptions.chooser===true&&this.elementOptions.labelHighlightBold){values.mod=\"bold\"}else{if(typeof this.fontOptions.chooser===\"function\"){this.fontOptions.chooser(values,this.elementOptions.id,selected,hover)}}}var fontString=\"\";if(values.mod!==undefined&&values.mod!==\"\"){fontString+=values.mod+\" \"}fontString+=values.size+\"px \"+values.face;ctx.font=fontString.replace(/\"/g,\"\");values.font=ctx.font;values.height=values.size;return values}},{key:\"differentState\",value:function differentState(selected,hover){return selected!==this.selectedState||hover!==this.hoverState}},{key:\"_processLabelText\",value:function _processLabelText(ctx,selected,hover,inText){var splitter=new LabelSplitter(ctx,this,selected,hover);return splitter.process(inText)}},{key:\"_processLabel\",value:function _processLabel(ctx,selected,hover){if(this.labelDirty===false&&!this.differentState(selected,hover))return;var state=this._processLabelText(ctx,selected,hover,this.elementOptions.label);if(this.fontOptions.minWdt>0&&state.width<this.fontOptions.minWdt){state.width=this.fontOptions.minWdt}this.size.labelHeight=state.height;if(this.fontOptions.minHgt>0&&state.height<this.fontOptions.minHgt){state.height=this.fontOptions.minHgt}this.lines=state.lines;this.lineCount=state.lines.length;this.size.width=state.width;this.size.height=state.height;this.selectedState=selected;this.hoverState=hover;this.labelDirty=false}},{key:\"visible\",value:function visible(){if(this.size.width===0||this.size.height===0||this.elementOptions.label===undefined){return false}var viewFontSize=this.fontOptions.size*this.body.view.scale;if(viewFontSize<this.elementOptions.scaling.label.drawThreshold-1){return false}return true}}],[{key:\"parseFontString\",value:function parseFontString(outOptions,inOptions){if(!inOptions||typeof inOptions!==\"string\")return false;var newOptionsArray=inOptions.split(\" \");outOptions.size=newOptionsArray[0].replace(\"px\",\"\");outOptions.face=newOptionsArray[1];outOptions.color=newOptionsArray[2];return true}}]);return Label}();exports[\"default\"]=Label},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var EndPoints=__webpack_require__(119)[\"default\"];var EdgeBase=function(){function EdgeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,EdgeBase);this.body=body;this.labelModule=labelModule\n;this.options={};this.setOptions(options);this.colorDirty=true;this.color={};this.selectionWidth=2;this.hoverWidth=1.5;this.fromPoint=this.from;this.toPoint=this.to}(0,_createClass3[\"default\"])(EdgeBase,[{key:\"connect\",value:function connect(){this.from=this.body.nodes[this.options.from];this.to=this.body.nodes[this.options.to]}},{key:\"cleanup\",value:function cleanup(){return false}},{key:\"setOptions\",value:function setOptions(options){this.options=options;this.from=this.body.nodes[this.options.from];this.to=this.body.nodes[this.options.to];this.id=this.options.id}},{key:\"drawLine\",value:function drawLine(ctx,values,selected,hover,viaNode){ctx.strokeStyle=this.getColor(ctx,values,selected,hover);ctx.lineWidth=values.width;if(values.dashes!==false){this._drawDashedLine(ctx,values,viaNode)}else{this._drawLine(ctx,values,viaNode)}}},{key:\"_drawLine\",value:function _drawLine(ctx,values,viaNode,fromPoint,toPoint){if(this.from!=this.to){this._line(ctx,values,viaNode,fromPoint,toPoint)}else{var _getCircleData2=this._getCircleData(ctx),_getCircleData3=(0,_slicedToArray3[\"default\"])(_getCircleData2,3),x=_getCircleData3[0],y=_getCircleData3[1],radius=_getCircleData3[2];this._circle(ctx,values,x,y,radius)}}},{key:\"_drawDashedLine\",value:function _drawDashedLine(ctx,values,viaNode,fromPoint,toPoint){ctx.lineCap=\"round\";var pattern=[5,5];if(Array.isArray(values.dashes)===true){pattern=values.dashes}if(ctx.setLineDash!==undefined){ctx.save();ctx.setLineDash(pattern);ctx.lineDashOffset=0;if(this.from!=this.to){this._line(ctx,values,viaNode)}else{var _getCircleData4=this._getCircleData(ctx),_getCircleData5=(0,_slicedToArray3[\"default\"])(_getCircleData4,3),x=_getCircleData5[0],y=_getCircleData5[1],radius=_getCircleData5[2];this._circle(ctx,values,x,y,radius)}ctx.setLineDash([0]);ctx.lineDashOffset=0;ctx.restore()}else{if(this.from!=this.to){ctx.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,pattern)}else{var _getCircleData6=this._getCircleData(ctx),_getCircleData7=(0,_slicedToArray3[\"default\"])(_getCircleData6,3),_x=_getCircleData7[0],_y=_getCircleData7[1],_radius=_getCircleData7[2];this._circle(ctx,values,_x,_y,_radius)}this.enableShadow(ctx,values);ctx.stroke();this.disableShadow(ctx,values)}}},{key:\"findBorderPosition\",value:function findBorderPosition(nearNode,ctx,options){if(this.from!=this.to){return this._findBorderPosition(nearNode,ctx,options)}else{return this._findBorderPositionCircle(nearNode,ctx,options)}}},{key:\"findBorderPositions\",value:function findBorderPositions(ctx){var from={};var to={};if(this.from!=this.to){from=this._findBorderPosition(this.from,ctx);to=this._findBorderPosition(this.to,ctx)}else{var _getCircleData$slice=this._getCircleData(ctx).slice(0,2),_getCircleData$slice2=(0,_slicedToArray3[\"default\"])(_getCircleData$slice,2),x=_getCircleData$slice2[0],y=_getCircleData$slice2[1];from=this._findBorderPositionCircle(this.from,ctx,{x:x,y:y,low:.25,high:.6,direction:-1});to=this._findBorderPositionCircle(this.from,ctx,{x:x,y:y,low:.6,high:.8,direction:1})}return{from:from,to:to}}},{key:\"_getCircleData\",value:function _getCircleData(ctx){var x=void 0,y=void 0;var node=this.from;var radius=this.options.selfReferenceSize;if(ctx!==undefined){if(node.shape.width===undefined){node.shape.resize(ctx)}}if(node.shape.width>node.shape.height){x=node.x+node.shape.width*.5;y=node.y-radius}else{x=node.x+radius;y=node.y-node.shape.height*.5}return[x,y,radius]}},{key:\"_pointOnCircle\",value:function _pointOnCircle(x,y,radius,percentage){var angle=percentage*2*Math.PI;return{x:x+radius*Math.cos(angle),y:y-radius*Math.sin(angle)}}},{key:\"_findBorderPositionCircle\",value:function _findBorderPositionCircle(node,ctx,options){var x=options.x;var y=options.y;var low=options.low;var high=options.high;var direction=options.direction;var maxIterations=10;var iteration=0;var radius=this.options.selfReferenceSize;var pos=void 0,angle=void 0,distanceToBorder=void 0,distanceToPoint=void 0,difference=void 0;var threshold=.05;var middle=(low+high)*.5;while(low<=high&&iteration<maxIterations){middle=(low+high)*.5;pos=this._pointOnCircle(x,y,radius,middle);angle=Math.atan2(node.y-pos.y,node.x-pos.x);distanceToBorder=node.distanceToBorder(ctx,angle);distanceToPoint=Math.sqrt(Math.pow(pos.x-node.x,2)+Math.pow(pos.y-node.y,2));difference=distanceToBorder-distanceToPoint;if(Math.abs(difference)<threshold){break}else if(difference>0){if(direction>0){low=middle}else{high=middle}}else{if(direction>0){high=middle}else{low=middle}}iteration++}pos.t=middle;return pos}},{key:\"getLineWidth\",value:function getLineWidth(selected,hover){if(selected===true){return Math.max(this.selectionWidth,.3/this.body.view.scale)}else{if(hover===true){return Math.max(this.hoverWidth,.3/this.body.view.scale)}else{return Math.max(this.options.width,.3/this.body.view.scale)}}}},{key:\"getColor\",value:function getColor(ctx,values,selected,hover){if(values.inheritsColor!==false){if(values.inheritsColor===\"both\"&&this.from.id!==this.to.id){var grd=ctx.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y);var fromColor=void 0,toColor=void 0;fromColor=this.from.options.color.highlight.border;toColor=this.to.options.color.highlight.border;if(this.from.selected===false&&this.to.selected===false){fromColor=util.overrideOpacity(this.from.options.color.border,values.opacity);toColor=util.overrideOpacity(this.to.options.color.border,values.opacity)}else if(this.from.selected===true&&this.to.selected===false){toColor=this.to.options.color.border}else if(this.from.selected===false&&this.to.selected===true){fromColor=this.from.options.color.border}grd.addColorStop(0,fromColor);grd.addColorStop(1,toColor);return grd}if(values.inheritsColor===\"to\"){return util.overrideOpacity(this.to.options.color.border,values.opacity)}else{return util.overrideOpacity(this.from.options.color.border,values.opacity)}}else{return util.overrideOpacity(values.color,values.opacity)}}},{key:\"_circle\",value:function _circle(ctx,values,x,y,radius){this.enableShadow(ctx,values);ctx.beginPath();ctx.arc(x,y,radius,0,2*Math.PI,false);ctx.stroke();this.disableShadow(ctx,values)}},{key:\"getDistanceToEdge\",value:function getDistanceToEdge(x1,y1,x2,y2,x3,y3,via,values){var returnValue=0;if(this.from!=this.to){returnValue=this._getDistanceToEdge(x1,y1,x2,y2,x3,y3,via)}else{var _getCircleData8=this._getCircleData(undefined),_getCircleData9=(0,_slicedToArray3[\"default\"])(_getCircleData8,3),x=_getCircleData9[0],y=_getCircleData9[1],radius=_getCircleData9[2];var dx=x-x3;var dy=y-y3;returnValue=Math.abs(Math.sqrt(dx*dx+dy*dy)-radius)}return returnValue}},{key:\"_getDistanceToLine\",value:function _getDistanceToLine(x1,y1,x2,y2,x3,y3){var px=x2-x1;var py=y2-y1;var something=px*px+py*py;var u=((x3-x1)*px+(y3-y1)*py)/something;if(u>1){u=1}else if(u<0){u=0}var x=x1+u*px;var y=y1+u*py;var dx=x-x3;var dy=y-y3;return Math.sqrt(dx*dx+dy*dy)}},{key:\"getArrowData\",value:function getArrowData(ctx,position,viaNode,selected,hover,values){var angle=void 0;var arrowPoint=void 0;var node1=void 0;var node2=void 0;var guideOffset=void 0;var scaleFactor=void 0;var type=void 0;var lineWidth=values.width;if(position===\"from\"){node1=this.from;node2=this.to;guideOffset=.1;scaleFactor=values.fromArrowScale;type=values.fromArrowType}else if(position===\"to\"){node1=this.to;node2=this.from;guideOffset=-.1;scaleFactor=values.toArrowScale;type=values.toArrowType}else{node1=this.to;node2=this.from;scaleFactor=values.middleArrowScale;type=values.middleArrowType}if(node1!=node2){if(position!==\"middle\"){if(this.options.smooth.enabled===true){arrowPoint=this.findBorderPosition(node1,ctx,{via:viaNode});var guidePos=this.getPoint(Math.max(0,Math.min(1,arrowPoint.t+guideOffset)),viaNode);angle=Math.atan2(arrowPoint.y-guidePos.y,arrowPoint.x-guidePos.x)}else{angle=Math.atan2(node1.y-node2.y,node1.x-node2.x);arrowPoint=this.findBorderPosition(node1,ctx)}}else{angle=Math.atan2(node1.y-node2.y,node1.x-node2.x);arrowPoint=this.getPoint(.5,viaNode)}}else{var _getCircleData10=this._getCircleData(ctx),_getCircleData11=(0,_slicedToArray3[\"default\"])(_getCircleData10,3),x=_getCircleData11[0],y=_getCircleData11[1],radius=_getCircleData11[2];if(position===\"from\"){arrowPoint=this.findBorderPosition(this.from,ctx,{x:x,y:y,low:.25,high:.6,direction:-1});angle=arrowPoint.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI}else if(position===\"to\"){arrowPoint=this.findBorderPosition(this.from,ctx,{x:x,y:y,low:.6,high:1,direction:1});angle=arrowPoint.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI}else{arrowPoint=this._pointOnCircle(x,y,radius,.175);angle=3.9269908169872414}}if(position===\"middle\"&&scaleFactor<0)lineWidth*=-1;var length=15*scaleFactor+3*lineWidth;var xi=arrowPoint.x-length*.9*Math.cos(angle);var yi=arrowPoint.y-length*.9*Math.sin(angle);var arrowCore={x:xi,y:yi};return{point:arrowPoint,core:arrowCore,angle:angle,length:length,type:type}}},{key:\"drawArrowHead\",value:function drawArrowHead(ctx,values,selected,hover,arrowData){ctx.strokeStyle=this.getColor(ctx,values,selected,hover);ctx.fillStyle=ctx.strokeStyle;ctx.lineWidth=values.width;EndPoints.draw(ctx,arrowData);this.enableShadow(ctx,values);ctx.fill();this.disableShadow(ctx,values)}},{key:\"enableShadow\",value:function enableShadow(ctx,values){if(values.shadow===true){ctx.shadowColor=values.shadowColor;ctx.shadowBlur=values.shadowSize;ctx.shadowOffsetX=values.shadowX;ctx.shadowOffsetY=values.shadowY}}},{key:\"disableShadow\",value:function disableShadow(ctx,values){if(values.shadow===true){ctx.shadowColor=\"rgba(0,0,0,0)\";ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.shadowOffsetY=0}}}]);return EdgeBase}();exports[\"default\"]=EdgeBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var EndPoint=function(){function EndPoint(){(0,_classCallCheck3[\"default\"])(this,EndPoint)}(0,_createClass3[\"default\"])(EndPoint,null,[{key:\"transform\",value:function transform(points,arrowData){if(!(points instanceof Array)){points=[points]}var x=arrowData.point.x;var y=arrowData.point.y;var angle=arrowData.angle;var length=arrowData.length;for(var i=0;i<points.length;++i){var p=points[i];var xt=p.x*Math.cos(angle)-p.y*Math.sin(angle);var yt=p.x*Math.sin(angle)+p.y*Math.cos(angle);p.x=x+length*xt;p.y=y+length*yt}}},{key:\"drawPath\",value:function drawPath(ctx,points){ctx.beginPath();ctx.moveTo(points[0].x,points[0].y);for(var i=1;i<points.length;++i){ctx.lineTo(points[i].x,points[i].y)}ctx.closePath()}}]);return EndPoint}();var Arrow=function(_EndPoint){(0,_inherits3[\"default\"])(Arrow,_EndPoint);function Arrow(){(0,_classCallCheck3[\"default\"])(this,Arrow);return(0,_possibleConstructorReturn3[\"default\"])(this,(Arrow.__proto__||(0,_getPrototypeOf2[\"default\"])(Arrow)).apply(this,arguments))}(0,_createClass3[\"default\"])(Arrow,null,[{key:\"draw\",value:function draw(ctx,arrowData){var points=[{x:0,y:0},{x:-1,y:.3},{x:-.9,y:0},{x:-1,y:-.3}];EndPoint.transform(points,arrowData);EndPoint.drawPath(ctx,points)}}]);return Arrow}(EndPoint);var Circle=function(){function Circle(){(0,_classCallCheck3[\"default\"])(this,Circle)}(0,_createClass3[\"default\"])(Circle,null,[{key:\"draw\",value:function draw(ctx,arrowData){var point={x:-.4,y:0};EndPoint.transform(point,arrowData);ctx.circle(point.x,point.y,arrowData.length*.4)}}]);return Circle}();var Bar=function(){function Bar(){(0,_classCallCheck3[\"default\"])(this,Bar)}(0,_createClass3[\"default\"])(Bar,null,[{key:\"draw\",value:function draw(ctx,arrowData){var points=[{x:0,y:.5},{x:0,y:-.5},{x:-.15,y:-.5},{x:-.15,y:.5}];EndPoint.transform(points,arrowData);EndPoint.drawPath(ctx,points)}}]);return Bar}();var EndPoints=function(){function EndPoints(){(0,_classCallCheck3[\"default\"])(this,EndPoints)}(0,_createClass3[\"default\"])(EndPoints,null,[{key:\"draw\",value:function draw(ctx,arrowData){var type;if(arrowData.type){type=arrowData.type.toLowerCase()}switch(type){case\"circle\":Circle.draw(ctx,arrowData);break;case\"bar\":Bar.draw(ctx,arrowData);break;case\"arrow\":default:Arrow.draw(ctx,arrowData)}}}]);return EndPoints}();exports[\"default\"]=EndPoints},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BarnesHutSolver=function(){function BarnesHutSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,BarnesHutSolver);this.body=body;this.physicsBody=physicsBody;this.barnesHutTree;this.setOptions(options);this.randomSeed=5}(0,_createClass3[\"default\"])(BarnesHutSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options;this.thetaInversed=1/this.options.theta;this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}},{key:\"seededRandom\",value:function seededRandom(){var x=Math.sin(this.randomSeed++)*1e4;return x-Math.floor(x)}},{key:\"solve\",value:function solve(){if(this.options.gravitationalConstant!==0&&this.physicsBody.physicsNodeIndices.length>0){var node=void 0;var nodes=this.body.nodes;var nodeIndices=this.physicsBody.physicsNodeIndices;var nodeCount=nodeIndices.length;var barnesHutTree=this._formBarnesHutTree(nodes,nodeIndices);this.barnesHutTree=barnesHutTree;for(var i=0;i<nodeCount;i++){node=nodes[nodeIndices[i]];if(node.options.mass>0){this._getForceContributions(barnesHutTree.root,node)}}}}},{key:\"_getForceContributions\",value:function _getForceContributions(parentBranch,node){this._getForceContribution(parentBranch.children.NW,node);this._getForceContribution(parentBranch.children.NE,node);this._getForceContribution(parentBranch.children.SW,node);this._getForceContribution(parentBranch.children.SE,node)}},{key:\"_getForceContribution\",value:function _getForceContribution(parentBranch,node){if(parentBranch.childrenCount>0){var dx=void 0,dy=void 0,distance=void 0;dx=parentBranch.centerOfMass.x-node.x;dy=parentBranch.centerOfMass.y-node.y;distance=Math.sqrt(dx*dx+dy*dy);if(distance*parentBranch.calcSize>this.thetaInversed){this._calculateForces(distance,dx,dy,node,parentBranch)}else{if(parentBranch.childrenCount===4){this._getForceContributions(parentBranch,node)}else{if(parentBranch.children.data.id!=node.id){this._calculateForces(distance,dx,dy,node,parentBranch)}}}}}},{key:\"_calculateForces\",value:function _calculateForces(distance,dx,dy,node,parentBranch){if(distance===0){distance=.1;dx=distance}if(this.overlapAvoidanceFactor<1&&node.shape.radius){distance=Math.max(.1+this.overlapAvoidanceFactor*node.shape.radius,distance-node.shape.radius)}var gravityForce=this.options.gravitationalConstant*parentBranch.mass*node.options.mass/Math.pow(distance,3);var fx=dx*gravityForce;var fy=dy*gravityForce;this.physicsBody.forces[node.id].x+=fx;this.physicsBody.forces[node.id].y+=fy}},{key:\"_formBarnesHutTree\",value:function _formBarnesHutTree(nodes,nodeIndices){var node=void 0;var nodeCount=nodeIndices.length;var minX=nodes[nodeIndices[0]].x;var minY=nodes[nodeIndices[0]].y;var maxX=nodes[nodeIndices[0]].x;var maxY=nodes[nodeIndices[0]].y;for(var i=1;i<nodeCount;i++){var _node=nodes[nodeIndices[i]];var x=_node.x;var y=_node.y;if(_node.options.mass>0){if(x<minX){minX=x}if(x>maxX){maxX=x}if(y<minY){minY=y}if(y>maxY){maxY=y}}}var sizeDiff=Math.abs(maxX-minX)-Math.abs(maxY-minY);if(sizeDiff>0){minY-=.5*sizeDiff;maxY+=.5*sizeDiff}else{minX+=.5*sizeDiff;maxX-=.5*sizeDiff}var minimumTreeSize=1e-5;var rootSize=Math.max(minimumTreeSize,Math.abs(maxX-minX));var halfRootSize=.5*rootSize;var centerX=.5*(minX+maxX),centerY=.5*(minY+maxY);var barnesHutTree={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:centerX-halfRootSize,maxX:centerX+halfRootSize,minY:centerY-halfRootSize,maxY:centerY+halfRootSize},size:rootSize,calcSize:1/rootSize,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(barnesHutTree.root);for(var _i=0;_i<nodeCount;_i++){node=nodes[nodeIndices[_i]];if(node.options.mass>0){this._placeInTree(barnesHutTree.root,node)}}return barnesHutTree}},{key:\"_updateBranchMass\",value:function _updateBranchMass(parentBranch,node){var centerOfMass=parentBranch.centerOfMass;var totalMass=parentBranch.mass+node.options.mass;var totalMassInv=1/totalMass;centerOfMass.x=centerOfMass.x*parentBranch.mass+node.x*node.options.mass;centerOfMass.x*=totalMassInv;centerOfMass.y=centerOfMass.y*parentBranch.mass+node.y*node.options.mass;centerOfMass.y*=totalMassInv;parentBranch.mass=totalMass;var biggestSize=Math.max(Math.max(node.height,node.radius),node.width);parentBranch.maxWidth=parentBranch.maxWidth<biggestSize?biggestSize:parentBranch.maxWidth}},{key:\"_placeInTree\",value:function _placeInTree(parentBranch,node,skipMassUpdate){if(skipMassUpdate!=true||skipMassUpdate===undefined){this._updateBranchMass(parentBranch,node)}var range=parentBranch.children.NW.range;var region=void 0;if(range.maxX>node.x){if(range.maxY>node.y){region=\"NW\"}else{region=\"SW\"}}else{if(range.maxY>node.y){region=\"NE\"}else{region=\"SE\"}}this._placeInRegion(parentBranch,node,region)}},{key:\"_placeInRegion\",value:function _placeInRegion(parentBranch,node,region){var children=parentBranch.children[region];switch(children.childrenCount){case 0:children.children.data=node;children.childrenCount=1;this._updateBranchMass(children,node);break;case 1:if(children.children.data.x===node.x&&children.children.data.y===node.y){node.x+=this.seededRandom();node.y+=this.seededRandom()}else{this._splitBranch(children);this._placeInTree(children,node)}break;case 4:this._placeInTree(children,node);break}}},{key:\"_splitBranch\",value:function _splitBranch(parentBranch){var containedNode=null;if(parentBranch.childrenCount===1){containedNode=parentBranch.children.data;parentBranch.mass=0;parentBranch.centerOfMass.x=0;parentBranch.centerOfMass.y=0}parentBranch.childrenCount=4;parentBranch.children.data=null;this._insertRegion(parentBranch,\"NW\");this._insertRegion(parentBranch,\"NE\");this._insertRegion(parentBranch,\"SW\");this._insertRegion(parentBranch,\"SE\");if(containedNode!=null){this._placeInTree(parentBranch,containedNode)}}},{key:\"_insertRegion\",value:function _insertRegion(parentBranch,region){var minX=void 0,maxX=void 0,minY=void 0,maxY=void 0;var childSize=.5*parentBranch.size;switch(region){case\"NW\":minX=parentBranch.range.minX;maxX=parentBranch.range.minX+childSize;minY=parentBranch.range.minY;maxY=parentBranch.range.minY+childSize;break;case\"NE\":minX=parentBranch.range.minX+childSize;maxX=parentBranch.range.maxX;minY=parentBranch.range.minY;maxY=parentBranch.range.minY+childSize;break;case\"SW\":minX=parentBranch.range.minX;maxX=parentBranch.range.minX+childSize;minY=parentBranch.range.minY+childSize;maxY=parentBranch.range.maxY;break;case\"SE\":minX=parentBranch.range.minX+childSize;maxX=parentBranch.range.maxX;minY=parentBranch.range.minY+childSize;maxY=parentBranch.range.maxY;break}parentBranch.children[region]={centerOfMass:{x:0,y:0},mass:0,range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY},size:.5*parentBranch.size,calcSize:2*parentBranch.calcSize,children:{data:null},maxWidth:0,level:parentBranch.level+1,childrenCount:0}}},{key:\"_debug\",value:function _debug(ctx,color){if(this.barnesHutTree!==undefined){ctx.lineWidth=1;this._drawBranch(this.barnesHutTree.root,ctx,color)}}},{key:\"_drawBranch\",value:function _drawBranch(branch,ctx,color){if(color===undefined){color=\"#FF0000\"}if(branch.childrenCount===4){this._drawBranch(branch.children.NW,ctx);this._drawBranch(branch.children.NE,ctx);this._drawBranch(branch.children.SE,ctx);this._drawBranch(branch.children.SW,ctx)}ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(branch.range.minX,branch.range.minY);ctx.lineTo(branch.range.maxX,branch.range.minY);ctx.stroke();ctx.beginPath();ctx.moveTo(branch.range.maxX,branch.range.minY);ctx.lineTo(branch.range.maxX,branch.range.maxY);ctx.stroke();ctx.beginPath();ctx.moveTo(branch.range.maxX,branch.range.maxY);ctx.lineTo(branch.range.minX,branch.range.maxY);ctx.stroke();ctx.beginPath();ctx.moveTo(branch.range.minX,branch.range.maxY);ctx.lineTo(branch.range.minX,branch.range.minY);ctx.stroke()}}]);return BarnesHutSolver}();exports[\"default\"]=BarnesHutSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CentralGravitySolver=function(){function CentralGravitySolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,CentralGravitySolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(CentralGravitySolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var dx=void 0,dy=void 0,distance=void 0,node=void 0;var nodes=this.body.nodes;var nodeIndices=this.physicsBody.physicsNodeIndices;var forces=this.physicsBody.forces;for(var i=0;i<nodeIndices.length;i++){var nodeId=nodeIndices[i];node=nodes[nodeId];dx=-node.x;dy=-node.y;distance=Math.sqrt(dx*dx+dy*dy);this._calculateForces(distance,dx,dy,forces,node)}}},{key:\"_calculateForces\",value:function _calculateForces(distance,dx,dy,forces,node){var gravityForce=distance===0?0:this.options.centralGravity/distance;forces[node.id].x=dx*gravityForce;forces[node.id].y=dy*gravityForce}}]);return CentralGravitySolver}();exports[\"default\"]=CentralGravitySolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var string=\"string\";var bool=\"boolean\";var number=\"number\";var array=\"array\";var object=\"object\";var dom=\"dom\";var any=\"any\";var endPoints=[\"arrow\",\"circle\",\"bar\"];var allOptions={configure:{enabled:{boolean:bool},filter:{boolean:bool,string:string,array:array,function:\"function\"},container:{dom:dom},showButton:{boolean:bool},__type__:{object:object,boolean:bool,string:string,array:array,function:\"function\"}},edges:{arrows:{to:{enabled:{boolean:bool},scaleFactor:{number:number},type:{string:endPoints},__type__:{object:object,boolean:bool}},middle:{enabled:{boolean:bool},scaleFactor:{number:number},type:{string:endPoints},__type__:{object:object,boolean:bool}},from:{enabled:{boolean:bool},scaleFactor:{number:number},type:{string:endPoints},__type__:{object:object,boolean:bool}},__type__:{string:[\"from\",\"to\",\"middle\"],object:object}},arrowStrikethrough:{boolean:bool},chosen:{label:{boolean:bool,function:\"function\"},edge:{boolean:bool,function:\"function\"},__type__:{object:object,boolean:bool}},color:{color:{string:string},highlight:{string:string},hover:{string:string},inherit:{string:[\"from\",\"to\",\"both\"],boolean:bool},opacity:{number:number},__type__:{object:object,string:string}},dashes:{boolean:bool,array:array},font:{color:{string:string},size:{number:number},face:{string:string},background:{string:string},strokeWidth:{number:number},strokeColor:{string:string},align:{string:[\"horizontal\",\"top\",\"middle\",\"bottom\"]},vadjust:{number:number},multi:{boolean:bool,string:string},bold:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},boldital:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},ital:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},mono:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},__type__:{object:object,string:string}},hidden:{boolean:bool},hoverWidth:{function:\"function\",number:number},label:{string:string,undefined:\"undefined\"},labelHighlightBold:{boolean:bool},length:{number:number,undefined:\"undefined\"},physics:{boolean:bool},scaling:{min:{number:number},max:{number:number},label:{enabled:{boolean:bool},min:{number:number},max:{number:number},maxVisible:{number:number},drawThreshold:{number:number},__type__:{object:object,boolean:bool}},customScalingFunction:{function:\"function\"},__type__:{object:object}},selectionWidth:{function:\"function\",number:number},selfReferenceSize:{number:number},shadow:{enabled:{boolean:bool},color:{string:string},size:{number:number},x:{number:number},y:{number:number},__type__:{object:object,boolean:bool}},smooth:{enabled:{boolean:bool},type:{string:[\"dynamic\",\"continuous\",\"discrete\",\"diagonalCross\",\"straightCross\",\"horizontal\",\"vertical\",\"curvedCW\",\"curvedCCW\",\"cubicBezier\"]},roundness:{number:number},forceDirection:{string:[\"horizontal\",\"vertical\",\"none\"],boolean:bool},__type__:{object:object,boolean:bool}},title:{string:string,undefined:\"undefined\"},width:{number:number},widthConstraint:{maximum:{number:number},__type__:{object:object,boolean:bool,number:number}},value:{number:number,undefined:\"undefined\"},__type__:{object:object}},groups:{useDefaultGroups:{boolean:bool},__any__:\"get from nodes, will be overwritten below\",__type__:{object:object}},interaction:{dragNodes:{boolean:bool},dragView:{boolean:bool},hideEdgesOnDrag:{boolean:bool},hideNodesOnDrag:{boolean:bool},hover:{boolean:bool},keyboard:{enabled:{boolean:bool},speed:{x:{number:number},y:{number:number},zoom:{number:number},__type__:{object:object}},bindToWindow:{boolean:bool},__type__:{object:object,boolean:bool}},multiselect:{boolean:bool},navigationButtons:{boolean:bool},selectable:{boolean:bool},selectConnectedEdges:{boolean:bool},hoverConnectedEdges:{boolean:bool},tooltipDelay:{number:number},zoomView:{boolean:bool},__type__:{object:object}},layout:{randomSeed:{undefined:\"undefined\",number:number},improvedLayout:{boolean:bool},hierarchical:{enabled:{boolean:bool},levelSeparation:{number:number},nodeSpacing:{number:number},treeSpacing:{number:number},blockShifting:{boolean:bool},edgeMinimization:{boolean:bool},parentCentralization:{boolean:bool},direction:{string:[\"UD\",\"DU\",\"LR\",\"RL\"]},sortMethod:{string:[\"hubsize\",\"directed\"]},__type__:{object:object,boolean:bool}},__type__:{object:object}},manipulation:{enabled:{boolean:bool},initiallyActive:{boolean:bool},addNode:{boolean:bool,function:\"function\"},addEdge:{boolean:bool,function:\"function\"},editNode:{function:\"function\"},editEdge:{editWithoutDrag:{function:\"function\"},__type__:{object:object,boolean:bool,function:\"function\"}},deleteNode:{boolean:bool,function:\"function\"},deleteEdge:{boolean:bool,function:\"function\"},controlNodeStyle:\"get from nodes, will be overwritten below\",__type__:{object:object,boolean:bool}},nodes:{borderWidth:{number:number},borderWidthSelected:{number:number,undefined:\"undefined\"},brokenImage:{string:string,undefined:\"undefined\"},chosen:{label:{boolean:bool,function:\"function\"},node:{boolean:bool,function:\"function\"},__type__:{object:object,boolean:bool}},color:{border:{string:string},background:{string:string},highlight:{border:{string:string},background:{string:string},__type__:{object:object,string:string}},hover:{border:{string:string},background:{string:string},__type__:{object:object,string:string}},__type__:{object:object,string:string}},fixed:{x:{boolean:bool},y:{boolean:bool},__type__:{object:object,boolean:bool}},font:{align:{string:string},color:{string:string},size:{number:number},face:{string:string},background:{string:string},strokeWidth:{number:number},strokeColor:{string:string},vadjust:{number:number},multi:{boolean:bool,string:string},bold:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},boldital:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},ital:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},mono:{color:{string:string},size:{number:number},face:{string:string},mod:{string:string},vadjust:{number:number},__type__:{object:object,string:string}},__type__:{object:object,string:string}},group:{string:string,number:number,undefined:\"undefined\"},heightConstraint:{minimum:{number:number},valign:{string:string},__type__:{object:object,boolean:bool,number:number}},hidden:{boolean:bool},icon:{face:{string:string},code:{string:string},size:{number:number},color:{string:string},__type__:{object:object}},id:{string:string,number:number},image:{selected:{string:string,undefined:\"undefined\"},unselected:{string:string,undefined:\"undefined\"},__type__:{object:object,string:string}},label:{string:string,undefined:\"undefined\"},labelHighlightBold:{boolean:bool},level:{number:number,undefined:\"undefined\"},margin:{top:{number:number},right:{number:number},bottom:{number:number},left:{number:number},__type__:{object:object,number:number}},mass:{number:number},physics:{boolean:bool},scaling:{min:{number:number},max:{number:number},label:{enabled:{boolean:bool},min:{number:number},max:{number:number},maxVisible:{number:number},drawThreshold:{number:number},__type__:{object:object,boolean:bool}},customScalingFunction:{function:\"function\"},__type__:{object:object}},shadow:{enabled:{boolean:bool},color:{string:string},size:{number:number},x:{number:number},y:{number:number},__type__:{object:object,boolean:bool}},shape:{string:[\"ellipse\",\"circle\",\"database\",\"box\",\"text\",\"image\",\"circularImage\",\"diamond\",\"dot\",\"star\",\"triangle\",\"triangleDown\",\"square\",\"icon\",\"hexagon\"]},shapeProperties:{borderDashes:{boolean:bool,array:array},borderRadius:{number:number},interpolation:{boolean:bool},useImageSize:{boolean:bool},useBorderWithImage:{boolean:bool},__type__:{object:object}},size:{number:number},title:{string:string,dom:dom,undefined:\"undefined\"},value:{number:number,undefined:\"undefined\"},widthConstraint:{minimum:{number:number},maximum:{number:number},__type__:{object:object,boolean:bool,number:number}},x:{number:number},y:{number:number},__type__:{object:object}},physics:{enabled:{boolean:bool},barnesHut:{gravitationalConstant:{number:number},centralGravity:{number:number},springLength:{number:number},springConstant:{number:number},damping:{number:number},avoidOverlap:{number:number},__type__:{object:object}},forceAtlas2Based:{gravitationalConstant:{number:number},centralGravity:{number:number},springLength:{number:number},springConstant:{number:number},damping:{number:number},avoidOverlap:{number:number},__type__:{object:object}},repulsion:{centralGravity:{number:number},springLength:{number:number},springConstant:{number:number},nodeDistance:{number:number},damping:{number:number},__type__:{object:object}},hierarchicalRepulsion:{centralGravity:{number:number},springLength:{number:number},springConstant:{number:number},nodeDistance:{number:number},damping:{number:number},__type__:{object:object}},maxVelocity:{number:number},minVelocity:{number:number},solver:{string:[\"barnesHut\",\"repulsion\",\"hierarchicalRepulsion\",\"forceAtlas2Based\"]},stabilization:{enabled:{boolean:bool},iterations:{number:number},updateInterval:{number:number},onlyDynamicEdges:{boolean:bool},\nfit:{boolean:bool},__type__:{object:object,boolean:bool}},timestep:{number:number},adaptiveTimestep:{boolean:bool},__type__:{object:object,boolean:bool}},autoResize:{boolean:bool},clickToUse:{boolean:bool},locale:{string:string},locales:{__any__:{any:any},__type__:{object:object}},height:{string:string},width:{string:string},__type__:{object:object}};allOptions.groups.__any__=allOptions.nodes;allOptions.manipulation.controlNodeStyle=allOptions.nodes;var configureOptions={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:[\"color\",\"#2B7CE9\"],background:[\"color\",\"#97C2FC\"],highlight:{border:[\"color\",\"#2B7CE9\"],background:[\"color\",\"#D2E5FF\"]},hover:{border:[\"color\",\"#2B7CE9\"],background:[\"color\",\"#D2E5FF\"]}},fixed:{x:false,y:false},font:{color:[\"color\",\"#343434\"],size:[14,0,100,1],face:[\"arial\",\"verdana\",\"tahoma\"],background:[\"color\",\"none\"],strokeWidth:[0,0,50,1],strokeColor:[\"color\",\"#ffffff\"]},hidden:false,labelHighlightBold:true,physics:true,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:false,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:false,color:\"rgba(0,0,0,0.5)\",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:[\"ellipse\",\"box\",\"circle\",\"database\",\"diamond\",\"dot\",\"square\",\"star\",\"text\",\"triangle\",\"triangleDown\",\"hexagon\"],shapeProperties:{borderDashes:false,borderRadius:[6,0,20,1],interpolation:true,useImageSize:false},size:[25,0,200,1]},edges:{arrows:{to:{enabled:false,scaleFactor:[1,0,3,.05],type:\"arrow\"},middle:{enabled:false,scaleFactor:[1,0,3,.05],type:\"arrow\"},from:{enabled:false,scaleFactor:[1,0,3,.05],type:\"arrow\"}},arrowStrikethrough:true,color:{color:[\"color\",\"#848484\"],highlight:[\"color\",\"#848484\"],hover:[\"color\",\"#848484\"],inherit:[\"from\",\"to\",\"both\",true,false],opacity:[1,0,1,.05]},dashes:false,font:{color:[\"color\",\"#343434\"],size:[14,0,100,1],face:[\"arial\",\"verdana\",\"tahoma\"],background:[\"color\",\"none\"],strokeWidth:[2,0,50,1],strokeColor:[\"color\",\"#ffffff\"],align:[\"horizontal\",\"top\",\"middle\",\"bottom\"]},hidden:false,hoverWidth:[1.5,0,5,.1],labelHighlightBold:true,physics:true,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:true,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:false,color:\"rgba(0,0,0,0.5)\",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:true,type:[\"dynamic\",\"continuous\",\"discrete\",\"diagonalCross\",\"straightCross\",\"horizontal\",\"vertical\",\"curvedCW\",\"curvedCCW\",\"cubicBezier\"],forceDirection:[\"horizontal\",\"vertical\",\"none\"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:false,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:true,edgeMinimization:true,parentCentralization:true,direction:[\"UD\",\"DU\",\"LR\",\"RL\"],sortMethod:[\"hubsize\",\"directed\"]}},interaction:{dragNodes:true,dragView:true,hideEdgesOnDrag:false,hideNodesOnDrag:false,hover:false,keyboard:{enabled:false,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:true},multiselect:false,navigationButtons:false,selectable:true,selectConnectedEdges:true,hoverConnectedEdges:true,tooltipDelay:[300,0,1e3,25],zoomView:true},manipulation:{enabled:false,initiallyActive:false},physics:{enabled:true,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:[\"barnesHut\",\"forceAtlas2Based\",\"repulsion\",\"hierarchicalRepulsion\"],timestep:[.5,.01,1,.01]}};exports.allOptions=allOptions;exports.configureOptions=configureOptions},function(module,exports,__webpack_require__){\"use strict\";var util=__webpack_require__(2);util.extend(exports,__webpack_require__(159));util.extend(exports,__webpack_require__(177));util.extend(exports,__webpack_require__(181))},function(module,exports,__webpack_require__){__webpack_require__(49);__webpack_require__(60);module.exports=__webpack_require__(136)},function(module,exports,__webpack_require__){\"use strict\";var addToUnscopables=__webpack_require__(126);var step=__webpack_require__(127);var Iterators=__webpack_require__(31);var toIObject=__webpack_require__(25);module.exports=__webpack_require__(79)(Array,\"Array\",function(iterated,kind){this._t=toIObject(iterated);this._i=0;this._k=kind},function(){var O=this._t;var kind=this._k;var index=this._i++;if(!O||index>=O.length){this._t=undefined;return step(1)}if(kind==\"keys\")return step(0,index);if(kind==\"values\")return step(0,O[index]);return step(0,[index,O[index]])},\"values\");Iterators.Arguments=Iterators.Array;addToUnscopables(\"keys\");addToUnscopables(\"values\");addToUnscopables(\"entries\")},function(module,exports){module.exports=function(){}},function(module,exports){module.exports=function(done,value){return{value:value,done:!!done}}},function(module,exports){module.exports=function(it){if(typeof it!=\"function\")throw TypeError(it+\" is not a function!\");return it}},function(module,exports,__webpack_require__){\"use strict\";var create=__webpack_require__(54);var descriptor=__webpack_require__(39);var setToStringTag=__webpack_require__(59);var IteratorPrototype={};__webpack_require__(26)(IteratorPrototype,__webpack_require__(13)(\"iterator\"),function(){return this});module.exports=function(Constructor,NAME,next){Constructor.prototype=create(IteratorPrototype,{next:descriptor(1,next)});setToStringTag(Constructor,NAME+\" Iterator\")}},function(module,exports,__webpack_require__){var dP=__webpack_require__(20);var anObject=__webpack_require__(27);var getKeys=__webpack_require__(33);module.exports=__webpack_require__(21)?Object.defineProperties:function defineProperties(O,Properties){anObject(O);var keys=getKeys(Properties);var length=keys.length;var i=0;var P;while(length>i)dP.f(O,P=keys[i++],Properties[P]);return O}},function(module,exports,__webpack_require__){var toIObject=__webpack_require__(25);var toLength=__webpack_require__(132);var toAbsoluteIndex=__webpack_require__(133);module.exports=function(IS_INCLUDES){return function($this,el,fromIndex){var O=toIObject($this);var length=toLength(O.length);var index=toAbsoluteIndex(fromIndex,length);var value;if(IS_INCLUDES&&el!=el)while(length>index){value=O[index++];if(value!=value)return true}else for(;length>index;index++)if(IS_INCLUDES||index in O){if(O[index]===el)return IS_INCLUDES||index||0}return!IS_INCLUDES&&-1}}},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(55);var min=Math.min;module.exports=function(it){return it>0?min(toInteger(it),9007199254740991):0}},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(55);var max=Math.max;var min=Math.min;module.exports=function(index,length){index=toInteger(index);return index<0?max(index+length,0):min(index,length)}},function(module,exports,__webpack_require__){var document=__webpack_require__(18).document;module.exports=document&&document.documentElement},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(55);var defined=__webpack_require__(51);module.exports=function(TO_STRING){return function(that,pos){var s=String(defined(that));var i=toInteger(pos);var l=s.length;var a,b;if(i<0||i>=l)return TO_STRING?\"\":undefined;a=s.charCodeAt(i);return a<55296||a>56319||i+1===l||(b=s.charCodeAt(i+1))<56320||b>57343?TO_STRING?s.charAt(i):a:TO_STRING?s.slice(i,i+2):(a-55296<<10)+(b-56320)+65536}}},function(module,exports,__webpack_require__){var anObject=__webpack_require__(27);var get=__webpack_require__(137);module.exports=__webpack_require__(7).getIterator=function(it){var iterFn=get(it);if(typeof iterFn!=\"function\")throw TypeError(it+\" is not iterable!\");return anObject(iterFn.call(it))}},function(module,exports,__webpack_require__){var classof=__webpack_require__(86);var ITERATOR=__webpack_require__(13)(\"iterator\");var Iterators=__webpack_require__(31);module.exports=__webpack_require__(7).getIteratorMethod=function(it){if(it!=undefined)return it[ITERATOR]||it[\"@@iterator\"]||Iterators[classof(it)]}},function(module,exports,__webpack_require__){__webpack_require__(139);var $Object=__webpack_require__(7).Object;module.exports=function create(P,D){return $Object.create(P,D)}},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S,\"Object\",{create:__webpack_require__(54)})},function(module,exports,__webpack_require__){__webpack_require__(141);module.exports=__webpack_require__(7).Object.keys},function(module,exports,__webpack_require__){var toObject=__webpack_require__(41);var $keys=__webpack_require__(33);__webpack_require__(87)(\"keys\",function(){return function keys(it){return $keys(toObject(it))}})},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(143),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(60);__webpack_require__(49);module.exports=__webpack_require__(61).f(\"iterator\")},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(145),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(146);__webpack_require__(151);__webpack_require__(152);__webpack_require__(153);module.exports=__webpack_require__(7).Symbol},function(module,exports,__webpack_require__){\"use strict\";var global=__webpack_require__(18);var has=__webpack_require__(22);var DESCRIPTORS=__webpack_require__(21);var $export=__webpack_require__(17);var redefine=__webpack_require__(83);var META=__webpack_require__(147).KEY;var $fails=__webpack_require__(28);var shared=__webpack_require__(57);var setToStringTag=__webpack_require__(59);var uid=__webpack_require__(40);var wks=__webpack_require__(13);var wksExt=__webpack_require__(61);var wksDefine=__webpack_require__(62);var enumKeys=__webpack_require__(148);var isArray=__webpack_require__(149);var anObject=__webpack_require__(27);var toIObject=__webpack_require__(25);var toPrimitive=__webpack_require__(53);var createDesc=__webpack_require__(39);var _create=__webpack_require__(54);var gOPNExt=__webpack_require__(150);var $GOPD=__webpack_require__(89);var $DP=__webpack_require__(20);var $keys=__webpack_require__(33);var gOPD=$GOPD.f;var dP=$DP.f;var gOPN=gOPNExt.f;var $Symbol=global.Symbol;var $JSON=global.JSON;var _stringify=$JSON&&$JSON.stringify;var PROTOTYPE=\"prototype\";var HIDDEN=wks(\"_hidden\");var TO_PRIMITIVE=wks(\"toPrimitive\");var isEnum={}.propertyIsEnumerable;var SymbolRegistry=shared(\"symbol-registry\");var AllSymbols=shared(\"symbols\");var OPSymbols=shared(\"op-symbols\");var ObjectProto=Object[PROTOTYPE];var USE_NATIVE=typeof $Symbol==\"function\";var QObject=global.QObject;var setter=!QObject||!QObject[PROTOTYPE]||!QObject[PROTOTYPE].findChild;var setSymbolDesc=DESCRIPTORS&&$fails(function(){return _create(dP({},\"a\",{get:function(){return dP(this,\"a\",{value:7}).a}})).a!=7})?function(it,key,D){var protoDesc=gOPD(ObjectProto,key);if(protoDesc)delete ObjectProto[key];dP(it,key,D);if(protoDesc&&it!==ObjectProto)dP(ObjectProto,key,protoDesc)}:dP;var wrap=function(tag){var sym=AllSymbols[tag]=_create($Symbol[PROTOTYPE]);sym._k=tag;return sym};var isSymbol=USE_NATIVE&&typeof $Symbol.iterator==\"symbol\"?function(it){return typeof it==\"symbol\"}:function(it){return it instanceof $Symbol};var $defineProperty=function defineProperty(it,key,D){if(it===ObjectProto)$defineProperty(OPSymbols,key,D);anObject(it);key=toPrimitive(key,true);anObject(D);if(has(AllSymbols,key)){if(!D.enumerable){if(!has(it,HIDDEN))dP(it,HIDDEN,createDesc(1,{}));it[HIDDEN][key]=true}else{if(has(it,HIDDEN)&&it[HIDDEN][key])it[HIDDEN][key]=false;D=_create(D,{enumerable:createDesc(0,false)})}return setSymbolDesc(it,key,D)}return dP(it,key,D)};var $defineProperties=function defineProperties(it,P){anObject(it);var keys=enumKeys(P=toIObject(P));var i=0;var l=keys.length;var key;while(l>i)$defineProperty(it,key=keys[i++],P[key]);return it};var $create=function create(it,P){return P===undefined?_create(it):$defineProperties(_create(it),P)};var $propertyIsEnumerable=function propertyIsEnumerable(key){var E=isEnum.call(this,key=toPrimitive(key,true));if(this===ObjectProto&&has(AllSymbols,key)&&!has(OPSymbols,key))return false;return E||!has(this,key)||!has(AllSymbols,key)||has(this,HIDDEN)&&this[HIDDEN][key]?E:true};var $getOwnPropertyDescriptor=function getOwnPropertyDescriptor(it,key){it=toIObject(it);key=toPrimitive(key,true);if(it===ObjectProto&&has(AllSymbols,key)&&!has(OPSymbols,key))return;var D=gOPD(it,key);if(D&&has(AllSymbols,key)&&!(has(it,HIDDEN)&&it[HIDDEN][key]))D.enumerable=true;return D};var $getOwnPropertyNames=function getOwnPropertyNames(it){var names=gOPN(toIObject(it));var result=[];var i=0;var key;while(names.length>i){if(!has(AllSymbols,key=names[i++])&&key!=HIDDEN&&key!=META)result.push(key)}return result};var $getOwnPropertySymbols=function getOwnPropertySymbols(it){var IS_OP=it===ObjectProto;var names=gOPN(IS_OP?OPSymbols:toIObject(it));var result=[];var i=0;var key;while(names.length>i){if(has(AllSymbols,key=names[i++])&&(IS_OP?has(ObjectProto,key):true))result.push(AllSymbols[key])}return result};if(!USE_NATIVE){$Symbol=function Symbol(){if(this instanceof $Symbol)throw TypeError(\"Symbol is not a constructor!\");var tag=uid(arguments.length>0?arguments[0]:undefined);var $set=function(value){if(this===ObjectProto)$set.call(OPSymbols,value);if(has(this,HIDDEN)&&has(this[HIDDEN],tag))this[HIDDEN][tag]=false;setSymbolDesc(this,tag,createDesc(1,value))};if(DESCRIPTORS&&setter)setSymbolDesc(ObjectProto,tag,{configurable:true,set:$set});return wrap(tag)};redefine($Symbol[PROTOTYPE],\"toString\",function toString(){return this._k});$GOPD.f=$getOwnPropertyDescriptor;$DP.f=$defineProperty;__webpack_require__(88).f=gOPNExt.f=$getOwnPropertyNames;__webpack_require__(42).f=$propertyIsEnumerable;__webpack_require__(63).f=$getOwnPropertySymbols;if(DESCRIPTORS&&!__webpack_require__(52)){redefine(ObjectProto,\"propertyIsEnumerable\",$propertyIsEnumerable,true)}wksExt.f=function(name){return wrap(wks(name))}}$export($export.G+$export.W+$export.F*!USE_NATIVE,{Symbol:$Symbol});for(var es6Symbols=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),j=0;es6Symbols.length>j;)wks(es6Symbols[j++]);for(var wellKnownSymbols=$keys(wks.store),k=0;wellKnownSymbols.length>k;)wksDefine(wellKnownSymbols[k++]);$export($export.S+$export.F*!USE_NATIVE,\"Symbol\",{for:function(key){return has(SymbolRegistry,key+=\"\")?SymbolRegistry[key]:SymbolRegistry[key]=$Symbol(key)},keyFor:function keyFor(sym){if(!isSymbol(sym))throw TypeError(sym+\" is not a symbol!\");for(var key in SymbolRegistry)if(SymbolRegistry[key]===sym)return key},useSetter:function(){setter=true},useSimple:function(){setter=false}});$export($export.S+$export.F*!USE_NATIVE,\"Object\",{create:$create,defineProperty:$defineProperty,defineProperties:$defineProperties,getOwnPropertyDescriptor:$getOwnPropertyDescriptor,getOwnPropertyNames:$getOwnPropertyNames,getOwnPropertySymbols:$getOwnPropertySymbols});$JSON&&$export($export.S+$export.F*(!USE_NATIVE||$fails(function(){var S=$Symbol();return _stringify([S])!=\"[null]\"||_stringify({a:S})!=\"{}\"||_stringify(Object(S))!=\"{}\"})),\"JSON\",{stringify:function stringify(it){if(it===undefined||isSymbol(it))return;var args=[it];var i=1;var replacer,$replacer;while(arguments.length>i)args.push(arguments[i++]);replacer=args[1];if(typeof replacer==\"function\")$replacer=replacer;if($replacer||!isArray(replacer))replacer=function(key,value){if($replacer)value=$replacer.call(this,key,value);if(!isSymbol(value))return value};args[1]=replacer;return _stringify.apply($JSON,args)}});$Symbol[PROTOTYPE][TO_PRIMITIVE]||__webpack_require__(26)($Symbol[PROTOTYPE],TO_PRIMITIVE,$Symbol[PROTOTYPE].valueOf);setToStringTag($Symbol,\"Symbol\");setToStringTag(Math,\"Math\",true);setToStringTag(global.JSON,\"JSON\",true)},function(module,exports,__webpack_require__){var META=__webpack_require__(40)(\"meta\");var isObject=__webpack_require__(32);var has=__webpack_require__(22);var setDesc=__webpack_require__(20).f;var id=0;var isExtensible=Object.isExtensible||function(){return true};var FREEZE=!__webpack_require__(28)(function(){return isExtensible(Object.preventExtensions({}))});var setMeta=function(it){setDesc(it,META,{value:{i:\"O\"+ ++id,w:{}}})};var fastKey=function(it,create){if(!isObject(it))return typeof it==\"symbol\"?it:(typeof it==\"string\"?\"S\":\"P\")+it;if(!has(it,META)){if(!isExtensible(it))return\"F\";if(!create)return\"E\";setMeta(it)}return it[META].i};var getWeak=function(it,create){if(!has(it,META)){if(!isExtensible(it))return true;if(!create)return false;setMeta(it)}return it[META].w};var onFreeze=function(it){if(FREEZE&&meta.NEED&&isExtensible(it)&&!has(it,META))setMeta(it);return it};var meta=module.exports={KEY:META,NEED:false,fastKey:fastKey,getWeak:getWeak,onFreeze:onFreeze}},function(module,exports,__webpack_require__){var getKeys=__webpack_require__(33);var gOPS=__webpack_require__(63);var pIE=__webpack_require__(42);module.exports=function(it){var result=getKeys(it);var getSymbols=gOPS.f;if(getSymbols){var symbols=getSymbols(it);var isEnum=pIE.f;var i=0;var key;while(symbols.length>i)if(isEnum.call(it,key=symbols[i++]))result.push(key)}return result}},function(module,exports,__webpack_require__){var cof=__webpack_require__(50);module.exports=Array.isArray||function isArray(arg){return cof(arg)==\"Array\"}},function(module,exports,__webpack_require__){var toIObject=__webpack_require__(25);var gOPN=__webpack_require__(88).f;var toString={}.toString;var windowNames=typeof window==\"object\"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];var getWindowNames=function(it){try{return gOPN(it)}catch(e){return windowNames.slice()}};module.exports.f=function getOwnPropertyNames(it){return windowNames&&toString.call(it)==\"[object Window]\"?getWindowNames(it):gOPN(toIObject(it))}},function(module,exports){},function(module,exports,__webpack_require__){__webpack_require__(62)(\"asyncIterator\")},function(module,exports,__webpack_require__){__webpack_require__(62)(\"observable\")},function(module,exports,__webpack_require__){(function(module){var require;(function(global,factory){true?module.exports=factory():typeof define===\"function\"&&define.amd?define(factory):global.moment=factory()})(this,function(){\"use strict\";var hookCallback;function hooks(){return hookCallback.apply(null,arguments)}function setHookCallback(callback){hookCallback=callback}function isArray(input){return input instanceof Array||Object.prototype.toString.call(input)===\"[object Array]\"}function isObject(input){return input!=null&&Object.prototype.toString.call(input)===\"[object Object]\"}function isObjectEmpty(obj){if(Object.getOwnPropertyNames){return Object.getOwnPropertyNames(obj).length===0}else{var k;for(k in obj){if(obj.hasOwnProperty(k)){return false}}return true}}function isUndefined(input){return input===void 0}function isNumber(input){return typeof input===\"number\"||Object.prototype.toString.call(input)===\"[object Number]\"}function isDate(input){return input instanceof Date||Object.prototype.toString.call(input)===\"[object Date]\"}function map(arr,fn){var res=[],i;for(i=0;i<arr.length;++i){res.push(fn(arr[i],i))}return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b){if(hasOwnProp(b,i)){a[i]=b[i]}}if(hasOwnProp(b,\"toString\")){a.toString=b.toString}if(hasOwnProp(b,\"valueOf\")){a.valueOf=b.valueOf}return a}function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,true).utc()}function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false,parsedDateParts:[],meridiem:null,rfc2822:false,weekdayMismatch:false}}function getParsingFlags(m){if(m._pf==null){m._pf=defaultParsingFlags()}return m._pf}var some;if(Array.prototype.some){some=Array.prototype.some}else{some=function(fun){var t=Object(this);var len=t.length>>>0;for(var i=0;i<len;i++){if(i in t&&fun.call(this,t[i],i,t)){return true}}return false}}function isValid(m){if(m._isValid==null){var flags=getParsingFlags(m);var parsedParts=some.call(flags.parsedDateParts,function(i){return i!=null});var isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||flags.meridiem&&parsedParts);if(m._strict){isNowValid=isNowValid&&flags.charsLeftOver===0&&flags.unusedTokens.length===0&&flags.bigHour===undefined}if(Object.isFrozen==null||!Object.isFrozen(m)){m._isValid=isNowValid}else{return isNowValid}}return m._isValid}function createInvalid(flags){var m=createUTC(NaN);if(flags!=null){extend(getParsingFlags(m),flags)}else{getParsingFlags(m).userInvalidated=true}return m}var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(!isUndefined(from._isAMomentObject)){to._isAMomentObject=from._isAMomentObject}if(!isUndefined(from._i)){to._i=from._i}if(!isUndefined(from._f)){to._f=from._f}if(!isUndefined(from._l)){to._l=from._l}if(!isUndefined(from._strict)){to._strict=from._strict}if(!isUndefined(from._tzm)){to._tzm=from._tzm}if(!isUndefined(from._isUTC)){to._isUTC=from._isUTC}if(!isUndefined(from._offset)){to._offset=from._offset}if(!isUndefined(from._pf)){to._pf=getParsingFlags(from)}if(!isUndefined(from._locale)){to._locale=from._locale}if(momentProperties.length>0){for(i=0;i<momentProperties.length;i++){prop=momentProperties[i];val=from[prop];if(!isUndefined(val)){to[prop]=val}}}return to}var updateInProgress=false;function Moment(config){copyConfig(this,config);this._d=new Date(config._d!=null?config._d.getTime():NaN);if(!this.isValid()){this._d=new Date(NaN)}if(updateInProgress===false){updateInProgress=true;hooks.updateOffset(this);updateInProgress=false}}function isMoment(obj){return obj instanceof Moment||obj!=null&&obj._isAMomentObject!=null}function absFloor(number){if(number<0){return Math.ceil(number)||0}else{return Math.floor(number)}}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){value=absFloor(coercedNumber)}return value}function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i])){diffs++}}return diffs+lengthDiff}function warn(msg){if(hooks.suppressDeprecationWarnings===false&&typeof console!==\"undefined\"&&console.warn){console.warn(\"Deprecation warning: \"+msg)}}function deprecate(msg,fn){var firstTime=true;return extend(function(){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(null,msg)}if(firstTime){var args=[];var arg;for(var i=0;i<arguments.length;i++){arg=\"\";if(typeof arguments[i]===\"object\"){arg+=\"\\n[\"+i+\"] \";for(var key in arguments[0]){arg+=key+\": \"+arguments[0][key]+\", \"}arg=arg.slice(0,-2)}else{arg=arguments[i]}args.push(arg)}warn(msg+\"\\nArguments: \"+Array.prototype.slice.call(args).join(\"\")+\"\\n\"+(new Error).stack);firstTime=false}return fn.apply(this,arguments)},fn)}var deprecations={};function deprecateSimple(name,msg){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(name,msg)}if(!deprecations[name]){warn(msg);deprecations[name]=true}}hooks.suppressDeprecationWarnings=false;hooks.deprecationHandler=null;function isFunction(input){return input instanceof Function||Object.prototype.toString.call(input)===\"[object Function]\"}function set(config){var prop,i;for(i in config){prop=config[i];if(isFunction(prop)){this[i]=prop}else{this[\"_\"+i]=prop}}this._config=config;this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)}function mergeConfigs(parentConfig,childConfig){var res=extend({},parentConfig),prop;for(prop in childConfig){if(hasOwnProp(childConfig,prop)){if(isObject(parentConfig[prop])&&isObject(childConfig[prop])){res[prop]={};extend(res[prop],parentConfig[prop]);extend(res[prop],childConfig[prop])}else if(childConfig[prop]!=null){res[prop]=childConfig[prop]}else{delete res[prop]}}}for(prop in parentConfig){if(hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])){res[prop]=extend({},res[prop])}}return res}function Locale(config){if(config!=null){this.set(config)}}var keys;if(Object.keys){keys=Object.keys}else{keys=function(obj){var i,res=[];for(i in obj){if(hasOwnProp(obj,i)){res.push(i)}}return res}}var defaultCalendar={sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"};function calendar(key,mom,now){var output=this._calendar[key]||this._calendar[\"sameElse\"];return isFunction(output)?output.call(mom,now):output}var defaultLongDateFormat={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};function longDateFormat(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];if(format||!formatUpper){return format}this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)});return this._longDateFormat[key]}var defaultInvalidDate=\"Invalid date\";function invalidDate(){return this._invalidDate}var defaultOrdinal=\"%d\";var defaultDayOfMonthOrdinalParse=/\\d{1,2}/;function ordinal(number){return this._ordinal.replace(\"%d\",number)}var defaultRelativeTime={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function relativeTime(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)}function pastFuture(diff,output){var format=this._relativeTime[diff>0?\"future\":\"past\"];return isFunction(format)?format(output):format.replace(/%s/i,output)}var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+\"s\"]=aliases[shorthand]=unit}function normalizeUnits(units){return typeof units===\"string\"?aliases[units]||aliases[units.toLowerCase()]:undefined}function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(hasOwnProp(inputObject,prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop]}}}return normalizedInput}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority}function getPrioritizedUnits(unitsObj){var units=[];for(var u in unitsObj){units.push({unit:u,priority:priorities[u]})}units.sort(function(a,b){return a.priority-b.priority});return units}function zeroFill(number,targetLength,forceSign){var absNumber=\"\"+Math.abs(number),zerosToFill=targetLength-absNumber.length,sign=number>=0;return(sign?forceSign?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;var localFormattingTokens=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;var formatFunctions={};var formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;if(typeof callback===\"string\"){func=function(){return this[callback]()}}if(token){formatTokenFunctions[token]=func}if(padded){formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}}if(ordinal){formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)}}}function removeFormattingTokens(input){if(input.match(/\\[[\\s\\S]/)){return input.replace(/^\\[|\\]$/g,\"\")}return input.replace(/\\\\/g,\"\")}function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]]}else{array[i]=removeFormattingTokens(array[i])}}return function(mom){var output=\"\",i;for(i=0;i<length;i++){output+=isFunction(array[i])?array[i].call(mom,format):array[i]}return output}}function formatMoment(m,format){if(!m.isValid()){return m.localeData().invalidDate()}format=expandFormat(format,m.localeData());formatFunctions[format]=formatFunctions[format]||makeFormatFunction(format);return formatFunctions[format](m)}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1}return format}var match1=/\\d/;var match2=/\\d\\d/;var match3=/\\d{3}/;var match4=/\\d{4}/;var match6=/[+-]?\\d{6}/;var match1to2=/\\d\\d?/;var match3to4=/\\d\\d\\d\\d?/;var match5to6=/\\d\\d\\d\\d\\d\\d?/;var match1to3=/\\d{1,3}/;var match1to4=/\\d{1,4}/;var match1to6=/[+-]?\\d{1,6}/;var matchUnsigned=/\\d+/;var matchSigned=/[+-]?\\d+/;var matchOffset=/Z|[+-]\\d\\d:?\\d\\d/gi;var matchShortOffset=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi;var matchTimestamp=/[+-]?\\d+(\\.\\d{1,3})?/;var matchWord=/[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;var regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){if(!hasOwnProp(regexes,token)){return new RegExp(unescapeFormat(token))}return regexes[token](config._strict,config._locale)}function unescapeFormat(s){return regexEscape(s.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4}))}function regexEscape(s){return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}var tokens={};function addParseToken(token,callback){var i,func=callback;if(typeof token===\"string\"){token=[token]}if(isNumber(callback)){func=function(input,array){array[callback]=toInt(input)}}for(i=0;i<token.length;i++){tokens[token[i]]=func}}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{};callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){if(input!=null&&hasOwnProp(tokens,token)){tokens[token](input,config._a,config,token)}}var YEAR=0;var MONTH=1;var DATE=2;var HOUR=3;var MINUTE=4;var SECOND=5;var MILLISECOND=6;var WEEK=7;var WEEKDAY=8;addFormatToken(\"Y\",0,0,function(){var y=this.year();return y<=9999?\"\"+y:\"+\"+y});addFormatToken(0,[\"YY\",2],0,function(){return this.year()%100});addFormatToken(0,[\"YYYY\",4],0,\"year\");addFormatToken(0,[\"YYYYY\",5],0,\"year\");addFormatToken(0,[\"YYYYYY\",6,true],0,\"year\");addUnitAlias(\"year\",\"y\");addUnitPriority(\"year\",1);addRegexToken(\"Y\",matchSigned)\n;addRegexToken(\"YY\",match1to2,match2);addRegexToken(\"YYYY\",match1to4,match4);addRegexToken(\"YYYYY\",match1to6,match6);addRegexToken(\"YYYYYY\",match1to6,match6);addParseToken([\"YYYYY\",\"YYYYYY\"],YEAR);addParseToken(\"YYYY\",function(input,array){array[YEAR]=input.length===2?hooks.parseTwoDigitYear(input):toInt(input)});addParseToken(\"YY\",function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input)});addParseToken(\"Y\",function(input,array){array[YEAR]=parseInt(input,10)});function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4===0&&year%100!==0||year%400===0}hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var getSetYear=makeGetSet(\"FullYear\",true);function getIsLeapYear(){return isLeapYear(this.year())}function makeGetSet(unit,keepTime){return function(value){if(value!=null){set$1(this,unit,value);hooks.updateOffset(this,keepTime);return this}else{return get(this,unit)}}}function get(mom,unit){return mom.isValid()?mom._d[\"get\"+(mom._isUTC?\"UTC\":\"\")+unit]():NaN}function set$1(mom,unit,value){if(mom.isValid()&&!isNaN(value)){if(unit===\"FullYear\"&&isLeapYear(mom.year())){mom._d[\"set\"+(mom._isUTC?\"UTC\":\"\")+unit](value,mom.month(),daysInMonth(value,mom.month()))}else{mom._d[\"set\"+(mom._isUTC?\"UTC\":\"\")+unit](value)}}}function stringGet(units){units=normalizeUnits(units);if(isFunction(this[units])){return this[units]()}return this}function stringSet(units,value){if(typeof units===\"object\"){units=normalizeObjectUnits(units);var prioritized=getPrioritizedUnits(units);for(var i=0;i<prioritized.length;i++){this[prioritized[i].unit](units[prioritized[i].unit])}}else{units=normalizeUnits(units);if(isFunction(this[units])){return this[units](value)}}return this}function mod(n,x){return(n%x+x)%x}var indexOf;if(Array.prototype.indexOf){indexOf=Array.prototype.indexOf}else{indexOf=function(o){var i;for(i=0;i<this.length;++i){if(this[i]===o){return i}}return-1}}function daysInMonth(year,month){if(isNaN(year)||isNaN(month)){return NaN}var modMonth=mod(month,12);year+=(month-modMonth)/12;return modMonth===1?isLeapYear(year)?29:28:31-modMonth%7%2}addFormatToken(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1});addFormatToken(\"MMM\",0,0,function(format){return this.localeData().monthsShort(this,format)});addFormatToken(\"MMMM\",0,0,function(format){return this.localeData().months(this,format)});addUnitAlias(\"month\",\"M\");addUnitPriority(\"month\",8);addRegexToken(\"M\",match1to2);addRegexToken(\"MM\",match1to2,match2);addRegexToken(\"MMM\",function(isStrict,locale){return locale.monthsShortRegex(isStrict)});addRegexToken(\"MMMM\",function(isStrict,locale){return locale.monthsRegex(isStrict)});addParseToken([\"M\",\"MM\"],function(input,array){array[MONTH]=toInt(input)-1});addParseToken([\"MMM\",\"MMMM\"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);if(month!=null){array[MONTH]=month}else{getParsingFlags(config).invalidMonth=input}});var MONTHS_IN_FORMAT=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;var defaultLocaleMonths=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\");function localeMonths(m,format){if(!m){return isArray(this._months)?this._months:this._months[\"standalone\"]}return isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?\"format\":\"standalone\"][m.month()]}var defaultLocaleMonthsShort=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\");function localeMonthsShort(m,format){if(!m){return isArray(this._monthsShort)?this._monthsShort:this._monthsShort[\"standalone\"]}return isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?\"format\":\"standalone\"][m.month()]}function handleStrictParse(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];for(i=0;i<12;++i){mom=createUTC([2e3,i]);this._shortMonthsParse[i]=this.monthsShort(mom,\"\").toLocaleLowerCase();this._longMonthsParse[i]=this.months(mom,\"\").toLocaleLowerCase()}}if(strict){if(format===\"MMM\"){ii=indexOf.call(this._shortMonthsParse,llc);return ii!==-1?ii:null}else{ii=indexOf.call(this._longMonthsParse,llc);return ii!==-1?ii:null}}else{if(format===\"MMM\"){ii=indexOf.call(this._shortMonthsParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._longMonthsParse,llc);return ii!==-1?ii:null}else{ii=indexOf.call(this._longMonthsParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._shortMonthsParse,llc);return ii!==-1?ii:null}}}function localeMonthsParse(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact){return handleStrictParse.call(this,monthName,format,strict)}if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[]}for(i=0;i<12;i++){mom=createUTC([2e3,i]);if(strict&&!this._longMonthsParse[i]){this._longMonthsParse[i]=new RegExp(\"^\"+this.months(mom,\"\").replace(\".\",\"\")+\"$\",\"i\");this._shortMonthsParse[i]=new RegExp(\"^\"+this.monthsShort(mom,\"\").replace(\".\",\"\")+\"$\",\"i\")}if(!strict&&!this._monthsParse[i]){regex=\"^\"+this.months(mom,\"\")+\"|^\"+this.monthsShort(mom,\"\");this._monthsParse[i]=new RegExp(regex.replace(\".\",\"\"),\"i\")}if(strict&&format===\"MMMM\"&&this._longMonthsParse[i].test(monthName)){return i}else if(strict&&format===\"MMM\"&&this._shortMonthsParse[i].test(monthName)){return i}else if(!strict&&this._monthsParse[i].test(monthName)){return i}}}function setMonth(mom,value){var dayOfMonth;if(!mom.isValid()){return mom}if(typeof value===\"string\"){if(/^\\d+$/.test(value)){value=toInt(value)}else{value=mom.localeData().monthsParse(value);if(!isNumber(value)){return mom}}}dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d[\"set\"+(mom._isUTC?\"UTC\":\"\")+\"Month\"](value,dayOfMonth);return mom}function getSetMonth(value){if(value!=null){setMonth(this,value);hooks.updateOffset(this,true);return this}else{return get(this,\"Month\")}}function getDaysInMonth(){return daysInMonth(this.year(),this.month())}var defaultMonthsShortRegex=matchWord;function monthsShortRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,\"_monthsRegex\")){computeMonthsParse.call(this)}if(isStrict){return this._monthsShortStrictRegex}else{return this._monthsShortRegex}}else{if(!hasOwnProp(this,\"_monthsShortRegex\")){this._monthsShortRegex=defaultMonthsShortRegex}return this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex}}var defaultMonthsRegex=matchWord;function monthsRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,\"_monthsRegex\")){computeMonthsParse.call(this)}if(isStrict){return this._monthsStrictRegex}else{return this._monthsRegex}}else{if(!hasOwnProp(this,\"_monthsRegex\")){this._monthsRegex=defaultMonthsRegex}return this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex}}function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length}var shortPieces=[],longPieces=[],mixedPieces=[],i,mom;for(i=0;i<12;i++){mom=createUTC([2e3,i]);shortPieces.push(this.monthsShort(mom,\"\"));longPieces.push(this.months(mom,\"\"));mixedPieces.push(this.months(mom,\"\"));mixedPieces.push(this.monthsShort(mom,\"\"))}shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<12;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i])}for(i=0;i<24;i++){mixedPieces[i]=regexEscape(mixedPieces[i])}this._monthsRegex=new RegExp(\"^(\"+mixedPieces.join(\"|\")+\")\",\"i\");this._monthsShortRegex=this._monthsRegex;this._monthsStrictRegex=new RegExp(\"^(\"+longPieces.join(\"|\")+\")\",\"i\");this._monthsShortStrictRegex=new RegExp(\"^(\"+shortPieces.join(\"|\")+\")\",\"i\")}function createDate(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);if(y<100&&y>=0&&isFinite(date.getFullYear())){date.setFullYear(y)}return date}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));if(y<100&&y>=0&&isFinite(date.getUTCFullYear())){date.setUTCFullYear(y)}return date}function firstWeekOffset(year,dow,doy){var fwd=7+dow-doy,fwdlw=(7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7;return-fwdlw+fwd-1}function dayOfYearFromWeeks(year,week,weekday,dow,doy){var localWeekday=(7+weekday-dow)%7,weekOffset=firstWeekOffset(year,dow,doy),dayOfYear=1+7*(week-1)+localWeekday+weekOffset,resYear,resDayOfYear;if(dayOfYear<=0){resYear=year-1;resDayOfYear=daysInYear(resYear)+dayOfYear}else if(dayOfYear>daysInYear(year)){resYear=year+1;resDayOfYear=dayOfYear-daysInYear(year)}else{resYear=year;resDayOfYear=dayOfYear}return{year:resYear,dayOfYear:resDayOfYear}}function weekOfYear(mom,dow,doy){var weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1,resWeek,resYear;if(week<1){resYear=mom.year()-1;resWeek=week+weeksInYear(resYear,dow,doy)}else if(week>weeksInYear(mom.year(),dow,doy)){resWeek=week-weeksInYear(mom.year(),dow,doy);resYear=mom.year()+1}else{resYear=mom.year();resWeek=week}return{week:resWeek,year:resYear}}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7}addFormatToken(\"w\",[\"ww\",2],\"wo\",\"week\");addFormatToken(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\");addUnitAlias(\"week\",\"w\");addUnitAlias(\"isoWeek\",\"W\");addUnitPriority(\"week\",5);addUnitPriority(\"isoWeek\",5);addRegexToken(\"w\",match1to2);addRegexToken(\"ww\",match1to2,match2);addRegexToken(\"W\",match1to2);addRegexToken(\"WW\",match1to2,match2);addWeekParseToken([\"w\",\"ww\",\"W\",\"WW\"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});function localeWeek(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week}var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow}function localeFirstDayOfYear(){return this._week.doy}function getSetWeek(input){var week=this.localeData().week(this);return input==null?week:this.add((input-week)*7,\"d\")}function getSetISOWeek(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add((input-week)*7,\"d\")}addFormatToken(\"d\",0,\"do\",\"day\");addFormatToken(\"dd\",0,0,function(format){return this.localeData().weekdaysMin(this,format)});addFormatToken(\"ddd\",0,0,function(format){return this.localeData().weekdaysShort(this,format)});addFormatToken(\"dddd\",0,0,function(format){return this.localeData().weekdays(this,format)});addFormatToken(\"e\",0,0,\"weekday\");addFormatToken(\"E\",0,0,\"isoWeekday\");addUnitAlias(\"day\",\"d\");addUnitAlias(\"weekday\",\"e\");addUnitAlias(\"isoWeekday\",\"E\");addUnitPriority(\"day\",11);addUnitPriority(\"weekday\",11);addUnitPriority(\"isoWeekday\",11);addRegexToken(\"d\",match1to2);addRegexToken(\"e\",match1to2);addRegexToken(\"E\",match1to2);addRegexToken(\"dd\",function(isStrict,locale){return locale.weekdaysMinRegex(isStrict)});addRegexToken(\"ddd\",function(isStrict,locale){return locale.weekdaysShortRegex(isStrict)});addRegexToken(\"dddd\",function(isStrict,locale){return locale.weekdaysRegex(isStrict)});addWeekParseToken([\"dd\",\"ddd\",\"dddd\"],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);if(weekday!=null){week.d=weekday}else{getParsingFlags(config).invalidWeekday=input}});addWeekParseToken([\"d\",\"e\",\"E\"],function(input,week,config,token){week[token]=toInt(input)});function parseWeekday(input,locale){if(typeof input!==\"string\"){return input}if(!isNaN(input)){return parseInt(input,10)}input=locale.weekdaysParse(input);if(typeof input===\"number\"){return input}return null}function parseIsoWeekday(input,locale){if(typeof input===\"string\"){return locale.weekdaysParse(input)%7||7}return isNaN(input)?null:input}var defaultLocaleWeekdays=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\");function localeWeekdays(m,format){if(!m){return isArray(this._weekdays)?this._weekdays:this._weekdays[\"standalone\"]}return isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?\"format\":\"standalone\"][m.day()]}var defaultLocaleWeekdaysShort=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\");function localeWeekdaysShort(m){return m?this._weekdaysShort[m.day()]:this._weekdaysShort}var defaultLocaleWeekdaysMin=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\");function localeWeekdaysMin(m){return m?this._weekdaysMin[m.day()]:this._weekdaysMin}function handleStrictParse$1(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(i=0;i<7;++i){mom=createUTC([2e3,1]).day(i);this._minWeekdaysParse[i]=this.weekdaysMin(mom,\"\").toLocaleLowerCase();this._shortWeekdaysParse[i]=this.weekdaysShort(mom,\"\").toLocaleLowerCase();this._weekdaysParse[i]=this.weekdays(mom,\"\").toLocaleLowerCase()}}if(strict){if(format===\"dddd\"){ii=indexOf.call(this._weekdaysParse,llc);return ii!==-1?ii:null}else if(format===\"ddd\"){ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null}else{ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null}}else{if(format===\"dddd\"){ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null}else if(format===\"ddd\"){ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null}else{ii=indexOf.call(this._minWeekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii}ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null}}}function localeWeekdaysParse(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact){return handleStrictParse$1.call(this,weekdayName,format,strict)}if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(i=0;i<7;i++){mom=createUTC([2e3,1]).day(i);if(strict&&!this._fullWeekdaysParse[i]){this._fullWeekdaysParse[i]=new RegExp(\"^\"+this.weekdays(mom,\"\").replace(\".\",\".?\")+\"$\",\"i\");this._shortWeekdaysParse[i]=new RegExp(\"^\"+this.weekdaysShort(mom,\"\").replace(\".\",\".?\")+\"$\",\"i\");this._minWeekdaysParse[i]=new RegExp(\"^\"+this.weekdaysMin(mom,\"\").replace(\".\",\".?\")+\"$\",\"i\")}if(!this._weekdaysParse[i]){regex=\"^\"+this.weekdays(mom,\"\")+\"|^\"+this.weekdaysShort(mom,\"\")+\"|^\"+this.weekdaysMin(mom,\"\");this._weekdaysParse[i]=new RegExp(regex.replace(\".\",\"\"),\"i\")}if(strict&&format===\"dddd\"&&this._fullWeekdaysParse[i].test(weekdayName)){return i}else if(strict&&format===\"ddd\"&&this._shortWeekdaysParse[i].test(weekdayName)){return i}else if(strict&&format===\"dd\"&&this._minWeekdaysParse[i].test(weekdayName)){return i}else if(!strict&&this._weekdaysParse[i].test(weekdayName)){return i}}}function getSetDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN}var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.localeData());return this.add(input-day,\"d\")}else{return day}}function getSetLocaleDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN}var weekday=(this.day()+7-this.localeData()._week.dow)%7;return input==null?weekday:this.add(input-weekday,\"d\")}function getSetISODayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN}if(input!=null){var weekday=parseIsoWeekday(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7)}else{return this.day()||7}}var defaultWeekdaysRegex=matchWord;function weekdaysRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,\"_weekdaysRegex\")){computeWeekdaysParse.call(this)}if(isStrict){return this._weekdaysStrictRegex}else{return this._weekdaysRegex}}else{if(!hasOwnProp(this,\"_weekdaysRegex\")){this._weekdaysRegex=defaultWeekdaysRegex}return this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex}}var defaultWeekdaysShortRegex=matchWord;function weekdaysShortRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,\"_weekdaysRegex\")){computeWeekdaysParse.call(this)}if(isStrict){return this._weekdaysShortStrictRegex}else{return this._weekdaysShortRegex}}else{if(!hasOwnProp(this,\"_weekdaysShortRegex\")){this._weekdaysShortRegex=defaultWeekdaysShortRegex}return this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}var defaultWeekdaysMinRegex=matchWord;function weekdaysMinRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,\"_weekdaysRegex\")){computeWeekdaysParse.call(this)}if(isStrict){return this._weekdaysMinStrictRegex}else{return this._weekdaysMinRegex}}else{if(!hasOwnProp(this,\"_weekdaysMinRegex\")){this._weekdaysMinRegex=defaultWeekdaysMinRegex}return this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length}var minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[],i,mom,minp,shortp,longp;for(i=0;i<7;i++){mom=createUTC([2e3,1]).day(i);minp=this.weekdaysMin(mom,\"\");shortp=this.weekdaysShort(mom,\"\");longp=this.weekdays(mom,\"\");minPieces.push(minp);shortPieces.push(shortp);longPieces.push(longp);mixedPieces.push(minp);mixedPieces.push(shortp);mixedPieces.push(longp)}minPieces.sort(cmpLenRev);shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<7;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i]);mixedPieces[i]=regexEscape(mixedPieces[i])}this._weekdaysRegex=new RegExp(\"^(\"+mixedPieces.join(\"|\")+\")\",\"i\");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp(\"^(\"+longPieces.join(\"|\")+\")\",\"i\");this._weekdaysShortStrictRegex=new RegExp(\"^(\"+shortPieces.join(\"|\")+\")\",\"i\");this._weekdaysMinStrictRegex=new RegExp(\"^(\"+minPieces.join(\"|\")+\")\",\"i\")}function hFormat(){return this.hours()%12||12}function kFormat(){return this.hours()||24}addFormatToken(\"H\",[\"HH\",2],0,\"hour\");addFormatToken(\"h\",[\"hh\",2],0,hFormat);addFormatToken(\"k\",[\"kk\",2],0,kFormat);addFormatToken(\"hmm\",0,0,function(){return\"\"+hFormat.apply(this)+zeroFill(this.minutes(),2)});addFormatToken(\"hmmss\",0,0,function(){return\"\"+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)});addFormatToken(\"Hmm\",0,0,function(){return\"\"+this.hours()+zeroFill(this.minutes(),2)});addFormatToken(\"Hmmss\",0,0,function(){return\"\"+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)});function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}meridiem(\"a\",true);meridiem(\"A\",false);addUnitAlias(\"hour\",\"h\");addUnitPriority(\"hour\",13);function matchMeridiem(isStrict,locale){return locale._meridiemParse}addRegexToken(\"a\",matchMeridiem);addRegexToken(\"A\",matchMeridiem);addRegexToken(\"H\",match1to2);addRegexToken(\"h\",match1to2);addRegexToken(\"k\",match1to2);addRegexToken(\"HH\",match1to2,match2);addRegexToken(\"hh\",match1to2,match2);addRegexToken(\"kk\",match1to2,match2);addRegexToken(\"hmm\",match3to4);addRegexToken(\"hmmss\",match5to6);addRegexToken(\"Hmm\",match3to4);addRegexToken(\"Hmmss\",match5to6);addParseToken([\"H\",\"HH\"],HOUR);addParseToken([\"k\",\"kk\"],function(input,array,config){var kInput=toInt(input);array[HOUR]=kInput===24?0:kInput});addParseToken([\"a\",\"A\"],function(input,array,config){config._isPm=config._locale.isPM(input);config._meridiem=input});addParseToken([\"h\",\"hh\"],function(input,array,config){array[HOUR]=toInt(input);getParsingFlags(config).bigHour=true});addParseToken(\"hmm\",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));getParsingFlags(config).bigHour=true});addParseToken(\"hmmss\",function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));getParsingFlags(config).bigHour=true});addParseToken(\"Hmm\",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos))});addParseToken(\"Hmmss\",function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2))});function localeIsPM(input){return(input+\"\").toLowerCase().charAt(0)===\"p\"}var defaultLocaleMeridiemParse=/[ap]\\.?m?\\.?/i;function localeMeridiem(hours,minutes,isLower){if(hours>11){return isLower?\"pm\":\"PM\"}else{return isLower?\"am\":\"AM\"}}var getSetHour=makeGetSet(\"Hours\",true);var baseConfig={calendar:defaultCalendar,longDateFormat:defaultLongDateFormat,invalidDate:defaultInvalidDate,ordinal:defaultOrdinal,dayOfMonthOrdinalParse:defaultDayOfMonthOrdinalParse,relativeTime:defaultRelativeTime,months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:defaultLocaleWeek,weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:defaultLocaleMeridiemParse};var locales={};var localeFamilies={};var globalLocale;function normalizeLocale(key){return key?key.toLowerCase().replace(\"_\",\"-\"):key}function chooseLocale(names){var i=0,j,next,locale,split;while(i<names.length){split=normalizeLocale(names[i]).split(\"-\");j=split.length;next=normalizeLocale(names[i+1]);next=next?next.split(\"-\"):null;while(j>0){locale=loadLocale(split.slice(0,j).join(\"-\"));if(locale){return locale}if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break}j--}i++}return null}function loadLocale(name){var oldLocale=null;if(!locales[name]&&typeof module!==\"undefined\"&&module&&module.exports){try{oldLocale=globalLocale._abbr;var aliasedRequire=require;!function webpackMissingModule(){var e=new Error('Cannot find module \"./locale\"');e.code=\"MODULE_NOT_FOUND\";throw e}();getSetGlobalLocale(oldLocale)}catch(e){}}return locales[name]}function getSetGlobalLocale(key,values){var data;if(key){if(isUndefined(values)){data=getLocale(key)}else{data=defineLocale(key,values)}if(data){globalLocale=data}}return globalLocale._abbr}function defineLocale(name,config){if(config!==null){var parentConfig=baseConfig;config.abbr=name;if(locales[name]!=null){deprecateSimple(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change \"+\"an existing locale. moment.defineLocale(localeName, \"+\"config) should only be used for creating a new locale \"+\"See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\");parentConfig=locales[name]._config}else if(config.parentLocale!=null){if(locales[config.parentLocale]!=null){parentConfig=locales[config.parentLocale]._config}else{if(!localeFamilies[config.parentLocale]){localeFamilies[config.parentLocale]=[]}localeFamilies[config.parentLocale].push({name:name,config:config});return null}}locales[name]=new Locale(mergeConfigs(parentConfig,config));if(localeFamilies[name]){localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config)})}getSetGlobalLocale(name);return locales[name]}else{delete locales[name];return null}}function updateLocale(name,config){if(config!=null){var locale,parentConfig=baseConfig;if(locales[name]!=null){parentConfig=locales[name]._config}config=mergeConfigs(parentConfig,config);locale=new Locale(config);locale.parentLocale=locales[name];locales[name]=locale;getSetGlobalLocale(name)}else{if(locales[name]!=null){if(locales[name].parentLocale!=null){locales[name]=locales[name].parentLocale}else if(locales[name]!=null){delete locales[name]}}}return locales[name]}function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr){key=key._locale._abbr}if(!key){return globalLocale}if(!isArray(key)){locale=loadLocale(key);if(locale){return locale}key=[key]}return chooseLocale(key)}function listLocales(){return keys(locales)}function checkOverflow(m){var overflow;var a=m._a;if(a&&getParsingFlags(m).overflow===-2){overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||a[HOUR]===24&&(a[MINUTE]!==0||a[SECOND]!==0||a[MILLISECOND]!==0)?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1;if(getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE}if(getParsingFlags(m)._overflowWeeks&&overflow===-1){overflow=WEEK}if(getParsingFlags(m)._overflowWeekday&&overflow===-1){overflow=WEEKDAY}getParsingFlags(m).overflow=overflow}return m}function defaults(a,b,c){if(a!=null){return a}if(b!=null){return b}return c}function currentDateArray(config){var nowValue=new Date(hooks.now());if(config._useUTC){return[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()]}return[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()]}function configFromArray(config){var i,date,input=[],currentDate,yearToUse;if(config._d){return}currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){dayOfYearFromWeekInfo(config)}if(config._dayOfYear!=null){yearToUse=defaults(config._a[YEAR],currentDate[YEAR]);if(config._dayOfYear>daysInYear(yearToUse)||config._dayOfYear===0){getParsingFlags(config)._overflowDayOfYear=true}date=createUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate()}for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i]}for(;i<7;i++){config._a[i]=input[i]=config._a[i]==null?i===2?1:0:config._a[i]}if(config._a[HOUR]===24&&config._a[MINUTE]===0&&config._a[SECOND]===0&&config._a[MILLISECOND]===0){config._nextDay=true;config._a[HOUR]=0}config._d=(config._useUTC?createUTCDate:createDate).apply(null,input);if(config._tzm!=null){config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm)}if(config._nextDay){config._a[HOUR]=24}if(config._w&&typeof config._w.d!==\"undefined\"&&config._w.d!==config._d.getDay()){getParsingFlags(config).weekdayMismatch=true}}function dayOfYearFromWeekInfo(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){dow=1;doy=4;weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year);week=defaults(w.W,1);weekday=defaults(w.E,1);if(weekday<1||weekday>7){weekdayOverflow=true}}else{dow=config._locale._week.dow;doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year);week=defaults(w.w,curWeek.week);if(w.d!=null){weekday=w.d;if(weekday<0||weekday>6){weekdayOverflow=true}}else if(w.e!=null){weekday=w.e+dow;if(w.e<0||w.e>6){weekdayOverflow=true}}else{weekday=dow}}if(week<1||week>weeksInYear(weekYear,dow,doy)){getParsingFlags(config)._overflowWeeks=true}else if(weekdayOverflow!=null){getParsingFlags(config)._overflowWeekday=true}else{temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy);config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear}}var extendedIsoRegex=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;var basicIsoRegex=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;var tzRegex=/Z|[+-]\\d\\d(?::?\\d\\d)?/;var isoDates=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,false],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,false],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,false],[\"YYYYDDD\",/\\d{7}/]];var isoTimes=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]];var aspNetJsonRegex=/^\\/?Date\\((\\-?\\d+)/i;function configFromISO(config){var i,l,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string),allowTime,dateFormat,timeFormat,tzFormat;if(match){getParsingFlags(config).iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0];allowTime=isoDates[i][2]!==false;break}}if(dateFormat==null){config._isValid=false;return}if(match[3]){for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||\" \")+isoTimes[i][0];break}}if(timeFormat==null){config._isValid=false;return}}if(!allowTime&&timeFormat!=null){config._isValid=false;return}if(match[4]){if(tzRegex.exec(match[4])){tzFormat=\"Z\"}else{config._isValid=false;return}}config._f=dateFormat+(timeFormat||\"\")+(tzFormat||\"\");configFromStringAndFormat(config)}else{config._isValid=false}}var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[untruncateYear(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];if(secondStr){result.push(parseInt(secondStr,10))}return result}function untruncateYear(yearStr){var year=parseInt(yearStr,10);if(year<=49){return 2e3+year}else if(year<=999){return 1900+year}return year}function preprocessRFC2822(s){return s.replace(/\\([^)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").trim()}function checkWeekday(weekdayStr,parsedInput,config){if(weekdayStr){var weekdayProvided=defaultLocaleWeekdaysShort.indexOf(weekdayStr),weekdayActual=new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay();if(weekdayProvided!==weekdayActual){getParsingFlags(config).weekdayMismatch=true;config._isValid=false;return false}}return true}var obsOffsets={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function calculateOffset(obsOffset,militaryOffset,numOffset){if(obsOffset){return obsOffsets[obsOffset]}else if(militaryOffset){return 0}else{var hm=parseInt(numOffset,10);var m=hm%100,h=(hm-m)/100;return h*60+m}}function configFromRFC2822(config){var match=rfc2822.exec(preprocessRFC2822(config._i));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!checkWeekday(match[1],parsedArray,config)){return}config._a=parsedArray;config._tzm=calculateOffset(match[8],match[9],match[10]);config._d=createUTCDate.apply(null,config._a);config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm);getParsingFlags(config).rfc2822=true}else{config._isValid=false}}function configFromString(config){var matched=aspNetJsonRegex.exec(config._i);if(matched!==null){config._d=new Date(+matched[1]);return}configFromISO(config);if(config._isValid===false){delete config._isValid}else{return}configFromRFC2822(config);if(config._isValid===false){delete config._isValid}else{return}hooks.createFromInputFallback(config)}hooks.createFromInputFallback=deprecate(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), \"+\"which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are \"+\"discouraged and will be removed in an upcoming major release. Please refer to \"+\"http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(config){config._d=new Date(config._i+(config._useUTC?\" UTC\":\"\"))});hooks.ISO_8601=function(){};hooks.RFC_2822=function(){};function configFromStringAndFormat(config){if(config._f===hooks.ISO_8601){configFromISO(config);return}if(config._f===hooks.RFC_2822){configFromRFC2822(config);return}config._a=[];getParsingFlags(config).empty=true\n;var string=\"\"+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){getParsingFlags(config).unusedInput.push(skipped)}string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length}if(formatTokenFunctions[token]){if(parsedInput){getParsingFlags(config).empty=false}else{getParsingFlags(config).unusedTokens.push(token)}addTimeToArrayFromToken(token,parsedInput,config)}else if(config._strict&&!parsedInput){getParsingFlags(config).unusedTokens.push(token)}}getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){getParsingFlags(config).unusedInput.push(string)}if(config._a[HOUR]<=12&&getParsingFlags(config).bigHour===true&&config._a[HOUR]>0){getParsingFlags(config).bigHour=undefined}getParsingFlags(config).parsedDateParts=config._a.slice(0);getParsingFlags(config).meridiem=config._meridiem;config._a[HOUR]=meridiemFixWrap(config._locale,config._a[HOUR],config._meridiem);configFromArray(config);checkOverflow(config)}function meridiemFixWrap(locale,hour,meridiem){var isPm;if(meridiem==null){return hour}if(locale.meridiemHour!=null){return locale.meridiemHour(hour,meridiem)}else if(locale.isPM!=null){isPm=locale.isPM(meridiem);if(isPm&&hour<12){hour+=12}if(!isPm&&hour===12){hour=0}return hour}else{return hour}}function configFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){getParsingFlags(config).invalidFormat=true;config._d=new Date(NaN);return}for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=copyConfig({},config);if(config._useUTC!=null){tempConfig._useUTC=config._useUTC}tempConfig._f=config._f[i];configFromStringAndFormat(tempConfig);if(!isValid(tempConfig)){continue}currentScore+=getParsingFlags(tempConfig).charsLeftOver;currentScore+=getParsingFlags(tempConfig).unusedTokens.length*10;getParsingFlags(tempConfig).score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig}}extend(config,bestMoment||tempConfig)}function configFromObject(config){if(config._d){return}var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10)});configFromArray(config)}function createFromConfig(config){var res=new Moment(checkOverflow(prepareConfig(config)));if(res._nextDay){res.add(1,\"d\");res._nextDay=undefined}return res}function prepareConfig(config){var input=config._i,format=config._f;config._locale=config._locale||getLocale(config._l);if(input===null||format===undefined&&input===\"\"){return createInvalid({nullInput:true})}if(typeof input===\"string\"){config._i=input=config._locale.preparse(input)}if(isMoment(input)){return new Moment(checkOverflow(input))}else if(isDate(input)){config._d=input}else if(isArray(format)){configFromStringAndArray(config)}else if(format){configFromStringAndFormat(config)}else{configFromInput(config)}if(!isValid(config)){config._d=null}return config}function configFromInput(config){var input=config._i;if(isUndefined(input)){config._d=new Date(hooks.now())}else if(isDate(input)){config._d=new Date(input.valueOf())}else if(typeof input===\"string\"){configFromString(config)}else if(isArray(input)){config._a=map(input.slice(0),function(obj){return parseInt(obj,10)});configFromArray(config)}else if(isObject(input)){configFromObject(config)}else if(isNumber(input)){config._d=new Date(input)}else{hooks.createFromInputFallback(config)}}function createLocalOrUTC(input,format,locale,strict,isUTC){var c={};if(locale===true||locale===false){strict=locale;locale=undefined}if(isObject(input)&&isObjectEmpty(input)||isArray(input)&&input.length===0){input=undefined}c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c)}function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false)}var prototypeMin=deprecate(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other<this?this:other}else{return createInvalid()}});var prototypeMax=deprecate(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other>this?this:other}else{return createInvalid()}});function pickBy(fn,moments){var res,i;if(moments.length===1&&isArray(moments[0])){moments=moments[0]}if(!moments.length){return createLocal()}res=moments[0];for(i=1;i<moments.length;++i){if(!moments[i].isValid()||moments[i][fn](res)){res=moments[i]}}return res}function min(){var args=[].slice.call(arguments,0);return pickBy(\"isBefore\",args)}function max(){var args=[].slice.call(arguments,0);return pickBy(\"isAfter\",args)}var now=function(){return Date.now?Date.now():+new Date};var ordering=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];function isDurationValid(m){for(var key in m){if(!(indexOf.call(ordering,key)!==-1&&(m[key]==null||!isNaN(m[key])))){return false}}var unitHasDecimal=false;for(var i=0;i<ordering.length;++i){if(m[ordering[i]]){if(unitHasDecimal){return false}if(parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])){unitHasDecimal=true}}}return true}function isValid$1(){return this._isValid}function createInvalid$1(){return createDuration(NaN)}function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=isDurationValid(normalizedInput);this._milliseconds=+milliseconds+seconds*1e3+minutes*6e4+hours*1e3*60*60;this._days=+days+weeks*7;this._months=+months+quarters*3+years*12;this._data={};this._locale=getLocale();this._bubble()}function isDuration(obj){return obj instanceof Duration}function absRound(number){if(number<0){return Math.round(-1*number)*-1}else{return Math.round(number)}}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset();var sign=\"+\";if(offset<0){offset=-offset;sign=\"-\"}return sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset(\"Z\",\":\");offset(\"ZZ\",\"\");addRegexToken(\"Z\",matchShortOffset);addRegexToken(\"ZZ\",matchShortOffset);addParseToken([\"Z\",\"ZZ\"],function(input,array,config){config._useUTC=true;config._tzm=offsetFromString(matchShortOffset,input)});var chunkOffset=/([\\+\\-]|\\d\\d)/gi;function offsetFromString(matcher,string){var matches=(string||\"\").match(matcher);if(matches===null){return null}var chunk=matches[matches.length-1]||[];var parts=(chunk+\"\").match(chunkOffset)||[\"-\",0,0];var minutes=+(parts[1]*60)+toInt(parts[2]);return minutes===0?0:parts[0]===\"+\"?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;if(model._isUTC){res=model.clone();diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf();res._d.setTime(res._d.valueOf()+diff);hooks.updateOffset(res,false);return res}else{return createLocal(input).local()}}function getDateOffset(m){return-Math.round(m._d.getTimezoneOffset()/15)*15}hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime,keepMinutes){var offset=this._offset||0,localAdjust;if(!this.isValid()){return input!=null?this:NaN}if(input!=null){if(typeof input===\"string\"){input=offsetFromString(matchShortOffset,input);if(input===null){return this}}else if(Math.abs(input)<16&&!keepMinutes){input=input*60}if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this)}this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,\"m\")}if(offset!==input){if(!keepLocalTime||this._changeInProgress){addSubtract(this,createDuration(input-offset,\"m\"),1,false)}else if(!this._changeInProgress){this._changeInProgress=true;hooks.updateOffset(this,true);this._changeInProgress=null}}return this}else{return this._isUTC?offset:getDateOffset(this)}}function getSetZone(input,keepLocalTime){if(input!=null){if(typeof input!==\"string\"){input=-input}this.utcOffset(input,keepLocalTime);return this}else{return-this.utcOffset()}}function setOffsetToUTC(keepLocalTime){return this.utcOffset(0,keepLocalTime)}function setOffsetToLocal(keepLocalTime){if(this._isUTC){this.utcOffset(0,keepLocalTime);this._isUTC=false;if(keepLocalTime){this.subtract(getDateOffset(this),\"m\")}}return this}function setOffsetToParsedOffset(){if(this._tzm!=null){this.utcOffset(this._tzm,false,true)}else if(typeof this._i===\"string\"){var tZone=offsetFromString(matchOffset,this._i);if(tZone!=null){this.utcOffset(tZone)}else{this.utcOffset(0,true)}}return this}function hasAlignedHourOffset(input){if(!this.isValid()){return false}input=input?createLocal(input).utcOffset():0;return(this.utcOffset()-input)%60===0}function isDaylightSavingTime(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted)){return this._isDSTShifted}var c={};copyConfig(c,this);c=prepareConfig(c);if(c._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else{this._isDSTShifted=false}return this._isDSTShifted}function isLocal(){return this.isValid()?!this._isUTC:false}function isUtcOffset(){return this.isValid()?this._isUTC:false}function isUtc(){return this.isValid()?this._isUTC&&this._offset===0:false}var aspNetRegex=/^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;var isoRegex=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var duration=input,match=null,sign,ret,diffRes;if(isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months}}else if(isNumber(input)){duration={};if(key){duration[key]=input}else{duration.milliseconds=input}}else if(!!(match=aspNetRegex.exec(input))){sign=match[1]===\"-\"?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(match[MILLISECOND]*1e3))*sign}}else if(!!(match=isoRegex.exec(input))){sign=match[1]===\"-\"?-1:match[1]===\"+\"?1:1;duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)}}else if(duration==null){duration={}}else if(typeof duration===\"object\"&&(\"from\"in duration||\"to\"in duration)){diffRes=momentsDifference(createLocal(duration.from),createLocal(duration.to));duration={};duration.ms=diffRes.milliseconds;duration.M=diffRes.months}ret=new Duration(duration);if(isDuration(input)&&hasOwnProp(input,\"_locale\")){ret._locale=input._locale}return ret}createDuration.fn=Duration.prototype;createDuration.invalid=createInvalid$1;function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(\",\",\".\"));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};res.months=other.month()-base.month()+(other.year()-base.year())*12;if(base.clone().add(res.months,\"M\").isAfter(other)){--res.months}res.milliseconds=+other-+base.clone().add(res.months,\"M\");return res}function momentsDifference(base,other){var res;if(!(base.isValid()&&other.isValid())){return{milliseconds:0,months:0}}other=cloneWithOffset(other,base);if(base.isBefore(other)){res=positiveMomentsDifference(base,other)}else{res=positiveMomentsDifference(other,base);res.milliseconds=-res.milliseconds;res.months=-res.months}return res}function createAdder(direction,name){return function(val,period){var dur,tmp;if(period!==null&&!isNaN(+period)){deprecateSimple(name,\"moment().\"+name+\"(period, number) is deprecated. Please use moment().\"+name+\"(number, period). \"+\"See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\");tmp=val;val=period;period=tmp}val=typeof val===\"string\"?+val:val;dur=createDuration(val,period);addSubtract(this,dur,direction);return this}}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);if(!mom.isValid()){return}updateOffset=updateOffset==null?true:updateOffset;if(months){setMonth(mom,get(mom,\"Month\")+months*isAdding)}if(days){set$1(mom,\"Date\",get(mom,\"Date\")+days*isAdding)}if(milliseconds){mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding)}if(updateOffset){hooks.updateOffset(mom,days||months)}}var add=createAdder(1,\"add\");var subtract=createAdder(-1,\"subtract\");function getCalendarFormat(myMoment,now){var diff=myMoment.diff(now,\"days\",true);return diff<-6?\"sameElse\":diff<-1?\"lastWeek\":diff<0?\"lastDay\":diff<1?\"sameDay\":diff<2?\"nextDay\":diff<7?\"nextWeek\":\"sameElse\"}function calendar$1(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf(\"day\"),format=hooks.calendarFormat(this,sod)||\"sameElse\";var output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)))}function clone(){return new Moment(this)}function isAfter(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false}units=normalizeUnits(!isUndefined(units)?units:\"millisecond\");if(units===\"millisecond\"){return this.valueOf()>localInput.valueOf()}else{return localInput.valueOf()<this.clone().startOf(units).valueOf()}}function isBefore(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false}units=normalizeUnits(!isUndefined(units)?units:\"millisecond\");if(units===\"millisecond\"){return this.valueOf()<localInput.valueOf()}else{return this.clone().endOf(units).valueOf()<localInput.valueOf()}}function isBetween(from,to,units,inclusivity){inclusivity=inclusivity||\"()\";return(inclusivity[0]===\"(\"?this.isAfter(from,units):!this.isBefore(from,units))&&(inclusivity[1]===\")\"?this.isBefore(to,units):!this.isAfter(to,units))}function isSame(input,units){var localInput=isMoment(input)?input:createLocal(input),inputMs;if(!(this.isValid()&&localInput.isValid())){return false}units=normalizeUnits(units||\"millisecond\");if(units===\"millisecond\"){return this.valueOf()===localInput.valueOf()}else{inputMs=localInput.valueOf();return this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf()}}function isSameOrAfter(input,units){return this.isSame(input,units)||this.isAfter(input,units)}function isSameOrBefore(input,units){return this.isSame(input,units)||this.isBefore(input,units)}function diff(input,units,asFloat){var that,zoneDelta,delta,output;if(!this.isValid()){return NaN}that=cloneWithOffset(input,this);if(!that.isValid()){return NaN}zoneDelta=(that.utcOffset()-this.utcOffset())*6e4;units=normalizeUnits(units);switch(units){case\"year\":output=monthDiff(this,that)/12;break;case\"month\":output=monthDiff(this,that);break;case\"quarter\":output=monthDiff(this,that)/3;break;case\"second\":output=(this-that)/1e3;break;case\"minute\":output=(this-that)/6e4;break;case\"hour\":output=(this-that)/36e5;break;case\"day\":output=(this-that-zoneDelta)/864e5;break;case\"week\":output=(this-that-zoneDelta)/6048e5;break;default:output=this-that}return asFloat?output:absFloor(output)}function monthDiff(a,b){var wholeMonthDiff=(b.year()-a.year())*12+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,\"months\"),anchor2,adjust;if(b-anchor<0){anchor2=a.clone().add(wholeMonthDiff-1,\"months\");adjust=(b-anchor)/(anchor-anchor2)}else{anchor2=a.clone().add(wholeMonthDiff+1,\"months\");adjust=(b-anchor)/(anchor2-anchor)}return-(wholeMonthDiff+adjust)||0}hooks.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\";hooks.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";function toString(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")}function toISOString(){if(!this.isValid()){return null}var m=this.clone().utc();if(m.year()<0||m.year()>9999){return formatMoment(m,\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\")}if(isFunction(Date.prototype.toISOString)){return this.toDate().toISOString()}return formatMoment(m,\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\")}function inspect(){if(!this.isValid()){return\"moment.invalid(/* \"+this._i+\" */)\"}var func=\"moment\";var zone=\"\";if(!this.isLocal()){func=this.utcOffset()===0?\"moment.utc\":\"moment.parseZone\";zone=\"Z\"}var prefix=\"[\"+func+'(\"]';var year=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\";var datetime=\"-MM-DD[T]HH:mm:ss.SSS\";var suffix=zone+'[\")]';return this.format(prefix+year+datetime+suffix)}function format(inputString){if(!inputString){inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat}var output=formatMoment(this,inputString);return this.localeData().postformat(output)}function from(time,withoutSuffix){if(this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())){return createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix)}else{return this.localeData().invalidDate()}}function fromNow(withoutSuffix){return this.from(createLocal(),withoutSuffix)}function to(time,withoutSuffix){if(this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())){return createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix)}else{return this.localeData().invalidDate()}}function toNow(withoutSuffix){return this.to(createLocal(),withoutSuffix)}function locale(key){var newLocaleData;if(key===undefined){return this._locale._abbr}else{newLocaleData=getLocale(key);if(newLocaleData!=null){this._locale=newLocaleData}return this}}var lang=deprecate(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(key){if(key===undefined){return this.localeData()}else{return this.locale(key)}});function localeData(){return this._locale}function startOf(units){units=normalizeUnits(units);switch(units){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":case\"date\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)}if(units===\"week\"){this.weekday(0)}if(units===\"isoWeek\"){this.isoWeekday(1)}if(units===\"quarter\"){this.month(Math.floor(this.month()/3)*3)}return this}function endOf(units){units=normalizeUnits(units);if(units===undefined||units===\"millisecond\"){return this}if(units===\"date\"){units=\"day\"}return this.startOf(units).add(1,units===\"isoWeek\"?\"week\":units).subtract(1,\"ms\")}function valueOf(){return this._d.valueOf()-(this._offset||0)*6e4}function unix(){return Math.floor(this.valueOf()/1e3)}function toDate(){return new Date(this.valueOf())}function toArray(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]}function toObject(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}}function toJSON(){return this.isValid()?this.toISOString():null}function isValid$2(){return isValid(this)}function parsingFlags(){return extend({},getParsingFlags(this))}function invalidAt(){return getParsingFlags(this).overflow}function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}addFormatToken(0,[\"gg\",2],0,function(){return this.weekYear()%100});addFormatToken(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100});function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}addWeekYearFormatToken(\"gggg\",\"weekYear\");addWeekYearFormatToken(\"ggggg\",\"weekYear\");addWeekYearFormatToken(\"GGGG\",\"isoWeekYear\");addWeekYearFormatToken(\"GGGGG\",\"isoWeekYear\");addUnitAlias(\"weekYear\",\"gg\");addUnitAlias(\"isoWeekYear\",\"GG\");addUnitPriority(\"weekYear\",1);addUnitPriority(\"isoWeekYear\",1);addRegexToken(\"G\",matchSigned);addRegexToken(\"g\",matchSigned);addRegexToken(\"GG\",match1to2,match2);addRegexToken(\"gg\",match1to2,match2);addRegexToken(\"GGGG\",match1to4,match4);addRegexToken(\"gggg\",match1to4,match4);addRegexToken(\"GGGGG\",match1to6,match6);addRegexToken(\"ggggg\",match1to6,match6);addWeekParseToken([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)});addWeekParseToken([\"gg\",\"GG\"],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input)});function getSetWeekYear(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function getSetISOWeekYear(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4)}function getISOWeeksInYear(){return weeksInYear(this.year(),1,4)}function getWeeksInYear(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)}function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;if(input==null){return weekOfYear(this,dow,doy).year}else{weeksTarget=weeksInYear(input,dow,doy);if(week>weeksTarget){week=weeksTarget}return setWeekAll.call(this,input,week,weekday,dow,doy)}}function setWeekAll(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);this.year(date.getUTCFullYear());this.month(date.getUTCMonth());this.date(date.getUTCDate());return this}addFormatToken(\"Q\",0,\"Qo\",\"quarter\");addUnitAlias(\"quarter\",\"Q\");addUnitPriority(\"quarter\",7);addRegexToken(\"Q\",match1);addParseToken(\"Q\",function(input,array){array[MONTH]=(toInt(input)-1)*3});function getSetQuarter(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3)}addFormatToken(\"D\",[\"DD\",2],\"Do\",\"date\");addUnitAlias(\"date\",\"D\");addUnitPriority(\"date\",9);addRegexToken(\"D\",match1to2);addRegexToken(\"DD\",match1to2,match2);addRegexToken(\"Do\",function(isStrict,locale){return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient});addParseToken([\"D\",\"DD\"],DATE);addParseToken(\"Do\",function(input,array){array[DATE]=toInt(input.match(match1to2)[0],10)});var getSetDayOfMonth=makeGetSet(\"Date\",true);addFormatToken(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\");addUnitAlias(\"dayOfYear\",\"DDD\");addUnitPriority(\"dayOfYear\",4);addRegexToken(\"DDD\",match1to3);addRegexToken(\"DDDD\",match3);addParseToken([\"DDD\",\"DDDD\"],function(input,array,config){config._dayOfYear=toInt(input)});function getSetDayOfYear(input){var dayOfYear=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return input==null?dayOfYear:this.add(input-dayOfYear,\"d\")}addFormatToken(\"m\",[\"mm\",2],0,\"minute\");addUnitAlias(\"minute\",\"m\");addUnitPriority(\"minute\",14);addRegexToken(\"m\",match1to2);addRegexToken(\"mm\",match1to2,match2);addParseToken([\"m\",\"mm\"],MINUTE);var getSetMinute=makeGetSet(\"Minutes\",false);addFormatToken(\"s\",[\"ss\",2],0,\"second\");addUnitAlias(\"second\",\"s\");addUnitPriority(\"second\",15);addRegexToken(\"s\",match1to2);addRegexToken(\"ss\",match1to2,match2);addParseToken([\"s\",\"ss\"],SECOND);var getSetSecond=makeGetSet(\"Seconds\",false);addFormatToken(\"S\",0,0,function(){return~~(this.millisecond()/100)});addFormatToken(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)});addFormatToken(0,[\"SSS\",3],0,\"millisecond\");addFormatToken(0,[\"SSSS\",4],0,function(){return this.millisecond()*10});addFormatToken(0,[\"SSSSS\",5],0,function(){return this.millisecond()*100});addFormatToken(0,[\"SSSSSS\",6],0,function(){return this.millisecond()*1e3});addFormatToken(0,[\"SSSSSSS\",7],0,function(){return this.millisecond()*1e4});addFormatToken(0,[\"SSSSSSSS\",8],0,function(){return this.millisecond()*1e5});addFormatToken(0,[\"SSSSSSSSS\",9],0,function(){return this.millisecond()*1e6});addUnitAlias(\"millisecond\",\"ms\");addUnitPriority(\"millisecond\",16);addRegexToken(\"S\",match1to3,match1);addRegexToken(\"SS\",match1to3,match2);addRegexToken(\"SSS\",match1to3,match3);var token;for(token=\"SSSS\";token.length<=9;token+=\"S\"){addRegexToken(token,matchUnsigned)}function parseMs(input,array){array[MILLISECOND]=toInt((\"0.\"+input)*1e3)}for(token=\"S\";token.length<=9;token+=\"S\"){addParseToken(token,parseMs)}var getSetMillisecond=makeGetSet(\"Milliseconds\",false);addFormatToken(\"z\",0,0,\"zoneAbbr\");addFormatToken(\"zz\",0,0,\"zoneName\");function getZoneAbbr(){return this._isUTC?\"UTC\":\"\"}function getZoneName(){return this._isUTC?\"Coordinated Universal Time\":\"\"}var proto=Moment.prototype;proto.add=add;proto.calendar=calendar$1;proto.clone=clone;proto.diff=diff;proto.endOf=endOf;proto.format=format;proto.from=from;proto.fromNow=fromNow;proto.to=to;proto.toNow=toNow;proto.get=stringGet;proto.invalidAt=invalidAt;proto.isAfter=isAfter;proto.isBefore=isBefore;proto.isBetween=isBetween;proto.isSame=isSame;proto.isSameOrAfter=isSameOrAfter;proto.isSameOrBefore=isSameOrBefore;proto.isValid=isValid$2;proto.lang=lang;proto.locale=locale;proto.localeData=localeData;proto.max=prototypeMax;proto.min=prototypeMin;proto.parsingFlags=parsingFlags;proto.set=stringSet;proto.startOf=startOf;proto.subtract=subtract;proto.toArray=toArray;proto.toObject=toObject;proto.toDate=toDate;proto.toISOString=toISOString;proto.inspect=inspect;proto.toJSON=toJSON;proto.toString=toString;proto.unix=unix;proto.valueOf=valueOf;proto.creationData=creationData;proto.year=getSetYear;proto.isLeapYear=getIsLeapYear;proto.weekYear=getSetWeekYear;proto.isoWeekYear=getSetISOWeekYear;proto.quarter=proto.quarters=getSetQuarter;proto.month=getSetMonth;proto.daysInMonth=getDaysInMonth;proto.week=proto.weeks=getSetWeek;proto.isoWeek=proto.isoWeeks=getSetISOWeek;proto.weeksInYear=getWeeksInYear;proto.isoWeeksInYear=getISOWeeksInYear;proto.date=getSetDayOfMonth;proto.day=proto.days=getSetDayOfWeek;proto.weekday=getSetLocaleDayOfWeek;proto.isoWeekday=getSetISODayOfWeek;proto.dayOfYear=getSetDayOfYear;proto.hour=proto.hours=getSetHour;proto.minute=proto.minutes=getSetMinute;proto.second=proto.seconds=getSetSecond;proto.millisecond=proto.milliseconds=getSetMillisecond;proto.utcOffset=getSetOffset;proto.utc=setOffsetToUTC;proto.local=setOffsetToLocal;proto.parseZone=setOffsetToParsedOffset;proto.hasAlignedHourOffset=hasAlignedHourOffset;proto.isDST=isDaylightSavingTime;proto.isLocal=isLocal;proto.isUtcOffset=isUtcOffset;proto.isUtc=isUtc;proto.isUTC=isUtc;proto.zoneAbbr=getZoneAbbr;proto.zoneName=getZoneName;proto.dates=deprecate(\"dates accessor is deprecated. Use date instead.\",getSetDayOfMonth);proto.months=deprecate(\"months accessor is deprecated. Use month instead\",getSetMonth);proto.years=deprecate(\"years accessor is deprecated. Use year instead\",getSetYear);proto.zone=deprecate(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",getSetZone);proto.isDSTShifted=deprecate(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",isDaylightSavingTimeShifted);function createUnix(input){return createLocal(input*1e3)}function createInZone(){return createLocal.apply(null,arguments).parseZone()}function preParsePostFormat(string){return string}var proto$1=Locale.prototype;proto$1.calendar=calendar;proto$1.longDateFormat=longDateFormat;proto$1.invalidDate=invalidDate;proto$1.ordinal=ordinal;proto$1.preparse=preParsePostFormat;proto$1.postformat=preParsePostFormat;proto$1.relativeTime=relativeTime;proto$1.pastFuture=pastFuture;proto$1.set=set;proto$1.months=localeMonths;proto$1.monthsShort=localeMonthsShort;proto$1.monthsParse=localeMonthsParse;proto$1.monthsRegex=monthsRegex;proto$1.monthsShortRegex=monthsShortRegex;proto$1.week=localeWeek;proto$1.firstDayOfYear=localeFirstDayOfYear;proto$1.firstDayOfWeek=localeFirstDayOfWeek;proto$1.weekdays=localeWeekdays;proto$1.weekdaysMin=localeWeekdaysMin;proto$1.weekdaysShort=localeWeekdaysShort;proto$1.weekdaysParse=localeWeekdaysParse;proto$1.weekdaysRegex=weekdaysRegex;proto$1.weekdaysShortRegex=weekdaysShortRegex;proto$1.weekdaysMinRegex=weekdaysMinRegex;proto$1.isPM=localeIsPM;proto$1.meridiem=localeMeridiem;function get$1(format,index,field,setter){var locale=getLocale();var utc=createUTC().set(setter,index);return locale[field](utc,format)}function listMonthsImpl(format,index,field){if(isNumber(format)){index=format;format=undefined}format=format||\"\";if(index!=null){return get$1(format,index,field,\"month\")}var i;var out=[];for(i=0;i<12;i++){out[i]=get$1(format,i,field,\"month\")}return out}function listWeekdaysImpl(localeSorted,format,index,field){if(typeof localeSorted===\"boolean\"){if(isNumber(format)){index=format;format=undefined}format=format||\"\"}else{format=localeSorted;index=format;localeSorted=false;if(isNumber(format)){index=format;format=undefined}format=format||\"\"}var locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(index!=null){return get$1(format,(index+shift)%7,field,\"day\")}var i;var out=[];for(i=0;i<7;i++){out[i]=get$1(format,(i+shift)%7,field,\"day\")}return out}function listMonths(format,index){return listMonthsImpl(format,index,\"months\")}function listMonthsShort(format,index){return listMonthsImpl(format,index,\"monthsShort\")}function listWeekdays(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,\"weekdays\")}function listWeekdaysShort(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,\"weekdaysShort\")}function listWeekdaysMin(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,\"weekdaysMin\")}getSetGlobalLocale(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10,output=toInt(number%100/10)===1?\"th\":b===1?\"st\":b===2?\"nd\":b===3?\"rd\":\"th\";return number+output}});hooks.lang=deprecate(\"moment.lang is deprecated. Use moment.locale instead.\",getSetGlobalLocale);hooks.langData=deprecate(\"moment.langData is deprecated. Use moment.localeData instead.\",getLocale);var mathAbs=Math.abs;function abs(){var data=this._data;this._milliseconds=mathAbs(this._milliseconds);this._days=mathAbs(this._days);this._months=mathAbs(this._months);data.milliseconds=mathAbs(data.milliseconds);data.seconds=mathAbs(data.seconds);data.minutes=mathAbs(data.minutes);data.hours=mathAbs(data.hours);data.months=mathAbs(data.months);data.years=mathAbs(data.years);return this}function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);duration._milliseconds+=direction*other._milliseconds;duration._days+=direction*other._days;duration._months+=direction*other._months;return duration._bubble()}function add$1(input,value){return addSubtract$1(this,input,value,1)}function subtract$1(input,value){return addSubtract$1(this,input,value,-1)}function absCeil(number){if(number<0){return Math.floor(number)}else{return Math.ceil(number)}}function bubble(){var milliseconds=this._milliseconds;var days=this._days;var months=this._months;var data=this._data;var seconds,minutes,hours,years,monthsFromDays;if(!(milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0)){milliseconds+=absCeil(monthsToDays(months)+days)*864e5;days=0;months=0}data.milliseconds=milliseconds%1e3;seconds=absFloor(milliseconds/1e3);data.seconds=seconds%60;minutes=absFloor(seconds/60)\n;data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);monthsFromDays=absFloor(daysToMonths(days));months+=monthsFromDays;days-=absCeil(monthsToDays(monthsFromDays));years=absFloor(months/12);months%=12;data.days=days;data.months=months;data.years=years;return this}function daysToMonths(days){return days*4800/146097}function monthsToDays(months){return months*146097/4800}function as(units){if(!this.isValid()){return NaN}var days;var months;var milliseconds=this._milliseconds;units=normalizeUnits(units);if(units===\"month\"||units===\"year\"){days=this._days+milliseconds/864e5;months=this._months+daysToMonths(days);return units===\"month\"?months:months/12}else{days=this._days+Math.round(monthsToDays(this._months));switch(units){case\"week\":return days/7+milliseconds/6048e5;case\"day\":return days+milliseconds/864e5;case\"hour\":return days*24+milliseconds/36e5;case\"minute\":return days*1440+milliseconds/6e4;case\"second\":return days*86400+milliseconds/1e3;case\"millisecond\":return Math.floor(days*864e5)+milliseconds;default:throw new Error(\"Unknown unit \"+units)}}}function valueOf$1(){if(!this.isValid()){return NaN}return this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs(\"ms\");var asSeconds=makeAs(\"s\");var asMinutes=makeAs(\"m\");var asHours=makeAs(\"h\");var asDays=makeAs(\"d\");var asWeeks=makeAs(\"w\");var asMonths=makeAs(\"M\");var asYears=makeAs(\"y\");function clone$1(){return createDuration(this)}function get$2(units){units=normalizeUnits(units);return this.isValid()?this[units+\"s\"]():NaN}function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN}}var milliseconds=makeGetter(\"milliseconds\");var seconds=makeGetter(\"seconds\");var minutes=makeGetter(\"minutes\");var hours=makeGetter(\"hours\");var days=makeGetter(\"days\");var months=makeGetter(\"months\");var years=makeGetter(\"years\");function weeks(){return absFloor(this.days()/7)}var round=Math.round;var thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};function substituteTimeAgo(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}function relativeTime$1(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs();var seconds=round(duration.as(\"s\"));var minutes=round(duration.as(\"m\"));var hours=round(duration.as(\"h\"));var days=round(duration.as(\"d\"));var months=round(duration.as(\"M\"));var years=round(duration.as(\"y\"));var a=seconds<=thresholds.ss&&[\"s\",seconds]||seconds<thresholds.s&&[\"ss\",seconds]||minutes<=1&&[\"m\"]||minutes<thresholds.m&&[\"mm\",minutes]||hours<=1&&[\"h\"]||hours<thresholds.h&&[\"hh\",hours]||days<=1&&[\"d\"]||days<thresholds.d&&[\"dd\",days]||months<=1&&[\"M\"]||months<thresholds.M&&[\"MM\",months]||years<=1&&[\"y\"]||[\"yy\",years];a[2]=withoutSuffix;a[3]=+posNegDuration>0;a[4]=locale;return substituteTimeAgo.apply(null,a)}function getSetRelativeTimeRounding(roundingFunction){if(roundingFunction===undefined){return round}if(typeof roundingFunction===\"function\"){round=roundingFunction;return true}return false}function getSetRelativeTimeThreshold(threshold,limit){if(thresholds[threshold]===undefined){return false}if(limit===undefined){return thresholds[threshold]}thresholds[threshold]=limit;if(threshold===\"s\"){thresholds.ss=limit-1}return true}function humanize(withSuffix){if(!this.isValid()){return this.localeData().invalidDate()}var locale=this.localeData();var output=relativeTime$1(this,!withSuffix,locale);if(withSuffix){output=locale.pastFuture(+this,output)}return locale.postformat(output)}var abs$1=Math.abs;function sign(x){return(x>0)-(x<0)||+x}function toISOString$1(){if(!this.isValid()){return this.localeData().invalidDate()}var seconds=abs$1(this._milliseconds)/1e3;var days=abs$1(this._days);var months=abs$1(this._months);var minutes,hours,years;minutes=absFloor(seconds/60);hours=absFloor(minutes/60);seconds%=60;minutes%=60;years=absFloor(months/12);months%=12;var Y=years;var M=months;var D=days;var h=hours;var m=minutes;var s=seconds?seconds.toFixed(3).replace(/\\.?0+$/,\"\"):\"\";var total=this.asSeconds();if(!total){return\"P0D\"}var totalSign=total<0?\"-\":\"\";var ymSign=sign(this._months)!==sign(total)?\"-\":\"\";var daysSign=sign(this._days)!==sign(total)?\"-\":\"\";var hmsSign=sign(this._milliseconds)!==sign(total)?\"-\":\"\";return totalSign+\"P\"+(Y?ymSign+Y+\"Y\":\"\")+(M?ymSign+M+\"M\":\"\")+(D?daysSign+D+\"D\":\"\")+(h||m||s?\"T\":\"\")+(h?hmsSign+h+\"H\":\"\")+(m?hmsSign+m+\"M\":\"\")+(s?hmsSign+s+\"S\":\"\")}var proto$2=Duration.prototype;proto$2.isValid=isValid$1;proto$2.abs=abs;proto$2.add=add$1;proto$2.subtract=subtract$1;proto$2.as=as;proto$2.asMilliseconds=asMilliseconds;proto$2.asSeconds=asSeconds;proto$2.asMinutes=asMinutes;proto$2.asHours=asHours;proto$2.asDays=asDays;proto$2.asWeeks=asWeeks;proto$2.asMonths=asMonths;proto$2.asYears=asYears;proto$2.valueOf=valueOf$1;proto$2._bubble=bubble;proto$2.clone=clone$1;proto$2.get=get$2;proto$2.milliseconds=milliseconds;proto$2.seconds=seconds;proto$2.minutes=minutes;proto$2.hours=hours;proto$2.days=days;proto$2.weeks=weeks;proto$2.months=months;proto$2.years=years;proto$2.humanize=humanize;proto$2.toISOString=toISOString$1;proto$2.toString=toISOString$1;proto$2.toJSON=toISOString$1;proto$2.locale=locale;proto$2.localeData=localeData;proto$2.toIsoString=deprecate(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",toISOString$1);proto$2.lang=lang;addFormatToken(\"X\",0,0,\"unix\");addFormatToken(\"x\",0,0,\"valueOf\");addRegexToken(\"x\",matchSigned);addRegexToken(\"X\",matchTimestamp);addParseToken(\"X\",function(input,array,config){config._d=new Date(parseFloat(input,10)*1e3)});addParseToken(\"x\",function(input,array,config){config._d=new Date(toInt(input))});hooks.version=\"2.19.1\";setHookCallback(createLocal);hooks.fn=proto;hooks.min=min;hooks.max=max;hooks.now=now;hooks.utc=createUTC;hooks.unix=createUnix;hooks.months=listMonths;hooks.isDate=isDate;hooks.locale=getSetGlobalLocale;hooks.invalid=createInvalid;hooks.duration=createDuration;hooks.isMoment=isMoment;hooks.weekdays=listWeekdays;hooks.parseZone=createInZone;hooks.localeData=getLocale;hooks.isDuration=isDuration;hooks.monthsShort=listMonthsShort;hooks.weekdaysMin=listWeekdaysMin;hooks.defineLocale=defineLocale;hooks.updateLocale=updateLocale;hooks.locales=listLocales;hooks.weekdaysShort=listWeekdaysShort;hooks.normalizeUnits=normalizeUnits;hooks.relativeTimeRounding=getSetRelativeTimeRounding;hooks.relativeTimeThreshold=getSetRelativeTimeThreshold;hooks.calendarFormat=getCalendarFormat;hooks.prototype=proto;return hooks})}).call(exports,__webpack_require__(155)(module))},function(module,exports){module.exports=function(module){if(!module.webpackPolyfill){module.deprecate=function(){};module.paths=[];if(!module.children)module.children=[];Object.defineProperty(module,\"loaded\",{enumerable:true,get:function(){return module.l}});Object.defineProperty(module,\"id\",{enumerable:true,get:function(){return module.i}});module.webpackPolyfill=1}return module}},function(module,exports){function webpackEmptyContext(req){throw new Error(\"Cannot find module '\"+req+\"'.\")}webpackEmptyContext.keys=function(){return[]};webpackEmptyContext.resolve=webpackEmptyContext;module.exports=webpackEmptyContext;webpackEmptyContext.id=156},function(module,exports,__webpack_require__){\"use strict\";(function(global){var _rng;var globalVar=typeof window!==\"undefined\"?window:typeof global!==\"undefined\"?global:null;if(globalVar&&globalVar.crypto&&crypto.getRandomValues){var _rnds8=new Uint8Array(16);_rng=function whatwgRNG(){crypto.getRandomValues(_rnds8);return _rnds8}}if(!_rng){var _rnds=new Array(16);_rng=function _rng(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;_rnds[i]=r>>>((i&3)<<3)&255}return _rnds}}var _byteToHex=[];var _hexToByte={};for(var i=0;i<256;i++){_byteToHex[i]=(i+256).toString(16).substr(1);_hexToByte[_byteToHex[i]]=i}function parse(s,buf,offset){var i=buf&&offset||0,ii=0;buf=buf||[];s.toLowerCase().replace(/[0-9a-f]{2}/g,function(oct){if(ii<16){buf[i+ii++]=_hexToByte[oct]}});while(ii<16){buf[i+ii++]=0}return buf}function unparse(buf,offset){var i=offset||0,bth=_byteToHex;return bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+\"-\"+bth[buf[i++]]+bth[buf[i++]]+\"-\"+bth[buf[i++]]+bth[buf[i++]]+\"-\"+bth[buf[i++]]+bth[buf[i++]]+\"-\"+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]}var _seedBytes=_rng();var _nodeId=[_seedBytes[0]|1,_seedBytes[1],_seedBytes[2],_seedBytes[3],_seedBytes[4],_seedBytes[5]];var _clockseq=(_seedBytes[6]<<8|_seedBytes[7])&16383;var _lastMSecs=0,_lastNSecs=0;function v1(options,buf,offset){var i=buf&&offset||0;var b=buf||[];options=options||{};var clockseq=options.clockseq!==undefined?options.clockseq:_clockseq;var msecs=options.msecs!==undefined?options.msecs:(new Date).getTime();var nsecs=options.nsecs!==undefined?options.nsecs:_lastNSecs+1;var dt=msecs-_lastMSecs+(nsecs-_lastNSecs)/1e4;if(dt<0&&options.clockseq===undefined){clockseq=clockseq+1&16383}if((dt<0||msecs>_lastMSecs)&&options.nsecs===undefined){nsecs=0}if(nsecs>=1e4){throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\")}_lastMSecs=msecs;_lastNSecs=nsecs;_clockseq=clockseq;msecs+=122192928e5;var tl=((msecs&268435455)*1e4+nsecs)%4294967296;b[i++]=tl>>>24&255;b[i++]=tl>>>16&255;b[i++]=tl>>>8&255;b[i++]=tl&255;var tmh=msecs/4294967296*1e4&268435455;b[i++]=tmh>>>8&255;b[i++]=tmh&255;b[i++]=tmh>>>24&15|16;b[i++]=tmh>>>16&255;b[i++]=clockseq>>>8|128;b[i++]=clockseq&255;var node=options.node||_nodeId;for(var n=0;n<6;n++){b[i+n]=node[n]}return buf?buf:unparse(b)}function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options==\"string\"){buf=options==\"binary\"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||_rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;ii++){buf[i+ii]=rnds[ii]}}return buf||unparse(rnds)}var uuid=v4;uuid.v1=v1;uuid.v4=v4;uuid.parse=parse;uuid.unparse=unparse;module.exports=uuid}).call(exports,__webpack_require__(158))},function(module,exports){var g;g=function(){return this}();try{g=g||Function(\"return this\")()||(1,eval)(\"this\")}catch(e){if(typeof window===\"object\")g=window}module.exports=g},function(module,exports,__webpack_require__){\"use strict\";exports.util=__webpack_require__(2);exports.DOMutil=__webpack_require__(14);exports.DataSet=__webpack_require__(11);exports.DataView=__webpack_require__(12);exports.Queue=__webpack_require__(43);exports.Graph3d=__webpack_require__(161);exports.graph3d={Camera:__webpack_require__(95),Filter:__webpack_require__(96),Point2d:__webpack_require__(91),Point3d:__webpack_require__(34),Slider:__webpack_require__(92),StepNumber:__webpack_require__(93)};exports.moment=__webpack_require__(9);exports.Hammer=__webpack_require__(10);exports.keycharm=__webpack_require__(35)},function(module,exports,__webpack_require__){var core=__webpack_require__(7);var $JSON=core.JSON||(core.JSON={stringify:JSON.stringify});module.exports=function stringify(it){return $JSON.stringify.apply($JSON,arguments)}},function(module,exports,__webpack_require__){\"use strict\";var _assign=__webpack_require__(90);var _assign2=_interopRequireDefault(_assign);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Emitter=__webpack_require__(44);var util=__webpack_require__(2);var Point3d=__webpack_require__(34);var Point2d=__webpack_require__(91);var Slider=__webpack_require__(92);var StepNumber=__webpack_require__(93);var Settings=__webpack_require__(94);var Validator=__webpack_require__(15)[\"default\"];var _require=__webpack_require__(15),printStyle=_require.printStyle;var _require2=__webpack_require__(172),allOptions=_require2.allOptions;var DataGroup=__webpack_require__(173);Graph3d.STYLE=Settings.STYLE;var autoByDefault=undefined;Graph3d.DEFAULTS={width:\"400px\",height:\"400px\",filterLabel:\"time\",legendLabel:\"value\",xLabel:\"x\",yLabel:\"y\",zLabel:\"z\",xValueLabel:function xValueLabel(v){return v},yValueLabel:function yValueLabel(v){return v},zValueLabel:function zValueLabel(v){return v},showXAxis:true,showYAxis:true,showZAxis:true,showGrid:true,showPerspective:true,showShadow:false,keepAspectRatio:true,verticalRatio:.5,dotSizeRatio:.02,dotSizeMinFraction:.5,dotSizeMaxFraction:2.5,showAnimationControls:autoByDefault,animationInterval:1e3,animationPreload:false,animationAutoStart:autoByDefault,axisColor:\"#4D4D4D\",gridColor:\"#D3D3D3\",xCenter:\"55%\",yCenter:\"50%\",style:Graph3d.STYLE.DOT,tooltip:false,tooltipStyle:{content:{padding:\"10px\",border:\"1px solid #4d4d4d\",color:\"#1a1a1a\",background:\"rgba(255,255,255,0.7)\",borderRadius:\"2px\",boxShadow:\"5px 5px 10px rgba(128,128,128,0.5)\"},line:{height:\"40px\",width:\"0\",borderLeft:\"1px solid #4d4d4d\"},dot:{height:\"0\",width:\"0\",border:\"5px solid #4d4d4d\",borderRadius:\"5px\"}},dataColor:{fill:\"#7DC1FF\",stroke:\"#3267D2\",strokeWidth:1},cameraPosition:{horizontal:1,vertical:.5,distance:1.7},showLegend:autoByDefault,backgroundColor:autoByDefault,xBarWidth:autoByDefault,yBarWidth:autoByDefault,valueMin:autoByDefault,valueMax:autoByDefault,xMin:autoByDefault,xMax:autoByDefault,xStep:autoByDefault,yMin:autoByDefault,yMax:autoByDefault,yStep:autoByDefault,zMin:autoByDefault,zMax:autoByDefault,zStep:autoByDefault};function Graph3d(container,data,options){if(!(this instanceof Graph3d)){throw new SyntaxError(\"Constructor must be called with the new operator\")}this.containerElement=container;this.dataGroup=new DataGroup;this.dataPoints=null;this.create();Settings.setDefaults(Graph3d.DEFAULTS,this);this.colX=undefined;this.colY=undefined;this.colZ=undefined;this.colValue=undefined;this.setOptions(options);this.setData(data)}Emitter(Graph3d.prototype);Graph3d.prototype._setScale=function(){this.scale=new Point3d(1/this.xRange.range(),1/this.yRange.range(),1/this.zRange.range());if(this.keepAspectRatio){if(this.scale.x<this.scale.y){this.scale.y=this.scale.x}else{this.scale.x=this.scale.y}}this.scale.z*=this.verticalRatio;if(this.valueRange!==undefined){this.scale.value=1/this.valueRange.range()}var xCenter=this.xRange.center()*this.scale.x;var yCenter=this.yRange.center()*this.scale.y;var zCenter=this.zRange.center()*this.scale.z;this.camera.setArmLocation(xCenter,yCenter,zCenter)};Graph3d.prototype._convert3Dto2D=function(point3d){var translation=this._convertPointToTranslation(point3d);return this._convertTranslationToScreen(translation)};Graph3d.prototype._convertPointToTranslation=function(point3d){var cameraLocation=this.camera.getCameraLocation(),cameraRotation=this.camera.getCameraRotation(),ax=point3d.x*this.scale.x,ay=point3d.y*this.scale.y,az=point3d.z*this.scale.z,cx=cameraLocation.x,cy=cameraLocation.y,cz=cameraLocation.z,sinTx=Math.sin(cameraRotation.x),cosTx=Math.cos(cameraRotation.x),sinTy=Math.sin(cameraRotation.y),cosTy=Math.cos(cameraRotation.y),sinTz=Math.sin(cameraRotation.z),cosTz=Math.cos(cameraRotation.z),dx=cosTy*(sinTz*(ay-cy)+cosTz*(ax-cx))-sinTy*(az-cz),dy=sinTx*(cosTy*(az-cz)+sinTy*(sinTz*(ay-cy)+cosTz*(ax-cx)))+cosTx*(cosTz*(ay-cy)-sinTz*(ax-cx)),dz=cosTx*(cosTy*(az-cz)+sinTy*(sinTz*(ay-cy)+cosTz*(ax-cx)))-sinTx*(cosTz*(ay-cy)-sinTz*(ax-cx));return new Point3d(dx,dy,dz)};Graph3d.prototype._convertTranslationToScreen=function(translation){var ex=this.eye.x,ey=this.eye.y,ez=this.eye.z,dx=translation.x,dy=translation.y,dz=translation.z;var bx;var by;if(this.showPerspective){bx=(dx-ex)*(ez/dz);by=(dy-ey)*(ez/dz)}else{bx=dx*-(ez/this.camera.getArmLength());by=dy*-(ez/this.camera.getArmLength())}return new Point2d(this.currentXCenter+bx*this.frame.canvas.clientWidth,this.currentYCenter-by*this.frame.canvas.clientWidth)};Graph3d.prototype._calcTranslations=function(points){for(var i=0;i<points.length;i++){var point=points[i];point.trans=this._convertPointToTranslation(point.point);point.screen=this._convertTranslationToScreen(point.trans);var transBottom=this._convertPointToTranslation(point.bottom);point.dist=this.showPerspective?transBottom.length():-transBottom.z}var sortDepth=function sortDepth(a,b){return b.dist-a.dist};points.sort(sortDepth)};Graph3d.prototype._initializeRanges=function(){var dg=this.dataGroup;this.xRange=dg.xRange;this.yRange=dg.yRange;this.zRange=dg.zRange;this.valueRange=dg.valueRange;this.xStep=dg.xStep;this.yStep=dg.yStep;this.zStep=dg.zStep;this.xBarWidth=dg.xBarWidth;this.yBarWidth=dg.yBarWidth;this.colX=dg.colX;this.colY=dg.colY;this.colZ=dg.colZ;this.colValue=dg.colValue;this._setScale()};Graph3d.prototype.getDataPoints=function(data){var dataPoints=[];for(var i=0;i<data.length;i++){var point=new Point3d;point.x=data[i][this.colX]||0;point.y=data[i][this.colY]||0;point.z=data[i][this.colZ]||0;point.data=data[i];if(this.colValue!==undefined){point.value=data[i][this.colValue]||0}var obj={};obj.point=point;obj.bottom=new Point3d(point.x,point.y,this.zRange.min);obj.trans=undefined;obj.screen=undefined;dataPoints.push(obj)}return dataPoints};Graph3d.prototype._getDataPoints=function(data){var x,y,i,obj;var dataPoints=[];if(this.style===Graph3d.STYLE.GRID||this.style===Graph3d.STYLE.SURFACE){var dataX=this.dataGroup.getDistinctValues(this.colX,data);var dataY=this.dataGroup.getDistinctValues(this.colY,data);dataPoints=this.getDataPoints(data);var dataMatrix=[];for(i=0;i<dataPoints.length;i++){obj=dataPoints[i];var xIndex=dataX.indexOf(obj.point.x);var yIndex=dataY.indexOf(obj.point.y);if(dataMatrix[xIndex]===undefined){dataMatrix[xIndex]=[]}dataMatrix[xIndex][yIndex]=obj}for(x=0;x<dataMatrix.length;x++){for(y=0;y<dataMatrix[x].length;y++){if(dataMatrix[x][y]){dataMatrix[x][y].pointRight=x<dataMatrix.length-1?dataMatrix[x+1][y]:undefined;dataMatrix[x][y].pointTop=y<dataMatrix[x].length-1?dataMatrix[x][y+1]:undefined;dataMatrix[x][y].pointCross=x<dataMatrix.length-1&&y<dataMatrix[x].length-1?dataMatrix[x+1][y+1]:undefined}}}}else{this._checkValueField(data);dataPoints=this.getDataPoints(data);if(this.style===Graph3d.STYLE.LINE){for(i=0;i<dataPoints.length;i++){if(i>0){dataPoints[i-1].pointNext=dataPoints[i]}}}}return dataPoints};Graph3d.prototype.create=function(){while(this.containerElement.hasChildNodes()){this.containerElement.removeChild(this.containerElement.firstChild)}this.frame=document.createElement(\"div\");this.frame.style.position=\"relative\";this.frame.style.overflow=\"hidden\";this.frame.canvas=document.createElement(\"canvas\");this.frame.canvas.style.position=\"relative\";this.frame.appendChild(this.frame.canvas);{var noCanvas=document.createElement(\"DIV\");noCanvas.style.color=\"red\";noCanvas.style.fontWeight=\"bold\";noCanvas.style.padding=\"10px\";noCanvas.innerHTML=\"Error: your browser does not support HTML canvas\";this.frame.canvas.appendChild(noCanvas)}this.frame.filter=document.createElement(\"div\");this.frame.filter.style.position=\"absolute\";this.frame.filter.style.bottom=\"0px\";this.frame.filter.style.left=\"0px\";this.frame.filter.style.width=\"100%\";this.frame.appendChild(this.frame.filter);var me=this;var onmousedown=function onmousedown(event){me._onMouseDown(event)};var ontouchstart=function ontouchstart(event){me._onTouchStart(event)};var onmousewheel=function onmousewheel(event){me._onWheel(event)};var ontooltip=function ontooltip(event){me._onTooltip(event)};var onclick=function onclick(event){me._onClick(event)};util.addEventListener(this.frame.canvas,\"mousedown\",onmousedown);util.addEventListener(this.frame.canvas,\"touchstart\",ontouchstart);util.addEventListener(this.frame.canvas,\"mousewheel\",onmousewheel);util.addEventListener(this.frame.canvas,\"mousemove\",ontooltip);util.addEventListener(this.frame.canvas,\"click\",onclick);this.containerElement.appendChild(this.frame)};Graph3d.prototype._setSize=function(width,height){this.frame.style.width=width;this.frame.style.height=height;this._resizeCanvas()};Graph3d.prototype._resizeCanvas=function(){this.frame.canvas.style.width=\"100%\";this.frame.canvas.style.height=\"100%\";this.frame.canvas.width=this.frame.canvas.clientWidth;this.frame.canvas.height=this.frame.canvas.clientHeight;this.frame.filter.style.width=this.frame.canvas.clientWidth-2*10+\"px\"};Graph3d.prototype.animationStart=function(){if(!this.animationAutoStart||!this.dataGroup.dataFilter)return;if(!this.frame.filter||!this.frame.filter.slider)throw new Error(\"No animation available\");this.frame.filter.slider.play()};Graph3d.prototype.animationStop=function(){if(!this.frame.filter||!this.frame.filter.slider)return;this.frame.filter.slider.stop()};Graph3d.prototype._resizeCenter=function(){if(this.xCenter.charAt(this.xCenter.length-1)===\"%\"){this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth}else{this.currentXCenter=parseFloat(this.xCenter)}if(this.yCenter.charAt(this.yCenter.length-1)===\"%\"){this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight)}else{this.currentYCenter=parseFloat(this.yCenter)}};Graph3d.prototype.getCameraPosition=function(){var pos=this.camera.getArmRotation();pos.distance=this.camera.getArmLength();return pos};Graph3d.prototype._readData=function(data){this.dataPoints=this.dataGroup.initializeData(this,data,this.style);this._initializeRanges();this._redrawFilter()};Graph3d.prototype.setData=function(data){if(data===undefined||data===null)return;this._readData(data);this.redraw();this.animationStart()};Graph3d.prototype.setOptions=function(options){if(options===undefined)return;var errorFound=Validator.validate(options,allOptions);if(errorFound===true){console.log(\"%cErrors have been found in the supplied options object.\",printStyle)}this.animationStop();Settings.setOptions(options,this);this.setPointDrawingMethod();this._setSize(this.width,this.height);this.setData(this.dataGroup.getDataTable());this.animationStart()};Graph3d.prototype.setPointDrawingMethod=function(){var method=undefined;switch(this.style){case Graph3d.STYLE.BAR:method=Graph3d.prototype._redrawBarGraphPoint;break;case Graph3d.STYLE.BARCOLOR:method=Graph3d.prototype._redrawBarColorGraphPoint;break;case Graph3d.STYLE.BARSIZE:method=Graph3d.prototype._redrawBarSizeGraphPoint;break;case Graph3d.STYLE.DOT:method=Graph3d.prototype._redrawDotGraphPoint;break;case Graph3d.STYLE.DOTLINE:method=Graph3d.prototype._redrawDotLineGraphPoint;break;case Graph3d.STYLE.DOTCOLOR:method=Graph3d.prototype._redrawDotColorGraphPoint;break;case Graph3d.STYLE.DOTSIZE:method=Graph3d.prototype._redrawDotSizeGraphPoint;break;case Graph3d.STYLE.SURFACE:method=Graph3d.prototype._redrawSurfaceGraphPoint;break;case Graph3d.STYLE.GRID:method=Graph3d.prototype._redrawGridGraphPoint;break;case Graph3d.STYLE.LINE:method=Graph3d.prototype._redrawLineGraphPoint;break;default:throw new Error(\"Can not determine point drawing method \"+\"for graph style '\"+this.style+\"'\")}this._pointDrawingMethod=method};Graph3d.prototype.redraw=function(){if(this.dataPoints===undefined){throw new Error(\"Graph data not initialized\")}this._resizeCanvas();this._resizeCenter();this._redrawSlider();this._redrawClear();this._redrawAxis();this._redrawDataGraph();this._redrawInfo();this._redrawLegend()};Graph3d.prototype._getContext=function(){var canvas=this.frame.canvas;var ctx=canvas.getContext(\"2d\");ctx.lineJoin=\"round\";ctx.lineCap=\"round\";return ctx};Graph3d.prototype._redrawClear=function(){var canvas=this.frame.canvas;var ctx=canvas.getContext(\"2d\");ctx.clearRect(0,0,canvas.width,canvas.height)};Graph3d.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio};Graph3d.prototype._getLegendWidth=function(){var width;if(this.style===Graph3d.STYLE.DOTSIZE){var dotSize=this._dotSize();width=dotSize*this.dotSizeMaxFraction}else if(this.style===Graph3d.STYLE.BARSIZE){width=this.xBarWidth}else{width=20}return width};Graph3d.prototype._redrawLegend=function(){if(this.showLegend!==true){return}if(this.style===Graph3d.STYLE.LINE||this.style===Graph3d.STYLE.BARSIZE){return}var isSizeLegend=this.style===Graph3d.STYLE.BARSIZE||this.style===Graph3d.STYLE.DOTSIZE;var isValueLegend=this.style===Graph3d.STYLE.DOTSIZE||this.style===Graph3d.STYLE.DOTCOLOR||this.style===Graph3d.STYLE.BARCOLOR;var height=Math.max(this.frame.clientHeight*.25,100);var top=this.margin;var width=this._getLegendWidth();var right=this.frame.clientWidth-this.margin;var left=right-width;var bottom=top+height;var ctx=this._getContext();ctx.lineWidth=1;ctx.font=\"14px arial\";if(isSizeLegend===false){var ymin=0;var ymax=height;var y;for(y=ymin;y<ymax;y++){var f=(y-ymin)/(ymax-ymin);var hue=f*240;var color=this._hsv2rgb(hue,1,1);ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(left,top+y);ctx.lineTo(right,top+y);ctx.stroke()}ctx.strokeStyle=this.axisColor;ctx.strokeRect(left,top,width,height)}else{var widthMin;if(this.style===Graph3d.STYLE.DOTSIZE){widthMin=width*(this.dotSizeMinFraction/this.dotSizeMaxFraction)}else if(this.style===Graph3d.STYLE.BARSIZE){}ctx.strokeStyle=this.axisColor;ctx.fillStyle=this.dataColor.fill;ctx.beginPath();ctx.moveTo(left,top);ctx.lineTo(right,top);ctx.lineTo(left+widthMin,bottom);ctx.lineTo(left,bottom);ctx.closePath();ctx.fill();ctx.stroke()}var gridLineLen=5;var legendMin=isValueLegend?this.valueRange.min:this.zRange.min;var legendMax=isValueLegend?this.valueRange.max:this.zRange.max;var step=new StepNumber(legendMin,legendMax,(legendMax-legendMin)/5,true);step.start(true);var from;var to;while(!step.end()){y=bottom-(step.getCurrent()-legendMin)/(legendMax-legendMin)*height;from=new Point2d(left-gridLineLen,y);to=new Point2d(left,y);this._line(ctx,from,to);ctx.textAlign=\"right\";ctx.textBaseline=\"middle\";ctx.fillStyle=this.axisColor;ctx.fillText(step.getCurrent(),left-2*gridLineLen,y);step.next()}ctx.textAlign=\"right\";ctx.textBaseline=\"top\";var label=this.legendLabel;ctx.fillText(label,right,bottom+this.margin)};Graph3d.prototype._redrawFilter=function(){var dataFilter=this.dataGroup.dataFilter;var filter=this.frame.filter;filter.innerHTML=\"\";if(!dataFilter){filter.slider=undefined;return}var options={visible:this.showAnimationControls};var slider=new Slider(filter,options);filter.slider=slider;filter.style.padding=\"10px\";slider.setValues(dataFilter.values);slider.setPlayInterval(this.animationInterval);var me=this;var onchange=function onchange(){var dataFilter=me.dataGroup.dataFilter;var index=slider.getIndex();dataFilter.selectValue(index);me.dataPoints=dataFilter._getDataPoints();me.redraw()};slider.setOnChangeCallback(onchange)};Graph3d.prototype._redrawSlider=function(){if(this.frame.filter.slider!==undefined){this.frame.filter.slider.redraw()}};Graph3d.prototype._redrawInfo=function(){var info=this.dataGroup.getInfo();if(info===undefined)return;var ctx=this._getContext();ctx.font=\"14px arial\";ctx.lineStyle=\"gray\";ctx.fillStyle=\"gray\";ctx.textAlign=\"left\";ctx.textBaseline=\"top\";var x=this.margin;var y=this.margin;ctx.fillText(info,x,y)};Graph3d.prototype._line=function(ctx,from,to,strokeStyle){if(strokeStyle!==undefined){ctx.strokeStyle=strokeStyle}ctx.beginPath();ctx.moveTo(from.x,from.y);ctx.lineTo(to.x,to.y);ctx.stroke()};Graph3d.prototype.drawAxisLabelX=function(ctx,point3d,text,armAngle,yMargin){if(yMargin===undefined){yMargin=0}var point2d=this._convert3Dto2D(point3d);if(Math.cos(armAngle*2)>0){ctx.textAlign=\"center\";ctx.textBaseline=\"top\";point2d.y+=yMargin}else if(Math.sin(armAngle*2)<0){ctx.textAlign=\"right\";ctx.textBaseline=\"middle\"}else{ctx.textAlign=\"left\";ctx.textBaseline=\"middle\"}ctx.fillStyle=this.axisColor;ctx.fillText(text,point2d.x,point2d.y)};Graph3d.prototype.drawAxisLabelY=function(ctx,point3d,text,armAngle,yMargin){if(yMargin===undefined){yMargin=0}var point2d=this._convert3Dto2D(point3d);if(Math.cos(armAngle*2)<0){ctx.textAlign=\"center\";ctx.textBaseline=\"top\";point2d.y+=yMargin}else if(Math.sin(armAngle*2)>0){ctx.textAlign=\"right\";ctx.textBaseline=\"middle\"}else{ctx.textAlign=\"left\";ctx.textBaseline=\"middle\"}ctx.fillStyle=this.axisColor;ctx.fillText(text,point2d.x,point2d.y)};Graph3d.prototype.drawAxisLabelZ=function(ctx,point3d,text,offset){if(offset===undefined){offset=0}var point2d=this._convert3Dto2D(point3d);ctx.textAlign=\"right\";ctx.textBaseline=\"middle\";ctx.fillStyle=this.axisColor;ctx.fillText(text,point2d.x-offset,point2d.y)};Graph3d.prototype._line3d=function(ctx,from,to,strokeStyle){var from2d=this._convert3Dto2D(from);var to2d=this._convert3Dto2D(to);this._line(ctx,from2d,to2d,strokeStyle)};Graph3d.prototype._redrawAxis=function(){var ctx=this._getContext(),from,to,step,prettyStep,text,xText,yText,zText,offset,xOffset,yOffset;ctx.font=24/this.camera.getArmLength()+\"px arial\";var gridLenX=.025/this.scale.x;var gridLenY=.025/this.scale.y;var textMargin=5/this.camera.getArmLength();var armAngle=this.camera.getArmRotation().horizontal;var armVector=new Point2d(Math.cos(armAngle),Math.sin(armAngle));var xRange=this.xRange;var yRange=this.yRange;var zRange=this.zRange;var point3d;ctx.lineWidth=1;prettyStep=this.defaultXStep===undefined;step=new StepNumber(xRange.min,xRange.max,this.xStep,prettyStep);step.start(true);while(!step.end()){var x=step.getCurrent();if(this.showGrid){from=new Point3d(x,yRange.min,zRange.min);to=new Point3d(x,yRange.max,zRange.min);this._line3d(ctx,from,to,this.gridColor)}else if(this.showXAxis){from=new Point3d(x,yRange.min,zRange.min);to=new Point3d(x,yRange.min+gridLenX,zRange.min);this._line3d(ctx,from,to,this.axisColor);from=new Point3d(x,yRange.max,zRange.min);to=new Point3d(x,yRange.max-gridLenX,zRange.min);this._line3d(ctx,from,to,this.axisColor)}if(this.showXAxis){yText=armVector.x>0?yRange.min:yRange.max;point3d=new Point3d(x,yText,zRange.min);var msg=\" \"+this.xValueLabel(x)+\" \";this.drawAxisLabelX(ctx,point3d,msg,armAngle,textMargin)}step.next()}ctx.lineWidth=1;prettyStep=this.defaultYStep===undefined;step=new StepNumber(yRange.min,yRange.max,this.yStep,prettyStep);step.start(true);while(!step.end()){var y=step.getCurrent();if(this.showGrid){from=new Point3d(xRange.min,y,zRange.min);to=new Point3d(xRange.max,y,zRange.min);this._line3d(ctx,from,to,this.gridColor)}else if(this.showYAxis){from=new Point3d(xRange.min,y,zRange.min);to=new Point3d(xRange.min+gridLenY,y,zRange.min);this._line3d(ctx,from,to,this.axisColor);from=new Point3d(xRange.max,y,zRange.min);to=new Point3d(xRange.max-gridLenY,y,zRange.min);this._line3d(ctx,from,to,this.axisColor)}if(this.showYAxis){xText=armVector.y>0?xRange.min:xRange.max;point3d=new Point3d(xText,y,zRange.min);var _msg=\" \"+this.yValueLabel(y)+\" \";this.drawAxisLabelY(ctx,point3d,_msg,armAngle,textMargin)}step.next()}if(this.showZAxis){ctx.lineWidth=1;prettyStep=this.defaultZStep===undefined;step=new StepNumber(zRange.min,zRange.max,this.zStep,prettyStep);step.start(true);xText=armVector.x>0?xRange.min:xRange.max;yText=armVector.y<0?yRange.min:yRange.max;while(!step.end()){var z=step.getCurrent();var from3d=new Point3d(xText,yText,z);var from2d=this._convert3Dto2D(from3d);to=new Point2d(from2d.x-textMargin,from2d.y);this._line(ctx,from2d,to,this.axisColor);var _msg2=this.zValueLabel(z)+\" \";this.drawAxisLabelZ(ctx,from3d,_msg2,5);step.next()}ctx.lineWidth=1;from=new Point3d(xText,yText,zRange.min);to=new Point3d(xText,yText,zRange.max);this._line3d(ctx,from,to,this.axisColor)}if(this.showXAxis){var xMin2d;var xMax2d;ctx.lineWidth=1;xMin2d=new Point3d(xRange.min,yRange.min,zRange.min);xMax2d=new Point3d(xRange.max,yRange.min,zRange.min);this._line3d(ctx,xMin2d,xMax2d,this.axisColor);xMin2d=new Point3d(xRange.min,yRange.max,zRange.min);xMax2d=new Point3d(xRange.max,yRange.max,zRange.min);this._line3d(ctx,xMin2d,xMax2d,this.axisColor)}if(this.showYAxis){ctx.lineWidth=1;from=new Point3d(xRange.min,yRange.min,zRange.min);to=new Point3d(xRange.min,yRange.max,zRange.min);this._line3d(ctx,from,to,this.axisColor);from=new Point3d(xRange.max,yRange.min,zRange.min);to=new Point3d(xRange.max,yRange.max,zRange.min);this._line3d(ctx,from,to,this.axisColor)}var xLabel=this.xLabel;if(xLabel.length>0&&this.showXAxis){yOffset=.1/this.scale.y;xText=(xRange.max+3*xRange.min)/4;yText=armVector.x>0?yRange.min-yOffset:yRange.max+yOffset\n;text=new Point3d(xText,yText,zRange.min);this.drawAxisLabelX(ctx,text,xLabel,armAngle)}var yLabel=this.yLabel;if(yLabel.length>0&&this.showYAxis){xOffset=.1/this.scale.x;xText=armVector.y>0?xRange.min-xOffset:xRange.max+xOffset;yText=(yRange.max+3*yRange.min)/4;text=new Point3d(xText,yText,zRange.min);this.drawAxisLabelY(ctx,text,yLabel,armAngle)}var zLabel=this.zLabel;if(zLabel.length>0&&this.showZAxis){offset=30;xText=armVector.x>0?xRange.min:xRange.max;yText=armVector.y<0?yRange.min:yRange.max;zText=(zRange.max+3*zRange.min)/4;text=new Point3d(xText,yText,zText);this.drawAxisLabelZ(ctx,text,zLabel,offset)}};Graph3d.prototype._hsv2rgb=function(H,S,V){var R,G,B,C,Hi,X;C=V*S;Hi=Math.floor(H/60);X=C*(1-Math.abs(H/60%2-1));switch(Hi){case 0:R=C;G=X;B=0;break;case 1:R=X;G=C;B=0;break;case 2:R=0;G=C;B=X;break;case 3:R=0;G=X;B=C;break;case 4:R=X;G=0;B=C;break;case 5:R=C;G=0;B=X;break;default:R=0;G=0;B=0;break}return\"RGB(\"+parseInt(R*255)+\",\"+parseInt(G*255)+\",\"+parseInt(B*255)+\")\"};Graph3d.prototype._getStrokeWidth=function(point){if(point!==undefined){if(this.showPerspective){return 1/-point.trans.z*this.dataColor.strokeWidth}else{return-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth}}return this.dataColor.strokeWidth};Graph3d.prototype._redrawBar=function(ctx,point,xWidth,yWidth,color,borderColor){var surface;var me=this;var point3d=point.point;var zMin=this.zRange.min;var top=[{point:new Point3d(point3d.x-xWidth,point3d.y-yWidth,point3d.z)},{point:new Point3d(point3d.x+xWidth,point3d.y-yWidth,point3d.z)},{point:new Point3d(point3d.x+xWidth,point3d.y+yWidth,point3d.z)},{point:new Point3d(point3d.x-xWidth,point3d.y+yWidth,point3d.z)}];var bottom=[{point:new Point3d(point3d.x-xWidth,point3d.y-yWidth,zMin)},{point:new Point3d(point3d.x+xWidth,point3d.y-yWidth,zMin)},{point:new Point3d(point3d.x+xWidth,point3d.y+yWidth,zMin)},{point:new Point3d(point3d.x-xWidth,point3d.y+yWidth,zMin)}];top.forEach(function(obj){obj.screen=me._convert3Dto2D(obj.point)});bottom.forEach(function(obj){obj.screen=me._convert3Dto2D(obj.point)});var surfaces=[{corners:top,center:Point3d.avg(bottom[0].point,bottom[2].point)},{corners:[top[0],top[1],bottom[1],bottom[0]],center:Point3d.avg(bottom[1].point,bottom[0].point)},{corners:[top[1],top[2],bottom[2],bottom[1]],center:Point3d.avg(bottom[2].point,bottom[1].point)},{corners:[top[2],top[3],bottom[3],bottom[2]],center:Point3d.avg(bottom[3].point,bottom[2].point)},{corners:[top[3],top[0],bottom[0],bottom[3]],center:Point3d.avg(bottom[0].point,bottom[3].point)}];point.surfaces=surfaces;for(var j=0;j<surfaces.length;j++){surface=surfaces[j];var transCenter=this._convertPointToTranslation(surface.center);surface.dist=this.showPerspective?transCenter.length():-transCenter.z}surfaces.sort(function(a,b){var diff=b.dist-a.dist;if(diff)return diff;if(a.corners===top)return 1;if(b.corners===top)return-1;return 0});ctx.lineWidth=this._getStrokeWidth(point);ctx.strokeStyle=borderColor;ctx.fillStyle=color;for(var _j=2;_j<surfaces.length;_j++){surface=surfaces[_j];this._polygon(ctx,surface.corners)}};Graph3d.prototype._polygon=function(ctx,points,fillStyle,strokeStyle){if(points.length<2){return}if(fillStyle!==undefined){ctx.fillStyle=fillStyle}if(strokeStyle!==undefined){ctx.strokeStyle=strokeStyle}ctx.beginPath();ctx.moveTo(points[0].screen.x,points[0].screen.y);for(var i=1;i<points.length;++i){var point=points[i];ctx.lineTo(point.screen.x,point.screen.y)}ctx.closePath();ctx.fill();ctx.stroke()};Graph3d.prototype._drawCircle=function(ctx,point,color,borderColor,size){var radius=this._calcRadius(point,size);ctx.lineWidth=this._getStrokeWidth(point);ctx.strokeStyle=borderColor;ctx.fillStyle=color;ctx.beginPath();ctx.arc(point.screen.x,point.screen.y,radius,0,Math.PI*2,true);ctx.fill();ctx.stroke()};Graph3d.prototype._getColorsRegular=function(point){var hue=(1-(point.point.z-this.zRange.min)*this.scale.z/this.verticalRatio)*240;var color=this._hsv2rgb(hue,1,1);var borderColor=this._hsv2rgb(hue,1,.8);return{fill:color,border:borderColor}};Graph3d.prototype._getColorsColor=function(point){var color,borderColor;if(typeof point.point.value===\"string\"){color=point.point.value;borderColor=point.point.value}else{var hue=(1-(point.point.value-this.valueRange.min)*this.scale.value)*240;color=this._hsv2rgb(hue,1,1);borderColor=this._hsv2rgb(hue,1,.8)}return{fill:color,border:borderColor}};Graph3d.prototype._getColorsSize=function(){return{fill:this.dataColor.fill,border:this.dataColor.stroke}};Graph3d.prototype._calcRadius=function(point,size){if(size===undefined){size=this._dotSize()}var radius;if(this.showPerspective){radius=size/-point.trans.z}else{radius=size*-(this.eye.z/this.camera.getArmLength())}if(radius<0){radius=0}return radius};Graph3d.prototype._redrawBarGraphPoint=function(ctx,point){var xWidth=this.xBarWidth/2;var yWidth=this.yBarWidth/2;var colors=this._getColorsRegular(point);this._redrawBar(ctx,point,xWidth,yWidth,colors.fill,colors.border)};Graph3d.prototype._redrawBarColorGraphPoint=function(ctx,point){var xWidth=this.xBarWidth/2;var yWidth=this.yBarWidth/2;var colors=this._getColorsColor(point);this._redrawBar(ctx,point,xWidth,yWidth,colors.fill,colors.border)};Graph3d.prototype._redrawBarSizeGraphPoint=function(ctx,point){var fraction=(point.point.value-this.valueRange.min)/this.valueRange.range();var xWidth=this.xBarWidth/2*(fraction*.8+.2);var yWidth=this.yBarWidth/2*(fraction*.8+.2);var colors=this._getColorsSize();this._redrawBar(ctx,point,xWidth,yWidth,colors.fill,colors.border)};Graph3d.prototype._redrawDotGraphPoint=function(ctx,point){var colors=this._getColorsRegular(point);this._drawCircle(ctx,point,colors.fill,colors.border)};Graph3d.prototype._redrawDotLineGraphPoint=function(ctx,point){var from=this._convert3Dto2D(point.bottom);ctx.lineWidth=1;this._line(ctx,from,point.screen,this.gridColor);this._redrawDotGraphPoint(ctx,point)};Graph3d.prototype._redrawDotColorGraphPoint=function(ctx,point){var colors=this._getColorsColor(point);this._drawCircle(ctx,point,colors.fill,colors.border)};Graph3d.prototype._redrawDotSizeGraphPoint=function(ctx,point){var dotSize=this._dotSize();var fraction=(point.point.value-this.valueRange.min)/this.valueRange.range();var sizeMin=dotSize*this.dotSizeMinFraction;var sizeRange=dotSize*this.dotSizeMaxFraction-sizeMin;var size=sizeMin+sizeRange*fraction;var colors=this._getColorsSize();this._drawCircle(ctx,point,colors.fill,colors.border,size)};Graph3d.prototype._redrawSurfaceGraphPoint=function(ctx,point){var right=point.pointRight;var top=point.pointTop;var cross=point.pointCross;if(point===undefined||right===undefined||top===undefined||cross===undefined){return}var topSideVisible=true;var fillStyle;var strokeStyle;if(this.showGrayBottom||this.showShadow){var aDiff=Point3d.subtract(cross.trans,point.trans);var bDiff=Point3d.subtract(top.trans,right.trans);var crossproduct=Point3d.crossProduct(aDiff,bDiff);var len=crossproduct.length();topSideVisible=crossproduct.z>0}if(topSideVisible){var zAvg=(point.point.z+right.point.z+top.point.z+cross.point.z)/4;var h=(1-(zAvg-this.zRange.min)*this.scale.z/this.verticalRatio)*240;var s=1;var v;if(this.showShadow){v=Math.min(1+crossproduct.x/len/2,1);fillStyle=this._hsv2rgb(h,s,v);strokeStyle=fillStyle}else{v=1;fillStyle=this._hsv2rgb(h,s,v);strokeStyle=this.axisColor}}else{fillStyle=\"gray\";strokeStyle=this.axisColor}ctx.lineWidth=this._getStrokeWidth(point);var points=[point,right,cross,top];this._polygon(ctx,points,fillStyle,strokeStyle)};Graph3d.prototype._drawGridLine=function(ctx,from,to){if(from===undefined||to===undefined){return}var zAvg=(from.point.z+to.point.z)/2;var h=(1-(zAvg-this.zRange.min)*this.scale.z/this.verticalRatio)*240;ctx.lineWidth=this._getStrokeWidth(from)*2;ctx.strokeStyle=this._hsv2rgb(h,1,1);this._line(ctx,from.screen,to.screen)};Graph3d.prototype._redrawGridGraphPoint=function(ctx,point){this._drawGridLine(ctx,point,point.pointRight);this._drawGridLine(ctx,point,point.pointTop)};Graph3d.prototype._redrawLineGraphPoint=function(ctx,point){if(point.pointNext===undefined){return}ctx.lineWidth=this._getStrokeWidth(point);ctx.strokeStyle=this.dataColor.stroke;this._line(ctx,point.screen,point.pointNext.screen)};Graph3d.prototype._redrawDataGraph=function(){var ctx=this._getContext();var i;if(this.dataPoints===undefined||this.dataPoints.length<=0)return;this._calcTranslations(this.dataPoints);for(i=0;i<this.dataPoints.length;i++){var point=this.dataPoints[i];this._pointDrawingMethod.call(this,ctx,point)}};Graph3d.prototype._storeMousePosition=function(event){this.startMouseX=getMouseX(event);this.startMouseY=getMouseY(event);this._startCameraOffset=this.camera.getOffset()};Graph3d.prototype._onMouseDown=function(event){event=event||window.event;if(this.leftButtonDown){this._onMouseUp(event)}this.leftButtonDown=event.which?event.which===1:event.button===1;if(!this.leftButtonDown&&!this.touchDown)return;this._storeMousePosition(event);this.startStart=new Date(this.start);this.startEnd=new Date(this.end);this.startArmRotation=this.camera.getArmRotation();this.frame.style.cursor=\"move\";var me=this;this.onmousemove=function(event){me._onMouseMove(event)};this.onmouseup=function(event){me._onMouseUp(event)};util.addEventListener(document,\"mousemove\",me.onmousemove);util.addEventListener(document,\"mouseup\",me.onmouseup);util.preventDefault(event)};Graph3d.prototype._onMouseMove=function(event){this.moving=true;event=event||window.event;var diffX=parseFloat(getMouseX(event))-this.startMouseX;var diffY=parseFloat(getMouseY(event))-this.startMouseY;if(event&&event.ctrlKey===true){var scaleX=this.frame.clientWidth*.5;var scaleY=this.frame.clientHeight*.5;var offXNew=(this._startCameraOffset.x||0)-diffX/scaleX*this.camera.armLength*.8;var offYNew=(this._startCameraOffset.y||0)+diffY/scaleY*this.camera.armLength*.8;this.camera.setOffset(offXNew,offYNew);this._storeMousePosition(event)}else{var horizontalNew=this.startArmRotation.horizontal+diffX/200;var verticalNew=this.startArmRotation.vertical+diffY/200;var snapAngle=4;var snapValue=Math.sin(snapAngle/360*2*Math.PI);if(Math.abs(Math.sin(horizontalNew))<snapValue){horizontalNew=Math.round(horizontalNew/Math.PI)*Math.PI-.001}if(Math.abs(Math.cos(horizontalNew))<snapValue){horizontalNew=(Math.round(horizontalNew/Math.PI-.5)+.5)*Math.PI-.001}if(Math.abs(Math.sin(verticalNew))<snapValue){verticalNew=Math.round(verticalNew/Math.PI)*Math.PI}if(Math.abs(Math.cos(verticalNew))<snapValue){verticalNew=(Math.round(verticalNew/Math.PI-.5)+.5)*Math.PI}this.camera.setArmRotation(horizontalNew,verticalNew)}this.redraw();var parameters=this.getCameraPosition();this.emit(\"cameraPositionChange\",parameters);util.preventDefault(event)};Graph3d.prototype._onMouseUp=function(event){this.frame.style.cursor=\"auto\";this.leftButtonDown=false;util.removeEventListener(document,\"mousemove\",this.onmousemove);util.removeEventListener(document,\"mouseup\",this.onmouseup);util.preventDefault(event)};Graph3d.prototype._onClick=function(event){if(!this.onclick_callback)return;if(!this.moving){var boundingRect=this.frame.getBoundingClientRect();var mouseX=getMouseX(event)-boundingRect.left;var mouseY=getMouseY(event)-boundingRect.top;var dataPoint=this._dataPointFromXY(mouseX,mouseY);if(dataPoint)this.onclick_callback(dataPoint.point.data)}else{this.moving=false}util.preventDefault(event)};Graph3d.prototype._onTooltip=function(event){var delay=300;var boundingRect=this.frame.getBoundingClientRect();var mouseX=getMouseX(event)-boundingRect.left;var mouseY=getMouseY(event)-boundingRect.top;if(!this.showTooltip){return}if(this.tooltipTimeout){clearTimeout(this.tooltipTimeout)}if(this.leftButtonDown){this._hideTooltip();return}if(this.tooltip&&this.tooltip.dataPoint){var dataPoint=this._dataPointFromXY(mouseX,mouseY);if(dataPoint!==this.tooltip.dataPoint){if(dataPoint){this._showTooltip(dataPoint)}else{this._hideTooltip()}}}else{var me=this;this.tooltipTimeout=setTimeout(function(){me.tooltipTimeout=null;var dataPoint=me._dataPointFromXY(mouseX,mouseY);if(dataPoint){me._showTooltip(dataPoint)}},delay)}};Graph3d.prototype._onTouchStart=function(event){this.touchDown=true;var me=this;this.ontouchmove=function(event){me._onTouchMove(event)};this.ontouchend=function(event){me._onTouchEnd(event)};util.addEventListener(document,\"touchmove\",me.ontouchmove);util.addEventListener(document,\"touchend\",me.ontouchend);this._onMouseDown(event)};Graph3d.prototype._onTouchMove=function(event){this._onMouseMove(event)};Graph3d.prototype._onTouchEnd=function(event){this.touchDown=false;util.removeEventListener(document,\"touchmove\",this.ontouchmove);util.removeEventListener(document,\"touchend\",this.ontouchend);this._onMouseUp(event)};Graph3d.prototype._onWheel=function(event){if(!event)event=window.event;var delta=0;if(event.wheelDelta){delta=event.wheelDelta/120}else if(event.detail){delta=-event.detail/3}if(delta){var oldLength=this.camera.getArmLength();var newLength=oldLength*(1-delta/10);this.camera.setArmLength(newLength);this.redraw();this._hideTooltip()}var parameters=this.getCameraPosition();this.emit(\"cameraPositionChange\",parameters);util.preventDefault(event)};Graph3d.prototype._insideTriangle=function(point,triangle){var a=triangle[0],b=triangle[1],c=triangle[2];function sign(x){return x>0?1:x<0?-1:0}var as=sign((b.x-a.x)*(point.y-a.y)-(b.y-a.y)*(point.x-a.x));var bs=sign((c.x-b.x)*(point.y-b.y)-(c.y-b.y)*(point.x-b.x));var cs=sign((a.x-c.x)*(point.y-c.y)-(a.y-c.y)*(point.x-c.x));return(as==0||bs==0||as==bs)&&(bs==0||cs==0||bs==cs)&&(as==0||cs==0||as==cs)};Graph3d.prototype._dataPointFromXY=function(x,y){var i,distMax=100,dataPoint=null,closestDataPoint=null,closestDist=null,center=new Point2d(x,y);if(this.style===Graph3d.STYLE.BAR||this.style===Graph3d.STYLE.BARCOLOR||this.style===Graph3d.STYLE.BARSIZE){for(i=this.dataPoints.length-1;i>=0;i--){dataPoint=this.dataPoints[i];var surfaces=dataPoint.surfaces;if(surfaces){for(var s=surfaces.length-1;s>=0;s--){var surface=surfaces[s];var corners=surface.corners;var triangle1=[corners[0].screen,corners[1].screen,corners[2].screen];var triangle2=[corners[2].screen,corners[3].screen,corners[0].screen];if(this._insideTriangle(center,triangle1)||this._insideTriangle(center,triangle2)){return dataPoint}}}}}else{for(i=0;i<this.dataPoints.length;i++){dataPoint=this.dataPoints[i];var point=dataPoint.screen;if(point){var distX=Math.abs(x-point.x);var distY=Math.abs(y-point.y);var dist=Math.sqrt(distX*distX+distY*distY);if((closestDist===null||dist<closestDist)&&dist<distMax){closestDist=dist;closestDataPoint=dataPoint}}}}return closestDataPoint};Graph3d.prototype.hasBars=function(style){return style==Graph3d.STYLE.BAR||style==Graph3d.STYLE.BARCOLOR||style==Graph3d.STYLE.BARSIZE};Graph3d.prototype._showTooltip=function(dataPoint){var content,line,dot;if(!this.tooltip){content=document.createElement(\"div\");(0,_assign2[\"default\"])(content.style,{},this.tooltipStyle.content);content.style.position=\"absolute\";line=document.createElement(\"div\");(0,_assign2[\"default\"])(line.style,{},this.tooltipStyle.line);line.style.position=\"absolute\";dot=document.createElement(\"div\");(0,_assign2[\"default\"])(dot.style,{},this.tooltipStyle.dot);dot.style.position=\"absolute\";this.tooltip={dataPoint:null,dom:{content:content,line:line,dot:dot}}}else{content=this.tooltip.dom.content;line=this.tooltip.dom.line;dot=this.tooltip.dom.dot}this._hideTooltip();this.tooltip.dataPoint=dataPoint;if(typeof this.showTooltip===\"function\"){content.innerHTML=this.showTooltip(dataPoint.point)}else{content.innerHTML=\"<table>\"+\"<tr><td>\"+this.xLabel+\":</td><td>\"+dataPoint.point.x+\"</td></tr>\"+\"<tr><td>\"+this.yLabel+\":</td><td>\"+dataPoint.point.y+\"</td></tr>\"+\"<tr><td>\"+this.zLabel+\":</td><td>\"+dataPoint.point.z+\"</td></tr>\"+\"</table>\"}content.style.left=\"0\";content.style.top=\"0\";this.frame.appendChild(content);this.frame.appendChild(line);this.frame.appendChild(dot);var contentWidth=content.offsetWidth;var contentHeight=content.offsetHeight;var lineHeight=line.offsetHeight;var dotWidth=dot.offsetWidth;var dotHeight=dot.offsetHeight;var left=dataPoint.screen.x-contentWidth/2;left=Math.min(Math.max(left,10),this.frame.clientWidth-10-contentWidth);line.style.left=dataPoint.screen.x+\"px\";line.style.top=dataPoint.screen.y-lineHeight+\"px\";content.style.left=left+\"px\";content.style.top=dataPoint.screen.y-lineHeight-contentHeight+\"px\";dot.style.left=dataPoint.screen.x-dotWidth/2+\"px\";dot.style.top=dataPoint.screen.y-dotHeight/2+\"px\"};Graph3d.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var prop in this.tooltip.dom){if(this.tooltip.dom.hasOwnProperty(prop)){var elem=this.tooltip.dom[prop];if(elem&&elem.parentNode){elem.parentNode.removeChild(elem)}}}}};function getMouseX(event){if(\"clientX\"in event)return event.clientX;return event.targetTouches[0]&&event.targetTouches[0].clientX||0}function getMouseY(event){if(\"clientY\"in event)return event.clientY;return event.targetTouches[0]&&event.targetTouches[0].clientY||0}Graph3d.prototype.setCameraPosition=function(pos){Settings.setCameraPosition(pos,this);this.redraw()};Graph3d.prototype.setSize=function(width,height){this._setSize(width,height);this.redraw()};module.exports=Graph3d},function(module,exports,__webpack_require__){__webpack_require__(163);module.exports=__webpack_require__(7).Object.assign},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S+$export.F,\"Object\",{assign:__webpack_require__(164)})},function(module,exports,__webpack_require__){\"use strict\";var getKeys=__webpack_require__(33);var gOPS=__webpack_require__(63);var pIE=__webpack_require__(42);var toObject=__webpack_require__(41);var IObject=__webpack_require__(78);var $assign=Object.assign;module.exports=!$assign||__webpack_require__(28)(function(){var A={};var B={};var S=Symbol();var K=\"abcdefghijklmnopqrst\";A[S]=7;K.split(\"\").forEach(function(k){B[k]=k});return $assign({},A)[S]!=7||Object.keys($assign({},B)).join(\"\")!=K})?function assign(target,source){var T=toObject(target);var aLen=arguments.length;var index=1;var getSymbols=gOPS.f;var isEnum=pIE.f;while(aLen>index){var S=IObject(arguments[index++]);var keys=getSymbols?getKeys(S).concat(getSymbols(S)):getKeys(S);var length=keys.length;var j=0;var key;while(length>j)if(isEnum.call(S,key=keys[j++]))T[key]=S[key]}return T}:$assign},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(166),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(167);module.exports=__webpack_require__(7).Math.sign},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S,\"Math\",{sign:__webpack_require__(168)})},function(module,exports){module.exports=Math.sign||function sign(x){return(x=+x)==0||x!=x?x:x<0?-1:1}},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(170),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(171);var $Object=__webpack_require__(7).Object;module.exports=function defineProperty(it,key,desc){return $Object.defineProperty(it,key,desc)}},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S+$export.F*!__webpack_require__(21),\"Object\",{defineProperty:__webpack_require__(20).f})},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var string=\"string\";var bool=\"boolean\";var number=\"number\";var object=\"object\";var colorOptions={fill:{string:string},stroke:{string:string},strokeWidth:{number:number},__type__:{string:string,object:object,undefined:\"undefined\"}};var allOptions={animationAutoStart:{boolean:bool,undefined:\"undefined\"},animationInterval:{number:number},animationPreload:{boolean:bool},axisColor:{string:string},backgroundColor:colorOptions,xBarWidth:{number:number,undefined:\"undefined\"},yBarWidth:{number:number,undefined:\"undefined\"},cameraPosition:{distance:{number:number},horizontal:{number:number},vertical:{number:number},__type__:{object:object}},xCenter:{string:string},yCenter:{string:string},dataColor:colorOptions,dotSizeMinFraction:{number:number},dotSizeMaxFraction:{number:number},dotSizeRatio:{number:number},filterLabel:{string:string},gridColor:{string:string},onclick:{function:\"function\"},keepAspectRatio:{boolean:bool},xLabel:{string:string},yLabel:{string:string},zLabel:{string:string},legendLabel:{string:string},xMin:{number:number,undefined:\"undefined\"},yMin:{number:number,undefined:\"undefined\"},zMin:{number:number,undefined:\"undefined\"},xMax:{number:number,undefined:\"undefined\"},yMax:{number:number,undefined:\"undefined\"},zMax:{number:number,undefined:\"undefined\"},showAnimationControls:{boolean:bool,undefined:\"undefined\"},showGrid:{boolean:bool},showLegend:{boolean:bool,undefined:\"undefined\"},showPerspective:{boolean:bool},showShadow:{boolean:bool},showXAxis:{boolean:bool},showYAxis:{boolean:bool},showZAxis:{boolean:bool},xStep:{number:number,undefined:\"undefined\"},yStep:{number:number,undefined:\"undefined\"},zStep:{number:number,undefined:\"undefined\"},style:{number:number,string:[\"bar\",\"bar-color\",\"bar-size\",\"dot\",\"dot-line\",\"dot-color\",\"dot-size\",\"line\",\"grid\",\"surface\"]},tooltip:{boolean:bool,function:\"function\"},tooltipStyle:{content:{color:{string:string},background:{string:string},border:{string:string},borderRadius:{string:string},boxShadow:{string:string},padding:{string:string},__type__:{object:object}},line:{borderLeft:{string:string},height:{string:string},width:{string:string},__type__:{object:object}},dot:{border:{string:string},borderRadius:{string:string},height:{string:string},width:{string:string},__type__:{object:object}},__type__:{object:object}},xValueLabel:{function:\"function\"},yValueLabel:{function:\"function\"},zValueLabel:{function:\"function\"},valueMax:{number:number,undefined:\"undefined\"},valueMin:{number:number,undefined:\"undefined\"},verticalRatio:{number:number},height:{string:string},width:{string:string},__type__:{object:object}};exports.allOptions=allOptions},function(module,exports,__webpack_require__){\"use strict\";var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Range=__webpack_require__(174);var Filter=__webpack_require__(96);var Settings=__webpack_require__(94);var Point3d=__webpack_require__(34);function DataGroup(){this.dataTable=null}DataGroup.prototype.initializeData=function(graph3d,rawData,style){if(rawData===undefined)return;if(Array.isArray(rawData)){rawData=new DataSet(rawData)}var data;if(rawData instanceof DataSet||rawData instanceof DataView){data=rawData.get()}else{throw new Error(\"Array, DataSet, or DataView expected\")}if(data.length==0)return;this.style=style;if(this.dataSet){this.dataSet.off(\"*\",this._onChange)}this.dataSet=rawData;this.dataTable=data;var me=this;this._onChange=function(){graph3d.setData(me.dataSet)};this.dataSet.on(\"*\",this._onChange);this.colX=\"x\";this.colY=\"y\";this.colZ=\"z\";var withBars=graph3d.hasBars(style);if(withBars){if(graph3d.defaultXBarWidth!==undefined){this.xBarWidth=graph3d.defaultXBarWidth}else{this.xBarWidth=this.getSmallestDifference(data,this.colX)||1}if(graph3d.defaultYBarWidth!==undefined){this.yBarWidth=graph3d.defaultYBarWidth}else{this.yBarWidth=this.getSmallestDifference(data,this.colY)||1}}this._initializeRange(data,this.colX,graph3d,withBars);this._initializeRange(data,this.colY,graph3d,withBars);this._initializeRange(data,this.colZ,graph3d,false);if(data[0].hasOwnProperty(\"style\")){this.colValue=\"style\";var valueRange=this.getColumnRange(data,this.colValue);this._setRangeDefaults(valueRange,graph3d.defaultValueMin,graph3d.defaultValueMax);this.valueRange=valueRange}var table=this.getDataTable();if(table[0].hasOwnProperty(\"filter\")){if(this.dataFilter===undefined){this.dataFilter=new Filter(this,\"filter\",graph3d);this.dataFilter.setOnLoadCallback(function(){graph3d.redraw()})}}var dataPoints;if(this.dataFilter){dataPoints=this.dataFilter._getDataPoints()}else{dataPoints=this._getDataPoints(this.getDataTable())}return dataPoints};DataGroup.prototype._collectRangeSettings=function(column,graph3d){var index=[\"x\",\"y\",\"z\"].indexOf(column);if(index==-1){throw new Error(\"Column '\"+column+\"' invalid\")}var upper=column.toUpperCase();return{barWidth:this[column+\"BarWidth\"],min:graph3d[\"default\"+upper+\"Min\"],max:graph3d[\"default\"+upper+\"Max\"],step:graph3d[\"default\"+upper+\"Step\"],range_label:column+\"Range\",step_label:column+\"Step\"}};DataGroup.prototype._initializeRange=function(data,column,graph3d,withBars){var NUMSTEPS=5;var settings=this._collectRangeSettings(column,graph3d);var range=this.getColumnRange(data,column);if(withBars&&column!=\"z\"){range.expand(settings.barWidth/2)}this._setRangeDefaults(range,settings.min,settings.max);this[settings.range_label]=range;this[settings.step_label]=settings.step!==undefined?settings.step:range.range()/NUMSTEPS};DataGroup.prototype.getDistinctValues=function(column,data){if(data===undefined){data=this.dataTable}var values=[];for(var i=0;i<data.length;i++){var value=data[i][column]||0;if(values.indexOf(value)===-1){values.push(value)}}return values.sort(function(a,b){return a-b})};DataGroup.prototype.getSmallestDifference=function(data,column){var values=this.getDistinctValues(data,column);var smallest_diff=null;for(var i=1;i<values.length;i++){var diff=values[i]-values[i-1];if(smallest_diff==null||smallest_diff>diff){smallest_diff=diff}}return smallest_diff};DataGroup.prototype.getColumnRange=function(data,column){var range=new Range;for(var i=0;i<data.length;i++){var item=data[i][column];range.adjust(item)}return range};DataGroup.prototype.getNumberOfRows=function(){return this.dataTable.length};DataGroup.prototype._setRangeDefaults=function(range,defaultMin,defaultMax){if(defaultMin!==undefined){range.min=defaultMin}if(defaultMax!==undefined){range.max=defaultMax}if(range.max<=range.min)range.max=range.min+1};DataGroup.prototype.getDataTable=function(){return this.dataTable};DataGroup.prototype.getDataSet=function(){return this.dataSet};DataGroup.prototype.getDataPoints=function(data){var dataPoints=[];for(var i=0;i<data.length;i++){var point=new Point3d;point.x=data[i][this.colX]||0;point.y=data[i][this.colY]||0;point.z=data[i][this.colZ]||0;point.data=data[i];if(this.colValue!==undefined){point.value=data[i][this.colValue]||0}var obj={};obj.point=point;obj.bottom=new Point3d(point.x,point.y,this.zRange.min);obj.trans=undefined;obj.screen=undefined;dataPoints.push(obj)}return dataPoints};DataGroup.prototype.initDataAsMatrix=function(data){var x,y,i,obj;var dataX=this.getDistinctValues(this.colX,data);var dataY=this.getDistinctValues(this.colY,data);var dataPoints=this.getDataPoints(data);var dataMatrix=[];for(i=0;i<dataPoints.length;i++){obj=dataPoints[i];var xIndex=dataX.indexOf(obj.point.x);var yIndex=dataY.indexOf(obj.point.y);if(dataMatrix[xIndex]===undefined){dataMatrix[xIndex]=[]}dataMatrix[xIndex][yIndex]=obj}for(x=0;x<dataMatrix.length;x++){for(y=0;y<dataMatrix[x].length;y++){if(dataMatrix[x][y]){dataMatrix[x][y].pointRight=x<dataMatrix.length-1?dataMatrix[x+1][y]:undefined;dataMatrix[x][y].pointTop=y<dataMatrix[x].length-1?dataMatrix[x][y+1]:undefined;dataMatrix[x][y].pointCross=x<dataMatrix.length-1&&y<dataMatrix[x].length-1?dataMatrix[x+1][y+1]:undefined}}}return dataPoints};DataGroup.prototype.getInfo=function(){var dataFilter=this.dataFilter;if(!dataFilter)return undefined;return dataFilter.getLabel()+\": \"+dataFilter.getSelectedValue()};DataGroup.prototype.reload=function(){if(this.dataTable){this.setData(this.dataTable)}};DataGroup.prototype._getDataPoints=function(data){var dataPoints=[];if(this.style===Settings.STYLE.GRID||this.style===Settings.STYLE.SURFACE){dataPoints=this.initDataAsMatrix(data)}else{this._checkValueField(data);dataPoints=this.getDataPoints(data);if(this.style===Settings.STYLE.LINE){for(var i=0;i<dataPoints.length;i++){if(i>0){dataPoints[i-1].pointNext=dataPoints[i]}}}}return dataPoints};DataGroup.prototype._checkValueField=function(data){var hasValueField=this.style===Settings.STYLE.BARCOLOR||this.style===Settings.STYLE.BARSIZE||this.style===Settings.STYLE.DOTCOLOR||this.style===Settings.STYLE.DOTSIZE;if(!hasValueField){return}if(this.colValue===undefined){throw new Error(\"Expected data to have \"+\" field 'style' \"+\" for graph style '\"+this.style+\"'\")}if(data[0][this.colValue]===undefined){throw new Error(\"Expected data to have \"+\" field '\"+this.colValue+\"' \"+\" for graph style '\"+this.style+\"'\")}};module.exports=DataGroup},function(module,exports,__webpack_require__){\"use strict\";function Range(){this.min=undefined;this.max=undefined}Range.prototype.adjust=function(value){if(value===undefined)return;if(this.min===undefined||this.min>value){this.min=value}if(this.max===undefined||this.max<value){this.max=value}};Range.prototype.combine=function(range){this.add(range.min);this.add(range.max)};Range.prototype.expand=function(val){if(val===undefined){return}var newMin=this.min-val;var newMax=this.max+val;if(newMin>newMax){throw new Error(\"Passed expansion value makes range invalid\")}this.min=newMin;this.max=newMax};Range.prototype.range=function(){return this.max-this.min};Range.prototype.center=function(){return(this.min+this.max)/2};module.exports=Range},function(module,exports,__webpack_require__){\"use strict\";var __WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;(function(factory){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__=[],__WEBPACK_AMD_DEFINE_FACTORY__=factory,__WEBPACK_AMD_DEFINE_RESULT__=typeof __WEBPACK_AMD_DEFINE_FACTORY__===\"function\"?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__,__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else if(typeof exports===\"object\"){module.exports=factory()}else{window.propagating=factory()}})(function(){var _firstTarget=null;return function propagating(hammer,options){var _options=options||{preventDefault:false};if(hammer.Manager){var Hammer=hammer;var PropagatingHammer=function(element,options){var o=Object.create(_options);if(options)Hammer.assign(o,options);return propagating(new Hammer(element,o),o)};Hammer.assign(PropagatingHammer,Hammer);PropagatingHammer.Manager=function(element,options){var o=Object.create(_options);if(options)Hammer.assign(o,options);return propagating(new Hammer.Manager(element,o),o)};return PropagatingHammer}var wrapper=Object.create(hammer);var element=hammer.element;if(!element.hammer)element.hammer=[];element.hammer.push(wrapper);hammer.on(\"hammer.input\",function(event){if(_options.preventDefault===true||_options.preventDefault===event.pointerType){event.preventDefault()}if(event.isFirst){_firstTarget=event.target}});wrapper._handlers={};wrapper.on=function(events,handler){split(events).forEach(function(event){var _handlers=wrapper._handlers[event];if(!_handlers){wrapper._handlers[event]=_handlers=[];hammer.on(event,propagatedHandler)}_handlers.push(handler)});return wrapper};wrapper.off=function(events,handler){split(events).forEach(function(event){var _handlers=wrapper._handlers[event];if(_handlers){_handlers=handler?_handlers.filter(function(h){return h!==handler}):[];if(_handlers.length>0){wrapper._handlers[event]=_handlers}else{hammer.off(event,propagatedHandler);delete wrapper._handlers[event]}}});return wrapper};wrapper.emit=function(eventType,event){_firstTarget=event.target;hammer.emit(eventType,event)};wrapper.destroy=function(){var hammers=hammer.element.hammer;var idx=hammers.indexOf(wrapper);if(idx!==-1)hammers.splice(idx,1);if(!hammers.length)delete hammer.element.hammer;wrapper._handlers={};hammer.destroy()};function split(events){return events.match(/[^ ]+/g)}function propagatedHandler(event){if(event.type!==\"hammer.input\"){if(!event.srcEvent._handled){event.srcEvent._handled={}}if(event.srcEvent._handled[event.type]){return}else{event.srcEvent._handled[event.type]=true}}var stopped=false\n;event.stopPropagation=function(){stopped=true};var srcStop=event.srcEvent.stopPropagation.bind(event.srcEvent);if(typeof srcStop==\"function\"){event.srcEvent.stopPropagation=function(){srcStop();event.stopPropagation()}}event.firstTarget=_firstTarget;var elem=_firstTarget;while(elem&&!stopped){var elemHammer=elem.hammer;if(elemHammer){var _handlers;for(var k=0;k<elemHammer.length;k++){_handlers=elemHammer[k]._handlers[event.type];if(_handlers)for(var i=0;i<_handlers.length&&!stopped;i++){_handlers[i](event)}}}elem=elem.parentNode}}return wrapper}})},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;(function(window,document,exportName,undefined){\"use strict\";var VENDOR_PREFIXES=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"];var TEST_ELEMENT=document.createElement(\"div\");var TYPE_FUNCTION=\"function\";var round=Math.round;var abs=Math.abs;var now=Date.now;function setTimeoutContext(fn,timeout,context){return setTimeout(bindFn(fn,context),timeout)}function invokeArrayArg(arg,fn,context){if(Array.isArray(arg)){each(arg,context[fn],context);return true}return false}function each(obj,iterator,context){var i;if(!obj){return}if(obj.forEach){obj.forEach(iterator,context)}else if(obj.length!==undefined){i=0;while(i<obj.length){iterator.call(context,obj[i],i,obj);i++}}else{for(i in obj){obj.hasOwnProperty(i)&&iterator.call(context,obj[i],i,obj)}}}function deprecate(method,name,message){var deprecationMessage=\"DEPRECATED METHOD: \"+name+\"\\n\"+message+\" AT \\n\";return function(){var e=new Error(\"get-stack-trace\");var stack=e&&e.stack?e.stack.replace(/^[^\\(]+?[\\n$]/gm,\"\").replace(/^\\s+at\\s+/gm,\"\").replace(/^Object.<anonymous>\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\";var log=window.console&&(window.console.warn||window.console.log);if(log){log.call(window.console,deprecationMessage,stack)}return method.apply(this,arguments)}}var assign;if(typeof Object.assign!==\"function\"){assign=function assign(target){if(target===undefined||target===null){throw new TypeError(\"Cannot convert undefined or null to object\")}var output=Object(target);for(var index=1;index<arguments.length;index++){var source=arguments[index];if(source!==undefined&&source!==null){for(var nextKey in source){if(source.hasOwnProperty(nextKey)){output[nextKey]=source[nextKey]}}}}return output}}else{assign=Object.assign}var extend=deprecate(function extend(dest,src,merge){var keys=Object.keys(src);var i=0;while(i<keys.length){if(!merge||merge&&dest[keys[i]]===undefined){dest[keys[i]]=src[keys[i]]}i++}return dest},\"extend\",\"Use `assign`.\");var merge=deprecate(function merge(dest,src){return extend(dest,src,true)},\"merge\",\"Use `assign`.\");function inherit(child,base,properties){var baseP=base.prototype,childP;childP=child.prototype=Object.create(baseP);childP.constructor=child;childP._super=baseP;if(properties){assign(childP,properties)}}function bindFn(fn,context){return function boundFn(){return fn.apply(context,arguments)}}function boolOrFn(val,args){if(typeof val==TYPE_FUNCTION){return val.apply(args?args[0]||undefined:undefined,args)}return val}function ifUndefined(val1,val2){return val1===undefined?val2:val1}function addEventListeners(target,types,handler){each(splitStr(types),function(type){target.addEventListener(type,handler,false)})}function removeEventListeners(target,types,handler){each(splitStr(types),function(type){target.removeEventListener(type,handler,false)})}function hasParent(node,parent){while(node){if(node==parent){return true}node=node.parentNode}return false}function inStr(str,find){return str.indexOf(find)>-1}function splitStr(str){return str.trim().split(/\\s+/g)}function inArray(src,find,findByKey){if(src.indexOf&&!findByKey){return src.indexOf(find)}else{var i=0;while(i<src.length){if(findByKey&&src[i][findByKey]==find||!findByKey&&src[i]===find){return i}i++}return-1}}function toArray(obj){return Array.prototype.slice.call(obj,0)}function uniqueArray(src,key,sort){var results=[];var values=[];var i=0;while(i<src.length){var val=key?src[i][key]:src[i];if(inArray(values,val)<0){results.push(src[i])}values[i]=val;i++}if(sort){if(!key){results=results.sort()}else{results=results.sort(function sortUniqueArray(a,b){return a[key]>b[key]})}}return results}function prefixed(obj,property){var prefix,prop;var camelProp=property[0].toUpperCase()+property.slice(1);var i=0;while(i<VENDOR_PREFIXES.length){prefix=VENDOR_PREFIXES[i];prop=prefix?prefix+camelProp:property;if(prop in obj){return prop}i++}return undefined}var _uniqueId=1;function uniqueId(){return _uniqueId++}function getWindowForElement(element){var doc=element.ownerDocument||element;return doc.defaultView||doc.parentWindow||window}var MOBILE_REGEX=/mobile|tablet|ip(ad|hone|od)|android/i;var SUPPORT_TOUCH=\"ontouchstart\"in window;var SUPPORT_POINTER_EVENTS=prefixed(window,\"PointerEvent\")!==undefined;var SUPPORT_ONLY_TOUCH=SUPPORT_TOUCH&&MOBILE_REGEX.test(navigator.userAgent);var INPUT_TYPE_TOUCH=\"touch\";var INPUT_TYPE_PEN=\"pen\";var INPUT_TYPE_MOUSE=\"mouse\";var INPUT_TYPE_KINECT=\"kinect\";var COMPUTE_INTERVAL=25;var INPUT_START=1;var INPUT_MOVE=2;var INPUT_END=4;var INPUT_CANCEL=8;var DIRECTION_NONE=1;var DIRECTION_LEFT=2;var DIRECTION_RIGHT=4;var DIRECTION_UP=8;var DIRECTION_DOWN=16;var DIRECTION_HORIZONTAL=DIRECTION_LEFT|DIRECTION_RIGHT;var DIRECTION_VERTICAL=DIRECTION_UP|DIRECTION_DOWN;var DIRECTION_ALL=DIRECTION_HORIZONTAL|DIRECTION_VERTICAL;var PROPS_XY=[\"x\",\"y\"];var PROPS_CLIENT_XY=[\"clientX\",\"clientY\"];function Input(manager,callback){var self=this;this.manager=manager;this.callback=callback;this.element=manager.element;this.target=manager.options.inputTarget;this.domHandler=function(ev){if(boolOrFn(manager.options.enable,[manager])){self.handler(ev)}};this.init()}Input.prototype={handler:function(){},init:function(){this.evEl&&addEventListeners(this.element,this.evEl,this.domHandler);this.evTarget&&addEventListeners(this.target,this.evTarget,this.domHandler);this.evWin&&addEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&removeEventListeners(this.element,this.evEl,this.domHandler);this.evTarget&&removeEventListeners(this.target,this.evTarget,this.domHandler);this.evWin&&removeEventListeners(getWindowForElement(this.element),this.evWin,this.domHandler)}};function createInputInstance(manager){var Type;var inputClass=manager.options.inputClass;if(inputClass){Type=inputClass}else if(SUPPORT_POINTER_EVENTS){Type=PointerEventInput}else if(SUPPORT_ONLY_TOUCH){Type=TouchInput}else if(!SUPPORT_TOUCH){Type=MouseInput}else{Type=TouchMouseInput}return new Type(manager,inputHandler)}function inputHandler(manager,eventType,input){var pointersLen=input.pointers.length;var changedPointersLen=input.changedPointers.length;var isFirst=eventType&INPUT_START&&pointersLen-changedPointersLen===0;var isFinal=eventType&(INPUT_END|INPUT_CANCEL)&&pointersLen-changedPointersLen===0;input.isFirst=!!isFirst;input.isFinal=!!isFinal;if(isFirst){manager.session={}}input.eventType=eventType;computeInputData(manager,input);manager.emit(\"hammer.input\",input);manager.recognize(input);manager.session.prevInput=input}function computeInputData(manager,input){var session=manager.session;var pointers=input.pointers;var pointersLength=pointers.length;if(!session.firstInput){session.firstInput=simpleCloneInputData(input)}if(pointersLength>1&&!session.firstMultiple){session.firstMultiple=simpleCloneInputData(input)}else if(pointersLength===1){session.firstMultiple=false}var firstInput=session.firstInput;var firstMultiple=session.firstMultiple;var offsetCenter=firstMultiple?firstMultiple.center:firstInput.center;var center=input.center=getCenter(pointers);input.timeStamp=now();input.deltaTime=input.timeStamp-firstInput.timeStamp;input.angle=getAngle(offsetCenter,center);input.distance=getDistance(offsetCenter,center);computeDeltaXY(session,input);input.offsetDirection=getDirection(input.deltaX,input.deltaY);var overallVelocity=getVelocity(input.deltaTime,input.deltaX,input.deltaY);input.overallVelocityX=overallVelocity.x;input.overallVelocityY=overallVelocity.y;input.overallVelocity=abs(overallVelocity.x)>abs(overallVelocity.y)?overallVelocity.x:overallVelocity.y;input.scale=firstMultiple?getScale(firstMultiple.pointers,pointers):1;input.rotation=firstMultiple?getRotation(firstMultiple.pointers,pointers):0;input.maxPointers=!session.prevInput?input.pointers.length:input.pointers.length>session.prevInput.maxPointers?input.pointers.length:session.prevInput.maxPointers;computeIntervalInputData(session,input);var target=manager.element;if(hasParent(input.srcEvent.target,target)){target=input.srcEvent.target}input.target=target}function computeDeltaXY(session,input){var center=input.center;var offset=session.offsetDelta||{};var prevDelta=session.prevDelta||{};var prevInput=session.prevInput||{};if(input.eventType===INPUT_START||prevInput.eventType===INPUT_END){prevDelta=session.prevDelta={x:prevInput.deltaX||0,y:prevInput.deltaY||0};offset=session.offsetDelta={x:center.x,y:center.y}}input.deltaX=prevDelta.x+(center.x-offset.x);input.deltaY=prevDelta.y+(center.y-offset.y)}function computeIntervalInputData(session,input){var last=session.lastInterval||input,deltaTime=input.timeStamp-last.timeStamp,velocity,velocityX,velocityY,direction;if(input.eventType!=INPUT_CANCEL&&(deltaTime>COMPUTE_INTERVAL||last.velocity===undefined)){var deltaX=input.deltaX-last.deltaX;var deltaY=input.deltaY-last.deltaY;var v=getVelocity(deltaTime,deltaX,deltaY);velocityX=v.x;velocityY=v.y;velocity=abs(v.x)>abs(v.y)?v.x:v.y;direction=getDirection(deltaX,deltaY);session.lastInterval=input}else{velocity=last.velocity;velocityX=last.velocityX;velocityY=last.velocityY;direction=last.direction}input.velocity=velocity;input.velocityX=velocityX;input.velocityY=velocityY;input.direction=direction}function simpleCloneInputData(input){var pointers=[];var i=0;while(i<input.pointers.length){pointers[i]={clientX:round(input.pointers[i].clientX),clientY:round(input.pointers[i].clientY)};i++}return{timeStamp:now(),pointers:pointers,center:getCenter(pointers),deltaX:input.deltaX,deltaY:input.deltaY}}function getCenter(pointers){var pointersLength=pointers.length;if(pointersLength===1){return{x:round(pointers[0].clientX),y:round(pointers[0].clientY)}}var x=0,y=0,i=0;while(i<pointersLength){x+=pointers[i].clientX;y+=pointers[i].clientY;i++}return{x:round(x/pointersLength),y:round(y/pointersLength)}}function getVelocity(deltaTime,x,y){return{x:x/deltaTime||0,y:y/deltaTime||0}}function getDirection(x,y){if(x===y){return DIRECTION_NONE}if(abs(x)>=abs(y)){return x<0?DIRECTION_LEFT:DIRECTION_RIGHT}return y<0?DIRECTION_UP:DIRECTION_DOWN}function getDistance(p1,p2,props){if(!props){props=PROPS_XY}var x=p2[props[0]]-p1[props[0]],y=p2[props[1]]-p1[props[1]];return Math.sqrt(x*x+y*y)}function getAngle(p1,p2,props){if(!props){props=PROPS_XY}var x=p2[props[0]]-p1[props[0]],y=p2[props[1]]-p1[props[1]];return Math.atan2(y,x)*180/Math.PI}function getRotation(start,end){return getAngle(end[1],end[0],PROPS_CLIENT_XY)+getAngle(start[1],start[0],PROPS_CLIENT_XY)}function getScale(start,end){return getDistance(end[0],end[1],PROPS_CLIENT_XY)/getDistance(start[0],start[1],PROPS_CLIENT_XY)}var MOUSE_INPUT_MAP={mousedown:INPUT_START,mousemove:INPUT_MOVE,mouseup:INPUT_END};var MOUSE_ELEMENT_EVENTS=\"mousedown\";var MOUSE_WINDOW_EVENTS=\"mousemove mouseup\";function MouseInput(){this.evEl=MOUSE_ELEMENT_EVENTS;this.evWin=MOUSE_WINDOW_EVENTS;this.pressed=false;Input.apply(this,arguments)}inherit(MouseInput,Input,{handler:function MEhandler(ev){var eventType=MOUSE_INPUT_MAP[ev.type];if(eventType&INPUT_START&&ev.button===0){this.pressed=true}if(eventType&INPUT_MOVE&&ev.which!==1){eventType=INPUT_END}if(!this.pressed){return}if(eventType&INPUT_END){this.pressed=false}this.callback(this.manager,eventType,{pointers:[ev],changedPointers:[ev],pointerType:INPUT_TYPE_MOUSE,srcEvent:ev})}});var POINTER_INPUT_MAP={pointerdown:INPUT_START,pointermove:INPUT_MOVE,pointerup:INPUT_END,pointercancel:INPUT_CANCEL,pointerout:INPUT_CANCEL};var IE10_POINTER_TYPE_ENUM={2:INPUT_TYPE_TOUCH,3:INPUT_TYPE_PEN,4:INPUT_TYPE_MOUSE,5:INPUT_TYPE_KINECT};var POINTER_ELEMENT_EVENTS=\"pointerdown\";var POINTER_WINDOW_EVENTS=\"pointermove pointerup pointercancel\";if(window.MSPointerEvent&&!window.PointerEvent){POINTER_ELEMENT_EVENTS=\"MSPointerDown\";POINTER_WINDOW_EVENTS=\"MSPointerMove MSPointerUp MSPointerCancel\"}function PointerEventInput(){this.evEl=POINTER_ELEMENT_EVENTS;this.evWin=POINTER_WINDOW_EVENTS;Input.apply(this,arguments);this.store=this.manager.session.pointerEvents=[]}inherit(PointerEventInput,Input,{handler:function PEhandler(ev){var store=this.store;var removePointer=false;var eventTypeNormalized=ev.type.toLowerCase().replace(\"ms\",\"\");var eventType=POINTER_INPUT_MAP[eventTypeNormalized];var pointerType=IE10_POINTER_TYPE_ENUM[ev.pointerType]||ev.pointerType;var isTouch=pointerType==INPUT_TYPE_TOUCH;var storeIndex=inArray(store,ev.pointerId,\"pointerId\");if(eventType&INPUT_START&&(ev.button===0||isTouch)){if(storeIndex<0){store.push(ev);storeIndex=store.length-1}}else if(eventType&(INPUT_END|INPUT_CANCEL)){removePointer=true}if(storeIndex<0){return}store[storeIndex]=ev;this.callback(this.manager,eventType,{pointers:store,changedPointers:[ev],pointerType:pointerType,srcEvent:ev});if(removePointer){store.splice(storeIndex,1)}}});var SINGLE_TOUCH_INPUT_MAP={touchstart:INPUT_START,touchmove:INPUT_MOVE,touchend:INPUT_END,touchcancel:INPUT_CANCEL};var SINGLE_TOUCH_TARGET_EVENTS=\"touchstart\";var SINGLE_TOUCH_WINDOW_EVENTS=\"touchstart touchmove touchend touchcancel\";function SingleTouchInput(){this.evTarget=SINGLE_TOUCH_TARGET_EVENTS;this.evWin=SINGLE_TOUCH_WINDOW_EVENTS;this.started=false;Input.apply(this,arguments)}inherit(SingleTouchInput,Input,{handler:function TEhandler(ev){var type=SINGLE_TOUCH_INPUT_MAP[ev.type];if(type===INPUT_START){this.started=true}if(!this.started){return}var touches=normalizeSingleTouches.call(this,ev,type);if(type&(INPUT_END|INPUT_CANCEL)&&touches[0].length-touches[1].length===0){this.started=false}this.callback(this.manager,type,{pointers:touches[0],changedPointers:touches[1],pointerType:INPUT_TYPE_TOUCH,srcEvent:ev})}});function normalizeSingleTouches(ev,type){var all=toArray(ev.touches);var changed=toArray(ev.changedTouches);if(type&(INPUT_END|INPUT_CANCEL)){all=uniqueArray(all.concat(changed),\"identifier\",true)}return[all,changed]}var TOUCH_INPUT_MAP={touchstart:INPUT_START,touchmove:INPUT_MOVE,touchend:INPUT_END,touchcancel:INPUT_CANCEL};var TOUCH_TARGET_EVENTS=\"touchstart touchmove touchend touchcancel\";function TouchInput(){this.evTarget=TOUCH_TARGET_EVENTS;this.targetIds={};Input.apply(this,arguments)}inherit(TouchInput,Input,{handler:function MTEhandler(ev){var type=TOUCH_INPUT_MAP[ev.type];var touches=getTouches.call(this,ev,type);if(!touches){return}this.callback(this.manager,type,{pointers:touches[0],changedPointers:touches[1],pointerType:INPUT_TYPE_TOUCH,srcEvent:ev})}});function getTouches(ev,type){var allTouches=toArray(ev.touches);var targetIds=this.targetIds;if(type&(INPUT_START|INPUT_MOVE)&&allTouches.length===1){targetIds[allTouches[0].identifier]=true;return[allTouches,allTouches]}var i,targetTouches,changedTouches=toArray(ev.changedTouches),changedTargetTouches=[],target=this.target;targetTouches=allTouches.filter(function(touch){return hasParent(touch.target,target)});if(type===INPUT_START){i=0;while(i<targetTouches.length){targetIds[targetTouches[i].identifier]=true;i++}}i=0;while(i<changedTouches.length){if(targetIds[changedTouches[i].identifier]){changedTargetTouches.push(changedTouches[i])}if(type&(INPUT_END|INPUT_CANCEL)){delete targetIds[changedTouches[i].identifier]}i++}if(!changedTargetTouches.length){return}return[uniqueArray(targetTouches.concat(changedTargetTouches),\"identifier\",true),changedTargetTouches]}var DEDUP_TIMEOUT=2500;var DEDUP_DISTANCE=25;function TouchMouseInput(){Input.apply(this,arguments);var handler=bindFn(this.handler,this);this.touch=new TouchInput(this.manager,handler);this.mouse=new MouseInput(this.manager,handler);this.primaryTouch=null;this.lastTouches=[]}inherit(TouchMouseInput,Input,{handler:function TMEhandler(manager,inputEvent,inputData){var isTouch=inputData.pointerType==INPUT_TYPE_TOUCH,isMouse=inputData.pointerType==INPUT_TYPE_MOUSE;if(isMouse&&inputData.sourceCapabilities&&inputData.sourceCapabilities.firesTouchEvents){return}if(isTouch){recordTouches.call(this,inputEvent,inputData)}else if(isMouse&&isSyntheticEvent.call(this,inputData)){return}this.callback(manager,inputEvent,inputData)},destroy:function destroy(){this.touch.destroy();this.mouse.destroy()}});function recordTouches(eventType,eventData){if(eventType&INPUT_START){this.primaryTouch=eventData.changedPointers[0].identifier;setLastTouch.call(this,eventData)}else if(eventType&(INPUT_END|INPUT_CANCEL)){setLastTouch.call(this,eventData)}}function setLastTouch(eventData){var touch=eventData.changedPointers[0];if(touch.identifier===this.primaryTouch){var lastTouch={x:touch.clientX,y:touch.clientY};this.lastTouches.push(lastTouch);var lts=this.lastTouches;var removeLastTouch=function(){var i=lts.indexOf(lastTouch);if(i>-1){lts.splice(i,1)}};setTimeout(removeLastTouch,DEDUP_TIMEOUT)}}function isSyntheticEvent(eventData){var x=eventData.srcEvent.clientX,y=eventData.srcEvent.clientY;for(var i=0;i<this.lastTouches.length;i++){var t=this.lastTouches[i];var dx=Math.abs(x-t.x),dy=Math.abs(y-t.y);if(dx<=DEDUP_DISTANCE&&dy<=DEDUP_DISTANCE){return true}}return false}var PREFIXED_TOUCH_ACTION=prefixed(TEST_ELEMENT.style,\"touchAction\");var NATIVE_TOUCH_ACTION=PREFIXED_TOUCH_ACTION!==undefined;var TOUCH_ACTION_COMPUTE=\"compute\";var TOUCH_ACTION_AUTO=\"auto\";var TOUCH_ACTION_MANIPULATION=\"manipulation\";var TOUCH_ACTION_NONE=\"none\";var TOUCH_ACTION_PAN_X=\"pan-x\";var TOUCH_ACTION_PAN_Y=\"pan-y\";var TOUCH_ACTION_MAP=getTouchActionProps();function TouchAction(manager,value){this.manager=manager;this.set(value)}TouchAction.prototype={set:function(value){if(value==TOUCH_ACTION_COMPUTE){value=this.compute()}if(NATIVE_TOUCH_ACTION&&this.manager.element.style&&TOUCH_ACTION_MAP[value]){this.manager.element.style[PREFIXED_TOUCH_ACTION]=value}this.actions=value.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var actions=[];each(this.manager.recognizers,function(recognizer){if(boolOrFn(recognizer.options.enable,[recognizer])){actions=actions.concat(recognizer.getTouchAction())}});return cleanTouchActions(actions.join(\" \"))},preventDefaults:function(input){var srcEvent=input.srcEvent;var direction=input.offsetDirection;if(this.manager.session.prevented){srcEvent.preventDefault();return}var actions=this.actions;var hasNone=inStr(actions,TOUCH_ACTION_NONE)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];var hasPanY=inStr(actions,TOUCH_ACTION_PAN_Y)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];var hasPanX=inStr(actions,TOUCH_ACTION_PAN_X)&&!TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];if(hasNone){var isTapPointer=input.pointers.length===1;var isTapMovement=input.distance<2;var isTapTouchTime=input.deltaTime<250;if(isTapPointer&&isTapMovement&&isTapTouchTime){return}}if(hasPanX&&hasPanY){return}if(hasNone||hasPanY&&direction&DIRECTION_HORIZONTAL||hasPanX&&direction&DIRECTION_VERTICAL){return this.preventSrc(srcEvent)}},preventSrc:function(srcEvent){this.manager.session.prevented=true;srcEvent.preventDefault()}};function cleanTouchActions(actions){if(inStr(actions,TOUCH_ACTION_NONE)){return TOUCH_ACTION_NONE}var hasPanX=inStr(actions,TOUCH_ACTION_PAN_X);var hasPanY=inStr(actions,TOUCH_ACTION_PAN_Y);if(hasPanX&&hasPanY){return TOUCH_ACTION_NONE}if(hasPanX||hasPanY){return hasPanX?TOUCH_ACTION_PAN_X:TOUCH_ACTION_PAN_Y}if(inStr(actions,TOUCH_ACTION_MANIPULATION)){return TOUCH_ACTION_MANIPULATION}return TOUCH_ACTION_AUTO}function getTouchActionProps(){if(!NATIVE_TOUCH_ACTION){return false}var touchMap={};var cssSupports=window.CSS&&window.CSS.supports;[\"auto\",\"manipulation\",\"pan-y\",\"pan-x\",\"pan-x pan-y\",\"none\"].forEach(function(val){touchMap[val]=cssSupports?window.CSS.supports(\"touch-action\",val):true});return touchMap}var STATE_POSSIBLE=1;var STATE_BEGAN=2;var STATE_CHANGED=4;var STATE_ENDED=8;var STATE_RECOGNIZED=STATE_ENDED;var STATE_CANCELLED=16;var STATE_FAILED=32;function Recognizer(options){this.options=assign({},this.defaults,options||{});this.id=uniqueId();this.manager=null;this.options.enable=ifUndefined(this.options.enable,true);this.state=STATE_POSSIBLE;this.simultaneous={};this.requireFail=[]}Recognizer.prototype={defaults:{},set:function(options){assign(this.options,options);this.manager&&this.manager.touchAction.update();return this},recognizeWith:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,\"recognizeWith\",this)){return this}var simultaneous=this.simultaneous;otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);if(!simultaneous[otherRecognizer.id]){simultaneous[otherRecognizer.id]=otherRecognizer;otherRecognizer.recognizeWith(this)}return this},dropRecognizeWith:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,\"dropRecognizeWith\",this)){return this}otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);delete this.simultaneous[otherRecognizer.id];return this},requireFailure:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,\"requireFailure\",this)){return this}var requireFail=this.requireFail;otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);if(inArray(requireFail,otherRecognizer)===-1){requireFail.push(otherRecognizer);otherRecognizer.requireFailure(this)}return this},dropRequireFailure:function(otherRecognizer){if(invokeArrayArg(otherRecognizer,\"dropRequireFailure\",this)){return this}otherRecognizer=getRecognizerByNameIfManager(otherRecognizer,this);var index=inArray(this.requireFail,otherRecognizer);if(index>-1){this.requireFail.splice(index,1)}return this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(otherRecognizer){return!!this.simultaneous[otherRecognizer.id]},emit:function(input){var self=this;var state=this.state;function emit(event){self.manager.emit(event,input)}if(state<STATE_ENDED){emit(self.options.event+stateStr(state))}emit(self.options.event);if(input.additionalEvent){emit(input.additionalEvent)}if(state>=STATE_ENDED){emit(self.options.event+stateStr(state))}},tryEmit:function(input){if(this.canEmit()){return this.emit(input)}this.state=STATE_FAILED},canEmit:function(){var i=0;while(i<this.requireFail.length){if(!(this.requireFail[i].state&(STATE_FAILED|STATE_POSSIBLE))){return false}i++}return true},recognize:function(inputData){var inputDataClone=assign({},inputData);if(!boolOrFn(this.options.enable,[this,inputDataClone])){this.reset();this.state=STATE_FAILED;return}if(this.state&(STATE_RECOGNIZED|STATE_CANCELLED|STATE_FAILED)){this.state=STATE_POSSIBLE}this.state=this.process(inputDataClone);if(this.state&(STATE_BEGAN|STATE_CHANGED|STATE_ENDED|STATE_CANCELLED)){this.tryEmit(inputDataClone)}},process:function(inputData){},getTouchAction:function(){},reset:function(){}};function stateStr(state){if(state&STATE_CANCELLED){return\"cancel\"}else if(state&STATE_ENDED){return\"end\"}else if(state&STATE_CHANGED){return\"move\"}else if(state&STATE_BEGAN){return\"start\"}return\"\"}function directionStr(direction){if(direction==DIRECTION_DOWN){return\"down\"}else if(direction==DIRECTION_UP){return\"up\"}else if(direction==DIRECTION_LEFT){return\"left\"}else if(direction==DIRECTION_RIGHT){return\"right\"}return\"\"}function getRecognizerByNameIfManager(otherRecognizer,recognizer){var manager=recognizer.manager;if(manager){return manager.get(otherRecognizer)}return otherRecognizer}function AttrRecognizer(){Recognizer.apply(this,arguments)}inherit(AttrRecognizer,Recognizer,{defaults:{pointers:1},attrTest:function(input){var optionPointers=this.options.pointers;return optionPointers===0||input.pointers.length===optionPointers},process:function(input){var state=this.state;var eventType=input.eventType;var isRecognized=state&(STATE_BEGAN|STATE_CHANGED);var isValid=this.attrTest(input);if(isRecognized&&(eventType&INPUT_CANCEL||!isValid)){return state|STATE_CANCELLED}else if(isRecognized||isValid){if(eventType&INPUT_END){return state|STATE_ENDED}else if(!(state&STATE_BEGAN)){return STATE_BEGAN}return state|STATE_CHANGED}return STATE_FAILED}});function PanRecognizer(){AttrRecognizer.apply(this,arguments);this.pX=null;this.pY=null}inherit(PanRecognizer,AttrRecognizer,{defaults:{event:\"pan\",threshold:10,pointers:1,direction:DIRECTION_ALL},getTouchAction:function(){var direction=this.options.direction;var actions=[];if(direction&DIRECTION_HORIZONTAL){actions.push(TOUCH_ACTION_PAN_Y)}if(direction&DIRECTION_VERTICAL){actions.push(TOUCH_ACTION_PAN_X)}return actions},directionTest:function(input){var options=this.options;var hasMoved=true;var distance=input.distance;var direction=input.direction;var x=input.deltaX;var y=input.deltaY;if(!(direction&options.direction)){if(options.direction&DIRECTION_HORIZONTAL){direction=x===0?DIRECTION_NONE:x<0?DIRECTION_LEFT:DIRECTION_RIGHT;hasMoved=x!=this.pX;distance=Math.abs(input.deltaX)}else{direction=y===0?DIRECTION_NONE:y<0?DIRECTION_UP:DIRECTION_DOWN;hasMoved=y!=this.pY;distance=Math.abs(input.deltaY)}}input.direction=direction;return hasMoved&&distance>options.threshold&&direction&options.direction},attrTest:function(input){return AttrRecognizer.prototype.attrTest.call(this,input)&&(this.state&STATE_BEGAN||!(this.state&STATE_BEGAN)&&this.directionTest(input))},emit:function(input){this.pX=input.deltaX;this.pY=input.deltaY;var direction=directionStr(input.direction);if(direction){input.additionalEvent=this.options.event+direction}this._super.emit.call(this,input)}});function PinchRecognizer(){AttrRecognizer.apply(this,arguments)}inherit(PinchRecognizer,AttrRecognizer,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[TOUCH_ACTION_NONE]},attrTest:function(input){return this._super.attrTest.call(this,input)&&(Math.abs(input.scale-1)>this.options.threshold||this.state&STATE_BEGAN)},emit:function(input){if(input.scale!==1){var inOut=input.scale<1?\"in\":\"out\";input.additionalEvent=this.options.event+inOut}this._super.emit.call(this,input)}});function PressRecognizer(){Recognizer.apply(this,arguments);this._timer=null;this._input=null}inherit(PressRecognizer,Recognizer,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[TOUCH_ACTION_AUTO]},process:function(input){var options=this.options;var validPointers=input.pointers.length===options.pointers;var validMovement=input.distance<options.threshold;var validTime=input.deltaTime>options.time;this._input=input;if(!validMovement||!validPointers||input.eventType&(INPUT_END|INPUT_CANCEL)&&!validTime){this.reset()}else if(input.eventType&INPUT_START){this.reset();this._timer=setTimeoutContext(function(){this.state=STATE_RECOGNIZED;this.tryEmit()},options.time,this)}else if(input.eventType&INPUT_END){return STATE_RECOGNIZED}return STATE_FAILED},reset:function(){clearTimeout(this._timer)},emit:function(input){if(this.state!==STATE_RECOGNIZED){return}if(input&&input.eventType&INPUT_END){this.manager.emit(this.options.event+\"up\",input)}else{this._input.timeStamp=now();this.manager.emit(this.options.event,this._input)}}});function RotateRecognizer(){AttrRecognizer.apply(this,arguments)}inherit(RotateRecognizer,AttrRecognizer,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[TOUCH_ACTION_NONE]},attrTest:function(input){return this._super.attrTest.call(this,input)&&(Math.abs(input.rotation)>this.options.threshold||this.state&STATE_BEGAN)}});function SwipeRecognizer(){AttrRecognizer.apply(this,arguments)}inherit(SwipeRecognizer,AttrRecognizer,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:DIRECTION_HORIZONTAL|DIRECTION_VERTICAL,pointers:1},getTouchAction:function(){return PanRecognizer.prototype.getTouchAction.call(this)},attrTest:function(input){var direction=this.options.direction;var velocity;if(direction&(DIRECTION_HORIZONTAL|DIRECTION_VERTICAL)){velocity=input.overallVelocity}else if(direction&DIRECTION_HORIZONTAL){velocity=input.overallVelocityX}else if(direction&DIRECTION_VERTICAL){velocity=input.overallVelocityY}return this._super.attrTest.call(this,input)&&direction&input.offsetDirection&&input.distance>this.options.threshold&&input.maxPointers==this.options.pointers&&abs(velocity)>this.options.velocity&&input.eventType&INPUT_END},emit:function(input){var direction=directionStr(input.offsetDirection);if(direction){this.manager.emit(this.options.event+direction,input)}this.manager.emit(this.options.event,input)}});function TapRecognizer(){Recognizer.apply(this,arguments);this.pTime=false;this.pCenter=false;this._timer=null;this._input=null;this.count=0}inherit(TapRecognizer,Recognizer,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[TOUCH_ACTION_MANIPULATION]},process:function(input){var options=this.options;var validPointers=input.pointers.length===options.pointers;var validMovement=input.distance<options.threshold;var validTouchTime=input.deltaTime<options.time;this.reset();if(input.eventType&INPUT_START&&this.count===0){return this.failTimeout()}if(validMovement&&validTouchTime&&validPointers){if(input.eventType!=INPUT_END){return this.failTimeout()}var validInterval=this.pTime?input.timeStamp-this.pTime<options.interval:true;var validMultiTap=!this.pCenter||getDistance(this.pCenter,input.center)<options.posThreshold;this.pTime=input.timeStamp;this.pCenter=input.center;if(!validMultiTap||!validInterval){this.count=1}else{this.count+=1}this._input=input;var tapCount=this.count%options.taps;if(tapCount===0){if(!this.hasRequireFailures()){return STATE_RECOGNIZED}else{this._timer=setTimeoutContext(function(){this.state=STATE_RECOGNIZED;this.tryEmit()},options.interval,this);return STATE_BEGAN}}}return STATE_FAILED},failTimeout:function(){this._timer=setTimeoutContext(function(){this.state=STATE_FAILED},this.options.interval,this);return STATE_FAILED},reset:function(){clearTimeout(this._timer)},emit:function(){if(this.state==STATE_RECOGNIZED){this._input.tapCount=this.count;this.manager.emit(this.options.event,this._input)}}});function Hammer(element,options){options=options||{};options.recognizers=ifUndefined(options.recognizers,Hammer.defaults.preset);return new Manager(element,options)}Hammer.VERSION=\"2.0.7\";Hammer.defaults={domEvents:false,touchAction:TOUCH_ACTION_COMPUTE,enable:true,inputTarget:null,inputClass:null,preset:[[RotateRecognizer,{enable:false}],[PinchRecognizer,{enable:false},[\"rotate\"]],[SwipeRecognizer,{direction:DIRECTION_HORIZONTAL}],[PanRecognizer,{direction:DIRECTION_HORIZONTAL},[\"swipe\"]],[TapRecognizer],[TapRecognizer,{event:\"doubletap\",taps:2},[\"tap\"]],[PressRecognizer]],cssProps:{userSelect:\"none\",touchSelect:\"none\",touchCallout:\"none\",contentZooming:\"none\",userDrag:\"none\",tapHighlightColor:\"rgba(0,0,0,0)\"}};var STOP=1;var FORCED_STOP=2;function Manager(element,options){this.options=assign({},Hammer.defaults,options||{});this.options.inputTarget=this.options.inputTarget||element;this.handlers={};this.session={};this.recognizers=[];this.oldCssProps={};this.element=element;this.input=createInputInstance(this);this.touchAction=new TouchAction(this,this.options.touchAction);toggleCssProps(this,true);each(this.options.recognizers,function(item){var recognizer=this.add(new item[0](item[1]));item[2]&&recognizer.recognizeWith(item[2]);item[3]&&recognizer.requireFailure(item[3])},this)}Manager.prototype={set:function(options){assign(this.options,options);if(options.touchAction){this.touchAction.update()}if(options.inputTarget){this.input.destroy();this.input.target=options.inputTarget;this.input.init()}return this},stop:function(force){this.session.stopped=force?FORCED_STOP:STOP},recognize:function(inputData){var session=this.session;if(session.stopped){return}this.touchAction.preventDefaults(inputData)\n;var recognizer;var recognizers=this.recognizers;var curRecognizer=session.curRecognizer;if(!curRecognizer||curRecognizer&&curRecognizer.state&STATE_RECOGNIZED){curRecognizer=session.curRecognizer=null}var i=0;while(i<recognizers.length){recognizer=recognizers[i];if(session.stopped!==FORCED_STOP&&(!curRecognizer||recognizer==curRecognizer||recognizer.canRecognizeWith(curRecognizer))){recognizer.recognize(inputData)}else{recognizer.reset()}if(!curRecognizer&&recognizer.state&(STATE_BEGAN|STATE_CHANGED|STATE_ENDED)){curRecognizer=session.curRecognizer=recognizer}i++}},get:function(recognizer){if(recognizer instanceof Recognizer){return recognizer}var recognizers=this.recognizers;for(var i=0;i<recognizers.length;i++){if(recognizers[i].options.event==recognizer){return recognizers[i]}}return null},add:function(recognizer){if(invokeArrayArg(recognizer,\"add\",this)){return this}var existing=this.get(recognizer.options.event);if(existing){this.remove(existing)}this.recognizers.push(recognizer);recognizer.manager=this;this.touchAction.update();return recognizer},remove:function(recognizer){if(invokeArrayArg(recognizer,\"remove\",this)){return this}recognizer=this.get(recognizer);if(recognizer){var recognizers=this.recognizers;var index=inArray(recognizers,recognizer);if(index!==-1){recognizers.splice(index,1);this.touchAction.update()}}return this},on:function(events,handler){if(events===undefined){return}if(handler===undefined){return}var handlers=this.handlers;each(splitStr(events),function(event){handlers[event]=handlers[event]||[];handlers[event].push(handler)});return this},off:function(events,handler){if(events===undefined){return}var handlers=this.handlers;each(splitStr(events),function(event){if(!handler){delete handlers[event]}else{handlers[event]&&handlers[event].splice(inArray(handlers[event],handler),1)}});return this},emit:function(event,data){if(this.options.domEvents){triggerDomEvent(event,data)}var handlers=this.handlers[event]&&this.handlers[event].slice();if(!handlers||!handlers.length){return}data.type=event;data.preventDefault=function(){data.srcEvent.preventDefault()};var i=0;while(i<handlers.length){handlers[i](data);i++}},destroy:function(){this.element&&toggleCssProps(this,false);this.handlers={};this.session={};this.input.destroy();this.element=null}};function toggleCssProps(manager,add){var element=manager.element;if(!element.style){return}var prop;each(manager.options.cssProps,function(value,name){prop=prefixed(element.style,name);if(add){manager.oldCssProps[prop]=element.style[prop];element.style[prop]=value}else{element.style[prop]=manager.oldCssProps[prop]||\"\"}});if(!add){manager.oldCssProps={}}}function triggerDomEvent(event,data){var gestureEvent=document.createEvent(\"Event\");gestureEvent.initEvent(event,true,true);gestureEvent.gesture=data;data.target.dispatchEvent(gestureEvent)}assign(Hammer,{INPUT_START:INPUT_START,INPUT_MOVE:INPUT_MOVE,INPUT_END:INPUT_END,INPUT_CANCEL:INPUT_CANCEL,STATE_POSSIBLE:STATE_POSSIBLE,STATE_BEGAN:STATE_BEGAN,STATE_CHANGED:STATE_CHANGED,STATE_ENDED:STATE_ENDED,STATE_RECOGNIZED:STATE_RECOGNIZED,STATE_CANCELLED:STATE_CANCELLED,STATE_FAILED:STATE_FAILED,DIRECTION_NONE:DIRECTION_NONE,DIRECTION_LEFT:DIRECTION_LEFT,DIRECTION_RIGHT:DIRECTION_RIGHT,DIRECTION_UP:DIRECTION_UP,DIRECTION_DOWN:DIRECTION_DOWN,DIRECTION_HORIZONTAL:DIRECTION_HORIZONTAL,DIRECTION_VERTICAL:DIRECTION_VERTICAL,DIRECTION_ALL:DIRECTION_ALL,Manager:Manager,Input:Input,TouchAction:TouchAction,TouchInput:TouchInput,MouseInput:MouseInput,PointerEventInput:PointerEventInput,TouchMouseInput:TouchMouseInput,SingleTouchInput:SingleTouchInput,Recognizer:Recognizer,AttrRecognizer:AttrRecognizer,Tap:TapRecognizer,Pan:PanRecognizer,Swipe:SwipeRecognizer,Pinch:PinchRecognizer,Rotate:RotateRecognizer,Press:PressRecognizer,on:addEventListeners,off:removeEventListeners,each:each,merge:merge,extend:extend,assign:assign,inherit:inherit,bindFn:bindFn,prefixed:prefixed});var freeGlobal=typeof window!==\"undefined\"?window:typeof self!==\"undefined\"?self:{};freeGlobal.Hammer=Hammer;if(true){!(__WEBPACK_AMD_DEFINE_RESULT__=function(){return Hammer}.call(exports,__webpack_require__,exports,module),__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else if(typeof module!=\"undefined\"&&module.exports){module.exports=Hammer}else{window[exportName]=Hammer}})(window,document,\"Hammer\")},function(module,exports,__webpack_require__){\"use strict\";exports.util=__webpack_require__(2);exports.DOMutil=__webpack_require__(14);exports.DataSet=__webpack_require__(11);exports.DataView=__webpack_require__(12);exports.Queue=__webpack_require__(43);exports.Timeline=__webpack_require__(178);exports.Graph2d=__webpack_require__(180);exports.timeline={Core:__webpack_require__(65),DateUtil:__webpack_require__(36),Range:__webpack_require__(64),stack:__webpack_require__(100),TimeStep:__webpack_require__(66),components:{items:{Item:__webpack_require__(38),BackgroundItem:__webpack_require__(103),BoxItem:__webpack_require__(101),PointItem:__webpack_require__(102),RangeItem:__webpack_require__(70)},BackgroundGroup:__webpack_require__(69),Component:__webpack_require__(16),CurrentTime:__webpack_require__(67),CustomTime:__webpack_require__(46),DataAxis:__webpack_require__(107),DataScale:__webpack_require__(108),GraphGroup:__webpack_require__(109),Group:__webpack_require__(68),ItemSet:__webpack_require__(99),Legend:__webpack_require__(112),LineGraph:__webpack_require__(106),TimeAxis:__webpack_require__(45)}};exports.moment=__webpack_require__(9);exports.Hammer=__webpack_require__(10);exports.keycharm=__webpack_require__(35)},function(module,exports,__webpack_require__){\"use strict\";var moment=__webpack_require__(9);var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Range=__webpack_require__(64);var Core=__webpack_require__(65);var TimeAxis=__webpack_require__(45);var CurrentTime=__webpack_require__(67);var CustomTime=__webpack_require__(46);var ItemSet=__webpack_require__(99);var printStyle=__webpack_require__(15).printStyle;var allOptions=__webpack_require__(105).allOptions;var configureOptions=__webpack_require__(105).configureOptions;var Configurator=__webpack_require__(71)[\"default\"];var Validator=__webpack_require__(15)[\"default\"];function Timeline(container,items,groups,options){if(!(this instanceof Timeline)){throw new SyntaxError(\"Constructor must be called with the new operator\")}if(!(Array.isArray(groups)||groups instanceof DataSet||groups instanceof DataView)&&groups instanceof Object){var forthArgument=options;options=groups;groups=forthArgument}if(options&&options.throttleRedraw){console.warn('Timeline option \"throttleRedraw\" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.')}var me=this;this.defaultOptions={start:null,end:null,autoResize:true,orientation:{axis:\"bottom\",item:\"bottom\"},moment:moment,width:null,height:null,maxHeight:null,minHeight:null};this.options=util.deepExtend({},this.defaultOptions);this._create(container);if(!options||options&&typeof options.rtl==\"undefined\"){this.dom.root.style.visibility=\"hidden\";var directionFromDom,domNode=this.dom.root;while(!directionFromDom&&domNode){directionFromDom=window.getComputedStyle(domNode,null).direction;domNode=domNode.parentElement}this.options.rtl=directionFromDom&&directionFromDom.toLowerCase()==\"rtl\"}else{this.options.rtl=options.rtl}this.options.rollingMode=options&&options.rollingMode;this.options.onInitialDrawComplete=options&&options.onInitialDrawComplete;this.components=[];this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{getScale:function getScale(){return me.timeAxis.step.scale},getStep:function getStep(){return me.timeAxis.step.step},toScreen:me._toScreen.bind(me),toGlobalScreen:me._toGlobalScreen.bind(me),toTime:me._toTime.bind(me),toGlobalTime:me._toGlobalTime.bind(me)}};this.range=new Range(this.body,this.options);this.components.push(this.range);this.body.range=this.range;this.timeAxis=new TimeAxis(this.body,this.options);this.timeAxis2=null;this.components.push(this.timeAxis);this.currentTime=new CurrentTime(this.body,this.options);this.components.push(this.currentTime);this.itemSet=new ItemSet(this.body,this.options);this.components.push(this.itemSet);this.itemsData=null;this.groupsData=null;this.dom.root.onclick=function(event){me.emit(\"click\",me.getEventProperties(event))};this.dom.root.ondblclick=function(event){me.emit(\"doubleClick\",me.getEventProperties(event))};this.dom.root.oncontextmenu=function(event){me.emit(\"contextmenu\",me.getEventProperties(event))};this.dom.root.onmouseover=function(event){me.emit(\"mouseOver\",me.getEventProperties(event))};if(window.PointerEvent){this.dom.root.onpointerdown=function(event){me.emit(\"mouseDown\",me.getEventProperties(event))};this.dom.root.onpointermove=function(event){me.emit(\"mouseMove\",me.getEventProperties(event))};this.dom.root.onpointerup=function(event){me.emit(\"mouseUp\",me.getEventProperties(event))}}else{this.dom.root.onmousemove=function(event){me.emit(\"mouseMove\",me.getEventProperties(event))};this.dom.root.onmousedown=function(event){me.emit(\"mouseDown\",me.getEventProperties(event))};this.dom.root.onmouseup=function(event){me.emit(\"mouseUp\",me.getEventProperties(event))}}this.initialFitDone=false;this.on(\"changed\",function(){if(this.itemsData==null||this.options.rollingMode)return;if(!me.initialFitDone){me.initialFitDone=true;if(me.options.start!=undefined||me.options.end!=undefined){if(me.options.start==undefined||me.options.end==undefined){var range=me.getItemRange()}var start=me.options.start!=undefined?me.options.start:range.min;var end=me.options.end!=undefined?me.options.end:range.max;me.setWindow(start,end,{animation:false})}else{me.fit({animation:false})}}if(!me.initialDrawDone&&me.initialRangeChangeDone){me.initialDrawDone=true;me.dom.root.style.visibility=\"visible\";if(me.options.onInitialDrawComplete){setTimeout(function(){return me.options.onInitialDrawComplete()},0)}}});if(options){this.setOptions(options)}if(groups){this.setGroups(groups)}if(items){this.setItems(items)}this._redraw()}Timeline.prototype=new Core;Timeline.prototype._createConfigurator=function(){return new Configurator(this,this.dom.container,configureOptions)};Timeline.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:true});this._redraw()};Timeline.prototype.setOptions=function(options){var errorFound=Validator.validate(options,allOptions);if(errorFound===true){console.log(\"%cErrors have been found in the supplied options object.\",printStyle)}Core.prototype.setOptions.call(this,options);if(\"type\"in options){if(options.type!==this.options.type){this.options.type=options.type;var itemsData=this.itemsData;if(itemsData){var selection=this.getSelection();this.setItems(null);this.setItems(itemsData);this.setSelection(selection)}}}};Timeline.prototype.setItems=function(items){var newDataSet;if(!items){newDataSet=null}else if(items instanceof DataSet||items instanceof DataView){newDataSet=items}else{newDataSet=new DataSet(items,{type:{start:\"Date\",end:\"Date\"}})}this.itemsData=newDataSet;this.itemSet&&this.itemSet.setItems(newDataSet)};Timeline.prototype.setGroups=function(groups){var newDataSet;if(!groups){newDataSet=null}else{var filter=function filter(group){return group.visible!==false};if(groups instanceof DataSet||groups instanceof DataView){newDataSet=new DataView(groups,{filter:filter})}else{newDataSet=new DataSet(groups.filter(filter))}}this.groupsData=newDataSet;this.itemSet.setGroups(newDataSet)};Timeline.prototype.setData=function(data){if(data&&data.groups){this.setGroups(data.groups)}if(data&&data.items){this.setItems(data.items)}};Timeline.prototype.setSelection=function(ids,options){this.itemSet&&this.itemSet.setSelection(ids);if(options&&options.focus){this.focus(ids,options)}};Timeline.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]};Timeline.prototype.focus=function(id,options){if(!this.itemsData||id==undefined)return;var ids=Array.isArray(id)?id:[id];var itemsData=this.itemsData.getDataSet().get(ids,{type:{start:\"Date\",end:\"Date\"}});var start=null;var end=null;itemsData.forEach(function(itemData){var s=itemData.start.valueOf();var e=\"end\"in itemData?itemData.end.valueOf():itemData.start.valueOf();if(start===null||s<start){start=s}if(end===null||e>end){end=e}});if(start!==null&&end!==null){var me=this;var item=this.itemSet.items[ids[0]];var startPos=this._getScrollTop()*-1;var initialVerticalScroll=null;var verticalAnimationFrame=function verticalAnimationFrame(ease,willDraw,done){var verticalScroll=getItemVerticalScroll(me,item);if(!initialVerticalScroll){initialVerticalScroll=verticalScroll}if(initialVerticalScroll.itemTop==verticalScroll.itemTop&&!initialVerticalScroll.shouldScroll){return}else if(initialVerticalScroll.itemTop!=verticalScroll.itemTop&&verticalScroll.shouldScroll){initialVerticalScroll=verticalScroll;startPos=me._getScrollTop()*-1}var from=startPos;var to=initialVerticalScroll.scrollOffset;var scrollTop=done?to:from+(to-from)*ease;me._setScrollTop(-scrollTop);if(!willDraw){me._redraw()}};var setFinalVerticalPosition=function setFinalVerticalPosition(){var finalVerticalScroll=getItemVerticalScroll(me,item);if(finalVerticalScroll.shouldScroll&&finalVerticalScroll.itemTop!=initialVerticalScroll.itemTop){me._setScrollTop(-finalVerticalScroll.scrollOffset);me._redraw()}};var finalVerticalCallback=function finalVerticalCallback(){setFinalVerticalPosition();setTimeout(setFinalVerticalPosition,100)};var middle=(start+end)/2;var interval=Math.max(this.range.end-this.range.start,(end-start)*1.1);var animation=options&&options.animation!==undefined?options.animation:true;if(!animation){initialVerticalScroll={shouldScroll:false,scrollOffset:-1,itemTop:-1}}this.range.setRange(middle-interval/2,middle+interval/2,{animation:animation},finalVerticalCallback,verticalAnimationFrame)}};Timeline.prototype.fit=function(options,callback){var animation=options&&options.animation!==undefined?options.animation:true;var range;var dataset=this.itemsData&&this.itemsData.getDataSet();if(dataset.length===1&&dataset.get()[0].end===undefined){range=this.getDataRange();this.moveTo(range.min.valueOf(),{animation:animation},callback)}else{range=this.getItemRange();this.range.setRange(range.min,range.max,{animation:animation},callback)}};function getStart(item){return util.convert(item.data.start,\"Date\").valueOf()}function getEnd(item){var end=item.data.end!=undefined?item.data.end:item.data.start;return util.convert(end,\"Date\").valueOf()}function getItemVerticalScroll(timeline,item){var leftHeight=timeline.props.leftContainer.height;var contentHeight=timeline.props.left.height;var group=item.parent;var offset=group.top;var shouldScroll=true;var orientation=timeline.timeAxis.options.orientation.axis;var itemTop=function itemTop(){if(orientation==\"bottom\"){return group.height-item.top-item.height}else{return item.top}};var currentScrollHeight=timeline._getScrollTop()*-1;var targetOffset=offset+itemTop();var height=item.height;if(targetOffset<currentScrollHeight){if(offset+leftHeight<=offset+itemTop()+height){offset+=itemTop()-timeline.itemSet.options.margin.item.vertical}}else if(targetOffset+height>currentScrollHeight+leftHeight){offset+=itemTop()+height-leftHeight+timeline.itemSet.options.margin.item.vertical}else{shouldScroll=false}offset=Math.min(offset,contentHeight-leftHeight);return{shouldScroll:shouldScroll,scrollOffset:offset,itemTop:targetOffset}}Timeline.prototype.getItemRange=function(){var range=this.getDataRange();var min=range.min!==null?range.min.valueOf():null;var max=range.max!==null?range.max.valueOf():null;var minItem=null;var maxItem=null;if(min!=null&&max!=null){var interval=max-min;if(interval<=0){interval=10}var factor=interval/this.props.center.width;var redrawQueue={};var redrawQueueLength=0;util.forEach(this.itemSet.items,function(item,key){if(item.groupShowing){var returnQueue=true;redrawQueue[key]=item.redraw(returnQueue);redrawQueueLength=redrawQueue[key].length}});var needRedraw=redrawQueueLength>0;if(needRedraw){for(var i=0;i<redrawQueueLength;i++){util.forEach(redrawQueue,function(fns){fns[i]()})}}util.forEach(this.itemSet.items,function(item){var start=getStart(item);var end=getEnd(item);var startSide;var endSide;if(this.options.rtl){startSide=start-(item.getWidthRight()+10)*factor;endSide=end+(item.getWidthLeft()+10)*factor}else{startSide=start-(item.getWidthLeft()+10)*factor;endSide=end+(item.getWidthRight()+10)*factor}if(startSide<min){min=startSide;minItem=item}if(endSide>max){max=endSide;maxItem=item}}.bind(this));if(minItem&&maxItem){var lhs=minItem.getWidthLeft()+10;var rhs=maxItem.getWidthRight()+10;var delta=this.props.center.width-lhs-rhs;if(delta>0){if(this.options.rtl){min=getStart(minItem)-rhs*interval/delta;max=getEnd(maxItem)+lhs*interval/delta}else{min=getStart(minItem)-lhs*interval/delta;max=getEnd(maxItem)+rhs*interval/delta}}}}return{min:min!=null?new Date(min):null,max:max!=null?new Date(max):null}};Timeline.prototype.getDataRange=function(){var min=null;var max=null;var dataset=this.itemsData&&this.itemsData.getDataSet();if(dataset){dataset.forEach(function(item){var start=util.convert(item.start,\"Date\").valueOf();var end=util.convert(item.end!=undefined?item.end:item.start,\"Date\").valueOf();if(min===null||start<min){min=start}if(max===null||end>max){max=end}})}return{min:min!=null?new Date(min):null,max:max!=null?new Date(max):null}};Timeline.prototype.getEventProperties=function(event){var clientX=event.center?event.center.x:event.clientX;var clientY=event.center?event.center.y:event.clientY;var x;if(this.options.rtl){x=util.getAbsoluteRight(this.dom.centerContainer)-clientX}else{x=clientX-util.getAbsoluteLeft(this.dom.centerContainer)}var y=clientY-util.getAbsoluteTop(this.dom.centerContainer);var item=this.itemSet.itemFromTarget(event);var group=this.itemSet.groupFromTarget(event);var customTime=CustomTime.customTimeFromTarget(event);var snap=this.itemSet.options.snap||null;var scale=this.body.util.getScale();var step=this.body.util.getStep();var time=this._toTime(x);var snappedTime=snap?snap(time,scale,step):time;var element=util.getTarget(event);var what=null;if(item!=null){what=\"item\"}else if(customTime!=null){what=\"custom-time\"}else if(util.hasParent(element,this.timeAxis.dom.foreground)){what=\"axis\"}else if(this.timeAxis2&&util.hasParent(element,this.timeAxis2.dom.foreground)){what=\"axis\"}else if(util.hasParent(element,this.itemSet.dom.labelSet)){what=\"group-label\"}else if(util.hasParent(element,this.currentTime.bar)){what=\"current-time\"}else if(util.hasParent(element,this.dom.center)){what=\"background\"}return{event:event,item:item?item.id:null,group:group?group.groupId:null,what:what,pageX:event.srcEvent?event.srcEvent.pageX:event.pageX,pageY:event.srcEvent?event.srcEvent.pageY:event.pageY,x:x,y:y,time:time,snappedTime:snappedTime}};Timeline.prototype.toggleRollingMode=function(){if(this.range.rolling){this.range.stopRolling()}else{if(this.options.rollingMode==undefined){this.setOptions(this.options)}this.range.startRolling()}};module.exports=Timeline},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var util=__webpack_require__(2);var ColorPicker=function(){function ColorPicker(){var pixelRatio=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;(0,_classCallCheck3[\"default\"])(this,ColorPicker);this.pixelRatio=pixelRatio;this.generated=false;this.centerCoordinates={x:289/2,y:289/2};this.r=289*.49;this.color={r:255,g:255,b:255,a:1};this.hueCircle=undefined;this.initialColor={r:255,g:255,b:255,a:1};this.previousColor=undefined;this.applied=false;this.updateCallback=function(){};this.closeCallback=function(){};this._create()}(0,_createClass3[\"default\"])(ColorPicker,[{key:\"insertTo\",value:function insertTo(container){if(this.hammer!==undefined){this.hammer.destroy();this.hammer=undefined}this.container=container;this.container.appendChild(this.frame);this._bindHammer();this._setSize()}},{key:\"setUpdateCallback\",value:function setUpdateCallback(callback){if(typeof callback===\"function\"){this.updateCallback=callback}else{throw new Error(\"Function attempted to set as colorPicker update callback is not a function.\")}}},{key:\"setCloseCallback\",value:function setCloseCallback(callback){if(typeof callback===\"function\"){this.closeCallback=callback}else{throw new Error(\"Function attempted to set as colorPicker closing callback is not a function.\")}}},{key:\"_isColorString\",value:function _isColorString(color){var htmlColors={black:\"#000000\",navy:\"#000080\",darkblue:\"#00008B\",mediumblue:\"#0000CD\",blue:\"#0000FF\",darkgreen:\"#006400\",green:\"#008000\",teal:\"#008080\",darkcyan:\"#008B8B\",deepskyblue:\"#00BFFF\",darkturquoise:\"#00CED1\",mediumspringgreen:\"#00FA9A\",lime:\"#00FF00\",springgreen:\"#00FF7F\",aqua:\"#00FFFF\",cyan:\"#00FFFF\",midnightblue:\"#191970\",dodgerblue:\"#1E90FF\",lightseagreen:\"#20B2AA\",forestgreen:\"#228B22\",seagreen:\"#2E8B57\",darkslategray:\"#2F4F4F\",limegreen:\"#32CD32\",mediumseagreen:\"#3CB371\",turquoise:\"#40E0D0\",royalblue:\"#4169E1\",steelblue:\"#4682B4\",darkslateblue:\"#483D8B\",mediumturquoise:\"#48D1CC\",indigo:\"#4B0082\",darkolivegreen:\"#556B2F\",cadetblue:\"#5F9EA0\",cornflowerblue:\"#6495ED\",mediumaquamarine:\"#66CDAA\",dimgray:\"#696969\",slateblue:\"#6A5ACD\",olivedrab:\"#6B8E23\",slategray:\"#708090\",lightslategray:\"#778899\",mediumslateblue:\"#7B68EE\",lawngreen:\"#7CFC00\",chartreuse:\"#7FFF00\",aquamarine:\"#7FFFD4\",maroon:\"#800000\",purple:\"#800080\",olive:\"#808000\",gray:\"#808080\",skyblue:\"#87CEEB\",lightskyblue:\"#87CEFA\",blueviolet:\"#8A2BE2\",darkred:\"#8B0000\",darkmagenta:\"#8B008B\",saddlebrown:\"#8B4513\",darkseagreen:\"#8FBC8F\",lightgreen:\"#90EE90\",mediumpurple:\"#9370D8\",darkviolet:\"#9400D3\",palegreen:\"#98FB98\",darkorchid:\"#9932CC\",yellowgreen:\"#9ACD32\",sienna:\"#A0522D\",brown:\"#A52A2A\",darkgray:\"#A9A9A9\",lightblue:\"#ADD8E6\",greenyellow:\"#ADFF2F\",paleturquoise:\"#AFEEEE\",lightsteelblue:\"#B0C4DE\",powderblue:\"#B0E0E6\",firebrick:\"#B22222\",darkgoldenrod:\"#B8860B\",mediumorchid:\"#BA55D3\",rosybrown:\"#BC8F8F\",darkkhaki:\"#BDB76B\",silver:\"#C0C0C0\",mediumvioletred:\"#C71585\",indianred:\"#CD5C5C\",peru:\"#CD853F\",chocolate:\"#D2691E\",tan:\"#D2B48C\",lightgrey:\"#D3D3D3\",palevioletred:\"#D87093\",thistle:\"#D8BFD8\",orchid:\"#DA70D6\",goldenrod:\"#DAA520\",crimson:\"#DC143C\",gainsboro:\"#DCDCDC\",plum:\"#DDA0DD\",burlywood:\"#DEB887\",lightcyan:\"#E0FFFF\",lavender:\"#E6E6FA\",darksalmon:\"#E9967A\",violet:\"#EE82EE\",palegoldenrod:\"#EEE8AA\",lightcoral:\"#F08080\",khaki:\"#F0E68C\",aliceblue:\"#F0F8FF\",honeydew:\"#F0FFF0\",azure:\"#F0FFFF\",sandybrown:\"#F4A460\",wheat:\"#F5DEB3\",beige:\"#F5F5DC\",whitesmoke:\"#F5F5F5\",mintcream:\"#F5FFFA\",ghostwhite:\"#F8F8FF\",salmon:\"#FA8072\",antiquewhite:\"#FAEBD7\",linen:\"#FAF0E6\",lightgoldenrodyellow:\"#FAFAD2\",oldlace:\"#FDF5E6\",red:\"#FF0000\",fuchsia:\"#FF00FF\",magenta:\"#FF00FF\",deeppink:\"#FF1493\",orangered:\"#FF4500\",tomato:\"#FF6347\",hotpink:\"#FF69B4\",coral:\"#FF7F50\",darkorange:\"#FF8C00\",lightsalmon:\"#FFA07A\",orange:\"#FFA500\",lightpink:\"#FFB6C1\",pink:\"#FFC0CB\",gold:\"#FFD700\",peachpuff:\"#FFDAB9\",navajowhite:\"#FFDEAD\",moccasin:\"#FFE4B5\",bisque:\"#FFE4C4\",mistyrose:\"#FFE4E1\",blanchedalmond:\"#FFEBCD\",papayawhip:\"#FFEFD5\",lavenderblush:\"#FFF0F5\",seashell:\"#FFF5EE\",cornsilk:\"#FFF8DC\",lemonchiffon:\"#FFFACD\",floralwhite:\"#FFFAF0\",snow:\"#FFFAFA\",yellow:\"#FFFF00\",lightyellow:\"#FFFFE0\",ivory:\"#FFFFF0\",white:\"#FFFFFF\"};if(typeof color===\"string\"){return htmlColors[color]}}},{key:\"setColor\",value:function setColor(color){var setInitial=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(color===\"none\"){return}var rgba=void 0;var htmlColor=this._isColorString(color);if(htmlColor!==undefined){color=htmlColor}if(util.isString(color)===true){if(util.isValidRGB(color)===true){var rgbaArray=color.substr(4).substr(0,color.length-5).split(\",\");rgba={r:rgbaArray[0],g:rgbaArray[1],b:rgbaArray[2],a:1}}else if(util.isValidRGBA(color)===true){var _rgbaArray=color.substr(5).substr(0,color.length-6).split(\",\");rgba={r:_rgbaArray[0],g:_rgbaArray[1],b:_rgbaArray[2],a:_rgbaArray[3]}}else if(util.isValidHex(color)===true){var rgbObj=util.hexToRGB(color);rgba={r:rgbObj.r,g:rgbObj.g,b:rgbObj.b,a:1}}}else{if(color instanceof Object){if(color.r!==undefined&&color.g!==undefined&&color.b!==undefined){var alpha=color.a!==undefined?color.a:\"1.0\";rgba={r:color.r,g:color.g,b:color.b,a:alpha}}}}if(rgba===undefined){throw new Error(\"Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: \"+(0,_stringify2[\"default\"])(color))}else{this._setColor(rgba,setInitial)}}},{key:\"show\",value:function show(){if(this.closeCallback!==undefined){this.closeCallback();this.closeCallback=undefined}this.applied=false;this.frame.style.display=\"block\";this._generateHueCircle()}},{key:\"_hide\",value:function _hide(){var _this=this;var storePrevious=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;if(storePrevious===true){this.previousColor=util.extend({},this.color)}if(this.applied===true){this.updateCallback(this.initialColor)}this.frame.style.display=\"none\";setTimeout(function(){if(_this.closeCallback!==undefined){_this.closeCallback();_this.closeCallback=undefined}},0)}},{key:\"_save\",value:function _save(){this.updateCallback(this.color);this.applied=false;this._hide()}},{key:\"_apply\",value:function _apply(){this.applied=true;this.updateCallback(this.color);this._updatePicker(this.color)}},{key:\"_loadLast\",value:function _loadLast(){if(this.previousColor!==undefined){this.setColor(this.previousColor,false)}else{alert(\"There is no last color to load...\")}}},{key:\"_setColor\",value:function _setColor(rgba){var setInitial=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(setInitial===true){this.initialColor=util.extend({},rgba)}this.color=rgba;var hsv=util.RGBToHSV(rgba.r,rgba.g,rgba.b);var angleConvert=2*Math.PI;var radius=this.r*hsv.s;var x=this.centerCoordinates.x+radius*Math.sin(angleConvert*hsv.h);var y=this.centerCoordinates.y+radius*Math.cos(angleConvert*hsv.h);this.colorPickerSelector.style.left=x-.5*this.colorPickerSelector.clientWidth+\"px\";this.colorPickerSelector.style.top=y-.5*this.colorPickerSelector.clientHeight+\"px\";this._updatePicker(rgba)}},{key:\"_setOpacity\",value:function _setOpacity(value){this.color.a=value/100;this._updatePicker(this.color)}},{key:\"_setBrightness\",value:function _setBrightness(value){var hsv=util.RGBToHSV(this.color.r,this.color.g,this.color.b);hsv.v=value/100;var rgba=util.HSVToRGB(hsv.h,hsv.s,hsv.v);rgba[\"a\"]=this.color.a;this.color=rgba;this._updatePicker()}},{key:\"_updatePicker\",value:function _updatePicker(){var rgba=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.color;var hsv=util.RGBToHSV(rgba.r,rgba.g,rgba.b);var ctx=this.colorPickerCanvas.getContext(\"2d\");if(this.pixelRation===undefined){this.pixelRatio=(window.devicePixelRatio||1)/(ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1)}ctx.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var w=this.colorPickerCanvas.clientWidth;var h=this.colorPickerCanvas.clientHeight;ctx.clearRect(0,0,w,h);ctx.putImageData(this.hueCircle,0,0);ctx.fillStyle=\"rgba(0,0,0,\"+(1-hsv.v)+\")\";ctx.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r);ctx.fill();this.brightnessRange.value=100*hsv.v;this.opacityRange.value=100*rgba.a;this.initialColorDiv.style.backgroundColor=\"rgba(\"+this.initialColor.r+\",\"+this.initialColor.g+\",\"+this.initialColor.b+\",\"+this.initialColor.a+\")\";this.newColorDiv.style.backgroundColor=\"rgba(\"+this.color.r+\",\"+this.color.g+\",\"+this.color.b+\",\"+this.color.a+\")\"}},{key:\"_setSize\",value:function _setSize(){this.colorPickerCanvas.style.width=\"100%\";this.colorPickerCanvas.style.height=\"100%\";this.colorPickerCanvas.width=289*this.pixelRatio;this.colorPickerCanvas.height=289*this.pixelRatio}},{key:\"_create\",value:function _create(){this.frame=document.createElement(\"div\");this.frame.className=\"vis-color-picker\";this.colorPickerDiv=document.createElement(\"div\");this.colorPickerSelector=document.createElement(\"div\");this.colorPickerSelector.className=\"vis-selector\";this.colorPickerDiv.appendChild(this.colorPickerSelector);this.colorPickerCanvas=document.createElement(\"canvas\");this.colorPickerDiv.appendChild(this.colorPickerCanvas);if(!this.colorPickerCanvas.getContext){var noCanvas=document.createElement(\"DIV\");noCanvas.style.color=\"red\";noCanvas.style.fontWeight=\"bold\";noCanvas.style.padding=\"10px\";noCanvas.innerHTML=\"Error: your browser does not support HTML canvas\";this.colorPickerCanvas.appendChild(noCanvas)}else{var ctx=this.colorPickerCanvas.getContext(\"2d\");this.pixelRatio=(window.devicePixelRatio||1)/(ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1);this.colorPickerCanvas.getContext(\"2d\").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}this.colorPickerDiv.className=\"vis-color\";this.opacityDiv=document.createElement(\"div\");this.opacityDiv.className=\"vis-opacity\";this.brightnessDiv=document.createElement(\"div\");this.brightnessDiv.className=\"vis-brightness\";this.arrowDiv=document.createElement(\"div\");this.arrowDiv.className=\"vis-arrow\";this.opacityRange=document.createElement(\"input\");try{this.opacityRange.type=\"range\";this.opacityRange.min=\"0\";this.opacityRange.max=\"100\"}catch(err){}this.opacityRange.value=\"100\";this.opacityRange.className=\"vis-range\";this.brightnessRange=document.createElement(\"input\");try{this.brightnessRange.type=\"range\";this.brightnessRange.min=\"0\";this.brightnessRange.max=\"100\"}catch(err){}this.brightnessRange.value=\"100\";this.brightnessRange.className=\"vis-range\";this.opacityDiv.appendChild(this.opacityRange);this.brightnessDiv.appendChild(this.brightnessRange);var me=this;this.opacityRange.onchange=function(){me._setOpacity(this.value)};this.opacityRange.oninput=function(){me._setOpacity(this.value)};this.brightnessRange.onchange=function(){me._setBrightness(this.value)};this.brightnessRange.oninput=function(){me._setBrightness(this.value)};this.brightnessLabel=document.createElement(\"div\");this.brightnessLabel.className=\"vis-label vis-brightness\";this.brightnessLabel.innerHTML=\"brightness:\";this.opacityLabel=document.createElement(\"div\");this.opacityLabel.className=\"vis-label vis-opacity\";this.opacityLabel.innerHTML=\"opacity:\";this.newColorDiv=document.createElement(\"div\");this.newColorDiv.className=\"vis-new-color\";this.newColorDiv.innerHTML=\"new\";this.initialColorDiv=document.createElement(\"div\");this.initialColorDiv.className=\"vis-initial-color\";this.initialColorDiv.innerHTML=\"initial\";this.cancelButton=document.createElement(\"div\");this.cancelButton.className=\"vis-button vis-cancel\";this.cancelButton.innerHTML=\"cancel\";this.cancelButton.onclick=this._hide.bind(this,false);this.applyButton=document.createElement(\"div\");this.applyButton.className=\"vis-button vis-apply\";this.applyButton.innerHTML=\"apply\";this.applyButton.onclick=this._apply.bind(this);this.saveButton=document.createElement(\"div\");this.saveButton.className=\"vis-button vis-save\";this.saveButton.innerHTML=\"save\";this.saveButton.onclick=this._save.bind(this);this.loadButton=document.createElement(\"div\");this.loadButton.className=\"vis-button vis-load\";this.loadButton.innerHTML=\"load last\";this.loadButton.onclick=this._loadLast.bind(this)\n;this.frame.appendChild(this.colorPickerDiv);this.frame.appendChild(this.arrowDiv);this.frame.appendChild(this.brightnessLabel);this.frame.appendChild(this.brightnessDiv);this.frame.appendChild(this.opacityLabel);this.frame.appendChild(this.opacityDiv);this.frame.appendChild(this.newColorDiv);this.frame.appendChild(this.initialColorDiv);this.frame.appendChild(this.cancelButton);this.frame.appendChild(this.applyButton);this.frame.appendChild(this.saveButton);this.frame.appendChild(this.loadButton)}},{key:\"_bindHammer\",value:function _bindHammer(){var _this2=this;this.drag={};this.pinch={};this.hammer=new Hammer(this.colorPickerCanvas);this.hammer.get(\"pinch\").set({enable:true});hammerUtil.onTouch(this.hammer,function(event){_this2._moveSelector(event)});this.hammer.on(\"tap\",function(event){_this2._moveSelector(event)});this.hammer.on(\"panstart\",function(event){_this2._moveSelector(event)});this.hammer.on(\"panmove\",function(event){_this2._moveSelector(event)});this.hammer.on(\"panend\",function(event){_this2._moveSelector(event)})}},{key:\"_generateHueCircle\",value:function _generateHueCircle(){if(this.generated===false){var ctx=this.colorPickerCanvas.getContext(\"2d\");if(this.pixelRation===undefined){this.pixelRatio=(window.devicePixelRatio||1)/(ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1)}ctx.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var w=this.colorPickerCanvas.clientWidth;var h=this.colorPickerCanvas.clientHeight;ctx.clearRect(0,0,w,h);var x=void 0,y=void 0,hue=void 0,sat=void 0;this.centerCoordinates={x:w*.5,y:h*.5};this.r=.49*w;var angleConvert=2*Math.PI/360;var hfac=1/360;var sfac=1/this.r;var rgb=void 0;for(hue=0;hue<360;hue++){for(sat=0;sat<this.r;sat++){x=this.centerCoordinates.x+sat*Math.sin(angleConvert*hue);y=this.centerCoordinates.y+sat*Math.cos(angleConvert*hue);rgb=util.HSVToRGB(hue*hfac,sat*sfac,1);ctx.fillStyle=\"rgb(\"+rgb.r+\",\"+rgb.g+\",\"+rgb.b+\")\";ctx.fillRect(x-.5,y-.5,2,2)}}ctx.strokeStyle=\"rgba(0,0,0,1)\";ctx.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r);ctx.stroke();this.hueCircle=ctx.getImageData(0,0,w,h)}this.generated=true}},{key:\"_moveSelector\",value:function _moveSelector(event){var rect=this.colorPickerDiv.getBoundingClientRect();var left=event.center.x-rect.left;var top=event.center.y-rect.top;var centerY=.5*this.colorPickerDiv.clientHeight;var centerX=.5*this.colorPickerDiv.clientWidth;var x=left-centerX;var y=top-centerY;var angle=Math.atan2(x,y);var radius=.98*Math.min(Math.sqrt(x*x+y*y),centerX);var newTop=Math.cos(angle)*radius+centerY;var newLeft=Math.sin(angle)*radius+centerX;this.colorPickerSelector.style.top=newTop-.5*this.colorPickerSelector.clientHeight+\"px\";this.colorPickerSelector.style.left=newLeft-.5*this.colorPickerSelector.clientWidth+\"px\";var h=angle/(2*Math.PI);h=h<0?h+1:h;var s=radius/this.r;var hsv=util.RGBToHSV(this.color.r,this.color.g,this.color.b);hsv.h=h;hsv.s=s;var rgba=util.HSVToRGB(hsv.h,hsv.s,hsv.v);rgba[\"a\"]=this.color.a;this.color=rgba;this.initialColorDiv.style.backgroundColor=\"rgba(\"+this.initialColor.r+\",\"+this.initialColor.g+\",\"+this.initialColor.b+\",\"+this.initialColor.a+\")\";this.newColorDiv.style.backgroundColor=\"rgba(\"+this.color.r+\",\"+this.color.g+\",\"+this.color.b+\",\"+this.color.a+\")\"}}]);return ColorPicker}();exports[\"default\"]=ColorPicker},function(module,exports,__webpack_require__){\"use strict\";var moment=__webpack_require__(9);var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Range=__webpack_require__(64);var Core=__webpack_require__(65);var TimeAxis=__webpack_require__(45);var CurrentTime=__webpack_require__(67);var CustomTime=__webpack_require__(46);var LineGraph=__webpack_require__(106);var printStyle=__webpack_require__(15).printStyle;var allOptions=__webpack_require__(113).allOptions;var configureOptions=__webpack_require__(113).configureOptions;var Configurator=__webpack_require__(71)[\"default\"];var Validator=__webpack_require__(15)[\"default\"];function Graph2d(container,items,groups,options){if(!(Array.isArray(groups)||groups instanceof DataSet||groups instanceof DataView)&&groups instanceof Object){var forthArgument=options;options=groups;groups=forthArgument}if(options&&options.throttleRedraw){console.warn('Graph2d option \"throttleRedraw\" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.')}var me=this;this.defaultOptions={start:null,end:null,autoResize:true,orientation:{axis:\"bottom\",item:\"bottom\"},moment:moment,width:null,height:null,maxHeight:null,minHeight:null};this.options=util.deepExtend({},this.defaultOptions);this._create(container);this.components=[];this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:me._toScreen.bind(me),toGlobalScreen:me._toGlobalScreen.bind(me),toTime:me._toTime.bind(me),toGlobalTime:me._toGlobalTime.bind(me)}};this.range=new Range(this.body);this.components.push(this.range);this.body.range=this.range;this.timeAxis=new TimeAxis(this.body);this.components.push(this.timeAxis);this.currentTime=new CurrentTime(this.body);this.components.push(this.currentTime);this.linegraph=new LineGraph(this.body);this.components.push(this.linegraph);this.itemsData=null;this.groupsData=null;this.on(\"tap\",function(event){me.emit(\"click\",me.getEventProperties(event))});this.on(\"doubletap\",function(event){me.emit(\"doubleClick\",me.getEventProperties(event))});this.dom.root.oncontextmenu=function(event){me.emit(\"contextmenu\",me.getEventProperties(event))};if(options){this.setOptions(options)}if(groups){this.setGroups(groups)}if(items){this.setItems(items)}this._redraw()}Graph2d.prototype=new Core;Graph2d.prototype.setOptions=function(options){var errorFound=Validator.validate(options,allOptions);if(errorFound===true){console.log(\"%cErrors have been found in the supplied options object.\",printStyle)}Core.prototype.setOptions.call(this,options)};Graph2d.prototype.setItems=function(items){var initialLoad=this.itemsData==null;var newDataSet;if(!items){newDataSet=null}else if(items instanceof DataSet||items instanceof DataView){newDataSet=items}else{newDataSet=new DataSet(items,{type:{start:\"Date\",end:\"Date\"}})}this.itemsData=newDataSet;this.linegraph&&this.linegraph.setItems(newDataSet);if(initialLoad){if(this.options.start!=undefined||this.options.end!=undefined){var start=this.options.start!=undefined?this.options.start:null;var end=this.options.end!=undefined?this.options.end:null;this.setWindow(start,end,{animation:false})}else{this.fit({animation:false})}}};Graph2d.prototype.setGroups=function(groups){var newDataSet;if(!groups){newDataSet=null}else if(groups instanceof DataSet||groups instanceof DataView){newDataSet=groups}else{newDataSet=new DataSet(groups)}this.groupsData=newDataSet;this.linegraph.setGroups(newDataSet)};Graph2d.prototype.getLegend=function(groupId,width,height){if(width===undefined){width=15}if(height===undefined){height=15}if(this.linegraph.groups[groupId]!==undefined){return this.linegraph.groups[groupId].getLegend(width,height)}else{return\"cannot find group:'\"+groupId+\"'\"}};Graph2d.prototype.isGroupVisible=function(groupId){if(this.linegraph.groups[groupId]!==undefined){return this.linegraph.groups[groupId].visible&&(this.linegraph.options.groups.visibility[groupId]===undefined||this.linegraph.options.groups.visibility[groupId]==true)}else{return false}};Graph2d.prototype.getDataRange=function(){var min=null;var max=null;for(var groupId in this.linegraph.groups){if(this.linegraph.groups.hasOwnProperty(groupId)){if(this.linegraph.groups[groupId].visible==true){for(var i=0;i<this.linegraph.groups[groupId].itemsData.length;i++){var item=this.linegraph.groups[groupId].itemsData[i];var value=util.convert(item.x,\"Date\").valueOf();min=min==null?value:min>value?value:min;max=max==null?value:max<value?value:max}}}}return{min:min!=null?new Date(min):null,max:max!=null?new Date(max):null}};Graph2d.prototype.getEventProperties=function(event){var clientX=event.center?event.center.x:event.clientX;var clientY=event.center?event.center.y:event.clientY;var x=clientX-util.getAbsoluteLeft(this.dom.centerContainer);var y=clientY-util.getAbsoluteTop(this.dom.centerContainer);var time=this._toTime(x);var customTime=CustomTime.customTimeFromTarget(event);var element=util.getTarget(event);var what=null;if(util.hasParent(element,this.timeAxis.dom.foreground)){what=\"axis\"}else if(this.timeAxis2&&util.hasParent(element,this.timeAxis2.dom.foreground)){what=\"axis\"}else if(util.hasParent(element,this.linegraph.yAxisLeft.dom.frame)){what=\"data-axis\"}else if(util.hasParent(element,this.linegraph.yAxisRight.dom.frame)){what=\"data-axis\"}else if(util.hasParent(element,this.linegraph.legendLeft.dom.frame)){what=\"legend\"}else if(util.hasParent(element,this.linegraph.legendRight.dom.frame)){what=\"legend\"}else if(customTime!=null){what=\"custom-time\"}else if(util.hasParent(element,this.currentTime.bar)){what=\"current-time\"}else if(util.hasParent(element,this.dom.center)){what=\"background\"}var value=[];var yAxisLeft=this.linegraph.yAxisLeft;var yAxisRight=this.linegraph.yAxisRight;if(!yAxisLeft.hidden&&this.itemsData.length>0){value.push(yAxisLeft.screenToValue(y))}if(!yAxisRight.hidden&&this.itemsData.length>0){value.push(yAxisRight.screenToValue(y))}return{event:event,what:what,pageX:event.srcEvent?event.srcEvent.pageX:event.pageX,pageY:event.srcEvent?event.srcEvent.pageY:event.pageY,x:x,y:y,time:time,value:value}};Graph2d.prototype._createConfigurator=function(){return new Configurator(this,this.dom.container,configureOptions)};module.exports=Graph2d},function(module,exports,__webpack_require__){\"use strict\";exports.util=__webpack_require__(2);exports.DOMutil=__webpack_require__(14);exports.DataSet=__webpack_require__(11);exports.DataView=__webpack_require__(12);exports.Queue=__webpack_require__(43);exports.Network=__webpack_require__(182);exports.network={Images:__webpack_require__(116),dotparser:__webpack_require__(114),gephiParser:__webpack_require__(115),allOptions:__webpack_require__(122)};exports.network.convertDot=function(input){return exports.network.dotparser.DOTToGraph(input)};exports.network.convertGephi=function(input,options){return exports.network.gephiParser.parseGephi(input,options)};exports.moment=__webpack_require__(9);exports.Hammer=__webpack_require__(10);exports.keycharm=__webpack_require__(35)},function(module,exports,__webpack_require__){\"use strict\";__webpack_require__(183);var Emitter=__webpack_require__(44);var util=__webpack_require__(2);var dotparser=__webpack_require__(114);var gephiParser=__webpack_require__(115);var Activator=__webpack_require__(97);var locales=__webpack_require__(184);var Images=__webpack_require__(116)[\"default\"];var Groups=__webpack_require__(186)[\"default\"];var NodesHandler=__webpack_require__(187)[\"default\"];var EdgesHandler=__webpack_require__(214)[\"default\"];var PhysicsEngine=__webpack_require__(220)[\"default\"];var ClusterEngine=__webpack_require__(227)[\"default\"];var CanvasRenderer=__webpack_require__(229)[\"default\"];var Canvas=__webpack_require__(230)[\"default\"];var View=__webpack_require__(231)[\"default\"];var InteractionHandler=__webpack_require__(232)[\"default\"];var SelectionHandler=__webpack_require__(234)[\"default\"];var LayoutEngine=__webpack_require__(235)[\"default\"];var ManipulationSystem=__webpack_require__(237)[\"default\"];var Configurator=__webpack_require__(71)[\"default\"];var Validator=__webpack_require__(15)[\"default\"];var _require=__webpack_require__(15),printStyle=_require.printStyle;var _require2=__webpack_require__(122),allOptions=_require2.allOptions,configureOptions=_require2.configureOptions;var KamadaKawai=__webpack_require__(238)[\"default\"];function Network(container,data,options){var _this=this;if(!(this instanceof Network)){throw new SyntaxError(\"Constructor must be called with the new operator\")}this.options={};this.defaultOptions={locale:\"en\",locales:locales,clickToUse:false};util.extend(this.options,this.defaultOptions);this.body={container:container,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function onTap(){},onTouch:function onTouch(){},onDoubleTap:function onDoubleTap(){},onHold:function onHold(){},onDragStart:function onDragStart(){},onDrag:function onDrag(){},onDragEnd:function onDragEnd(){},onMouseWheel:function onMouseWheel(){},onPinch:function onPinch(){},onMouseMove:function onMouseMove(){},onRelease:function onRelease(){},onContext:function onContext(){}},data:{nodes:null,edges:null},functions:{createNode:function createNode(){},createEdge:function createEdge(){},getPointer:function getPointer(){}},modules:{},view:{scale:1,translation:{x:0,y:0}}};this.bindEventListeners();this.images=new Images(function(){return _this.body.emitter.emit(\"_requestRedraw\")});this.groups=new Groups;this.canvas=new Canvas(this.body);this.selectionHandler=new SelectionHandler(this.body,this.canvas);this.interactionHandler=new InteractionHandler(this.body,this.canvas,this.selectionHandler);this.view=new View(this.body,this.canvas);this.renderer=new CanvasRenderer(this.body,this.canvas);this.physics=new PhysicsEngine(this.body);this.layoutEngine=new LayoutEngine(this.body);this.clustering=new ClusterEngine(this.body);this.manipulation=new ManipulationSystem(this.body,this.canvas,this.selectionHandler);this.nodesHandler=new NodesHandler(this.body,this.images,this.groups,this.layoutEngine);this.edgesHandler=new EdgesHandler(this.body,this.images,this.groups);this.body.modules[\"kamadaKawai\"]=new KamadaKawai(this.body,150,.05);this.body.modules[\"clustering\"]=this.clustering;this.canvas._create();this.setOptions(options);this.setData(data)}Emitter(Network.prototype);Network.prototype.setOptions=function(options){var _this2=this;if(options!==undefined){var errorFound=Validator.validate(options,allOptions);if(errorFound===true){console.log(\"%cErrors have been found in the supplied options object.\",printStyle)}var fields=[\"locale\",\"locales\",\"clickToUse\"];util.selectiveDeepExtend(fields,this.options,options);options=this.layoutEngine.setOptions(options.layout,options);this.canvas.setOptions(options);this.groups.setOptions(options.groups);this.nodesHandler.setOptions(options.nodes);this.edgesHandler.setOptions(options.edges);this.physics.setOptions(options.physics);this.manipulation.setOptions(options.manipulation,options,this.options);this.interactionHandler.setOptions(options.interaction);this.renderer.setOptions(options.interaction);this.selectionHandler.setOptions(options.interaction);if(options.groups!==undefined){this.body.emitter.emit(\"refreshNodes\")}if(\"configure\"in options){if(!this.configurator){this.configurator=new Configurator(this,this.body.container,configureOptions,this.canvas.pixelRatio)}this.configurator.setOptions(options.configure)}if(this.configurator&&this.configurator.options.enabled===true){var networkOptions={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};util.deepExtend(networkOptions.nodes,this.nodesHandler.options);util.deepExtend(networkOptions.edges,this.edgesHandler.options);util.deepExtend(networkOptions.layout,this.layoutEngine.options);util.deepExtend(networkOptions.interaction,this.selectionHandler.options);util.deepExtend(networkOptions.interaction,this.renderer.options);util.deepExtend(networkOptions.interaction,this.interactionHandler.options);util.deepExtend(networkOptions.manipulation,this.manipulation.options);util.deepExtend(networkOptions.physics,this.physics.options);util.deepExtend(networkOptions.global,this.canvas.options);util.deepExtend(networkOptions.global,this.options);this.configurator.setModuleOptions(networkOptions)}if(options.clickToUse!==undefined){if(options.clickToUse===true){if(this.activator===undefined){this.activator=new Activator(this.canvas.frame);this.activator.on(\"change\",function(){_this2.body.emitter.emit(\"activate\")})}}else{if(this.activator!==undefined){this.activator.destroy();delete this.activator}this.body.emitter.emit(\"activate\")}}else{this.body.emitter.emit(\"activate\")}this.canvas.setSize();this.body.emitter.emit(\"startSimulation\")}};Network.prototype._updateVisibleIndices=function(){var nodes=this.body.nodes;var edges=this.body.edges;this.body.nodeIndices=[];this.body.edgeIndices=[];for(var nodeId in nodes){if(nodes.hasOwnProperty(nodeId)){if(!this.clustering._isClusteredNode(nodeId)&&nodes[nodeId].options.hidden===false){this.body.nodeIndices.push(nodes[nodeId].id)}}}for(var edgeId in edges){if(edges.hasOwnProperty(edgeId)){var edge=edges[edgeId];var fromNode=nodes[edge.fromId];var toNode=nodes[edge.toId];var edgeNodesPresent=fromNode!==undefined&&toNode!==undefined;var isVisible=!this.clustering._isClusteredEdge(edgeId)&&edge.options.hidden===false&&edgeNodesPresent&&fromNode.options.hidden===false&&toNode.options.hidden===false;if(isVisible){this.body.edgeIndices.push(edge.id)}}}};Network.prototype.bindEventListeners=function(){var _this3=this;this.body.emitter.on(\"_dataChanged\",function(){_this3.edgesHandler._updateState();_this3.body.emitter.emit(\"_dataUpdated\")});this.body.emitter.on(\"_dataUpdated\",function(){_this3.clustering._updateState();_this3._updateVisibleIndices();_this3._updateValueRange(_this3.body.nodes);_this3._updateValueRange(_this3.body.edges);_this3.body.emitter.emit(\"startSimulation\");_this3.body.emitter.emit(\"_requestRedraw\")})};Network.prototype.setData=function(data){this.body.emitter.emit(\"resetPhysics\");this.body.emitter.emit(\"_resetData\");this.selectionHandler.unselectAll();if(data&&data.dot&&(data.nodes||data.edges)){throw new SyntaxError('Data must contain either parameter \"dot\" or '+' parameter pair \"nodes\" and \"edges\", but not both.')}this.setOptions(data&&data.options);if(data&&data.dot){console.log(\"The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);\");var dotData=dotparser.DOTToGraph(data.dot);this.setData(dotData);return}else if(data&&data.gephi){console.log(\"The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);\");var gephiData=gephiParser.parseGephi(data.gephi);this.setData(gephiData);return}else{this.nodesHandler.setData(data&&data.nodes,true);this.edgesHandler.setData(data&&data.edges,true)}this.body.emitter.emit(\"_dataChanged\");this.body.emitter.emit(\"_dataLoaded\");this.body.emitter.emit(\"initPhysics\")};Network.prototype.destroy=function(){this.body.emitter.emit(\"destroy\");this.body.emitter.off();this.off();delete this.groups;delete this.canvas;delete this.selectionHandler;delete this.interactionHandler;delete this.view;delete this.renderer;delete this.physics;delete this.layoutEngine;delete this.clustering;delete this.manipulation;delete this.nodesHandler;delete this.edgesHandler;delete this.configurator;delete this.images;for(var nodeId in this.body.nodes){if(!this.body.nodes.hasOwnProperty(nodeId))continue;delete this.body.nodes[nodeId]}for(var edgeId in this.body.edges){if(!this.body.edges.hasOwnProperty(edgeId))continue;delete this.body.edges[edgeId]}util.recursiveDOMDelete(this.body.container)};Network.prototype._updateValueRange=function(obj){var id;var valueMin=undefined;var valueMax=undefined;var valueTotal=0;for(id in obj){if(obj.hasOwnProperty(id)){var value=obj[id].getValue();if(value!==undefined){valueMin=valueMin===undefined?value:Math.min(value,valueMin);valueMax=valueMax===undefined?value:Math.max(value,valueMax);valueTotal+=value}}}if(valueMin!==undefined&&valueMax!==undefined){for(id in obj){if(obj.hasOwnProperty(id)){obj[id].setValueRange(valueMin,valueMax,valueTotal)}}}};Network.prototype.isActive=function(){return!this.activator||this.activator.active};Network.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)};Network.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)};Network.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)};Network.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)};Network.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)};Network.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)};Network.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)};Network.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)};Network.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)};Network.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)};Network.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)};Network.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)};Network.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)};Network.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)};Network.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)};Network.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)};Network.prototype.editNodeMode=function(){console.log(\"Deprecated: Please use editNode instead of editNodeMode.\");return this.manipulation.editNode.apply(this.manipulation,arguments)};Network.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)};Network.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)};Network.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)};Network.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)};Network.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)};Network.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)};Network.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)};Network.prototype.getConnectedNodes=function(objectId){if(this.body.nodes[objectId]!==undefined){return this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments)}else{return this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)}};Network.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)};Network.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)};Network.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)};Network.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)};Network.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)};Network.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)};Network.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)};Network.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)};Network.prototype.getNodeAt=function(){var node=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);if(node!==undefined&&node.id!==undefined){return node.id}return node};Network.prototype.getEdgeAt=function(){var edge=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);if(edge!==undefined&&edge.id!==undefined){return edge.id}return edge};Network.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)};Network.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)};Network.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments);this.redraw()};Network.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)};Network.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)};Network.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)};Network.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)};Network.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)};Network.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)};Network.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)};Network.prototype.getOptionsFromConfigurator=function(){var options={};if(this.configurator){options=this.configurator.getOptions.apply(this.configurator)}return options};module.exports=Network},function(module,exports,__webpack_require__){\"use strict\";if(typeof CanvasRenderingContext2D!==\"undefined\"){CanvasRenderingContext2D.prototype.circle=function(x,y,r){this.beginPath();this.arc(x,y,r,0,2*Math.PI,false);this.closePath()};CanvasRenderingContext2D.prototype.square=function(x,y,r){this.beginPath();this.rect(x-r,y-r,r*2,r*2);this.closePath()};CanvasRenderingContext2D.prototype.triangle=function(x,y,r){this.beginPath();r*=1.15;y+=.275*r;var s=r*2;var s2=s/2;var ir=Math.sqrt(3)/6*s;var h=Math.sqrt(s*s-s2*s2);this.moveTo(x,y-(h-ir));this.lineTo(x+s2,y+ir);this.lineTo(x-s2,y+ir);this.lineTo(x,y-(h-ir));this.closePath()};CanvasRenderingContext2D.prototype.triangleDown=function(x,y,r){this.beginPath();r*=1.15;y-=.275*r;var s=r*2;var s2=s/2;var ir=Math.sqrt(3)/6*s;var h=Math.sqrt(s*s-s2*s2);this.moveTo(x,y+(h-ir));this.lineTo(x+s2,y-ir);this.lineTo(x-s2,y-ir);this.lineTo(x,y+(h-ir));this.closePath()};CanvasRenderingContext2D.prototype.star=function(x,y,r){this.beginPath();r*=.82;y+=.1*r;for(var n=0;n<10;n++){var radius=n%2===0?r*1.3:r*.5;this.lineTo(x+radius*Math.sin(n*2*Math.PI/10),y-radius*Math.cos(n*2*Math.PI/10))}this.closePath()};CanvasRenderingContext2D.prototype.diamond=function(x,y,r){this.beginPath();this.lineTo(x,y+r);this.lineTo(x+r,y);this.lineTo(x,y-r);this.lineTo(x-r,y);this.closePath()};CanvasRenderingContext2D.prototype.roundRect=function(x,y,w,h,r){var r2d=Math.PI/180;if(w-2*r<0){r=w/2}if(h-2*r<0){r=h/2}this.beginPath();this.moveTo(x+r,y);this.lineTo(x+w-r,y);this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false);this.lineTo(x+w,y+h-r);this.arc(x+w-r,y+h-r,r,0,r2d*90,false);this.lineTo(x+r,y+h);this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false);this.lineTo(x,y+r);this.arc(x+r,y+r,r,r2d*180,r2d*270,false);this.closePath()};CanvasRenderingContext2D.prototype.ellipse_vis=function(x,y,w,h){var kappa=.5522848,ox=w/2*kappa,oy=h/2*kappa,xe=x+w,ye=y+h,xm=x+w/2,ym=y+h/2;this.beginPath();this.moveTo(x,ym);this.bezierCurveTo(x,ym-oy,xm-ox,y,xm,y);this.bezierCurveTo(xm+ox,y,xe,ym-oy,xe,ym);this.bezierCurveTo(xe,ym+oy,xm+ox,ye,xm,ye);this.bezierCurveTo(xm-ox,ye,x,ym+oy,x,ym);this.closePath()};CanvasRenderingContext2D.prototype.database=function(x,y,w,h){var f=1/3;var wEllipse=w;var hEllipse=h*f;var kappa=.5522848,ox=wEllipse/2*kappa,oy=hEllipse/2*kappa,xe=x+wEllipse,ye=y+hEllipse,xm=x+wEllipse/2,ym=y+hEllipse/2,ymb=y+(h-hEllipse/2),yeb=y+h;this.beginPath();this.moveTo(xe,ym);this.bezierCurveTo(xe,ym+oy,xm+ox,ye,xm,ye);this.bezierCurveTo(xm-ox,ye,x,ym+oy,x,ym);this.bezierCurveTo(x,ym-oy,xm-ox,y,xm,y);this.bezierCurveTo(xm+ox,y,xe,ym-oy,xe,ym);this.lineTo(xe,ymb);this.bezierCurveTo(xe,ymb+oy,xm+ox,yeb,xm,yeb);this.bezierCurveTo(xm-ox,yeb,x,ymb+oy,x,ymb);this.lineTo(x,ym)};CanvasRenderingContext2D.prototype.dashedLine=function(x,y,x2,y2,pattern){this.beginPath();this.moveTo(x,y);var patternLength=pattern.length;var dx=x2-x;var dy=y2-y;var slope=dy/dx;var distRemaining=Math.sqrt(dx*dx+dy*dy);var patternIndex=0;var draw=true;var xStep=0;var dashLength=pattern[0];while(distRemaining>=.1){dashLength=pattern[patternIndex++%patternLength];if(dashLength>distRemaining){dashLength=distRemaining}xStep=Math.sqrt(dashLength*dashLength/(1+slope*slope));xStep=dx<0?-xStep:xStep;x+=xStep;y+=slope*xStep;if(draw===true){this.lineTo(x,y)}else{this.moveTo(x,y)}distRemaining-=dashLength;draw=!draw}};CanvasRenderingContext2D.prototype.hexagon=function(x,y,r){this.beginPath();var sides=6;var a=Math.PI*2/sides;this.moveTo(x+r,y);for(var i=1;i<sides;i++){this.lineTo(x+r*Math.cos(a*i),y+r*Math.sin(a*i))}this.closePath()}}},function(module,exports,__webpack_require__){\"use strict\";exports[\"en\"]={edit:\"Edit\",del:\"Delete selected\",back:\"Back\",addNode:\"Add Node\",addEdge:\"Add Edge\",editNode:\"Edit Node\",editEdge:\"Edit Edge\",addDescription:\"Click in an empty space to place a new node.\",edgeDescription:\"Click on a node and drag the edge to another node to connect them.\",editEdgeDescription:\"Click on the control points and drag them to a node to connect to it.\",createEdgeError:\"Cannot link edges to a cluster.\",deleteClusterError:\"Clusters cannot be deleted.\",editClusterError:\"Clusters cannot be edited.\"};exports[\"en_EN\"]=exports[\"en\"];exports[\"en_US\"]=exports[\"en\"];exports[\"de\"]={edit:\"Editieren\",del:\"Lösche Auswahl\",back:\"Zurück\",addNode:\"Knoten hinzufügen\",addEdge:\"Kante hinzufügen\",editNode:\"Knoten editieren\",editEdge:\"Kante editieren\",addDescription:\"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.\",edgeDescription:\"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.\",editEdgeDescription:\"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.\",createEdgeError:\"Es ist nicht möglich, Kanten mit Clustern zu verbinden.\",deleteClusterError:\"Cluster können nicht gelöscht werden.\",editClusterError:\"Cluster können nicht editiert werden.\"};exports[\"de_DE\"]=exports[\"de\"];exports[\"es\"]={edit:\"Editar\",del:\"Eliminar selección\",back:\"Átras\",addNode:\"Añadir nodo\",addEdge:\"Añadir arista\",editNode:\"Editar nodo\",editEdge:\"Editar arista\",addDescription:\"Haga clic en un lugar vacío para colocar un nuevo nodo.\",edgeDescription:\"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.\",editEdgeDescription:\"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.\",createEdgeError:\"No se puede conectar una arista a un grupo.\",deleteClusterError:\"No es posible eliminar grupos.\",editClusterError:\"No es posible editar grupos.\"};exports[\"es_ES\"]=exports[\"es\"];exports[\"it\"]={edit:\"Modifica\",del:\"Cancella la selezione\",back:\"Indietro\",addNode:\"Aggiungi un nodo\",addEdge:\"Aggiungi un vertice\",editNode:\"Modifica il nodo\",editEdge:\"Modifica il vertice\",addDescription:\"Clicca per aggiungere un nuovo nodo\",edgeDescription:\"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.\",editEdgeDescription:\"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.\",createEdgeError:\"Non si possono collegare vertici ad un cluster\",deleteClusterError:\"I cluster non possono essere cancellati\",editClusterError:\"I clusters non possono essere modificati.\"};exports[\"it_IT\"]=exports[\"it\"];exports[\"nl\"]={edit:\"Wijzigen\",del:\"Selectie verwijderen\",\nback:\"Terug\",addNode:\"Node toevoegen\",addEdge:\"Link toevoegen\",editNode:\"Node wijzigen\",editEdge:\"Link wijzigen\",addDescription:\"Klik op een leeg gebied om een nieuwe node te maken.\",edgeDescription:\"Klik op een node en sleep de link naar een andere node om ze te verbinden.\",editEdgeDescription:\"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.\",createEdgeError:\"Kan geen link maken naar een cluster.\",deleteClusterError:\"Clusters kunnen niet worden verwijderd.\",editClusterError:\"Clusters kunnen niet worden aangepast.\"};exports[\"nl_NL\"]=exports[\"nl\"];exports[\"nl_BE\"]=exports[\"nl\"];exports[\"pt-br\"]={edit:\"Editar\",del:\"Remover selecionado\",back:\"Voltar\",addNode:\"Adicionar nó\",addEdge:\"Adicionar aresta\",editNode:\"Editar nó\",editEdge:\"Editar aresta\",addDescription:\"Clique em um espaço em branco para adicionar um novo nó\",edgeDescription:\"Clique em um nó e arraste a aresta até outro nó para conectá-los\",editEdgeDescription:\"Clique nos pontos de controle e os arraste para um nó para conectá-los\",createEdgeError:\"Não foi possível linkar arestas a um cluster.\",deleteClusterError:\"Clusters não puderam ser removidos.\",editClusterError:\"Clusters não puderam ser editados.\"};exports[\"pt-BR\"]=exports[\"pt-br\"];exports[\"pt_BR\"]=exports[\"pt-br\"];exports[\"pt_br\"]=exports[\"pt-br\"];exports[\"ru\"]={edit:\"Редактировать\",del:\"Удалить выбранное\",back:\"Назад\",addNode:\"Добавить узел\",addEdge:\"Добавить ребро\",editNode:\"Редактировать узел\",editEdge:\"Редактировать ребро\",addDescription:\"Кликните в свободное место, чтобы добавить новый узел.\",edgeDescription:\"Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.\",editEdgeDescription:\"Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.\",createEdgeError:\"Невозможно соединить ребра в кластер.\",deleteClusterError:\"Кластеры не могут быть удалены\",editClusterError:\"Кластеры недоступны для редактирования.\"};exports[\"ru_RU\"]=exports[\"ru\"];exports[\"cn\"]={edit:\"编辑\",del:\"删除选定\",back:\"返回\",addNode:\"添加节点\",addEdge:\"添加连接线\",editNode:\"编辑节点\",editEdge:\"编辑连接线\",addDescription:\"单击空白处放置新节点。\",edgeDescription:\"单击某个节点并将该连接线拖动到另一个节点以连接它们。\",editEdgeDescription:\"单击控制节点并将它们拖到节点上连接。\",createEdgeError:\"无法将连接线连接到群集。\",deleteClusterError:\"无法删除群集。\",editClusterError:\"无法编辑群集。\"};exports[\"zh_CN\"]=exports[\"cn\"]},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CachedImage=function(){function CachedImage(){(0,_classCallCheck3[\"default\"])(this,CachedImage);this.NUM_ITERATIONS=4;this.image=new Image;this.canvas=document.createElement(\"canvas\")}(0,_createClass3[\"default\"])(CachedImage,[{key:\"init\",value:function init(){if(this.initialized())return;this.src=this.image.src;var w=this.image.width;var h=this.image.height;this.width=w;this.height=h;var h2=Math.floor(h/2);var h4=Math.floor(h/4);var h8=Math.floor(h/8);var h16=Math.floor(h/16);var w2=Math.floor(w/2);var w4=Math.floor(w/4);var w8=Math.floor(w/8);var w16=Math.floor(w/16);this.canvas.width=3*w4;this.canvas.height=h2;this.coordinates=[[0,0,w2,h2],[w2,0,w4,h4],[w2,h4,w8,h8],[5*w8,h4,w16,h16]];this._fillMipMap()}},{key:\"initialized\",value:function initialized(){return this.coordinates!==undefined}},{key:\"_fillMipMap\",value:function _fillMipMap(){var ctx=this.canvas.getContext(\"2d\");var to=this.coordinates[0];ctx.drawImage(this.image,to[0],to[1],to[2],to[3]);for(var iterations=1;iterations<this.NUM_ITERATIONS;iterations++){var from=this.coordinates[iterations-1];var _to=this.coordinates[iterations];ctx.drawImage(this.canvas,from[0],from[1],from[2],from[3],_to[0],_to[1],_to[2],_to[3])}}},{key:\"drawImageAtPosition\",value:function drawImageAtPosition(ctx,factor,left,top,width,height){if(!this.initialized())return;if(factor>2){factor*=.5;var iterations=0;while(factor>2&&iterations<this.NUM_ITERATIONS){factor*=.5;iterations+=1}if(iterations>=this.NUM_ITERATIONS){iterations=this.NUM_ITERATIONS-1}var from=this.coordinates[iterations];ctx.drawImage(this.canvas,from[0],from[1],from[2],from[3],left,top,width,height)}else{ctx.drawImage(this.image,left,top,width,height)}}}]);return CachedImage}();exports[\"default\"]=CachedImage},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Groups=function(){function Groups(){(0,_classCallCheck3[\"default\"])(this,Groups);this.clear();this.defaultIndex=0;this.groupsArray=[];this.groupIndex=0;this.defaultGroups=[{border:\"#2B7CE9\",background:\"#97C2FC\",highlight:{border:\"#2B7CE9\",background:\"#D2E5FF\"},hover:{border:\"#2B7CE9\",background:\"#D2E5FF\"}},{border:\"#FFA500\",background:\"#FFFF00\",highlight:{border:\"#FFA500\",background:\"#FFFFA3\"},hover:{border:\"#FFA500\",background:\"#FFFFA3\"}},{border:\"#FA0A10\",background:\"#FB7E81\",highlight:{border:\"#FA0A10\",background:\"#FFAFB1\"},hover:{border:\"#FA0A10\",background:\"#FFAFB1\"}},{border:\"#41A906\",background:\"#7BE141\",highlight:{border:\"#41A906\",background:\"#A1EC76\"},hover:{border:\"#41A906\",background:\"#A1EC76\"}},{border:\"#E129F0\",background:\"#EB7DF4\",highlight:{border:\"#E129F0\",background:\"#F0B3F5\"},hover:{border:\"#E129F0\",background:\"#F0B3F5\"}},{border:\"#7C29F0\",background:\"#AD85E4\",highlight:{border:\"#7C29F0\",background:\"#D3BDF0\"},hover:{border:\"#7C29F0\",background:\"#D3BDF0\"}},{border:\"#C37F00\",background:\"#FFA807\",highlight:{border:\"#C37F00\",background:\"#FFCA66\"},hover:{border:\"#C37F00\",background:\"#FFCA66\"}},{border:\"#4220FB\",background:\"#6E6EFD\",highlight:{border:\"#4220FB\",background:\"#9B9BFD\"},hover:{border:\"#4220FB\",background:\"#9B9BFD\"}},{border:\"#FD5A77\",background:\"#FFC0CB\",highlight:{border:\"#FD5A77\",background:\"#FFD1D9\"},hover:{border:\"#FD5A77\",background:\"#FFD1D9\"}},{border:\"#4AD63A\",background:\"#C2FABC\",highlight:{border:\"#4AD63A\",background:\"#E6FFE3\"},hover:{border:\"#4AD63A\",background:\"#E6FFE3\"}},{border:\"#990000\",background:\"#EE0000\",highlight:{border:\"#BB0000\",background:\"#FF3333\"},hover:{border:\"#BB0000\",background:\"#FF3333\"}},{border:\"#FF6000\",background:\"#FF6000\",highlight:{border:\"#FF6000\",background:\"#FF6000\"},hover:{border:\"#FF6000\",background:\"#FF6000\"}},{border:\"#97C2FC\",background:\"#2B7CE9\",highlight:{border:\"#D2E5FF\",background:\"#2B7CE9\"},hover:{border:\"#D2E5FF\",background:\"#2B7CE9\"}},{border:\"#399605\",background:\"#255C03\",highlight:{border:\"#399605\",background:\"#255C03\"},hover:{border:\"#399605\",background:\"#255C03\"}},{border:\"#B70054\",background:\"#FF007E\",highlight:{border:\"#B70054\",background:\"#FF007E\"},hover:{border:\"#B70054\",background:\"#FF007E\"}},{border:\"#AD85E4\",background:\"#7C29F0\",highlight:{border:\"#D3BDF0\",background:\"#7C29F0\"},hover:{border:\"#D3BDF0\",background:\"#7C29F0\"}},{border:\"#4557FA\",background:\"#000EA1\",highlight:{border:\"#6E6EFD\",background:\"#000EA1\"},hover:{border:\"#6E6EFD\",background:\"#000EA1\"}},{border:\"#FFC0CB\",background:\"#FD5A77\",highlight:{border:\"#FFD1D9\",background:\"#FD5A77\"},hover:{border:\"#FFD1D9\",background:\"#FD5A77\"}},{border:\"#C2FABC\",background:\"#74D66A\",highlight:{border:\"#E6FFE3\",background:\"#74D66A\"},hover:{border:\"#E6FFE3\",background:\"#74D66A\"}},{border:\"#EE0000\",background:\"#990000\",highlight:{border:\"#FF3333\",background:\"#BB0000\"},hover:{border:\"#FF3333\",background:\"#BB0000\"}}];this.options={};this.defaultOptions={useDefaultGroups:true};util.extend(this.options,this.defaultOptions)}(0,_createClass3[\"default\"])(Groups,[{key:\"setOptions\",value:function setOptions(options){var optionFields=[\"useDefaultGroups\"];if(options!==undefined){for(var groupName in options){if(options.hasOwnProperty(groupName)){if(optionFields.indexOf(groupName)===-1){var group=options[groupName];this.add(groupName,group)}}}}}},{key:\"clear\",value:function clear(){this.groups={};this.groupsArray=[]}},{key:\"get\",value:function get(groupname){var shouldCreate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var group=this.groups[groupname];if(group===undefined&&shouldCreate){if(this.options.useDefaultGroups===false&&this.groupsArray.length>0){var index=this.groupIndex%this.groupsArray.length;this.groupIndex++;group={};group.color=this.groups[this.groupsArray[index]];this.groups[groupname]=group}else{var _index=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++;group={};group.color=this.defaultGroups[_index];this.groups[groupname]=group}}return group}},{key:\"add\",value:function add(groupName,style){this.groups[groupName]=style;this.groupsArray.push(groupName);return style}}]);return Groups}();exports[\"default\"]=Groups},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Node=__webpack_require__(47)[\"default\"];var NodesHandler=function(){function NodesHandler(body,images,groups,layoutEngine){var _this=this;(0,_classCallCheck3[\"default\"])(this,NodesHandler);this.body=body;this.images=images;this.groups=groups;this.layoutEngine=layoutEngine;this.body.functions.createNode=this.create.bind(this);this.nodesListeners={add:function add(event,params){_this.add(params.items)},update:function update(event,params){_this.update(params.items,params.data,params.oldData)},remove:function remove(event,params){_this.remove(params.items)}};this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:undefined,color:{border:\"#2B7CE9\",background:\"#97C2FC\",highlight:{border:\"#2B7CE9\",background:\"#D2E5FF\"},hover:{border:\"#2B7CE9\",background:\"#D2E5FF\"}},fixed:{x:false,y:false},font:{color:\"#343434\",size:14,face:\"arial\",background:\"none\",strokeWidth:0,strokeColor:\"#ffffff\",align:\"center\",vadjust:0,multi:false,bold:{mod:\"bold\"},boldital:{mod:\"bold italic\"},ital:{mod:\"italic\"},mono:{mod:\"\",size:15,face:\"monospace\",vadjust:2}},group:undefined,hidden:false,icon:{face:\"FontAwesome\",code:undefined,size:50,color:\"#2B7CE9\"},image:undefined,label:undefined,labelHighlightBold:true,level:undefined,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:true,scaling:{min:10,max:30,label:{enabled:false,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function customScalingFunction(min,max,total,value){if(max===min){return.5}else{var scale=1/(max-min);return Math.max(0,(value-min)*scale)}}},shadow:{enabled:false,color:\"rgba(0,0,0,0.5)\",size:10,x:5,y:5},shape:\"ellipse\",shapeProperties:{borderDashes:false,borderRadius:6,interpolation:true,useImageSize:false,useBorderWithImage:false},size:25,title:undefined,value:undefined,x:undefined,y:undefined};if(this.defaultOptions.mass<=0){throw\"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative\"}this.options=util.bridgeObject(this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(NodesHandler,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this2=this;this.body.emitter.on(\"refreshNodes\",this.refresh.bind(this));this.body.emitter.on(\"refresh\",this.refresh.bind(this));this.body.emitter.on(\"destroy\",function(){util.forEach(_this2.nodesListeners,function(callback,event){if(_this2.body.data.nodes)_this2.body.data.nodes.off(event,callback)});delete _this2.body.functions.createNode;delete _this2.nodesListeners.add;delete _this2.nodesListeners.update;delete _this2.nodesListeners.remove;delete _this2.nodesListeners})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){Node.parseOptions(this.options,options);if(options.shape!==undefined){for(var nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(nodeId)){this.body.nodes[nodeId].updateShape()}}}if(options.font!==undefined){for(var _nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(_nodeId)){this.body.nodes[_nodeId].updateLabelModule();this.body.nodes[_nodeId].needsRefresh()}}}if(options.size!==undefined){for(var _nodeId2 in this.body.nodes){if(this.body.nodes.hasOwnProperty(_nodeId2)){this.body.nodes[_nodeId2].needsRefresh()}}}if(options.hidden!==undefined||options.physics!==undefined){this.body.emitter.emit(\"_dataChanged\")}}}},{key:\"setData\",value:function setData(nodes){var doNotEmit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var oldNodesData=this.body.data.nodes;if(nodes instanceof DataSet||nodes instanceof DataView){this.body.data.nodes=nodes}else if(Array.isArray(nodes)){this.body.data.nodes=new DataSet;this.body.data.nodes.add(nodes)}else if(!nodes){this.body.data.nodes=new DataSet}else{throw new TypeError(\"Array or DataSet expected\")}if(oldNodesData){util.forEach(this.nodesListeners,function(callback,event){oldNodesData.off(event,callback)})}this.body.nodes={};if(this.body.data.nodes){var me=this;util.forEach(this.nodesListeners,function(callback,event){me.body.data.nodes.on(event,callback)});var ids=this.body.data.nodes.getIds();this.add(ids,true)}if(doNotEmit===false){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"add\",value:function add(ids){var doNotEmit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var id=void 0;var newNodes=[];for(var i=0;i<ids.length;i++){id=ids[i];var properties=this.body.data.nodes.get(id);var node=this.create(properties);newNodes.push(node);this.body.nodes[id]=node}this.layoutEngine.positionInitially(newNodes);if(doNotEmit===false){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"update\",value:function update(ids,changedData,oldData){var nodes=this.body.nodes;var dataChanged=false;for(var i=0;i<ids.length;i++){var id=ids[i];var node=nodes[id];var data=changedData[i];if(node!==undefined){if(node.setOptions(data)){dataChanged=true}}else{dataChanged=true;node=this.create(data);nodes[id]=node}}if(!dataChanged&&oldData!==undefined){dataChanged=changedData.some(function(newValue,index){var oldValue=oldData[index];return oldValue&&oldValue.level!==newValue.level})}if(dataChanged===true){this.body.emitter.emit(\"_dataChanged\")}else{this.body.emitter.emit(\"_dataUpdated\")}}},{key:\"remove\",value:function remove(ids){var nodes=this.body.nodes;for(var i=0;i<ids.length;i++){var id=ids[i];delete nodes[id]}this.body.emitter.emit(\"_dataChanged\")}},{key:\"create\",value:function create(properties){var constructorClass=arguments.length>1&&arguments[1]!==undefined?arguments[1]:Node;return new constructorClass(properties,this.body,this.images,this.groups,this.options,this.defaultOptions)}},{key:\"refresh\",value:function refresh(){var _this3=this;var clearPositions=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;util.forEach(this.body.nodes,function(node,nodeId){var data=_this3.body.data.nodes.get(nodeId);if(data!==undefined){if(clearPositions===true){node.setOptions({x:null,y:null})}node.setOptions({fixed:false});node.setOptions(data)}})}},{key:\"getPositions\",value:function getPositions(ids){var dataArray={};if(ids!==undefined){if(Array.isArray(ids)===true){for(var i=0;i<ids.length;i++){if(this.body.nodes[ids[i]]!==undefined){var node=this.body.nodes[ids[i]];dataArray[ids[i]]={x:Math.round(node.x),y:Math.round(node.y)}}}}else{if(this.body.nodes[ids]!==undefined){var _node=this.body.nodes[ids];dataArray[ids]={x:Math.round(_node.x),y:Math.round(_node.y)}}}}else{for(var _i=0;_i<this.body.nodeIndices.length;_i++){var _node2=this.body.nodes[this.body.nodeIndices[_i]];dataArray[this.body.nodeIndices[_i]]={x:Math.round(_node2.x),y:Math.round(_node2.y)}}}return dataArray}},{key:\"storePositions\",value:function storePositions(){var dataArray=[];var dataset=this.body.data.nodes.getDataSet();for(var nodeId in dataset._data){if(dataset._data.hasOwnProperty(nodeId)){var node=this.body.nodes[nodeId];if(dataset._data[nodeId].x!=Math.round(node.x)||dataset._data[nodeId].y!=Math.round(node.y)){dataArray.push({id:node.id,x:Math.round(node.x),y:Math.round(node.y)})}}}dataset.update(dataArray)}},{key:\"getBoundingBox\",value:function getBoundingBox(nodeId){if(this.body.nodes[nodeId]!==undefined){return this.body.nodes[nodeId].shape.boundingBox}}},{key:\"getConnectedNodes\",value:function getConnectedNodes(nodeId,direction){var nodeList=[];if(this.body.nodes[nodeId]!==undefined){var node=this.body.nodes[nodeId];var nodeObj={};for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];if(direction!==\"to\"&&edge.toId==node.id){if(nodeObj[edge.fromId]===undefined){nodeList.push(edge.fromId);nodeObj[edge.fromId]=true}}else if(direction!==\"from\"&&edge.fromId==node.id){if(nodeObj[edge.toId]===undefined){nodeList.push(edge.toId);nodeObj[edge.toId]=true}}}}return nodeList}},{key:\"getConnectedEdges\",value:function getConnectedEdges(nodeId){var edgeList=[];if(this.body.nodes[nodeId]!==undefined){var node=this.body.nodes[nodeId];for(var i=0;i<node.edges.length;i++){edgeList.push(node.edges[i].id)}}else{console.log(\"NodeId provided for getConnectedEdges does not exist. Provided: \",nodeId)}return edgeList}},{key:\"moveNode\",value:function moveNode(nodeId,x,y){var _this4=this;if(this.body.nodes[nodeId]!==undefined){this.body.nodes[nodeId].x=Number(x);this.body.nodes[nodeId].y=Number(y);setTimeout(function(){_this4.body.emitter.emit(\"startSimulation\")},0)}else{console.log(\"Node id supplied to moveNode does not exist. Provided: \",nodeId)}}}]);return NodesHandler}();exports[\"default\"]=NodesHandler},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(189),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(49);__webpack_require__(60);module.exports=__webpack_require__(190)},function(module,exports,__webpack_require__){var classof=__webpack_require__(86);var ITERATOR=__webpack_require__(13)(\"iterator\");var Iterators=__webpack_require__(31);module.exports=__webpack_require__(7).isIterable=function(it){var O=Object(it);return O[ITERATOR]!==undefined||\"@@iterator\"in O||Iterators.hasOwnProperty(classof(O))}},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var LabelAccumulator=__webpack_require__(192)[\"default\"];var ComponentUtil=__webpack_require__(48)[\"default\"];var LabelSplitter=function(){function LabelSplitter(ctx,parent,selected,hover){var _this=this;(0,_classCallCheck3[\"default\"])(this,LabelSplitter);this.ctx=ctx;this.parent=parent;var textWidth=function textWidth(text,mod){if(text===undefined)return 0;var values=_this.parent.getFormattingValues(ctx,selected,hover,mod);var width=0;if(text!==\"\"){var measure=_this.ctx.measureText(text);width=measure.width}return{width:width,values:values}};this.lines=new LabelAccumulator(textWidth)}(0,_createClass3[\"default\"])(LabelSplitter,[{key:\"process\",value:function process(text){if(!ComponentUtil.isValidLabel(text)){return this.lines.finalize()}var font=this.parent.fontOptions;text=text.replace(/\\r\\n/g,\"\\n\");text=text.replace(/\\r/g,\"\\n\");var nlLines=String(text).split(\"\\n\");var lineCount=nlLines.length;if(font.multi){for(var i=0;i<lineCount;i++){var blocks=this.splitBlocks(nlLines[i],font.multi);if(blocks===undefined)continue;if(blocks.length===0){this.lines.newLine(\"\");continue}if(font.maxWdt>0){for(var j=0;j<blocks.length;j++){var mod=blocks[j].mod;var _text=blocks[j].text;this.splitStringIntoLines(_text,mod,true)}}else{for(var _j=0;_j<blocks.length;_j++){var _mod=blocks[_j].mod;var _text2=blocks[_j].text;this.lines.append(_text2,_mod)}}this.lines.newLine()}}else{if(font.maxWdt>0){for(var _i=0;_i<lineCount;_i++){this.splitStringIntoLines(nlLines[_i])}}else{for(var _i2=0;_i2<lineCount;_i2++){this.lines.newLine(nlLines[_i2])}}}return this.lines.finalize()}},{key:\"decodeMarkupSystem\",value:function decodeMarkupSystem(markupSystem){var system=\"none\";if(markupSystem===\"markdown\"||markupSystem===\"md\"){system=\"markdown\"}else if(markupSystem===true||markupSystem===\"html\"){system=\"html\"}return system}},{key:\"splitHtmlBlocks\",value:function splitHtmlBlocks(text){var blocks=[];var s={bold:false,ital:false,mono:false,spacing:false,position:0,buffer:\"\",modStack:[]};s.mod=function(){return this.modStack.length===0?\"normal\":this.modStack[0]};s.modName=function(){if(this.modStack.length===0)return\"normal\";else if(this.modStack[0]===\"mono\")return\"mono\";else{if(s.bold&&s.ital){return\"boldital\"}else if(s.bold){return\"bold\"}else if(s.ital){return\"ital\"}}};s.emitBlock=function(){var override=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this.spacing){this.add(\" \");this.spacing=false}if(this.buffer.length>0){blocks.push({text:this.buffer,mod:this.modName()});this.buffer=\"\"}};s.add=function(text){if(text===\" \"){s.spacing=true}if(s.spacing){this.buffer+=\" \";this.spacing=false}if(text!=\" \"){this.buffer+=text}};while(s.position<text.length){var ch=text.charAt(s.position);if(/[ \\t]/.test(ch)){if(!s.mono){s.spacing=true}else{s.add(ch)}}else if(/</.test(ch)){if(!s.mono&&!s.bold&&/<b>/.test(text.substr(s.position,3))){s.emitBlock();s.bold=true;s.modStack.unshift(\"bold\");s.position+=2}else if(!s.mono&&!s.ital&&/<i>/.test(text.substr(s.position,3))){s.emitBlock();s.ital=true;s.modStack.unshift(\"ital\");s.position+=2}else if(!s.mono&&/<code>/.test(text.substr(s.position,6))){s.emitBlock();s.mono=true;s.modStack.unshift(\"mono\");s.position+=5}else if(!s.mono&&s.mod()===\"bold\"&&/<\\/b>/.test(text.substr(s.position,4))){s.emitBlock();s.bold=false;s.modStack.shift();s.position+=3}else if(!s.mono&&s.mod()===\"ital\"&&/<\\/i>/.test(text.substr(s.position,4))){s.emitBlock();s.ital=false;s.modStack.shift();s.position+=3}else if(s.mod()===\"mono\"&&/<\\/code>/.test(text.substr(s.position,7))){s.emitBlock();s.mono=false;s.modStack.shift();s.position+=6}else{s.add(ch)}}else if(/&/.test(ch)){if(/</.test(text.substr(s.position,4))){s.add(\"<\");s.position+=3}else if(/&/.test(text.substr(s.position,5))){s.add(\"&\");s.position+=4}else{s.add(\"&\")}}else{s.add(ch)}s.position++}s.emitBlock();return blocks}},{key:\"splitMarkdownBlocks\",value:function splitMarkdownBlocks(text){var blocks=[];var s={bold:false,ital:false,mono:false,beginable:true,spacing:false,position:0,buffer:\"\",modStack:[]};s.mod=function(){return this.modStack.length===0?\"normal\":this.modStack[0]};s.modName=function(){if(this.modStack.length===0)return\"normal\";else if(this.modStack[0]===\"mono\")return\"mono\";else{if(s.bold&&s.ital){return\"boldital\"}else if(s.bold){return\"bold\"}else if(s.ital){return\"ital\"}}};s.emitBlock=function(){var override=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this.spacing){this.add(\" \");this.spacing=false}if(this.buffer.length>0){blocks.push({text:this.buffer,mod:this.modName()});this.buffer=\"\"}};s.add=function(text){if(text===\" \"){s.spacing=true}if(s.spacing){this.buffer+=\" \";this.spacing=false}if(text!=\" \"){this.buffer+=text}};while(s.position<text.length){var ch=text.charAt(s.position);if(/[ \\t]/.test(ch)){if(!s.mono){s.spacing=true}else{s.add(ch)}s.beginable=true}else if(/\\\\/.test(ch)){if(s.position<text.length+1){s.position++;ch=text.charAt(s.position);if(/ \\t/.test(ch)){s.spacing=true}else{s.add(ch);s.beginable=false}}}else if(!s.mono&&!s.bold&&(s.beginable||s.spacing)&&/\\*/.test(ch)){s.emitBlock();s.bold=true;s.modStack.unshift(\"bold\")}else if(!s.mono&&!s.ital&&(s.beginable||s.spacing)&&/\\_/.test(ch)){s.emitBlock();s.ital=true;s.modStack.unshift(\"ital\")}else if(!s.mono&&(s.beginable||s.spacing)&&/`/.test(ch)){s.emitBlock();s.mono=true;s.modStack.unshift(\"mono\")}else if(!s.mono&&s.mod()===\"bold\"&&/\\*/.test(ch)){if(s.position===text.length-1||/[.,_` \\t\\n]/.test(text.charAt(s.position+1))){s.emitBlock();s.bold=false;s.modStack.shift()}else{s.add(ch)}}else if(!s.mono&&s.mod()===\"ital\"&&/\\_/.test(ch)){if(s.position===text.length-1||/[.,*` \\t\\n]/.test(text.charAt(s.position+1))){s.emitBlock();s.ital=false;s.modStack.shift()}else{s.add(ch)}}else if(s.mono&&s.mod()===\"mono\"&&/`/.test(ch)){if(s.position===text.length-1||/[.,*_ \\t\\n]/.test(text.charAt(s.position+1))){s.emitBlock();s.mono=false;s.modStack.shift()}else{s.add(ch)}}else{s.add(ch);s.beginable=false}s.position++}s.emitBlock();return blocks}},{key:\"splitBlocks\",value:function splitBlocks(text,markupSystem){var system=this.decodeMarkupSystem(markupSystem);if(system===\"none\"){return[{text:text,mod:\"normal\"}]}else if(system===\"markdown\"){return this.splitMarkdownBlocks(text)}else if(system===\"html\"){return this.splitHtmlBlocks(text)}}},{key:\"overMaxWidth\",value:function overMaxWidth(text){var width=this.ctx.measureText(text).width;return this.lines.curWidth()+width>this.parent.fontOptions.maxWdt}},{key:\"getLongestFit\",value:function getLongestFit(words){var text=\"\";var w=0;while(w<words.length){var pre=text===\"\"?\"\":\" \";var newText=text+pre+words[w];if(this.overMaxWidth(newText))break;text=newText;w++}return w}},{key:\"getLongestFitWord\",value:function getLongestFitWord(words){var w=0;while(w<words.length){if(this.overMaxWidth(words.slice(0,w)))break;w++}return w}},{key:\"splitStringIntoLines\",value:function splitStringIntoLines(str){var mod=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"normal\";var appendLast=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;str=str.replace(/^( +)/g,\"$1\\r\");str=str.replace(/([^\\r][^ ]*)( +)/g,\"$1\\r$2\\r\");var words=str.split(\"\\r\");while(words.length>0){var w=this.getLongestFit(words);if(w===0){var word=words[0];var x=this.getLongestFitWord(word);this.lines.newLine(word.slice(0,x),mod);words[0]=word.slice(x)}else{var newW=w;if(words[w-1]===\" \"){w--}else if(words[newW]===\" \"){newW++}var text=words.slice(0,w).join(\"\");if(w==words.length&&appendLast){this.lines.append(text,mod)}else{this.lines.newLine(text,mod)}words=words.slice(newW)}}}}]);return LabelSplitter}();exports[\"default\"]=LabelSplitter},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _assign=__webpack_require__(90);var _assign2=_interopRequireDefault(_assign);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var LabelAccumulator=function(){function LabelAccumulator(measureText){(0,_classCallCheck3[\"default\"])(this,LabelAccumulator);this.measureText=measureText;this.current=0;this.width=0;this.height=0;this.lines=[]}(0,_createClass3[\"default\"])(LabelAccumulator,[{key:\"_add\",value:function _add(l,text){var mod=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"normal\";if(this.lines[l]===undefined){this.lines[l]={width:0,height:0,blocks:[]}}var tmpText=text;if(text===undefined||text===\"\")tmpText=\" \";var result=this.measureText(tmpText,mod);var block=(0,_assign2[\"default\"])({},result.values);block.text=text;block.width=result.width;block.mod=mod;if(text===undefined||text===\"\"){block.width=0}this.lines[l].blocks.push(block);this.lines[l].width+=block.width}},{key:\"curWidth\",value:function curWidth(){var line=this.lines[this.current];if(line===undefined)return 0;return line.width}},{key:\"append\",value:function append(text){var mod=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"normal\";this._add(this.current,text,mod)}},{key:\"newLine\",value:function newLine(text){var mod=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"normal\";this._add(this.current,text,mod);this.current++}},{key:\"determineLineHeights\",value:function determineLineHeights(){for(var k=0;k<this.lines.length;k++){var line=this.lines[k];var height=0;if(line.blocks!==undefined){for(var l=0;l<line.blocks.length;l++){var block=line.blocks[l];if(height<block.height){height=block.height}}}line.height=height}}},{key:\"determineLabelSize\",value:function determineLabelSize(){var width=0;var height=0;for(var k=0;k<this.lines.length;k++){var line=this.lines[k];if(line.width>width){width=line.width}height+=line.height}this.width=width;this.height=height}},{key:\"removeEmptyBlocks\",value:function removeEmptyBlocks(){var tmpLines=[];for(var k=0;k<this.lines.length;k++){var line=this.lines[k];if(line.blocks.length===0)continue;if(k===this.lines.length-1){if(line.width===0)continue}var tmpLine={};(0,_assign2[\"default\"])(tmpLine,line);tmpLine.blocks=[];var firstEmptyBlock=void 0;var tmpBlocks=[];for(var l=0;l<line.blocks.length;l++){var block=line.blocks[l];if(block.width!==0){tmpBlocks.push(block)}else{if(firstEmptyBlock===undefined){firstEmptyBlock=block}}}if(tmpBlocks.length===0&&firstEmptyBlock!==undefined){tmpBlocks.push(firstEmptyBlock)}tmpLine.blocks=tmpBlocks;tmpLines.push(tmpLine)}return tmpLines}},{key:\"finalize\",value:function finalize(){this.determineLineHeights();this.determineLabelSize();var tmpLines=this.removeEmptyBlocks();return{width:this.width,height:this.height,lines:tmpLines}}}]);return LabelAccumulator}();exports[\"default\"]=LabelAccumulator},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Box=function(_NodeBase){(0,_inherits3[\"default\"])(Box,_NodeBase);function Box(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Box);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Box.__proto__||(0,_getPrototypeOf2[\"default\"])(Box)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Box,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;if(this.needsRefresh(selected,hover)){var dimensions=this.getDimensionsFromLabel(ctx,selected,hover);this.width=dimensions.width+this.margin.right+this.margin.left;this.height=dimensions.height+this.margin.top+this.margin.bottom;this.radius=this.width/2}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width/2;this.top=y-this.height/2;this.initContextForDraw(ctx,values);ctx.roundRect(this.left,this.top,this.width,this.height,values.borderRadius);this.performFill(ctx,values);this.updateBoundingBox(x,y,ctx,selected,hover);this.labelModule.draw(ctx,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,selected,hover)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y,ctx,selected,hover){this._updateBoundingBox(x,y,ctx,selected,hover)\n;var borderRadius=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(borderRadius)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);var borderWidth=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(angle)),Math.abs(this.height/2/Math.sin(angle)))+borderWidth}}]);return Box}(_NodeBase3[\"default\"]);exports[\"default\"]=Box},function(module,exports,__webpack_require__){__webpack_require__(195);module.exports=__webpack_require__(7).Object.getPrototypeOf},function(module,exports,__webpack_require__){var toObject=__webpack_require__(41);var $getPrototypeOf=__webpack_require__(85);__webpack_require__(87)(\"getPrototypeOf\",function(){return function getPrototypeOf(it){return $getPrototypeOf(toObject(it))}})},function(module,exports,__webpack_require__){module.exports={default:__webpack_require__(197),__esModule:true}},function(module,exports,__webpack_require__){__webpack_require__(198);module.exports=__webpack_require__(7).Object.setPrototypeOf},function(module,exports,__webpack_require__){var $export=__webpack_require__(17);$export($export.S,\"Object\",{setPrototypeOf:__webpack_require__(199).set})},function(module,exports,__webpack_require__){var isObject=__webpack_require__(32);var anObject=__webpack_require__(27);var check=function(O,proto){anObject(O);if(!isObject(proto)&&proto!==null)throw TypeError(proto+\": can't set as prototype!\")};module.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(test,buggy,set){try{set=__webpack_require__(80)(Function.call,__webpack_require__(89).f(Object.prototype,\"__proto__\").set,2);set(test,[]);buggy=!(test instanceof Array)}catch(e){buggy=true}return function setPrototypeOf(O,proto){check(O,proto);if(buggy)O.__proto__=proto;else set(O,proto);return O}}({},false):undefined),check:check}},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CircleImageBase2=__webpack_require__(73);var _CircleImageBase3=_interopRequireDefault(_CircleImageBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Circle=function(_CircleImageBase){(0,_inherits3[\"default\"])(Circle,_CircleImageBase);function Circle(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Circle);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Circle.__proto__||(0,_getPrototypeOf2[\"default\"])(Circle)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Circle,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;if(this.needsRefresh(selected,hover)){var dimensions=this.getDimensionsFromLabel(ctx,selected,hover);var diameter=Math.max(dimensions.width+this.margin.right+this.margin.left,dimensions.height+this.margin.top+this.margin.bottom);this.options.size=diameter/2;this.width=diameter;this.height=diameter;this.radius=this.width/2}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width/2;this.top=y-this.height/2;this._drawRawCircle(ctx,x,y,values);this.updateBoundingBox(x,y);this.labelModule.draw(ctx,this.left+this.textSize.width/2+this.margin.left,y,selected,hover)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.boundingBox.top=y-this.options.size;this.boundingBox.left=x-this.options.size;this.boundingBox.right=x+this.options.size;this.boundingBox.bottom=y+this.options.size}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);return this.width*.5}}]);return Circle}(_CircleImageBase3[\"default\"]);exports[\"default\"]=Circle},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CircleImageBase2=__webpack_require__(73);var _CircleImageBase3=_interopRequireDefault(_CircleImageBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CircularImage=function(_CircleImageBase){(0,_inherits3[\"default\"])(CircularImage,_CircleImageBase);function CircularImage(options,body,labelModule,imageObj,imageObjAlt){(0,_classCallCheck3[\"default\"])(this,CircularImage);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(CircularImage.__proto__||(0,_getPrototypeOf2[\"default\"])(CircularImage)).call(this,options,body,labelModule));_this.setImages(imageObj,imageObjAlt);return _this}(0,_createClass3[\"default\"])(CircularImage,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;var imageAbsent=this.imageObj.src===undefined||this.imageObj.width===undefined||this.imageObj.height===undefined;if(imageAbsent){var diameter=this.options.size*2;this.width=diameter;this.height=diameter;this.radius=.5*this.width;return}if(this.needsRefresh(selected,hover)){this._resizeImage()}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.switchImages(selected);this.resize();this.left=x-this.width/2;this.top=y-this.height/2;this._drawRawCircle(ctx,x,y,values);ctx.save();ctx.clip();this._drawImageAtPosition(ctx,values);ctx.restore();this._drawImageLabel(ctx,x,y,selected,hover);this.updateBoundingBox(x,y)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.boundingBox.top=y-this.options.size;this.boundingBox.left=x-this.options.size;this.boundingBox.right=x+this.options.size;this.boundingBox.bottom=y+this.options.size;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left);this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width);this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);return this.width*.5}}]);return CircularImage}(_CircleImageBase3[\"default\"]);exports[\"default\"]=CircularImage},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Database=function(_NodeBase){(0,_inherits3[\"default\"])(Database,_NodeBase);function Database(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Database);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Database.__proto__||(0,_getPrototypeOf2[\"default\"])(Database)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Database,[{key:\"resize\",value:function resize(ctx,selected,hover){if(this.needsRefresh(selected,hover)){var dimensions=this.getDimensionsFromLabel(ctx,selected,hover);var size=dimensions.width+this.margin.right+this.margin.left;this.width=size;this.height=size;this.radius=this.width/2}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width/2;this.top=y-this.height/2;this.initContextForDraw(ctx,values);ctx.database(x-this.width/2,y-this.height/2,this.width,this.height);this.performFill(ctx,values);this.updateBoundingBox(x,y,ctx,selected,hover);this.labelModule.draw(ctx,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,selected,hover)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Database}(_NodeBase3[\"default\"]);exports[\"default\"]=Database},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Diamond=function(_ShapeBase){(0,_inherits3[\"default\"])(Diamond,_ShapeBase);function Diamond(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Diamond);return(0,_possibleConstructorReturn3[\"default\"])(this,(Diamond.__proto__||(0,_getPrototypeOf2[\"default\"])(Diamond)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Diamond,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"diamond\",4,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Diamond}(_ShapeBase3[\"default\"]);exports[\"default\"]=Diamond},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Dot=function(_ShapeBase){(0,_inherits3[\"default\"])(Dot,_ShapeBase);function Dot(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Dot);return(0,_possibleConstructorReturn3[\"default\"])(this,(Dot.__proto__||(0,_getPrototypeOf2[\"default\"])(Dot)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Dot,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"circle\",2,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);return this.options.size}}]);return Dot}(_ShapeBase3[\"default\"]);exports[\"default\"]=Dot},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Ellipse=function(_NodeBase){(0,_inherits3[\"default\"])(Ellipse,_NodeBase);function Ellipse(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Ellipse);return(0,_possibleConstructorReturn3[\"default\"])(this,(Ellipse.__proto__||(0,_getPrototypeOf2[\"default\"])(Ellipse)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Ellipse,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;if(this.needsRefresh(selected,hover)){var dimensions=this.getDimensionsFromLabel(ctx,selected,hover);this.height=dimensions.height*2;this.width=dimensions.width+dimensions.height;this.radius=.5*this.width}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width*.5;this.top=y-this.height*.5;this.initContextForDraw(ctx,values);ctx.ellipse_vis(this.left,this.top,this.width,this.height);this.performFill(ctx,values);this.updateBoundingBox(x,y,ctx,selected,hover);this.labelModule.draw(ctx,x,y,selected,hover)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){this.resize(ctx);var a=this.width*.5;var b=this.height*.5;var w=Math.sin(angle)*a;var h=Math.cos(angle)*b;return a*b/Math.sqrt(w*w+h*h)}}]);return Ellipse}(_NodeBase3[\"default\"]);exports[\"default\"]=Ellipse},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Icon=function(_NodeBase){(0,_inherits3[\"default\"])(Icon,_NodeBase);function Icon(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Icon);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Icon.__proto__||(0,_getPrototypeOf2[\"default\"])(Icon)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Icon,[{key:\"resize\",value:function resize(ctx,selected,hover){if(this.needsRefresh(selected,hover)){this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)};this.width=this.iconSize.width+this.margin.right+this.margin.left;this.height=this.iconSize.height+this.margin.top+this.margin.bottom;this.radius=.5*this.width}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.options.icon.size=this.options.icon.size||50;this.left=x-this.width/2;this.top=y-this.height/2;this._icon(ctx,x,y,selected,hover,values);if(this.options.label!==undefined){var iconTextSpacing=5;this.labelModule.draw(ctx,this.left+this.iconSize.width/2+this.margin.left,y+this.height/2+iconTextSpacing,selected)}this.updateBoundingBox(x,y)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.boundingBox.top=y-this.options.icon.size*.5;this.boundingBox.left=x-this.options.icon.size*.5;this.boundingBox.right=x+this.options.icon.size*.5;this.boundingBox.bottom=y+this.options.icon.size*.5;if(this.options.label!==undefined&&this.labelModule.size.width>0){var iconTextSpacing=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left);this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width);this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+iconTextSpacing)}}},{key:\"_icon\",value:function _icon(ctx,x,y,selected,hover,values){var iconSize=Number(this.options.icon.size);if(this.options.icon.code!==undefined){ctx.font=(selected?\"bold \":\"\")+iconSize+\"px \"+this.options.icon.face;ctx.fillStyle=this.options.icon.color||\"black\";ctx.textAlign=\"center\";ctx.textBaseline=\"middle\";this.enableShadow(ctx,values);ctx.fillText(this.options.icon.code,x,y);this.disableShadow(ctx,values)}else{console.error(\"When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.\")}}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Icon}(_NodeBase3[\"default\"]);exports[\"default\"]=Icon},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CircleImageBase2=__webpack_require__(73);var _CircleImageBase3=_interopRequireDefault(_CircleImageBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Image=function(_CircleImageBase){(0,_inherits3[\"default\"])(Image,_CircleImageBase);function Image(options,body,labelModule,imageObj,imageObjAlt){(0,_classCallCheck3[\"default\"])(this,Image);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Image.__proto__||(0,_getPrototypeOf2[\"default\"])(Image)).call(this,options,body,labelModule));_this.setImages(imageObj,imageObjAlt);return _this}(0,_createClass3[\"default\"])(Image,[{key:\"resize\",value:function resize(ctx){var selected=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.selected;var hover=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.hover;var imageAbsent=this.imageObj.src===undefined||this.imageObj.width===undefined||this.imageObj.height===undefined;if(imageAbsent){var side=this.options.size*2;this.width=side;this.height=side;return}if(this.needsRefresh(selected,hover)){this._resizeImage()}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.switchImages(selected);this.resize();this.left=x-this.width/2;this.top=y-this.height/2;if(this.options.shapeProperties.useBorderWithImage===true){var neutralborderWidth=this.options.borderWidth;var selectionLineWidth=this.options.borderWidthSelected||2*this.options.borderWidth;var borderWidth=(selected?selectionLineWidth:neutralborderWidth)/this.body.view.scale;ctx.lineWidth=Math.min(this.width,borderWidth);ctx.beginPath();ctx.strokeStyle=selected?this.options.color.highlight.border:hover?this.options.color.hover.border:this.options.color.border;ctx.fillStyle=selected?this.options.color.highlight.background:hover?this.options.color.hover.background:this.options.color.background;ctx.rect(this.left-.5*ctx.lineWidth,this.top-.5*ctx.lineWidth,this.width+ctx.lineWidth,this.height+ctx.lineWidth);ctx.fill();this.performStroke(ctx,values);ctx.closePath()}this._drawImageAtPosition(ctx,values);this._drawImageLabel(ctx,x,y,selected,hover);this.updateBoundingBox(x,y)}},{key:\"updateBoundingBox\",value:function updateBoundingBox(x,y){this.resize();this._updateBoundingBox(x,y);if(this.options.label!==undefined&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left);this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width);this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Image}(_CircleImageBase3[\"default\"]);exports[\"default\"]=Image},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Square=function(_ShapeBase){(0,_inherits3[\"default\"])(Square,_ShapeBase);function Square(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Square);return(0,_possibleConstructorReturn3[\"default\"])(this,(Square.__proto__||(0,_getPrototypeOf2[\"default\"])(Square)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Square,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"square\",2,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Square}(_ShapeBase3[\"default\"]);exports[\"default\"]=Square},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hexagon=function(_ShapeBase){(0,_inherits3[\"default\"])(Hexagon,_ShapeBase);function Hexagon(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Hexagon);return(0,_possibleConstructorReturn3[\"default\"])(this,(Hexagon.__proto__||(0,_getPrototypeOf2[\"default\"])(Hexagon)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Hexagon,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"hexagon\",4,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Hexagon}(_ShapeBase3[\"default\"]);exports[\"default\"]=Hexagon},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Star=function(_ShapeBase){(0,_inherits3[\"default\"])(Star,_ShapeBase);function Star(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Star);return(0,_possibleConstructorReturn3[\"default\"])(this,(Star.__proto__||(0,_getPrototypeOf2[\"default\"])(Star)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Star,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"star\",4,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Star}(_ShapeBase3[\"default\"]);exports[\"default\"]=Star},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _NodeBase2=__webpack_require__(23);var _NodeBase3=_interopRequireDefault(_NodeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Text=function(_NodeBase){(0,_inherits3[\"default\"])(Text,_NodeBase);function Text(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Text);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Text.__proto__||(0,_getPrototypeOf2[\"default\"])(Text)).call(this,options,body,labelModule));_this._setMargins(labelModule);return _this}(0,_createClass3[\"default\"])(Text,[{key:\"resize\",value:function resize(ctx,selected,hover){if(this.needsRefresh(selected,hover)){this.textSize=this.labelModule.getTextSize(ctx,selected,hover);this.width=this.textSize.width+this.margin.right+this.margin.left;this.height=this.textSize.height+this.margin.top+this.margin.bottom;this.radius=.5*this.width}}},{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this.resize(ctx,selected,hover);this.left=x-this.width/2;this.top=y-this.height/2;this.enableShadow(ctx,values);this.labelModule.draw(ctx,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,selected,hover);this.disableShadow(ctx,values);this.updateBoundingBox(x,y,ctx,selected,hover)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Text}(_NodeBase3[\"default\"]);exports[\"default\"]=Text},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Triangle=function(_ShapeBase){(0,_inherits3[\"default\"])(Triangle,_ShapeBase);function Triangle(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,Triangle);return(0,_possibleConstructorReturn3[\"default\"])(this,(Triangle.__proto__||(0,_getPrototypeOf2[\"default\"])(Triangle)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(Triangle,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"triangle\",3,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return Triangle}(_ShapeBase3[\"default\"]);exports[\"default\"]=Triangle},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _ShapeBase2=__webpack_require__(24);var _ShapeBase3=_interopRequireDefault(_ShapeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var TriangleDown=function(_ShapeBase){(0,_inherits3[\"default\"])(TriangleDown,_ShapeBase);function TriangleDown(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,TriangleDown);return(0,_possibleConstructorReturn3[\"default\"])(this,(TriangleDown.__proto__||(0,_getPrototypeOf2[\"default\"])(TriangleDown)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(TriangleDown,[{key:\"draw\",value:function draw(ctx,x,y,selected,hover,values){this._drawShape(ctx,\"triangleDown\",3,x,y,selected,hover,values)}},{key:\"distanceToBorder\",value:function distanceToBorder(ctx,angle){return this._distanceToBorder(ctx,angle)}}]);return TriangleDown}(_ShapeBase3[\"default\"]);exports[\"default\"]=TriangleDown},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var DataSet=__webpack_require__(11);var DataView=__webpack_require__(12);var Edge=__webpack_require__(74)[\"default\"];var EdgesHandler=function(){function EdgesHandler(body,images,groups){var _this=this;(0,_classCallCheck3[\"default\"])(this,EdgesHandler);this.body=body;this.images=images;this.groups=groups;this.body.functions.createEdge=this.create.bind(this);this.edgesListeners={add:function add(event,params){_this.add(params.items)},update:function update(event,params){_this.update(params.items)},remove:function remove(event,params){_this.remove(params.items)}};this.options={};this.defaultOptions={arrows:{to:{enabled:false,\nscaleFactor:1,type:\"arrow\"},middle:{enabled:false,scaleFactor:1,type:\"arrow\"},from:{enabled:false,scaleFactor:1,type:\"arrow\"}},arrowStrikethrough:true,color:{color:\"#848484\",highlight:\"#848484\",hover:\"#848484\",inherit:\"from\",opacity:1},dashes:false,font:{color:\"#343434\",size:14,face:\"arial\",background:\"none\",strokeWidth:2,strokeColor:\"#ffffff\",align:\"horizontal\",multi:false,vadjust:0,bold:{mod:\"bold\"},boldital:{mod:\"bold italic\"},ital:{mod:\"italic\"},mono:{mod:\"\",size:15,face:\"courier new\",vadjust:2}},hidden:false,hoverWidth:1.5,label:undefined,labelHighlightBold:true,length:undefined,physics:true,scaling:{min:1,max:15,label:{enabled:true,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function customScalingFunction(min,max,total,value){if(max===min){return.5}else{var scale=1/(max-min);return Math.max(0,(value-min)*scale)}}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:false,color:\"rgba(0,0,0,0.5)\",size:10,x:5,y:5},smooth:{enabled:true,type:\"dynamic\",forceDirection:\"none\",roundness:.5},title:undefined,width:1,value:undefined};util.deepExtend(this.options,this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(EdgesHandler,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this2=this;this.body.emitter.on(\"_forceDisableDynamicCurves\",function(type){var emit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(type===\"dynamic\"){type=\"continuous\"}var dataChanged=false;for(var edgeId in _this2.body.edges){if(_this2.body.edges.hasOwnProperty(edgeId)){var edge=_this2.body.edges[edgeId];var edgeData=_this2.body.data.edges._data[edgeId];if(edgeData!==undefined){var smoothOptions=edgeData.smooth;if(smoothOptions!==undefined){if(smoothOptions.enabled===true&&smoothOptions.type===\"dynamic\"){if(type===undefined){edge.setOptions({smooth:false})}else{edge.setOptions({smooth:{type:type}})}dataChanged=true}}}}}if(emit===true&&dataChanged===true){_this2.body.emitter.emit(\"_dataChanged\")}});this.body.emitter.on(\"_dataUpdated\",function(){_this2.reconnectEdges()});this.body.emitter.on(\"refreshEdges\",this.refresh.bind(this));this.body.emitter.on(\"refresh\",this.refresh.bind(this));this.body.emitter.on(\"destroy\",function(){util.forEach(_this2.edgesListeners,function(callback,event){if(_this2.body.data.edges)_this2.body.data.edges.off(event,callback)});delete _this2.body.functions.createEdge;delete _this2.edgesListeners.add;delete _this2.edgesListeners.update;delete _this2.edgesListeners.remove;delete _this2.edgesListeners})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){Edge.parseOptions(this.options,options,true,this.defaultOptions,true);var dataChanged=false;if(options.smooth!==undefined){for(var edgeId in this.body.edges){if(this.body.edges.hasOwnProperty(edgeId)){dataChanged=this.body.edges[edgeId].updateEdgeType()||dataChanged}}}if(options.font!==undefined){for(var _edgeId in this.body.edges){if(this.body.edges.hasOwnProperty(_edgeId)){this.body.edges[_edgeId].updateLabelModule()}}}if(options.hidden!==undefined||options.physics!==undefined||dataChanged===true){this.body.emitter.emit(\"_dataChanged\")}}}},{key:\"setData\",value:function setData(edges){var _this3=this;var doNotEmit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var oldEdgesData=this.body.data.edges;if(edges instanceof DataSet||edges instanceof DataView){this.body.data.edges=edges}else if(Array.isArray(edges)){this.body.data.edges=new DataSet;this.body.data.edges.add(edges)}else if(!edges){this.body.data.edges=new DataSet}else{throw new TypeError(\"Array or DataSet expected\")}if(oldEdgesData){util.forEach(this.edgesListeners,function(callback,event){oldEdgesData.off(event,callback)})}this.body.edges={};if(this.body.data.edges){util.forEach(this.edgesListeners,function(callback,event){_this3.body.data.edges.on(event,callback)});var ids=this.body.data.edges.getIds();this.add(ids,true)}this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");if(doNotEmit===false){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"add\",value:function add(ids){var doNotEmit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var edges=this.body.edges;var edgesData=this.body.data.edges;for(var i=0;i<ids.length;i++){var id=ids[i];var oldEdge=edges[id];if(oldEdge){oldEdge.disconnect()}var data=edgesData.get(id,{showInternalIds:true});edges[id]=this.create(data)}this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");if(doNotEmit===false){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"update\",value:function update(ids){var edges=this.body.edges;var edgesData=this.body.data.edges;var dataChanged=false;for(var i=0;i<ids.length;i++){var id=ids[i];var data=edgesData.get(id);var edge=edges[id];if(edge!==undefined){edge.disconnect();dataChanged=edge.setOptions(data)||dataChanged;edge.connect()}else{this.body.edges[id]=this.create(data);dataChanged=true}}if(dataChanged===true){this.body.emitter.emit(\"_adjustEdgesForHierarchicalLayout\");this.body.emitter.emit(\"_dataChanged\")}else{this.body.emitter.emit(\"_dataUpdated\")}}},{key:\"remove\",value:function remove(ids){var emit=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(ids.length===0)return;var edges=this.body.edges;util.forEach(ids,function(id){var edge=edges[id];if(edge!==undefined){edge.remove()}});if(emit){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"refresh\",value:function refresh(){var _this4=this;util.forEach(this.body.edges,function(edge,edgeId){var data=_this4.body.data.edges._data[edgeId];if(data!==undefined){edge.setOptions(data)}})}},{key:\"create\",value:function create(properties){return new Edge(properties,this.body,this.options,this.defaultOptions)}},{key:\"reconnectEdges\",value:function reconnectEdges(){var id;var nodes=this.body.nodes;var edges=this.body.edges;for(id in nodes){if(nodes.hasOwnProperty(id)){nodes[id].edges=[]}}for(id in edges){if(edges.hasOwnProperty(id)){var edge=edges[id];edge.from=null;edge.to=null;edge.connect()}}}},{key:\"getConnectedNodes\",value:function getConnectedNodes(edgeId){var nodeList=[];if(this.body.edges[edgeId]!==undefined){var edge=this.body.edges[edgeId];if(edge.fromId!==undefined){nodeList.push(edge.fromId)}if(edge.toId!==undefined){nodeList.push(edge.toId)}}return nodeList}},{key:\"_updateState\",value:function _updateState(){this._addMissingEdges();this._removeInvalidEdges()}},{key:\"_removeInvalidEdges\",value:function _removeInvalidEdges(){var _this5=this;var edgesToDelete=[];util.forEach(this.body.edges,function(edge,id){var toNode=_this5.body.nodes[edge.toId];var fromNode=_this5.body.nodes[edge.fromId];if(toNode!==undefined&&toNode.isCluster===true||fromNode!==undefined&&fromNode.isCluster===true){return}if(toNode===undefined||fromNode===undefined){edgesToDelete.push(id)}});this.remove(edgesToDelete,false)}},{key:\"_addMissingEdges\",value:function _addMissingEdges(){var edges=this.body.edges;var edgesData=this.body.data.edges;var addIds=[];edgesData.forEach(function(edgeData,edgeId){var edge=edges[edgeId];if(edge===undefined){addIds.push(edgeId)}});this.add(addIds,true)}}]);return EdgesHandler}();exports[\"default\"]=EdgesHandler},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CubicBezierEdgeBase2=__webpack_require__(216);var _CubicBezierEdgeBase3=_interopRequireDefault(_CubicBezierEdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CubicBezierEdge=function(_CubicBezierEdgeBase){(0,_inherits3[\"default\"])(CubicBezierEdge,_CubicBezierEdgeBase);function CubicBezierEdge(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,CubicBezierEdge);return(0,_possibleConstructorReturn3[\"default\"])(this,(CubicBezierEdge.__proto__||(0,_getPrototypeOf2[\"default\"])(CubicBezierEdge)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(CubicBezierEdge,[{key:\"_line\",value:function _line(ctx,values,viaNodes){var via1=viaNodes[0];var via2=viaNodes[1];this._bezierCurve(ctx,values,via1,via2)}},{key:\"_getViaCoordinates\",value:function _getViaCoordinates(){var dx=this.from.x-this.to.x;var dy=this.from.y-this.to.y;var x1=void 0,y1=void 0,x2=void 0,y2=void 0;var roundness=this.options.smooth.roundness;if((Math.abs(dx)>Math.abs(dy)||this.options.smooth.forceDirection===true||this.options.smooth.forceDirection===\"horizontal\")&&this.options.smooth.forceDirection!==\"vertical\"){y1=this.from.y;y2=this.to.y;x1=this.from.x-roundness*dx;x2=this.to.x+roundness*dx}else{y1=this.from.y-roundness*dy;y2=this.to.y+roundness*dy;x1=this.from.x;x2=this.to.x}return[{x:x1,y:y1},{x:x2,y:y2}]}},{key:\"getViaNode\",value:function getViaNode(){return this._getViaCoordinates()}},{key:\"_findBorderPosition\",value:function _findBorderPosition(nearNode,ctx){return this._findBorderPositionBezier(nearNode,ctx)}},{key:\"_getDistanceToEdge\",value:function _getDistanceToEdge(x1,y1,x2,y2,x3,y3){var _ref=arguments.length>6&&arguments[6]!==undefined?arguments[6]:this._getViaCoordinates(),_ref2=(0,_slicedToArray3[\"default\"])(_ref,2),via1=_ref2[0],via2=_ref2[1];return this._getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,via1,via2)}},{key:\"getPoint\",value:function getPoint(percentage){var _ref3=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._getViaCoordinates(),_ref4=(0,_slicedToArray3[\"default\"])(_ref3,2),via1=_ref4[0],via2=_ref4[1];var t=percentage;var vec=[];vec[0]=Math.pow(1-t,3);vec[1]=3*t*Math.pow(1-t,2);vec[2]=3*Math.pow(t,2)*(1-t);vec[3]=Math.pow(t,3);var x=vec[0]*this.fromPoint.x+vec[1]*via1.x+vec[2]*via2.x+vec[3]*this.toPoint.x;var y=vec[0]*this.fromPoint.y+vec[1]*via1.y+vec[2]*via2.y+vec[3]*this.toPoint.y;return{x:x,y:y}}}]);return CubicBezierEdge}(_CubicBezierEdgeBase3[\"default\"]);exports[\"default\"]=CubicBezierEdge},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _BezierEdgeBase2=__webpack_require__(75);var _BezierEdgeBase3=_interopRequireDefault(_BezierEdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var CubicBezierEdgeBase=function(_BezierEdgeBase){(0,_inherits3[\"default\"])(CubicBezierEdgeBase,_BezierEdgeBase);function CubicBezierEdgeBase(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,CubicBezierEdgeBase);return(0,_possibleConstructorReturn3[\"default\"])(this,(CubicBezierEdgeBase.__proto__||(0,_getPrototypeOf2[\"default\"])(CubicBezierEdgeBase)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(CubicBezierEdgeBase,[{key:\"_getDistanceToBezierEdge\",value:function _getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,via1,via2){var minDistance=1e9;var distance=void 0;var i=void 0,t=void 0,x=void 0,y=void 0;var lastX=x1;var lastY=y1;var vec=[0,0,0,0];for(i=1;i<10;i++){t=.1*i;vec[0]=Math.pow(1-t,3);vec[1]=3*t*Math.pow(1-t,2);vec[2]=3*Math.pow(t,2)*(1-t);vec[3]=Math.pow(t,3);x=vec[0]*x1+vec[1]*via1.x+vec[2]*via2.x+vec[3]*x2;y=vec[0]*y1+vec[1]*via1.y+vec[2]*via2.y+vec[3]*y2;if(i>0){distance=this._getDistanceToLine(lastX,lastY,x,y,x3,y3);minDistance=distance<minDistance?distance:minDistance}lastX=x;lastY=y}return minDistance}}]);return CubicBezierEdgeBase}(_BezierEdgeBase3[\"default\"]);exports[\"default\"]=CubicBezierEdgeBase},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _BezierEdgeBase2=__webpack_require__(75);var _BezierEdgeBase3=_interopRequireDefault(_BezierEdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BezierEdgeDynamic=function(_BezierEdgeBase){(0,_inherits3[\"default\"])(BezierEdgeDynamic,_BezierEdgeBase);function BezierEdgeDynamic(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,BezierEdgeDynamic);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(BezierEdgeDynamic.__proto__||(0,_getPrototypeOf2[\"default\"])(BezierEdgeDynamic)).call(this,options,body,labelModule));_this._boundFunction=function(){_this.positionBezierNode()};_this.body.emitter.on(\"_repositionBezierNodes\",_this._boundFunction);return _this}(0,_createClass3[\"default\"])(BezierEdgeDynamic,[{key:\"setOptions\",value:function setOptions(options){var physicsChange=false;if(this.options.physics!==options.physics){physicsChange=true}this.options=options;this.id=this.options.id;this.from=this.body.nodes[this.options.from];this.to=this.body.nodes[this.options.to];this.setupSupportNode();this.connect();if(physicsChange===true){this.via.setOptions({physics:this.options.physics});this.positionBezierNode()}}},{key:\"connect\",value:function connect(){this.from=this.body.nodes[this.options.from];this.to=this.body.nodes[this.options.to];if(this.from===undefined||this.to===undefined||this.options.physics===false){this.via.setOptions({physics:false})}else{if(this.from.id===this.to.id){this.via.setOptions({physics:false})}else{this.via.setOptions({physics:true})}}}},{key:\"cleanup\",value:function cleanup(){this.body.emitter.off(\"_repositionBezierNodes\",this._boundFunction);if(this.via!==undefined){delete this.body.nodes[this.via.id];this.via=undefined;return true}return false}},{key:\"setupSupportNode\",value:function setupSupportNode(){if(this.via===undefined){var nodeId=\"edgeId:\"+this.id;var node=this.body.functions.createNode({id:nodeId,shape:\"circle\",physics:true,hidden:true});this.body.nodes[nodeId]=node;this.via=node;this.via.parentEdgeId=this.id;this.positionBezierNode()}}},{key:\"positionBezierNode\",value:function positionBezierNode(){if(this.via!==undefined&&this.from!==undefined&&this.to!==undefined){this.via.x=.5*(this.from.x+this.to.x);this.via.y=.5*(this.from.y+this.to.y)}else if(this.via!==undefined){this.via.x=0;this.via.y=0}}},{key:\"_line\",value:function _line(ctx,values,viaNode){this._bezierCurve(ctx,values,viaNode)}},{key:\"getViaNode\",value:function getViaNode(){return this.via}},{key:\"getPoint\",value:function getPoint(percentage){var viaNode=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.via;var t=percentage;var x=void 0,y=void 0;if(this.from===this.to){var _getCircleData=this._getCircleData(this.from),_getCircleData2=(0,_slicedToArray3[\"default\"])(_getCircleData,3),cx=_getCircleData2[0],cy=_getCircleData2[1],cr=_getCircleData2[2];var a=2*Math.PI*(1-t);x=cx+cr*Math.sin(a);y=cy+cr-cr*(1-Math.cos(a))}else{x=Math.pow(1-t,2)*this.fromPoint.x+2*t*(1-t)*viaNode.x+Math.pow(t,2)*this.toPoint.x;y=Math.pow(1-t,2)*this.fromPoint.y+2*t*(1-t)*viaNode.y+Math.pow(t,2)*this.toPoint.y}return{x:x,y:y}}},{key:\"_findBorderPosition\",value:function _findBorderPosition(nearNode,ctx){return this._findBorderPositionBezier(nearNode,ctx,this.via)}},{key:\"_getDistanceToEdge\",value:function _getDistanceToEdge(x1,y1,x2,y2,x3,y3){return this._getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,this.via)}}]);return BezierEdgeDynamic}(_BezierEdgeBase3[\"default\"]);exports[\"default\"]=BezierEdgeDynamic},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _BezierEdgeBase2=__webpack_require__(75);var _BezierEdgeBase3=_interopRequireDefault(_BezierEdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BezierEdgeStatic=function(_BezierEdgeBase){(0,_inherits3[\"default\"])(BezierEdgeStatic,_BezierEdgeBase);function BezierEdgeStatic(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,BezierEdgeStatic);return(0,_possibleConstructorReturn3[\"default\"])(this,(BezierEdgeStatic.__proto__||(0,_getPrototypeOf2[\"default\"])(BezierEdgeStatic)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(BezierEdgeStatic,[{key:\"_line\",value:function _line(ctx,values,viaNode){this._bezierCurve(ctx,values,viaNode)}},{key:\"getViaNode\",value:function getViaNode(){return this._getViaCoordinates()}},{key:\"_getViaCoordinates\",value:function _getViaCoordinates(){var xVia=undefined;var yVia=undefined;var factor=this.options.smooth.roundness;var type=this.options.smooth.type;var dx=Math.abs(this.from.x-this.to.x);var dy=Math.abs(this.from.y-this.to.y);if(type===\"discrete\"||type===\"diagonalCross\"){var stepX=void 0;var stepY=void 0;if(dx<=dy){stepX=stepY=factor*dy}else{stepX=stepY=factor*dx}if(this.from.x>this.to.x)stepX=-stepX;if(this.from.y>=this.to.y)stepY=-stepY;xVia=this.from.x+stepX;yVia=this.from.y+stepY;if(type===\"discrete\"){if(dx<=dy){xVia=dx<factor*dy?this.from.x:xVia}else{yVia=dy<factor*dx?this.from.y:yVia}}}else if(type===\"straightCross\"){var _stepX=(1-factor)*dx;var _stepY=(1-factor)*dy;if(dx<=dy){_stepX=0;if(this.from.y<this.to.y)_stepY=-_stepY}else{if(this.from.x<this.to.x)_stepX=-_stepX;_stepY=0}xVia=this.to.x+_stepX;yVia=this.to.y+_stepY}else if(type===\"horizontal\"){var _stepX2=(1-factor)*dx;if(this.from.x<this.to.x)_stepX2=-_stepX2;xVia=this.to.x+_stepX2;yVia=this.from.y}else if(type===\"vertical\"){var _stepY2=(1-factor)*dy;if(this.from.y<this.to.y)_stepY2=-_stepY2;xVia=this.from.x;yVia=this.to.y+_stepY2}else if(type===\"curvedCW\"){dx=this.to.x-this.from.x;dy=this.from.y-this.to.y;var radius=Math.sqrt(dx*dx+dy*dy);var pi=Math.PI;var originalAngle=Math.atan2(dy,dx);var myAngle=(originalAngle+(factor*.5+.5)*pi)%(2*pi);xVia=this.from.x+(factor*.5+.5)*radius*Math.sin(myAngle);yVia=this.from.y+(factor*.5+.5)*radius*Math.cos(myAngle)}else if(type===\"curvedCCW\"){dx=this.to.x-this.from.x;dy=this.from.y-this.to.y;var _radius=Math.sqrt(dx*dx+dy*dy);var _pi=Math.PI;var _originalAngle=Math.atan2(dy,dx);var _myAngle=(_originalAngle+(-factor*.5+.5)*_pi)%(2*_pi);xVia=this.from.x+(factor*.5+.5)*_radius*Math.sin(_myAngle);yVia=this.from.y+(factor*.5+.5)*_radius*Math.cos(_myAngle)}else{var _stepX3=void 0;var _stepY3=void 0;if(dx<=dy){_stepX3=_stepY3=factor*dy}else{_stepX3=_stepY3=factor*dx}if(this.from.x>this.to.x)_stepX3=-_stepX3;if(this.from.y>=this.to.y)_stepY3=-_stepY3;xVia=this.from.x+_stepX3;yVia=this.from.y+_stepY3;if(dx<=dy){if(this.from.x<=this.to.x){xVia=this.to.x<xVia?this.to.x:xVia}else{xVia=this.to.x>xVia?this.to.x:xVia}}else{if(this.from.y>=this.to.y){yVia=this.to.y>yVia?this.to.y:yVia}else{yVia=this.to.y<yVia?this.to.y:yVia}}}return{x:xVia,y:yVia}}},{key:\"_findBorderPosition\",value:function _findBorderPosition(nearNode,ctx){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return this._findBorderPositionBezier(nearNode,ctx,options.via)}},{key:\"_getDistanceToEdge\",value:function _getDistanceToEdge(x1,y1,x2,y2,x3,y3){var viaNode=arguments.length>6&&arguments[6]!==undefined?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(x1,y1,x2,y2,x3,y3,viaNode)}},{key:\"getPoint\",value:function getPoint(percentage){var viaNode=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this._getViaCoordinates();var t=percentage;var x=Math.pow(1-t,2)*this.fromPoint.x+2*t*(1-t)*viaNode.x+Math.pow(t,2)*this.toPoint.x;var y=Math.pow(1-t,2)*this.fromPoint.y+2*t*(1-t)*viaNode.y+Math.pow(t,2)*this.toPoint.y;return{x:x,y:y}}}]);return BezierEdgeStatic}(_BezierEdgeBase3[\"default\"]);exports[\"default\"]=BezierEdgeStatic},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _EdgeBase2=__webpack_require__(118);var _EdgeBase3=_interopRequireDefault(_EdgeBase2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var StraightEdge=function(_EdgeBase){(0,_inherits3[\"default\"])(StraightEdge,_EdgeBase);function StraightEdge(options,body,labelModule){(0,_classCallCheck3[\"default\"])(this,StraightEdge);return(0,_possibleConstructorReturn3[\"default\"])(this,(StraightEdge.__proto__||(0,_getPrototypeOf2[\"default\"])(StraightEdge)).call(this,options,body,labelModule))}(0,_createClass3[\"default\"])(StraightEdge,[{key:\"_line\",value:function _line(ctx,values){ctx.beginPath();ctx.moveTo(this.fromPoint.x,this.fromPoint.y);ctx.lineTo(this.toPoint.x,this.toPoint.y);this.enableShadow(ctx,values);ctx.stroke();this.disableShadow(ctx,values)}},{key:\"getViaNode\",value:function getViaNode(){return undefined}},{key:\"getPoint\",value:function getPoint(percentage){return{x:(1-percentage)*this.fromPoint.x+percentage*this.toPoint.x,y:(1-percentage)*this.fromPoint.y+percentage*this.toPoint.y}}},{key:\"_findBorderPosition\",value:function _findBorderPosition(nearNode,ctx){var node1=this.to;var node2=this.from;if(nearNode.id===this.from.id){node1=this.from;node2=this.to}var angle=Math.atan2(node1.y-node2.y,node1.x-node2.x);var dx=node1.x-node2.x;var dy=node1.y-node2.y;var edgeSegmentLength=Math.sqrt(dx*dx+dy*dy);var toBorderDist=nearNode.distanceToBorder(ctx,angle);var toBorderPoint=(edgeSegmentLength-toBorderDist)/edgeSegmentLength;var borderPos={};borderPos.x=(1-toBorderPoint)*node2.x+toBorderPoint*node1.x;borderPos.y=(1-toBorderPoint)*node2.y+toBorderPoint*node1.y;return borderPos}},{key:\"_getDistanceToEdge\",value:function _getDistanceToEdge(x1,y1,x2,y2,x3,y3){return this._getDistanceToLine(x1,y1,x2,y2,x3,y3)}}]);return StraightEdge}(_EdgeBase3[\"default\"]);exports[\"default\"]=StraightEdge},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var BarnesHutSolver=__webpack_require__(120)[\"default\"];var Repulsion=__webpack_require__(221)[\"default\"];var HierarchicalRepulsion=__webpack_require__(222)[\"default\"];var SpringSolver=__webpack_require__(223)[\"default\"];var HierarchicalSpringSolver=__webpack_require__(224)[\"default\"];var CentralGravitySolver=__webpack_require__(121)[\"default\"];var ForceAtlas2BasedRepulsionSolver=__webpack_require__(225)[\"default\"];var ForceAtlas2BasedCentralGravitySolver=__webpack_require__(226)[\"default\"];var util=__webpack_require__(2);var EndPoints=__webpack_require__(119)[\"default\"];var PhysicsEngine=function(){function PhysicsEngine(body){(0,_classCallCheck3[\"default\"])(this,PhysicsEngine);this.body=body;this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}};this.physicsEnabled=true;this.simulationInterval=1e3/60;this.requiresTimeout=true;this.previousStates={};this.referenceState={};this.freezeCache={};this.renderTimer=undefined;this.adaptiveTimestep=false;this.adaptiveTimestepEnabled=false;this.adaptiveCounter=0;this.adaptiveInterval=3;this.stabilized=false;this.startedStabilization=false;this.stabilizationIterations=0;this.ready=false;this.options={};this.defaultOptions={enabled:true,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:\"barnesHut\",stabilization:{enabled:true,iterations:1e3,updateInterval:50,onlyDynamicEdges:false,fit:true},timestep:.5,adaptiveTimestep:true};util.extend(this.options,this.defaultOptions);this.timestep=.5;this.layoutFailed=false;this.bindEventListeners()}(0,_createClass3[\"default\"])(PhysicsEngine,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this=this;this.body.emitter.on(\"initPhysics\",function(){_this.initPhysics()});this.body.emitter.on(\"_layoutFailed\",function(){_this.layoutFailed=true});this.body.emitter.on(\"resetPhysics\",function(){_this.stopSimulation();_this.ready=false});this.body.emitter.on(\"disablePhysics\",function(){_this.physicsEnabled=false;_this.stopSimulation()});this.body.emitter.on(\"restorePhysics\",function(){_this.setOptions(_this.options);if(_this.ready===true){_this.startSimulation()}});this.body.emitter.on(\"startSimulation\",function(){if(_this.ready===true){_this.startSimulation()}});this.body.emitter.on(\"stopSimulation\",function(){_this.stopSimulation()});this.body.emitter.on(\"destroy\",function(){_this.stopSimulation(false);_this.body.emitter.off()});this.body.emitter.on(\"_dataChanged\",function(){_this.updatePhysicsData()})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){if(options===false){this.options.enabled=false;this.physicsEnabled=false;this.stopSimulation()}else if(options===true){this.options.enabled=true;this.physicsEnabled=true;this.startSimulation()}else{this.physicsEnabled=true;util.selectiveNotDeepExtend([\"stabilization\"],this.options,options);util.mergeOptions(this.options,options,\"stabilization\");if(options.enabled===undefined){this.options.enabled=true}if(this.options.enabled===false){this.physicsEnabled=false;this.stopSimulation()}this.timestep=this.options.timestep}}this.init()}},{key:\"init\",value:function init(){var options;if(this.options.solver===\"forceAtlas2Based\"){options=this.options.forceAtlas2Based;this.nodesSolver=new ForceAtlas2BasedRepulsionSolver(this.body,this.physicsBody,options);this.edgesSolver=new SpringSolver(this.body,this.physicsBody,options);this.gravitySolver=new ForceAtlas2BasedCentralGravitySolver(this.body,this.physicsBody,options)}else if(this.options.solver===\"repulsion\"){options=this.options.repulsion;this.nodesSolver=new Repulsion(this.body,this.physicsBody,options);this.edgesSolver=new SpringSolver(this.body,this.physicsBody,options);this.gravitySolver=new CentralGravitySolver(this.body,this.physicsBody,options)}else if(this.options.solver===\"hierarchicalRepulsion\"){options=this.options.hierarchicalRepulsion;this.nodesSolver=new HierarchicalRepulsion(this.body,this.physicsBody,options);this.edgesSolver=new HierarchicalSpringSolver(this.body,this.physicsBody,options);this.gravitySolver=new CentralGravitySolver(this.body,this.physicsBody,options)}else{options=this.options.barnesHut;this.nodesSolver=new BarnesHutSolver(this.body,this.physicsBody,options);this.edgesSolver=new SpringSolver(this.body,this.physicsBody,options);this.gravitySolver=new CentralGravitySolver(this.body,this.physicsBody,options)}this.modelOptions=options}},{key:\"initPhysics\",value:function initPhysics(){if(this.physicsEnabled===true&&this.options.enabled===true){if(this.options.stabilization.enabled===true){this.stabilize()}else{this.stabilized=false;this.ready=true;this.body.emitter.emit(\"fit\",{},this.layoutFailed);this.startSimulation()}}else{this.ready=true;this.body.emitter.emit(\"fit\")}}},{key:\"startSimulation\",value:function startSimulation(){if(this.physicsEnabled===true&&this.options.enabled===true){this.stabilized=false;this.adaptiveTimestep=false;this.body.emitter.emit(\"_resizeNodes\");if(this.viewFunction===undefined){this.viewFunction=this.simulationStep.bind(this);this.body.emitter.on(\"initRedraw\",this.viewFunction);this.body.emitter.emit(\"_startRendering\")}}else{this.body.emitter.emit(\"_redraw\")}}},{key:\"stopSimulation\",value:function stopSimulation(){var emit=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;this.stabilized=true;if(emit===true){this._emitStabilized()}if(this.viewFunction!==undefined){this.body.emitter.off(\"initRedraw\",this.viewFunction);this.viewFunction=undefined;if(emit===true){this.body.emitter.emit(\"_stopRendering\")}}}},{key:\"simulationStep\",value:function simulationStep(){var startTime=Date.now();this.physicsTick();var physicsTime=Date.now()-startTime;if((physicsTime<.4*this.simulationInterval||this.runDoubleSpeed===true)&&this.stabilized===false){this.physicsTick();this.runDoubleSpeed=true}if(this.stabilized===true){this.stopSimulation()}}},{key:\"_emitStabilized\",value:function _emitStabilized(){var _this2=this;var amountOfIterations=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.stabilizationIterations;if(this.stabilizationIterations>1||this.startedStabilization===true){setTimeout(function(){_this2.body.emitter.emit(\"stabilized\",{iterations:amountOfIterations});_this2.startedStabilization=false;_this2.stabilizationIterations=0},0)}}},{key:\"physicsStep\",value:function physicsStep(){this.gravitySolver.solve();this.nodesSolver.solve();this.edgesSolver.solve();this.moveNodes()}},{key:\"adjustTimeStep\",value:function adjustTimeStep(){var factor=1.2;if(this._evaluateStepQuality()===true){this.timestep=factor*this.timestep}else{if(this.timestep/factor<this.options.timestep){this.timestep=this.options.timestep}else{this.adaptiveCounter=-1;this.timestep=Math.max(this.options.timestep,this.timestep/factor)}}}},{key:\"physicsTick\",value:function physicsTick(){this._startStabilizing();if(this.stabilized===true)return;if(this.adaptiveTimestep===true&&this.adaptiveTimestepEnabled===true){var doAdaptive=this.adaptiveCounter%this.adaptiveInterval===0;if(doAdaptive){this.timestep=2*this.timestep;this.physicsStep();this.revert();this.timestep=.5*this.timestep;this.physicsStep();this.physicsStep();this.adjustTimeStep()}else{this.physicsStep()}this.adaptiveCounter+=1}else{this.timestep=this.options.timestep;this.physicsStep()}\nif(this.stabilized===true)this.revert();this.stabilizationIterations++}},{key:\"updatePhysicsData\",value:function updatePhysicsData(){this.physicsBody.forces={};this.physicsBody.physicsNodeIndices=[];this.physicsBody.physicsEdgeIndices=[];var nodes=this.body.nodes;var edges=this.body.edges;for(var nodeId in nodes){if(nodes.hasOwnProperty(nodeId)){if(nodes[nodeId].options.physics===true){this.physicsBody.physicsNodeIndices.push(nodes[nodeId].id)}}}for(var edgeId in edges){if(edges.hasOwnProperty(edgeId)){if(edges[edgeId].options.physics===true){this.physicsBody.physicsEdgeIndices.push(edges[edgeId].id)}}}for(var i=0;i<this.physicsBody.physicsNodeIndices.length;i++){var _nodeId=this.physicsBody.physicsNodeIndices[i];this.physicsBody.forces[_nodeId]={x:0,y:0};if(this.physicsBody.velocities[_nodeId]===undefined){this.physicsBody.velocities[_nodeId]={x:0,y:0}}}for(var _nodeId2 in this.physicsBody.velocities){if(nodes[_nodeId2]===undefined){delete this.physicsBody.velocities[_nodeId2]}}}},{key:\"revert\",value:function revert(){var nodeIds=(0,_keys2[\"default\"])(this.previousStates);var nodes=this.body.nodes;var velocities=this.physicsBody.velocities;this.referenceState={};for(var i=0;i<nodeIds.length;i++){var nodeId=nodeIds[i];if(nodes[nodeId]!==undefined){if(nodes[nodeId].options.physics===true){this.referenceState[nodeId]={positions:{x:nodes[nodeId].x,y:nodes[nodeId].y}};velocities[nodeId].x=this.previousStates[nodeId].vx;velocities[nodeId].y=this.previousStates[nodeId].vy;nodes[nodeId].x=this.previousStates[nodeId].x;nodes[nodeId].y=this.previousStates[nodeId].y}}else{delete this.previousStates[nodeId]}}}},{key:\"_evaluateStepQuality\",value:function _evaluateStepQuality(){var dx=void 0,dy=void 0,dpos=void 0;var nodes=this.body.nodes;var reference=this.referenceState;var posThreshold=.3;for(var nodeId in this.referenceState){if(this.referenceState.hasOwnProperty(nodeId)&&nodes[nodeId]!==undefined){dx=nodes[nodeId].x-reference[nodeId].positions.x;dy=nodes[nodeId].y-reference[nodeId].positions.y;dpos=Math.sqrt(Math.pow(dx,2)+Math.pow(dy,2));if(dpos>posThreshold){return false}}}return true}},{key:\"moveNodes\",value:function moveNodes(){var nodeIndices=this.physicsBody.physicsNodeIndices;var maxNodeVelocity=0;var averageNodeVelocity=0;var velocityAdaptiveThreshold=5;for(var i=0;i<nodeIndices.length;i++){var nodeId=nodeIndices[i];var nodeVelocity=this._performStep(nodeId);maxNodeVelocity=Math.max(maxNodeVelocity,nodeVelocity);averageNodeVelocity+=nodeVelocity}this.adaptiveTimestepEnabled=averageNodeVelocity/nodeIndices.length<velocityAdaptiveThreshold;this.stabilized=maxNodeVelocity<this.options.minVelocity}},{key:\"calculateComponentVelocity\",value:function calculateComponentVelocity(v,f,m){var df=this.modelOptions.damping*v;var a=(f-df)/m;v+=a*this.timestep;var maxV=this.options.maxVelocity||1e9;if(Math.abs(v)>maxV){v=v>0?maxV:-maxV}return v}},{key:\"_performStep\",value:function _performStep(nodeId){var node=this.body.nodes[nodeId];var force=this.physicsBody.forces[nodeId];var velocity=this.physicsBody.velocities[nodeId];this.previousStates[nodeId]={x:node.x,y:node.y,vx:velocity.x,vy:velocity.y};if(node.options.fixed.x===false){velocity.x=this.calculateComponentVelocity(velocity.x,force.x,node.options.mass);node.x+=velocity.x*this.timestep}else{force.x=0;velocity.x=0}if(node.options.fixed.y===false){velocity.y=this.calculateComponentVelocity(velocity.y,force.y,node.options.mass);node.y+=velocity.y*this.timestep}else{force.y=0;velocity.y=0}var totalVelocity=Math.sqrt(Math.pow(velocity.x,2)+Math.pow(velocity.y,2));return totalVelocity}},{key:\"_freezeNodes\",value:function _freezeNodes(){var nodes=this.body.nodes;for(var id in nodes){if(nodes.hasOwnProperty(id)){if(nodes[id].x&&nodes[id].y){var fixed=nodes[id].options.fixed;this.freezeCache[id]={x:fixed.x,y:fixed.y};fixed.x=true;fixed.y=true}}}}},{key:\"_restoreFrozenNodes\",value:function _restoreFrozenNodes(){var nodes=this.body.nodes;for(var id in nodes){if(nodes.hasOwnProperty(id)){if(this.freezeCache[id]!==undefined){nodes[id].options.fixed.x=this.freezeCache[id].x;nodes[id].options.fixed.y=this.freezeCache[id].y}}}this.freezeCache={}}},{key:\"stabilize\",value:function stabilize(){var _this3=this;var iterations=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.options.stabilization.iterations;if(typeof iterations!==\"number\"){iterations=this.options.stabilization.iterations;console.log(\"The stabilize method needs a numeric amount of iterations. Switching to default: \",iterations)}if(this.physicsBody.physicsNodeIndices.length===0){this.ready=true;return}this.adaptiveTimestep=true&&this.options.adaptiveTimestep;this.body.emitter.emit(\"_resizeNodes\");this.stopSimulation();this.stabilized=false;this.body.emitter.emit(\"_blockRedraw\");this.targetIterations=iterations;if(this.options.stabilization.onlyDynamicEdges===true){this._freezeNodes()}this.stabilizationIterations=0;setTimeout(function(){return _this3._stabilizationBatch()},0)}},{key:\"_startStabilizing\",value:function _startStabilizing(){if(this.startedStabilization===true)return false;this.body.emitter.emit(\"startStabilizing\");this.startedStabilization=true;return true}},{key:\"_stabilizationBatch\",value:function _stabilizationBatch(){var _this4=this;var running=function running(){return _this4.stabilized===false&&_this4.stabilizationIterations<_this4.targetIterations};var sendProgress=function sendProgress(){_this4.body.emitter.emit(\"stabilizationProgress\",{iterations:_this4.stabilizationIterations,total:_this4.targetIterations})};if(this._startStabilizing()){sendProgress()}var count=0;while(running()&&count<this.options.stabilization.updateInterval){this.physicsTick();count++}sendProgress();if(running()){setTimeout(this._stabilizationBatch.bind(this),0)}else{this._finalizeStabilization()}}},{key:\"_finalizeStabilization\",value:function _finalizeStabilization(){this.body.emitter.emit(\"_allowRedraw\");if(this.options.stabilization.fit===true){this.body.emitter.emit(\"fit\")}if(this.options.stabilization.onlyDynamicEdges===true){this._restoreFrozenNodes()}this.body.emitter.emit(\"stabilizationIterationsDone\");this.body.emitter.emit(\"_requestRedraw\");if(this.stabilized===true){this._emitStabilized()}else{this.startSimulation()}this.ready=true}},{key:\"_drawForces\",value:function _drawForces(ctx){for(var i=0;i<this.physicsBody.physicsNodeIndices.length;i++){var index=this.physicsBody.physicsNodeIndices[i];var node=this.body.nodes[index];var force=this.physicsBody.forces[index];var factor=20;var colorFactor=.03;var forceSize=Math.sqrt(Math.pow(force.x,2)+Math.pow(force.x,2));var size=Math.min(Math.max(5,forceSize),15);var arrowSize=3*size;var color=util.HSVToHex((180-Math.min(1,Math.max(0,colorFactor*forceSize))*180)/360,1,1);var point={x:node.x+factor*force.x,y:node.y+factor*force.y};ctx.lineWidth=size;ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(node.x,node.y);ctx.lineTo(point.x,point.y);ctx.stroke();var angle=Math.atan2(force.y,force.x);ctx.fillStyle=color;EndPoints.draw(ctx,{type:\"arrow\",point:point,angle:angle,length:arrowSize});ctx.fill()}}}]);return PhysicsEngine}();exports[\"default\"]=PhysicsEngine},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var RepulsionSolver=function(){function RepulsionSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,RepulsionSolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(RepulsionSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var dx,dy,distance,fx,fy,repulsingForce,node1,node2;var nodes=this.body.nodes;var nodeIndices=this.physicsBody.physicsNodeIndices;var forces=this.physicsBody.forces;var nodeDistance=this.options.nodeDistance;var a=-2/3/nodeDistance;var b=4/3;for(var i=0;i<nodeIndices.length-1;i++){node1=nodes[nodeIndices[i]];for(var j=i+1;j<nodeIndices.length;j++){node2=nodes[nodeIndices[j]];dx=node2.x-node1.x;dy=node2.y-node1.y;distance=Math.sqrt(dx*dx+dy*dy);if(distance===0){distance=.1*Math.random();dx=distance}if(distance<2*nodeDistance){if(distance<.5*nodeDistance){repulsingForce=1}else{repulsingForce=a*distance+b}repulsingForce=repulsingForce/distance;fx=dx*repulsingForce;fy=dy*repulsingForce;forces[node1.id].x-=fx;forces[node1.id].y-=fy;forces[node2.id].x+=fx;forces[node2.id].y+=fy}}}}}]);return RepulsionSolver}();exports[\"default\"]=RepulsionSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var HierarchicalRepulsionSolver=function(){function HierarchicalRepulsionSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,HierarchicalRepulsionSolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(HierarchicalRepulsionSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var dx,dy,distance,fx,fy,repulsingForce,node1,node2,i,j;var nodes=this.body.nodes;var nodeIndices=this.physicsBody.physicsNodeIndices;var forces=this.physicsBody.forces;var nodeDistance=this.options.nodeDistance;for(i=0;i<nodeIndices.length-1;i++){node1=nodes[nodeIndices[i]];for(j=i+1;j<nodeIndices.length;j++){node2=nodes[nodeIndices[j]];if(node1.level===node2.level){dx=node2.x-node1.x;dy=node2.y-node1.y;distance=Math.sqrt(dx*dx+dy*dy);var steepness=.05;if(distance<nodeDistance){repulsingForce=-Math.pow(steepness*distance,2)+Math.pow(steepness*nodeDistance,2)}else{repulsingForce=0}if(distance===0){distance=.01}else{repulsingForce=repulsingForce/distance}fx=dx*repulsingForce;fy=dy*repulsingForce;forces[node1.id].x-=fx;forces[node1.id].y-=fy;forces[node2.id].x+=fx;forces[node2.id].y+=fy}}}}}]);return HierarchicalRepulsionSolver}();exports[\"default\"]=HierarchicalRepulsionSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var SpringSolver=function(){function SpringSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,SpringSolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(SpringSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var edgeLength=void 0,edge=void 0;var edgeIndices=this.physicsBody.physicsEdgeIndices;var edges=this.body.edges;var node1=void 0,node2=void 0,node3=void 0;for(var i=0;i<edgeIndices.length;i++){edge=edges[edgeIndices[i]];if(edge.connected===true&&edge.toId!==edge.fromId){if(this.body.nodes[edge.toId]!==undefined&&this.body.nodes[edge.fromId]!==undefined){if(edge.edgeType.via!==undefined){edgeLength=edge.options.length===undefined?this.options.springLength:edge.options.length;node1=edge.to;node2=edge.edgeType.via;node3=edge.from;this._calculateSpringForce(node1,node2,.5*edgeLength);this._calculateSpringForce(node2,node3,.5*edgeLength)}else{edgeLength=edge.options.length===undefined?this.options.springLength*1.5:edge.options.length;this._calculateSpringForce(edge.from,edge.to,edgeLength)}}}}}},{key:\"_calculateSpringForce\",value:function _calculateSpringForce(node1,node2,edgeLength){var dx=node1.x-node2.x;var dy=node1.y-node2.y;var distance=Math.max(Math.sqrt(dx*dx+dy*dy),.01);var springForce=this.options.springConstant*(edgeLength-distance)/distance;var fx=dx*springForce;var fy=dy*springForce;if(this.physicsBody.forces[node1.id]!==undefined){this.physicsBody.forces[node1.id].x+=fx;this.physicsBody.forces[node1.id].y+=fy}if(this.physicsBody.forces[node2.id]!==undefined){this.physicsBody.forces[node2.id].x-=fx;this.physicsBody.forces[node2.id].y-=fy}}}]);return SpringSolver}();exports[\"default\"]=SpringSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var HierarchicalSpringSolver=function(){function HierarchicalSpringSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,HierarchicalSpringSolver);this.body=body;this.physicsBody=physicsBody;this.setOptions(options)}(0,_createClass3[\"default\"])(HierarchicalSpringSolver,[{key:\"setOptions\",value:function setOptions(options){this.options=options}},{key:\"solve\",value:function solve(){var edgeLength,edge;var dx,dy,fx,fy,springForce,distance;var edges=this.body.edges;var factor=.5;var edgeIndices=this.physicsBody.physicsEdgeIndices;var nodeIndices=this.physicsBody.physicsNodeIndices;var forces=this.physicsBody.forces;for(var i=0;i<nodeIndices.length;i++){var nodeId=nodeIndices[i];forces[nodeId].springFx=0;forces[nodeId].springFy=0}for(var _i=0;_i<edgeIndices.length;_i++){edge=edges[edgeIndices[_i]];if(edge.connected===true){edgeLength=edge.options.length===undefined?this.options.springLength:edge.options.length;dx=edge.from.x-edge.to.x;dy=edge.from.y-edge.to.y;distance=Math.sqrt(dx*dx+dy*dy);distance=distance===0?.01:distance;springForce=this.options.springConstant*(edgeLength-distance)/distance;fx=dx*springForce;fy=dy*springForce;if(edge.to.level!=edge.from.level){if(forces[edge.toId]!==undefined){forces[edge.toId].springFx-=fx;forces[edge.toId].springFy-=fy}if(forces[edge.fromId]!==undefined){forces[edge.fromId].springFx+=fx;forces[edge.fromId].springFy+=fy}}else{if(forces[edge.toId]!==undefined){forces[edge.toId].x-=factor*fx;forces[edge.toId].y-=factor*fy}if(forces[edge.fromId]!==undefined){forces[edge.fromId].x+=factor*fx;forces[edge.fromId].y+=factor*fy}}}}springForce=1;var springFx,springFy;for(var _i2=0;_i2<nodeIndices.length;_i2++){var _nodeId=nodeIndices[_i2];springFx=Math.min(springForce,Math.max(-springForce,forces[_nodeId].springFx));springFy=Math.min(springForce,Math.max(-springForce,forces[_nodeId].springFy));forces[_nodeId].x+=springFx;forces[_nodeId].y+=springFy}var totalFx=0;var totalFy=0;for(var _i3=0;_i3<nodeIndices.length;_i3++){var _nodeId2=nodeIndices[_i3];totalFx+=forces[_nodeId2].x;totalFy+=forces[_nodeId2].y}var correctionFx=totalFx/nodeIndices.length;var correctionFy=totalFy/nodeIndices.length;for(var _i4=0;_i4<nodeIndices.length;_i4++){var _nodeId3=nodeIndices[_i4];forces[_nodeId3].x-=correctionFx;forces[_nodeId3].y-=correctionFy}}}]);return HierarchicalSpringSolver}();exports[\"default\"]=HierarchicalSpringSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _BarnesHutSolver2=__webpack_require__(120);var _BarnesHutSolver3=_interopRequireDefault(_BarnesHutSolver2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var ForceAtlas2BasedRepulsionSolver=function(_BarnesHutSolver){(0,_inherits3[\"default\"])(ForceAtlas2BasedRepulsionSolver,_BarnesHutSolver);function ForceAtlas2BasedRepulsionSolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,ForceAtlas2BasedRepulsionSolver);return(0,_possibleConstructorReturn3[\"default\"])(this,(ForceAtlas2BasedRepulsionSolver.__proto__||(0,_getPrototypeOf2[\"default\"])(ForceAtlas2BasedRepulsionSolver)).call(this,body,physicsBody,options))}(0,_createClass3[\"default\"])(ForceAtlas2BasedRepulsionSolver,[{key:\"_calculateForces\",value:function _calculateForces(distance,dx,dy,node,parentBranch){if(distance===0){distance=.1*Math.random();dx=distance}if(this.overlapAvoidanceFactor<1&&node.shape.radius){distance=Math.max(.1+this.overlapAvoidanceFactor*node.shape.radius,distance-node.shape.radius)}var degree=node.edges.length+1;var gravityForce=this.options.gravitationalConstant*parentBranch.mass*node.options.mass*degree/Math.pow(distance,2);var fx=dx*gravityForce;var fy=dy*gravityForce;this.physicsBody.forces[node.id].x+=fx;this.physicsBody.forces[node.id].y+=fy}}]);return ForceAtlas2BasedRepulsionSolver}(_BarnesHutSolver3[\"default\"]);exports[\"default\"]=ForceAtlas2BasedRepulsionSolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _CentralGravitySolver2=__webpack_require__(121);var _CentralGravitySolver3=_interopRequireDefault(_CentralGravitySolver2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var ForceAtlas2BasedCentralGravitySolver=function(_CentralGravitySolver){(0,_inherits3[\"default\"])(ForceAtlas2BasedCentralGravitySolver,_CentralGravitySolver);function ForceAtlas2BasedCentralGravitySolver(body,physicsBody,options){(0,_classCallCheck3[\"default\"])(this,ForceAtlas2BasedCentralGravitySolver);return(0,_possibleConstructorReturn3[\"default\"])(this,(ForceAtlas2BasedCentralGravitySolver.__proto__||(0,_getPrototypeOf2[\"default\"])(ForceAtlas2BasedCentralGravitySolver)).call(this,body,physicsBody,options))}(0,_createClass3[\"default\"])(ForceAtlas2BasedCentralGravitySolver,[{key:\"_calculateForces\",value:function _calculateForces(distance,dx,dy,forces,node){if(distance>0){var degree=node.edges.length+1;var gravityForce=this.options.centralGravity*degree*node.options.mass;forces[node.id].x=dx*gravityForce;forces[node.id].y=dy*gravityForce}}}]);return ForceAtlas2BasedCentralGravitySolver}(_CentralGravitySolver3[\"default\"]);exports[\"default\"]=ForceAtlas2BasedCentralGravitySolver},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NetworkUtil=__webpack_require__(76)[\"default\"];var Cluster=__webpack_require__(228)[\"default\"];var Edge=__webpack_require__(74)[\"default\"];var Node=__webpack_require__(47)[\"default\"];var ClusterEngine=function(){function ClusterEngine(body){var _this=this;(0,_classCallCheck3[\"default\"])(this,ClusterEngine);this.body=body;this.clusteredNodes={};this.clusteredEdges={};this.options={};this.defaultOptions={};util.extend(this.options,this.defaultOptions);this.body.emitter.on(\"_resetData\",function(){_this.clusteredNodes={};_this.clusteredEdges={}})}(0,_createClass3[\"default\"])(ClusterEngine,[{key:\"clusterByHubsize\",value:function clusterByHubsize(hubsize,options){if(hubsize===undefined){hubsize=this._getHubSize()}else if((typeof hubsize===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(hubsize))===\"object\"){options=this._checkOptions(hubsize);hubsize=this._getHubSize()}var nodesToCluster=[];for(var i=0;i<this.body.nodeIndices.length;i++){var node=this.body.nodes[this.body.nodeIndices[i]];if(node.edges.length>=hubsize){nodesToCluster.push(node.id)}}for(var _i=0;_i<nodesToCluster.length;_i++){this.clusterByConnection(nodesToCluster[_i],options,true)}this.body.emitter.emit(\"_dataChanged\")}},{key:\"cluster\",value:function cluster(){var _this2=this;var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var refreshData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(options.joinCondition===undefined){throw new Error(\"Cannot call clusterByNodeData without a joinCondition function in the options.\")}options=this._checkOptions(options);var childNodesObj={};var childEdgesObj={};util.forEach(this.body.nodes,function(node,nodeId){var clonedOptions=NetworkUtil.cloneOptions(node);if(options.joinCondition(clonedOptions)===true){childNodesObj[nodeId]=node;util.forEach(node.edges,function(edge){if(_this2.clusteredEdges[edge.id]===undefined){childEdgesObj[edge.id]=edge}})}});this._cluster(childNodesObj,childEdgesObj,options,refreshData)}},{key:\"clusterByEdgeCount\",value:function clusterByEdgeCount(edgeCount,options){var _this3=this;var refreshData=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;options=this._checkOptions(options);var clusters=[];var usedNodes={};var edge=void 0,edges=void 0,relevantEdgeCount=void 0;var _loop=function _loop(i){var childNodesObj={};var childEdgesObj={};var nodeId=_this3.body.nodeIndices[i];var node=_this3.body.nodes[nodeId];if(usedNodes[nodeId]===undefined){relevantEdgeCount=0;edges=[];for(var j=0;j<node.edges.length;j++){edge=node.edges[j];if(_this3.clusteredEdges[edge.id]===undefined){if(edge.toId!==edge.fromId){relevantEdgeCount++}edges.push(edge)}}if(relevantEdgeCount===edgeCount){checkJoinCondition=function checkJoinCondition(node){if(options.joinCondition===undefined||options.joinCondition===null){return true}var clonedOptions=NetworkUtil.cloneOptions(node);return options.joinCondition(clonedOptions)};var gatheringSuccessful=true;for(var _j=0;_j<edges.length;_j++){edge=edges[_j];var childNodeId=_this3._getConnectedId(edge,nodeId);if(checkJoinCondition(node)){childEdgesObj[edge.id]=edge;childNodesObj[nodeId]=node;childNodesObj[childNodeId]=_this3.body.nodes[childNodeId];usedNodes[nodeId]=true}else{gatheringSuccessful=false;break}}if((0,_keys2[\"default\"])(childNodesObj).length>0&&(0,_keys2[\"default\"])(childEdgesObj).length>0&&gatheringSuccessful===true){findClusterData=function findClusterData(){for(var n=0;n<clusters.length;++n){for(var m in childNodesObj){if(clusters[n].nodes[m]!==undefined){return clusters[n]}}}return undefined};foundCluster=findClusterData();if(foundCluster!==undefined){for(var m in childNodesObj){if(foundCluster.nodes[m]===undefined){foundCluster.nodes[m]=childNodesObj[m]}}for(var _m in childEdgesObj){if(foundCluster.edges[_m]===undefined){foundCluster.edges[_m]=childEdgesObj[_m]}}}else{clusters.push({nodes:childNodesObj,edges:childEdgesObj})}}}}};for(var i=0;i<this.body.nodeIndices.length;i++){var checkJoinCondition;var findClusterData;var foundCluster;_loop(i)}for(var i=0;i<clusters.length;i++){this._cluster(clusters[i].nodes,clusters[i].edges,options,false)}if(refreshData===true){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"clusterOutliers\",value:function clusterOutliers(options){var refreshData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;this.clusterByEdgeCount(1,options,refreshData)}},{key:\"clusterBridges\",value:function clusterBridges(options){var refreshData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;this.clusterByEdgeCount(2,options,refreshData)}},{key:\"clusterByConnection\",value:function clusterByConnection(nodeId,options){var refreshData=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;if(nodeId===undefined){throw new Error(\"No nodeId supplied to clusterByConnection!\")}if(this.body.nodes[nodeId]===undefined){throw new Error(\"The nodeId given to clusterByConnection does not exist!\")}var node=this.body.nodes[nodeId];options=this._checkOptions(options,node);if(options.clusterNodeProperties.x===undefined){options.clusterNodeProperties.x=node.x}if(options.clusterNodeProperties.y===undefined){options.clusterNodeProperties.y=node.y}if(options.clusterNodeProperties.fixed===undefined){options.clusterNodeProperties.fixed={};options.clusterNodeProperties.fixed.x=node.options.fixed.x;options.clusterNodeProperties.fixed.y=node.options.fixed.y}var childNodesObj={};var childEdgesObj={};var parentNodeId=node.id;var parentClonedOptions=NetworkUtil.cloneOptions(node);childNodesObj[parentNodeId]=node;for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];if(this.clusteredEdges[edge.id]===undefined){var childNodeId=this._getConnectedId(edge,parentNodeId);if(this.clusteredNodes[childNodeId]===undefined){if(childNodeId!==parentNodeId){if(options.joinCondition===undefined){childEdgesObj[edge.id]=edge;childNodesObj[childNodeId]=this.body.nodes[childNodeId]}else{var childClonedOptions=NetworkUtil.cloneOptions(this.body.nodes[childNodeId]);if(options.joinCondition(parentClonedOptions,childClonedOptions)===true){childEdgesObj[edge.id]=edge;childNodesObj[childNodeId]=this.body.nodes[childNodeId]}}}else{childEdgesObj[edge.id]=edge}}}}var childNodeIDs=(0,_keys2[\"default\"])(childNodesObj).map(function(childNode){return childNodesObj[childNode].id});for(childNode in childNodesObj){if(!childNodesObj.hasOwnProperty(childNode))continue;var childNode=childNodesObj[childNode];for(var y=0;y<childNode.edges.length;y++){var childEdge=childNode.edges[y];if(childNodeIDs.indexOf(this._getConnectedId(childEdge,childNode.id))>-1){childEdgesObj[childEdge.id]=childEdge}}}this._cluster(childNodesObj,childEdgesObj,options,refreshData)}},{key:\"_createClusterEdges\",value:function _createClusterEdges(childNodesObj,childEdgesObj,clusterNodeProperties,clusterEdgeProperties){var edge=void 0,childNodeId=void 0,childNode=void 0,toId=void 0,fromId=void 0,otherNodeId=void 0;var childKeys=(0,_keys2[\"default\"])(childNodesObj);var createEdges=[];for(var i=0;i<childKeys.length;i++){childNodeId=childKeys[i];childNode=childNodesObj[childNodeId];for(var j=0;j<childNode.edges.length;j++){edge=childNode.edges[j];if(this.clusteredEdges[edge.id]===undefined){if(edge.toId==edge.fromId){childEdgesObj[edge.id]=edge}else{if(edge.toId==childNodeId){toId=clusterNodeProperties.id;fromId=edge.fromId;otherNodeId=fromId}else{toId=edge.toId;fromId=clusterNodeProperties.id;otherNodeId=toId}}if(childNodesObj[otherNodeId]===undefined){createEdges.push({edge:edge,fromId:fromId,toId:toId})}}}}var newEdges=[];var getNewEdge=function getNewEdge(createdEdge){for(var _j2=0;_j2<newEdges.length;_j2++){var newEdge=newEdges[_j2];var matchToDirection=createdEdge.fromId===newEdge.fromId&&createdEdge.toId===newEdge.toId;var matchFromDirection=createdEdge.fromId===newEdge.toId&&createdEdge.toId===newEdge.fromId;if(matchToDirection||matchFromDirection){return newEdge}}return null};for(var _j3=0;_j3<createEdges.length;_j3++){var createdEdge=createEdges[_j3];var _edge=createdEdge.edge;var newEdge=getNewEdge(createdEdge);if(newEdge===null){newEdge=this._createClusteredEdge(createdEdge.fromId,createdEdge.toId,_edge,clusterEdgeProperties);newEdges.push(newEdge)}else{newEdge.clusteringEdgeReplacingIds.push(_edge.id)}this.body.edges[_edge.id].edgeReplacedById=newEdge.id;this._backupEdgeOptions(_edge);_edge.setOptions({physics:false})}}},{key:\"_checkOptions\",value:function _checkOptions(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(options.clusterEdgeProperties===undefined){options.clusterEdgeProperties={}}if(options.clusterNodeProperties===undefined){options.clusterNodeProperties={}}return options}},{key:\"_cluster\",value:function _cluster(childNodesObj,childEdgesObj,options){var refreshData=arguments.length>3&&arguments[3]!==undefined?arguments[3]:true;var tmpNodesToRemove=[];for(var _nodeId in childNodesObj){if(childNodesObj.hasOwnProperty(_nodeId)){if(this.clusteredNodes[_nodeId]!==undefined){tmpNodesToRemove.push(_nodeId)}}}for(var n=0;n<tmpNodesToRemove.length;++n){delete childNodesObj[tmpNodesToRemove[n]]}if((0,_keys2[\"default\"])(childNodesObj).length==0){return}if((0,_keys2[\"default\"])(childNodesObj).length==1&&options.clusterNodeProperties.allowSingleNodeCluster!=true){return}var clusterNodeProperties=util.deepExtend({},options.clusterNodeProperties);if(options.processProperties!==undefined){var childNodesOptions=[];for(var _nodeId2 in childNodesObj){if(childNodesObj.hasOwnProperty(_nodeId2)){var clonedOptions=NetworkUtil.cloneOptions(childNodesObj[_nodeId2]);childNodesOptions.push(clonedOptions)}}var childEdgesOptions=[];for(var edgeId in childEdgesObj){if(childEdgesObj.hasOwnProperty(edgeId)){if(edgeId.substr(0,12)!==\"clusterEdge:\"){var _clonedOptions=NetworkUtil.cloneOptions(childEdgesObj[edgeId],\"edge\");childEdgesOptions.push(_clonedOptions)}}}clusterNodeProperties=options.processProperties(clusterNodeProperties,childNodesOptions,childEdgesOptions);if(!clusterNodeProperties){throw new Error(\"The processProperties function does not return properties!\")}}if(clusterNodeProperties.id===undefined){clusterNodeProperties.id=\"cluster:\"+util.randomUUID()}var clusterId=clusterNodeProperties.id;if(clusterNodeProperties.label===undefined){clusterNodeProperties.label=\"cluster\"}var pos=undefined;if(clusterNodeProperties.x===undefined){pos=this._getClusterPosition(childNodesObj);clusterNodeProperties.x=pos.x}if(clusterNodeProperties.y===undefined){if(pos===undefined){pos=this._getClusterPosition(childNodesObj)}clusterNodeProperties.y=pos.y}clusterNodeProperties.id=clusterId;var clusterNode=this.body.functions.createNode(clusterNodeProperties,Cluster);clusterNode.containedNodes=childNodesObj;clusterNode.containedEdges=childEdgesObj;clusterNode.clusterEdgeProperties=options.clusterEdgeProperties;this.body.nodes[clusterNodeProperties.id]=clusterNode;this._clusterEdges(childNodesObj,childEdgesObj,clusterNodeProperties,options.clusterEdgeProperties);clusterNodeProperties.id=undefined;if(refreshData===true){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"_backupEdgeOptions\",value:function _backupEdgeOptions(edge){if(this.clusteredEdges[edge.id]===undefined){this.clusteredEdges[edge.id]={physics:edge.options.physics}}}},{key:\"_restoreEdge\",value:function _restoreEdge(edge){var originalOptions=this.clusteredEdges[edge.id];if(originalOptions!==undefined){edge.setOptions({physics:originalOptions.physics});delete this.clusteredEdges[edge.id]}}},{key:\"isCluster\",value:function isCluster(nodeId){if(this.body.nodes[nodeId]!==undefined){return this.body.nodes[nodeId].isCluster===true}else{console.log(\"Node does not exist.\");return false}}},{key:\"_getClusterPosition\",value:function _getClusterPosition(childNodesObj){var childKeys=(0,_keys2[\"default\"])(childNodesObj);var minX=childNodesObj[childKeys[0]].x;var maxX=childNodesObj[childKeys[0]].x;var minY=childNodesObj[childKeys[0]].y;var maxY=childNodesObj[childKeys[0]].y;var node=void 0;for(var i=1;i<childKeys.length;i++){node=childNodesObj[childKeys[i]];minX=node.x<minX?node.x:minX;maxX=node.x>maxX?node.x:maxX\n;minY=node.y<minY?node.y:minY;maxY=node.y>maxY?node.y:maxY}return{x:.5*(minX+maxX),y:.5*(minY+maxY)}}},{key:\"openCluster\",value:function openCluster(clusterNodeId,options){var refreshData=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;if(clusterNodeId===undefined){throw new Error(\"No clusterNodeId supplied to openCluster.\")}var clusterNode=this.body.nodes[clusterNodeId];if(clusterNode===undefined){throw new Error(\"The clusterNodeId supplied to openCluster does not exist.\")}if(clusterNode.isCluster!==true||clusterNode.containedNodes===undefined||clusterNode.containedEdges===undefined){throw new Error(\"The node:\"+clusterNodeId+\" is not a valid cluster.\")}var stack=this.findNode(clusterNodeId);var parentIndex=stack.indexOf(clusterNodeId)-1;if(parentIndex>=0){var parentClusterNodeId=stack[parentIndex];var parentClusterNode=this.body.nodes[parentClusterNodeId];parentClusterNode._openChildCluster(clusterNodeId);delete this.body.nodes[clusterNodeId];if(refreshData===true){this.body.emitter.emit(\"_dataChanged\")}return}var containedNodes=clusterNode.containedNodes;var containedEdges=clusterNode.containedEdges;if(options!==undefined&&options.releaseFunction!==undefined&&typeof options.releaseFunction===\"function\"){var positions={};var clusterPosition={x:clusterNode.x,y:clusterNode.y};for(var _nodeId3 in containedNodes){if(containedNodes.hasOwnProperty(_nodeId3)){var containedNode=this.body.nodes[_nodeId3];positions[_nodeId3]={x:containedNode.x,y:containedNode.y}}}var newPositions=options.releaseFunction(clusterPosition,positions);for(var _nodeId4 in containedNodes){if(containedNodes.hasOwnProperty(_nodeId4)){var _containedNode=this.body.nodes[_nodeId4];if(newPositions[_nodeId4]!==undefined){_containedNode.x=newPositions[_nodeId4].x===undefined?clusterNode.x:newPositions[_nodeId4].x;_containedNode.y=newPositions[_nodeId4].y===undefined?clusterNode.y:newPositions[_nodeId4].y}}}}else{util.forEach(containedNodes,function(containedNode){if(containedNode.options.fixed.x===false){containedNode.x=clusterNode.x}if(containedNode.options.fixed.y===false){containedNode.y=clusterNode.y}})}for(var _nodeId5 in containedNodes){if(containedNodes.hasOwnProperty(_nodeId5)){var _containedNode2=this.body.nodes[_nodeId5];_containedNode2.vx=clusterNode.vx;_containedNode2.vy=clusterNode.vy;_containedNode2.setOptions({physics:true});delete this.clusteredNodes[_nodeId5]}}var edgesToBeDeleted=[];for(var i=0;i<clusterNode.edges.length;i++){edgesToBeDeleted.push(clusterNode.edges[i])}for(var _i2=0;_i2<edgesToBeDeleted.length;_i2++){var edge=edgesToBeDeleted[_i2];var otherNodeId=this._getConnectedId(edge,clusterNodeId);var otherNode=this.clusteredNodes[otherNodeId];for(var j=0;j<edge.clusteringEdgeReplacingIds.length;j++){var transferId=edge.clusteringEdgeReplacingIds[j];var transferEdge=this.body.edges[transferId];if(transferEdge===undefined)continue;if(otherNode!==undefined){var otherCluster=this.body.nodes[otherNode.clusterId];otherCluster.containedEdges[transferEdge.id]=transferEdge;delete containedEdges[transferEdge.id];var fromId=transferEdge.fromId;var toId=transferEdge.toId;if(transferEdge.toId==otherNodeId){toId=otherNode.clusterId}else{fromId=otherNode.clusterId}this._createClusteredEdge(fromId,toId,transferEdge,otherCluster.clusterEdgeProperties,{hidden:false,physics:true})}else{this._restoreEdge(transferEdge)}}edge.remove()}for(var edgeId in containedEdges){if(containedEdges.hasOwnProperty(edgeId)){this._restoreEdge(containedEdges[edgeId])}}delete this.body.nodes[clusterNodeId];if(refreshData===true){this.body.emitter.emit(\"_dataChanged\")}}},{key:\"getNodesInCluster\",value:function getNodesInCluster(clusterId){var nodesArray=[];if(this.isCluster(clusterId)===true){var containedNodes=this.body.nodes[clusterId].containedNodes;for(var _nodeId6 in containedNodes){if(containedNodes.hasOwnProperty(_nodeId6)){nodesArray.push(this.body.nodes[_nodeId6].id)}}}return nodesArray}},{key:\"findNode\",value:function findNode(nodeId){var stack=[];var max=100;var counter=0;var node=void 0;while(this.clusteredNodes[nodeId]!==undefined&&counter<max){node=this.body.nodes[nodeId];if(node===undefined)return[];stack.push(node.id);nodeId=this.clusteredNodes[nodeId].clusterId;counter++}node=this.body.nodes[nodeId];if(node===undefined)return[];stack.push(node.id);stack.reverse();return stack}},{key:\"updateClusteredNode\",value:function updateClusteredNode(clusteredNodeId,newOptions){if(clusteredNodeId===undefined){throw new Error(\"No clusteredNodeId supplied to updateClusteredNode.\")}if(newOptions===undefined){throw new Error(\"No newOptions supplied to updateClusteredNode.\")}if(this.body.nodes[clusteredNodeId]===undefined){throw new Error(\"The clusteredNodeId supplied to updateClusteredNode does not exist.\")}this.body.nodes[clusteredNodeId].setOptions(newOptions);this.body.emitter.emit(\"_dataChanged\")}},{key:\"updateEdge\",value:function updateEdge(startEdgeId,newOptions){if(startEdgeId===undefined){throw new Error(\"No startEdgeId supplied to updateEdge.\")}if(newOptions===undefined){throw new Error(\"No newOptions supplied to updateEdge.\")}if(this.body.edges[startEdgeId]===undefined){throw new Error(\"The startEdgeId supplied to updateEdge does not exist.\")}var allEdgeIds=this.getClusteredEdges(startEdgeId);for(var i=0;i<allEdgeIds.length;i++){var edge=this.body.edges[allEdgeIds[i]];edge.setOptions(newOptions)}this.body.emitter.emit(\"_dataChanged\")}},{key:\"getClusteredEdges\",value:function getClusteredEdges(edgeId){var stack=[];var max=100;var counter=0;while(edgeId!==undefined&&this.body.edges[edgeId]!==undefined&&counter<max){stack.push(this.body.edges[edgeId].id);edgeId=this.body.edges[edgeId].edgeReplacedById;counter++}stack.reverse();return stack}},{key:\"getBaseEdge\",value:function getBaseEdge(clusteredEdgeId){return this.getBaseEdges(clusteredEdgeId)[0]}},{key:\"getBaseEdges\",value:function getBaseEdges(clusteredEdgeId){var IdsToHandle=[clusteredEdgeId];var doneIds=[];var foundIds=[];var max=100;var counter=0;while(IdsToHandle.length>0&&counter<max){var nextId=IdsToHandle.pop();if(nextId===undefined)continue;var nextEdge=this.body.edges[nextId];if(nextEdge===undefined)continue;counter++;var replacingIds=nextEdge.clusteringEdgeReplacingIds;if(replacingIds===undefined){foundIds.push(nextId)}else{for(var i=0;i<replacingIds.length;++i){var replacingId=replacingIds[i];if(IdsToHandle.indexOf(replacingIds)!==-1||doneIds.indexOf(replacingIds)!==-1){continue}IdsToHandle.push(replacingId)}}doneIds.push(nextId)}return foundIds}},{key:\"_getConnectedId\",value:function _getConnectedId(edge,nodeId){if(edge.toId!=nodeId){return edge.toId}else if(edge.fromId!=nodeId){return edge.fromId}else{return edge.fromId}}},{key:\"_getHubSize\",value:function _getHubSize(){var average=0;var averageSquared=0;var hubCounter=0;var largestHub=0;for(var i=0;i<this.body.nodeIndices.length;i++){var _node=this.body.nodes[this.body.nodeIndices[i]];if(_node.edges.length>largestHub){largestHub=_node.edges.length}average+=_node.edges.length;averageSquared+=Math.pow(_node.edges.length,2);hubCounter+=1}average=average/hubCounter;averageSquared=averageSquared/hubCounter;var variance=averageSquared-Math.pow(average,2);var standardDeviation=Math.sqrt(variance);var hubThreshold=Math.floor(average+2*standardDeviation);if(hubThreshold>largestHub){hubThreshold=largestHub}return hubThreshold}},{key:\"_createClusteredEdge\",value:function _createClusteredEdge(fromId,toId,baseEdge,clusterEdgeProperties,extraOptions){var clonedOptions=NetworkUtil.cloneOptions(baseEdge,\"edge\");util.deepExtend(clonedOptions,clusterEdgeProperties);clonedOptions.from=fromId;clonedOptions.to=toId;clonedOptions.id=\"clusterEdge:\"+util.randomUUID();if(extraOptions!==undefined){util.deepExtend(clonedOptions,extraOptions)}var newEdge=this.body.functions.createEdge(clonedOptions);newEdge.clusteringEdgeReplacingIds=[baseEdge.id];newEdge.connect();this.body.edges[newEdge.id]=newEdge;return newEdge}},{key:\"_clusterEdges\",value:function _clusterEdges(childNodes,childEdges,clusterNode,clusterEdgeProperties){if(childEdges instanceof Edge){var edge=childEdges;var obj={};obj[edge.id]=edge;childEdges=obj}if(childNodes instanceof Node){var _node2=childNodes;var _obj={};_obj[_node2.id]=_node2;childNodes=_obj}if(clusterNode===undefined||clusterNode===null){throw new Error(\"_clusterEdges: parameter clusterNode required\")}if(clusterEdgeProperties===undefined){clusterEdgeProperties=clusterNode.clusterEdgeProperties}this._createClusterEdges(childNodes,childEdges,clusterNode,clusterEdgeProperties);for(var edgeId in childEdges){if(childEdges.hasOwnProperty(edgeId)){if(this.body.edges[edgeId]!==undefined){var _edge2=this.body.edges[edgeId];this._backupEdgeOptions(_edge2);_edge2.setOptions({physics:false})}}}for(var _nodeId7 in childNodes){if(childNodes.hasOwnProperty(_nodeId7)){this.clusteredNodes[_nodeId7]={clusterId:clusterNode.id,node:this.body.nodes[_nodeId7]};this.body.nodes[_nodeId7].setOptions({physics:false})}}}},{key:\"_getClusterNodeForNode\",value:function _getClusterNodeForNode(nodeId){if(nodeId===undefined)return undefined;var clusteredNode=this.clusteredNodes[nodeId];if(clusteredNode===undefined)return undefined;var clusterId=clusteredNode.clusterId;if(clusterId===undefined)return undefined;return this.body.nodes[clusterId]}},{key:\"_filter\",value:function _filter(arr,callback){var ret=[];util.forEach(arr,function(item){if(callback(item)){ret.push(item)}});return ret}},{key:\"_updateState\",value:function _updateState(){var _this4=this;var nodeId=void 0;var deletedNodeIds=[];var deletedEdgeIds=[];var eachClusterNode=function eachClusterNode(callback){util.forEach(_this4.body.nodes,function(node){if(node.isCluster===true){callback(node)}})};for(nodeId in this.clusteredNodes){if(!this.clusteredNodes.hasOwnProperty(nodeId))continue;var _node3=this.body.nodes[nodeId];if(_node3===undefined){deletedNodeIds.push(nodeId)}}eachClusterNode(function(clusterNode){for(var n=0;n<deletedNodeIds.length;n++){delete clusterNode.containedNodes[deletedNodeIds[n]]}});for(var n=0;n<deletedNodeIds.length;n++){delete this.clusteredNodes[deletedNodeIds[n]]}util.forEach(this.clusteredEdges,function(edgeId){var edge=_this4.body.edges[edgeId];if(edge===undefined||!edge.endPointsValid()){deletedEdgeIds.push(edgeId)}});eachClusterNode(function(clusterNode){util.forEach(clusterNode.containedEdges,function(edge,edgeId){if(!edge.endPointsValid()&&deletedEdgeIds.indexOf(edgeId)===-1){deletedEdgeIds.push(edgeId)}})});util.forEach(this.body.edges,function(edge,edgeId){var isValid=true;var replacedIds=edge.clusteringEdgeReplacingIds;if(replacedIds!==undefined){var numValid=0;util.forEach(replacedIds,function(containedEdgeId){var containedEdge=_this4.body.edges[containedEdgeId];if(containedEdge!==undefined&&containedEdge.endPointsValid()){numValid+=1}});isValid=numValid>0}if(!edge.endPointsValid()||!isValid){deletedEdgeIds.push(edgeId)}});eachClusterNode(function(clusterNode){util.forEach(deletedEdgeIds,function(deletedEdgeId){delete clusterNode.containedEdges[deletedEdgeId];util.forEach(clusterNode.edges,function(edge,m){if(edge.id===deletedEdgeId){clusterNode.edges[m]=null;return}edge.clusteringEdgeReplacingIds=_this4._filter(edge.clusteringEdgeReplacingIds,function(id){return deletedEdgeIds.indexOf(id)===-1})});clusterNode.edges=_this4._filter(clusterNode.edges,function(item){return item!==null})})});util.forEach(deletedEdgeIds,function(edgeId){delete _this4.clusteredEdges[edgeId]});util.forEach(deletedEdgeIds,function(edgeId){delete _this4.body.edges[edgeId]});var ids=(0,_keys2[\"default\"])(this.body.edges);util.forEach(ids,function(edgeId){var edge=_this4.body.edges[edgeId];var shouldBeClustered=_this4._isClusteredNode(edge.fromId)||_this4._isClusteredNode(edge.toId);if(shouldBeClustered===_this4._isClusteredEdge(edge.id)){return}if(shouldBeClustered){var clusterFrom=_this4._getClusterNodeForNode(edge.fromId);if(clusterFrom!==undefined){_this4._clusterEdges(_this4.body.nodes[edge.fromId],edge,clusterFrom)}var clusterTo=_this4._getClusterNodeForNode(edge.toId);if(clusterTo!==undefined){_this4._clusterEdges(_this4.body.nodes[edge.toId],edge,clusterTo)}}else{throw new Error(\"remove edge from clustering not implemented!\")}});var changed=false;var continueLoop=true;var _loop2=function _loop2(){var clustersToOpen=[];eachClusterNode(function(clusterNode){var numNodes=(0,_keys2[\"default\"])(clusterNode.containedNodes).length;var allowSingle=clusterNode.options.allowSingleNodeCluster===true;if(allowSingle&&numNodes<1||!allowSingle&&numNodes<2){clustersToOpen.push(clusterNode.id)}});for(var _n=0;_n<clustersToOpen.length;++_n){_this4.openCluster(clustersToOpen[_n],{},false)}continueLoop=clustersToOpen.length>0;changed=changed||continueLoop};while(continueLoop){_loop2()}if(changed){this._updateState()}}},{key:\"_isClusteredNode\",value:function _isClusteredNode(nodeId){return this.clusteredNodes[nodeId]!==undefined}},{key:\"_isClusteredEdge\",value:function _isClusteredEdge(edgeId){return this.clusteredEdges[edgeId]!==undefined}}]);return ClusterEngine}();exports[\"default\"]=ClusterEngine},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Node=__webpack_require__(47)[\"default\"];var Cluster=function(_Node){(0,_inherits3[\"default\"])(Cluster,_Node);function Cluster(options,body,imagelist,grouplist,globalOptions,defaultOptions){(0,_classCallCheck3[\"default\"])(this,Cluster);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(Cluster.__proto__||(0,_getPrototypeOf2[\"default\"])(Cluster)).call(this,options,body,imagelist,grouplist,globalOptions,defaultOptions));_this.isCluster=true;_this.containedNodes={};_this.containedEdges={};return _this}(0,_createClass3[\"default\"])(Cluster,[{key:\"_openChildCluster\",value:function _openChildCluster(childClusterId){var _this2=this;var childCluster=this.body.nodes[childClusterId];if(this.containedNodes[childClusterId]===undefined){throw new Error(\"node with id: \"+childClusterId+\" not in current cluster\")}if(!childCluster.isCluster){throw new Error(\"node with id: \"+childClusterId+\" is not a cluster\")}delete this.containedNodes[childClusterId];util.forEach(childCluster.edges,function(edge){delete _this2.containedEdges[edge.id]});util.forEach(childCluster.containedNodes,function(node,nodeId){_this2.containedNodes[nodeId]=node});childCluster.containedNodes={};util.forEach(childCluster.containedEdges,function(edge,edgeId){_this2.containedEdges[edgeId]=edge});childCluster.containedEdges={};util.forEach(childCluster.edges,function(clusterEdge){util.forEach(_this2.edges,function(parentClusterEdge){var index=parentClusterEdge.clusteringEdgeReplacingIds.indexOf(clusterEdge.id);if(index===-1)return;util.forEach(clusterEdge.clusteringEdgeReplacingIds,function(srcId){parentClusterEdge.clusteringEdgeReplacingIds.push(srcId);_this2.body.edges[srcId].edgeReplacedById=parentClusterEdge.id});parentClusterEdge.clusteringEdgeReplacingIds.splice(index,1)})});childCluster.edges=[]}}]);return Cluster}(Node);exports[\"default\"]=Cluster},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _initRequestAnimationFrame(){var func;if(window!==undefined){func=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame}if(func===undefined){window.requestAnimationFrame=function(callback){callback()}}else{window.requestAnimationFrame=func}}var util=__webpack_require__(2);var CanvasRenderer=function(){function CanvasRenderer(body,canvas){(0,_classCallCheck3[\"default\"])(this,CanvasRenderer);_initRequestAnimationFrame();this.body=body;this.canvas=canvas;this.redrawRequested=false;this.renderTimer=undefined;this.requiresTimeout=true;this.renderingActive=false;this.renderRequests=0;this.allowRedraw=true;this.dragging=false;this.options={};this.defaultOptions={hideEdgesOnDrag:false,hideNodesOnDrag:false};util.extend(this.options,this.defaultOptions);this._determineBrowserMethod();this.bindEventListeners()}(0,_createClass3[\"default\"])(CanvasRenderer,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this=this;this.body.emitter.on(\"dragStart\",function(){_this.dragging=true});this.body.emitter.on(\"dragEnd\",function(){_this.dragging=false});this.body.emitter.on(\"_resizeNodes\",function(){_this._resizeNodes()});this.body.emitter.on(\"_redraw\",function(){if(_this.renderingActive===false){_this._redraw()}});this.body.emitter.on(\"_blockRedraw\",function(){_this.allowRedraw=false});this.body.emitter.on(\"_allowRedraw\",function(){_this.allowRedraw=true;_this.redrawRequested=false});this.body.emitter.on(\"_requestRedraw\",this._requestRedraw.bind(this));this.body.emitter.on(\"_startRendering\",function(){_this.renderRequests+=1;_this.renderingActive=true;_this._startRendering()});this.body.emitter.on(\"_stopRendering\",function(){_this.renderRequests-=1;_this.renderingActive=_this.renderRequests>0;_this.renderTimer=undefined});this.body.emitter.on(\"destroy\",function(){_this.renderRequests=0;_this.allowRedraw=false;_this.renderingActive=false;if(_this.requiresTimeout===true){clearTimeout(_this.renderTimer)}else{window.cancelAnimationFrame(_this.renderTimer)}_this.body.emitter.off()})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){var fields=[\"hideEdgesOnDrag\",\"hideNodesOnDrag\"];util.selectiveDeepExtend(fields,this.options,options)}}},{key:\"_requestNextFrame\",value:function _requestNextFrame(callback,delay){if(typeof window===\"undefined\")return;var timer=void 0;var myWindow=window;if(this.requiresTimeout===true){timer=myWindow.setTimeout(callback,delay)}else{if(myWindow.requestAnimationFrame){timer=myWindow.requestAnimationFrame(callback)}}return timer}},{key:\"_startRendering\",value:function _startRendering(){if(this.renderingActive===true){if(this.renderTimer===undefined){this.renderTimer=this._requestNextFrame(this._renderStep.bind(this),this.simulationInterval)}}}},{key:\"_renderStep\",value:function _renderStep(){if(this.renderingActive===true){this.renderTimer=undefined;if(this.requiresTimeout===true){this._startRendering()}this._redraw();if(this.requiresTimeout===false){this._startRendering()}}}},{key:\"redraw\",value:function redraw(){this.body.emitter.emit(\"setSize\");this._redraw()}},{key:\"_requestRedraw\",value:function _requestRedraw(){var _this2=this;if(this.redrawRequested!==true&&this.renderingActive===false&&this.allowRedraw===true){this.redrawRequested=true;this._requestNextFrame(function(){_this2._redraw(false)},0)}}},{key:\"_redraw\",value:function _redraw(){var hidden=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this.allowRedraw===true){this.body.emitter.emit(\"initRedraw\");this.redrawRequested=false;if(this.canvas.frame.canvas.width===0||this.canvas.frame.canvas.height===0){this.canvas.setSize()}this.canvas.setTransform();var ctx=this.canvas.getContext();var w=this.canvas.frame.canvas.clientWidth;var h=this.canvas.frame.canvas.clientHeight;ctx.clearRect(0,0,w,h);if(this.canvas.frame.clientWidth===0){return}ctx.save();ctx.translate(this.body.view.translation.x,this.body.view.translation.y);ctx.scale(this.body.view.scale,this.body.view.scale);ctx.beginPath();this.body.emitter.emit(\"beforeDrawing\",ctx);ctx.closePath();if(hidden===false){if(this.dragging===false||this.dragging===true&&this.options.hideEdgesOnDrag===false){this._drawEdges(ctx)}}if(this.dragging===false||this.dragging===true&&this.options.hideNodesOnDrag===false){this._drawNodes(ctx,hidden)}ctx.beginPath();this.body.emitter.emit(\"afterDrawing\",ctx);ctx.closePath();ctx.restore();if(hidden===true){ctx.clearRect(0,0,w,h)}}}},{key:\"_resizeNodes\",value:function _resizeNodes(){this.canvas.setTransform();var ctx=this.canvas.getContext();ctx.save();ctx.translate(this.body.view.translation.x,this.body.view.translation.y);ctx.scale(this.body.view.scale,this.body.view.scale);var nodes=this.body.nodes;var node=void 0;for(var nodeId in nodes){if(nodes.hasOwnProperty(nodeId)){node=nodes[nodeId];node.resize(ctx);node.updateBoundingBox(ctx,node.selected)}}ctx.restore()}},{key:\"_drawNodes\",value:function _drawNodes(ctx){var alwaysShow=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var nodes=this.body.nodes;var nodeIndices=this.body.nodeIndices;var node=void 0;var selected=[];var margin=20;var topLeft=this.canvas.DOMtoCanvas({x:-margin,y:-margin});var bottomRight=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+margin,y:this.canvas.frame.canvas.clientHeight+margin});var viewableArea={top:topLeft.y,left:topLeft.x,bottom:bottomRight.y,right:bottomRight.x};for(var i=0;i<nodeIndices.length;i++){node=nodes[nodeIndices[i]];if(node.isSelected()){selected.push(nodeIndices[i])}else{if(alwaysShow===true){node.draw(ctx)}else if(node.isBoundingBoxOverlappingWith(viewableArea)===true){node.draw(ctx)}else{node.updateBoundingBox(ctx,node.selected)}}}for(var _i=0;_i<selected.length;_i++){node=nodes[selected[_i]];node.draw(ctx)}}},{key:\"_drawEdges\",value:function _drawEdges(ctx){var edges=this.body.edges;var edgeIndices=this.body.edgeIndices;var edge=void 0;for(var i=0;i<edgeIndices.length;i++){edge=edges[edgeIndices[i]];if(edge.connected===true){edge.draw(ctx)}}}},{key:\"_determineBrowserMethod\",value:function _determineBrowserMethod(){if(typeof window!==\"undefined\"){var browserType=navigator.userAgent.toLowerCase();this.requiresTimeout=false;if(browserType.indexOf(\"msie 9.0\")!=-1){this.requiresTimeout=true}else if(browserType.indexOf(\"safari\")!=-1){if(browserType.indexOf(\"chrome\")<=-1){this.requiresTimeout=true}}}else{this.requiresTimeout=true}}}]);return CanvasRenderer}();exports[\"default\"]=CanvasRenderer},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var util=__webpack_require__(2);var Canvas=function(){function Canvas(body){(0,_classCallCheck3[\"default\"])(this,Canvas);this.body=body;this.pixelRatio=1;this.resizeTimer=undefined;this.resizeFunction=this._onResize.bind(this);this.cameraState={};this.initialized=false;this.canvasViewCenter={};this.options={};this.defaultOptions={autoResize:true,height:\"100%\",width:\"100%\"};util.extend(this.options,this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(Canvas,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this=this;this.body.emitter.once(\"resize\",function(obj){if(obj.width!==0){_this.body.view.translation.x=obj.width*.5}if(obj.height!==0){_this.body.view.translation.y=obj.height*.5}});this.body.emitter.on(\"setSize\",this.setSize.bind(this));this.body.emitter.on(\"destroy\",function(){_this.hammerFrame.destroy();_this.hammer.destroy();_this._cleanUp()})}},{key:\"setOptions\",value:function setOptions(options){var _this2=this;if(options!==undefined){var fields=[\"width\",\"height\",\"autoResize\"];util.selectiveDeepExtend(fields,this.options,options)}if(this.options.autoResize===true){this._cleanUp();this.resizeTimer=setInterval(function(){var changed=_this2.setSize();if(changed===true){_this2.body.emitter.emit(\"_requestRedraw\")}},1e3);this.resizeFunction=this._onResize.bind(this);util.addEventListener(window,\"resize\",this.resizeFunction)}}},{key:\"_cleanUp\",value:function _cleanUp(){if(this.resizeTimer!==undefined){clearInterval(this.resizeTimer)}util.removeEventListener(window,\"resize\",this.resizeFunction);this.resizeFunction=undefined}},{key:\"_onResize\",value:function _onResize(){this.setSize();this.body.emitter.emit(\"_redraw\")}},{key:\"_getCameraState\",value:function _getCameraState(){var pixelRatio=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.pixelRatio;if(this.initialized===true){this.cameraState.previousWidth=this.frame.canvas.width/pixelRatio;this.cameraState.previousHeight=this.frame.canvas.height/pixelRatio;this.cameraState.scale=this.body.view.scale;this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/pixelRatio,y:.5*this.frame.canvas.height/pixelRatio})}}},{key:\"_setCameraState\",value:function _setCameraState(){if(this.cameraState.scale!==undefined&&this.frame.canvas.clientWidth!==0&&this.frame.canvas.clientHeight!==0&&this.pixelRatio!==0&&this.cameraState.previousWidth>0){var widthRatio=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth;var heightRatio=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight;var newScale=this.cameraState.scale;if(widthRatio!=1&&heightRatio!=1){newScale=this.cameraState.scale*.5*(widthRatio+heightRatio)}else if(widthRatio!=1){newScale=this.cameraState.scale*widthRatio}else if(heightRatio!=1){newScale=this.cameraState.scale*heightRatio}this.body.view.scale=newScale;var currentViewCenter=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight});var distanceFromCenter={x:currentViewCenter.x-this.cameraState.position.x,y:currentViewCenter.y-this.cameraState.position.y};this.body.view.translation.x+=distanceFromCenter.x*this.body.view.scale;this.body.view.translation.y+=distanceFromCenter.y*this.body.view.scale}}},{key:\"_prepareValue\",value:function _prepareValue(value){if(typeof value===\"number\"){return value+\"px\"}else if(typeof value===\"string\"){if(value.indexOf(\"%\")!==-1||value.indexOf(\"px\")!==-1){return value}else if(value.indexOf(\"%\")===-1){return value+\"px\"}}throw new Error(\"Could not use the value supplied for width or height:\"+value)}},{key:\"_create\",value:function _create(){while(this.body.container.hasChildNodes()){this.body.container.removeChild(this.body.container.firstChild)}this.frame=document.createElement(\"div\");this.frame.className=\"vis-network\";this.frame.style.position=\"relative\";this.frame.style.overflow=\"hidden\";this.frame.tabIndex=900;this.frame.canvas=document.createElement(\"canvas\");this.frame.canvas.style.position=\"relative\";this.frame.appendChild(this.frame.canvas);if(!this.frame.canvas.getContext){var noCanvas=document.createElement(\"DIV\");noCanvas.style.color=\"red\";noCanvas.style.fontWeight=\"bold\";noCanvas.style.padding=\"10px\";noCanvas.innerHTML=\"Error: your browser does not support HTML canvas\";this.frame.canvas.appendChild(noCanvas)}else{this._setPixelRatio();this.setTransform()}this.body.container.appendChild(this.frame);this.body.view.scale=1;this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight};this._bindHammer()}},{key:\"_bindHammer\",value:function _bindHammer(){var _this3=this;if(this.hammer!==undefined){this.hammer.destroy()}this.drag={};this.pinch={};this.hammer=new Hammer(this.frame.canvas);this.hammer.get(\"pinch\").set({enable:true});this.hammer.get(\"pan\").set({threshold:5,direction:Hammer.DIRECTION_ALL});hammerUtil.onTouch(this.hammer,function(event){_this3.body.eventListeners.onTouch(event)});this.hammer.on(\"tap\",function(event){_this3.body.eventListeners.onTap(event)});this.hammer.on(\"doubletap\",function(event){_this3.body.eventListeners.onDoubleTap(event)});this.hammer.on(\"press\",function(event){_this3.body.eventListeners.onHold(event)});this.hammer.on(\"panstart\",function(event){_this3.body.eventListeners.onDragStart(event)});this.hammer.on(\"panmove\",function(event){_this3.body.eventListeners.onDrag(event)});this.hammer.on(\"panend\",function(event){_this3.body.eventListeners.onDragEnd(event)});this.hammer.on(\"pinch\",function(event){_this3.body.eventListeners.onPinch(event)});this.frame.canvas.addEventListener(\"mousewheel\",function(event){_this3.body.eventListeners.onMouseWheel(event)});this.frame.canvas.addEventListener(\"DOMMouseScroll\",function(event){_this3.body.eventListeners.onMouseWheel(event)});this.frame.canvas.addEventListener(\"mousemove\",function(event){_this3.body.eventListeners.onMouseMove(event)});this.frame.canvas.addEventListener(\"contextmenu\",function(event){_this3.body.eventListeners.onContext(event)});this.hammerFrame=new Hammer(this.frame);hammerUtil.onRelease(this.hammerFrame,function(event){_this3.body.eventListeners.onRelease(event)})}},{key:\"setSize\",value:function setSize(){var width=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.options.width;var height=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.options.height;width=this._prepareValue(width);height=this._prepareValue(height);var emitEvent=false;var oldWidth=this.frame.canvas.width;var oldHeight=this.frame.canvas.height;var previousRatio=this.pixelRatio;this._setPixelRatio();if(width!=this.options.width||height!=this.options.height||this.frame.style.width!=width||this.frame.style.height!=height){this._getCameraState(previousRatio);this.frame.style.width=width;this.frame.style.height=height;this.frame.canvas.style.width=\"100%\";this.frame.canvas.style.height=\"100%\";this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio);this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);this.options.width=width;this.options.height=height;this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight};emitEvent=true}else{var newWidth=Math.round(this.frame.canvas.clientWidth*this.pixelRatio);var newHeight=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);if(this.frame.canvas.width!==newWidth||this.frame.canvas.height!==newHeight){this._getCameraState(previousRatio)}if(this.frame.canvas.width!==newWidth){this.frame.canvas.width=newWidth;emitEvent=true}if(this.frame.canvas.height!==newHeight){this.frame.canvas.height=newHeight;emitEvent=true}}if(emitEvent===true){this.body.emitter.emit(\"resize\",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(oldWidth/this.pixelRatio),oldHeight:Math.round(oldHeight/this.pixelRatio)});this._setCameraState()}this.initialized=true;return emitEvent}},{key:\"getContext\",value:function getContext(){return this.frame.canvas.getContext(\"2d\")}},{key:\"_determinePixelRatio\",value:function _determinePixelRatio(){var ctx=this.getContext();if(ctx===undefined){throw new Error(\"Could not get canvax context\")}var numerator=1;if(typeof window!==\"undefined\"){numerator=window.devicePixelRatio||1}var denominator=ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio||1;return numerator/denominator}},{key:\"_setPixelRatio\",value:function _setPixelRatio(){this.pixelRatio=this._determinePixelRatio()}},{key:\"setTransform\",value:function setTransform(){var ctx=this.getContext();if(ctx===undefined){throw new Error(\"Could not get canvax context\")}ctx.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}},{key:\"_XconvertDOMtoCanvas\",value:function _XconvertDOMtoCanvas(x){return(x-this.body.view.translation.x)/this.body.view.scale}},{\nkey:\"_XconvertCanvasToDOM\",value:function _XconvertCanvasToDOM(x){return x*this.body.view.scale+this.body.view.translation.x}},{key:\"_YconvertDOMtoCanvas\",value:function _YconvertDOMtoCanvas(y){return(y-this.body.view.translation.y)/this.body.view.scale}},{key:\"_YconvertCanvasToDOM\",value:function _YconvertCanvasToDOM(y){return y*this.body.view.scale+this.body.view.translation.y}},{key:\"canvasToDOM\",value:function canvasToDOM(pos){return{x:this._XconvertCanvasToDOM(pos.x),y:this._YconvertCanvasToDOM(pos.y)}}},{key:\"DOMtoCanvas\",value:function DOMtoCanvas(pos){return{x:this._XconvertDOMtoCanvas(pos.x),y:this._YconvertDOMtoCanvas(pos.y)}}}]);return Canvas}();exports[\"default\"]=Canvas},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NetworkUtil=__webpack_require__(76)[\"default\"];var View=function(){function View(body,canvas){var _this=this;(0,_classCallCheck3[\"default\"])(this,View);this.body=body;this.canvas=canvas;this.animationSpeed=1/this.renderRefreshRate;this.animationEasingFunction=\"easeInOutQuint\";this.easingTime=0;this.sourceScale=0;this.targetScale=0;this.sourceTranslation=0;this.targetTranslation=0;this.lockedOnNodeId=undefined;this.lockedOnNodeOffset=undefined;this.touchTime=0;this.viewFunction=undefined;this.body.emitter.on(\"fit\",this.fit.bind(this));this.body.emitter.on(\"animationFinished\",function(){_this.body.emitter.emit(\"_stopRendering\")});this.body.emitter.on(\"unlockNode\",this.releaseNode.bind(this))}(0,_createClass3[\"default\"])(View,[{key:\"setOptions\",value:function setOptions(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};this.options=options}},{key:\"fit\",value:function fit(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{nodes:[]};var initialZoom=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var range=void 0;var zoomLevel=void 0;if(options.nodes===undefined||options.nodes.length===0){options.nodes=this.body.nodeIndices}if(initialZoom===true){var positionDefined=0;for(var nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(nodeId)){var node=this.body.nodes[nodeId];if(node.predefinedPosition===true){positionDefined+=1}}}if(positionDefined>.5*this.body.nodeIndices.length){this.fit(options,false);return}range=NetworkUtil.getRange(this.body.nodes,options.nodes);var numberOfNodes=this.body.nodeIndices.length;zoomLevel=12.662/(numberOfNodes+7.4147)+.0964822;var factor=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);zoomLevel*=factor}else{this.body.emitter.emit(\"_resizeNodes\");range=NetworkUtil.getRange(this.body.nodes,options.nodes);var xDistance=Math.abs(range.maxX-range.minX)*1.1;var yDistance=Math.abs(range.maxY-range.minY)*1.1;var xZoomLevel=this.canvas.frame.canvas.clientWidth/xDistance;var yZoomLevel=this.canvas.frame.canvas.clientHeight/yDistance;zoomLevel=xZoomLevel<=yZoomLevel?xZoomLevel:yZoomLevel}if(zoomLevel>1){zoomLevel=1}else if(zoomLevel===0){zoomLevel=1}var center=NetworkUtil.findCenter(range);var animationOptions={position:center,scale:zoomLevel,animation:options.animation};this.moveTo(animationOptions)}},{key:\"focus\",value:function focus(nodeId){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.body.nodes[nodeId]!==undefined){var nodePosition={x:this.body.nodes[nodeId].x,y:this.body.nodes[nodeId].y};options.position=nodePosition;options.lockedOnNode=nodeId;this.moveTo(options)}else{console.log(\"Node: \"+nodeId+\" cannot be found.\")}}},{key:\"moveTo\",value:function moveTo(options){if(options===undefined){options={};return}if(options.offset===undefined){options.offset={x:0,y:0}}if(options.offset.x===undefined){options.offset.x=0}if(options.offset.y===undefined){options.offset.y=0}if(options.scale===undefined){options.scale=this.body.view.scale}if(options.position===undefined){options.position=this.getViewPosition()}if(options.animation===undefined){options.animation={duration:0}}if(options.animation===false){options.animation={duration:0}}if(options.animation===true){options.animation={}}if(options.animation.duration===undefined){options.animation.duration=1e3}if(options.animation.easingFunction===undefined){options.animation.easingFunction=\"easeInOutQuad\"}this.animateView(options)}},{key:\"animateView\",value:function animateView(options){if(options===undefined){return}this.animationEasingFunction=options.animation.easingFunction;this.releaseNode();if(options.locked===true){this.lockedOnNodeId=options.lockedOnNode;this.lockedOnNodeOffset=options.offset}if(this.easingTime!=0){this._transitionRedraw(true)}this.sourceScale=this.body.view.scale;this.sourceTranslation=this.body.view.translation;this.targetScale=options.scale;this.body.view.scale=this.targetScale;var viewCenter=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight});var distanceFromCenter={x:viewCenter.x-options.position.x,y:viewCenter.y-options.position.y};this.targetTranslation={x:this.sourceTranslation.x+distanceFromCenter.x*this.targetScale+options.offset.x,y:this.sourceTranslation.y+distanceFromCenter.y*this.targetScale+options.offset.y};if(options.animation.duration===0){if(this.lockedOnNodeId!=undefined){this.viewFunction=this._lockedRedraw.bind(this);this.body.emitter.on(\"initRedraw\",this.viewFunction)}else{this.body.view.scale=this.targetScale;this.body.view.translation=this.targetTranslation;this.body.emitter.emit(\"_requestRedraw\")}}else{this.animationSpeed=1/(60*options.animation.duration*.001)||1/60;this.animationEasingFunction=options.animation.easingFunction;this.viewFunction=this._transitionRedraw.bind(this);this.body.emitter.on(\"initRedraw\",this.viewFunction);this.body.emitter.emit(\"_startRendering\")}}},{key:\"_lockedRedraw\",value:function _lockedRedraw(){var nodePosition={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y};var viewCenter=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight});var distanceFromCenter={x:viewCenter.x-nodePosition.x,y:viewCenter.y-nodePosition.y};var sourceTranslation=this.body.view.translation;var targetTranslation={x:sourceTranslation.x+distanceFromCenter.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:sourceTranslation.y+distanceFromCenter.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=targetTranslation}},{key:\"releaseNode\",value:function releaseNode(){if(this.lockedOnNodeId!==undefined&&this.viewFunction!==undefined){this.body.emitter.off(\"initRedraw\",this.viewFunction);this.lockedOnNodeId=undefined;this.lockedOnNodeOffset=undefined}}},{key:\"_transitionRedraw\",value:function _transitionRedraw(){var finished=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;this.easingTime+=this.animationSpeed;this.easingTime=finished===true?1:this.easingTime;var progress=util.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*progress;this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*progress,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*progress};if(this.easingTime>=1){this.body.emitter.off(\"initRedraw\",this.viewFunction);this.easingTime=0;if(this.lockedOnNodeId!=undefined){this.viewFunction=this._lockedRedraw.bind(this);this.body.emitter.on(\"initRedraw\",this.viewFunction)}this.body.emitter.emit(\"animationFinished\")}}},{key:\"getScale\",value:function getScale(){return this.body.view.scale}},{key:\"getViewPosition\",value:function getViewPosition(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]);return View}();exports[\"default\"]=View},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NavigationHandler=__webpack_require__(233)[\"default\"];var Popup=__webpack_require__(104)[\"default\"];var InteractionHandler=function(){function InteractionHandler(body,canvas,selectionHandler){(0,_classCallCheck3[\"default\"])(this,InteractionHandler);this.body=body;this.canvas=canvas;this.selectionHandler=selectionHandler;this.navigationHandler=new NavigationHandler(body,canvas);this.body.eventListeners.onTap=this.onTap.bind(this);this.body.eventListeners.onTouch=this.onTouch.bind(this);this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this);this.body.eventListeners.onHold=this.onHold.bind(this);this.body.eventListeners.onDragStart=this.onDragStart.bind(this);this.body.eventListeners.onDrag=this.onDrag.bind(this);this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this);this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this);this.body.eventListeners.onPinch=this.onPinch.bind(this);this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this);this.body.eventListeners.onRelease=this.onRelease.bind(this);this.body.eventListeners.onContext=this.onContext.bind(this);this.touchTime=0;this.drag={};this.pinch={};this.popup=undefined;this.popupObj=undefined;this.popupTimer=undefined;this.body.functions.getPointer=this.getPointer.bind(this);this.options={};this.defaultOptions={dragNodes:true,dragView:true,hover:false,keyboard:{enabled:false,speed:{x:10,y:10,zoom:.02},bindToWindow:true},navigationButtons:false,tooltipDelay:300,zoomView:true};util.extend(this.options,this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(InteractionHandler,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this=this;this.body.emitter.on(\"destroy\",function(){clearTimeout(_this.popupTimer);delete _this.body.functions.getPointer})}},{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){var fields=[\"hideEdgesOnDrag\",\"hideNodesOnDrag\",\"keyboard\",\"multiselect\",\"selectable\",\"selectConnectedEdges\"];util.selectiveNotDeepExtend(fields,this.options,options);util.mergeOptions(this.options,options,\"keyboard\");if(options.tooltip){util.extend(this.options.tooltip,options.tooltip);if(options.tooltip.color){this.options.tooltip.color=util.parseColor(options.tooltip.color)}}}this.navigationHandler.setOptions(this.options)}},{key:\"getPointer\",value:function getPointer(touch){return{x:touch.x-util.getAbsoluteLeft(this.canvas.frame.canvas),y:touch.y-util.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:\"onTouch\",value:function onTouch(event){if((new Date).valueOf()-this.touchTime>50){this.drag.pointer=this.getPointer(event.center);this.drag.pinched=false;this.pinch.scale=this.body.view.scale;this.touchTime=(new Date).valueOf()}}},{key:\"onTap\",value:function onTap(event){var pointer=this.getPointer(event.center);var multiselect=this.selectionHandler.options.multiselect&&(event.changedPointers[0].ctrlKey||event.changedPointers[0].metaKey);this.checkSelectionChanges(pointer,event,multiselect);this.selectionHandler._generateClickEvent(\"click\",event,pointer)}},{key:\"onDoubleTap\",value:function onDoubleTap(event){var pointer=this.getPointer(event.center);this.selectionHandler._generateClickEvent(\"doubleClick\",event,pointer)}},{key:\"onHold\",value:function onHold(event){var pointer=this.getPointer(event.center);var multiselect=this.selectionHandler.options.multiselect;this.checkSelectionChanges(pointer,event,multiselect);this.selectionHandler._generateClickEvent(\"click\",event,pointer);this.selectionHandler._generateClickEvent(\"hold\",event,pointer)}},{key:\"onRelease\",value:function onRelease(event){if((new Date).valueOf()-this.touchTime>10){var pointer=this.getPointer(event.center);this.selectionHandler._generateClickEvent(\"release\",event,pointer);this.touchTime=(new Date).valueOf()}}},{key:\"onContext\",value:function onContext(event){var pointer=this.getPointer({x:event.clientX,y:event.clientY});this.selectionHandler._generateClickEvent(\"oncontext\",event,pointer)}},{key:\"checkSelectionChanges\",value:function checkSelectionChanges(pointer,event){var add=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var previousSelection=this.selectionHandler.getSelection();var selected=false;if(add===true){selected=this.selectionHandler.selectAdditionalOnPoint(pointer)}else{selected=this.selectionHandler.selectOnPoint(pointer)}var currentSelection=this.selectionHandler.getSelection();var deselectedItems=this._determineDifference(previousSelection,currentSelection);var selectedItems=this._determineDifference(currentSelection,previousSelection);if(deselectedItems.edges.length>0){this.selectionHandler._generateClickEvent(\"deselectEdge\",event,pointer,previousSelection);selected=true}if(deselectedItems.nodes.length>0){this.selectionHandler._generateClickEvent(\"deselectNode\",event,pointer,previousSelection);selected=true}if(selectedItems.nodes.length>0){this.selectionHandler._generateClickEvent(\"selectNode\",event,pointer);selected=true}if(selectedItems.edges.length>0){this.selectionHandler._generateClickEvent(\"selectEdge\",event,pointer);selected=true}if(selected===true){this.selectionHandler._generateClickEvent(\"select\",event,pointer)}}},{key:\"_determineDifference\",value:function _determineDifference(firstSet,secondSet){var arrayDiff=function arrayDiff(firstArr,secondArr){var result=[];for(var i=0;i<firstArr.length;i++){var value=firstArr[i];if(secondArr.indexOf(value)===-1){result.push(value)}}return result};return{nodes:arrayDiff(firstSet.nodes,secondSet.nodes),edges:arrayDiff(firstSet.edges,secondSet.edges)}}},{key:\"onDragStart\",value:function onDragStart(event){if(this.drag.pointer===undefined){this.onTouch(event)}var node=this.selectionHandler.getNodeAt(this.drag.pointer);this.drag.dragging=true;this.drag.selection=[];this.drag.translation=util.extend({},this.body.view.translation);this.drag.nodeId=undefined;if(node!==undefined&&this.options.dragNodes===true){this.drag.nodeId=node.id;if(node.isSelected()===false){this.selectionHandler.unselectAll();this.selectionHandler.selectObject(node)}this.selectionHandler._generateClickEvent(\"dragStart\",event,this.drag.pointer);var selection=this.selectionHandler.selectionObj.nodes;for(var nodeId in selection){if(selection.hasOwnProperty(nodeId)){var object=selection[nodeId];var s={id:object.id,node:object,x:object.x,y:object.y,xFixed:object.options.fixed.x,yFixed:object.options.fixed.y};object.options.fixed.x=true;object.options.fixed.y=true;this.drag.selection.push(s)}}}else{this.selectionHandler._generateClickEvent(\"dragStart\",event,this.drag.pointer,undefined,true)}}},{key:\"onDrag\",value:function onDrag(event){var _this2=this;if(this.drag.pinched===true){return}this.body.emitter.emit(\"unlockNode\");var pointer=this.getPointer(event.center);var selection=this.drag.selection;if(selection&&selection.length&&this.options.dragNodes===true){this.selectionHandler._generateClickEvent(\"dragging\",event,pointer);var deltaX=pointer.x-this.drag.pointer.x;var deltaY=pointer.y-this.drag.pointer.y;selection.forEach(function(selection){var node=selection.node;if(selection.xFixed===false){node.x=_this2.canvas._XconvertDOMtoCanvas(_this2.canvas._XconvertCanvasToDOM(selection.x)+deltaX)}if(selection.yFixed===false){node.y=_this2.canvas._YconvertDOMtoCanvas(_this2.canvas._YconvertCanvasToDOM(selection.y)+deltaY)}});this.body.emitter.emit(\"startSimulation\")}else{if(this.options.dragView===true){this.selectionHandler._generateClickEvent(\"dragging\",event,pointer,undefined,true);if(this.drag.pointer===undefined){this.onDragStart(event);return}var diffX=pointer.x-this.drag.pointer.x;var diffY=pointer.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+diffX,y:this.drag.translation.y+diffY};this.body.emitter.emit(\"_requestRedraw\")}}}},{key:\"onDragEnd\",value:function onDragEnd(event){this.drag.dragging=false;var selection=this.drag.selection;if(selection&&selection.length){selection.forEach(function(s){s.node.options.fixed.x=s.xFixed;s.node.options.fixed.y=s.yFixed});this.selectionHandler._generateClickEvent(\"dragEnd\",event,this.getPointer(event.center));this.body.emitter.emit(\"startSimulation\")}else{this.selectionHandler._generateClickEvent(\"dragEnd\",event,this.getPointer(event.center),undefined,true);this.body.emitter.emit(\"_requestRedraw\")}}},{key:\"onPinch\",value:function onPinch(event){var pointer=this.getPointer(event.center);this.drag.pinched=true;if(this.pinch[\"scale\"]===undefined){this.pinch.scale=1}var scale=this.pinch.scale*event.scale;this.zoom(scale,pointer)}},{key:\"zoom\",value:function zoom(scale,pointer){if(this.options.zoomView===true){var scaleOld=this.body.view.scale;if(scale<1e-5){scale=1e-5}if(scale>10){scale=10}var preScaleDragPointer=undefined;if(this.drag!==undefined){if(this.drag.dragging===true){preScaleDragPointer=this.canvas.DOMtoCanvas(this.drag.pointer)}}var translation=this.body.view.translation;var scaleFrac=scale/scaleOld;var tx=(1-scaleFrac)*pointer.x+translation.x*scaleFrac;var ty=(1-scaleFrac)*pointer.y+translation.y*scaleFrac;this.body.view.scale=scale;this.body.view.translation={x:tx,y:ty};if(preScaleDragPointer!=undefined){var postScaleDragPointer=this.canvas.canvasToDOM(preScaleDragPointer);this.drag.pointer.x=postScaleDragPointer.x;this.drag.pointer.y=postScaleDragPointer.y}this.body.emitter.emit(\"_requestRedraw\");if(scaleOld<scale){this.body.emitter.emit(\"zoom\",{direction:\"+\",scale:this.body.view.scale,pointer:pointer})}else{this.body.emitter.emit(\"zoom\",{direction:\"-\",scale:this.body.view.scale,pointer:pointer})}}}},{key:\"onMouseWheel\",value:function onMouseWheel(event){if(this.options.zoomView===true){var delta=0;if(event.wheelDelta){delta=event.wheelDelta/120}else if(event.detail){delta=-event.detail/3}if(delta!==0){var scale=this.body.view.scale;var zoom=delta/10;if(delta<0){zoom=zoom/(1-zoom)}scale*=1+zoom;var pointer=this.getPointer({x:event.clientX,y:event.clientY});this.zoom(scale,pointer)}event.preventDefault()}}},{key:\"onMouseMove\",value:function onMouseMove(event){var _this3=this;var pointer=this.getPointer({x:event.clientX,y:event.clientY});var popupVisible=false;if(this.popup!==undefined){if(this.popup.hidden===false){this._checkHidePopup(pointer)}if(this.popup.hidden===false){popupVisible=true;this.popup.setPosition(pointer.x+3,pointer.y-5);this.popup.show()}}if(this.options.keyboard.bindToWindow===false&&this.options.keyboard.enabled===true){this.canvas.frame.focus()}if(popupVisible===false){if(this.popupTimer!==undefined){clearInterval(this.popupTimer);this.popupTimer=undefined}if(!this.drag.dragging){this.popupTimer=setTimeout(function(){return _this3._checkShowPopup(pointer)},this.options.tooltipDelay)}}if(this.options.hover===true){this.selectionHandler.hoverObject(event,pointer)}}},{key:\"_checkShowPopup\",value:function _checkShowPopup(pointer){var x=this.canvas._XconvertDOMtoCanvas(pointer.x);var y=this.canvas._YconvertDOMtoCanvas(pointer.y);var pointerObj={left:x,top:y,right:x,bottom:y};var previousPopupObjId=this.popupObj===undefined?undefined:this.popupObj.id;var nodeUnderCursor=false;var popupType=\"node\";if(this.popupObj===undefined){var nodeIndices=this.body.nodeIndices;var nodes=this.body.nodes;var node=void 0;var overlappingNodes=[];for(var i=0;i<nodeIndices.length;i++){node=nodes[nodeIndices[i]];if(node.isOverlappingWith(pointerObj)===true){if(node.getTitle()!==undefined){overlappingNodes.push(nodeIndices[i])}}}if(overlappingNodes.length>0){this.popupObj=nodes[overlappingNodes[overlappingNodes.length-1]];nodeUnderCursor=true}}if(this.popupObj===undefined&&nodeUnderCursor===false){var edgeIndices=this.body.edgeIndices;var edges=this.body.edges;var edge=void 0;var overlappingEdges=[];for(var _i=0;_i<edgeIndices.length;_i++){edge=edges[edgeIndices[_i]];if(edge.isOverlappingWith(pointerObj)===true){if(edge.connected===true&&edge.getTitle()!==undefined){overlappingEdges.push(edgeIndices[_i])}}}if(overlappingEdges.length>0){this.popupObj=edges[overlappingEdges[overlappingEdges.length-1]];popupType=\"edge\"}}if(this.popupObj!==undefined){if(this.popupObj.id!==previousPopupObjId){if(this.popup===undefined){this.popup=new Popup(this.canvas.frame)}this.popup.popupTargetType=popupType;this.popup.popupTargetId=this.popupObj.id;this.popup.setPosition(pointer.x+3,pointer.y-5);this.popup.setText(this.popupObj.getTitle());this.popup.show();this.body.emitter.emit(\"showPopup\",this.popupObj.id)}}else{if(this.popup!==undefined){this.popup.hide();this.body.emitter.emit(\"hidePopup\")}}}},{key:\"_checkHidePopup\",value:function _checkHidePopup(pointer){var pointerObj=this.selectionHandler._pointerToPositionObject(pointer);var stillOnObj=false;if(this.popup.popupTargetType===\"node\"){if(this.body.nodes[this.popup.popupTargetId]!==undefined){stillOnObj=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(pointerObj);if(stillOnObj===true){var overNode=this.selectionHandler.getNodeAt(pointer);stillOnObj=overNode===undefined?false:overNode.id===this.popup.popupTargetId}}}else{if(this.selectionHandler.getNodeAt(pointer)===undefined){if(this.body.edges[this.popup.popupTargetId]!==undefined){stillOnObj=this.body.edges[this.popup.popupTargetId].isOverlappingWith(pointerObj)}}}if(stillOnObj===false){this.popupObj=undefined;this.popup.hide();this.body.emitter.emit(\"hidePopup\")}}}]);return InteractionHandler}();exports[\"default\"]=InteractionHandler},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var keycharm=__webpack_require__(35);var NavigationHandler=function(){function NavigationHandler(body,canvas){var _this=this;(0,_classCallCheck3[\"default\"])(this,NavigationHandler);this.body=body;this.canvas=canvas;this.iconsCreated=false;this.navigationHammers=[];this.boundFunctions={};this.touchTime=0;this.activated=false;this.body.emitter.on(\"activate\",function(){_this.activated=true;_this.configureKeyboardBindings()});this.body.emitter.on(\"deactivate\",function(){_this.activated=false;_this.configureKeyboardBindings()});this.body.emitter.on(\"destroy\",function(){if(_this.keycharm!==undefined){_this.keycharm.destroy()}});this.options={}}(0,_createClass3[\"default\"])(NavigationHandler,[{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){this.options=options;this.create()}}},{key:\"create\",value:function create(){if(this.options.navigationButtons===true){if(this.iconsCreated===false){this.loadNavigationElements()}}else if(this.iconsCreated===true){this.cleanNavigation()}this.configureKeyboardBindings()}},{key:\"cleanNavigation\",value:function cleanNavigation(){if(this.navigationHammers.length!=0){for(var i=0;i<this.navigationHammers.length;i++){this.navigationHammers[i].destroy()}this.navigationHammers=[]}if(this.navigationDOM&&this.navigationDOM[\"wrapper\"]&&this.navigationDOM[\"wrapper\"].parentNode){this.navigationDOM[\"wrapper\"].parentNode.removeChild(this.navigationDOM[\"wrapper\"])}this.iconsCreated=false}},{key:\"loadNavigationElements\",value:function loadNavigationElements(){var _this2=this;this.cleanNavigation();this.navigationDOM={};var navigationDivs=[\"up\",\"down\",\"left\",\"right\",\"zoomIn\",\"zoomOut\",\"zoomExtends\"];var navigationDivActions=[\"_moveUp\",\"_moveDown\",\"_moveLeft\",\"_moveRight\",\"_zoomIn\",\"_zoomOut\",\"_fit\"];this.navigationDOM[\"wrapper\"]=document.createElement(\"div\");this.navigationDOM[\"wrapper\"].className=\"vis-navigation\";this.canvas.frame.appendChild(this.navigationDOM[\"wrapper\"]);for(var i=0;i<navigationDivs.length;i++){this.navigationDOM[navigationDivs[i]]=document.createElement(\"div\");this.navigationDOM[navigationDivs[i]].className=\"vis-button vis-\"+navigationDivs[i];this.navigationDOM[\"wrapper\"].appendChild(this.navigationDOM[navigationDivs[i]]);var hammer=new Hammer(this.navigationDOM[navigationDivs[i]]);if(navigationDivActions[i]===\"_fit\"){hammerUtil.onTouch(hammer,this._fit.bind(this))}else{hammerUtil.onTouch(hammer,this.bindToRedraw.bind(this,navigationDivActions[i]))}this.navigationHammers.push(hammer)}var hammerFrame=new Hammer(this.canvas.frame);hammerUtil.onRelease(hammerFrame,function(){_this2._stopMovement()});this.navigationHammers.push(hammerFrame);this.iconsCreated=true}},{key:\"bindToRedraw\",value:function bindToRedraw(action){if(this.boundFunctions[action]===undefined){this.boundFunctions[action]=this[action].bind(this);this.body.emitter.on(\"initRedraw\",this.boundFunctions[action]);this.body.emitter.emit(\"_startRendering\")}}},{key:\"unbindFromRedraw\",value:function unbindFromRedraw(action){if(this.boundFunctions[action]!==undefined){this.body.emitter.off(\"initRedraw\",this.boundFunctions[action]);this.body.emitter.emit(\"_stopRendering\");delete this.boundFunctions[action]}}},{key:\"_fit\",value:function _fit(){if((new Date).valueOf()-this.touchTime>700){this.body.emitter.emit(\"fit\",{duration:700});this.touchTime=(new Date).valueOf()}}},{key:\"_stopMovement\",value:function _stopMovement(){for(var boundAction in this.boundFunctions){if(this.boundFunctions.hasOwnProperty(boundAction)){this.body.emitter.off(\"initRedraw\",this.boundFunctions[boundAction]);this.body.emitter.emit(\"_stopRendering\")}}this.boundFunctions={}}},{key:\"_moveUp\",value:function _moveUp(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:\"_moveDown\",value:function _moveDown(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:\"_moveLeft\",value:function _moveLeft(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:\"_moveRight\",value:function _moveRight(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:\"_zoomIn\",value:function _zoomIn(){var scaleOld=this.body.view.scale;var scale=this.body.view.scale*(1+this.options.keyboard.speed.zoom);var translation=this.body.view.translation;var scaleFrac=scale/scaleOld;var tx=(1-scaleFrac)*this.canvas.canvasViewCenter.x+translation.x*scaleFrac;var ty=(1-scaleFrac)*this.canvas.canvasViewCenter.y+translation.y*scaleFrac;this.body.view.scale=scale;this.body.view.translation={x:tx,y:ty};this.body.emitter.emit(\"zoom\",{direction:\"+\",scale:this.body.view.scale,pointer:null})}},{key:\"_zoomOut\",value:function _zoomOut(){var scaleOld=this.body.view.scale;var scale=this.body.view.scale/(1+this.options.keyboard.speed.zoom);var translation=this.body.view.translation;var scaleFrac=scale/scaleOld;var tx=(1-scaleFrac)*this.canvas.canvasViewCenter.x+translation.x*scaleFrac;var ty=(1-scaleFrac)*this.canvas.canvasViewCenter.y+translation.y*scaleFrac;this.body.view.scale=scale;this.body.view.translation={x:tx,y:ty};this.body.emitter.emit(\"zoom\",{direction:\"-\",scale:this.body.view.scale,pointer:null})}},{key:\"configureKeyboardBindings\",value:function configureKeyboardBindings(){var _this3=this;if(this.keycharm!==undefined){this.keycharm.destroy()}if(this.options.keyboard.enabled===true){if(this.options.keyboard.bindToWindow===true){this.keycharm=keycharm({container:window,preventDefault:true})}else{this.keycharm=keycharm({container:this.canvas.frame,preventDefault:true})}this.keycharm.reset();if(this.activated===true){this.keycharm.bind(\"up\",function(){_this3.bindToRedraw(\"_moveUp\")},\"keydown\");this.keycharm.bind(\"down\",function(){_this3.bindToRedraw(\"_moveDown\")},\"keydown\");this.keycharm.bind(\"left\",function(){_this3.bindToRedraw(\"_moveLeft\")},\"keydown\");this.keycharm.bind(\"right\",function(){_this3.bindToRedraw(\"_moveRight\")},\"keydown\");this.keycharm.bind(\"=\",function(){_this3.bindToRedraw(\"_zoomIn\")},\"keydown\");this.keycharm.bind(\"num+\",function(){_this3.bindToRedraw(\"_zoomIn\")},\"keydown\");this.keycharm.bind(\"num-\",function(){_this3.bindToRedraw(\"_zoomOut\")},\"keydown\");this.keycharm.bind(\"-\",function(){_this3.bindToRedraw(\"_zoomOut\")},\"keydown\");this.keycharm.bind(\"[\",function(){_this3.bindToRedraw(\"_zoomOut\")},\"keydown\");this.keycharm.bind(\"]\",function(){_this3.bindToRedraw(\"_zoomIn\")},\"keydown\");this.keycharm.bind(\"pageup\",function(){_this3.bindToRedraw(\"_zoomIn\")},\"keydown\");this.keycharm.bind(\"pagedown\",function(){_this3.bindToRedraw(\"_zoomOut\")},\"keydown\");this.keycharm.bind(\"up\",function(){_this3.unbindFromRedraw(\"_moveUp\")},\"keyup\");this.keycharm.bind(\"down\",function(){_this3.unbindFromRedraw(\"_moveDown\")},\"keyup\");this.keycharm.bind(\"left\",function(){_this3.unbindFromRedraw(\"_moveLeft\")},\"keyup\");this.keycharm.bind(\"right\",function(){_this3.unbindFromRedraw(\"_moveRight\")},\"keyup\");this.keycharm.bind(\"=\",function(){_this3.unbindFromRedraw(\"_zoomIn\")},\"keyup\");this.keycharm.bind(\"num+\",function(){_this3.unbindFromRedraw(\"_zoomIn\")},\"keyup\");this.keycharm.bind(\"num-\",function(){_this3.unbindFromRedraw(\"_zoomOut\")},\"keyup\");this.keycharm.bind(\"-\",function(){_this3.unbindFromRedraw(\"_zoomOut\")},\"keyup\");this.keycharm.bind(\"[\",function(){_this3.unbindFromRedraw(\"_zoomOut\")},\"keyup\");this.keycharm.bind(\"]\",function(){_this3.unbindFromRedraw(\"_zoomIn\")},\"keyup\");this.keycharm.bind(\"pageup\",function(){_this3.unbindFromRedraw(\"_zoomIn\")},\"keyup\");this.keycharm.bind(\"pagedown\",function(){_this3.unbindFromRedraw(\"_zoomOut\")},\"keyup\")}}}}]);return NavigationHandler}();exports[\"default\"]=NavigationHandler},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var Node=__webpack_require__(47)[\"default\"];var Edge=__webpack_require__(74)[\"default\"];var util=__webpack_require__(2);var SelectionHandler=function(){function SelectionHandler(body,canvas){var _this=this;(0,_classCallCheck3[\"default\"])(this,SelectionHandler);this.body=body;this.canvas=canvas;this.selectionObj={nodes:[],edges:[]};this.hoverObj={nodes:{},edges:{}};this.options={};this.defaultOptions={multiselect:false,selectable:true,selectConnectedEdges:true,hoverConnectedEdges:true};util.extend(this.options,this.defaultOptions);this.body.emitter.on(\"_dataChanged\",function(){_this.updateSelection()})}(0,_createClass3[\"default\"])(SelectionHandler,[{key:\"setOptions\",value:function setOptions(options){if(options!==undefined){var fields=[\"multiselect\",\"hoverConnectedEdges\",\"selectable\",\"selectConnectedEdges\"];util.selectiveDeepExtend(fields,this.options,options)}}},{key:\"selectOnPoint\",value:function selectOnPoint(pointer){var selected=false;if(this.options.selectable===true){var obj=this.getNodeAt(pointer)||this.getEdgeAt(pointer);this.unselectAll();if(obj!==undefined){selected=this.selectObject(obj)}this.body.emitter.emit(\"_requestRedraw\")}return selected}},{key:\"selectAdditionalOnPoint\",value:function selectAdditionalOnPoint(pointer){var selectionChanged=false;if(this.options.selectable===true){var obj=this.getNodeAt(pointer)||this.getEdgeAt(pointer);if(obj!==undefined){selectionChanged=true;if(obj.isSelected()===true){this.deselectObject(obj)}else{this.selectObject(obj)}this.body.emitter.emit(\"_requestRedraw\")}}return selectionChanged}},{key:\"_initBaseEvent\",value:function _initBaseEvent(event,pointer){var properties={};properties[\"pointer\"]={DOM:{\nx:pointer.x,y:pointer.y},canvas:this.canvas.DOMtoCanvas(pointer)};properties[\"event\"]=event;return properties}},{key:\"_generateClickEvent\",value:function _generateClickEvent(eventType,event,pointer,oldSelection){var emptySelection=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;var properties=this._initBaseEvent(event,pointer);if(emptySelection===true){properties.nodes=[];properties.edges=[]}else{var tmp=this.getSelection();properties.nodes=tmp.nodes;properties.edges=tmp.edges}if(oldSelection!==undefined){properties[\"previousSelection\"]=oldSelection}if(eventType==\"click\"){properties.items=this.getClickedItems(pointer)}this.body.emitter.emit(eventType,properties)}},{key:\"selectObject\",value:function selectObject(obj){var highlightEdges=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.options.selectConnectedEdges;if(obj!==undefined){if(obj instanceof Node){if(highlightEdges===true){this._selectConnectedEdges(obj)}}obj.select();this._addToSelection(obj);return true}return false}},{key:\"deselectObject\",value:function deselectObject(obj){if(obj.isSelected()===true){obj.selected=false;this._removeFromSelection(obj)}}},{key:\"_getAllNodesOverlappingWith\",value:function _getAllNodesOverlappingWith(object){var overlappingNodes=[];var nodes=this.body.nodes;for(var i=0;i<this.body.nodeIndices.length;i++){var nodeId=this.body.nodeIndices[i];if(nodes[nodeId].isOverlappingWith(object)){overlappingNodes.push(nodeId)}}return overlappingNodes}},{key:\"_pointerToPositionObject\",value:function _pointerToPositionObject(pointer){var canvasPos=this.canvas.DOMtoCanvas(pointer);return{left:canvasPos.x-1,top:canvasPos.y+1,right:canvasPos.x+1,bottom:canvasPos.y-1}}},{key:\"getNodeAt\",value:function getNodeAt(pointer){var returnNode=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var positionObject=this._pointerToPositionObject(pointer);var overlappingNodes=this._getAllNodesOverlappingWith(positionObject);if(overlappingNodes.length>0){if(returnNode===true){return this.body.nodes[overlappingNodes[overlappingNodes.length-1]]}else{return overlappingNodes[overlappingNodes.length-1]}}else{return undefined}}},{key:\"_getEdgesOverlappingWith\",value:function _getEdgesOverlappingWith(object,overlappingEdges){var edges=this.body.edges;for(var i=0;i<this.body.edgeIndices.length;i++){var edgeId=this.body.edgeIndices[i];if(edges[edgeId].isOverlappingWith(object)){overlappingEdges.push(edgeId)}}}},{key:\"_getAllEdgesOverlappingWith\",value:function _getAllEdgesOverlappingWith(object){var overlappingEdges=[];this._getEdgesOverlappingWith(object,overlappingEdges);return overlappingEdges}},{key:\"getEdgeAt\",value:function getEdgeAt(pointer){var returnEdge=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var canvasPos=this.canvas.DOMtoCanvas(pointer);var mindist=10;var overlappingEdge=null;var edges=this.body.edges;for(var i=0;i<this.body.edgeIndices.length;i++){var edgeId=this.body.edgeIndices[i];var edge=edges[edgeId];if(edge.connected){var xFrom=edge.from.x;var yFrom=edge.from.y;var xTo=edge.to.x;var yTo=edge.to.y;var dist=edge.edgeType.getDistanceToEdge(xFrom,yFrom,xTo,yTo,canvasPos.x,canvasPos.y);if(dist<mindist){overlappingEdge=edgeId;mindist=dist}}}if(overlappingEdge!==null){if(returnEdge===true){return this.body.edges[overlappingEdge]}else{return overlappingEdge}}else{return undefined}}},{key:\"_addToSelection\",value:function _addToSelection(obj){if(obj instanceof Node){this.selectionObj.nodes[obj.id]=obj}else{this.selectionObj.edges[obj.id]=obj}}},{key:\"_addToHover\",value:function _addToHover(obj){if(obj instanceof Node){this.hoverObj.nodes[obj.id]=obj}else{this.hoverObj.edges[obj.id]=obj}}},{key:\"_removeFromSelection\",value:function _removeFromSelection(obj){if(obj instanceof Node){delete this.selectionObj.nodes[obj.id];this._unselectConnectedEdges(obj)}else{delete this.selectionObj.edges[obj.id]}}},{key:\"unselectAll\",value:function unselectAll(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){this.selectionObj.nodes[nodeId].unselect()}}for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){this.selectionObj.edges[edgeId].unselect()}}this.selectionObj={nodes:{},edges:{}}}},{key:\"_getSelectedNodeCount\",value:function _getSelectedNodeCount(){var count=0;for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){count+=1}}return count}},{key:\"_getSelectedNode\",value:function _getSelectedNode(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){return this.selectionObj.nodes[nodeId]}}return undefined}},{key:\"_getSelectedEdge\",value:function _getSelectedEdge(){for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){return this.selectionObj.edges[edgeId]}}return undefined}},{key:\"_getSelectedEdgeCount\",value:function _getSelectedEdgeCount(){var count=0;for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){count+=1}}return count}},{key:\"_getSelectedObjectCount\",value:function _getSelectedObjectCount(){var count=0;for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){count+=1}}for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){count+=1}}return count}},{key:\"_selectionIsEmpty\",value:function _selectionIsEmpty(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){return false}}for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){return false}}return true}},{key:\"_clusterInSelection\",value:function _clusterInSelection(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){if(this.selectionObj.nodes[nodeId].clusterSize>1){return true}}}return false}},{key:\"_selectConnectedEdges\",value:function _selectConnectedEdges(node){for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];edge.select();this._addToSelection(edge)}}},{key:\"_hoverConnectedEdges\",value:function _hoverConnectedEdges(node){for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];edge.hover=true;this._addToHover(edge)}}},{key:\"_unselectConnectedEdges\",value:function _unselectConnectedEdges(node){for(var i=0;i<node.edges.length;i++){var edge=node.edges[i];edge.unselect();this._removeFromSelection(edge)}}},{key:\"emitBlurEvent\",value:function emitBlurEvent(event,pointer,object){var properties=this._initBaseEvent(event,pointer);if(object.hover===true){object.hover=false;if(object instanceof Node){properties.node=object.id;this.body.emitter.emit(\"blurNode\",properties)}else{properties.edge=object.id;this.body.emitter.emit(\"blurEdge\",properties)}}}},{key:\"emitHoverEvent\",value:function emitHoverEvent(event,pointer,object){var properties=this._initBaseEvent(event,pointer);var hoverChanged=false;if(object.hover===false){object.hover=true;this._addToHover(object);hoverChanged=true;if(object instanceof Node){properties.node=object.id;this.body.emitter.emit(\"hoverNode\",properties)}else{properties.edge=object.id;this.body.emitter.emit(\"hoverEdge\",properties)}}return hoverChanged}},{key:\"hoverObject\",value:function hoverObject(event,pointer){var object=this.getNodeAt(pointer);if(object===undefined){object=this.getEdgeAt(pointer)}var hoverChanged=false;for(var nodeId in this.hoverObj.nodes){if(this.hoverObj.nodes.hasOwnProperty(nodeId)){if(object===undefined||object instanceof Node&&object.id!=nodeId||object instanceof Edge){this.emitBlurEvent(event,pointer,this.hoverObj.nodes[nodeId]);delete this.hoverObj.nodes[nodeId];hoverChanged=true}}}for(var edgeId in this.hoverObj.edges){if(this.hoverObj.edges.hasOwnProperty(edgeId)){if(hoverChanged===true){this.hoverObj.edges[edgeId].hover=false;delete this.hoverObj.edges[edgeId]}else if(object===undefined||object instanceof Edge&&object.id!=edgeId||object instanceof Node&&!object.hover){this.emitBlurEvent(event,pointer,this.hoverObj.edges[edgeId]);delete this.hoverObj.edges[edgeId];hoverChanged=true}}}if(object!==undefined){hoverChanged=hoverChanged||this.emitHoverEvent(event,pointer,object);if(object instanceof Node&&this.options.hoverConnectedEdges===true){this._hoverConnectedEdges(object)}}if(hoverChanged===true){this.body.emitter.emit(\"_requestRedraw\")}}},{key:\"getSelection\",value:function getSelection(){var nodeIds=this.getSelectedNodes();var edgeIds=this.getSelectedEdges();return{nodes:nodeIds,edges:edgeIds}}},{key:\"getSelectedNodes\",value:function getSelectedNodes(){var idArray=[];if(this.options.selectable===true){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){idArray.push(this.selectionObj.nodes[nodeId].id)}}}return idArray}},{key:\"getSelectedEdges\",value:function getSelectedEdges(){var idArray=[];if(this.options.selectable===true){for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){idArray.push(this.selectionObj.edges[edgeId].id)}}}return idArray}},{key:\"setSelection\",value:function setSelection(selection){var options=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var i=void 0,id=void 0;if(!selection||!selection.nodes&&!selection.edges)throw\"Selection must be an object with nodes and/or edges properties\";if(options.unselectAll||options.unselectAll===undefined){this.unselectAll()}if(selection.nodes){for(i=0;i<selection.nodes.length;i++){id=selection.nodes[i];var node=this.body.nodes[id];if(!node){throw new RangeError('Node with id \"'+id+'\" not found')}this.selectObject(node,options.highlightEdges)}}if(selection.edges){for(i=0;i<selection.edges.length;i++){id=selection.edges[i];var edge=this.body.edges[id];if(!edge){throw new RangeError('Edge with id \"'+id+'\" not found')}this.selectObject(edge)}}this.body.emitter.emit(\"_requestRedraw\")}},{key:\"selectNodes\",value:function selectNodes(selection){var highlightEdges=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(!selection||selection.length===undefined)throw\"Selection must be an array with ids\";this.setSelection({nodes:selection},{highlightEdges:highlightEdges})}},{key:\"selectEdges\",value:function selectEdges(selection){if(!selection||selection.length===undefined)throw\"Selection must be an array with ids\";this.setSelection({edges:selection})}},{key:\"updateSelection\",value:function updateSelection(){for(var nodeId in this.selectionObj.nodes){if(this.selectionObj.nodes.hasOwnProperty(nodeId)){if(!this.body.nodes.hasOwnProperty(nodeId)){delete this.selectionObj.nodes[nodeId]}}}for(var edgeId in this.selectionObj.edges){if(this.selectionObj.edges.hasOwnProperty(edgeId)){if(!this.body.edges.hasOwnProperty(edgeId)){delete this.selectionObj.edges[edgeId]}}}}},{key:\"getClickedItems\",value:function getClickedItems(pointer){var point=this.canvas.DOMtoCanvas(pointer);var items=[];var nodeIndices=this.body.nodeIndices;var nodes=this.body.nodes;for(var i=nodeIndices.length-1;i>=0;i--){var node=nodes[nodeIndices[i]];var ret=node.getItemsOnPoint(point);items.push.apply(items,ret)}var edgeIndices=this.body.edgeIndices;var edges=this.body.edges;for(var _i=edgeIndices.length-1;_i>=0;_i--){var edge=edges[edgeIndices[_i]];var _ret=edge.getItemsOnPoint(point);items.push.apply(items,_ret)}return items}}]);return SelectionHandler}();exports[\"default\"]=SelectionHandler},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var NetworkUtil=__webpack_require__(76)[\"default\"];var _require=__webpack_require__(236),HorizontalStrategy=_require.HorizontalStrategy,VerticalStrategy=_require.VerticalStrategy;var HierarchicalStatus=function(){function HierarchicalStatus(){(0,_classCallCheck3[\"default\"])(this,HierarchicalStatus);this.childrenReference={};this.parentReference={};this.trees={};this.distributionOrdering={};this.levels={};this.distributionIndex={};this.isTree=false;this.treeIndex=-1}(0,_createClass3[\"default\"])(HierarchicalStatus,[{key:\"addRelation\",value:function addRelation(parentNodeId,childNodeId){if(this.childrenReference[parentNodeId]===undefined){this.childrenReference[parentNodeId]=[]}this.childrenReference[parentNodeId].push(childNodeId);if(this.parentReference[childNodeId]===undefined){this.parentReference[childNodeId]=[]}this.parentReference[childNodeId].push(parentNodeId)}},{key:\"checkIfTree\",value:function checkIfTree(){for(var i in this.parentReference){if(this.parentReference[i].length>1){this.isTree=false;return}}this.isTree=true}},{key:\"numTrees\",value:function numTrees(){return this.treeIndex+1}},{key:\"setTreeIndex\",value:function setTreeIndex(node,treeId){if(treeId===undefined)return;if(this.trees[node.id]===undefined){this.trees[node.id]=treeId;this.treeIndex=Math.max(treeId,this.treeIndex)}}},{key:\"ensureLevel\",value:function ensureLevel(nodeId){if(this.levels[nodeId]===undefined){this.levels[nodeId]=0}}},{key:\"getMaxLevel\",value:function getMaxLevel(nodeId){var _this=this;var accumulator={};var _getMaxLevel=function _getMaxLevel(nodeId){if(accumulator[nodeId]!==undefined){return accumulator[nodeId]}var level=_this.levels[nodeId];if(_this.childrenReference[nodeId]){var children=_this.childrenReference[nodeId];if(children.length>0){for(var i=0;i<children.length;i++){level=Math.max(level,_getMaxLevel(children[i]))}}}accumulator[nodeId]=level;return level};return _getMaxLevel(nodeId)}},{key:\"levelDownstream\",value:function levelDownstream(nodeA,nodeB){if(this.levels[nodeB.id]===undefined){if(this.levels[nodeA.id]===undefined){this.levels[nodeA.id]=0}this.levels[nodeB.id]=this.levels[nodeA.id]+1}}},{key:\"setMinLevelToZero\",value:function setMinLevelToZero(nodes){var minLevel=1e9;for(var nodeId in nodes){if(nodes.hasOwnProperty(nodeId)){if(this.levels[nodeId]!==undefined){minLevel=Math.min(this.levels[nodeId],minLevel)}}}for(var _nodeId in nodes){if(nodes.hasOwnProperty(_nodeId)){if(this.levels[_nodeId]!==undefined){this.levels[_nodeId]-=minLevel}}}}},{key:\"getTreeSize\",value:function getTreeSize(nodes,index){var min_x=1e9;var max_x=-1e9;var min_y=1e9;var max_y=-1e9;for(var nodeId in this.trees){if(this.trees.hasOwnProperty(nodeId)){if(this.trees[nodeId]===index){var node=nodes[nodeId];min_x=Math.min(node.x,min_x);max_x=Math.max(node.x,max_x);min_y=Math.min(node.y,min_y);max_y=Math.max(node.y,max_y)}}}return{min_x:min_x,max_x:max_x,min_y:min_y,max_y:max_y}}},{key:\"hasSameParent\",value:function hasSameParent(node1,node2){var parents1=this.parentReference[node1.id];var parents2=this.parentReference[node2.id];if(parents1===undefined||parents2===undefined){return false}for(var i=0;i<parents1.length;i++){for(var j=0;j<parents2.length;j++){if(parents1[i]==parents2[j]){return true}}}return false}},{key:\"inSameSubNetwork\",value:function inSameSubNetwork(node1,node2){return this.trees[node1.id]===this.trees[node2.id]}},{key:\"getLevels\",value:function getLevels(){return(0,_keys2[\"default\"])(this.distributionOrdering)}},{key:\"addToOrdering\",value:function addToOrdering(node,level){if(this.distributionOrdering[level]===undefined){this.distributionOrdering[level]=[]}var isPresent=false;var curLevel=this.distributionOrdering[level];for(var n in curLevel){if(curLevel[n]===node){isPresent=true;break}}if(!isPresent){this.distributionOrdering[level].push(node);this.distributionIndex[node.id]=this.distributionOrdering[level].length-1}}}]);return HierarchicalStatus}();var LayoutEngine=function(){function LayoutEngine(body){(0,_classCallCheck3[\"default\"])(this,LayoutEngine);this.body=body;this.initialRandomSeed=Math.round(Math.random()*1e6);this.randomSeed=this.initialRandomSeed;this.setPhysics=false;this.options={};this.optionsBackup={physics:{}};this.defaultOptions={randomSeed:undefined,improvedLayout:true,hierarchical:{enabled:false,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:true,edgeMinimization:true,parentCentralization:true,direction:\"UD\",sortMethod:\"hubsize\"}};util.extend(this.options,this.defaultOptions);this.bindEventListeners()}(0,_createClass3[\"default\"])(LayoutEngine,[{key:\"bindEventListeners\",value:function bindEventListeners(){var _this2=this;this.body.emitter.on(\"_dataChanged\",function(){_this2.setupHierarchicalLayout()});this.body.emitter.on(\"_dataLoaded\",function(){_this2.layoutNetwork()});this.body.emitter.on(\"_resetHierarchicalLayout\",function(){_this2.setupHierarchicalLayout()});this.body.emitter.on(\"_adjustEdgesForHierarchicalLayout\",function(){if(_this2.options.hierarchical.enabled!==true){return}var type=_this2.direction.curveType();_this2.body.emitter.emit(\"_forceDisableDynamicCurves\",type,false)})}},{key:\"setOptions\",value:function setOptions(options,allOptions){if(options!==undefined){var hierarchical=this.options.hierarchical;var prevHierarchicalState=hierarchical.enabled;util.selectiveDeepExtend([\"randomSeed\",\"improvedLayout\"],this.options,options);util.mergeOptions(this.options,options,\"hierarchical\");if(options.randomSeed!==undefined){this.initialRandomSeed=options.randomSeed}if(hierarchical.enabled===true){if(prevHierarchicalState===true){this.body.emitter.emit(\"refresh\",true)}if(hierarchical.direction===\"RL\"||hierarchical.direction===\"DU\"){if(hierarchical.levelSeparation>0){hierarchical.levelSeparation*=-1}}else{if(hierarchical.levelSeparation<0){hierarchical.levelSeparation*=-1}}this.setDirectionStrategy();this.body.emitter.emit(\"_resetHierarchicalLayout\");return this.adaptAllOptionsForHierarchicalLayout(allOptions)}else{if(prevHierarchicalState===true){this.body.emitter.emit(\"refresh\");return util.deepExtend(allOptions,this.optionsBackup)}}}return allOptions}},{key:\"adaptAllOptionsForHierarchicalLayout\",value:function adaptAllOptionsForHierarchicalLayout(allOptions){if(this.options.hierarchical.enabled===true){var backupPhysics=this.optionsBackup.physics;if(allOptions.physics===undefined||allOptions.physics===true){allOptions.physics={enabled:backupPhysics.enabled===undefined?true:backupPhysics.enabled,solver:\"hierarchicalRepulsion\"};backupPhysics.enabled=backupPhysics.enabled===undefined?true:backupPhysics.enabled;backupPhysics.solver=backupPhysics.solver||\"barnesHut\"}else if((0,_typeof3[\"default\"])(allOptions.physics)===\"object\"){backupPhysics.enabled=allOptions.physics.enabled===undefined?true:allOptions.physics.enabled;backupPhysics.solver=allOptions.physics.solver||\"barnesHut\";allOptions.physics.solver=\"hierarchicalRepulsion\"}else if(allOptions.physics!==false){backupPhysics.solver=\"barnesHut\";allOptions.physics={solver:\"hierarchicalRepulsion\"}}var type=this.direction.curveType();if(allOptions.edges===undefined){this.optionsBackup.edges={smooth:{enabled:true,type:\"dynamic\"}};allOptions.edges={smooth:false}}else if(allOptions.edges.smooth===undefined){this.optionsBackup.edges={smooth:{enabled:true,type:\"dynamic\"}};allOptions.edges.smooth=false}else{if(typeof allOptions.edges.smooth===\"boolean\"){this.optionsBackup.edges={smooth:allOptions.edges.smooth};allOptions.edges.smooth={enabled:allOptions.edges.smooth,type:type}}else{var smooth=allOptions.edges.smooth;if(smooth.type!==undefined&&smooth.type!==\"dynamic\"){type=smooth.type}this.optionsBackup.edges={smooth:smooth.enabled===undefined?true:smooth.enabled,type:smooth.type===undefined?\"dynamic\":smooth.type,roundness:smooth.roundness===undefined?.5:smooth.roundness,forceDirection:smooth.forceDirection===undefined?false:smooth.forceDirection};allOptions.edges.smooth={enabled:smooth.enabled===undefined?true:smooth.enabled,type:type,roundness:smooth.roundness===undefined?.5:smooth.roundness,forceDirection:smooth.forceDirection===undefined?false:smooth.forceDirection}}}this.body.emitter.emit(\"_forceDisableDynamicCurves\",type)}return allOptions}},{key:\"seededRandom\",value:function seededRandom(){var x=Math.sin(this.randomSeed++)*1e4;return x-Math.floor(x)}},{key:\"positionInitially\",value:function positionInitially(nodesArray){if(this.options.hierarchical.enabled!==true){this.randomSeed=this.initialRandomSeed;var radius=nodesArray.length+50;for(var i=0;i<nodesArray.length;i++){var node=nodesArray[i];var angle=2*Math.PI*this.seededRandom();if(node.x===undefined){node.x=radius*Math.cos(angle)}if(node.y===undefined){node.y=radius*Math.sin(angle)}}}}},{key:\"layoutNetwork\",value:function layoutNetwork(){if(this.options.hierarchical.enabled!==true&&this.options.improvedLayout===true){var indices=this.body.nodeIndices;var positionDefined=0;for(var i=0;i<indices.length;i++){var node=this.body.nodes[indices[i]];if(node.predefinedPosition===true){positionDefined+=1}}if(positionDefined<.5*indices.length){var MAX_LEVELS=10;var level=0;var clusterThreshold=150;var clusterOptions={clusterNodeProperties:{shape:\"ellipse\",label:\"\",group:\"\",font:{multi:false}},clusterEdgeProperties:{label:\"\",font:{multi:false},smooth:{enabled:false}}};if(indices.length>clusterThreshold){var startLength=indices.length;while(indices.length>clusterThreshold&&level<=MAX_LEVELS){level+=1;var before=indices.length;if(level%3===0){this.body.modules.clustering.clusterBridges(clusterOptions)}else{this.body.modules.clustering.clusterOutliers(clusterOptions)}var after=indices.length;if(before==after&&level%3!==0){this._declusterAll();this.body.emitter.emit(\"_layoutFailed\");console.info(\"This network could not be positioned by this version of the improved layout algorithm.\"+\" Please disable improvedLayout for better performance.\");return}}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*startLength)})}if(level>MAX_LEVELS){console.info(\"The clustering didn't succeed within the amount of interations allowed,\"+\" progressing with partial result.\")}this.body.modules.kamadaKawai.solve(indices,this.body.edgeIndices,true);this._shiftToCenter();var offset=70;for(var _i=0;_i<indices.length;_i++){var _node=this.body.nodes[indices[_i]];if(_node.predefinedPosition===false){_node.x+=(.5-this.seededRandom())*offset;_node.y+=(.5-this.seededRandom())*offset}}this._declusterAll();this.body.emitter.emit(\"_repositionBezierNodes\")}}}},{key:\"_shiftToCenter\",value:function _shiftToCenter(){var range=NetworkUtil.getRangeCore(this.body.nodes,this.body.nodeIndices);var center=NetworkUtil.findCenter(range);for(var i=0;i<this.body.nodeIndices.length;i++){var node=this.body.nodes[this.body.nodeIndices[i]];node.x-=center.x;node.y-=center.y}}},{key:\"_declusterAll\",value:function _declusterAll(){var clustersPresent=true;while(clustersPresent===true){clustersPresent=false;for(var i=0;i<this.body.nodeIndices.length;i++){if(this.body.nodes[this.body.nodeIndices[i]].isCluster===true){clustersPresent=true;this.body.modules.clustering.openCluster(this.body.nodeIndices[i],{},false)}}if(clustersPresent===true){this.body.emitter.emit(\"_dataChanged\")}}}},{key:\"getSeed\",value:function getSeed(){return this.initialRandomSeed}},{key:\"setupHierarchicalLayout\",value:function setupHierarchicalLayout(){if(this.options.hierarchical.enabled===true&&this.body.nodeIndices.length>0){var node=void 0,nodeId=void 0;var definedLevel=false;var undefinedLevel=false;this.lastNodeOnLevel={};this.hierarchical=new HierarchicalStatus;for(nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(nodeId)){node=this.body.nodes[nodeId];if(node.options.level!==undefined){definedLevel=true;this.hierarchical.levels[nodeId]=node.options.level}else{undefinedLevel=true}}}if(undefinedLevel===true&&definedLevel===true){throw new Error(\"To use the hierarchical layout, nodes require either no predefined levels\"+\" or levels have to be defined for all nodes.\")}else{if(undefinedLevel===true){var sortMethod=this.options.hierarchical.sortMethod;if(sortMethod===\"hubsize\"){this._determineLevelsByHubsize()}else if(sortMethod===\"directed\"){this._determineLevelsDirected()}else if(sortMethod===\"custom\"){this._determineLevelsCustomCallback()}}for(var _nodeId2 in this.body.nodes){if(this.body.nodes.hasOwnProperty(_nodeId2)){this.hierarchical.ensureLevel(_nodeId2)}}var distribution=this._getDistribution();this._generateMap();this._placeNodesByHierarchy(distribution);this._condenseHierarchy();this._shiftToCenter()}}}},{key:\"_condenseHierarchy\",value:function _condenseHierarchy(){var _this3=this;var stillShifting=false;var branches={};var shiftTrees=function shiftTrees(){var treeSizes=getTreeSizes();var shiftBy=0;for(var i=0;i<treeSizes.length-1;i++){var diff=treeSizes[i].max-treeSizes[i+1].min;shiftBy+=diff+_this3.options.hierarchical.treeSpacing;shiftTree(i+1,shiftBy)}};var shiftTree=function shiftTree(index,offset){var trees=_this3.hierarchical.trees;for(var nodeId in trees){if(trees.hasOwnProperty(nodeId)){if(trees[nodeId]===index){_this3.direction.shift(nodeId,offset)}}}};var getTreeSizes=function getTreeSizes(){var treeWidths=[];for(var i=0;i<_this3.hierarchical.numTrees();i++){treeWidths.push(_this3.direction.getTreeSize(i))}return treeWidths};var getBranchNodes=function getBranchNodes(source,map){if(map[source.id]){return}map[source.id]=true;if(_this3.hierarchical.childrenReference[source.id]){var children=_this3.hierarchical.childrenReference[source.id];if(children.length>0){for(var i=0;i<children.length;i++){getBranchNodes(_this3.body.nodes[children[i]],map)}}}};var getBranchBoundary=function getBranchBoundary(branchMap){var maxLevel=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1e9;var minSpace=1e9;var maxSpace=1e9;var min=1e9;var max=-1e9;for(var branchNode in branchMap){if(branchMap.hasOwnProperty(branchNode)){var node=_this3.body.nodes[branchNode];var level=_this3.hierarchical.levels[node.id];var position=_this3.direction.getPosition(node);var _getSpaceAroundNode2=_this3._getSpaceAroundNode(node,branchMap),_getSpaceAroundNode3=(0,_slicedToArray3[\"default\"])(_getSpaceAroundNode2,2),minSpaceNode=_getSpaceAroundNode3[0],maxSpaceNode=_getSpaceAroundNode3[1];minSpace=Math.min(minSpaceNode,minSpace);maxSpace=Math.min(maxSpaceNode,maxSpace);if(level<=maxLevel){min=Math.min(position,min);max=Math.max(position,max)}}}return[min,max,minSpace,maxSpace]};var getCollisionLevel=function getCollisionLevel(node1,node2){var maxLevel1=_this3.hierarchical.getMaxLevel(node1.id);var maxLevel2=_this3.hierarchical.getMaxLevel(node2.id);return Math.min(maxLevel1,maxLevel2)};var shiftElementsCloser=function shiftElementsCloser(callback,levels,centerParents){var hier=_this3.hierarchical;for(var i=0;i<levels.length;i++){var level=levels[i];var levelNodes=hier.distributionOrdering[level];if(levelNodes.length>1){for(var j=0;j<levelNodes.length-1;j++){var node1=levelNodes[j];var node2=levelNodes[j+1];if(hier.hasSameParent(node1,node2)&&hier.inSameSubNetwork(node1,node2)){callback(node1,node2,centerParents)}}}}};var branchShiftCallback=function branchShiftCallback(node1,node2){var centerParent=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var pos1=_this3.direction.getPosition(node1);var pos2=_this3.direction.getPosition(node2);var diffAbs=Math.abs(pos2-pos1);var nodeSpacing=_this3.options.hierarchical.nodeSpacing;if(diffAbs>nodeSpacing){var branchNodes1={};var branchNodes2={};getBranchNodes(node1,branchNodes1);getBranchNodes(node2,branchNodes2);var maxLevel=getCollisionLevel(node1,node2);var branchNodeBoundary1=getBranchBoundary(branchNodes1,maxLevel);var branchNodeBoundary2=getBranchBoundary(branchNodes2,maxLevel);var max1=branchNodeBoundary1[1];var min2=branchNodeBoundary2[0];var minSpace2=branchNodeBoundary2[2];var diffBranch=Math.abs(max1-min2);if(diffBranch>nodeSpacing){var offset=max1-min2+nodeSpacing;if(offset<-minSpace2+nodeSpacing){offset=-minSpace2+nodeSpacing}if(offset<0){_this3._shiftBlock(node2.id,offset);stillShifting=true;if(centerParent===true)_this3._centerParent(node2)}}}};var minimizeEdgeLength=function minimizeEdgeLength(iterations,node){var nodeId=node.id;var allEdges=node.edges;var nodeLevel=_this3.hierarchical.levels[node.id];var C2=_this3.options.hierarchical.levelSeparation*_this3.options.hierarchical.levelSeparation;var referenceNodes={};var aboveEdges=[];for(var i=0;i<allEdges.length;i++){var edge=allEdges[i];if(edge.toId!=edge.fromId){var otherNode=edge.toId==nodeId?edge.from:edge.to;referenceNodes[allEdges[i].id]=otherNode;if(_this3.hierarchical.levels[otherNode.id]<nodeLevel){aboveEdges.push(edge)}}}var getFx=function getFx(point,edges){var sum=0;for(var _i2=0;_i2<edges.length;_i2++){if(referenceNodes[edges[_i2].id]!==undefined){var a=_this3.direction.getPosition(referenceNodes[edges[_i2].id])-point;sum+=a/Math.sqrt(a*a+C2)}}return sum};var getDFx=function getDFx(point,edges){var sum=0;for(var _i3=0;_i3<edges.length;_i3++){if(referenceNodes[edges[_i3].id]!==undefined){var a=_this3.direction.getPosition(referenceNodes[edges[_i3].id])-point;sum-=C2*Math.pow(a*a+C2,-1.5)}}return sum};var getGuess=function getGuess(iterations,edges){var guess=_this3.direction.getPosition(node);var guessMap={};for(var _i4=0;_i4<iterations;_i4++){var fx=getFx(guess,edges);var dfx=getDFx(guess,edges);var limit=40;var ratio=Math.max(-limit,Math.min(limit,Math.round(fx/dfx)));guess=guess-ratio;if(guessMap[guess]!==undefined){break}guessMap[guess]=_i4}return guess};var moveBranch=function moveBranch(guess){var nodePosition=_this3.direction.getPosition(node);if(branches[node.id]===undefined){var branchNodes={};getBranchNodes(node,branchNodes);branches[node.id]=branchNodes}var branchBoundary=getBranchBoundary(branches[node.id]);var minSpaceBranch=branchBoundary[2];var maxSpaceBranch=branchBoundary[3];var diff=guess-nodePosition;var branchOffset=0;if(diff>0){branchOffset=Math.min(diff,maxSpaceBranch-_this3.options.hierarchical.nodeSpacing)}else if(diff<0){branchOffset=-Math.min(-diff,minSpaceBranch-_this3.options.hierarchical.nodeSpacing)}if(branchOffset!=0){_this3._shiftBlock(node.id,branchOffset);stillShifting=true}};var moveNode=function moveNode(guess){var nodePosition=_this3.direction.getPosition(node);var _getSpaceAroundNode4=_this3._getSpaceAroundNode(node),_getSpaceAroundNode5=(0,_slicedToArray3[\"default\"])(_getSpaceAroundNode4,2),minSpace=_getSpaceAroundNode5[0],maxSpace=_getSpaceAroundNode5[1];var diff=guess-nodePosition;var newPosition=nodePosition;if(diff>0){newPosition=Math.min(nodePosition+(maxSpace-_this3.options.hierarchical.nodeSpacing),guess)}else if(diff<0){newPosition=Math.max(nodePosition-(minSpace-_this3.options.hierarchical.nodeSpacing),guess)}if(newPosition!==nodePosition){_this3.direction.setPosition(node,newPosition);stillShifting=true}};var guess=getGuess(iterations,aboveEdges);moveBranch(guess);guess=getGuess(iterations,allEdges);moveNode(guess)};var minimizeEdgeLengthBottomUp=function minimizeEdgeLengthBottomUp(iterations){var levels=_this3.hierarchical.getLevels();levels=levels.reverse();for(var i=0;i<iterations;i++){stillShifting=false;for(var j=0;j<levels.length;j++){var level=levels[j];var levelNodes=_this3.hierarchical.distributionOrdering[level];for(var k=0;k<levelNodes.length;k++){minimizeEdgeLength(1e3,levelNodes[k])}}if(stillShifting!==true){break}}};var shiftBranchesCloserBottomUp=function shiftBranchesCloserBottomUp(iterations){var levels=_this3.hierarchical.getLevels();levels=levels.reverse();for(var i=0;i<iterations;i++){stillShifting=false;shiftElementsCloser(branchShiftCallback,levels,true);if(stillShifting!==true){break}}};var centerAllParents=function centerAllParents(){for(var nodeId in _this3.body.nodes){if(_this3.body.nodes.hasOwnProperty(nodeId))_this3._centerParent(_this3.body.nodes[nodeId])}};var centerAllParentsBottomUp=function centerAllParentsBottomUp(){var levels=_this3.hierarchical.getLevels()\n;levels=levels.reverse();for(var i=0;i<levels.length;i++){var level=levels[i];var levelNodes=_this3.hierarchical.distributionOrdering[level];for(var j=0;j<levelNodes.length;j++){_this3._centerParent(levelNodes[j])}}};if(this.options.hierarchical.blockShifting===true){shiftBranchesCloserBottomUp(5);centerAllParents()}if(this.options.hierarchical.edgeMinimization===true){minimizeEdgeLengthBottomUp(20)}if(this.options.hierarchical.parentCentralization===true){centerAllParentsBottomUp()}shiftTrees()}},{key:\"_getSpaceAroundNode\",value:function _getSpaceAroundNode(node,map){var useMap=true;if(map===undefined){useMap=false}var level=this.hierarchical.levels[node.id];if(level!==undefined){var index=this.hierarchical.distributionIndex[node.id];var position=this.direction.getPosition(node);var ordering=this.hierarchical.distributionOrdering[level];var minSpace=1e9;var maxSpace=1e9;if(index!==0){var prevNode=ordering[index-1];if(useMap===true&&map[prevNode.id]===undefined||useMap===false){var prevPos=this.direction.getPosition(prevNode);minSpace=position-prevPos}}if(index!=ordering.length-1){var nextNode=ordering[index+1];if(useMap===true&&map[nextNode.id]===undefined||useMap===false){var nextPos=this.direction.getPosition(nextNode);maxSpace=Math.min(maxSpace,nextPos-position)}}return[minSpace,maxSpace]}else{return[0,0]}}},{key:\"_centerParent\",value:function _centerParent(node){if(this.hierarchical.parentReference[node.id]){var parents=this.hierarchical.parentReference[node.id];for(var i=0;i<parents.length;i++){var parentId=parents[i];var parentNode=this.body.nodes[parentId];var children=this.hierarchical.childrenReference[parentId];if(children!==undefined){var newPosition=this._getCenterPosition(children);var position=this.direction.getPosition(parentNode);var _getSpaceAroundNode6=this._getSpaceAroundNode(parentNode),_getSpaceAroundNode7=(0,_slicedToArray3[\"default\"])(_getSpaceAroundNode6,2),minSpace=_getSpaceAroundNode7[0],maxSpace=_getSpaceAroundNode7[1];var diff=position-newPosition;if(diff<0&&Math.abs(diff)<maxSpace-this.options.hierarchical.nodeSpacing||diff>0&&Math.abs(diff)<minSpace-this.options.hierarchical.nodeSpacing){this.direction.setPosition(parentNode,newPosition)}}}}}},{key:\"_placeNodesByHierarchy\",value:function _placeNodesByHierarchy(distribution){this.positionedNodes={};for(var level in distribution){if(distribution.hasOwnProperty(level)){var nodeArray=(0,_keys2[\"default\"])(distribution[level]);nodeArray=this._indexArrayToNodes(nodeArray);this.direction.sort(nodeArray);var handledNodeCount=0;for(var i=0;i<nodeArray.length;i++){var node=nodeArray[i];if(this.positionedNodes[node.id]===undefined){var spacing=this.options.hierarchical.nodeSpacing;var pos=spacing*handledNodeCount;if(handledNodeCount>0){pos=this.direction.getPosition(nodeArray[i-1])+spacing}this.direction.setPosition(node,pos,level);this._validatePositionAndContinue(node,level,pos);handledNodeCount++}}}}}},{key:\"_placeBranchNodes\",value:function _placeBranchNodes(parentId,parentLevel){var childRef=this.hierarchical.childrenReference[parentId];if(childRef===undefined){return}var childNodes=[];for(var i=0;i<childRef.length;i++){childNodes.push(this.body.nodes[childRef[i]])}this.direction.sort(childNodes);for(var _i5=0;_i5<childNodes.length;_i5++){var childNode=childNodes[_i5];var childNodeLevel=this.hierarchical.levels[childNode.id];if(childNodeLevel>parentLevel&&this.positionedNodes[childNode.id]===undefined){var spacing=this.options.hierarchical.nodeSpacing;var pos=void 0;if(_i5===0){pos=this.direction.getPosition(this.body.nodes[parentId])}else{pos=this.direction.getPosition(childNodes[_i5-1])+spacing}this.direction.setPosition(childNode,pos,childNodeLevel);this._validatePositionAndContinue(childNode,childNodeLevel,pos)}else{return}}var center=this._getCenterPosition(childNodes);this.direction.setPosition(this.body.nodes[parentId],center,parentLevel)}},{key:\"_validatePositionAndContinue\",value:function _validatePositionAndContinue(node,level,pos){if(!this.hierarchical.isTree)return;if(this.lastNodeOnLevel[level]!==undefined){var previousPos=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[level]]);if(pos-previousPos<this.options.hierarchical.nodeSpacing){var diff=previousPos+this.options.hierarchical.nodeSpacing-pos;var sharedParent=this._findCommonParent(this.lastNodeOnLevel[level],node.id);this._shiftBlock(sharedParent.withChild,diff)}}this.lastNodeOnLevel[level]=node.id;this.positionedNodes[node.id]=true;this._placeBranchNodes(node.id,level)}},{key:\"_indexArrayToNodes\",value:function _indexArrayToNodes(idArray){var array=[];for(var i=0;i<idArray.length;i++){array.push(this.body.nodes[idArray[i]])}return array}},{key:\"_getDistribution\",value:function _getDistribution(){var distribution={};var nodeId=void 0,node=void 0;for(nodeId in this.body.nodes){if(this.body.nodes.hasOwnProperty(nodeId)){node=this.body.nodes[nodeId];var level=this.hierarchical.levels[nodeId]===undefined?0:this.hierarchical.levels[nodeId];this.direction.fix(node,level);if(distribution[level]===undefined){distribution[level]={}}distribution[level][nodeId]=node}}return distribution}},{key:\"_getActiveEdges\",value:function _getActiveEdges(node){var _this4=this;var result=[];util.forEach(node.edges,function(edge){if(_this4.body.edgeIndices.indexOf(edge.id)!==-1){result.push(edge)}});return result}},{key:\"_getHubSizes\",value:function _getHubSizes(){var _this5=this;var hubSizes={};var nodeIds=this.body.nodeIndices;util.forEach(nodeIds,function(nodeId){var node=_this5.body.nodes[nodeId];var hubSize=_this5._getActiveEdges(node).length;hubSizes[hubSize]=true});var result=[];util.forEach(hubSizes,function(size){result.push(Number(size))});result.sort(function(a,b){return b-a});return result}},{key:\"_determineLevelsByHubsize\",value:function _determineLevelsByHubsize(){var _this6=this;var levelDownstream=function levelDownstream(nodeA,nodeB){_this6.hierarchical.levelDownstream(nodeA,nodeB)};var hubSizes=this._getHubSizes();var _loop=function _loop(i){var hubSize=hubSizes[i];if(hubSize===0)return\"break\";util.forEach(_this6.body.nodeIndices,function(nodeId){var node=_this6.body.nodes[nodeId];if(hubSize===_this6._getActiveEdges(node).length){_this6._crawlNetwork(levelDownstream,nodeId)}})};for(var i=0;i<hubSizes.length;++i){var _ret=_loop(i);if(_ret===\"break\")break}}},{key:\"_determineLevelsCustomCallback\",value:function _determineLevelsCustomCallback(){var _this7=this;var minLevel=1e5;var customCallback=function customCallback(nodeA,nodeB,edge){};var levelByDirection=function levelByDirection(nodeA,nodeB,edge){var levelA=_this7.hierarchical.levels[nodeA.id];if(levelA===undefined){levelA=_this7.hierarchical.levels[nodeA.id]=minLevel}var diff=customCallback(NetworkUtil.cloneOptions(nodeA,\"node\"),NetworkUtil.cloneOptions(nodeB,\"node\"),NetworkUtil.cloneOptions(edge,\"edge\"));_this7.hierarchical.levels[nodeB.id]=levelA+diff};this._crawlNetwork(levelByDirection);this.hierarchical.setMinLevelToZero(this.body.nodes)}},{key:\"_determineLevelsDirected\",value:function _determineLevelsDirected(){var _this8=this;var minLevel=1e4;var isBidirectional=function isBidirectional(edge){util.forEach(_this8.body.edges,function(otherEdge){if(otherEdge.toId===edge.fromId&&otherEdge.fromId===edge.toId){return true}});return false};var levelByDirection=function levelByDirection(nodeA,nodeB,edge){var levelA=_this8.hierarchical.levels[nodeA.id];var levelB=_this8.hierarchical.levels[nodeB.id];if(isBidirectional(edge)&&levelA!==undefined&&levelB!==undefined){return}if(levelA===undefined){levelA=_this8.hierarchical.levels[nodeA.id]=minLevel}if(edge.toId==nodeB.id){_this8.hierarchical.levels[nodeB.id]=levelA+1}else{_this8.hierarchical.levels[nodeB.id]=levelA-1}};this._crawlNetwork(levelByDirection);this.hierarchical.setMinLevelToZero(this.body.nodes)}},{key:\"_generateMap\",value:function _generateMap(){var _this9=this;var fillInRelations=function fillInRelations(parentNode,childNode){if(_this9.hierarchical.levels[childNode.id]>_this9.hierarchical.levels[parentNode.id]){_this9.hierarchical.addRelation(parentNode.id,childNode.id)}};this._crawlNetwork(fillInRelations);this.hierarchical.checkIfTree()}},{key:\"_crawlNetwork\",value:function _crawlNetwork(){var _this10=this;var callback=arguments.length>0&&arguments[0]!==undefined?arguments[0]:function(){};var startingNodeId=arguments[1];var progress={};var crawler=function crawler(node,tree){if(progress[node.id]===undefined){_this10.hierarchical.setTreeIndex(node,tree);progress[node.id]=true;var childNode=void 0;var edges=_this10._getActiveEdges(node);for(var i=0;i<edges.length;i++){var edge=edges[i];if(edge.connected===true){if(edge.toId==node.id){childNode=edge.from}else{childNode=edge.to}if(node.id!=childNode.id){callback(node,childNode,edge);crawler(childNode,tree)}}}}};if(startingNodeId===undefined){var treeIndex=0;for(var i=0;i<this.body.nodeIndices.length;i++){var nodeId=this.body.nodeIndices[i];if(progress[nodeId]===undefined){var node=this.body.nodes[nodeId];crawler(node,treeIndex);treeIndex+=1}}}else{var _node2=this.body.nodes[startingNodeId];if(_node2===undefined){console.error(\"Node not found:\",startingNodeId);return}crawler(_node2)}}},{key:\"_shiftBlock\",value:function _shiftBlock(parentId,diff){var _this11=this;var progress={};var shifter=function shifter(parentId){if(progress[parentId]){return}progress[parentId]=true;_this11.direction.shift(parentId,diff);var childRef=_this11.hierarchical.childrenReference[parentId];if(childRef!==undefined){for(var i=0;i<childRef.length;i++){shifter(childRef[i])}}};shifter(parentId)}},{key:\"_findCommonParent\",value:function _findCommonParent(childA,childB){var _this12=this;var parents={};var iterateParents=function iterateParents(parents,child){var parentRef=_this12.hierarchical.parentReference[child];if(parentRef!==undefined){for(var i=0;i<parentRef.length;i++){var parent=parentRef[i];parents[parent]=true;iterateParents(parents,parent)}}};var findParent=function findParent(parents,child){var parentRef=_this12.hierarchical.parentReference[child];if(parentRef!==undefined){for(var i=0;i<parentRef.length;i++){var parent=parentRef[i];if(parents[parent]!==undefined){return{foundParent:parent,withChild:child}}var branch=findParent(parents,parent);if(branch.foundParent!==null){return branch}}}return{foundParent:null,withChild:child}};iterateParents(parents,childA);return findParent(parents,childB)}},{key:\"setDirectionStrategy\",value:function setDirectionStrategy(){var isVertical=this.options.hierarchical.direction===\"UD\"||this.options.hierarchical.direction===\"DU\";if(isVertical){this.direction=new VerticalStrategy(this)}else{this.direction=new HorizontalStrategy(this)}}},{key:\"_getCenterPosition\",value:function _getCenterPosition(childNodes){var minPos=1e9;var maxPos=-1e9;for(var i=0;i<childNodes.length;i++){var childNode=void 0;if(childNodes[i].id!==undefined){childNode=childNodes[i]}else{var childNodeId=childNodes[i];childNode=this.body.nodes[childNodeId]}var position=this.direction.getPosition(childNode);minPos=Math.min(minPos,position);maxPos=Math.max(maxPos,position)}return.5*(minPos+maxPos)}}]);return LayoutEngine}();exports[\"default\"]=LayoutEngine},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.VerticalStrategy=exports.HorizontalStrategy=undefined;var _getPrototypeOf=__webpack_require__(3);var _getPrototypeOf2=_interopRequireDefault(_getPrototypeOf);var _possibleConstructorReturn2=__webpack_require__(4);var _possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2);var _inherits2=__webpack_require__(5);var _inherits3=_interopRequireDefault(_inherits2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var DirectionInterface=function(){function DirectionInterface(){(0,_classCallCheck3[\"default\"])(this,DirectionInterface)}(0,_createClass3[\"default\"])(DirectionInterface,[{key:\"abstract\",value:function abstract(){throw new Error(\"Can't instantiate abstract class!\")}},{key:\"fake_use\",value:function fake_use(){}},{key:\"curveType\",value:function curveType(){return this.abstract()}},{key:\"getPosition\",value:function getPosition(node){this.fake_use(node);return this.abstract()}},{key:\"setPosition\",value:function setPosition(node,position){var level=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;this.fake_use(node,position,level);this.abstract()}},{key:\"getTreeSize\",value:function getTreeSize(index){this.fake_use(index);return this.abstract()}},{key:\"sort\",value:function sort(nodeArray){this.fake_use(nodeArray);this.abstract()}},{key:\"fix\",value:function fix(node,level){this.fake_use(node,level);this.abstract()}},{key:\"shift\",value:function shift(nodeId,diff){this.fake_use(nodeId,diff);this.abstract()}}]);return DirectionInterface}();var VerticalStrategy=function(_DirectionInterface){(0,_inherits3[\"default\"])(VerticalStrategy,_DirectionInterface);function VerticalStrategy(layout){(0,_classCallCheck3[\"default\"])(this,VerticalStrategy);var _this=(0,_possibleConstructorReturn3[\"default\"])(this,(VerticalStrategy.__proto__||(0,_getPrototypeOf2[\"default\"])(VerticalStrategy)).call(this));_this.layout=layout;return _this}(0,_createClass3[\"default\"])(VerticalStrategy,[{key:\"curveType\",value:function curveType(){return\"horizontal\"}},{key:\"getPosition\",value:function getPosition(node){return node.x}},{key:\"setPosition\",value:function setPosition(node,position){var level=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(level!==undefined){this.layout.hierarchical.addToOrdering(node,level)}node.x=position}},{key:\"getTreeSize\",value:function getTreeSize(index){var res=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,index);return{min:res.min_x,max:res.max_x}}},{key:\"sort\",value:function sort(nodeArray){nodeArray.sort(function(a,b){if(a.x===undefined||b.x===undefined)return 0;return a.x-b.x})}},{key:\"fix\",value:function fix(node,level){node.y=this.layout.options.hierarchical.levelSeparation*level;node.options.fixed.y=true}},{key:\"shift\",value:function shift(nodeId,diff){this.layout.body.nodes[nodeId].x+=diff}}]);return VerticalStrategy}(DirectionInterface);var HorizontalStrategy=function(_DirectionInterface2){(0,_inherits3[\"default\"])(HorizontalStrategy,_DirectionInterface2);function HorizontalStrategy(layout){(0,_classCallCheck3[\"default\"])(this,HorizontalStrategy);var _this2=(0,_possibleConstructorReturn3[\"default\"])(this,(HorizontalStrategy.__proto__||(0,_getPrototypeOf2[\"default\"])(HorizontalStrategy)).call(this));_this2.layout=layout;return _this2}(0,_createClass3[\"default\"])(HorizontalStrategy,[{key:\"curveType\",value:function curveType(){return\"vertical\"}},{key:\"getPosition\",value:function getPosition(node){return node.y}},{key:\"setPosition\",value:function setPosition(node,position){var level=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;if(level!==undefined){this.layout.hierarchical.addToOrdering(node,level)}node.y=position}},{key:\"getTreeSize\",value:function getTreeSize(index){var res=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,index);return{min:res.min_y,max:res.max_y}}},{key:\"sort\",value:function sort(nodeArray){nodeArray.sort(function(a,b){if(a.y===undefined||b.y===undefined)return 0;return a.y-b.y})}},{key:\"fix\",value:function fix(node,level){node.x=this.layout.options.hierarchical.levelSeparation*level;node.options.fixed.x=true}},{key:\"shift\",value:function shift(nodeId,diff){this.layout.body.nodes[nodeId].y+=diff}}]);return HorizontalStrategy}(DirectionInterface);exports.HorizontalStrategy=HorizontalStrategy;exports.VerticalStrategy=VerticalStrategy},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _keys=__webpack_require__(8);var _keys2=_interopRequireDefault(_keys);var _stringify=__webpack_require__(19);var _stringify2=_interopRequireDefault(_stringify);var _typeof2=__webpack_require__(6);var _typeof3=_interopRequireDefault(_typeof2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var util=__webpack_require__(2);var Hammer=__webpack_require__(10);var hammerUtil=__webpack_require__(37);var ManipulationSystem=function(){function ManipulationSystem(body,canvas,selectionHandler){var _this=this;(0,_classCallCheck3[\"default\"])(this,ManipulationSystem);this.body=body;this.canvas=canvas;this.selectionHandler=selectionHandler;this.editMode=false;this.manipulationDiv=undefined;this.editModeDiv=undefined;this.closeDiv=undefined;this.manipulationHammers=[];this.temporaryUIFunctions={};this.temporaryEventFunctions=[];this.touchTime=0;this.temporaryIds={nodes:[],edges:[]};this.guiEnabled=false;this.inMode=false;this.selectedControlNode=undefined;this.options={};this.defaultOptions={enabled:false,initiallyActive:false,addNode:true,addEdge:true,editNode:undefined,editEdge:true,deleteNode:true,deleteEdge:true,controlNodeStyle:{shape:\"dot\",size:6,color:{background:\"#ff0000\",border:\"#3c3c3c\",highlight:{background:\"#07f968\",border:\"#3c3c3c\"}},borderWidth:2,borderWidthSelected:2}};util.extend(this.options,this.defaultOptions);this.body.emitter.on(\"destroy\",function(){_this._clean()});this.body.emitter.on(\"_dataChanged\",this._restore.bind(this));this.body.emitter.on(\"_resetData\",this._restore.bind(this))}(0,_createClass3[\"default\"])(ManipulationSystem,[{key:\"_restore\",value:function _restore(){if(this.inMode!==false){if(this.options.initiallyActive===true){this.enableEditMode()}else{this.disableEditMode()}}}},{key:\"setOptions\",value:function setOptions(options,allOptions,globalOptions){if(allOptions!==undefined){if(allOptions.locale!==undefined){this.options.locale=allOptions.locale}else{this.options.locale=globalOptions.locale}if(allOptions.locales!==undefined){this.options.locales=allOptions.locales}else{this.options.locales=globalOptions.locales}}if(options!==undefined){if(typeof options===\"boolean\"){this.options.enabled=options}else{this.options.enabled=true;util.deepExtend(this.options,options)}if(this.options.initiallyActive===true){this.editMode=true}this._setup()}}},{key:\"toggleEditMode\",value:function toggleEditMode(){if(this.editMode===true){this.disableEditMode()}else{this.enableEditMode()}}},{key:\"enableEditMode\",value:function enableEditMode(){this.editMode=true;this._clean();if(this.guiEnabled===true){this.manipulationDiv.style.display=\"block\";this.closeDiv.style.display=\"block\";this.editModeDiv.style.display=\"none\";this.showManipulatorToolbar()}}},{key:\"disableEditMode\",value:function disableEditMode(){this.editMode=false;this._clean();if(this.guiEnabled===true){this.manipulationDiv.style.display=\"none\";this.closeDiv.style.display=\"none\";this.editModeDiv.style.display=\"block\";this._createEditButton()}}},{key:\"showManipulatorToolbar\",value:function showManipulatorToolbar(){this._clean();this.manipulationDOM={};if(this.guiEnabled===true){this.editMode=true;this.manipulationDiv.style.display=\"block\";this.closeDiv.style.display=\"block\";var selectedNodeCount=this.selectionHandler._getSelectedNodeCount();var selectedEdgeCount=this.selectionHandler._getSelectedEdgeCount();var selectedTotalCount=selectedNodeCount+selectedEdgeCount;var locale=this.options.locales[this.options.locale];var needSeperator=false;if(this.options.addNode!==false){this._createAddNodeButton(locale);needSeperator=true}if(this.options.addEdge!==false){if(needSeperator===true){this._createSeperator(1)}else{needSeperator=true}this._createAddEdgeButton(locale)}if(selectedNodeCount===1&&typeof this.options.editNode===\"function\"){if(needSeperator===true){this._createSeperator(2)}else{needSeperator=true}this._createEditNodeButton(locale)}else if(selectedEdgeCount===1&&selectedNodeCount===0&&this.options.editEdge!==false){if(needSeperator===true){this._createSeperator(3)}else{needSeperator=true}this._createEditEdgeButton(locale)}if(selectedTotalCount!==0){if(selectedNodeCount>0&&this.options.deleteNode!==false){if(needSeperator===true){this._createSeperator(4)}this._createDeleteButton(locale)}else if(selectedNodeCount===0&&this.options.deleteEdge!==false){if(needSeperator===true){this._createSeperator(4)}this._createDeleteButton(locale)}}this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this));this._temporaryBindEvent(\"select\",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit(\"_redraw\")}},{key:\"addNodeMode\",value:function addNodeMode(){if(this.editMode!==true){this.enableEditMode()}this._clean();this.inMode=\"addNode\";if(this.guiEnabled===true){var locale=this.options.locales[this.options.locale];this.manipulationDOM={};this._createBackButton(locale);this._createSeperator();this._createDescription(locale[\"addDescription\"]||this.options.locales[\"en\"][\"addDescription\"]);this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent(\"click\",this._performAddNode.bind(this))}},{key:\"editNode\",value:function editNode(){var _this2=this;if(this.editMode!==true){this.enableEditMode()}this._clean();var node=this.selectionHandler._getSelectedNode();if(node!==undefined){this.inMode=\"editNode\";if(typeof this.options.editNode===\"function\"){if(node.isCluster!==true){var data=util.deepExtend({},node.options,false);data.x=node.x;data.y=node.y;if(this.options.editNode.length===2){this.options.editNode(data,function(finalizedData){if(finalizedData!==null&&finalizedData!==undefined&&_this2.inMode===\"editNode\"){_this2.body.data.nodes.getDataSet().update(finalizedData)}_this2.showManipulatorToolbar()})}else{throw new Error(\"The function for edit does not support two arguments (data, callback)\")}}else{alert(this.options.locales[this.options.locale][\"editClusterError\"]||this.options.locales[\"en\"][\"editClusterError\"])}}else{throw new Error(\"No function has been configured to handle the editing of nodes.\")}}else{this.showManipulatorToolbar()}}},{key:\"addEdgeMode\",value:function addEdgeMode(){if(this.editMode!==true){this.enableEditMode()}this._clean();this.inMode=\"addEdge\";if(this.guiEnabled===true){var locale=this.options.locales[this.options.locale];this.manipulationDOM={};this._createBackButton(locale);this._createSeperator();this._createDescription(locale[\"edgeDescription\"]||this.options.locales[\"en\"][\"edgeDescription\"]);this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI(\"onTouch\",this._handleConnect.bind(this));this._temporaryBindUI(\"onDragEnd\",this._finishConnect.bind(this));this._temporaryBindUI(\"onDrag\",this._dragControlNode.bind(this));this._temporaryBindUI(\"onRelease\",this._finishConnect.bind(this));this._temporaryBindUI(\"onDragStart\",this._dragStartEdge.bind(this));this._temporaryBindUI(\"onHold\",function(){})}},{key:\"editEdgeMode\",value:function editEdgeMode(){if(this.editMode!==true){this.enableEditMode()}this._clean();this.inMode=\"editEdge\";if((0,_typeof3[\"default\"])(this.options.editEdge)===\"object\"&&typeof this.options.editEdge.editWithoutDrag===\"function\"){this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0];if(this.edgeBeingEditedId!==undefined){var edge=this.body.edges[this.edgeBeingEditedId];this._performEditEdge(edge.from,edge.to);return}}if(this.guiEnabled===true){var locale=this.options.locales[this.options.locale];this.manipulationDOM={};this._createBackButton(locale);this._createSeperator();this._createDescription(locale[\"editEdgeDescription\"]||this.options.locales[\"en\"][\"editEdgeDescription\"]);this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0];if(this.edgeBeingEditedId!==undefined){var _edge=this.body.edges[this.edgeBeingEditedId];var controlNodeFrom=this._getNewTargetNode(_edge.from.x,_edge.from.y);var controlNodeTo=this._getNewTargetNode(_edge.to.x,_edge.to.y);this.temporaryIds.nodes.push(controlNodeFrom.id);this.temporaryIds.nodes.push(controlNodeTo.id);this.body.nodes[controlNodeFrom.id]=controlNodeFrom;this.body.nodeIndices.push(controlNodeFrom.id);this.body.nodes[controlNodeTo.id]=controlNodeTo;this.body.nodeIndices.push(controlNodeTo.id);this._temporaryBindUI(\"onTouch\",this._controlNodeTouch.bind(this));this._temporaryBindUI(\"onTap\",function(){});this._temporaryBindUI(\"onHold\",function(){});this._temporaryBindUI(\"onDragStart\",this._controlNodeDragStart.bind(this));this._temporaryBindUI(\"onDrag\",this._controlNodeDrag.bind(this));this._temporaryBindUI(\"onDragEnd\",this._controlNodeDragEnd.bind(this));this._temporaryBindUI(\"onMouseMove\",function(){});this._temporaryBindEvent(\"beforeDrawing\",function(ctx){var positions=_edge.edgeType.findBorderPositions(ctx);if(controlNodeFrom.selected===false){controlNodeFrom.x=positions.from.x;controlNodeFrom.y=positions.from.y}if(controlNodeTo.selected===false){controlNodeTo.x=positions.to.x;controlNodeTo.y=positions.to.y}});this.body.emitter.emit(\"_redraw\")}else{this.showManipulatorToolbar()}}},{key:\"deleteSelected\",value:function deleteSelected(){var _this3=this;if(this.editMode!==true){this.enableEditMode()}this._clean();this.inMode=\"delete\";var selectedNodes=this.selectionHandler.getSelectedNodes();var selectedEdges=this.selectionHandler.getSelectedEdges();var deleteFunction=undefined;if(selectedNodes.length>0){for(var i=0;i<selectedNodes.length;i++){if(this.body.nodes[selectedNodes[i]].isCluster===true){alert(this.options.locales[this.options.locale][\"deleteClusterError\"]||this.options.locales[\"en\"][\"deleteClusterError\"]);return}}if(typeof this.options.deleteNode===\"function\"){deleteFunction=this.options.deleteNode}}else if(selectedEdges.length>0){if(typeof this.options.deleteEdge===\"function\"){deleteFunction=this.options.deleteEdge}}if(typeof deleteFunction===\"function\"){var data={nodes:selectedNodes,edges:selectedEdges};if(deleteFunction.length===2){deleteFunction(data,function(finalizedData){if(finalizedData!==null&&finalizedData!==undefined&&_this3.inMode===\"delete\"){_this3.body.data.edges.getDataSet().remove(finalizedData.edges);_this3.body.data.nodes.getDataSet().remove(finalizedData.nodes);_this3.body.emitter.emit(\"startSimulation\");_this3.showManipulatorToolbar()}else{_this3.body.emitter.emit(\"startSimulation\");_this3.showManipulatorToolbar()}})}else{throw new Error(\"The function for delete does not support two arguments (data, callback)\")}}else{this.body.data.edges.getDataSet().remove(selectedEdges);this.body.data.nodes.getDataSet().remove(selectedNodes);this.body.emitter.emit(\"startSimulation\");this.showManipulatorToolbar()}}},{key:\"_setup\",value:function _setup(){if(this.options.enabled===true){this.guiEnabled=true;this._createWrappers();if(this.editMode===false){this._createEditButton()}else{this.showManipulatorToolbar()}}else{this._removeManipulationDOM();this.guiEnabled=false}}},{key:\"_createWrappers\",value:function _createWrappers(){if(this.manipulationDiv===undefined){this.manipulationDiv=document.createElement(\"div\");this.manipulationDiv.className=\"vis-manipulation\";if(this.editMode===true){this.manipulationDiv.style.display=\"block\"}else{this.manipulationDiv.style.display=\"none\"}this.canvas.frame.appendChild(this.manipulationDiv)}if(this.editModeDiv===undefined){this.editModeDiv=document.createElement(\"div\");this.editModeDiv.className=\"vis-edit-mode\";if(this.editMode===true){this.editModeDiv.style.display=\"none\"}else{this.editModeDiv.style.display=\"block\"}this.canvas.frame.appendChild(this.editModeDiv)}if(this.closeDiv===undefined){this.closeDiv=document.createElement(\"div\");this.closeDiv.className=\"vis-close\";this.closeDiv.style.display=this.manipulationDiv.style.display;this.canvas.frame.appendChild(this.closeDiv)}}},{key:\"_getNewTargetNode\",value:function _getNewTargetNode(x,y){var controlNodeStyle=util.deepExtend({},this.options.controlNodeStyle);controlNodeStyle.id=\"targetNode\"+util.randomUUID();controlNodeStyle.hidden=false;controlNodeStyle.physics=false;controlNodeStyle.x=x;controlNodeStyle.y=y;var node=this.body.functions.createNode(controlNodeStyle);node.shape.boundingBox={left:x,right:x,top:y,bottom:y};return node}},{key:\"_createEditButton\",value:function _createEditButton(){this._clean();this.manipulationDOM={};util.recursiveDOMDelete(this.editModeDiv);var locale=this.options.locales[this.options.locale];var button=this._createButton(\"editMode\",\"vis-button vis-edit vis-edit-mode\",locale[\"edit\"]||this.options.locales[\"en\"][\"edit\"]);this.editModeDiv.appendChild(button);this._bindHammerToDiv(button,this.toggleEditMode.bind(this))}},{key:\"_clean\",value:function _clean(){this.inMode=false;if(this.guiEnabled===true){util.recursiveDOMDelete(this.editModeDiv);util.recursiveDOMDelete(this.manipulationDiv);this._cleanManipulatorHammers()}this._cleanupTemporaryNodesAndEdges();this._unbindTemporaryUIs();this._unbindTemporaryEvents();this.body.emitter.emit(\"restorePhysics\")}},{key:\"_cleanManipulatorHammers\",value:function _cleanManipulatorHammers(){if(this.manipulationHammers.length!=0){for(var i=0;i<this.manipulationHammers.length;i++){this.manipulationHammers[i].destroy()}this.manipulationHammers=[]}}},{key:\"_removeManipulationDOM\",value:function _removeManipulationDOM(){this._clean();util.recursiveDOMDelete(this.manipulationDiv);util.recursiveDOMDelete(this.editModeDiv);util.recursiveDOMDelete(this.closeDiv);if(this.manipulationDiv){this.canvas.frame.removeChild(this.manipulationDiv)}if(this.editModeDiv){this.canvas.frame.removeChild(this.editModeDiv)}if(this.closeDiv){this.canvas.frame.removeChild(this.closeDiv)}this.manipulationDiv=undefined;this.editModeDiv=undefined;this.closeDiv=undefined}},{key:\"_createSeperator\",value:function _createSeperator(){var index=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;this.manipulationDOM[\"seperatorLineDiv\"+index]=document.createElement(\"div\");this.manipulationDOM[\"seperatorLineDiv\"+index].className=\"vis-separator-line\";this.manipulationDiv.appendChild(this.manipulationDOM[\"seperatorLineDiv\"+index])}},{key:\"_createAddNodeButton\",value:function _createAddNodeButton(locale){var button=this._createButton(\"addNode\",\"vis-button vis-add\",locale[\"addNode\"]||this.options.locales[\"en\"][\"addNode\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.addNodeMode.bind(this))}},{key:\"_createAddEdgeButton\",value:function _createAddEdgeButton(locale){var button=this._createButton(\"addEdge\",\"vis-button vis-connect\",locale[\"addEdge\"]||this.options.locales[\"en\"][\"addEdge\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.addEdgeMode.bind(this))}},{key:\"_createEditNodeButton\",value:function _createEditNodeButton(locale){var button=this._createButton(\"editNode\",\"vis-button vis-edit\",locale[\"editNode\"]||this.options.locales[\"en\"][\"editNode\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.editNode.bind(this))}},{key:\"_createEditEdgeButton\",value:function _createEditEdgeButton(locale){var button=this._createButton(\"editEdge\",\"vis-button vis-edit\",locale[\"editEdge\"]||this.options.locales[\"en\"][\"editEdge\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.editEdgeMode.bind(this))}},{key:\"_createDeleteButton\",value:function _createDeleteButton(locale){var deleteBtnClass;if(this.options.rtl){deleteBtnClass=\"vis-button vis-delete-rtl\"}else{deleteBtnClass=\"vis-button vis-delete\"}var button=this._createButton(\"delete\",deleteBtnClass,locale[\"del\"]||this.options.locales[\"en\"][\"del\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.deleteSelected.bind(this))}},{key:\"_createBackButton\",value:function _createBackButton(locale){\nvar button=this._createButton(\"back\",\"vis-button vis-back\",locale[\"back\"]||this.options.locales[\"en\"][\"back\"]);this.manipulationDiv.appendChild(button);this._bindHammerToDiv(button,this.showManipulatorToolbar.bind(this))}},{key:\"_createButton\",value:function _createButton(id,className,label){var labelClassName=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\"vis-label\";this.manipulationDOM[id+\"Div\"]=document.createElement(\"div\");this.manipulationDOM[id+\"Div\"].className=className;this.manipulationDOM[id+\"Label\"]=document.createElement(\"div\");this.manipulationDOM[id+\"Label\"].className=labelClassName;this.manipulationDOM[id+\"Label\"].innerHTML=label;this.manipulationDOM[id+\"Div\"].appendChild(this.manipulationDOM[id+\"Label\"]);return this.manipulationDOM[id+\"Div\"]}},{key:\"_createDescription\",value:function _createDescription(label){this.manipulationDiv.appendChild(this._createButton(\"description\",\"vis-button vis-none\",label))}},{key:\"_temporaryBindEvent\",value:function _temporaryBindEvent(event,newFunction){this.temporaryEventFunctions.push({event:event,boundFunction:newFunction});this.body.emitter.on(event,newFunction)}},{key:\"_temporaryBindUI\",value:function _temporaryBindUI(UIfunctionName,newFunction){if(this.body.eventListeners[UIfunctionName]!==undefined){this.temporaryUIFunctions[UIfunctionName]=this.body.eventListeners[UIfunctionName];this.body.eventListeners[UIfunctionName]=newFunction}else{throw new Error(\"This UI function does not exist. Typo? You tried: \"+UIfunctionName+\" possible are: \"+(0,_stringify2[\"default\"])((0,_keys2[\"default\"])(this.body.eventListeners)))}}},{key:\"_unbindTemporaryUIs\",value:function _unbindTemporaryUIs(){for(var functionName in this.temporaryUIFunctions){if(this.temporaryUIFunctions.hasOwnProperty(functionName)){this.body.eventListeners[functionName]=this.temporaryUIFunctions[functionName];delete this.temporaryUIFunctions[functionName]}}this.temporaryUIFunctions={}}},{key:\"_unbindTemporaryEvents\",value:function _unbindTemporaryEvents(){for(var i=0;i<this.temporaryEventFunctions.length;i++){var eventName=this.temporaryEventFunctions[i].event;var boundFunction=this.temporaryEventFunctions[i].boundFunction;this.body.emitter.off(eventName,boundFunction)}this.temporaryEventFunctions=[]}},{key:\"_bindHammerToDiv\",value:function _bindHammerToDiv(domElement,boundFunction){var hammer=new Hammer(domElement,{});hammerUtil.onTouch(hammer,boundFunction);this.manipulationHammers.push(hammer)}},{key:\"_cleanupTemporaryNodesAndEdges\",value:function _cleanupTemporaryNodesAndEdges(){for(var i=0;i<this.temporaryIds.edges.length;i++){this.body.edges[this.temporaryIds.edges[i]].disconnect();delete this.body.edges[this.temporaryIds.edges[i]];var indexTempEdge=this.body.edgeIndices.indexOf(this.temporaryIds.edges[i]);if(indexTempEdge!==-1){this.body.edgeIndices.splice(indexTempEdge,1)}}for(var _i=0;_i<this.temporaryIds.nodes.length;_i++){delete this.body.nodes[this.temporaryIds.nodes[_i]];var indexTempNode=this.body.nodeIndices.indexOf(this.temporaryIds.nodes[_i]);if(indexTempNode!==-1){this.body.nodeIndices.splice(indexTempNode,1)}}this.temporaryIds={nodes:[],edges:[]}}},{key:\"_controlNodeTouch\",value:function _controlNodeTouch(event){this.selectionHandler.unselectAll();this.lastTouch=this.body.functions.getPointer(event.center);this.lastTouch.translation=util.extend({},this.body.view.translation)}},{key:\"_controlNodeDragStart\",value:function _controlNodeDragStart(event){var pointer=this.lastTouch;var pointerObj=this.selectionHandler._pointerToPositionObject(pointer);var from=this.body.nodes[this.temporaryIds.nodes[0]];var to=this.body.nodes[this.temporaryIds.nodes[1]];var edge=this.body.edges[this.edgeBeingEditedId];this.selectedControlNode=undefined;var fromSelect=from.isOverlappingWith(pointerObj);var toSelect=to.isOverlappingWith(pointerObj);if(fromSelect===true){this.selectedControlNode=from;edge.edgeType.from=from}else if(toSelect===true){this.selectedControlNode=to;edge.edgeType.to=to}if(this.selectedControlNode!==undefined){this.selectionHandler.selectObject(this.selectedControlNode)}this.body.emitter.emit(\"_redraw\")}},{key:\"_controlNodeDrag\",value:function _controlNodeDrag(event){this.body.emitter.emit(\"disablePhysics\");var pointer=this.body.functions.getPointer(event.center);var pos=this.canvas.DOMtoCanvas(pointer);if(this.selectedControlNode!==undefined){this.selectedControlNode.x=pos.x;this.selectedControlNode.y=pos.y}else{var diffX=pointer.x-this.lastTouch.x;var diffY=pointer.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+diffX,y:this.lastTouch.translation.y+diffY}}this.body.emitter.emit(\"_redraw\")}},{key:\"_controlNodeDragEnd\",value:function _controlNodeDragEnd(event){var pointer=this.body.functions.getPointer(event.center);var pointerObj=this.selectionHandler._pointerToPositionObject(pointer);var edge=this.body.edges[this.edgeBeingEditedId];if(this.selectedControlNode===undefined){return}this.selectionHandler.unselectAll();var overlappingNodeIds=this.selectionHandler._getAllNodesOverlappingWith(pointerObj);var node=undefined;for(var i=overlappingNodeIds.length-1;i>=0;i--){if(overlappingNodeIds[i]!==this.selectedControlNode.id){node=this.body.nodes[overlappingNodeIds[i]];break}}if(node!==undefined&&this.selectedControlNode!==undefined){if(node.isCluster===true){alert(this.options.locales[this.options.locale][\"createEdgeError\"]||this.options.locales[\"en\"][\"createEdgeError\"])}else{var from=this.body.nodes[this.temporaryIds.nodes[0]];if(this.selectedControlNode.id===from.id){this._performEditEdge(node.id,edge.to.id)}else{this._performEditEdge(edge.from.id,node.id)}}}else{edge.updateEdgeType();this.body.emitter.emit(\"restorePhysics\")}this.body.emitter.emit(\"_redraw\")}},{key:\"_handleConnect\",value:function _handleConnect(event){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(event.center);this.lastTouch.translation=util.extend({},this.body.view.translation);var pointer=this.lastTouch;var node=this.selectionHandler.getNodeAt(pointer);if(node!==undefined){if(node.isCluster===true){alert(this.options.locales[this.options.locale][\"createEdgeError\"]||this.options.locales[\"en\"][\"createEdgeError\"])}else{var targetNode=this._getNewTargetNode(node.x,node.y);this.body.nodes[targetNode.id]=targetNode;this.body.nodeIndices.push(targetNode.id);var connectionEdge=this.body.functions.createEdge({id:\"connectionEdge\"+util.randomUUID(),from:node.id,to:targetNode.id,physics:false,smooth:{enabled:true,type:\"continuous\",roundness:.5}});this.body.edges[connectionEdge.id]=connectionEdge;this.body.edgeIndices.push(connectionEdge.id);this.temporaryIds.nodes.push(targetNode.id);this.temporaryIds.edges.push(connectionEdge.id)}}this.touchTime=(new Date).valueOf()}}},{key:\"_dragControlNode\",value:function _dragControlNode(event){var pointer=this.body.functions.getPointer(event.center);if(this.temporaryIds.nodes[0]!==undefined){var targetNode=this.body.nodes[this.temporaryIds.nodes[0]];targetNode.x=this.canvas._XconvertDOMtoCanvas(pointer.x);targetNode.y=this.canvas._YconvertDOMtoCanvas(pointer.y);this.body.emitter.emit(\"_redraw\")}else{var diffX=pointer.x-this.lastTouch.x;var diffY=pointer.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+diffX,y:this.lastTouch.translation.y+diffY}}}},{key:\"_finishConnect\",value:function _finishConnect(event){var pointer=this.body.functions.getPointer(event.center);var pointerObj=this.selectionHandler._pointerToPositionObject(pointer);var connectFromId=undefined;if(this.temporaryIds.edges[0]!==undefined){connectFromId=this.body.edges[this.temporaryIds.edges[0]].fromId}var overlappingNodeIds=this.selectionHandler._getAllNodesOverlappingWith(pointerObj);var node=undefined;for(var i=overlappingNodeIds.length-1;i>=0;i--){if(this.temporaryIds.nodes.indexOf(overlappingNodeIds[i])===-1){node=this.body.nodes[overlappingNodeIds[i]];break}}this._cleanupTemporaryNodesAndEdges();if(node!==undefined){if(node.isCluster===true){alert(this.options.locales[this.options.locale][\"createEdgeError\"]||this.options.locales[\"en\"][\"createEdgeError\"])}else{if(this.body.nodes[connectFromId]!==undefined&&this.body.nodes[node.id]!==undefined){this._performAddEdge(connectFromId,node.id)}}}this.body.emitter.emit(\"_redraw\")}},{key:\"_dragStartEdge\",value:function _dragStartEdge(event){var pointer=this.lastTouch;this.selectionHandler._generateClickEvent(\"dragStart\",event,pointer,undefined,true)}},{key:\"_performAddNode\",value:function _performAddNode(clickData){var _this4=this;var defaultData={id:util.randomUUID(),x:clickData.pointer.canvas.x,y:clickData.pointer.canvas.y,label:\"new\"};if(typeof this.options.addNode===\"function\"){if(this.options.addNode.length===2){this.options.addNode(defaultData,function(finalizedData){if(finalizedData!==null&&finalizedData!==undefined&&_this4.inMode===\"addNode\"){_this4.body.data.nodes.getDataSet().add(finalizedData);_this4.showManipulatorToolbar()}})}else{this.showManipulatorToolbar();throw new Error(\"The function for add does not support two arguments (data,callback)\")}}else{this.body.data.nodes.getDataSet().add(defaultData);this.showManipulatorToolbar()}}},{key:\"_performAddEdge\",value:function _performAddEdge(sourceNodeId,targetNodeId){var _this5=this;var defaultData={from:sourceNodeId,to:targetNodeId};if(typeof this.options.addEdge===\"function\"){if(this.options.addEdge.length===2){this.options.addEdge(defaultData,function(finalizedData){if(finalizedData!==null&&finalizedData!==undefined&&_this5.inMode===\"addEdge\"){_this5.body.data.edges.getDataSet().add(finalizedData);_this5.selectionHandler.unselectAll();_this5.showManipulatorToolbar()}})}else{throw new Error(\"The function for connect does not support two arguments (data,callback)\")}}else{this.body.data.edges.getDataSet().add(defaultData);this.selectionHandler.unselectAll();this.showManipulatorToolbar()}}},{key:\"_performEditEdge\",value:function _performEditEdge(sourceNodeId,targetNodeId){var _this6=this;var defaultData={id:this.edgeBeingEditedId,from:sourceNodeId,to:targetNodeId,label:this.body.data.edges._data[this.edgeBeingEditedId].label};var eeFunct=this.options.editEdge;if((typeof eeFunct===\"undefined\"?\"undefined\":(0,_typeof3[\"default\"])(eeFunct))===\"object\"){eeFunct=eeFunct.editWithoutDrag}if(typeof eeFunct===\"function\"){if(eeFunct.length===2){eeFunct(defaultData,function(finalizedData){if(finalizedData===null||finalizedData===undefined||_this6.inMode!==\"editEdge\"){_this6.body.edges[defaultData.id].updateEdgeType();_this6.body.emitter.emit(\"_redraw\");_this6.showManipulatorToolbar()}else{_this6.body.data.edges.getDataSet().update(finalizedData);_this6.selectionHandler.unselectAll();_this6.showManipulatorToolbar()}})}else{throw new Error(\"The function for edit does not support two arguments (data, callback)\")}}else{this.body.data.edges.getDataSet().update(defaultData);this.selectionHandler.unselectAll();this.showManipulatorToolbar()}}}]);return ManipulationSystem}();exports[\"default\"]=ManipulationSystem},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _slicedToArray2=__webpack_require__(30);var _slicedToArray3=_interopRequireDefault(_slicedToArray2);var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);var _FloydWarshall=__webpack_require__(239);var _FloydWarshall2=_interopRequireDefault(_FloydWarshall);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var KamadaKawai=function(){function KamadaKawai(body,edgeLength,edgeStrength){(0,_classCallCheck3[\"default\"])(this,KamadaKawai);this.body=body;this.springLength=edgeLength;this.springConstant=edgeStrength;this.distanceSolver=new _FloydWarshall2[\"default\"]}(0,_createClass3[\"default\"])(KamadaKawai,[{key:\"setOptions\",value:function setOptions(options){if(options){if(options.springLength){this.springLength=options.springLength}if(options.springConstant){this.springConstant=options.springConstant}}}},{key:\"solve\",value:function solve(nodesArray,edgesArray){var ignoreClusters=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var D_matrix=this.distanceSolver.getDistances(this.body,nodesArray,edgesArray);this._createL_matrix(D_matrix);this._createK_matrix(D_matrix);this._createE_matrix();var threshold=.01;var innerThreshold=1;var iterations=0;var maxIterations=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3));var maxInnerIterations=5;var maxEnergy=1e9;var highE_nodeId=0,dE_dx=0,dE_dy=0,delta_m=0,subIterations=0;while(maxEnergy>threshold&&iterations<maxIterations){iterations+=1;var _getHighestEnergyNode2=this._getHighestEnergyNode(ignoreClusters);var _getHighestEnergyNode3=(0,_slicedToArray3[\"default\"])(_getHighestEnergyNode2,4);highE_nodeId=_getHighestEnergyNode3[0];maxEnergy=_getHighestEnergyNode3[1];dE_dx=_getHighestEnergyNode3[2];dE_dy=_getHighestEnergyNode3[3];delta_m=maxEnergy;subIterations=0;while(delta_m>innerThreshold&&subIterations<maxInnerIterations){subIterations+=1;this._moveNode(highE_nodeId,dE_dx,dE_dy);var _getEnergy2=this._getEnergy(highE_nodeId);var _getEnergy3=(0,_slicedToArray3[\"default\"])(_getEnergy2,3);delta_m=_getEnergy3[0];dE_dx=_getEnergy3[1];dE_dy=_getEnergy3[2]}}}},{key:\"_getHighestEnergyNode\",value:function _getHighestEnergyNode(ignoreClusters){var nodesArray=this.body.nodeIndices;var nodes=this.body.nodes;var maxEnergy=0;var maxEnergyNodeId=nodesArray[0];var dE_dx_max=0,dE_dy_max=0;for(var nodeIdx=0;nodeIdx<nodesArray.length;nodeIdx++){var m=nodesArray[nodeIdx];if(nodes[m].predefinedPosition===false||nodes[m].isCluster===true&&ignoreClusters===true||nodes[m].options.fixed.x===true||nodes[m].options.fixed.y===true){var _getEnergy4=this._getEnergy(m),_getEnergy5=(0,_slicedToArray3[\"default\"])(_getEnergy4,3),delta_m=_getEnergy5[0],dE_dx=_getEnergy5[1],dE_dy=_getEnergy5[2];if(maxEnergy<delta_m){maxEnergy=delta_m;maxEnergyNodeId=m;dE_dx_max=dE_dx;dE_dy_max=dE_dy}}}return[maxEnergyNodeId,maxEnergy,dE_dx_max,dE_dy_max]}},{key:\"_getEnergy\",value:function _getEnergy(m){var _E_sums$m=(0,_slicedToArray3[\"default\"])(this.E_sums[m],2),dE_dx=_E_sums$m[0],dE_dy=_E_sums$m[1];var delta_m=Math.sqrt(Math.pow(dE_dx,2)+Math.pow(dE_dy,2));return[delta_m,dE_dx,dE_dy]}},{key:\"_moveNode\",value:function _moveNode(m,dE_dx,dE_dy){var nodesArray=this.body.nodeIndices;var nodes=this.body.nodes;var d2E_dx2=0;var d2E_dxdy=0;var d2E_dy2=0;var x_m=nodes[m].x;var y_m=nodes[m].y;var km=this.K_matrix[m];var lm=this.L_matrix[m];for(var iIdx=0;iIdx<nodesArray.length;iIdx++){var i=nodesArray[iIdx];if(i!==m){var x_i=nodes[i].x;var y_i=nodes[i].y;var kmat=km[i];var lmat=lm[i];var denominator=1/Math.pow(Math.pow(x_m-x_i,2)+Math.pow(y_m-y_i,2),1.5);d2E_dx2+=kmat*(1-lmat*Math.pow(y_m-y_i,2)*denominator);d2E_dxdy+=kmat*(lmat*(x_m-x_i)*(y_m-y_i)*denominator);d2E_dy2+=kmat*(1-lmat*Math.pow(x_m-x_i,2)*denominator)}}var A=d2E_dx2,B=d2E_dxdy,C=dE_dx,D=d2E_dy2,E=dE_dy;var dy=(C/A+E/B)/(B/A-D/B);var dx=-(B*dy+C)/A;nodes[m].x+=dx;nodes[m].y+=dy;this._updateE_matrix(m)}},{key:\"_createL_matrix\",value:function _createL_matrix(D_matrix){var nodesArray=this.body.nodeIndices;var edgeLength=this.springLength;this.L_matrix=[];for(var i=0;i<nodesArray.length;i++){this.L_matrix[nodesArray[i]]={};for(var j=0;j<nodesArray.length;j++){this.L_matrix[nodesArray[i]][nodesArray[j]]=edgeLength*D_matrix[nodesArray[i]][nodesArray[j]]}}}},{key:\"_createK_matrix\",value:function _createK_matrix(D_matrix){var nodesArray=this.body.nodeIndices;var edgeStrength=this.springConstant;this.K_matrix=[];for(var i=0;i<nodesArray.length;i++){this.K_matrix[nodesArray[i]]={};for(var j=0;j<nodesArray.length;j++){this.K_matrix[nodesArray[i]][nodesArray[j]]=edgeStrength*Math.pow(D_matrix[nodesArray[i]][nodesArray[j]],-2)}}}},{key:\"_createE_matrix\",value:function _createE_matrix(){var nodesArray=this.body.nodeIndices;var nodes=this.body.nodes;this.E_matrix={};this.E_sums={};for(var mIdx=0;mIdx<nodesArray.length;mIdx++){this.E_matrix[nodesArray[mIdx]]=[]}for(var _mIdx=0;_mIdx<nodesArray.length;_mIdx++){var m=nodesArray[_mIdx];var x_m=nodes[m].x;var y_m=nodes[m].y;var dE_dx=0;var dE_dy=0;for(var iIdx=_mIdx;iIdx<nodesArray.length;iIdx++){var i=nodesArray[iIdx];if(i!==m){var x_i=nodes[i].x;var y_i=nodes[i].y;var denominator=1/Math.sqrt(Math.pow(x_m-x_i,2)+Math.pow(y_m-y_i,2));this.E_matrix[m][iIdx]=[this.K_matrix[m][i]*(x_m-x_i-this.L_matrix[m][i]*(x_m-x_i)*denominator),this.K_matrix[m][i]*(y_m-y_i-this.L_matrix[m][i]*(y_m-y_i)*denominator)];this.E_matrix[i][_mIdx]=this.E_matrix[m][iIdx];dE_dx+=this.E_matrix[m][iIdx][0];dE_dy+=this.E_matrix[m][iIdx][1]}}this.E_sums[m]=[dE_dx,dE_dy]}}},{key:\"_updateE_matrix\",value:function _updateE_matrix(m){var nodesArray=this.body.nodeIndices;var nodes=this.body.nodes;var colm=this.E_matrix[m];var kcolm=this.K_matrix[m];var lcolm=this.L_matrix[m];var x_m=nodes[m].x;var y_m=nodes[m].y;var dE_dx=0;var dE_dy=0;for(var iIdx=0;iIdx<nodesArray.length;iIdx++){var i=nodesArray[iIdx];if(i!==m){var cell=colm[iIdx];var oldDx=cell[0];var oldDy=cell[1];var x_i=nodes[i].x;var y_i=nodes[i].y;var denominator=1/Math.sqrt(Math.pow(x_m-x_i,2)+Math.pow(y_m-y_i,2));var dx=kcolm[i]*(x_m-x_i-lcolm[i]*(x_m-x_i)*denominator);var dy=kcolm[i]*(y_m-y_i-lcolm[i]*(y_m-y_i)*denominator);colm[iIdx]=[dx,dy];dE_dx+=dx;dE_dy+=dy;var sum=this.E_sums[i];sum[0]+=dx-oldDx;sum[1]+=dy-oldDy}}this.E_sums[m]=[dE_dx,dE_dy]}}]);return KamadaKawai}();exports[\"default\"]=KamadaKawai},function(module,exports,__webpack_require__){\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});var _classCallCheck2=__webpack_require__(0);var _classCallCheck3=_interopRequireDefault(_classCallCheck2);var _createClass2=__webpack_require__(1);var _createClass3=_interopRequireDefault(_createClass2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var FloydWarshall=function(){function FloydWarshall(){(0,_classCallCheck3[\"default\"])(this,FloydWarshall)}(0,_createClass3[\"default\"])(FloydWarshall,[{key:\"getDistances\",value:function getDistances(body,nodesArray,edgesArray){var D_matrix={};var edges=body.edges;for(var i=0;i<nodesArray.length;i++){var node=nodesArray[i];var cell={};D_matrix[node]=cell;for(var j=0;j<nodesArray.length;j++){cell[nodesArray[j]]=i==j?0:1e9}}for(var _i=0;_i<edgesArray.length;_i++){var edge=edges[edgesArray[_i]];if(edge.connected===true&&D_matrix[edge.fromId]!==undefined&&D_matrix[edge.toId]!==undefined){D_matrix[edge.fromId][edge.toId]=1;D_matrix[edge.toId][edge.fromId]=1}}var nodeCount=nodesArray.length;for(var k=0;k<nodeCount;k++){var knode=nodesArray[k];var kcolm=D_matrix[knode];for(var _i2=0;_i2<nodeCount-1;_i2++){var inode=nodesArray[_i2];var icolm=D_matrix[inode];for(var _j=_i2+1;_j<nodeCount;_j++){var jnode=nodesArray[_j];var jcolm=D_matrix[jnode];var val=Math.min(icolm[jnode],icolm[knode]+kcolm[jnode]);icolm[jnode]=val;jcolm[inode]=val}}}return D_matrix}}]);return FloydWarshall}();exports[\"default\"]=FloydWarshall}])});\n",
"type": "application/javascript",
"module-type": "library"
}
}
}
{
"tiddlers": {
"$:/plugins/flibbles/relink/js/bulkops.js": {
"text": "/*\\\nmodule-type: startup\n\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\n\nThis is a startup instead of a wikimethods module-type because it's the only\nway to ensure this runs after the old relinkTiddler method is applied.\n\n\\*/\n(function(){\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"redefine-relinkTiddler\";\nexports.synchronous = true;\n// load-modules is when wikimethods are applied in\n// ``$:/core/modules/startup/load-modules.js``\nexports.after = ['load-modules'];\n\nexports.startup = function() {\n\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\n};\n\n/** Walks through all relinkable tiddlers and relinks them.\n * This replaces the existing function in core Tiddlywiki.\n */\nfunction relinkTiddler(fromTitle, toTitle, options) {\n\tvar self = this;\n\tvar failures = this.eachRelinkableTiddler(\n\t\t\tfromTitle,\n\t\t\ttoTitle,\n\t\t\toptions,\n\t\t\tfunction(changes, tiddler) {\n\t\tvar newTiddler = new $tw.Tiddler(tiddler,changes,self.getModificationFields())\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\tself.addTiddler(newTiddler);\n\t});\n\tif (failures.length > 0) {\n\t\tlanguage.reportFailures(failures);\n\t}\n};\n\n})();\n",
"module-type": "startup",
"title": "$:/plugins/flibbles/relink/js/bulkops.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/errors.js": {
"text": "/*\\\nmodule-type: library\n\nThis is the exception that gets thrown when a relink is impossible.\n (Or the hoops we'd have to go through to make it work are more than the user\n would want Relink to do, like create new tiddlers)\n\\*/\n\nfunction RelinkError() {};\nRelinkError.prototype = Object.create(Error);\nexports.RelinkError = RelinkError;\n\nfunction CannotRelinkError() { };\nCannotRelinkError.prototype = new RelinkError();\nexports.CannotRelinkError = CannotRelinkError\n\nfunction CannotFindMacroDefError(macroName) { this.macroName = macroName; };\nCannotFindMacroDefError.prototype = new RelinkError();\nexports.CannotFindMacroDefError = CannotFindMacroDefError;\n//Cannot find definition for ${macroName}. Make sure your macro whitelist is configured properly, and that you're macro is globally defined, or defined in all the places it's used.\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/errors.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/language.js": {
"text": "/*\\\nmodule-type: library\n\nThis handles all logging and alerts Relink emits.\n\n\\*/\n\nexports.logRelink = function(message, args, options) {\n\tif (options.quiet) {\n\t\treturn;\n\t}\n\tvar raw = exports.log[message];\n\tif (raw) {\n\t\t// This is cheap, but whatevs. To do a proper\n\t\t// rendering would require working through a wiki\n\t\t// object. Too heavy weight for log messages.\n\t\tvar msg = raw.replace(/<<([^<>]+)>>/g, function(match, key) {\n\t\t\treturn args[key] || (\"<<\"+key+\">>\");\n\t\t});\n\t\tif (raw.indexOf('%c') >= 0) {\n\t\t\t// Doing a little bit of bold so the user sees\n\t\t\t// where we had to jump through hoops.\n\t\t\tconsole.log(\"%c\" + msg, \"\", \"font-weight: bold;\");\n\t\t} else {\n\t\t\tconsole.log(msg);\n\t\t}\n\t} else {\n\t\tconsole.warn(\"No such log message: \" + message);\n\t}\n};\n\nexports.getString = function(title, options) {\n\ttitle = \"$:/plugins/flibbles/relink/language/\" + title;\n\treturn options.wiki.renderTiddler(\"text/plain\", title,\n\t {variables: options.variables});\n};\n\nexports.failureAlert = \"Relink was unable to update the following tiddlers due to the complexity of the title:\";\n\nexports.reportFailures = function(failureList) {\n\tvar reportList = failureList.map(function(f) {return \"\\n \" + f});\n\tconsole.warn(exports.failureAlert + reportList);\n};\n\nexports.log = {\n\t\"attribute\": \"Renaming '<<from>>' to '<<to>>' in <<<element>> <<attribute>> /> attribute of tiddler '<<tiddler>>'\",\n\t\"attribute-placeholder\": \"Renaming '<<from>>' to '<<to>>' in <<<element>> <<attribute>> /> attribute of tiddler '<<tiddler>>' %cby creating placeholder macros\",\n\t\"field\": \"Renaming '<<from>>' to '<<to>>' in <<field>> of tiddler '<<tiddler>>'\",\n\t\"filteredtransclude\": \"Renaming '<<from>>' to '<<to>>' in filtered transclusion of tiddler '<<tiddler>>'\",\n\t\"filteredtransclude-placeholder\": \"Renaming '<<from>>' to '<<to>>' in filtered transclusion of tiddler '<<tiddler>>' %cby creating placeholder macros\",\n\t\"filteredtransclude-placeholder-widget\": \"Renaming '<<from>>' to '<<to>>' in filtered transclusion of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"filteredtransclude-widget\": \"Renaming '<<from>>' to '<<to>>' in filtered transclusion of tiddler '<<tiddler>>' %cby converting it into a widget\",\n\t\"import\": \"Renaming '<<from>>' to '<<to>>' in \\\\import filter of tiddler '<<tiddler>>'\",\n\t\"import-placeholder\": \"Renaming '<<from>>' to '<<to>>' in \\\\import filter of tiddler '<<tiddler>>' %cby creating placeholder macros\",\n\t\"macrodef\": \"Renaming '<<from>>' to '<<to>>' in <<macro>> definition of tiddler '<<tiddler>>'\",\n\t\"macrodef-placeholder\": \"Renaming '<<from>>' to '<<to>>' in <<macro>> definition of tiddler '<<tiddler>>' %cby creating more placeholder macros\",\n\t\"prettylink\": \"Renaming '<<from>>' to '<<to>>' in prettylink of tiddler '<<tiddler>>'\",\n\t\"prettylink-placeholder\": \"Renaming '<<from>>' to '<<to>>' in prettylink of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"prettylink-widget\": \"Renaming '<<from>>' to '<<to>>' in prettylink of tiddler '<<tiddler>>' %cby converting it into a widget\",\n\t\"transclude\": \"Renaming '<<from>>' to '<<to>>' in transclusion of tiddler '<<tiddler>>'\",\n\t\"transclude-placeholder\": \"Renaming '<<from>>' to '<<to>>' in transclusion of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"transclude-widget\": \"Renaming '<<from>>' to '<<to>>' in transclusion of tiddler '<<tiddler>>' %cby converting it into a widget\",\n\t\"wikilink\": \"Renaming '<<from>>' to '<<to>>' in CamelCase link of tiddler '<<tiddler>>'\",\n\t\"wikilink-placeholder\": \"Renaming '<<from>>' to '<<to>>' in CamelCase link of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"wikilink-pretty\": \"Renaming '<<from>>' to '<<to>>' in CamelCase link of tiddler '<<tiddler>>' %cby converting it into a prettylink\"\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/language.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/settings.js": {
"text": "/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar fieldTypes = Object.create(null);\n\n$tw.modules.forEachModuleOfType(\"relinkfieldtype\", function(title, exports) {\n\tfieldTypes[exports.name] = exports;\n\t// For legacy reasons, some of the field types can go by other names\n\tif (exports.aliases) {\n\t\t$tw.utils.each(exports.aliases, function(alias) {\n\t\t\tfieldTypes[alias] = exports;\n\t\t});\n\t}\n});\n\n/**Returns a specific relinker.\n * This is useful for wikitext rules which need to parse a filter or a list\n */\nexports.getRelinker = function(name) {\n\treturn fieldTypes[name];\n};\n\nexports.getAttributes = function(options) {\n\treturn getSettings(options).attributes;\n};\n\nexports.getFields = function(options) {\n\treturn getSettings(options).fields;\n};\n\nexports.getMacros = function(options) {\n\treturn getSettings(options).macros;\n};\n\nexports.getOperators = function(options) {\n\treturn getSettings(options).operators;\n};\n\n/**Factories define methods that create settings given config tiddlers.\n * for factory method 'example', it will be called once for each:\n * \"$:/config/flibbles/relink/example/...\" tiddler that exists.\n * the argument \"key\" will be set to the contents of \"...\"\n *\n * The reason I build relink settings in this convoluted way is to minimize\n * the number of times tiddlywiki has to run through EVERY tiddler looking\n * for relink config tiddlers.\n *\n * Also, by exporting \"factories\", anyone who extends relink can patch in\n * their own factory methods to create settings that are generated exactly\n * once per rename.\n */\nexports.factories = {\n\tattributes: function(attributes, tiddler, key) {\n\t\tvar relinker = fieldTypes[tiddler.fields.text];\n\t\tif (relinker) {\n\t\t\tvar elem = root(key);\n\t\t\tvar attr = key.substr(elem.length+1);\n\t\t\tattributes[elem] = attributes[elem] || Object.create(null);\n\t\t\tattributes[elem][attr] = relinker;\n\t\t}\n\t},\n\tfields: function(fields, tiddler, name) {\n\t\tvar relinker = fieldTypes[tiddler.fields.text];\n\t\tif (relinker) {\n\t\t\tfields[name] = relinker;\n\t\t}\n\t},\n\tmacros: function(macros, tiddler, key) {\n\t\tvar relinker = fieldTypes[tiddler.fields.text];\n\t\tif (relinker) {\n\t\t\t// We take the last index, not the first, because macro\n\t\t\t// parameters can't have slashes, but macroNames can.\n\t\t\tvar name = dir(key);\n\t\t\tvar arg = key.substr(name.length+1);\n\t\t\tmacros[name] = macros[name] || Object.create(null);\n\t\t\tmacros[name][arg] = relinker;\n\t\t}\n\t},\n\toperators: function(operators, tiddler, name) {\n\t\tvar relinker = fieldTypes[tiddler.fields.text];\n\t\tif (relinker) {\n\t\t\toperators[name] = relinker;\n\t\t}\n\t}\n};\n\n/**We're caching the generated settings inside of options. Not exactly how\n * options was meant to be used, but it's fiiiiine.\n * The wiki global cache isn't a great place, because it'll get cleared many\n * times during a bulk relinking operation, and we can't recalculate this every\n * time without exploding a rename operation's time.\n * options works great. It only lasts just as long as the rename.\n * No longer, no shorter.\n */\nfunction getSettings(options) {\n\tvar secretCache = \"__relink_settings\";\n\tvar cache = options[secretCache];\n\tif (cache === undefined) {\n\t\tcache = options[secretCache] = compileSettings(options.wiki);\n\t}\n\treturn cache;\n};\n\nfunction compileSettings(wiki) {\n\tvar prefix = \"$:/config/flibbles/relink/\";\n\tvar settings = Object.create(null);\n\tfor (var name in exports.factories) {\n\t\tsettings[name] = Object.create(null);\n\t}\n\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\n\t\tif (title.substr(0, prefix.length) === prefix) {\n\t\t\tvar remainder = title.substr(prefix.length);\n\t\t\tvar category = root(remainder);\n\t\t\tvar factory = exports.factories[category];\n\t\t\tif (factory) {\n\t\t\t\tvar name = remainder.substr(category.length+1);\n\t\t\t\tfactory(settings[category], tiddler, name);\n\t\t\t}\n\t\t}\n\t});\n\treturn settings;\n};\n\n/* Returns first bit of a path. path/to/tiddler -> path\n */\nfunction root(string) {\n\tvar index = string.indexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n};\n\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\n */\nfunction dir(string) {\n\tvar index = string.lastIndexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n}\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/settings.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/wikimethods.js": {
"text": "/*\\\nmodule-type: wikimethod\n\nIntroduces some utility methods used by Relink.\n\n\\*/\n\nvar errors = require('$:/plugins/flibbles/relink/js/errors');\n\nvar relinkOperations = Object.create(null);\n$tw.modules.applyMethods('relinkoperator', relinkOperations);\n\n/**Walks through all non-shadow tiddlers and sees which ones need to be relinked\n *\n * For each one, calls method on it with arguments (changes, tiddler, title)\n * Returns a list of tiddlers it would fail to update.\n */\nexports.eachRelinkableTiddler = function(fromTitle, toTitle, options, method) {\n\tvar data = this.getRelinkableTiddlers(fromTitle, toTitle, options);\n\tfor (var title in data.changes) {\n\t\tmethod(data.changes[title], this.getTiddler(title), title);\n\t}\n\treturn data.failures;\n};\n\n/** Returns a pair like this,\n * { changes: {...}, failures: [] }\n */\nexports.getRelinkableTiddlers = function(fromTitle, toTitle, options) {\n\tvar cache = this.getGlobalCache(\"relink-\"+fromTitle, function() {\n\t\treturn Object.create(null);\n\t});\n\tif (!cache[toTitle]) {\n\t\tcache[toTitle] = getFreshRelinkableTiddlers(this, fromTitle, toTitle, options);\n\t}\n\treturn cache[toTitle];\n};\n\nfunction getFreshRelinkableTiddlers(wiki, fromTitle, toTitle, options) {\n\toptions = options || {};\n\toptions.wiki = options.wiki || wiki;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\tvar failures = [];\n\tvar changeList = Object.create(null);\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tvar toUpdate = getRelinkFilter(wiki);\n\t\tvar tiddlerList = toUpdate.call(wiki); // no source or widget\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(tiddler\n\t\t\t&& !tiddler.fields[\"plugin-type\"]\n\t\t\t&& tiddler.fields.type !== \"application/javascript\") {\n\t\t\t\ttry {\n\t\t\t\t\tvar changes = Object.create(null);\n\t\t\t\t\tfor (var operation in relinkOperations) {\n\t\t\t\t\t\trelinkOperations[operation](tiddler, fromTitle, toTitle, changes, options);\n\t\t\t\t\t}\n\t\t\t\t\t// If any fields changed, update tiddler\n\t\t\t\t\tif(Object.keys(changes).length > 0) {\n\t\t\t\t\t\tchangeList[title] = changes;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e instanceof errors.RelinkError) {\n\t\t\t\t\t\tfailures.push(title);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Should we test for instanceof Error instead?: yes\n\t\t\t\t\t\t// Does that work in the testing environment?: no\n\t\t\t\t\t\tif (e.message) {\n\t\t\t\t\t\t\te.message = e.message + \"\\nWhen relinking '\" + title + \"'\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn {changes: changeList, failures: failures};\n};\n\nfunction getRelinkFilter(wiki) {\n\tvar toUpdate = \"$:/config/flibbles/relink/to-update\";\n\treturn wiki.getCacheForTiddler(toUpdate, \"relink-toUpdate\", function() {\n\t\tvar tiddler = wiki.getTiddler(toUpdate);\n\t\tif (tiddler) {\n\t\t\tvar filter = wiki.compileFilter(tiddler.fields.text);\n\t\t\treturn filter;\n\t\t} else {\n\t\t\treturn wiki.allTitles;\n\t\t}\n\t});\n};\n\n/**Returns a list of tiddlers that would be renamed by a relink operations.\n */\nexports.relinkTiddlerDryRun = function(fromTitle, toTitle, options) {\n\tvar results = [];\n\tthis.eachRelinkableTiddler(\n\t\t\tfromTitle,\n\t\t\ttoTitle,\n\t\t\toptions,\n\t\t\tfunction(changes, tiddler, title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\nvar ImportVariablesWidget = require(\"$:/core/modules/widgets/importvariables.js\").importvariables;\n\nexports.relinkGlobalMacros = function() {\n\tif (!this._relinkWidget) {\n\t\tvar importWidget = this.relinkGenerateVariableWidget( \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\");\n\t\tthis.addEventListener(\"change\", function(changes) {\n\t\t\timportWidget.refresh(changes);\n\t\t});\n\t\tthis._relinkWidget = importWidget;\n\t}\n\tvar rtn = this._relinkWidget;\n\twhile (rtn.children.length > 0) {\n\t\trtn = rtn.children[0];\n\t}\n\treturn rtn;\n};\n\nexports.relinkGenerateVariableWidget = function(filter, parent) {\n\tvar treeNode = { attributes: {\n\t\t\"filter\": {\n\t\t\ttype: \"string\",\n\t\t\tvalue: filter\n\t\t}\n\t}};\n\tvar importWidget = new ImportVariablesWidget(treeNode,{parentWidget: parent, wiki: this});\n\timportWidget.computeAttributes();\n\timportWidget.execute();\n\t// These two functions neuter the widget, so it never tries\n\t// to render.\n\timportWidget.findNextSiblingDomNode = function() {};\n\timportWidget.renderChildren(this.parentDomNode);\n\treturn importWidget;\n};\n",
"module-type": "wikimethod",
"title": "$:/plugins/flibbles/relink/js/wikimethods.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/impossible.js": {
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven an input of toTitles, (probably just one), outputs all the tiddlers in\nwhich Relink would fail to update the operand to any of those given titles.\n\n`[[{terrible'}!!\"title\"]relink:impossible[fromTiddler]]`\n\nWould output all the tiddlers where Relink would fail to update `from here` to\n`{terrible'}!!\"title\"`\n\nI know, it's weird. You'd think it would test all incoming inputs instead of\nusing them as to fromTitle, but this is the only way to input both a fromTitle\nand a toTitle.\n\nResults are dominantly appanded if more than one input tiddler is given.\n\\*/\n\nexports.impossible = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\tsource(function(toTiddler, toTitle) {\n\t\t\tvar fails = options.wiki.eachRelinkableTiddler(\n\t\t\t\tfromTitle, toTitle,\n\t\t\t\t$tw.utils.extend({quiet: true}, options),\n\t\t\t\tfunction(tiddler, title) {});\n\t\t\t$tw.utils.pushTop(results, fails);\n\t\t});\n\t}\n\treturn results;\n};\n",
"module-type": "relinkfilteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/impossible.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/references.js": {
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns all non-shadow tiddlers that have any\nsort of updatable reference to it.\n\n\n`relink:references[fromTiddler]]`\n\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\n\nInput is ignored. Maybe it shouldn't do this.\nAlso, maybe it should properly recon, instead of fake replacing the title with\n`__relink_dummy__`\n\\*/\n\nexports.references = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\toptions.wiki.eachRelinkableTiddler(\n\t\t\tfromTitle, \"__relink_dummy__\",\n\t\t\t$tw.utils.extend({quiet: true}, options),\n\t\t\tfunction(changes, tiddler, title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t}\n\treturn results;\n};\n",
"module-type": "relinkfilteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/references.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/relink.js": {
"text": "/*\\\nmodule-type: filteroperator\n\nThis filter acts as a namespace for several small, simple filters, such as\n\n`[relink:impossible[]]`\n\n\\*/\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nvar relinkFilterOperators;\n\nfunction getRelinkFilterOperators() {\n\tif(!relinkFilterOperators) {\n\t\trelinkFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"relinkfilteroperator\",\n\t\t relinkFilterOperators);\n\t}\n\treturn relinkFilterOperators;\n}\n\nexports.relink = function(source,operator,options) {\n\tvar suffixPair = parseSuffix(operator.suffix);\n\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\n\tif (relinkFilterOperator) {\n\t\tvar newOperator = $tw.utils.extend({}, operator);\n\t\tnewOperator.suffix = suffixPair[1];\n\t\treturn relinkFilterOperator(source, newOperator, options);\n\t} else {\n\t\treturn [language.getString(\"Error/RelinkFilterOperator\", options)];\n\t}\n};\n\nfunction parseSuffix(suffix) {\n\tvar index = suffix? suffix.indexOf(\":\"): -1;\n\tif (index >= 0) {\n\t\treturn [suffix.substr(0, index), suffix.substr(index+1)];\n\t} else {\n\t\treturn [suffix];\n\t}\n}\n",
"module-type": "filteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/relink.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: relinkfilteroperator\n\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\n\nWhat does this have to do with relink? Nothing. I need this so I can render\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\nlimited to Tiddlywiki v5.1.20 or later.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitafter = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar index = title.lastIndexOf(operator.operand);\n\t\tif(index < 0) {\n\t\t\t$tw.utils.pushTop(results,title);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,title.substr(index+1));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n\n",
"title": "$:/plugins/flibbles/relink/js/filteroperators/splitafter.js",
"type": "application/javascript",
"module-type": "relinkfilteroperator"
},
"$:/plugins/flibbles/relink/js/fieldtypes/filter.js": {
"text": "/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\n/**Returns undefined if no change was made.\n */\n\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"filter\";\n\nexports.relink = function(filter, fromTitle, toTitle, options) {\n\tif (!filter || filter.indexOf(fromTitle) < 0) {\n\t\treturn undefined;\n\t}\n\tvar relinker = new Rebuilder(filter);\n\tvar whitelist = settings.getOperators(options);\n\tvar p = 0, // Current position in the filter string\n\t\tmatch, noPrecedingWordBarrier,\n\t\twordBarrierRequired=false;\n\tvar whitespaceRegExp = /\\s+/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filter.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filter);\n\t\tnoPrecedingWordBarrier = false;\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t} else if (p != 0) {\n\t\t\tif (wordBarrierRequired) {\n\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\twordBarrierRequired = false;\n\t\t\t} else {\n\t\t\t\tnoPrecedingWordBarrier = true;\n\t\t\t}\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filter.length) {\n\t\t\tvar val;\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filter);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\t// It's a bad filter\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif(match[1]) { // prefix\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\t// We check if this is a standalone title,\n\t\t\t\t// like `[[MyTitle]]`. We treat those like\n\t\t\t\t// `\"MyTitle\"` or `MyTitle`. Not like a run.\n\t\t\t\tvar standaloneTitle = /\\[\\[([^\\]]+)\\]\\]/g;\n\t\t\t\tstandaloneTitle.lastIndex = p;\n\t\t\t\tvar alone = standaloneTitle.exec(filter);\n\t\t\t\tif (!alone || alone.index != p) {\n\t\t\t\t\t// It's a legit run\n\t\t\t\t\tp =parseFilterOperation(relinker,fromTitle,toTitle,filter,p,whitelist,options);\n\t\t\t\t\tif (p === undefined) {\n\t\t\t\t\t\t// The filter is malformed\n\t\t\t\t\t\t// We do nothing.\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbracketTitle = alone[1];\n\t\t\t\toperandRegExp.lastIndex = standaloneTitle.lastIndex;\n\t\t\t\tval = alone[1];\n\t\t\t} else {\n\t\t\t\t// standalone Double quoted string, single\n\t\t\t\t// quoted string, or noquote ahead.\n\t\t\t\tval = match[3] || match[4] || match[5];\n\t\t\t}\n\t\t\t// From here on, we're dealing with a standalone title\n\t\t\t// expression. like `\"MyTitle\"` or `[[MyTitle]]`\n\t\t\t// We're much more flexible about relinking these.\n\t\t\tvar preference = undefined;\n\t\t\tif (match[3]) {\n\t\t\t\tpreference = '\"';\n\t\t\t} else if (match[4]) {\n\t\t\t\tpreference = \"'\";\n\t\t\t} else if (match[5]) {\n\t\t\t\tpreference = '';\n\t\t\t}\n\t\t\tif (val === fromTitle) {\n\t\t\t\tvar newVal = wrapTitle(toTitle, preference);\n\t\t\t\tif (newVal === undefined) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tthrow new CannotRelinkError();\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = \"[<\"+options.placeholder.getPlaceholderFor(toTitle)+\">]\";\n\t\t\t\t\toptions.usedPlaceholder = true;\n\t\t\t\t}\n\t\t\t\tif (newVal[0] != '[') {\n\t\t\t\t\t// not bracket enclosed\n\t\t\t\t\t// this requires whitespace\n\t\t\t\t\t// arnound it\n\t\t\t\t\tif (noPrecedingWordBarrier && !match[1]) {\n\t\t\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\t\t}\n\t\t\t\t\twordBarrierRequired = true;\n\t\t\t\t}\n\t\t\t\trelinker.add(newVal,p,operandRegExp.lastIndex);\n\t\t\t}\n\t\t\tp = operandRegExp.lastIndex;\n\t\t}\n\t}\n\treturn relinker.results();\n};\n\nfunction wrapTitle(value, preference) {\n\tvar choices = {\n\t\t\"\": function(v) {return !/[\\s\\[\\]]/.test(v); },\n\t\t\"[\": canBePrettyOperand,\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; }\n\t};\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"[\": function(v) {return \"[[\"+v+\"]]\"; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; }\n\t};\n\tif (choices[preference]) {\n\t\tif (choices[preference](value)) {\n\t\t\treturn wrappers[preference](value);\n\t\t}\n\t}\n\tfor (var quote in choices) {\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrappers[quote](value);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n}\n\nfunction parseFilterOperation(relinker, fromTitle, toTitle, filterString, p, whitelist, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\tp++;\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing [ in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\tvar ref = $tw.utils.parseTextReference(operand);\n\t\t\t\tif (ref.title === fromTitle) {\n\t\t\t\t\tif(!canBePrettyIndirect(toTitle)) {\n\t\t\t\t\t\tthrow new CannotRelinkError();\n\t\t\t\t\t}\n\t\t\t\t\tref.title = toTitle;\n\t\t\t\t\tvar newRef = refHandler.toString(ref);\n\t\t\t\t\t// We don't check the whitelist.\n\t\t\t\t\t// All indirect operands convert.\n\t\t\t\t\trelinker.add(newRef,p,nextBracketPos);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(whitelist, operator);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar result = handler.relink(operand, fromTitle, toTitle, options);\n\t\t\t\tif (!result) {\n\t\t\t\t\t// The fromTitle wasn't in the operand.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar wrapped;\n\t\t\t\tif (!canBePrettyOperand(result)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tthrow new CannotRelinkError();\n\t\t\t\t\t}\n\t\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(result);\n\t\t\t\t\twrapped = \"<\"+ph+\">\";\n\t\t\t\t\toptions.usedPlaceholder = true;\n\t\t\t\t} else {\n\t\t\t\t\twrapped = \"[\"+result+\"]\";\n\t\t\t\t}\n\t\t\t\trelinker.add(wrapped, p-1, nextBracketPos+1);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\t// return undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n// Returns the relinker needed for a given operator, or returns undefined.\nfunction fieldType(whitelist, operator) {\n\treturn whitelist[operator.operator] ||\n\t (operator.suffix &&\n\t whitelist[operator.operator + \":\" + operator.suffix]);\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\nfunction canBePrettyIndirect(value) {\n\treturn value.indexOf('}') < 0;\n};\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/filter.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/fieldtypes/list.js": {
"text": "/*\\\nThis manages replacing titles that occur within stringLists, like,\n\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\n\\*/\n\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\n\nexports.name = \"list\";\n\n/**Returns undefined if no change was made.\n * Parameter: value can literally be a list. This can happen for builtin\n * types 'list' and 'tag'. In those cases, we also return list.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar isModified = false,\n\t\tactualList = false,\n\t\tlist;\n\tif (typeof value !== \"string\") {\n\t\t// Not a string. Must be a list.\n\t\t// clone it, since we may make changes to this possibly\n\t\t// frozen list.\n\t\tlist = (value || []).slice(0);\n\t\tactualList = true;\n\t} else {\n\t\tlist = $tw.utils.parseStringArray(value || \"\");\n\t}\n\t$tw.utils.each(list,function (title,index) {\n\t\tif(title === fromTitle) {\n\t\t\tlist[index] = toTitle;\n\t\t\tisModified = true;\n\t\t}\n\t});\n\tif (isModified) {\n\t\t// It doesn't parse correctly alone, it won't\n\t\t// parse correctly in any list.\n\t\tif (!canBeListItem(toTitle)) {\n\t\t\tthrow new CannotRelinkError();\n\t\t}\n\t\tif (actualList) {\n\t\t\treturn list;\n\t\t} else {\n\t\t\treturn $tw.utils.stringifyList(list);\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction canBeListItem(value) {\n\tvar regexp = /\\]\\][^\\S\\xA0]/m;\n\treturn !regexp.test(value);\n};\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/list.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/fieldtypes/reference.js": {
"text": "/*\\\nThis manages replacing titles that occur inside text references,\n\ntiddlerTitle\ntiddlerTitle!!field\n!!field\ntiddlerTitle##propertyIndex\n\\*/\n\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\n\nexports.name = \"reference\";\n\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar reference = $tw.utils.parseTextReference(value);\n\tif (reference.title !== fromTitle) {\n\t\treturn undefined;\n\t}\n\treference.title = toTitle;\n\treturn exports.toString(reference);\n};\n\nexports.toString = function(textReference) {\n\tvar title = textReference.title || '';\n\tif (!exports.canBePretty(title)) {\n\t\tthrow new CannotRelinkError();\n\t}\n\tif (textReference.field) {\n\t\treturn title + \"!!\" + textReference.field;\n\t} else if (textReference.index) {\n\t\treturn title + \"##\" + textReference.index;\n\t}\n\treturn title;\n};\n\nexports.canBePretty = function(title) {\n\treturn title.indexOf(\"!!\") < 0 && title.indexOf(\"##\") < 0;\n};\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/reference.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/fieldtypes/title.js": {
"text": "/*\\\nThis specifies logic for replacing a single-tiddler field. This is the\nsimplest kind of field type. One title swaps out for the other.\n\\*/\n\n// NOTE TO MODDERS: If you're making your own field types, the name must be\n// alpha characters only.\nexports.name = 'title';\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tif (value === fromTitle) {\n\t\treturn toTitle;\n\t}\n\treturn undefined;\n};\n\n// This is legacy support for when 'title' was known as 'field'\nexports.aliases = ['field', 'yes'];\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/title.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/fields.js": {
"text": "/*\\\n\nHandles all fields specified in the plugin configuration. Currently, this\nonly supports single-value fields.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\n\nexports['fields'] = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = settings.getFields(options);\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tvar value = handler.relink(input, fromTitle, toTitle, options);\n\t\tif (value !== undefined) {\n\t\t\tlog(\"field\", {\n\t\t\t\tfrom: fromTitle,\n\t\t\t\tto: toTitle,\n\t\t\t\ttiddler: tiddler.fields.title,\n\t\t\t\tfield: descriptor(field)\n\t\t\t}, options);\n\t\t\tchanges[field] = value;\n\t\t}\n\t});\n};\n\nfunction descriptor(field) {\n\tif (field === \"tags\") {\n\t\treturn \"tags\";\n\t} else {\n\t\treturn field + \" field\" ;\n\t}\n};\n",
"module-type": "relinkoperator",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/fields.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text.js": {
"text": "/*\\\n\nDepending on the tiddler type, this will apply textOperators which may\nrelink titles within the body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar defaultOperator = \"text/vnd.tiddlywiki\";\n\nvar textOperators = Object.create(null);\n$tw.modules.applyMethods('relinktextoperator', textOperators);\n\nexports['text'] = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar text = tiddler.fields.text,\n\t\tbuilder = [],\n\t\tbuildIndex = 0;\n\tif (text && text.indexOf(fromTitle) >= 0) {\n\t\tvar type = tiddler.fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\ttextOperators[type].call(this, tiddler, fromTitle, toTitle, changes, options);\n\t\t}\n\t}\n};\n",
"module-type": "relinkoperator",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js": {
"text": "/*\\\n\nChecks for fromTitle in a tiddler's text. If found, sees if it's relevant,\nand tries to swap it out if it is.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar type = 'text/vnd.tiddlywiki';\nvar WikiParser = require(\"$:/core/modules/parsers/wikiparser/wikiparser.js\")[type];\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\");\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar rules = Object.create(null);\n\n$tw.modules.forEachModuleOfType(\"relinkwikitextrule\", function(title, exports) {\n\tvar names = exports.name;\n\tif (typeof names === \"string\") {\n\t\tnames = [names];\n\t}\n\tfor (var i = 0; i < names.length; i++) {\n\t\trules[names[i]] = exports;\n\t}\n});\n\nfunction WikiRelinker(text, title, toTitle, options) {\n\tWikiParser.call(this, null, text, options);\n\tif (!this.relinkMethodsInjected) {\n\t\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\n\t\t\tfor (var name in classList) {\n\t\t\t\tif (rules[name]) {\n\t\t\t\t\tdelete rules[name].name;\n\t\t\t\t\t$tw.utils.extend(classList[name].prototype, rules[name]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tWikiRelinker.prototype.relinkMethodsInjected = true;\n\t}\n\tthis.title = title;\n\tthis.toTitle = toTitle;\n\tthis.inlineRules = this.blockRules.concat(this.pragmaRules, this.inlineRules);\n\t// We work through relinkRules so we can change it later.\n\t// relinkRules is inlineRules so it gets touched up by amendRules().\n\tthis.relinkRules = this.inlineRules;\n\tthis.placeholders = Object.create(null);\n\tthis.reverseMap = Object.create(null);\n\tthis.knownMacros = Object.create(null);\n\tthis.widget = undefined;\n};\n\nWikiRelinker.prototype = Object.create(WikiParser.prototype);\nWikiRelinker.prototype.parsePragmas = function() {return []; };\nWikiRelinker.prototype.parseInlineRun = function() {};\nWikiRelinker.prototype.parseBlocks = function() {};\n\nWikiRelinker.prototype.getPlaceholderFor = function(value, category) {\n\tvar placeholder = this.reverseMap[value];\n\tif (placeholder) {\n\t\treturn placeholder;\n\t}\n\tvar number = 0;\n\tvar prefix = \"relink-\"\n\tif (category && category !== \"title\") {\n\t\t// I don't like \"relink-title-1\". \"relink-1\" should be for\n\t\t// titles. lists, and filters can have descriptors though.\n\t\tprefix += category + \"-\";\n\t}\n\tdo {\n\t\tnumber += 1;\n\t\tplaceholder = prefix + number;\n\t} while (this.knownMacros[placeholder]);\n\tthis.placeholders[placeholder] = value;\n\tthis.reverseMap[value] = placeholder;\n\tthis.reserve(placeholder);\n\treturn placeholder;\n};\n\nWikiRelinker.prototype.addWidget = function(widget) {\n\tthis.widget = widget;\n\twhile (this.widget.children.length > 0) {\n\t\tthis.widget = this.widget.children[0];\n\t}\n};\n\nWikiRelinker.prototype.getVariableWidget = function() {\n\tif (!this.widget) {\n\t\tthis.widget = this.wiki.relinkGlobalMacros();\n\t\tvar parentWidget = new Widget({}, {parentWidget: this.widget});\n\t\tparentWidget.setVariable(\"currentTiddler\", this.title);\n\t\tvar widget = new Widget({}, {parentWidget: parentWidget});\n\t\tthis.addWidget(widget);\n\t}\n\treturn this.widget;\n};\n\nWikiRelinker.prototype.reserve = function(macro) {\n\tthis.knownMacros[macro] = true;\n};\n\nWikiRelinker.prototype.getPreamble = function() {\n\tvar results = [];\n\tfor (var name in this.placeholders) {\n\t\tvar val = this.placeholders[name];\n\t\tresults.push(\"\\\\define \"+name+\"() \"+val+\"\\n\");\n\t}\n\tif (results.length > 0) {\n\t\treturn results.join('');\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\nexports[type] = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar text = tiddler.fields.text,\n\t\tbuilder = new Rebuilder(text),\n\t\tparser = new WikiRelinker(text, tiddler.fields.title, toTitle, options),\n\t\tmatchingRule;\n\twhile (matchingRule = parser.findNextMatch(parser.relinkRules, parser.pos)) {\n\t\tif (matchingRule.rule.relink) {\n\t\t\tvar newSegment = matchingRule.rule.relink(tiddler, text, fromTitle, toTitle, options);\n\t\t\tif (newSegment !== undefined) {\n\t\t\t\tbuilder.add(newSegment, matchingRule.matchIndex, parser.pos);\n\t\t\t}\n\t\t} else {\n\t\t\tif (matchingRule.rule.matchRegExp !== undefined) {\n\t\t\t\tparser.pos = matchingRule.rule.matchRegExp.lastIndex;\n\t\t\t} else {\n\t\t\t\t// We can't easily determine the end of this\n\t\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t\t// the results.\n\t\t\t\tmatchingRule.rule.parse();\n\t\t\t}\n\t\t}\n\t}\n\tif (builder.changed()) {\n\t\tbuilder.prepend(parser.getPreamble());\n\t\tchanges.text = builder.results();\n\t}\n};\n",
"module-type": "relinktextoperator",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles comment blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"<!-- [[Renamed Title]] -->\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"commentinline\", \"commentblock\"];\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\treturn undefined;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of filtered transclusions in wiki text like,\n\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n\nThis renames both the list and the template field.\n\n\\*/\n\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/settings\").getRelinker('filter');\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar utils = require(\"./utils.js\");\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar m = this.match;\n\t\tfilter = m[1],\n\t\ttooltip = m[2],\n\t\ttemplate = m[3],\n\t\tstyle = m[4],\n\t\tclasses = m[5],\n\t\tparser = this.parser,\n\t\tlogArguments = {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title\n\t\t};\n\tparser.pos = this.matchRegExp.lastIndex;\n\tvar modified = false;\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t// preserves user-inputted whitespace\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser}, options);\n\tvar relinkedFilter = filterHandler.relink(filter, fromTitle, toTitle, extendedOptions);\n\tvar message = \"filteredtransclude\";\n\tif (extendedOptions.usedPlaceholder) {\n\t\tmessage = \"filteredtransclude-placeholder\";\n\t}\n\tif (relinkedFilter !== undefined) {\n\t\tfilter = relinkedFilter;\n\t\tmodified = true;\n\t}\n\tif (!modified) {\n\t\treturn undefined;\n\t}\n\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\n\t\tlog(message, logArguments, options);\n\t\treturn prettyList(filter, tooltip, template, style, classes);\n\t}\n\tmessage = message + \"-widget\";\n\tif (classes !== undefined) {\n\t\tclasses = classes.split('.').join(' ');\n\t}\n\tfunction wrap(name, value, treatAsTitle) {\n\t\tif (!value) {\n\t\t\treturn '';\n\t\t}\n\t\tvar wrappedValue = utils.wrapAttributeValue(value);\n\t\tif (wrappedValue === undefined) {\n\t\t\tvar category = treatAsTitle ? undefined : name;\n\t\t\twrappedValue = \"<<\"+parser.getPlaceholderFor(value,category)+\">>\";\n\t\t\tmessage = \"filteredtransclude-placeholder-widget\";\n\t\t}\n\t\treturn \" \"+name+\"=\"+wrappedValue;\n\t};\n\tvar widget = [\n\t\t\"<$list\",\n\t\twrap(\"filter\", filter),\n\t\twrap(\"tooltip\", tooltip),\n\t\twrap(\"template\", template, true),\n\t\twrap(\"style\", style),\n\t\twrap(\"itemClass\", classes),\n\t\t\"/>\"\n\t].join('');\n\tlog(message, logArguments, options);\n\treturn widget;\n};\n\nfunction canBePretty(filter) {\n\treturn filter.indexOf('|') < 0 && filter.indexOf('}}') < 0;\n};\n\nfunction canBePrettyTemplate(template) {\n\treturn !template || (\n\t\ttemplate.indexOf('|') < 0\n\t\t&& template.indexOf('{') < 0\n\t\t&& template.indexOf('}') < 0);\n};\n\nfunction prettyList(filter, tooltip, template, style, classes) {\n\tif (tooltip === undefined) {\n\t\ttooltip = '';\n\t} else {\n\t\ttooltip = \"|\" + tooltip;\n\t}\n\tif (template === undefined) {\n\t\ttemplate = '';\n\t} else {\n\t\ttemplate = \"||\" + template;\n\t}\n\tif (classes === undefined) {\n\t\tclasses = '';\n\t} else {\n\t\tclasses = \".\" + classes;\n\t}\n\tstyle = style || '';\n\treturn \"{{{\"+filter+tooltip+template+\"}}\"+style+\"}\"+classes;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in attributes of widgets and html elements\nThis is configurable to select exactly which attributes of which elements\nshould be changed.\n\n<$link to=\"TiddlerTitle\" />\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar html = require(\"$:/core/modules/parsers/wikiparser/rules/html.js\");\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/settings\").getRelinker('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\n\nexports.name = \"html\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar managedElement = settings.getAttributes(options)[this.nextTag.tag],\n\t\tbuilder = new Rebuilder(text, this.nextTag.start);\n\tvar importFilterAttr;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldValue, quote, logMessage = \"attribute\";\n\t\tif (attr.type === \"string\") {\n\t\t\tvar handler = getAttributeHandler(this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser}, options);\n\t\t\toldValue = attr.value;\n\t\t\tvar value = handler.relink(attr.value, fromTitle, toTitle, extendedOptions);\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (extendedOptions.usedPlaceholder) {\n\t\t\t\tlogMessage = \"attribute-placeholder\";\n\t\t\t}\n\t\t\tquote = utils.determineQuote(text, attr);\n\t\t\tattr.quotedValue = utils.wrapAttributeValue(value,quote);\n\t\t\tif (attr.quotedValue === undefined) {\n\t\t\t\t// The value was unquotable. We need to make\n\t\t\t\t// a macro in order to replace it.\n\t\t\t\tvalue = this.parser.getPlaceholderFor(value,handler.name)\n\t\t\t\tattr.type = \"macro\";\n\t\t\t\tattr.quotedValue = \"<<\"+value+\">>\";\n\t\t\t\tlogMessage = \"attribute-placeholder\";\n\t\t\t}\n\t\t\tattr.value = value;\n\t\t} else if (attr.type === \"indirect\") {\n\t\t\tif (toTitle.indexOf(\"}\") >= 0) {\n\t\t\t\t// Impossible replacement\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\toldValue = attr.textReference;\n\t\t\tquote = \"{{\";\n\t\t\tvar ref = $tw.utils.parseTextReference(attr.textReference);\n\t\t\tif (ref.title !== fromTitle) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tref.title = toTitle;\n\t\t\tattr.textReference = refHandler.toString(ref);\n\t\t\tattr.quotedValue = \"{{\"+attr.textReference+\"}}\";\n\t\t} else if (attr.type === \"filtered\") {\n\t\t\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser}, options);\n\t\t\toldValue = attr.filter\n\t\t\tvar filter = filterHandler.relink(attr.filter, fromTitle, toTitle, extendedOptions);\n\t\t\tif (filter === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!canBeFilterValue(filter)) {\n\t\t\t\t// Although I think we can actually do this one.\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\tattr.filter = filter;\n\t\t\tattr.quotedValue = \"{{{\" + filter + \"}}}\";\n\t\t\tquote = \"{{{\";\n\t\t} else if (attr.type === \"macro\") {\n\t\t\tvar macro = attr.value;\n\t\t\toldValue = attr.value;\n\t\t\tvar newMacro = macrocall.relinkMacroInvocation(macro, text, this.parser, fromTitle, toTitle, options);\n\t\t\tif (newMacro === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (macrocall.mustBeAWidget(newMacro)) {\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\tattr.value = newMacro;\n\t\t\t// TODO: Let's not hack like this. attr.value is\n\t\t\t// expected to be a string of the unquoted value below.\n\t\t\t// Make this better when I can.\n\t\t\toldValue.length = (macro.end-macro.start)-4;\n\t\t\tquote = \"<<\";\n\t\t\tattr.quotedValue = macrocall.macroToString(newMacro, text, this.parser, options);\n\t\t} else {\n\t\t\tcontinue;\n\t\t}\n\t\t// account for the quote if it's there.\n\t\t// We count backwards from the end to preserve whitespace\n\t\tvar valueStart = attr.end\n\t\t - (quote.length*2)\n\t\t - oldValue.length;\n\t\tbuilder.add(attr.quotedValue, valueStart, attr.end);\n\t\tvar logArguments = {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title,\n\t\t\telement: this.nextTag.tag,\n\t\t\tattribute: attributeName\n\t\t};\n\t\tlog(logMessage, logArguments, options);\n\t}\n\tif (importFilterAttr) {\n\t\tvar importFilter = computeAttribute(importFilterAttr, this.parser, options);\n\t\tvar parentWidget = this.parser.getVariableWidget();\n\t\tvar varHolder = options.wiki.relinkGenerateVariableWidget(importFilter, parentWidget);\n\t\tthis.parser.addWidget(varHolder);\n\t}\n\tthis.parser.pos = this.nextTag.end;\n\treturn builder.results(this.nextTag.end);\n};\n\n/** Returns the field handler for the given attribute of the given widget.\n * If this returns undefined, it means we don't handle it. So skip.\n */\nfunction getAttributeHandler(widget, attributeName, options) {\n\tif (widget.tag === \"$macrocall\") {\n\t\tvar nameAttr = widget.attributes[\"$name\"];\n\t\tvar macro = settings.getMacros(options)[nameAttr.value];\n\t\tif (macro) {\n\t\t\treturn macro[attributeName];\n\t\t}\n\t} else {\n\t\tvar element = settings.getAttributes(options)[widget.tag];\n\t\tif (element) {\n\t\t\treturn element[attributeName];\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction computeAttribute(attribute, parser, options) {\n\tvar value;\n\tif(attribute.type === \"filtered\") {\n\t\tvar parentWidget = parser.getVariableWidget();\n\t\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \"\";\n\t} else if(attribute.type === \"indirect\") {\n\t\tvar parentWidget = parser.getVariableWidget();\n\t\tvalue = options.wiki.getTextReference(attribute.textReference,\"\",parentWidget.variables.currentTiddler.value);\n\t} else if(attribute.type === \"macro\") {\n\t\tvar parentWidget = parser.getVariableWidget();\n\t\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\n\t} else { // String attribute\n\t\tvalue = attribute.value;\n\t}\n\treturn value;\n};\n\nfunction canBeFilterValue(value) {\n\treturn value.indexOf(\"}}}\") < 0 && value.substr(value.length-2) !== '}}';\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles import pragmas\n\n\\import [tag[MyTiddler]]\n\\*/\n\nvar settings = require(\"$:/plugins/flibbles/relink/js/settings.js\");\nvar log = require(\"$:/plugins/flibbles/relink/js/language.js\").logRelink;\nvar filterRelinker = settings.getRelinker('filter');\n\nexports.name = \"import\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\t// In this one case, I'll let the parser parse out the filter and move\n\t// the ptr.\n\tvar start = this.matchRegExp.lastIndex;\n\tvar parseTree = this.parse();\n\tvar filter = parseTree[0].attributes.filter.value;\n\n\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser},options);\n\tvar value = filterRelinker.relink(filter, fromTitle, toTitle, extendedOptions);\n\tvar rtn = undefined;\n\tif (value !== undefined) {\n\t\tvar message = extendedOptions.usedPlaceholder ? \"import-placeholder\" : \"import\";\n\t\tlog(message, {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title\n\t\t}, options);\n\t\tvar newline = text.substring(start+filter.length, this.parser.pos);\n\t\tfilter = value;\n\t\trtn = \"\\\\import \" + value + newline;\n\t}\n\n\t// Before we go, we need to actually import the variables\n\t// it's calling for.\n\tvar parentWidget = this.parser.getVariableWidget();\n\tvar variableHolder = options.wiki.relinkGenerateVariableWidget(filter, parentWidget);\n\tthis.parser.addWidget(variableHolder);\n\n\treturn rtn;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles macro calls.\n\n<<myMacro '[[MyFilter]]' 'myTitle'>>\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar CannotFindMacroDefError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotFindMacroDefError;\n\nexports.name = [\"macrocallinline\", \"macrocallblock\"];\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2],\n\t\tmacroText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar start = this.matchRegExp.lastIndex - this.match[0].length;\n\tvar managedMacro = settings.getMacros(options)[macroName];\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar offset = macroName.length+2;\n\toffset = $tw.utils.skipWhiteSpace(macroText, offset);\n\tvar params = parseParams(paramString, offset+start);\n\tvar macroInfo = {\n\t\tname: macroName,\n\t\tstart: start,\n\t\tend: this.matchRegExp.lastIndex,\n\t\tparams: params\n\t};\n\tvar results = this.relinkMacroInvocation(macroInfo, text, this.parser, fromTitle, toTitle, options);\n\tif (results) {\n\t\treturn this.macroToString(results, text, this.parser, options);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\n/**Processes the given macro,\n * macro: {name:, params:, start:, end:}\n * each parameters: {name:, end:, value:}\n * Macro invocation returned is the same, but relinked, and may have new keys:\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\n */\nexports.relinkMacroInvocation = function(macro, text, parser, fromTitle, toTitle, options) {\n\tvar managedMacro = settings.getMacros(options)[macro.name];\n\tvar modified = false;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tif (macro.params.every(function(p) {\n\t\treturn p.value.indexOf(fromTitle) < 0;\n\t})) {\n\t\t// We cut early if the fromTitle doesn't even appear\n\t\t// anywhere in the title. This is to avoid any headache\n\t\t// about finding macro definitions (and any resulting\n\t\t// exceptions if there isn't even a title to replace.\n\t\treturn undefined;\n\t}\n\tvar outMacro = $tw.utils.extend({}, macro);\n\toutMacro.params = macro.params.slice();\n\tfor (var managedArg in managedMacro) {\n\t\tvar index = getParamIndexWithinMacrocall(macro.name, managedArg, macro.params, parser, options);\n\t\tif (index < 0) {\n\t\t\t// this arg either was not supplied, or we can't find\n\t\t\t// the definition, so we can't tie it to an anonymous\n\t\t\t// argument. Either way, move on to the next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar extendedOptions = $tw.utils.extend({placeholder: parser}, options);\n\t\tvar value = handler.relink(param.value, fromTitle, toTitle, extendedOptions);\n\t\tif (value === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar quote = utils.determineQuote(text, param);\n\t\tvar quoted = utils.wrapAttributeValue(value, quote, ['', \"'\", '\"', '[[', '\"\"\"']);\n\t\tvar newParam = $tw.utils.extend({}, param);\n\t\tif (quoted === undefined) {\n\t\t\tvar ph = parser.getPlaceholderFor(value,handler.name);\n\t\t\tnewParam.newValue = \"<<\"+ph+\">>\";\n\t\t\tnewParam.type = \"macro\";\n\t\t} else {\n\t\t\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\n\t\t\tnewParam.value = value;\n\t\t\tnewParam.newValue = quoted;\n\t\t}\n\t\toutMacro.params[index] = newParam;\n\t\tmodified = true;\n\t}\n\tif (modified) {\n\t\treturn outMacro;\n\t}\n\treturn undefined;\n};\n\nexports.mustBeAWidget = function(macro) {\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tif (macro.params[i].type === \"macro\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false\n};\n\n/**Given a macro object ({name:, params:, start: end:}), and the text where\n * it was parsed from, returns a new macro that maintains any syntactic\n * structuring.\n */\nexports.macroToString = function(macro, text, parser, options) {\n\tif (exports.mustBeAWidget(macro)) {\n\t\tvar names = getParamNames(macro.name, macro.params, parser, options);\n\t\tvar attrs = [];\n\t\tfor (var i = 0; i < macro.params.length; i++) {\n\t\t\tvar p = macro.params[i];\n\t\t\tvar val;\n\t\t\tif (p.newValue) {\n\t\t\t\tval = p.newValue;\n\t\t\t} else {\n\t\t\t\tval = utils.wrapAttributeValue(p.value);\n\t\t\t}\n\t\t\tattrs.push(\" \"+names[i]+\"=\"+val);\n\t\t}\n\t\treturn \"<$macrocall $name=\"+utils.wrapAttributeValue(macro.name)+attrs.join('')+\"/>\";\n\t} else {\n\t\tvar builder = new Rebuilder(text, macro.start);\n\t\tfor (var i = 0; i < macro.params.length; i++) {\n\t\t\tvar param = macro.params[i];\n\t\t\tif (param.newValue) {\n\t\t\t\tbuilder.add(param.newValue, param.start, param.end);\n\t\t\t}\n\t\t}\n\t\treturn builder.results(macro.end);\n\t}\n};\n\nfunction getParamIndexWithinMacrocall(macroName, param, params, parser, options) {\n\tvar index, i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tif (params[i].name === param) {\n\t\t\treturn i;\n\t\t}\n\t}\n\tvar expectedIndex = indexOfParameterDef(macroName, param, parser, options);\n\t// We've got to skip over all the named parameter instances.\n\tif (expectedIndex >= 0) {\n\t\tvar anonI = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (params[i].name === undefined) {\n\t\t\t\tif (anonI === expectedIndex) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tanonI++;\n\t\t\t} else {\n\t\t\t\tvar indexOfOther = indexOfParameterDef(macroName, params[i].name, parser, options);\n\t\t\t\tif (indexOfOther < expectedIndex) {\n\t\t\t\t\tanonI++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n};\n\n// Looks up the definition of a macro, and figures out what the expected index\n// is for the given parameter.\nfunction indexOfParameterDef(macroName, paramName, parser, options) {\n\tvar def = getDefinition(macroName, parser, options);\n\tvar params = def.params || [];\n\tfor (var i = 0; i < params.length; i++) {\n\t\tif (params[i].name === paramName) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nfunction getParamNames(macroName, params, parser, options) {\n\tvar used = Object.create(null);\n\tvar rtn = new Array(params.length);\n\tvar anonsExist = false;\n\tvar i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name) {\n\t\t\trtn[i] = name;\n\t\t\tused[name] = true;\n\t\t} else {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (anonsExist) {\n\t\tvar defParams = getDefinition(macroName, parser, options).params || [];\n\t\tvar defPtr = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (rtn[i] === undefined) {\n\t\t\t\twhile(defPtr < defParams.length && used[defParams[defPtr].name]) {\n\t\t\t\t\tdefPtr++;\n\t\t\t\t}\n\t\t\t\tif (defPtr >= defParams.length) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\trtn[i] = defParams[defPtr].name;\n\t\t\t\tused[defParams[defPtr].name] = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn rtn;\n};\n\n/** Returns undefined if the definition cannot be found.\n */\nfunction getDefinition (macroName, parser, options) {\n\tvar variableContainer = parser.getVariableWidget();\n\tvar def = variableContainer.variables[macroName];\n\tif (!def) {\n\t\t// Check with the macro modules\n\t\tif ($tw.utils.hop($tw.macros, macroName)) {\n\t\t\tdef = $tw.macros[macroName];\n\t\t} else {\n\t\t\tthrow new CannotFindMacroDefError(macroName);\n\t\t}\n\t}\n\treturn def;\n};\n\nfunction parseParams(paramString, pos) {\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\t//paramInfo.start = pos;\n\t\tparamInfo.end = reParam.lastIndex + pos;\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn params;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles pragma macro definitions. Except we only update placeholder macros\nthat we may have previously install.\n\n\\define relink-?() Tough title\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar settings = require(\"$:/plugins/flibbles/relink/js/settings\");\n\nexports.name = \"macrodef\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar setParseTreeNode = this.parse();\n\tvar parentWidget = this.parser.getVariableWidget();\n\tvar setWidget = parentWidget.makeChildWidget(setParseTreeNode[0]);\n\tsetWidget.computeAttributes();\n\tsetWidget.execute();\n\tthis.parser.addWidget(setWidget);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar m = this.match;\n\t// This macro is not available should we need to make one.\n\tthis.parser.reserve(m[1]);\n\t// !m[3] means it's not a multiline macrodef\n\tvar placeholder = /^relink-(?:(\\w+)-)?(\\d+)$/.exec(m[1]);\n\tif (placeholder && m[2] === '' && !m[3]) {\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(text, this.parser.pos);\n\t\tvar valueRegExp = /([^\\n\\r]+)(\\r?\\n)/mg;\n\t\tvalueRegExp.lastIndex = this.parser.pos;\n\t\tvar match = valueRegExp.exec(text);\n\t\tif (match) {\n\t\t\tvar handler = settings.getRelinker(placeholder[1] || 'title');\n\t\t\t\t// This is a filter\n\t\t\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser}, options);\n\t\t\tvar value = handler.relink(match[1], fromTitle, toTitle, extendedOptions);\n\t\t\tif (value !== undefined) {\n\t\t\t\tvar message = \"macrodef\";\n\t\t\t\tif (extendedOptions.usedPlaceholder) {\n\t\t\t\t\tmessage = \"macrodef-placeholder\";\n\t\t\t\t}\n\t\t\t\tlog(message, {\n\t\t\t\t\tfrom: fromTitle,\n\t\t\t\t\tto: toTitle,\n\t\t\t\t\ttiddler: tiddler.fields.title,\n\t\t\t\t\tmacro: m[1]\n\t\t\t\t}, options);\n\t\t\t\tthis.parser.pos += match[0].length;\n\t\t\t\treturn \"\\\\define \"+m[1]+\"() \"+value+match[2];\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[[Introduction]]\n\n[[link description|TiddlerTitle]]\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar utils = require(\"./utils.js\");\n\nexports.name = \"prettylink\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar caption, quoted, m = this.match;\n\tif (m[2] === fromTitle) {\n\t\t// format is [[caption|MyTiddler]]\n\t\tcaption = m[1];\n\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\n\t\t// format is [[MyTiddler]], and it doesn't match\n\t\treturn undefined;\n\t}\n\tvar logArguments = {\n\t\tfrom: fromTitle,\n\t\tto: toTitle,\n\t\ttiddler: tiddler.fields.title\n\t};\n\tif (utils.canBePretty(toTitle)) {\n\t\tlog(\"prettylink\", logArguments, options);\n\t\treturn prettyLink(toTitle, caption);\n\t} else if (caption === undefined) {\n\t\t// If we don't have a caption, we have to resort to placeholders\n\t\t// anyway to prevent link/caption desync from later relinks.\n\t\t// It doesn't matter whether the toTitle is quotable\n\t\tlog(\"prettylink-placeholder\", logArguments, options);\n\t\tvar ph = this.parser.getPlaceholderFor(toTitle);\n\t\treturn \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/></$link>\";\n\t} else if (quoted = utils.wrapAttributeValue(toTitle)) {\n\t\tlog(\"prettylink-widget\", logArguments, options);\n\t\treturn \"<$link to=\"+quoted+\">\"+caption+\"</$link>\";\n\t} else {\n\t\tlog(\"prettylink-placeholder\", logArguments, options);\n\t\tvar ph = this.parser.getPlaceholderFor(toTitle);\n\t\treturn \"<$link to=<<\"+ph+\">>>\"+caption+\"</$link>\";\n\t}\n};\n\nfunction prettyLink(title, caption) {\n\tif (caption) {\n\t\treturn \"[[\" + caption + \"|\" + title + \"]]\";\n\t} else {\n\t\treturn \"[[\" + title + \"]]\";\n\t}\n};\n\nfunction isSafe(value) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']';\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nParses and acknowledges any pragma rules a tiddler has.\n\n\\rules except html wikilink\n\n\\*/\n\nexports.name = \"rules\";\n\n/**This is all we have to do. The rules rule doesn't parse. It just amends\n * the rules, which is exactly what I want it to do too.\n * It also takes care of moving the pos pointer forward.\n */\nexports.relink = function() { this.parse(); };\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of transclusions in wiki text like,\n\n{{RenamedTiddler}}\n{{RenamedTiddler||TemplateTitle}}\n\nThis renames both the tiddler and the template field.\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar utils = require(\"./utils.js\");\n\nexports.name = ['transcludeinline', 'transcludeblock'];\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\treference = m[1],\n\t\ttemplate = m[2],\n\t\tquoted,\n\t\tlogArguments = {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title\n\t\t};\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar trimmedRef = $tw.utils.trim(reference);\n\tvar ref = $tw.utils.parseTextReference(trimmedRef);\n\t// This block takes care of 99% of all cases\n\tif (canBePrettyTemplate(toTitle) &&\n\t\t// title part has one extra restriction\n\t (ref.title !== fromTitle || refHandler.canBePretty(toTitle))) {\n\t\tvar modified = false;\n\t\tif (ref.title === fromTitle) {\n\t\t\tmodified = true;\n\t\t\tref.title = toTitle;\n\t\t\tvar refString = refHandler.toString(ref);\n\t\t\t// preserve user's whitespace\n\t\t\treference = reference.replace(trimmedRef, refString);\n\t\t}\n\t\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t\tmodified = true;\n\t\t\t// preserve user's whitespace\n\t\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\t}\n\t\tif (modified) {\n\t\t\tlog(\"transclude\", logArguments, options);\n\t\t\treturn prettyTransclude(reference, template);\n\t\t}\n\t\treturn undefined;\n\t}\n\t// Now for the 1%...\n\tif (ref.title === fromTitle) {\n\t\tvar resultTitle = utils.wrapAttributeValue(toTitle);\n\t\tif (resultTitle === undefined) {\n\t\t\tresultTitle = \"<<\"+this.parser.getPlaceholderFor(toTitle)+\">>\";\n\t\t\tlog(\"transclude-placeholder\", logArguments, options);\n\t\t} else {\n\t\t\tlog(\"transclude-widget\", logArguments, options);\n\t\t}\n\t\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t\t// Now for this bizarre-ass use-case, where both the\n\t\t\t// title and template are being replaced.\n\t\t\tvar attrs = this.transcludeAttributes(ref.field, ref.index);\n\t\t\treturn \"<$tiddler tiddler=\"+resultTitle+\"><$transclude tiddler=\"+resultTitle+attrs+\"/></$tiddler>\";\n\t\t} else {\n\t\t\tref.title = undefined;\n\t\t\treturn \"<$tiddler tiddler=\"+resultTitle+\">\"+prettyTransclude(ref, template)+\"</$tiddler>\";\n\t\t}\n\t}\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\tvar resultTemplate = utils.wrapAttributeValue(toTitle);\n\t\tvar message = \"transclude-widget\";\n\t\tvar rtn;\n\t\tif (resultTemplate === undefined) {\n\t\t\tresultTemplate = \"<<\"+this.parser.getPlaceholderFor(toTitle)+\">>\";\n\t\t\tmessage = \"transclude-placeholder\";\n\t\t}\n\t\tif (ref.title) {\n\t\t\tvar resultTitle = utils.wrapAttributeValue(ref.title);\n\t\t\tif (resultTitle === undefined) {\n\t\t\t\t// This is one of the rare cases were we need\n\t\t\t\t// to placeholder a title OTHER than the one\n\t\t\t\t// we're changing.\n\t\t\t\tresultTitle = \"<<\"+this.parser.getPlaceholderFor(ref.title)+\">>\";\n\t\t\t\tmessage = \"transclude-placeholder\";\n\t\t\t}\n\t\t\tvar attrs = this.transcludeAttributes(ref.field, ref.index);\n\t\t\trtn = \"<$tiddler tiddler=\"+resultTitle+\"><$transclude tiddler=\"+resultTemplate+attrs+\"/></$tiddler>\";\n\t\t} else {\n\t\t\trtn = \"<$transclude tiddler=\"+resultTemplate+\"/>\";\n\t\t}\n\t\tlog(message, logArguments, options);\n\t\treturn rtn;\n\t}\n\treturn undefined;\n};\n\nfunction canBePrettyTemplate(value) {\n\treturn value.indexOf('}') < 0 && value.indexOf('{') < 0 && value.indexOf('|') < 0;\n};\n\n/**Returns attributes for a transclude widget.\n * only field or index should be used, not both, but both will return\n * the intuitive (albeit useless) result.\n */\nexports.transcludeAttributes = function(field, index) {\n\treturn rtn = [\n\t\twrapAttribute(this.parser, \"field\", field),\n\t\twrapAttribute(this.parser, \"index\", index)\n\t].join('');\n};\n\nfunction wrapAttribute(wikiRelinker, name, value) {\n\tif (value) {\n\t\tvar wrappedValue = utils.wrapAttributeValue(value);\n\t\tif (wrappedValue === undefined) {\n\t\t\twrappedValue = \"<<\"+wikiRelinker.getPlaceholderFor(value, name)+\">>\";\n\t\t}\n\t\treturn \" \"+name+\"=\"+wrappedValue;\n\t}\n\treturn '';\n};\n\nfunction prettyTransclude(textReference, template) {\n\tif (typeof textReference !== \"string\") {\n\t\ttextReference = refHandler.toString(textReference);\n\t}\n\tif (!textReference) {\n\t\ttextReference = '';\n\t}\n\tif (template !== undefined) {\n\t\treturn \"{{\"+textReference+\"||\"+template+\"}}\";\n\t} else {\n\t\treturn \"{{\"+textReference+\"}}\";\n\t}\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js": {
"text": "/*\\\nmodule-type: library\n\nUtility methods for the wikitext relink rules.\n\n\\*/\n\n/**Finds an appropriate quote mark for a given value.\n *\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\n * we just have to find the type of quotes that'll work for the given title.\n * There exist titles that simply can't be quoted.\n * If it can stick with the preference, it will.\n *\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\n */\nexports.wrapAttributeValue = function(value, preference, whitelist) {\n\twhitelist = whitelist || [\"\", \"'\", '\"', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\/\\s<>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';},\n\t\t\"[[\": exports.canBePrettyOperand\n\t};\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; },\n\t\t'\"\"\"': function(v) {return '\"\"\"'+v+'\"\"\"'; },\n\t\t\"[[\": function(v) {return \"[[\"+v+\"]]\"; }\n\t};\n\tif (choices[preference]) {\n\t\tif (choices[preference](value)) {\n\t\t\treturn wrappers[preference](value);\n\t\t}\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrappers[quote](value);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\n/**Return true if value can be used inside a prettylink.\n */\nexports.canBePretty = function(value) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']';\n};\n\nexports.canBePrettyOperand = function(value) {\n\treturn value.indexOf(']') < 0;\n};\n\n/**Given some text, and a param or attribute within that text, this returns\n * what type of quotation that attribute is using.\n *\n * param: An object in the form {end:, ...}\n */\nexports.determineQuote = function(text, param) {\n\tvar pos = param.end-1;\n\tif (text[pos] === \"'\") {\n\t\treturn \"'\";\n\t}\n\tif (text[pos] === '\"') {\n\t\tif (text.substr(pos-2, 3) === '\"\"\"') {\n\t\t\treturn '\"\"\"';\n\t\t} else {\n\t\t\treturn '\"';\n\t\t}\n\t}\n\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\n\t\treturn \"[[\";\n\t}\n\treturn '';\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles CamelCase links\n\nWikiLink\n\nbut not:\n\n~WikiLink\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar utils = require(\"./utils.js\");\n\nexports.name = \"wikilink\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (this.match[0] === fromTitle && this.match[0][0] !== '~') {\n\t\tvar logArguments = {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title\n\t\t};\n\t\tif (toTitle.match(this.matchRegExp) && toTitle[0] !== '~') {\n\t\t\tlog(\"wikilink\", logArguments, options);\n\t\t\treturn toTitle;\n\t\t} else if (utils.canBePretty(toTitle)) {\n\t\t\tlog(\"wikilink-pretty\", logArguments, options);\n\t\t\treturn \"[[\" + toTitle + \"]]\";\n\t\t} else {\n\t\t\tvar ph = this.parser.getPlaceholderFor(toTitle);\n\t\t\tlog(\"wikilink-placeholder\", logArguments, options);\n\t\t\treturn \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/></$link>\";\n\t\t}\n\t}\n\treturn undefined;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/utils/rebuilder.js": {
"text": "/*\\\n\nThis helper class aids in reconstructing an existing string with new parts.\n\n\\*/\n\nfunction Rebuilder(text, start) {\n\tthis.text = text;\n\tthis.index = start || 0;\n\tthis.pieces = [];\n};\n\nmodule.exports = Rebuilder;\n\n/**Pieces must be added consecutively.\n * Start and end are the indices in the old string specifying where to graft\n * in the new piece.\n */\nRebuilder.prototype.add = function(value, start, end) {\n\tthis.pieces.push(this.text.substring(this.index, start), value);\n\tthis.index = end;\n};\n\nRebuilder.prototype.changed = function() {\n\treturn this.pieces.length > 0;\n};\n\n/** This sticks something on the beginning of the resulting content.\n */\nRebuilder.prototype.prepend = function(content) {\n\tif (content) {\n\t\tthis.pieces.unshift(content);\n\t}\n};\n\nRebuilder.prototype.results = function(end) {\n\tif (this.changed()) {\n\t\tthis.pieces.push(this.text.substring(this.index, end));\n\t\treturn this.pieces.join('');\n\t}\n\treturn undefined;\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/utils/rebuilder.js",
"type": "application/javascript"
},
"$:/config/flibbles/relink/attributes/$button/to": {
"title": "$:/config/flibbles/relink/attributes/$button/to",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$checkbox/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$checkbox/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$checkbox/tag": {
"title": "$:/config/flibbles/relink/attributes/$checkbox/tag",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$count/filter": {
"title": "$:/config/flibbles/relink/attributes/$count/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$draggable/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$draggable/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$draggable/filter": {
"title": "$:/config/flibbles/relink/attributes/$draggable/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$edit-text/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$edit-text/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$edit/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$edit/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$encrypt/filter": {
"title": "$:/config/flibbles/relink/attributes/$encrypt/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$fieldmangler/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$fields/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$fields/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$image/source": {
"title": "$:/config/flibbles/relink/attributes/$image/source",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$importvariables/filter": {
"title": "$:/config/flibbles/relink/attributes/$importvariables/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$linkcatcher/to": {
"title": "$:/config/flibbles/relink/attributes/$linkcatcher/to",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$linkcatcher/set": {
"title": "$:/config/flibbles/relink/attributes/$linkcatcher/set",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$link/to": {
"title": "$:/config/flibbles/relink/attributes/$link/to",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$list/filter": {
"title": "$:/config/flibbles/relink/attributes/$list/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$list/template": {
"title": "$:/config/flibbles/relink/attributes/$list/template",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$list/editTemplate": {
"title": "$:/config/flibbles/relink/attributes/$list/editTemplate",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$list/history": {
"title": "$:/config/flibbles/relink/attributes/$list/history",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$navigator/story": {
"title": "$:/config/flibbles/relink/attributes/$navigator/story",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$navigator/history": {
"title": "$:/config/flibbles/relink/attributes/$navigator/history",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$radio/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$radio/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$range/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$range/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$reveal/stateTitle": {
"title": "$:/config/flibbles/relink/attributes/$reveal/stateTitle",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$select/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$select/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$setvariable/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$setvariable/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$setvariable/subtiddler": {
"title": "$:/config/flibbles/relink/attributes/$setvariable/subtiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$setvariable/filter": {
"title": "$:/config/flibbles/relink/attributes/$setvariable/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$set/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$set/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$set/subtiddler": {
"title": "$:/config/flibbles/relink/attributes/$set/subtiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$set/filter": {
"title": "$:/config/flibbles/relink/attributes/$set/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$tiddler/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$tiddler/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$transclude/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$transclude/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$transclude/subtiddler": {
"title": "$:/config/flibbles/relink/attributes/$transclude/subtiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$view/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$view/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$view/subtiddler": {
"title": "$:/config/flibbles/relink/attributes/$view/subtiddler",
"text": "title"
},
"$:/plugins/flibbles/relink/configuration": {
"title": "$:/plugins/flibbles/relink/configuration",
"text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/flibbles/relink/Configuration]!has[draft.of]]\" \"$:/plugins/flibbles/relink/ui/configuration/Fields\">>\n</div>\n"
},
"$:/config/flibbles/relink/fields/list": {
"title": "$:/config/flibbles/relink/fields/list",
"text": "list"
},
"$:/config/flibbles/relink/fields/list-after": {
"title": "$:/config/flibbles/relink/fields/list-after",
"text": "title"
},
"$:/config/flibbles/relink/fields/list-before": {
"title": "$:/config/flibbles/relink/fields/list-before",
"text": "title"
},
"$:/config/flibbles/relink/fields/tags": {
"title": "$:/config/flibbles/relink/fields/tags",
"text": "list"
},
"$:/plugins/flibbles/relink/language/Buttons/Delete/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint",
"text": "Specify a new widget/element attribute to be updated whenever a tiddler is renamed"
},
"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption",
"text": "add"
},
"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewField/Hint",
"text": "Specify a new field to be updated whenever a tiddler is renamed"
},
"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewField/Caption",
"text": "add"
},
"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint",
"text": "Specify a new filter operator to be considered whenever a tiddler is renamed"
},
"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption",
"text": "add"
},
"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint",
"text": "Specify a new macro parameter to be updated whenever a tiddler is renamed"
},
"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption",
"text": "add"
},
"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator": {
"title": "$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator",
"text": "Filter Error: Unknown suffix for the 'relink' filter operator"
},
"$:/plugins/flibbles/relink/language/Help/Attributes": {
"title": "$:/plugins/flibbles/relink/language/Help/Attributes",
"text": "See the [[Attributes documentation page|https://flibbles.github.io/tw5-relink/#Attributes]] for details."
},
"$:/plugins/flibbles/relink/language/Help/Fields": {
"title": "$:/plugins/flibbles/relink/language/Help/Fields",
"text": "See the [[Fields documentation page|https://flibbles.github.io/tw5-relink/#Fields]] for details."
},
"$:/plugins/flibbles/relink/language/Help/Macros": {
"title": "$:/plugins/flibbles/relink/language/Help/Macros",
"text": "See the [[Macros documentation page|https://flibbles.github.io/tw5-relink/#Macros]] for details."
},
"$:/plugins/flibbles/relink/language/Help/Operators": {
"title": "$:/plugins/flibbles/relink/language/Help/Operators",
"text": "See the [[Operators documentation page|https://flibbles.github.io/tw5-relink/#Operators]] for details."
},
"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty": {
"title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty",
"text": "No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one"
},
"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description": {
"title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description",
"text": "The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:"
},
"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption": {
"title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption",
"text": "//Relink// References"
},
"$:/plugins/flibbles/relink/language/ui/Attributes/Caption": {
"title": "$:/plugins/flibbles/relink/language/ui/Attributes/Caption",
"text": "Attributes"
},
"$:/plugins/flibbles/relink/language/ui/Fields/Caption": {
"title": "$:/plugins/flibbles/relink/language/ui/Fields/Caption",
"text": "Fields"
},
"$:/plugins/flibbles/relink/language/ui/Macros/Caption": {
"title": "$:/plugins/flibbles/relink/language/ui/Macros/Caption",
"text": "Macros"
},
"$:/plugins/flibbles/relink/language/ui/Operators/Caption": {
"title": "$:/plugins/flibbles/relink/language/ui/Operators/Caption",
"text": "Operators"
},
"$:/config/flibbles/relink/macros/csvtiddlers/filter": {
"title": "$:/config/flibbles/relink/macros/csvtiddlers/filter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/datauri/title": {
"title": "$:/config/flibbles/relink/macros/datauri/title",
"text": "title"
},
"$:/config/flibbles/relink/macros/jsontiddler/title": {
"title": "$:/config/flibbles/relink/macros/jsontiddler/title",
"text": "title"
},
"$:/config/flibbles/relink/macros/jsontiddlers/filter": {
"title": "$:/config/flibbles/relink/macros/jsontiddlers/filter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/list-links/filter": {
"title": "$:/config/flibbles/relink/macros/list-links/filter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/list-links-draggable/tiddler": {
"title": "$:/config/flibbles/relink/macros/list-links-draggable/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate": {
"title": "$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate",
"text": "title"
},
"$:/config/flibbles/relink/macros/list-tagged-draggable/tag": {
"title": "$:/config/flibbles/relink/macros/list-tagged-draggable/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate": {
"title": "$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc/tag": {
"title": "$:/config/flibbles/relink/macros/toc/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc/selectedTiddler": {
"title": "$:/config/flibbles/relink/macros/toc/selectedTiddler",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc/template": {
"title": "$:/config/flibbles/relink/macros/toc/template",
"text": "title"
},
"$:/config/flibbles/relink/macros/tabs/buttonTemplate": {
"title": "$:/config/flibbles/relink/macros/tabs/buttonTemplate",
"text": "title"
},
"$:/config/flibbles/relink/macros/tabs/default": {
"title": "$:/config/flibbles/relink/macros/tabs/default",
"text": "title"
},
"$:/config/flibbles/relink/macros/tabs/tabsList": {
"title": "$:/config/flibbles/relink/macros/tabs/tabsList",
"text": "filter"
},
"$:/config/flibbles/relink/macros/tabs/template": {
"title": "$:/config/flibbles/relink/macros/tabs/template",
"text": "title"
},
"$:/config/flibbles/relink/macros/tag/tag": {
"title": "$:/config/flibbles/relink/macros/tag/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/tag-pill/tag": {
"title": "$:/config/flibbles/relink/macros/tag-pill/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/timeline/subfilter": {
"title": "$:/config/flibbles/relink/macros/timeline/subfilter",
"text": "filter"
},
"$:/config/flibbles/relink/operators/list": {
"title": "$:/config/flibbles/relink/operators/list",
"text": "reference"
},
"$:/config/flibbles/relink/operators/tag": {
"title": "$:/config/flibbles/relink/operators/tag",
"text": "title"
},
"$:/config/flibbles/relink/operators/title": {
"title": "$:/config/flibbles/relink/operators/title",
"text": "title"
},
"$:/config/flibbles/relink/operators/field:title": {
"title": "$:/config/flibbles/relink/operators/field:title",
"text": "title"
},
"$:/language/EditTemplate/Title/Impossibles/Prompt": {
"title": "$:/language/EditTemplate/Title/Impossibles/Prompt",
"text": "The following references to this tiddler can ''not'' be updated by //Relink// due to the complexity of the new title:"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following tiddlers will be updated if relinking:"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Use //Relink// to update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' across all other tiddlers"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "\\define conditional-list(state, prompt, filter)\n<$list filter=\"[subfilter<__filter__>limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/$state$\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}}\n<<lingo [[$prompt$]]>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}}\n<<lingo [[$prompt$]]>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$list filter=<<__filter__>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>\n</$reveal>\n\n</$vars>\n\\end\n\n<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\" tabindex={{$:/config/EditTabIndex}}/>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<<conditional-list impossibles EditTemplate/Title/Impossibles/Prompt \"[{!!draft.title}relink:impossible<fromTitle>]\">>\n\n<<conditional-list references EditTemplate/Title/References/Prompt \"[relink:references<fromTitle>!title[$:/StoryList]sort[title]]\">>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/plugins/flibbles/relink/readme": {
"title": "$:/plugins/flibbles/relink/readme",
"type": "text/vnd.tiddlywiki",
"text": "When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee [[the tw5-relink website|https://github.com/flibbles/tw5-relink]] for\nmore details and examples.\n"
},
"$:/config/flibbles/relink/settings/default-type": {
"title": "$:/config/flibbles/relink/settings/default-type",
"text": "title"
},
"$:/plugins/flibbles/relink/ui/TiddlerInfo/References": {
"title": "$:/plugins/flibbles/relink/ui/TiddlerInfo/References",
"caption": "{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}",
"tags": "$:/tags/TiddlerInfo",
"text": "\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\n\\define filter() [relink:references<currentTiddler>!title[$:/StoryList]sort[title]]\n<$list filter=\"[subfilter<filter>first[]]\">\n\n<<lingo References/Description>>\n</$list>\n\n<$list filter=<<filter>> emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n"
},
"$:/plugins/flibbles/relink/ui/components/button-delete": {
"title": "$:/plugins/flibbles/relink/ui/components/button-delete",
"text": "\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\n<$button class=\"tc-btn-invisible\"><$list filter=\"[all[current]is[tiddler]]\">\n<$action-deletetiddler $tiddler=<<currentTiddler>> />\n</$list><$list filter=\"[all[current]is[shadow]]\">\n<$action-setfield $tiddler=<<tiddlerName>> text=\"\" />\n</$list>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">{{$:/core/images/delete-button}}</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$(lingo-base)$Delete/Caption}}/></span>\n</$list></$button>\n"
},
"$:/plugins/flibbles/relink/ui/components/select-fieldtype": {
"title": "$:/plugins/flibbles/relink/ui/components/select-fieldtype",
"text": "<$select tiddler=<<currentTiddler>> default={{$:/config/flibbles/relinke/settings/default-type}} >\n<$list variable=\"option\"\n filter=\"[[relinkfieldtype]modules[]removeprefix[$:/plugins/flibbles/relink/js/fieldtypes/]removesuffix[.js]move:-100{$:/config/flibbles/relink/settings/default-type}]\">\n<option><$text text=<<option>> /></option>\n</$list>\n</$select>\n"
},
"$:/plugins/flibbles/relink/ui/configuration/Attributes": {
"title": "$:/plugins/flibbles/relink/ui/configuration/Attributes",
"caption": "{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}",
"tags": "$:/tags/flibbles/relink/Configuration",
"text": "\\define prefix-attr() $:/config/flibbles/relink/attributes/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define state-base() $:/state/flibbles/relink/\n\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\n\n<table><tbody>\n<tr><th>Widget/HTML Element</th><th>Attribute</th><th>Type</th><th>Delete</th></tr>\n<$list filter=\"[all[shadows+tiddlers]prefix<prefix-attr>!has[draft.of]has[text]]\">\n<$set name=\"element\"\n filter=\"[all[current]removeprefix<prefix-attr>splitbefore[/]removesuffix[/]]\">\n<$set name=\"attribute\"\n filter=\"[all[current]removeprefix<prefix-attr>removeprefix<element>removeprefix[/]]\">\n<tr>\n<td><$text text=<<element>> /></td>\n<td><$text text=<<attribute>> /></td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</tr>\n</$set></$set></$list>\n</tbody></table>\n\n<em class=\"tc-edit\">Add a new attribute:</em>\n<$edit-text tiddler=\"$(state-base)$element-name\"\n tag=\"input\" default=\"\" placeholder=\"widget/element\" />\n<$edit-text tiddler=\"$(state-base)$attribute-name\"\n tag=\"input\" default=\"\" placeholder=\"attribute\" />\n<$button tooltip={{$(lingo-base)$NewAttribute/Hint}}\n aria-label={{$(lingo-base)$NewAttribute/Caption}}>\n<$set name=\"tiddlerName\"\n filter=\"[<prefix-attr>addsuffix{$(state-base)$element-name}addsuffix[/]addsuffix{$(state-base)$attribute-name}]\">\n<$action-setfield $tiddler=<<tiddlerName>>\n text={{$:/config/flibbles/relink/settings/default-type}} />\n</$set>\n<$action-deletetiddler $tiddler=\"$(state-base)$attribute-name\" />\n<$action-deletetiddler $tiddler=\"$(state-base)$element-name\" />\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n\\end\n\n<<body>>\n"
},
"$:/plugins/flibbles/relink/ui/configuration/Fields": {
"title": "$:/plugins/flibbles/relink/ui/configuration/Fields",
"caption": "{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}",
"tags": "$:/tags/flibbles/relink/Configuration",
"text": "\\define prefix-fields() $:/config/flibbles/relink/fields/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define state-base() $:/state/flibbles/relink/\n\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\n\n<table><tbody>\n<tr><th>Field Name</th><th>Field Type</th><th>Delete</th></tr>\n<$list filter=\"[all[shadows+tiddlers]prefix<prefix-fields>!has[draft.of]has[text]]\">\n<tr>\n<td><$list filter=\"[all[current]removeprefix<prefix-fields>]\"><<currentTiddler>></$list></td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</tr>\n</$list>\n</tbody></table>\n\n<em class=\"tc-edit\">Add a new field:</em>\n<$edit-text tiddler=\"$(state-base)$field-name\"\n tag=\"input\" default=\"\" placeholder=\"field name\" />\n<$button tooltip={{$(lingo-base)$NewField/Hint}}\n aria-label={{$(lingo-base)$NewField/Caption}}>\n<$set name=\"tiddlerName\"\n filter=\"[<prefix-fields>addsuffix{$(state-base)$field-name}]\">\n<$action-setfield $tiddler=<<tiddlerName>>\n text={{$:/config/flibbles/relink/settings/default-type}} />\n</$set>\n<$action-deletetiddler $tiddler=\"$(state-base)$field-name\" />\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n\\end\n\n<<body>>\n"
},
"$:/plugins/flibbles/relink/ui/configuration/Macros": {
"title": "$:/plugins/flibbles/relink/ui/configuration/Macros",
"caption": "{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}",
"tags": "$:/tags/flibbles/relink/Configuration",
"text": "\\define prefix-macro() $:/config/flibbles/relink/macros/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define state-base() $:/state/flibbles/relink/\n\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\n\n<table><tbody>\n<tr><th>Macro</th><th>Parameter</th><th>Type</th><th>Delete</th></tr>\n<$list filter=\"[all[shadows+tiddlers]prefix<prefix-macro>!has[draft.of]has[text]]\">\n<$set name=\"parameter\"\n filter=\"[all[current]removeprefix<prefix-macro>relink:splitafter[/]]\">\n<$set name=\"macro\"\n filter=\"[all[current]removeprefix<prefix-macro>removesuffix<parameter>removesuffix[/]]\">\n<tr>\n<td><$text text=<<macro>> /></td>\n<td><$text text=<<parameter>> /></td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</tr>\n</$set></$set></$list>\n</tbody></table>\n\n<em class=\"tc-edit\">Add a new macro parameter:</em>\n<$edit-text tiddler=\"$(state-base)$macro-name\"\n tag=\"input\" default=\"\" placeholder=\"macro\" />\n<$edit-text tiddler=\"$(state-base)$parameter-name\"\n tag=\"input\" default=\"\" placeholder=\"parameter\" />\n<$button tooltip={{$(lingo-base)$NewParameter/Hint}}\n aria-label={{$(lingo-base)$NewParameter/Caption}}>\n<$set name=\"tiddlerName\"\n filter=\"[<prefix-macro>addsuffix{$(state-base)$macro-name}addsuffix[/]addsuffix{$(state-base)$parameter-name}]\">\n<$action-setfield $tiddler=<<tiddlerName>>\n text={{$:/config/flibbles/relink/settings/default-type}} />\n</$set>\n<$action-deletetiddler $tiddler=\"$(state-base)$parameter-name\" />\n<$action-deletetiddler $tiddler=\"$(state-base)$macro-name\" />\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n\\end\n\n<<body>>\n"
},
"$:/plugins/flibbles/relink/ui/configuration/Operators": {
"title": "$:/plugins/flibbles/relink/ui/configuration/Operators",
"caption": "{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}",
"tags": "$:/tags/flibbles/relink/Configuration",
"text": "\\define prefix-ops() $:/config/flibbles/relink/operators/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define state-base() $:/state/flibbles/relink/\n\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\n\n<table><tbody>\n<tr><th>Filter Operator</th><th>Operand Type</th><th>Delete</th></tr>\n<$list filter=\"[all[shadows+tiddlers]prefix<prefix-ops>!has[draft.of]has[text]]\">\n<tr>\n<td><$list variable=\"listItem\" filter=\"[<currentTiddler>removeprefix<prefix-ops>]\"><<listItem>></$list></td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</tr>\n</$list>\n</tbody></table>\n\n<em class=\"tc-edit\">Add a new filter operator:</em>\n<$edit-text tiddler=\"$(state-base)$operator-name\"\n tag=\"input\" default=\"\" placeholder=\"operator name\" />\n<$button tooltip={{$(lingo-base)$NewOperator/Hint}}\n aria-label={{$(lingo-base)$NewOperator/Caption}}>\n<$set name=\"tiddlerName\"\n filter=\"[<prefix-ops>addsuffix{$(state-base)$operator-name}]\">\n<$action-setfield $tiddler=<<tiddlerName>> text={{$:/config/flibbles/relink/settings/default-type}} />\n</$set>\n<$action-deletetiddler $tiddler=\"$(state-base)$operator-name\" />\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n\\end\n\n<<body>>\n"
}
}
}
{
"tiddlers": {
"$:/jd/fullscreen-editor/EditButton": {
"text": "\\whitespace trim\n<$navigator story=\"$:/fullscreen-editor\">\n<$button message=\"tm-edit-tiddler\" tooltip=\"Edit in full screen mode\" class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text=\"edit in full screen\"/>\n</span>\n</$list>\n</$button>\n</$navigator>",
"title": "$:/jd/fullscreen-editor/EditButton",
"tags": "$:/tags/ViewToolbar",
"modifier": "jd",
"modified": "20190204134418116",
"description": "Edit in full screen mode",
"creator": "jd",
"created": "20190204123121582",
"caption": "{{$:/core/images/full-screen-button}} edit in full screen"
},
"$:/jd/fullscreen-editor/EditTemplate": {
"text": "<$navigator story=\"$:/fullscreen-editor\">\n<$keyboard key=((cancel-edit-tiddler)) message=\"tm-cancel-tiddler\">\n<$keyboard key=((save-tiddler)) actions=\"\"\"<$action-sendmessage $message=\"tm-save-tiddler\"/><$action-sendmessage $message=\"tm-close-tiddler\"/>\"\"\" class=\"fullscreen-story-river\" tag=\"div\">\n{{||$:/core/ui/EditTemplate/controls}}\n{{||$:/core/ui/EditTemplate/body}}\n</$keyboard>\n</$keyboard>\n</$navigator>",
"title": "$:/jd/fullscreen-editor/EditTemplate",
"modifier": "jd",
"modified": "20190204140310285",
"creator": "jd",
"created": "20190204123536452"
},
"$:/jd/fullscreen-editor/PageTemplate": {
"text": "<$list filter=\"[list[$:/fullscreen-editor]]\" template=\"$:/jd/fullscreen-editor/ViewTemplate\" editTemplate=\"$:/jd/fullscreen-editor/EditTemplate\"/>\n",
"title": "$:/jd/fullscreen-editor/PageTemplate",
"tags": "$:/tags/PageTemplate",
"modifier": "jd",
"modified": "20190204135522488",
"creator": "jd",
"created": "20190204123350692"
},
"$:/jd/fullscreen-editor/Stylesheet": {
"text": "<$list filter=\"[[$:/fullscreen-editor]has:field[list]!field:list[]]\">\n<$list filter=\"[[$:/fullscreen-editor]search:list[draft of]]\">\n\n.tc-story-river {display: none; }\n\n.fullscreen-story-river {\n background-color: <<colour tiddler-editor-background>>;\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: block;\n z-index: 2200;\n overflow-y: auto;\n}\n\n.fullscreen-story-river .tc-tiddler-edit-title {\n position: sticky;\n top: 0;\n background: <<colour page-background>>;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.5em 1em;\n}\n\n.fullscreen-story-river .tc-tiddler-edit-title > div:nth-child(2) {\n display: none;\n}\n\n.fullscreen-story-river .tc-tiddler-controls.tc-titlebar,\n.fullscreen-story-river .tc-tiddler-controls.tc-titlebar .tc-btn-invisible {\n display: flex;\n align-items: center;\n}\n\n.fullscreen-story-river .tc-editor-toolbar {\n background: <<colour page-background>>;\n padding: 0.25em 1em;\n margin: 0;\n}\n\n.fullscreen-story-river .tc-editor-toolbar button {\n background: <<colour page-background>>;\n}\n\n.fullscreen-story-river textarea.tc-edit-texteditor {\n border: none;\n padding: 1em;\n background-color: <<colour tiddler-editor-background>>;\n}\n\n<$list filter=\"[[$:/state/showeditpreview]text[yes]]\">\n.fullscreen-story-river iframe.tc-edit-texteditor { width: 49%; }\n</$list>\n\n<$list filter=\"[[$:/state/showeditpreview]!text[yes]]\">\n.fullscreen-story-river iframe.tc-edit-texteditor { width: 100%; }\n</$list>\n\n</$list>\n</$list>",
"title": "$:/jd/fullscreen-editor/Stylesheet",
"tags": "$:/tags/Stylesheet",
"modifier": "jd",
"modified": "20190204141756609",
"creator": "jd",
"created": "20190204124703056"
},
"$:/jd/fullscreen-editor/readme": {
"created": "20190206054820870",
"creator": "HC Haase",
"text": "With ''~FullscreenEditor'', you'll be able to edit the current tiddler distraction-free with this button, found at the usual tiddler controls: @@font-size:1.5em;{{||$:/jd/fullscreen-editor/EditButton}}@@\n\nAlso in this mode, <kbd>ctrl</kbd>+<kbd>enter</kbd> will save and close the tiddler, and <kbd>esc</kbd> will cancel the edit (or whatever keyboard shortcut have been set for these two actions at $:/core/ui/ControlPanel/KeyboardShortcuts).",
"title": "$:/jd/fullscreen-editor/readme",
"modifier": "HC Haase",
"modified": "20190206054846709"
}
}
}
{
"tiddlers": {
"$:/sk/WhiteList": {
"text": "LeDoux,McCloud,McDonald,TiddlyWiki,TiddlyWiki5,CamelCase,DuBay,McGraw,McCullough,LeGrange,NaCl,MeOH,EtOH,PiB,TiddlyTools,ResetFind,WikiText,WinBuilder,WinPE,ProgramData,TiddlyFox,GuillermoMartin,AndrewFraser,RochesterMNwalkers,DEdwardsCalgary,WalkaboutMM,HarveyG,McCoy,GeForce,SideBar,AirBnB,PayPal,LeBron,JavaScript,ExpressJet,CutePDF,McClouds,McElroy,McGovern,TableHelper,ShadowTiddler",
"caption": "Words to never consider as CamelCase links",
"created": "20150210172146298",
"creator": "Stephen",
"description": "Words that should never be considered as CamelCase wikiwords. Separate the individual words with commas (,).",
"modified": "20160427151253707",
"modifier": "Stephen",
"tags": "ske",
"title": "$:/sk/WhiteList"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n// If the link is on the whitelist then just output is as plain text\nvar dummy = \"$:/sk/WhiteList\"\nvar whitelist=$tw.wiki.getTiddlerText(dummy).split(\",\");\nvar n=whitelist.indexOf(linkText);\n\nif(n>-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"created": "20150209183326265",
"creator": "Stephen",
"modified": "20150210183324354",
"modifier": "Stephen",
"module-type": "wikirule",
"tags": "ske",
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"type": "application/javascript"
}
}
}
{
"tiddlers": {
"$:/plugins/snowgoon88/edit-comptext/config": {
"title": "$:/plugins/snowgoon88/edit-comptext/config",
"type": "application/json",
"text": "{\n \"configuration\": {\n \"caseSensitive\" : false,\n \"maxMatch\" : 8,\n \"minPatLength\" : 2,\n \"triggerKeyCombination\" : \"^ \"\n },\n \"template\": [{\n \"pattern\": \"[[\",\n \"filter\": \"[all[tiddlers]!is[system]]\",\n \"start\": \"[[\",\n \"end\": \"]]\"\n }\n ]\n}\n"
},
"$:/plugins/snowgoon88/edit-comptext/edit-comptext.js": {
"title": "$:/plugins/snowgoon88/edit-comptext/edit-comptext.js",
"text": "/*\\\ntitle: $:/plugins/snowgoon88/edit-comptext/edit-comptext.js\ntype: application/javascript\nmodule-type: widget\n\nTaken from original Edit-text widget\nVersion 5.1.13 of TW5\nAdd link-to-tiddler completion in framed.js and simple.js\n\nTODO : CHECK usefull, and particularly save_changes after every input ??\nTODO : where should popupNode be created in the DOM ?\nTODO : check that options are valid (numeric ?)\nvar isNumeric = function(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedCompEngine = require(\"$:/plugins/snowgoon88/edit-comptext/framed.js\").FramedCompEngine,\n\tSimpleCompEngine = require(\"$:/plugins/snowgoon88/edit-comptext/simple.js\").SimpleCompEngine;\n\nexports[\"edit-comptext\"] = editTextWidgetFactory(FramedCompEngine,SimpleCompEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/snowgoon88/edit-comptext/examples": {
"title": "$:/plugins/snowgoon88/edit-comptext/examples",
"text": "The configuration file [[$:/plugins/snowgoon88/edit-comptext/config]] allow you to use the completion plugin for various usages. Here are some examples...\n\n!! Link Completion\nThe basic and default usage. Completion is triggered by `[[`, the search is among all non-system tiddlers. When selected, the `title` of the tiddler is inserted in the text, surrounded by `[[` and `]]`. This gives the following Completion Template.\n\n\n```\n{\n \"pattern\": \"[[\",\n \"title\": \"[all[tiddlers]!is[system]]\",\n \"start\": \"[[\",\n \"end\": \"]]\"\n}\t \n```\n\n\n!! Special macro completion\nI have a 'pnjin' macro that is invoked by `<<pnjin \"TiddlerPNJName\">>` where 'TiddlerPNJName is a tiddler that hold data about a PNJ. I use tiddlywiki to organise my Role Playing Games campaigns. So, I want `<p` to trigger the completion. The search is among all non-system tiddlers tagged `PNJ` and, once selected, the title of the tiddler must be inserted surrouned by `<<pnjin \\\"` and `\\\">>`. So...\n\n```\n{\n\t\"pattern\": \"<p\",\n \t\"title\": \"[tag[PNJ]!is[system]]\",\n \t\"start\": \"<<pnjin \\\"\",\n \t\"end\": \"\\\">>\"\n}\n```\n\n!! Insert some templates or stamp or snippets into text.\nI frequently use some text pattern and I want to insert them easily. So, I could create several tiddlers, tagged '$:stamp' and in their body are the piece of texte I want to insert. The titles of these tiddlers always start with `$:/config/stamp/` (i.e. $:/config/stamp/macro, $:/config/stamp/list1, $:/config/stamp/list2). I want to trigger the completion by using `<<`, then I only want to chose among the last part of the titles of tiddlers tagged `$:stamp` so I use a mask (`$:/config/stamp/`) to only display the last part of the tiddlers title. When selectected, the `body` of the tiddler is inserted, with no surrounding strings. As a results, the Completion Template is (notice the `body` field):\n\n```\n{\n \"pattern\": \"<<\",\n \"body\": \"[tag[$:stamp]]\",\n \"mask\" : \"$:/config/stamp/\",\n \"start\": \"\",\n \"end\": \"\"\n}\n```\n\n!! And you ?\nIf you have funny usages of completion, let me know. If you'd like to do something that is not yet possible, let me know...\n\nmail : snowgoon88(AT)gmail(DOT)com"
},
"$:/plugins/snowgoon88/edit-comptext/framed.js": {
"text": "/*\\\ntitle: $:/plugins/snowgoon88/edit-comptext/framed.js\ntype: application/javascript\nmodule-type: library\n\nTaken from $:/core/modules/editor/engines/framed.js\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\n// Configuration tiddler\nvar COMPLETION_OPTIONS = \"$:/plugins/snowgoon88/edit-comptext/config\";\nvar Completion = require(\"$:/plugins/snowgoon88/edit-comptext/completion.js\").Completion;\n\t\nfunction FramedCompEngine(options) {\n //DEBUG console.log( \"==FramedCompEngine::creation\" );\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\n\t// Completion\n\t// Load Completion configuration as JSON\n this._configOptions = $tw.wiki.getTiddlerData( COMPLETION_OPTIONS, {} );\n\t\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create dummy popup for reading its styles\n\t//this._dummyCompletion = new Completion( this.widget, this.dummyTextArea, this._configOptions);\n\t//REMOVEthis._dummyCompletion.setAttribute(\"hidden\",\"true\");\n\t\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n\n\t// add Completion popup\n this._completion = new Completion( this.widget, this.domNode, this._configOptions, this.dummyTextArea, this.iframeNode.offsetTop, this.iframeNode.offsetLeft );\n\t// print iframe offset\n\t//DEBUG console.log( \" __iframe.offsetLeft: \"+this.iframeNode.offsetLeft );\n //DEBUG console.log( \" __iframe.offsetTop: \"+this.iframeNode.offsetTop );\n \n\t// Copy all styles from dummyCompletion\n\t//$tw.utils.copyStyles(this._dummyCompletion._popNode, this._completion._popNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\t//this._completion._popNode.style.display = \"block\";\n\t//this._completion._popNode.style.width = \"100%\";\n\t//this._completion._popNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\t//this._completion._popNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n \n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedCompEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedCompEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedCompEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedCompEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedCompEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedCompEngine.prototype.handleInputEvent = function(event) {\n //DEBUG console.log( \"__framed.js::handleInputEvent\");\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedCompEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedCompEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedCompEngine = FramedCompEngine;\n\n})();\n",
"type": "application/javascript",
"title": "$:/plugins/snowgoon88/edit-comptext/framed.js",
"module-type": "library"
},
"$:/plugins/snowgoon88/edit-comptext/simple.js": {
"text": "/*\\\ntitle: $:/plugins/snowgoon88/edit-comptext/simple.js\ntype: application/javascript\nmodule-type: library\n\nTaken from $:/core/modules/editor/engines/simple.js\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\n// Configuration tiddler\nvar COMPLETION_OPTIONS = \"$:/plugins/snowgoon88/edit-comptext/config\";\nvar Completion = require(\"$:/plugins/snowgoon88/edit-comptext/completion.js\").Completion;\n\nfunction SimpleCompEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\n // Completion\n\t// Load Completion configuration as JSON\n this._configOptions = $tw.wiki.getTiddlerData( COMPLETION_OPTIONS, {} );\n\t\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n\n\t// add Completion popup\n this._completion = new Completion( this.widget, this.domNode, this._configOptions );\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleCompEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleCompEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleCompEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleCompEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleCompEngine.prototype.handleInputEvent = function(event) {\n\tconsole.log( \"__simple.js::handleInputEvent\");\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleCompEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleCompEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleCompEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleCompEngine = SimpleCompEngine;\n\n})();\n",
"type": "application/javascript",
"title": "$:/plugins/snowgoon88/edit-comptext/simple.js",
"module-type": "library"
},
"$:/plugins/snowgoon88/edit-comptext/cursor-position.js": {
"text": "/*\\\nModule that compute the pixel position of the cursor of a text\nements.\n\nTaken from https://github.com/component/textarea-caret-position\n\n(as https://github.com/kir/js_cursor_position is not updated any more)\n\\*/\n// Fonction anonyme executée immediatement\n( function(){\n \n// The properties that we copy into a mirrored div.\n// Note that some browsers, such as Firefox,\n// do not concatenate properties, i.e. padding-top, bottom etc. -> padding,\n// so we have to do every single property specifically.\nvar properties = [\n 'direction', // RTL support\n 'boxSizing',\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n 'height',\n 'overflowX',\n 'overflowY', // copy the scrollbar for IE\n\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration', // might not make a difference, but better be safe\n\n 'letterSpacing',\n 'wordSpacing',\n\n 'tabSize',\n 'MozTabSize'\n\n];\nvar isFirefox = false;\nif($tw.browser) {\n isFirefox = window.mozInnerScreenX != null;\n}\n\nfunction getCaretCoordinates(element, position, options) {\n\n var debug = options && options.debug || false;\n if (debug) {\n var el = document.querySelector('#input-textarea-caret-position-mirror-div');\n if ( el ) { el.parentNode.removeChild(el); }\n }\n\n // mirrored div\n var div = document.createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n document.body.appendChild(div);\n\n var style = div.style;\n var computed;\n if($tw.browser) {\n computed = window.getComputedStyle? getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9\n } \n else {\n computed = element.currentStyle;\n }\n \n\n // default textarea styles\n style.whiteSpace = 'pre-wrap';\n if (element.nodeName !== 'INPUT')\n style.wordWrap = 'break-word'; // only for textarea-s\n\n // position off-screen\n style.position = 'absolute'; // required to return coordinates properly\n if (!debug)\n style.visibility = 'hidden'; // not 'display: none' because we want rendering\n\n // transfer the element's properties to the div\n properties.forEach(function (prop) {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n }\n\n div.textContent = element.value.substring(0, position);\n // the second special handling for input type=\"text\" vs textarea: spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (element.nodeName === 'INPUT')\n div.textContent = div.textContent.replace(/\\s/g, \"\\u00a0\");\n\n var span = document.createElement('span');\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textarea's content into the <span> created at the caret position.\n // for inputs, just '.' would be enough, but why bother?\n span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n div.appendChild(span);\n\n var coordinates = {\n top: span.offsetTop + parseInt(computed['borderTopWidth']),\n left: span.offsetLeft + parseInt(computed['borderLeftWidth'])\n };\n\n if (debug) {\n span.style.backgroundColor = '#aaa';\n } else {\n document.body.removeChild(div);\n }\n\n return coordinates;\n}\n\n// Exporte as a module of node.js otherwise set as global\nif (typeof module != \"undefined\" && typeof module.exports != \"undefined\") {\n module.exports = getCaretCoordinates;\n} else {\n window.getCaretCoordinates = getCaretCoordinates;\n}\n\n})();\n",
"type": "application/javascript",
"title": "$:/plugins/snowgoon88/edit-comptext/cursor-position.js",
"module-type": "library"
},
"$:/plugins/snowgoon88/edit-comptext/completion.js": {
"text": "/*\\\ntitle: $:/plugins/snowgoon88/edit-comptext/completion.js\ntype: application/javascript\nmodule-type: library\n\nTry to make self-contained completion module.\n\nTo use this 'module', you need a `widget` with a kind of `editarea` node.\nI do not know the exacte prerequisites of this editarea node for the module to\nwork, but mostly one should be able to attach the following `eventHandler` to\nit:\n - input\n - keydown\n - keypress\n - keyup\nThe `widget` is needed because I use:\n - widget.document\n - widget.wiki.filterTiddlers(...)\n\nFrom the Widget, once you have a proper editarea, you just have to call\n - var completion = new Completion( theWidget, theEditAreaNode, configObject);\nwhere `configObject` is expected to have the following fields. if a field is missing, a default value will be given.\nOne can have many `elements' in the template array.\n\n{\n \"configuration\": {\n \"caseSensitive\" : false,\n \"maxMatch\" : 8,\n \"minPatLength\" : 2,\n \"triggerKeyCombination\" : \"^ \"\n },\n \"template\": [{\n \"pattern\": \"[[\",\n \"filter\": \"[all[tiddlers]!is[system]]\",\n \"start\": \"[[\",\n \"end\": \"]]\"\n }\n ]\n}\n\nTODO : CHECK if needed\n\\*/\n\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// To compute pixel coordinates of cursor\nvar getCaretCoordinates = require(\"$:/plugins/snowgoon88/edit-comptext/cursor-position.js\");\n\n/** Default Completion Attributes */\nvar DEFATT = { maxMatch: 5, minPatLength: 2, caseSensitive: false, triggerKeyCombination: \"^ \" };\n\n/** \n * Struct for generic Completion Templates.\n * <ul>\n * <li>pat : pattern searched for.</li>\n * <li>filter : filter operation used to find the list of completion options</li>\n * <li>mask: replaced by \"\" when presenting completion options</li>\n * </ul>\n */\nvar Template = function( pat, filter, mask, field, start, end ) {\n this.pat = pat;\n this.filter = filter;\n this.mask = \"^\"+regExpEscape(mask);\n this.field = field;\n this.start = start;\n this.end = end;\n this.pos = 0;\n};\n/**\n * Struct for storing completion options, as we need to memorise \n * the titles of the tiddlers when masked and when body must be displayed.\n */\nvar OptCompletion = function( title, str ) {\n this.title = title;\n this.str = str;\n};\n\nvar keyMatchGenerator = function(combination) {\n\tlet singleMatchGenerator = function(character) {\n\t\tif (character === '^') {\n\t\t\treturn event => event.ctrlKey;\n\t\t}\n\t\telse if (character === '+') {\n\t\t\treturn event => event.shiftKey;\n\t\t}\n\t\telse if (character === '!') {\n\t\t\treturn event => event.altKey;\n\t\t}\n\t\telse {\n\t\t\treturn event => (event.keyCode || event.which) === character.charCodeAt(0);\n\t\t}\n\t};\n\n\tlet matchers = [];\n\tfor (let i = 0; i < combination.length; i++) {\n\t\tmatchers.push(singleMatchGenerator(combination[i]));\n\t}\n\n\treturn event => {\n\t\tfor (let i = 0; i < matchers.length; i++) {\n\t\t\tif (!matchers[i](event)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n};\n\n/**\n * Widget is needed in creating popupNode.\n * - widget.document\n * - widget.wiki.filterTiddlers(...)\n * - sibling : where to create the popup in the DOM.\n */\n\tvar Completion = function( editWidget, areaNode, param, sibling, offTop, offLeft ) {\n\tconsole.log( \"==Completion::creation\" );\n\n // About underlying Widget\n this._widget = editWidget;\n\tthis._areaNode = areaNode;\n\tthis._sibling = (typeof sibling !== 'undefined') ? sibling : this._areaNode;\n\tthis._offTop = (typeof offTop !== 'undefined') ? offTop : 0;\n\tthis._offLeft = (typeof offLeft !== 'undefined') ? offLeft : 0;\t\n\t\t\n // Completions attributes\n /** State */\n this._state = \"VOID\";\n this._template = undefined;\n /** Best matches */\n this._bestMatches = []; // An array of OptCompletion\n this._idxChoice = -1;\n /** Param */\n // maximum nb of match displayed\n this._maxMatch = param.configuration.maxMatch || DEFATT.maxMatch; \n this._minPatLength = param.configuration.minPatLength || DEFATT.minPatLength;\n this._caseSensitive= param.configuration.caseSensitive || DEFATT.caseSensitive;\n this._triggerKeyMatcher = keyMatchGenerator(param.configuration.triggerKeyCombination || DEFATT.triggerKeyCombination);\n /** Input information */\n this._lastChar = \"\";\n this._hasInput = false;\n /** List of Completion Templates */\n this._listTemp = [];\n \n // Read templates from Param\n if( param.template ) {\n \tvar idT;\n \tfor( idT=0; idT<param.template.length; idT++ ) {\n \t var temp = param.template[idT];\n\t // field 'body' ou 'title' (default)\n\t if( temp.body ) {\t\t\n \t\tthis._listTemp.push( \n \t\t new Template( temp.pattern, temp.body,\n\t\t\t\t temp.mask ? temp.mask : \"\",\n\t\t\t\t \"body\",\n \t\t\t\t temp.start, temp.end )\n \t\t);\n\t }\n\t else {\n \t\tthis._listTemp.push( \n \t\t new Template( temp.pattern, \n\t\t\t\t temp.title ? temp.title : temp.filter,\n\t\t\t\t temp.mask ? temp.mask : \"\",\n\t\t\t\t \"title\",\n \t\t\t\t temp.start, temp.end )\n \t\t);\n\t }\n\t //DEBUG temp = this._listTemp[this._listTemp.length-1];\n\t //DEBUG console.log( \"__CONF : \"+temp.pattern+\":\"+temp.filter+\":\"+temp.mask+\":\"+temp.field+\":\"+temp.start+\":\"+temp.end );\n \t}\n }\n // or defaut template\n else {\n \tthis._listTemp = [\n \t new Template( \"[[\", \"[all[tiddlers]!is[system]]\", \n\t\t\t \"\", \"title\",\n\t\t\t \"[[\", \"]]\" )\n \t];\n }\n // Create Popup\n\t//this._popNode = createPopup(this._widget, this._areaNode );\n\tthis._popNode = createPopup(this._widget, this._sibling );\t\n \n // Listen to the Keyboard\n $tw.utils.addEventListeners( this._areaNode,[\n\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInput\"},\n\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydown\"},\n\t{name: \"keypress\", handlerObject: this, handlerMethod: \"handleKeypress\"},\n \t{name: \"keyup\", handlerObject: this, handlerMethod: \"handleKeyup\"}\n ]);\n \n /** \n * Find the bestMatches among listChoice with given pattern\n * @param listChoice : array of String\n * @change : this._bestMatches => array of OptCompletion\n */\n this._findBestMatches = function( listChoice, pattern, nbMax) {\n\t// regexp search pattern, case sensitive\n\tvar flagSearch = this._caseSensitive ? \"\" : \"i\" ;\n\tvar regpat = RegExp( regExpEscape(pattern), flagSearch );\n\tvar regpat_start = RegExp( \"^\"+regExpEscape(pattern), flagSearch );\n\tvar regMask = RegExp( this._template.mask ? this._template.mask : \"\",\"\");\n\tvar nbMatch = 0;\n\t// nbMax set to _maxMatch if no value given\n\tnbMax = nbMax !== undefined ? nbMax : this._maxMatch;\n\n\t//DEBUG console.log( \"__FIND masked=\"+regMask+\" regPat=\"+regpat);\n\n\tthis._bestMatches= [];\n\tvar otherMatches = [];\n\t// We test every possible choice\n\tfor( var i=0; i< listChoice.length; i++ ) {\n\t // apply mask over potential choice\n\t var maskedChoice = listChoice[i].replace( regMask, \"\");\n\t // Test first if pattern is found at START of the maskedChoice\n\t // THEN added to BestMatches\n \t if( regpat_start.test( maskedChoice )) {\n\t\tif (nbMatch >= nbMax) {\n\t\t this._bestMatches.push( new OptCompletion(\"\",\"...\") );\n\t\t return;\n\t\t} else {\n\t\t this._bestMatches.push( new OptCompletion(listChoice[i],maskedChoice) );\n\t\t nbMatch += 1;\n\t\t}\n\t }\n\t // then if pattern is found WITHIN the maskedChoice\n\t // added AFTER the choices that starts with pattern\n\t else if( regpat.test( maskedChoice ) ) {\n\t\tif (nbMatch >= nbMax) {\n\t\t // add all otherMatches to _bestMatches\n\t\t this._bestMatches.push( new OptCompletion(\"\",\"<hr>\") ) ; //separator\n\t\t this._bestMatches = this._bestMatches.concat( otherMatches );\n\t\t this._bestMatches.push( new OptCompletion(\"\",\"...\") );\n\t\t return;\n\t\t} else {\n\t\t otherMatches.push( new OptCompletion(listChoice[i],maskedChoice) );\n\t\t nbMatch += 1;\n\t\t}\n\t }\n\t}\n\t// Here, must add the otherMatches\n\tthis._bestMatches.push( new OptCompletion(\"\",\"<hr>\") ) ; //separator\n\tthis._bestMatches = this._bestMatches.concat( otherMatches );\n };\n /**\n * Change Selected Status of Items\n */\n this._next = function (node) {\n\tvar count = node.children.length;\n\t//DEBUG console.log( \"__NEXT: co=\"+count+\" nbMatch=\"+this._bestMatches.length);\n\tif( this._bestMatches.length > 0 ) \n\t this._goto( node, this._idxChoice < count - 1 ? this._idxChoice + 1 : -1);\n\t//DEBUG this._logStatus( \"NexT\" );\n };\n this._previous = function (node) {\n\tvar count = node.children.length;\n\tvar selected = this._idxChoice > -1;\n\t//DEBUG console.log( \"__PREV: co=\"+count+\" nbMatch=\"+this._bestMatches.length);\n\tif( this._bestMatches.length > 0 ) \n\t this._goto( node, selected ? this._idxChoice - 1 : count - 1);\n\t//DEBUG this._logStatus( \"PreV\" );\n };\n // Should not be used, highlights specific item without any checks!\n this._goto = function (node, idx) {\n\tvar lis = node.children;\n\tvar selected = this._idxChoice > -1;\n\tif (selected) {\n\t lis[this._idxChoice].setAttribute(\"patt-selected\", \"false\");\n\t}\n\n\tthis._idxChoice = idx;\n \n\tif (idx > -1 && lis.length > 0) {\n\t lis[idx].setAttribute(\"patt-selected\", \"true\");\n\t}\n };\n /**\n * Abort pattern and undisplay.\n */\n this._abortPattern = function (displayNode) {\n\tthis._state = \"VOID\";\n\tthis._bestChoices = [];\n\tthis._idxChoice = -1;\n\tthis._undisplay( displayNode );\n\tthis._template = undefined;\n };\n /**\n * Display popupNode at the cursor position in areaNode.\n */\n this._display = function( areaNode, popupNode ) {\n\tif ( popupNode.style.display == 'none' ) {\n\t // Must get coordinate\n\t // Cursor coordinates within area + area coordinates + scroll\n var coord = getCaretCoordinates(areaNode, areaNode.selectionEnd);\n var styleSize = getComputedStyle(areaNode).getPropertyValue('font-size');\n var fontSize = parseFloat(styleSize); \n\t\t\n\t popupNode.style.left = (this._offLeft+areaNode.offsetLeft-areaNode.scrollLeft+coord.left) + 'px';\n\t popupNode.style.top = (this._offTop+areaNode.offsetTop-areaNode.scrollTop+coord.top+fontSize*2) + 'px';\n\t popupNode.style.display = 'block';\n\t}\n };\n /**\n * Undisplay someNode\n */\n this._undisplay = function( displayNode ) {\n\tif ( displayNode.style.display != 'none' ) {\n\t displayNode.style.display = 'none';\n\t}\n };\n\n /**\n * Used for debug\n */\n this._logStatus = function(msg) {\n\tconsole.log( \"__STATUS: \"+this._state+\":-\"+msg+\"- idx=\"+this._idxChoice );\n };\n\n};\n// **************************************************************************\n// ******************************************************************eventCbk\n// **************************************************************************\n/**\n * Disable the *effects* of ENTER / UP / DOWN / ESC when needed.\n * Set _hasInput to false.\n */\nCompletion.prototype.handleKeydown = function(event) {\n // key \n var key = event.keyCode;\n this._hasInput = false;\n \n //DEBUG console.log( \"__KEYDOWN (\"+key+\") hasI=\"+this._hasInput);\n \n // ENTER while selecting\n if( (this._state === \"PATTERN\" || this._state === \"SELECT\") && key === 13 ) {\n \tevent.preventDefault();\n \tevent.stopPropagation();\n }\n // ESC while selecting\n if( (this._state === \"PATTERN\" || this._state === \"SELECT\") && key === 27 ) {\n \tevent.preventDefault();\n \tevent.stopPropagation();\n }\n // UP/DOWN while a pattern is extracted\n if( (key===38 || key===40) && \n\t(this._state === \"PATTERN\" || this._state === \"SELECT\") ) {\n\tevent.preventDefault();\n }\n};\n/**\n * Means that something has been added/deleted => set _hasInput\n */\nCompletion.prototype.handleInput = function(event) {\n this._hasInput = true;\n //DEBUG console.log( \"__INPUT hasI=\"+this._hasInput );\n};\n\t\n/**\n * Set _lastChar, detects CTRL+SPACE.\n */\nCompletion.prototype.handleKeypress = function(event) {\n var curPos = this._areaNode.selectionStart; // cursor position\n var val = this._areaNode.value; // text in the area\n // key \n var key = event.keyCode || event.which;\n\t\n this._lastChar = String.fromCharCode(key);\n //DEBUG console.log( \"__KEYPRESS (\"+key+\") hasI=\"+this._hasInput+\" char=\"+this._lastChar );\n //DEBUG this._logStatus( \"KEYPRESS\" );\n \n // Detect Ctrl+Space\n if( this._triggerKeyMatcher(event) && this._state === \"VOID\" ) {\n\t//Find a proper Template\n\t// first from which we can extract a pattern\n\tif( this._template === undefined ) {\n\t //DEBUG console.log(\"__SPACE : find a Template\" );\n\t var idT, res;\n\t for( idT=0; idT < this._listTemp.length; idT++ ) {\n\t\tres = extractPattern( val, curPos, this._listTemp[idT] );\n\t\t//DEBUG console.log(\" t=\"+this._listTemp[idT].pat+\" res=\"+res);\n\t\t// res is not undefined => good template candidate\n\t\tif( res ) {\n\t\t this._template = this._listTemp[idT];\n\t\t this._state = \"PATTERN\";\n\t\t break;\n\t\t}\n\t }\n\t}\n\telse {\n\t //DEBUG console.log(\"__SPACE : already a template\" );\n\t this._state = \"PATTERN\";\n\t}\n }\n};\n/**\n * ESC -> abort; \n * Detect [ -> VOID switch to _state=PATTERN\n * PATTERN || SELECT : ENTER -> insertText\n * UP/DOWN -> previous/next\n * pattern.length > _minPatternLength -> display \n */\nCompletion.prototype.handleKeyup = function(event) {\n var curPos = this._areaNode.selectionStart; // cursor position\n var val = this._areaNode.value; // text in the area\n // key a\n var key = event.keyCode;\n \n //DEBUG console.log( \"__KEYUP (\"+key+\") hasI=\"+this._hasInput );\n \n // ESC\n if( key === 27 ) {\n\tthis._abortPattern( this._popNode );\n\t//DEBUG this._logStatus( \"\" );\n }\n // Check for every template\n if( this._hasInput && this._state === \"VOID\" ) {\n\t// check every template's pattern\n\tvar idT, template;\n\tfor( idT=0; idT < this._listTemp.length; idT++ ) {\n\t template = this._listTemp[idT];\n\t if( this._lastChar === template.pat[template.pos] ) {\n\t\ttemplate.pos += 1;\n\t\t//DEBUG console.log( \"__CHECK : pat=\"+template.pat+\" pos=\"+template.pos );\n\t\t// Pattern totaly matched ?\n\t\tif( template.pos === template.pat.length ) {\n\t\t //DEBUG console.log( \"__CHECK => found \"+template.pat );\n\t\t this._state = \"PATTERN\";\n\t\t this._template = template;\n\t\t \n\t\t break; // get out of loop\n\t\t}\n\t }\n\t else {\n\t\ttemplate.pos = 0;\n\t\t//DEBUG console.log( \"__CHECK : pat=\"+template.pat+\" pos=\"+template.pos );\n\t }\n\t}\n }\n // a pattern\n else if( this._state === \"PATTERN\" || this._state === \"SELECT\" ) {\n\t// Pattern below cursor : undefined if no pattern\n\tvar pattern = extractPattern( val, curPos, this._template );\n\tif( key === 13 ) { // ENTER\n\t //DEBUG console.log( \"KEY : Enter\" );\n \t // Choice made in the displayNode ?\n \t var selected = this._idxChoice > -1 && this._idxChoice !== this._maxMatch;\n \t //DEBUG console.log( \" > sel=\"+selected+\" len=\"+this._bestChoices.length );\n \t if( selected ) {\n \t\t//DEBUG console.log( \" > selected\" );\n\t\tvar temp = this._bestMatches[this._idxChoice];\n\t\tvar str = temp.str;\n\t\tif( this._template.field === \"body\" ) {\n\t\t str = $tw.wiki.getTiddlerText( temp.title );\n\t\t}\n \t\tinsertInto( this._areaNode,\n\t\t\t str,\n\t\t\t pattern.start, curPos, this._template );\n\t\t// save this new content\n\t\tthis._widget.saveChanges( this._areaNode.value );\n\t }\n\t // otherwise take the first choice (if exists)\n\t else if( this._bestMatches.length > 0 ) {\n \t\t//DEBUG console.log( \" > take first one\" );\n\t\tvar temp = this._bestMatches[0];\n\t\tvar str = temp.str;\n\t\tif( this._template.field === \"body\" ) {\n\t\t str = $tw.wiki.getTiddlerText( temp.title );\n\t\t}\n \t\tinsertInto( this._areaNode,\n\t\t\t str,\n\t\t\t pattern.start, curPos, this._template );\n\t\t// save this new content\n\t\tthis._widget.saveChanges( this._areaNode.value );\n\t }\n\t this._abortPattern( this._popNode );\n\t\t//DEBUG this._logStatus( \"\" );\n \t }\n\t else if( key === 38 && this._hasInput === false) { // up\n\t\tthis._state = \"SELECT\";\n \t\tevent.preventDefault();\n \t\tthis._previous( this._popNode );\n\t\t//DEBUG this._logStatus( pattern.text );\n \t\t//event.stopPropagation();\n \t }\n \t else if( key === 40 && this._hasInput === false) { // down\n\t\tthis._state = \"SELECT\";\n \t\tevent.preventDefault();\n \t\tthis._next( this._popNode );\n\t\t//DEBUG this._logStatus( pattern.text );\n \t\t//event.stopPropagation();\n \t }\n \t else if( pattern ) { // pattern changed by keypressed\n\t\tthis._idxChoice = -1;\n \t\t// log\n\t\t//DEBUG this._logStatus( pattern.text );\n \t\t// Popup with choices if pattern at least minPatLength letters long\n\t\tif( pattern.text.length > (this._minPatLength-1) ) {\n\t\t // compute listOptions from templateFilter\n\t\t var allOptions;\n\t\t if( this._template )\n\t\t\tallOptions = this._widget.wiki.filterTiddlers( this._template.filter );\n\t\t else\n\t\t\tallOptions = this._widget.wiki.filterTiddlers(\"[all[tiddlers]]\");\n\t\t this._findBestMatches( allOptions, pattern.text );\n \t\t this._popNode.innerHTML = \"\";\n \t\t //console.log( \"BC \"+ this._pattern + \" => \" + choice );\n \t\t if (this._bestMatches.length > 0) {\n\t\t\tfor( var i=0; i<this._bestMatches.length; i++) {\n \t\t\t this._popNode.appendChild( \n\t\t\t\titemHTML(this._bestMatches[i].str,\n\t\t\t\t\t pattern.text));\n \t\t\t}\n\t\t\tthis._display( this._areaNode, this._popNode );\t\t\t\n \t\t }\n\t\t else { // no matches\n\t\t\tthis._state = \"PATTERN\";\n\t\t\tthis._undisplay( this._popNode );\n\t\t }\n\t\t}\n \t }\n\t else { // no pattern detected\n\t\tthis._abortPattern( this._popNode );\n\t }\n\t}\n\t// to ensure that one MUST add an input (through onInput())\n\tthis._hasInput = false;\n};\n// **************************************************************************\n// ******************************************************** private functions\n// **************************************************************************\n/**\n * Create popup element.\n */\nvar createPopup = function( widget, node ) {\n // Insert a special \"div\" element for poping up\n // Its 'display' property in 'style' control its visibility\n var popupNode = widget.document.createElement(\"div\");\n popupNode.setAttribute( \"style\", \"display:none; position: absolute;\");\n popupNode.className = \"tc-block-dropdown ect-block-dropdown\";\n // Insert the element into the DOM\n node.parentNode.insertBefore(popupNode,node.nextSibling);\n //CHECK the domNodes is a attribute of Widget [widget.js]\n //CHECK this.domNodes.push(popupNode);\n \n return popupNode;\n};\n/**\n * Extract Pattern from text at a given position.\n *\n * Between previous template.pat (or '[[') and pos\n * \n * If no pattern -> undefined\n */\nvar extractPattern = function( text, pos, template ) {\n // Detect previous and next ]]=>STOP or [[=>START\n var sPat = template.pat ? template.pat : '[[';\n var pos_prevOpen = text.lastIndexOf( sPat, pos );\n var ePat = template.end ? template.end : ']]';\n var pos_prevClosed = text.lastIndexOf( ePat, pos );\n var pos_nextClosed = text.indexOf( ePat, pos );\n //DEBUG console.log(\"__CALC st=\"+sPat+\" -> en=\"+ePat );\n //DEBUG console.log(\"__CALC po=\"+pos_prevOpen+\" pc=\"+pos_prevClosed+\" nc=\"+pos_nextClosed+\" pos=\"+pos);\n pos_nextClosed = (pos_nextClosed >= 0) ? pos_nextClosed : pos;\n \n if( (pos_prevOpen >= 0) && // must be opened\n\t((pos_prevOpen > pos_prevClosed ) || // not closed yet\n\t (pos_prevClosed === pos))) { // closed at cursor\n\t//DEBUG console.log(\" pat=\"+text.slice( pos_prevOpen+sPat.length, pos) );\n\treturn { text: text.slice( pos_prevOpen+sPat.length, pos ),\n\t\t start: pos_prevOpen,\n\t\t end: pos_nextClosed\n\t };\n }\n};\n/**\n * Controls how list items are generated.\n * Function that takes two parameters :\n * - text : suggestion text\n * - input : the user’s input\n * Returns : list item. \n * Generates list items with the user’s input highlighted via <mark>.\n */\nvar itemHTML = function (text, input ) {\n // text si input === ''\n // otherwise, build RegExp that is global (g) and case insensitive (i)\n // to replace with <mark>$&</mark> where \"$&\" is the matched pattern\n var html = input === '' ? text : text.replace(RegExp(regExpEscape(input.trim()), \"gi\"), \"<mark>$&</mark>\");\n return create(\"li\", {\n\tinnerHTML: html,\n\t\"patt-selected\": \"false\"\n });\n};\n/**\n * Insert text into a textarea node, \n * enclosing in 'template.start..template.end'\n *\n * - posBefore : where the 'template.pat+pattern' starts\n * - posAfter : where the cursor currently is\n */\nvar insertInto = function(node, text, posBefore, posAfter, template ) {\n //DEBUG console.log( \"__INSERT : \"+template.pattern+\":\"+template.filter+\":\"+template.mask+\":\"+template.field+\":\"+template.start+\":\"+template.end );\n var val = node.value;\n var sStart = template.start !== undefined ? template.start : '[[';\n var sEnd = template.end !== undefined ? template.end : ']]';\n var newVal = val.slice(0, posBefore) + sStart + text + sEnd + val.slice(posAfter);\n //console.log(\"__INSERT s=\"+sStart+\" e=\"+sEnd);\n //console.log (\"__INSERT pb=\"+posBefore+\" pa=\"+posAfter+\" txt=\"+text);\n //console.log( \"NEW VAL = \"+newVal );\n // WARN : Directly modifie domNode.value.\n // Not sure it does not short-circuit other update methods of the domNode....\n // i.e. could use widget.updateEditor(newVal) from edit-comptext widget.\n // but how to be sure that cursor is well positionned ?\n node.value = newVal;\n node.setSelectionRange(posBefore+text.length+sStart.length+sEnd.length, posBefore+text.length+sStart.length+sEnd.length );\n};\n/**\n * Add an '\\' in front of -\\^$*+?.()|[]{}\n */\nvar regExpEscape = function (s) {\n return s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n};\n/**\n * Add an element in the DOM.\n */\nvar create = function(tag, o) {\n var element = document.createElement(tag);\n \n for (var i in o) {\n\tvar val = o[i];\n\t\n\tif (i === \"inside\") {\n\t $(val).appendChild(element);\n\t}\n\telse if (i === \"around\") {\n\t var ref = $(val);\n\t ref.parentNode.insertBefore(element, ref);\n\t element.appendChild(ref);\n\t}\n\telse if (i in element) {\n\t element[i] = val;\n\t}\n\telse {\n\t element.setAttribute(i, val);\n\t}\n }\n \n return element;\n};\n\n\nexports.Completion = Completion;\n\n})();\n\n \n",
"type": "application/javascript",
"title": "$:/plugins/snowgoon88/edit-comptext/completion.js",
"module-type": "library"
},
"$:/plugins/snowgoon88/edit-comptext/edit-comptext.css": {
"text": "\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/* The \\rules pragma at the top of the tiddler restricts the WikiText \n * to just allow macros and transclusion. This avoids mistakenly \n * triggering unwanted WikiText processing.\n * \n * MUST not save as text/css for macro to be processed\n*/\n\n.ect-block-dropdown li {\n display: block;\n padding: 4px 14px 4px 14px;\n text-decoration: none;\n color: <<colour tiddler-link-foreground>>; /*#5778d8;*/ \n background: transparent;\n}\n.ect-block-dropdown li[patt-selected=\"true\"] {\n color: <<colour tiddler-link-background>>; /*#ffffff; */\n background-color: <<colour tiddler-link-foreground>>; /*#5778d8; */\n}\n.ect-block-dropdown li[patt-selected=\"true\"] mark {\n background: hsl(86, 100%, 21%);\n color: inherit;\n}\n\n",
"type": "text/vnd.tiddlywiki",
"title": "$:/plugins/snowgoon88/edit-comptext/edit-comptext.css",
"tags": "[[$:/tags/Stylesheet]]"
},
"$:/plugins/snowgoon88/edit-comptext/readme": {
"title": "$:/plugins/snowgoon88/edit-comptext/readme",
"text": "!! What ?\nThis plugin adds ''completion'' when editing the body of a tiddler.\n\n* Enter completion-mode by typing `[[` or `CTRL+SPACE`\n* A list of tiddlers with a title that matches the pattern between `[[` and cursor appears\n* `UP/DOWN` keys can select a tiddler, `ENTER` to validate\n* If there is only one match, `ENTER` selects it.\n* `NEW` : you can specify you own trigger pattern and the list of possible completions. See [[$:/plugins/snowgoon88/edit-comptext/usage]] for more details.\n\n\n!! To try it or get the latest news\nSee [[http://snowgoon88.github.io/TW5-extendedit]]\n\n!! Install \n\nTo add the plugin to your own TiddlyWiki5, just drag this link to the browser window:\n\n[[$:/plugins/snowgoon88/edit-comptext]]\n\nSometime, a small configuration step is then needed\n\nin `$:/ControlPanel -> Advanced -> Editor Type -> text/vnd.tiddlywiki` you must chose `comptext` instead of `text`.\n\nReload and « voilà »...\n\nThis plugin is quite mature now :o)\n\n!! Old version\n\n* A version compatible with 5.0.8 to 5.1.11 : [[http://snowgoon88.github.io/TW5-extendedit/index_5.1.11.html]]\n\n!! Source code\nOn github [[https://github.com/snowgoon88/TW5-extendedit]]\n\nGet in touch : snowgoon88(AT)gmail(DOT)com\n"
},
"$:/plugins/snowgoon88/edit-comptext/usage": {
"title": "$:/plugins/snowgoon88/edit-comptext/usage",
"text": "''Important'' : be sure that in `$:/ControlPanel -> Advanced -> Editor Type -> text/vnd.tiddlywiki` you have chosen `comptext` instead of `text`.\n\nConfiguration of the edit-comptext plugin can be done through the tiddler [[$:/plugins/snowgoon88/edit-comptext/config]]. Use a JSON tiddler (do not forget to set the type to `application/json`. See some examples at [[$:/plugins/snowgoon88/edit-comptext/examples]]\n\nIn the `configuration` object you can set :\n\n* `caseSensitive`: `true`/`false` (is search case sensitive ?)\n* `maxMatch` : an `integer` (max number of match displayed)\n* `minPatLength` : an `integer` (minimal length of a pattern to trigger completion search)\n* `triggerKeyCombination ` : a `string` representing the key combination that triggers the autocompletion popup. To use modifier keys in your combination, use following conversions : `ctrl` -> `^`, `alt` -> `!`, `shift` -> `+`. Note: ` ` (literally a whitespace) represents the `space` key.\n\nIn the `template` array you can specify the various completion templates that will be used. Every template can have the following members.\n\n* `pattern` : `string` (pattern that triggers a completion, default \"[[\" )\n* `title` or `body`: `string` (the filter operators that gives the list of valid completions, default \"[all[tiddlers]!is[system]]\"). If you specify `body`, then the body of the tiddler will be inserted on selection.\n* `start` : `string` (when completion is chosen, start is put before the completion, default \"[[\")\n* `end` : `string` (when completion is chosen, end is put after the completion, default \"]]\")\n\n!! Current body of Config Tiddler\n\n{{$:/plugins/snowgoon88/edit-comptext/config}}\n\n"
}
}
}
{
"configuration": {
"caseSensitive" : false,
"maxMatch" : 8,
"minPatLength" : 2,
"triggerKeyCombination" : "^ "
},
"template": [{
"pattern": "[[",
"filter": "[all[tiddlers]!is[system]]",
"start": "[[",
"end": "]]"
}
]
}
{
"tiddlers": {
"$:/plugins/tobibeer/plantuml/defaults/edit": {
"title": "$:/plugins/tobibeer/plantuml/defaults/edit",
"text": "true"
},
"$:/plugins/tobibeer/plantuml/lingo/edit": {
"title": "$:/plugins/tobibeer/plantuml/lingo/edit",
"text": "globally enable edit links for all output (\"yes\" or \"true\")"
},
"$:/plugins/tobibeer/plantuml/lingo/edit-link": {
"title": "$:/plugins/tobibeer/plantuml/lingo/edit-link",
"text": "» edit:"
},
"$:/plugins/tobibeer/plantuml/readme": {
"title": "$:/plugins/tobibeer/plantuml/readme",
"text": "The plugin $:/plugins/tobibeer/plantuml provides:\n\n; `[[plantuml[<uml>]]]`\r\n: a widget to render [[PlantUML|http://plantuml.org]] diagrams online as either image or text\r\n: allows the same attributes as <<x \"Images in WikiText\">>\n\n<br>\n\n; documentation / examples / demos...\r\n: http://tobibeer.github.io/tw5-plugins#plantuml"
},
"$:/plugins/tobibeer/plantuml/styles": {
"title": "$:/plugins/tobibeer/plantuml/styles",
"tags": "$:/tags/Stylesheet",
"text": ".tc-plantuml-txt {\r\n\tborder:0;\r\n\twidth:100%;\r\n\theight:400px;\r\n}\r\n.tc-plantuml-edit.tc-tiddlylink-external{\r\n text-decoration:none;\r\n}"
},
"$:/plugins/tobibeer/plantuml/utils.js": {
"title": "$:/plugins/tobibeer/plantuml/utils.js",
"text": "/*\\\r\ntitle: $:/plugins/tobibeer/plantuml/utils.js\r\ntype: application/javascript\r\nmodule-type: utils\r\n\r\nUtility functions to handle plantuml...\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";var r={encodePlantUML:function(r,e){return e===\"src\"?r:(e===\"edit\"?\"http://www.planttext.com/planttext?text=\":\"http://www.plantuml.com/plantuml/\"+e+\"/\")+this.encode64(this.deflate()(unescape(encodeURIComponent(r))))},encode64:function(r){var e,n=\"\";for(e=0;e<r.length;e+=3){if(e+2==r.length){n+=this.append3bytes(r.charCodeAt(e),r.charCodeAt(e+1),0)}else if(e+1==r.length){n+=this.append3bytes(r.charCodeAt(e),0,0)}else{n+=this.append3bytes(r.charCodeAt(e),r.charCodeAt(e+1),r.charCodeAt(e+2))}}return n},append3bytes:function(r,e,n){var a=\"\",f=r>>2,i=(r&3)<<4|e>>4,t=(e&15)<<2|n>>6,l=n&63;a+=this.encode6bit(f&63);a+=this.encode6bit(i&63);a+=this.encode6bit(t&63);a+=this.encode6bit(l&63);return a},encode6bit:function(r){if(r<10){return String.fromCharCode(48+r)}r-=10;if(r<26){return String.fromCharCode(65+r)}r-=26;if(r<26){return String.fromCharCode(97+r)}r-=26;if(r===0){return\"-\"}if(r===1){return\"_\"}return\"?\"}};r.deflate=function(){var r=32768;var e=0;var n=1;var a=2;var f=6;var i=true;var t=32768;var l=64;var v=1024*8;var o=2*r;var u=3;var c=258;var s=16;var d=8192;var h=13;var w=d;var _=1<<h;var x=_-1;var y=r-1;var m=0;var A=4096;var p=c+u+1;var b=r-p;var g=1;var C=15;var I=7;var k=29;var S=256;var j=256;var z=S+1+k;var U=30;var L=19;var M=16;var P=17;var R=18;var q=2*z+1;var B=parseInt((h+u-1)/u);var D;var E,F;var G;var H=null;var J,K;var N;var O;var Q;var T;var V;var W;var X;var Y;var Z;var $;var rr;var er;var nr;var ar;var fr;var ir;var tr;var lr;var vr;var or;var ur;var cr;var sr;var dr;var hr;var wr;var _r;var xr;var yr;var mr;var Ar;var pr;var br;var gr;var Cr;var Ir;var kr;var Sr;var jr;var zr;var Ur;var Lr;var Mr;var Pr;var Rr;var qr;var Br;var Dr;var Er;var Fr;function Gr(){this.fc=0;this.dl=0}function Hr(){this.dyn_tree=null;this.static_tree=null;this.extra_bits=null;this.extra_base=0;this.elems=0;this.max_length=0;this.max_code=0}function Jr(r,e,n,a){this.good_length=r;this.max_lazy=e;this.nice_length=n;this.max_chain=a}function Kr(){this.next=null;this.len=0;this.ptr=new Array(v);this.off=0}var Nr=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];var Or=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];var Qr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];var Tr=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];var Vr=[new Jr(0,0,0,0),new Jr(4,4,8,4),new Jr(4,5,16,8),new Jr(4,6,32,32),new Jr(4,4,16,16),new Jr(8,16,32,32),new Jr(8,16,128,128),new Jr(8,32,128,256),new Jr(32,128,258,1024),new Jr(32,258,258,4096)];function Wr(r){var e;if(!r)r=f;else if(r<1)r=1;else if(r>9)r=9;ur=r;G=false;tr=false;if(H!=null)return;D=E=F=null;H=new Array(v);O=new Array(o);Q=new Array(w);T=new Array(t+l);V=new Array(1<<s);dr=new Array(q);for(e=0;e<q;e++)dr[e]=new Gr;hr=new Array(2*U+1);for(e=0;e<2*U+1;e++)hr[e]=new Gr;wr=new Array(z+2);for(e=0;e<z+2;e++)wr[e]=new Gr;_r=new Array(U);for(e=0;e<U;e++)_r[e]=new Gr;xr=new Array(2*L+1);for(e=0;e<2*L+1;e++)xr[e]=new Gr;yr=new Hr;mr=new Hr;Ar=new Hr;pr=new Array(C+1);br=new Array(2*z+1);Ir=new Array(2*z+1);kr=new Array(c-u+1);Sr=new Array(512);jr=new Array(k);zr=new Array(U);Ur=new Array(parseInt(d/8))}function Xr(){D=E=F=null;H=null;O=null;Q=null;T=null;V=null;dr=null;hr=null;wr=null;_r=null;xr=null;yr=null;mr=null;Ar=null;pr=null;br=null;Ir=null;kr=null;Sr=null;jr=null;zr=null;Ur=null}function Yr(r){r.next=D;D=r}function Zr(){var r;if(D!=null){r=D;D=D.next}else r=new Kr;r.next=null;r.len=r.off=0;return r}function $r(e){return V[r+e]}function re(e,n){return V[r+e]=n}function ee(r){H[K+J++]=r;if(K+J==v)Pe()}function ne(r){r&=65535;if(K+J<v-2){H[K+J++]=r&255;H[K+J++]=r>>>8}else{ee(r&255);ee(r>>>8)}}function ae(){Z=(Z<<B^O[fr+u-1]&255)&x;$=$r(Z);V[fr&y]=$;re(Z,fr)}function fe(r,e){Ue(e[r].fc,e[r].dl)}function ie(r){return(r<256?Sr[r]:Sr[256+(r>>7)])&255}function te(r,e,n){return r[e].fc<r[n].fc||r[e].fc==r[n].fc&&Ir[e]<=Ir[n]}function le(r,e,n){var a;for(a=0;a<n&&Fr<Er.length;a++)r[e+a]=Er.charCodeAt(Fr++)&255;return a}function ve(){var e;for(e=0;e<_;e++)V[r+e]=0;or=Vr[ur].max_lazy;cr=Vr[ur].good_length;if(!i)sr=Vr[ur].nice_length;vr=Vr[ur].max_chain;fr=0;Y=0;lr=le(O,0,2*r);if(lr<=0){tr=true;lr=0;return}tr=false;while(lr<p&&!tr)ue();Z=0;for(e=0;e<u-1;e++){Z=(Z<<B^O[e]&255)&x}}function oe(r){var e=vr;var n=fr;var a;var f;var t=ar;var l=fr>b?fr-b:m;var v=fr+c;var o=O[n+t-1];var u=O[n+t];if(ar>=cr)e>>=2;do{a=r;if(O[a+t]!=u||O[a+t-1]!=o||O[a]!=O[n]||O[++a]!=O[n+1]){continue}n+=2;a++;do{}while(O[++n]==O[++a]&&O[++n]==O[++a]&&O[++n]==O[++a]&&O[++n]==O[++a]&&O[++n]==O[++a]&&O[++n]==O[++a]&&O[++n]==O[++a]&&O[++n]==O[++a]&&n<v);f=c-(v-n);n=v-c;if(f>t){ir=r;t=f;if(i){if(f>=c)break}else{if(f>=sr)break}o=O[n+t-1];u=O[n+t]}}while((r=V[r&y])>l&&--e!=0);return t}function ue(){var e,n;var a=o-lr-fr;if(a==-1){a--}else if(fr>=r+b){for(e=0;e<r;e++)O[e]=O[e+r];ir-=r;fr-=r;Y-=r;for(e=0;e<_;e++){n=$r(e);re(e,n>=r?n-r:m)}for(e=0;e<r;e++){n=V[e];V[e]=n>=r?n-r:m}a+=r}if(!tr){e=le(O,fr+lr,a);if(e<=0)tr=true;else lr+=e}}function ce(){while(lr!=0&&E==null){var r;ae();if($!=m&&fr-$<=b){nr=oe($);if(nr>lr)nr=lr}if(nr>=u){r=Se(fr-ir,nr-u);lr-=nr;if(nr<=or){nr--;do{fr++;ae()}while(--nr!=0);fr++}else{fr+=nr;nr=0;Z=O[fr]&255;Z=(Z<<B^O[fr+1]&255)&x}}else{r=Se(0,O[fr]&255);lr--;fr++}if(r){ke(0);Y=fr}while(lr<p&&!tr)ue()}}function se(){while(lr!=0&&E==null){ae();ar=nr;rr=ir;nr=u-1;if($!=m&&ar<or&&fr-$<=b){nr=oe($);if(nr>lr)nr=lr;if(nr==u&&fr-ir>A){nr--}}if(ar>=u&&nr<=ar){var r;r=Se(fr-1-rr,ar-u);lr-=ar-1;ar-=2;do{fr++;ae()}while(--ar!=0);er=0;nr=u-1;fr++;if(r){ke(0);Y=fr}}else if(er!=0){if(Se(0,O[fr-1]&255)){ke(0);Y=fr}fr++;lr--}else{er=1;fr++;lr--}while(lr<p&&!tr)ue()}}function de(){if(tr)return;W=0;X=0;_e();ve();E=null;J=0;K=0;if(ur<=3){ar=u-1;nr=0}else{nr=u-1;er=0}N=false}function he(r,e,n){var a;if(!G){de();G=true;if(lr==0){N=true;return 0}}if((a=we(r,e,n))==n)return n;if(N)return a;if(ur<=3)ce();else se();if(lr==0){if(er!=0)Se(0,O[fr-1]&255);ke(1);N=true}return a+we(r,a+e,n-a)}function we(r,e,n){var a,f,i;a=0;while(E!=null&&a<n){f=n-a;if(f>E.len)f=E.len;for(i=0;i<f;i++)r[e+a+i]=E.ptr[E.off+i];E.off+=f;E.len-=f;a+=f;if(E.len==0){var t;t=E;E=E.next;Yr(t)}}if(a==n)return a;if(K<J){f=n-a;if(f>J-K)f=J-K;for(i=0;i<f;i++)r[e+a+i]=H[K+i];K+=f;a+=f;if(J==K)J=K=0}return a}function _e(){var r;var e;var n;var a;var f;if(_r[0].dl!=0)return;yr.dyn_tree=dr;yr.static_tree=wr;yr.extra_bits=Nr;yr.extra_base=S+1;yr.elems=z;yr.max_length=C;yr.max_code=0;mr.dyn_tree=hr;mr.static_tree=_r;mr.extra_bits=Or;mr.extra_base=0;mr.elems=U;mr.max_length=C;mr.max_code=0;Ar.dyn_tree=xr;Ar.static_tree=null;Ar.extra_bits=Qr;Ar.extra_base=0;Ar.elems=L;Ar.max_length=I;Ar.max_code=0;n=0;for(a=0;a<k-1;a++){jr[a]=n;for(r=0;r<1<<Nr[a];r++)kr[n++]=a}kr[n-1]=a;f=0;for(a=0;a<16;a++){zr[a]=f;for(r=0;r<1<<Or[a];r++){Sr[f++]=a}}f>>=7;for(;a<U;a++){zr[a]=f<<7;for(r=0;r<1<<Or[a]-7;r++)Sr[256+f++]=a}for(e=0;e<=C;e++)pr[e]=0;r=0;while(r<=143){wr[r++].dl=8;pr[8]++}while(r<=255){wr[r++].dl=9;pr[9]++}while(r<=279){wr[r++].dl=7;pr[7]++}while(r<=287){wr[r++].dl=8;pr[8]++}Ae(wr,z+1);for(r=0;r<U;r++){_r[r].dl=5;_r[r].fc=Le(r,5)}xe()}function xe(){var r;for(r=0;r<z;r++)dr[r].fc=0;for(r=0;r<U;r++)hr[r].fc=0;for(r=0;r<L;r++)xr[r].fc=0;dr[j].fc=1;Br=Dr=0;Lr=Mr=Pr=0;Rr=0;qr=1}function ye(r,e){var n=br[e];var a=e<<1;while(a<=gr){if(a<gr&&te(r,br[a+1],br[a]))a++;if(te(r,n,br[a]))break;br[e]=br[a];e=a;a<<=1}br[e]=n}function me(r){var e=r.dyn_tree;var n=r.extra_bits;var a=r.extra_base;var f=r.max_code;var i=r.max_length;var t=r.static_tree;var l;var v,o;var u;var c;var s;var d=0;for(u=0;u<=C;u++)pr[u]=0;e[br[Cr]].dl=0;for(l=Cr+1;l<q;l++){v=br[l];u=e[e[v].dl].dl+1;if(u>i){u=i;d++}e[v].dl=u;if(v>f)continue;pr[u]++;c=0;if(v>=a)c=n[v-a];s=e[v].fc;Br+=s*(u+c);if(t!=null)Dr+=s*(t[v].dl+c)}if(d==0)return;do{u=i-1;while(pr[u]==0)u--;pr[u]--;pr[u+1]+=2;pr[i]--;d-=2}while(d>0);for(u=i;u!=0;u--){v=pr[u];while(v!=0){o=br[--l];if(o>f)continue;if(e[o].dl!=u){Br+=(u-e[o].dl)*e[o].fc;e[o].fc=u}v--}}}function Ae(r,e){var n=new Array(C+1);var a=0;var f;var i;for(f=1;f<=C;f++){a=a+pr[f-1]<<1;n[f]=a}for(i=0;i<=e;i++){var t=r[i].dl;if(t==0)continue;r[i].fc=Le(n[t]++,t)}}function pe(r){var e=r.dyn_tree;var n=r.static_tree;var a=r.elems;var f,i;var t=-1;var l=a;gr=0;Cr=q;for(f=0;f<a;f++){if(e[f].fc!=0){br[++gr]=t=f;Ir[f]=0}else e[f].dl=0}while(gr<2){var v=br[++gr]=t<2?++t:0;e[v].fc=1;Ir[v]=0;Br--;if(n!=null)Dr-=n[v].dl}r.max_code=t;for(f=gr>>1;f>=1;f--)ye(e,f);do{f=br[g];br[g]=br[gr--];ye(e,g);i=br[g];br[--Cr]=f;br[--Cr]=i;e[l].fc=e[f].fc+e[i].fc;if(Ir[f]>Ir[i]+1)Ir[l]=Ir[f];else Ir[l]=Ir[i]+1;e[f].dl=e[i].dl=l;br[g]=l++;ye(e,g)}while(gr>=2);br[--Cr]=br[g];me(r);Ae(e,t)}function be(r,e){var n;var a=-1;var f;var i=r[0].dl;var t=0;var l=7;var v=4;if(i==0){l=138;v=3}r[e+1].dl=65535;for(n=0;n<=e;n++){f=i;i=r[n+1].dl;if(++t<l&&f==i)continue;else if(t<v)xr[f].fc+=t;else if(f!=0){if(f!=a)xr[f].fc++;xr[M].fc++}else if(t<=10)xr[P].fc++;else xr[R].fc++;t=0;a=f;if(i==0){l=138;v=3}else if(f==i){l=6;v=3}else{l=7;v=4}}}function ge(r,e){var n;var a=-1;var f;var i=r[0].dl;var t=0;var l=7;var v=4;if(i==0){l=138;v=3}for(n=0;n<=e;n++){f=i;i=r[n+1].dl;if(++t<l&&f==i){continue}else if(t<v){do{fe(f,xr)}while(--t!=0)}else if(f!=0){if(f!=a){fe(f,xr);t--}fe(M,xr);Ue(t-3,2)}else if(t<=10){fe(P,xr);Ue(t-3,3)}else{fe(R,xr);Ue(t-11,7)}t=0;a=f;if(i==0){l=138;v=3}else if(f==i){l=6;v=3}else{l=7;v=4}}}function Ce(){var r;be(dr,yr.max_code);be(hr,mr.max_code);pe(Ar);for(r=L-1;r>=3;r--){if(xr[Tr[r]].dl!=0)break}Br+=3*(r+1)+5+5+4;return r}function Ie(r,e,n){var a;Ue(r-257,5);Ue(e-1,5);Ue(n-4,4);for(a=0;a<n;a++){Ue(xr[Tr[a]].dl,3)}ge(dr,r-1);ge(hr,e-1)}function ke(r){var f,i;var t;var l;l=fr-Y;Ur[Pr]=Rr;pe(yr);pe(mr);t=Ce();f=Br+3+7>>3;i=Dr+3+7>>3;if(i<=f)f=i;if(l+4<=f&&Y>=0){var v;Ue((e<<1)+r,3);Me();ne(l);ne(~l);for(v=0;v<l;v++)ee(O[Y+v])}else if(i==f){Ue((n<<1)+r,3);je(wr,_r)}else{Ue((a<<1)+r,3);Ie(yr.max_code+1,mr.max_code+1,t+1);je(dr,hr)}xe();if(r!=0)Me()}function Se(r,e){T[Lr++]=e;if(r==0){dr[e].fc++}else{r--;dr[kr[e]+S+1].fc++;hr[ie(r)].fc++;Q[Mr++]=r;Rr|=qr}qr<<=1;if((Lr&7)==0){Ur[Pr++]=Rr;Rr=0;qr=1}if(ur>2&&(Lr&4095)==0){var n=Lr*8;var a=fr-Y;var f;for(f=0;f<U;f++){n+=hr[f].fc*(5+Or[f])}n>>=3;if(Mr<parseInt(Lr/2)&&n<parseInt(a/2))return true}return Lr==d-1||Mr==w}function je(r,e){var n;var a;var f=0;var i=0;var t=0;var l=0;var v;var o;if(Lr!=0)do{if((f&7)==0)l=Ur[t++];a=T[f++]&255;if((l&1)==0){fe(a,r)}else{v=kr[a];fe(v+S+1,r);o=Nr[v];if(o!=0){a-=jr[v];Ue(a,o)}n=Q[i++];v=ie(n);fe(v,e);o=Or[v];if(o!=0){n-=zr[v];Ue(n,o)}}l>>=1}while(f<Lr);fe(j,r)}var ze=16;function Ue(r,e){if(X>ze-e){W|=r<<X;ne(W);W=r>>ze-X;X+=e-ze}else{W|=r<<X;X+=e}}function Le(r,e){var n=0;do{n|=r&1;r>>=1;n<<=1}while(--e>0);return n>>1}function Me(){if(X>8){ne(W)}else if(X>0){ee(W)}W=0;X=0}function Pe(){if(J!=0){var r,e;r=Zr();if(E==null)E=F=r;else F=F.next=r;r.len=J-K;for(e=0;e<r.len;e++)r.ptr[e]=H[K+e];J=K=0}}return function Re(r,e){var n,a;Er=r;Fr=0;if(typeof e==\"undefined\")e=f;Wr(e);var i=new Array(1024);var t=[];while((n=he(i,0,i.length))>0){var l=new Array(n);for(a=0;a<n;a++){l[a]=String.fromCharCode(i[a])}t[t.length]=l.join(\"\")}Er=null;return t.join(\"\")}};exports.plantuml=r})();",
"type": "application/javascript",
"module-type": "utils"
},
"$:/plugins/tobibeer/plantuml/widget.js": {
"title": "$:/plugins/tobibeer/plantuml/widget.js",
"text": "/*\\\r\ntitle: $:/plugins/tobibeer/plantuml/widget.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nA widget to render plantuml\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";var t=require(\"$:/core/modules/widgets/widget.js\").widget;var e=function(t,e){this.initialise(t,e)};e.prototype=new t;e.prototype.render=function(t,e){this.parentDomNode=t;this.computeAttributes();this.execute();var i,s,u,r,a=this.node,l=[],n=function(t){var e=t;while(e){if(e.nodeName&&(e.nodeName===\"a\"||e.nodeName===\"button\")){return 1}e=e.parentNode}return 0};switch(this.output){case\"src\":a.type=\"element\";a.tag=\"pre\";a.children=[{type:\"text\",text:this.source}];l.push(a);break;case\"txt\":a.type=\"element\";a.tag=\"iframe\";a.attributes.src={type:\"string\",value:$tw.utils.plantuml.encodePlantUML(this.source,this.output)};i=a.attributes[\"class\"]?a.attributes[\"class\"].value+\" \":\"\";a.attributes[\"class\"]={type:\"string\",value:i+\"tc-plantuml-txt\"};s=a.attributes.height?\"height:\"+a.attributes.height.value+\";\":\"\";r=a.attributes.width?\"width:\"+a.attributes.width.value+\";\":\"\";if(s||r){a.attributes.style={type:\"string\",value:s+r}}if(a.attributes.tooltip&&!this.edit){l.push({type:\"element\",tag:\"div\",attributes:{\"class\":{type:\"string\",value:\"tc-plantuml-txt-title\"}},children:[{type:\"text\",text:a.attributes.tooltip.value}]})}l.push(a);break;default:a.attributes.source={type:\"string\",value:$tw.utils.plantuml.encodePlantUML(this.source,this.output)};l.push(a)}if(this.edit&&!n(this.parentDomNode)){u={type:\"element\",tag:\"a\",attributes:{\"class\":{type:\"string\",value:\"tc-plantuml-edit tc-tiddlylink-external\"},target:{type:\"string\",value:\"_blank\"},href:{type:\"string\",value:$tw.utils.plantuml.encodePlantUML(this.source,\"edit\")}}};if(this.output===\"txt\"){u.children=[{type:\"text\",text:this.wiki.getTextReference(\"$:/plugins/tobibeer/plantuml/lingo/edit-link\")+(a.attributes.tooltip?a.attributes.tooltip.value:\"\")}];l.unshift(u)}else{u.children=l;l=[u]}}this.makeChildWidgets(l);this.renderChildren(this.parentDomNode,e)};e.prototype.execute=function(){var t=this;this.source=this.getAttribute(\"source\",\"\");this.output=this.getAttribute(\"output\",\"svg\");this.edit=this.getAttribute(\"edit\");if(this.edit===undefined){this.edit=this.wiki.getTextReference(\"$:/plugins/tobibeer/plantuml/defaults/edit\")}this.edit=[\"yes\",\"true\"].indexOf((this.edit||\"\").toLowerCase())>=0;this.node={type:\"image\",attributes:{}};[\"width\",\"height\",\"class\",\"tooltip\",\"alt\"].map(function(e){var i=t.getAttribute(e);if(i!==undefined){t.node.attributes[e]={type:\"string\",value:i}}})};e.prototype.refresh=function(){var t=this.computeAttributes();if(t.source||t.width||t.height||t[\"class\"]||t.tooltip||t.output||t.edit){this.refreshSelf();return true}else{return false}};exports.plantuml=e})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/tobibeer/plantuml/wikirule.js": {
"title": "$:/plugins/tobibeer/plantuml/wikirule.js",
"text": "/*\\\r\ntitle: $:/plugins/tobibeer/plantuml/wikirule.js\r\ntype: application/javascript\r\nmodule-type: wikirule\r\n\r\nWiki text inline rule for embedding plantuml from http://plantuml.org\r\n\r\n[[plantuml[<uml>]]]\r\n[[plantuml width=23 height=24 [<uml>]]]\r\n[[plantuml width={{!!width}} height={{!!height}} tooltip=\"nice stuff\"[<uml>]]]\r\n```\r\n\r\nThis widget is entirely modeled after the core ImageWidget\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";exports.name=\"plantuml\";exports.types={inline:true,block:true};exports.init=function(t){this.parser=t};exports.findNextMatch=function(t){this.nextPlantUML=this.findnextPlantUML(this.parser.source,t);return this.nextPlantUML?this.nextPlantUML.start:undefined};exports.parse=function(){this.parser.pos=this.nextPlantUML.end;return[this.nextPlantUML]};exports.findnextPlantUML=function(t,e){var n=/(\\[\\[plantuml)/g;n.lastIndex=e;var i=n.exec(t);while(i){var r=this.parsePlantUml(t,i.index);if(r){return r}n.lastIndex=i.index+1;i=n.exec(t)}return null};exports.parsePlantUml=function(t,e){var n,i={type:\"plantuml\",start:e,attributes:{}};e=$tw.utils.skipWhiteSpace(t,e);n=$tw.utils.parseTokenString(t,e,\"[[plantuml\");if(!n){return null}e=n.end;e=$tw.utils.skipWhiteSpace(t,e);if(t.charAt(e)!==\"[\"){var r=$tw.utils.parseAttribute(t,e);while(r){i.attributes[r.name]=r;e=r.end;e=$tw.utils.skipWhiteSpace(t,e);if(t.charAt(e)!==\"[\"){r=$tw.utils.parseAttribute(t,e)}else{r=null}}}e=$tw.utils.skipWhiteSpace(t,e);n=$tw.utils.parseTokenString(t,e,\"[\");if(!n){return null}e=n.end;e=$tw.utils.skipWhiteSpace(t,e);n=$tw.utils.parseTokenRegExp(t,e,/([^]+?)\\]\\]\\]/gm);if(!n){return null}e=n.end;i.attributes.source={type:\"string\",value:(n.match[1]||\"\").trim()};i.end=e;return i}})();",
"type": "application/javascript",
"module-type": "wikirule"
}
}
}
Collaboration and development wiki
LeDoux,McCloud,McDonald,TiddlyWiki,TiddlyWiki5,CamelCase,DuBay,McGraw,McCullough,LeGrange,NaCl,MeOH,EtOH,PiB,TiddlyTools,ResetFind,WikiText,WinBuilder,WinPE,ProgramData,TiddlyFox,GuillermoMartin,AndrewFraser,RochesterMNwalkers,DEdwardsCalgary,WalkaboutMM,HarveyG,McCoy,GeForce,SideBar,AirBnB,PayPal,LeBron,JavaScript,ExpressJet,CutePDF,McClouds,McElroy,McGovern,TableHelper,ShadowTiddler,WikiWords
{
"tags": "",
"tmap.edges": "",
"filter": ""
}
{
"tags": "",
"tmap.edges": "",
"filter": "ANY-VALUE"
}
$:/plugins/felixhayashi/tiddlymap/dialog/configureView/vis
$:/plugins/felixhayashi/tiddlymap/dialog/configureView/default
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis
$:/plugins/felixhayashi/tiddlymap/dialog/configureView/vis
$:/core/ui/ControlPanel/Palette
$:/plugins/felixhayashi/tiddlymap/dialog/configureView/editFilters
$:/core/ui/ControlPanel/Basics
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/liveTab
$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/draft
$:/core/ui/ControlPanel/Plugins/Installed/Plugins
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/default
$:/plugins/felixhayashi/tiddlymap/dialog/editNode/local
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis
$:/plugins/felixhayashi/tiddlymap/dialog/editNode/local
$:/plugins/felixhayashi/tiddlymap/dialog/editNode/local
$:/core/ui/DefaultSearchResultList
$:/core/ui/ControlPanel/Plugins
$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/draft
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis
$:/plugins/felixhayashi/tiddlymap/dialog/configureView/vis
$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/draft
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis
$:/plugins/felixhayashi/tiddlymap/dialog/configureView/vis
$:/plugins/felixhayashi/tiddlymap/dialog/fullscreenTiddlerEditor/draft
$:/plugins/felixhayashi/tiddlymap/dialog/globalConfig/vis
$:/core/ui/MoreSideBar/Shadows
{
"tiddlers": {
"$:/info/browser": {
"title": "$:/info/browser",
"text": "yes"
},
"$:/info/node": {
"title": "$:/info/node",
"text": "no"
},
"$:/info/url/full": {
"title": "$:/info/url/full",
"text": "file:///Users/andreasgehrmann/Documents/GitHub/SRMS-home/AG4GitHub.github.io/index.html"
},
"$:/info/url/host": {
"title": "$:/info/url/host",
"text": ""
},
"$:/info/url/hostname": {
"title": "$:/info/url/hostname",
"text": ""
},
"$:/info/url/protocol": {
"title": "$:/info/url/protocol",
"text": "file:"
},
"$:/info/url/port": {
"title": "$:/info/url/port",
"text": ""
},
"$:/info/url/pathname": {
"title": "$:/info/url/pathname",
"text": "/Users/andreasgehrmann/Documents/GitHub/SRMS-home/AG4GitHub.github.io/index.html"
},
"$:/info/url/search": {
"title": "$:/info/url/search",
"text": ""
},
"$:/info/url/origin": {
"title": "$:/info/url/origin",
"text": "file://"
},
"$:/info/browser/screen/width": {
"title": "$:/info/browser/screen/width",
"text": "1440"
},
"$:/info/browser/screen/height": {
"title": "$:/info/browser/screen/height",
"text": "900"
},
"$:/info/browser/language": {
"title": "$:/info/browser/language",
"text": "en-GB"
}
}
}
$:/themes/tiddlywiki/snowwhite
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n background-color: transparent;\n}\n\n\"\"\">>\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n vertical-align: middle;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n \tcursor: pointer;\n\tcolor: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: text-bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: 20%;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n font-size: 0.8em;\n margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n padding: 2px 7px;\n font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n \tlist-style-type: none;\n \tpadding-left: 0;\n \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n \tpadding-left: 1em; \n}\n\n.tc-tree button { \n \tcolor: #acacac;\n}\n\n.tc-tree svg {\n \tfill: #acacac;\n}\n\n.tc-tree span svg {\n \twidth: 1em;\n \theight: 1em;\n \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n \tcolor: lightgray;\n}\n\nselect {\n color: <<colour select-tag-foreground>>;\n background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
"text": "350px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"text": "fixed-fluid"
},
"$:/themes/tiddlywiki/vanilla/options/codewrapping": {
"title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\""
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
}
}
}
! Change log
{{Change log}}
[img[SRMS Rope Walker.jpg]]
! This is the collaboration wiki of SRMS & Associates Pte. Ltd. and SRMS Asia
[img[SRMS Collaboration.jpg]]
[[Development process]]
[[Risk Treatment Option]]
[[ISO/IEC 21838]]
[[Basic Formal Ontology (BFO)
| https://github.com/bfo-ontology/BFO/wiki]]
# Added this change log tiddler
# Added GraphViz plugin
see [[Example Graphviz]]
# Added AsciiDoc plugin
see [[Example AsciiDoc]]
[img[SRMS Collaboration.jpg]]
<div class='tc-table-of-contents'>
<<toc-selective-expandable 'Contents' sort[title]>>
</div>
! Systems should be specified using UML
! Usage of UML [[PlantUML]]
[[https://docs.google.com/document/d/1OcW3S53uGJY9HVrbF35ggcvp_ivu0QF5s-2KCPyWmvM/edit?usp=sharing]]
https://danielorodriguez.com/TW5-EncryptTiddlerPlugin/
== Guidance on selection of security and risk management services
Expectations are often driven by one or more of the following:
. Customers expect or require adherence to or against a particular standard
. The client was compromised and has the desire to improve its risk and security posture
. A certification has a marketing value
. Regulatory or legal requirements need to be met.
. Need for a security health-check
. Gap analysis against good security practice
. Need for a risk assessment
. Need for a technical vulnerability assessment
. Evaluation of product or services security
Depending on client’s need we can provide a different service.
In order to provide suitable service the following should be clear.
=== Understanding the different approaches to information security
A baseline security approach is focusing on commonly accepted security controls. While a risk-based management approach helps to identify the right level of control and aligned with the business context.
Both approaches have advantages and disadvantages.
A baseline security approach does not requires much involvement of higher management and focuses on supporting assets, like security equipment and associated technology.
A risk-based approach is focusing on primary assets like information and business processes protected by supporting assets.
It provides basic concepts and explanation about different approaches
=== Factors to consider in choosing a selecting a scope
Depending on the following the scope and nature of the service should be recommended.
. Operation of cloud-based infrastructure vs. classical infrastructure or hybrid
. Industry trends
. Code development
. Supply-chain dependencies
. Role of personal data
. Regulatory environment
. Existing procedures related to risk assessment and business continuity
=== The role of risk assessment
Baseline and risk-based management standards require commonly some form of risk assessment.
Risk assessments plays a central role in management system standards, especially in ISO/IEC 27001.
In baseline security standards risk assessment is often understood of assessment of residual risks or assessment of the risk of failure of controls.
ISO 31000 is the common reference for management system standards. This standard provides a very high-level approach to risk management and risk assessment in particular. It is not easy to apply for IT and information security assessments. ISO/IEC 27005 is much more specific and a useful reference for implementing an ISMS. Unfortunately the current version of ISO/IEC 27005 is not aligned with last revision of ISO/IEC 27001.
=== How ISO/IEC 27001 works
The standard ‘specifies the requirements for establishing, implementing, operating, monitoring, reviewing, maintaining and improving formalized information security management systems (ISMS) within the context of the organization’s overall business risks. It specifies requirements for the implementation of information security controls customized to the needs of individual organizations or parts thereof. ‘
‘ISO/IEC 27001 provides normative requirements for the development and operation of an ISMS, including a set of controls for the control and mitigation of the risks associated with the information assets which the organization seeks to protect by operating its ISMS. Organizations operating an ISMS may have its conformity audited and certified. The control objectives and controls from Annex A (ISO/IEC 27001) shall be selected as part of this ISMS process as appropriate to cover the identified requirements. ‘
ISO / IEC 27001:2013 addresses 7 Management areas
. Context of the organization
. Leadership
. Planning
. Support
. Operation
. Performance evaluation
. Improvement
Annex A refers to ISO/IEC 27002 and list 14 areas of controls and control objectives,
A.5 Information security policies
A.6 Organization of information security
A.7 Human resource security
A.8 Asset management
A.9 Access control
A.10 Cryptographic Controls
A.11 Physical and environmental security
A.12 Operational Security
A.13 Communications security
A.14 System acquisition, development and maintenance
A.15 Supplier relationships
A.16 Information security incident management
A.17 Information security aspects of business continuity management
A.18 Compliance
+
The mechanism to select objectives and controls is define in clause 6.1.3 Information security risk treatment
The standard requires , the organization shall apply an information security risk treatment process to:
a) select appropriate information security risk treatment options, taking account of the risk assessment results;
b) determine all Controls that are necessary to implement the information security risk treatment option(s) chosen +
_NOTE: Organizations can design Controls as required, or identify them from any source._ +
c) compare the Controls determined in 6.1.3 b) above with those in Annex A and verify that no necessary controls have been omitted; +
_NOTE 1: Annex A contains a comprehensive list of Control objectives and Controls. Users of this International Standard are directed to Annex A to ensure that no important Control options are overlooked_ +
_NOTE 2: Control objectives are implicitly included in the Controls chosen. The Control objectives and Controls listed in Annex A are not exhaustive and additional control objectives and controls may also be needed._ +
_….”_
The figure below describes the relationship between key concepts.
! Example 1
<$viz text="""
graph B {
rankdir=RL;
subgraph cluster_a {
label="subgraph";
a -- b;
}
a -- c;
}
"""/>
! Example 2
<$viz text=' digraph G {
Consola->nginx [label="Pide encriptar url para cliente", color=green]
nginx [shape=box];
nginx->Consola [color=red]
client-> HAPROXY [color=red]
STUPID [shape=box];
HAPROXY -> STUPID [color=red]
STUPID -> Prelanderred
STUPID -> STUPID [color=green, label="Pasa del nginx al hhvm desdencriptado"]
vsh [shape=box];
STUPID->vsh [color=red]
}' class="myexample"/>
[[PlantUML | https://plantuml.com/]]
! Use case diagram
[[plantuml[
@startuml
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
@enduml
]]]
[[plantuml[
@startuml
left to right direction
skinparam packageStyle rectangle
actor customer
actor clerk
rectangle checkout {
customer -- (checkout)
(checkout) .> (payment) : include
(help) .> (checkout) : extends
(checkout) -- clerk
}
@enduml
]]]
[[plantuml[
@startuml
:user: -left-> (dummyLeft)
:user: -right-> (dummyRight)
:user: -up-> (dummyUp)
:user: -down-> (dummyDown)
@enduml
]]]
! Sequence diagram
[[plantuml[
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml
]]]
! Activity diagram
!! Example 1
[[plantuml[
@startuml
:Hello world;
:This is defined on
several **lines**;
@enduml
]]]
!! Example 2
[[plantuml[
@startuml
start
:Hello world;
:This is defined on
several **lines**;
stop
@enduml
]]]
!! Example 3
[[plantuml[
@startuml
start
:Hello world;
:This is defined on
several **lines**;
end
@enduml
]]]
!! Example 4
[[plantuml[
@startuml
start
if (Graphviz installed?) then (yes)
:process all\ndiagrams;
else (no)
:process only
__sequence__ and __activity__ diagrams;
endif
stop
@enduml
]]]
# Click the '+' on the right to make a new Tiddler
# Add some text
# Include a bi-directional link to another page with [[Other Topic]].
# Click through to the link above to make the page.
#View it on 'Map'
[[ http://tobibeer.github.io/tw5-plugins/#plantuml]]
[[ https://www.w3.org/TR/vocab-org/]]
[[StatiCrypt | https://github.com/robinmoisson/staticrypt]]
[[Standards]]
[[ISO/IEC 21838 | https://www.iso.org/standard/71954.html]]
[[http://www.estrellaproject.org/doc/D1.4-OWL-Ontology-of-Basic-Legal-Concepts.pdf]]
$:/plugins/bimlas/locator
<$vars searchTiddler=" ">
<<locator-fields>>
</$vars>
! ORM will be a powerful ontology based risk management tool
[[OntoRisk Project]]
Widget Code Generator
Use the code below to embed a view in a tiddler.
<$tmap view="OntoRisk Project" ></$tmap>
[[Example Plant UML]]
! Use case diagram
[[plantuml[
@startuml
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
@enduml
]]]
[img[OrgOntology.png]]
[[The Organization Ontology W3C Recommendation 16 January 2014 | https://www.w3.org/TR/vocab-org/]]
[[SRMS GDoc | https://docs.google.com/document/d/16_XNtoI_awJ2tLMonu-aSgdSbN1mYkOg5KXNnWa_nHI/edit]]
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np6ueTYvk/QSAh2DgAivOsZ1kiqFgBAQAkLg2gmI8OraGUoGISAEbkwCIry6Ma+rzEoICAEhIASEgFsCp06dwj/+8Q98++23csPVLSVpaGsCdHPmmWeewS/VqleRkZFtPbyMJwSEgBAQAjc5gbVr12rhxciRI7XwIjw8vN0Q2bBhA1asWIGhQ4fq2jrC5+SePXs0z7i4OC26IUGbHN4TKC0tRUFBATZu3IgFCxaAhFhPP/00Jk6ciNjYWISFmVuEep+3LSJJyES1k2jsgw8+wK5du3Tts2fPRkxMjF5Rqi3q8GYM4kq10gqAVOvixYt1rU888YSulVjLIQSEgBDwhoAIr7yhJDFCQAgIASFwIxAQ4dWNcBVlDkJACLQGARFetQZVySkEhIAQEAJCoB0ToC009u3bB1o9gQ76l95yCIHrSYD/RTyt4jBkyBC9ldL1rEfGFgJCQAgIgZuPwIcffoj33nsPd911F5599lktumgvFD755BO8//77mDJliq4tPj6+vZTmtg5aPYh4JiUl6ZoHDBjgNlYaGhM4d+6c/nt9586d2LZtm952cPTo0SBhIAnwiGt7PS5fvoy9e/eCxHdU+5kzZzBmzBiMGjVK156WltZuSqetHOm/i7hWWg2QaiXWxJkecggBISAEvCEgwitvKEmMEBACQkAI3AgERHh1I1xFmYMQEAKtQUCEV61BVXIKASEgBISAEBACQkAICAEhIASEgBAQAh2GwJ///Gf86U9/wuOPP663ve3SpUu7qf2NN97QtT300EP44x//CNpysL0fn3/+ua65b9++uuYRI0a095LbRX30DyLoQQKgZcuW4ejRoygvL9e+4OBg9OnTBzNnztRCdRKus3i9PRTPtdMWg0uXLsX27dt17dXV1aDaafUoqv3222/XdV/v2mlLRBKJEed169bpWmm1LqqVtsikWunh6+vbrji3h2stNQgBIdCYgAivGjMRjxAQAkJACNyYBER4dWNeV5mVEBAC105AhFfXzlAyCAEhIASEgBAQAkJACAgBISAEhIAQEAIdmIAIr1r24onwqnk8aes7Ev9s3boVH3/8Ma5cuaJXuSLxD61+RaKguXPnYvz48QgMDERAQEDzBmqFXrW1tbr2EydOgFZpo1WkaIUuEgpS7STImjNnDu6//35de6dOnVqhCu9SkuiKOOfk5OhaV61aBRIH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uTlReNU5TvQiARIgARIgARIgARIgAQqveA+EKwEKr8J15Tnv/kaAwqv+tiKshwRIgARIgARIgARIgARChMBvfvMbPPbYY8jPz0dsbCwiIyNDZGacRjgQaG5uRn19vbPT1aOPPoqHH344HKbNOfZDAhRe9cNFuUIlUXh1hUAzDQmQAAmQAAmQAAmQwIAnQOHVgF9CTqCbBCi86iY4DiOBXiZA4VUvA2U4EiABEiABEiABEiABEiABLwEjvPrxj3+M7Oxs3HDDDcjIyCAaEhgwBKqqqmBED/v27cOaNWsovBowKxd6hVJ4FXpr2tkZUXjVWVL0IwESIAESIAESIAESCHcCFF6F+x0QvvOn8Cp8154z718EKLzqX+vBakiABEiABEiABEiABEggZAj87//+r7PjlXlMm9kxaNy4cSEzN04k9AkUFhY69+9TTz3l3L+PPPJI6E+aM+yXBCi86pfLckWKovDqimBmEhIgARIgARIgARIggRAgQOFVCCwip9AtAhRedQsbB5FArxOg8KrXkTIgCZAACZAACZAACZAACZCAIUDhFe+DgUyAwquBvHqhVTuFV6G1nl2ZDYVXXaFFXxIgARIgARIgARIggXAmQOFVOK9+eM+dwqvwXn/Ovv8QoPCq/6wFKyEBEiABEiABEiABEiCBkCJA4VVILWfYTYbCq7Bb8n47YQqv+u3S9HlhFF71OWImIAESIAESIAESIAESCBECFF6FyEJyGl0mQOFVl5FxAAn0CQEKr/oEK4OSAAmQAAmQAAmQAAmQAAlQeMV7YCAToPBqIK9eaNVO4VVorWdXZkPhVVdo0ZcESIAESIAESIAESCCcCVB4Fc6rH95zp/AqvNefs+8/BCi86j9rwUpIgARIgARIgARIgARIIKQIUHgVUssZdpOh8CrslrzfTpjCq367NH1eGIVXfY6YCUiABEiABEiABEiABEKEAIVXIbKQnEaXCVB41WVkHEACfUKAwqs+wcqgJEACJEACJEACJEACJEACFF7xHhjIBCi8GsirF1q1U3gVWuvZldlQeNUVWvQlARIgARIgARIgARIIZwIUXoXz6of33Cm8Cu/15+z7DwEKr/rPWrASEiABEiABEiABEiABEggpAhRehdRyht1kKLwKuyXvtxOm8KrfLk2fF0bhVZ8jZgISIAESIAESIAESIIEQIUDhVYgsJKfR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0U5QPuXFm8980zy1w8RgjtBvzRnGpLjxck1M2KvEq1PudUD9tm0NJ0uRVPloqh3rj3Tme6yK92I9Y7Z6E7SaecxNbDh1cW1MIiXPtoNsLadDagfD/sXNtYLa7KEppLXiaiQxvOfIytPnykux/UGNDteXvGANkuu1b60hruEgLpgqvOicmqa2Brh+tXU8vas7uV3F7L4xVz5uhFe/McKrKy/H7bffjpqamvRKM4oESIAESIAESIAESCByAhReRY6UBUmABEiABEiABEiABEiABISACq8uvato4KUAAEAASURBVPRSfPOb38To0aMJhgQuGALHjh3DHXfcgQceeAC33XYbvvvd714wvbNREuhuAhReRbMDFF5Fw5FVSCATAiq8Ol7XADnxKk54ZekgRHASJxBJa1KrQKj2sH0iWskLtDW+3xPbpFXbCgrVJYHPVYlYoe6tvab21uiWlxpxU6hhL019JjatOUy8G+f22p5t50mMTG230l6e63fXryIjibPncOPcOu3b2pXCUVsz/N33RXji68TT4C5ep9Ipkl1NO3ZH7a0z5RRJAjrL0d6LZEuQsc7OYddNtPawhzQ52fXa3seRlq7bhMjurzQnXj0iJ15ReNWGDx0kQAIkQAIkQAIk0NUEKLzqauKcjwRIgARIgARIgARIgARyhMBdd92F73//+6isrMScOXNQVVWVIyvnMnsDgdraWmzYsAG7d+/2/gvyW2+9tTcsi2sggS4hQOFVNJgpvIqGI6uQQCYEQuFVbQPe97kvYfLcBZmUy81cFffY2hH1CRHXb9u5Sax3rzqJ8IrPQse2/oXHH/GEV1dTeNUxcIwmARIgARIgARIggSwQoPAqC1BZkgRIgARIgARIgARIgARIAPj973+PH//4x9i/fz9xkMAFS0AEg9/61rfwta997YJdAxsnga4mQOFVNMQpvIqGI6uQQCYEbOHVTZ9tK7yihiQNuvp+RP8deeagJkdZpX5R3XhAbVVWGvXTCHH3SVLsWeyOEsWmMYXfuhUYdX2r9AV8q3ssSwgI2c+DtxGOP3w+olu2u8fZ2KuumEOEV4/+712g8Cq6Z4OVSIAESIAESIAESKCzBCi86iw55pEACZAACZAACZAACZAACSQl8Nprr+Gll17C2bNnzSsd7F9nJE3jIAn0GAJ55p0hxcXFWLBggXdqW49pjI2QQA8n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cd1jtXWL1Z/imd/95la8+cp6vO/GG3D77bejpqZGK/BKAiRAAiRAAiRAAiTQxQQovOpi4JyOBEiABEiABEiABEiABEiABEiABEiABHozAQqvotldCq+i4cgqJJAJgeXLl+MHP/gBVq1ejYKCAuTl52dSLiaqkSqeuCKzcr02W8VHvZ2TrpPPQvJHORc4dWKNLc3NkK+PfexjFF4lf4I4SgIkQAIkQAIkQAJZJ0DhVdYRcwISIAESIAESIAESIAESIAESIAESIAESyB0CFF5Fs9cUXkXDkVVIIBMCb7zxBp5++mns2rUrkzLMJQESIIGsEZgzZw6WLl2KIUOGZG0OFiYBEiABEiABEiABEkhOgMKr5Hw4SgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0AECFF51AFaSUAqvksDhEAl0EYHGxkbU1dWhqampi2bkNCRAAiTQMQLFxcUoLS31TuXrWCajSYAESIAESIAESIAEoiJA4VVUJFmHBEiABEiABEiABEiABEiABEiABEiABEgAFF5F8xBQeBUNR1YhARIgARIgARIgARIgARIgARIgARIggWwSoPAqm3RZmwRIgARIgARIgARIgARIgARIgARIgARyjACFV9FsOIVX0XBkFRIgARIgARIgARIgARIgARIgARIgARLIJgEKr7JJl7VJgARIgARIgARIgARIgARIgARIgARIIMcIUHgVzYZTeBUNR1YhARIgARIgARIgARIgARIgARIgARIggWwSoPAqm3RZmwRIgARIgARIgARIgARIgARIgARIgARyjACFV9FsOIVX0XBkFRIgARIgARIgARIgARIgARIgARIgARLIJgEKr7JJl7VJgARIgARIgARIgARIIIcJbNu2DRs3bsT58+fR2tqawyS4dBJIn0BeXh769euHmTNnYsyYMeknMpIEehABCq+i2QwKr6LhyCokQAIkQAIkQAIkQAIkQAIkQAIkQAIkkE0CFF5lky5rkwAJkAAJkAAJkAAJkEAOE/jzn/+Mn//85zhw4EAOU+DSSaDjBCZNmoRbbrkFN9xwQ8eTmUECPYAAhVfRbAKFV9FwZBUSIAESIAESIAESIAESIAESIAESIAESyCYBCq+ySZe1SYAESIAESIAESIAESCCHCdx11134/ve/j+LiYkydOhV9+vTJYRpcOgmkJnD8+HG89tpr6N+/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dGQOmSfJJ2UL7QSkbEED2slP0pI/pPkpA01AtufoRP3HzIlXFF6ls3mMIQESIAESIAESIIHsEaDwKntsWZkESIAESIAESIAESIAEcppAdwqvag+8jNqDr+Cn//sEfvzLxzF83gcx6arP4abFE/DhRSPQv7LogtublobTaD5/CLve2IjVf38GL6x9Gc+9vBM79h5LuJbC8kGonHQ9xs+5Gl/98GzcfE0Nisy/yL/wVp5web3Sma7wqsWo7M6dO4eTJ09i1apVWL16NTZu3IhNmzZh2rRpmDlzJhYuXIjFixejf//+POGqVz4tPXtRFF5Fsz8UXkXDMVerxAuvvhN/4pUR8HofPQ1T7a6E5c6ttvagPalfbR13/WrruB2vY7ZP45Jd3Ty1NUfrqV9tHU/n6uaqrblaU/1q63iqq5untuZpPduvPo3J9lXn1nnV1nnVL7aO2b5Efo1za6jfzde49q5untp2vNbUMbXtmGT3bp7amqP11K+2jqdzdXPV1lytqX61dbwrru7cauvc2pP61dZx16+2jmu8+r0/DjuivDKFwlznz9J25+hkfann9ptgDgqvFAqvJEACJEACJEACJNB9BCi86j72nJkESIAESIAESIAESIAEejWBbhVeHXoVdQdfxR2/fRw/uusxVC/4AKYu/TxuXDQBH1w4Av0qLiD5UXMtWpvPYN/2N7D5xVXYvGkzNr31Ft45XotTef1RVN4fo4b0w4CqUnOiVTNam+pRd+4s6psKUd93OqqGz8CHrpuKay4dDznn68I766s7fkzMqxsbanFk12YcfHsbth0swa5jZZi3cBLmmK8yI2CTr6g/7Qmv9ISr8+fPY+/evd6XnHC1b98+1NfXe1+F5pWS8iUnW40aNSr8Kisr806+ytNfEEXdNOuRQAICFF4lgNIJF4VXnYDGlJBATHg1GV/9lrxqMMWJV2GmuVGNgP5dp7bGuH61dVyumqNjatsx7n1nYnUuydW/61SoIHNqTY2Tq350THtTW8eTXTUnWYzW01i1k+X0xDG3f7W1V12X+tXWcdevto4nuto17Hjx27bkurFq28+D5uiY2jq361dbx1Nd7XqSa9uaqzV1TG0dvxCubu9qa++6JvWrreNydcfUtmPce63TkVidS3LtZ8H2ew+PKerWdedT2+0rke3WShSj9TRW7USxafhEePU///Fjvmow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
! Sample [[Example Plant UML]]
[[PlantUML plugin | http://tobibeer.github.io/tw5-plugins/#plantuml]]
1. combination of the probability of an event and its consequence
Remark: ISO 31000 defines risk as uncertainty in achieving objectives.
! Risk is the effect of uncertainty on objectives
This definition is very different from definitions used in the area of safety, security or IT management.
!! NOTE 1
An effect is a deviation from the expected - positive and/or negative.
!! NOTE 2
Objectives can have different aspects (such as financial, health and safety, and environmental goals) and can apply at different levels (such as strategic, organization-wide, project, product and process).
!! NOTE 3
Risk is often characterized by reference to potential events (2.19) and consequences (2.20), or a combination of these.
!! NOTE 4
Risk is often expressed in terms of a combination of the consequences of an event (including changes in circumstances) and the associated likelihood of occurrence.
!! NOTE 5
Uncertainty is the state, even partial, of deficiency of information related to, understanding or knowledge of an event, its consequence, or likelihood. [ISO Guide 73:2009, definition 1.1]
[[Risk Management Processes an Activities]]
Risk Glossary SRMS |https://docs.google.com/document/d/1kkWi78DlO6S7WePEVWQXt_uhA3Vj_2RpKtLFiksX9ko/edit?usp=sharing
[[Risk Management Processes an Activities]]
<$tmap view="27001 RM Approach" ></$tmap>
[[Risk Management Approach ISO/IEC 27001]]
[[Development process]]
http://tobibeer.github.io/tw/enable-js/#script
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U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK8Q/bH/4KGfDL9hnT7M/G7VbptU1OJ5rLSNNg+039yi5BcISqxqSCoaRkUkEAna2NsPhquLqKlRi5SeyWrMMTiaODputXmoxW7bsj2+ivCP2Lv+CjPw2/buh1RPgvdalbalo0aS3WmarDHb3iRsSPMVFkcOgYBSykgFlBOSK93p4nDVcHUdKvFxkt0ww2Ko4ymq1CalF7NaoKKKKwNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvyZ/wCC6/8AwT4+JvxH+PVp8TvhDouq+NtH1Syt9LmsNIs5bu/0uWINjMEYZmhcEt5ijCsWDBcqzfaH/BWL9sXUv2Kf2Q7/AMR+BYlbxHrt7HoGkzuu5LKeaOWQzsM8lIoJSvUb9mQVyK/BzxN+0f8AELxlrtzqfizxz4w1HULpt01xcavcSSOQMDLFs4AUADsFAGAOP0PgfJ8ZKf8AaFGajFXjqr821+qt633PzTj/ADzAwp/2ZiISlJ2l7rS5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aSHXLZRcNIcIi5fJZicBeueMZr43/aQ/4N5fh38XPGepa58IvFWr+A5tUla4ey+xpqNjDKz7mMUZeN0UgsAm/CnGMABa5L4Sf8G4tn8OfiXofiDWvi7c6nFol9DfpbQeGVtWleKRZFBkN3JgErg/Ln6cV0Z9meTcRQp1Z4iUJRT93lbve2mit03uc3DeU55wvUqUIYaNSE2ve50rWur2er06W+Z+Xv7SfwG1n9mT45eJvA3jyCSK/wDD19JbB2Qqt1DkmKdMgZSSPY6njhh06L96/sr/APBOb9jn9pr4a6Vqdj8XvF+l69LYxz6no974g0yzubCbAEqiOayDMiyZAdcggrzyK/Rf9sH/AIJ+/DH9uHRoYfjjosjapZQmGx1qwl+zajYqTnakmCrrksQkqugLEhQTmviTxV/wbN6Peasz+CPi/qWnWJB2w33hyO8mByesiXMQPBUfcHIJ7gL0ri7DZphoRrYiVCqt2ldP7k/0t5nG+CsVlGKqTo4WGJoy2Upcso/NtLy638jlPjf/AME3/wBiH9n3Rp7r4gfG/wAYyTxRl1sNM13TdQvpePlVYILFmXd0DNtXuWAUkd18T/Hn7KkP7K/wY+FHx/sfGln4F1/w9NrPhfxRqEcTaroRklkyJmtEbY7E4wsckR2pvXC7lf4B/wCDaXwhp10h+KPxR8SaxCHYumlaVBprFNuFAaV7gAhuScHI4AB+aveP2kf+CMvww/aI+Gng7w9LqfijQm8BaWNI0W6trmOUpAGLbZkkjIk5bOQUPAwR0Pn183wEp0Y1MbVqWbbkly8ujScVa97vz0PWwuTZhClXlSwFKm5RSUW+bm95NqTva1lpa2v4fG2v/wDBFn4G+J/DM2t/CL9qDwzb6UI2njm1F7G6iRFUkiWWO5i2YONxKjbg5XI4+BrHxNrX7N/xqubz4SeKFXVPC2pyxWWt6PMfIuvJlZVmhYqN8L7AwDDDKcEYyB+lup/8GytrLfyto3xnnt7Un93HN4UWWRB6M63qg/UKK92/ZK/4IT/CX9m7xXB4h8dT3/xF1yykEtn/AGrEkVhaOAMOLVMiR87iPMZ1GVwoZQ1exR4rwOCpT9ri5Yi60i4W+92Sfnf7jwa/B2PzCtT9hg44Zp6zVTmv5pJtq3TbzZ9W/ALxRrPjj4E+Cta+ItqLHxBrGg2N7qdsEKfZ7qW3jeZNp+7tdmGO2K62iivyWpJTk5JWv07H7NCLhFRbvbr3CiiioKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z
{
"2020 01 31 11:14:20": "hide",
"2020 01 31 11:15:52": "hide",
"Customize TiddlyBlink": "show",
"How TiddlyBlink works": "hide",
"How to add TiddlyBlink to your TiddlyWiki": "hide",
"My notetaking process in TiddlyBlink": "hide",
"This is crazy!": "hide",
"4. Topics, sources and hiding?": "hide",
"Test thing": "show"
}
[[Bookmarks]]
https://www.networkworld.com/article/2263176/applications-tiddlywiki-macros-and-plugins.html
https://dynalist.io/d/Q1pCUeCLmPuoH4nbekbTFaED?success=copy
# In ToDo Tiddler#
## In "Type the text for this tiddler"##
<$list filter="[!has[draft.of]tag[task]!tag[done]sort[created]]">
<$checkbox tag="done">
<$link to={{!!title}}>
<$view field="title"/>
</$link>
</$checkbox>
</$list>
# In "Completed" Tiddler#
## In "Type the text for this tiddler"##
<$list filter="[!has[draft.of]tag[task]tag[done]sort[created]]">
<$checkbox tag="done"> ~~<$link to={{!!title}}><$view field="created" format="date" template="DDth mmm hh:mm"/> - <$view field="title"/></$link>~~</$checkbox>
</$list>
! Locator - included in this wiki
https://bimlas.gitlab.io/tw5-locator/
! Category List
https://ooktech.com/jed/ExampleWikis/CategoryList/
! list-search
https://tobibeer.github.io/tb5/#list-search
! GenTags Plugin
https://ooktech.com/jed/ExampleWikis/GenericTagFields/
! TiddlyMap - included in this wiki
http://tiddlymap.org/
! PlantUML - included in this wiki
http://tobibeer.github.io/tw5-plugins/#plantuml
! TiddlyLock
http://www.minormania.com/tiddlylock/tiddlylock.html
! Innerwiki Demo
https://tiddlywiki.com/prerelease/plugins/tiddlywiki/innerwiki/
! GraphViz
https://github.com/chanilino/tw5viz
! AsciiDoc
https://bimlas.gitlab.io/tw5-asciidoctor/
[[https://www.reddit.com/r/TiddlyWiki5/wiki/pluginsandresources]]
{"dih":728520626,"data":"{\"image_urls\":{\"1NePDbD-NdskJExQk51dz_c5Qj97aKMfOkylkzg8\":\"filesystem:https://docs.google.com/persistent/docs/documents/1OcW3S53uGJY9HVrbF35ggcvp_ivu0QF5s-2KCPyWmvM/image/1NePDbD-NdskJExQk51dz_c5Qj97aKMfOkylkzg8\"},\"placeholder_ids\":{},\"cosmo_ids\":{\"1NePDbD-NdskJExQk51dz_c5Qj97aKMfOkylkzg8\":1}}","edi":"p_33_27dki2VLcSNSgdojmEB2f14HjX1hZT6o490Y_o-ZZ0-dbY1k-6t4DALy8i9uRwn5yBTOK1Zz36N6ItLKsGF5ndqouKAM-GohnsWScCS","dct":"kix","ds":false}
Visual Understanding Environment